@carlonicora/nestjs-neo4jsonapi 1.104.0 → 1.106.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/graph.creator/services/graph.creator.service.d.ts +1 -1
- package/dist/agents/graph.creator/services/graph.creator.service.d.ts.map +1 -1
- package/dist/agents/graph.creator/services/graph.creator.service.js +14 -0
- package/dist/agents/graph.creator/services/graph.creator.service.js.map +1 -1
- package/dist/bootstrap/app.module.factory.d.ts.map +1 -1
- package/dist/bootstrap/app.module.factory.js +1 -0
- package/dist/bootstrap/app.module.factory.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +3 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/common/interfaces/agents/graph.creator.interface.d.ts +4 -0
- package/dist/common/interfaces/agents/graph.creator.interface.d.ts.map +1 -1
- package/dist/common/repositories/ai-source-query.provider.d.ts +19 -0
- package/dist/common/repositories/ai-source-query.provider.d.ts.map +1 -0
- package/dist/common/repositories/ai-source-query.provider.js +5 -0
- package/dist/common/repositories/ai-source-query.provider.js.map +1 -0
- package/dist/common/repositories/default.ai-source-query.provider.d.ts +19 -0
- package/dist/common/repositories/default.ai-source-query.provider.d.ts.map +1 -0
- package/dist/common/repositories/default.ai-source-query.provider.js +36 -0
- package/dist/common/repositories/default.ai-source-query.provider.js.map +1 -0
- package/dist/common/repositories/index.d.ts +2 -0
- package/dist/common/repositories/index.d.ts.map +1 -1
- package/dist/common/repositories/index.js +2 -0
- package/dist/common/repositories/index.js.map +1 -1
- package/dist/common/types/data.limits.d.ts +2 -2
- package/dist/common/types/data.limits.d.ts.map +1 -1
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +5 -0
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/interfaces/base.config.interface.d.ts +4 -0
- package/dist/config/interfaces/base.config.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.chunker.interface.d.ts +10 -0
- package/dist/config/interfaces/config.chunker.interface.d.ts.map +1 -0
- package/dist/config/interfaces/config.chunker.interface.js +3 -0
- package/dist/config/interfaces/config.chunker.interface.js.map +1 -0
- package/dist/config/interfaces/config.embedding.context.interface.d.ts +18 -0
- package/dist/config/interfaces/config.embedding.context.interface.d.ts.map +1 -0
- package/dist/config/interfaces/config.embedding.context.interface.js +3 -0
- package/dist/config/interfaces/config.embedding.context.interface.js.map +1 -0
- package/dist/config/interfaces/index.d.ts +2 -0
- package/dist/config/interfaces/index.d.ts.map +1 -1
- package/dist/config/interfaces/index.js +2 -0
- package/dist/config/interfaces/index.js.map +1 -1
- package/dist/core/core.module.d.ts +4 -0
- package/dist/core/core.module.d.ts.map +1 -1
- package/dist/core/core.module.js +7 -2
- package/dist/core/core.module.js.map +1 -1
- package/dist/core/llm/services/model.service.d.ts.map +1 -1
- package/dist/core/llm/services/model.service.js +18 -34
- package/dist/core/llm/services/model.service.js.map +1 -1
- package/dist/foundations/atomicfact/repositories/atomicfact.repository.d.ts +3 -8
- package/dist/foundations/atomicfact/repositories/atomicfact.repository.d.ts.map +1 -1
- package/dist/foundations/atomicfact/repositories/atomicfact.repository.js +19 -46
- package/dist/foundations/atomicfact/repositories/atomicfact.repository.js.map +1 -1
- package/dist/foundations/chunk/chunk.module.d.ts +6 -3
- package/dist/foundations/chunk/chunk.module.d.ts.map +1 -1
- package/dist/foundations/chunk/chunk.module.js +25 -5
- package/dist/foundations/chunk/chunk.module.js.map +1 -1
- package/dist/foundations/chunk/controllers/chunk.controller.d.ts +19 -1
- package/dist/foundations/chunk/controllers/chunk.controller.d.ts.map +1 -1
- package/dist/foundations/chunk/controllers/chunk.controller.js +59 -2
- package/dist/foundations/chunk/controllers/chunk.controller.js.map +1 -1
- package/dist/foundations/chunk/entities/chunk.entity.d.ts +8 -0
- package/dist/foundations/chunk/entities/chunk.entity.d.ts.map +1 -1
- package/dist/foundations/chunk/entities/chunk.entity.js +20 -0
- package/dist/foundations/chunk/entities/chunk.entity.js.map +1 -1
- package/dist/foundations/chunk/processors/chunk.embedding.processor.d.ts +21 -0
- package/dist/foundations/chunk/processors/chunk.embedding.processor.d.ts.map +1 -0
- package/dist/foundations/chunk/processors/chunk.embedding.processor.js +98 -0
- package/dist/foundations/chunk/processors/chunk.embedding.processor.js.map +1 -0
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts +36 -8
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts.map +1 -1
- package/dist/foundations/chunk/repositories/chunk.repository.js +184 -50
- package/dist/foundations/chunk/repositories/chunk.repository.js.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.d.ts +9 -0
- package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.js +87 -0
- package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
- package/dist/foundations/chunk/services/embedding-context.d.ts +19 -0
- package/dist/foundations/chunk/services/embedding-context.d.ts.map +1 -0
- package/dist/foundations/chunk/services/embedding-context.js +27 -0
- package/dist/foundations/chunk/services/embedding-context.js.map +1 -0
- package/dist/foundations/chunk/services/reciprocal-rank-fusion.d.ts +2 -0
- package/dist/foundations/chunk/services/reciprocal-rank-fusion.d.ts.map +1 -0
- package/dist/foundations/chunk/services/reciprocal-rank-fusion.js +13 -0
- package/dist/foundations/chunk/services/reciprocal-rank-fusion.js.map +1 -0
- package/dist/foundations/chunker/chunker.module.d.ts.map +1 -1
- package/dist/foundations/chunker/chunker.module.js +2 -0
- package/dist/foundations/chunker/chunker.module.js.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.d.ts +20 -12
- package/dist/foundations/chunker/services/chunker.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.js +160 -157
- package/dist/foundations/chunker/services/chunker.service.js.map +1 -1
- package/dist/foundations/chunker/services/types/markdownchunking.service.d.ts +17 -0
- package/dist/foundations/chunker/services/types/markdownchunking.service.d.ts.map +1 -0
- package/dist/foundations/chunker/services/types/markdownchunking.service.js +124 -0
- package/dist/foundations/chunker/services/types/markdownchunking.service.js.map +1 -0
- package/dist/foundations/chunker/services/types/pdf.service.d.ts +4 -0
- package/dist/foundations/chunker/services/types/pdf.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/types/pdf.service.js +14 -4
- package/dist/foundations/chunker/services/types/pdf.service.js.map +1 -1
- package/dist/foundations/keyconcept/controllers/keyconcept.controller.d.ts +15 -0
- package/dist/foundations/keyconcept/controllers/keyconcept.controller.d.ts.map +1 -0
- package/dist/foundations/keyconcept/controllers/keyconcept.controller.js +56 -0
- package/dist/foundations/keyconcept/controllers/keyconcept.controller.js.map +1 -0
- package/dist/foundations/keyconcept/index.d.ts +2 -0
- package/dist/foundations/keyconcept/index.d.ts.map +1 -1
- package/dist/foundations/keyconcept/index.js +5 -1
- package/dist/foundations/keyconcept/index.js.map +1 -1
- package/dist/foundations/keyconcept/keyconcept.module.d.ts.map +1 -1
- package/dist/foundations/keyconcept/keyconcept.module.js +7 -2
- package/dist/foundations/keyconcept/keyconcept.module.js.map +1 -1
- package/dist/foundations/keyconcept/processors/keyconcept.embedding.processor.d.ts +22 -0
- package/dist/foundations/keyconcept/processors/keyconcept.embedding.processor.d.ts.map +1 -0
- package/dist/foundations/keyconcept/processors/keyconcept.embedding.processor.js +98 -0
- package/dist/foundations/keyconcept/processors/keyconcept.embedding.processor.js.map +1 -0
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts +9 -15
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts.map +1 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js +65 -99
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js.map +1 -1
- package/dist/foundations/s3/index.d.ts +8 -2
- package/dist/foundations/s3/index.d.ts.map +1 -1
- package/dist/foundations/s3/index.js +22 -5
- package/dist/foundations/s3/index.js.map +1 -1
- package/dist/foundations/s3/services/s3.service.d.ts +11 -1
- package/dist/foundations/s3/services/s3.service.d.ts.map +1 -1
- package/dist/foundations/s3/services/s3.service.js +70 -21
- package/dist/foundations/s3/services/s3.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WorkerHost } from "@nestjs/bullmq";
|
|
2
|
+
import { ConfigService } from "@nestjs/config";
|
|
3
|
+
import { Job } from "bullmq";
|
|
4
|
+
import { ClsService } from "nestjs-cls";
|
|
5
|
+
import { BaseConfigInterface } from "../../../config/interfaces/base.config.interface";
|
|
6
|
+
import { EmbedderService } from "../../../core";
|
|
7
|
+
import { KeyConceptRepository } from "../repositories/keyconcept.repository";
|
|
8
|
+
export declare const KEYCONCEPT_EMBEDDING_QUEUE = "embedding-keyconcepts";
|
|
9
|
+
export declare class KeyConceptEmbeddingProcessor extends WorkerHost {
|
|
10
|
+
private readonly clsService;
|
|
11
|
+
private readonly keyConceptRepository;
|
|
12
|
+
private readonly embedderService;
|
|
13
|
+
private readonly rebuildKeyConceptsJobName;
|
|
14
|
+
constructor(clsService: ClsService, keyConceptRepository: KeyConceptRepository, embedderService: EmbedderService, configService: ConfigService<BaseConfigInterface>);
|
|
15
|
+
onActive(job: Job): void;
|
|
16
|
+
onError(job: Job): void;
|
|
17
|
+
onCompleted(job: Job): void;
|
|
18
|
+
process(job: Job): Promise<{
|
|
19
|
+
processed: number;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=keyconcept.embedding.processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyconcept.embedding.processor.d.ts","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/processors/keyconcept.embedding.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,qBACa,4BAA6B,SAAQ,UAAU;IAIxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;gBAGhC,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EACjD,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAQnD,QAAQ,CAAC,GAAG,EAAE,GAAG;IAKjB,OAAO,CAAC,GAAG,EAAE,GAAG;IAKhB,WAAW,CAAC,GAAG,EAAE,GAAG;IAId,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CA0CxD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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.KeyConceptEmbeddingProcessor = exports.KEYCONCEPT_EMBEDDING_QUEUE = void 0;
|
|
13
|
+
const bullmq_1 = require("@nestjs/bullmq");
|
|
14
|
+
const config_1 = require("@nestjs/config");
|
|
15
|
+
const bullmq_2 = require("bullmq");
|
|
16
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
17
|
+
const core_1 = require("../../../core");
|
|
18
|
+
const keyconcept_repository_1 = require("../repositories/keyconcept.repository");
|
|
19
|
+
exports.KEYCONCEPT_EMBEDDING_QUEUE = "embedding-keyconcepts";
|
|
20
|
+
let KeyConceptEmbeddingProcessor = class KeyConceptEmbeddingProcessor extends bullmq_1.WorkerHost {
|
|
21
|
+
constructor(clsService, keyConceptRepository, embedderService, configService) {
|
|
22
|
+
super();
|
|
23
|
+
this.clsService = clsService;
|
|
24
|
+
this.keyConceptRepository = keyConceptRepository;
|
|
25
|
+
this.embedderService = embedderService;
|
|
26
|
+
this.rebuildKeyConceptsJobName =
|
|
27
|
+
configService.get("jobNames", { infer: true })?.process?.rebuild_keyconcepts ?? "embedding:rebuild_keyconcepts";
|
|
28
|
+
}
|
|
29
|
+
onActive(job) {
|
|
30
|
+
console.log(`Processing ${job.name} job`);
|
|
31
|
+
}
|
|
32
|
+
onError(job) {
|
|
33
|
+
console.error(`Error processing ${job.name} job (ID: ${job.id}). Reason: ${job.failedReason}`);
|
|
34
|
+
}
|
|
35
|
+
onCompleted(job) {
|
|
36
|
+
console.log(`Completed ${job.name} job (ID: ${job.id})`);
|
|
37
|
+
}
|
|
38
|
+
async process(job) {
|
|
39
|
+
if (job.name !== this.rebuildKeyConceptsJobName) {
|
|
40
|
+
throw new Error(`Job ${job.name} not handled by KeyConceptEmbeddingProcessor`);
|
|
41
|
+
}
|
|
42
|
+
return await this.clsService.run(async () => {
|
|
43
|
+
this.clsService.set("companyId", job.data.companyId);
|
|
44
|
+
this.clsService.set("userId", job.data.userId);
|
|
45
|
+
this.clsService.set("isAutomatedJob", true);
|
|
46
|
+
// 1. Recreate vector index with new dimensions
|
|
47
|
+
await this.keyConceptRepository.recreateVectorIndex();
|
|
48
|
+
// 2. Get all keyconcepts
|
|
49
|
+
const allKeyConcepts = await this.keyConceptRepository.findAllKeyConcepts();
|
|
50
|
+
const keyConceptsWithValues = allKeyConcepts.filter((k) => k.value);
|
|
51
|
+
// 3. Process in batches
|
|
52
|
+
const batchSize = 100;
|
|
53
|
+
let processed = 0;
|
|
54
|
+
for (let i = 0; i < keyConceptsWithValues.length; i += batchSize) {
|
|
55
|
+
const batch = keyConceptsWithValues.slice(i, i + batchSize);
|
|
56
|
+
const texts = batch.map((k) => k.value);
|
|
57
|
+
const embeddings = await this.embedderService.vectoriseTextBatch(texts);
|
|
58
|
+
for (let j = 0; j < batch.length; j++) {
|
|
59
|
+
await this.keyConceptRepository.updateEmbedding({
|
|
60
|
+
keyConceptId: batch[j].id,
|
|
61
|
+
embedding: embeddings[j],
|
|
62
|
+
});
|
|
63
|
+
processed++;
|
|
64
|
+
}
|
|
65
|
+
const progress = Math.round((processed / keyConceptsWithValues.length) * 100);
|
|
66
|
+
await job.updateProgress(progress);
|
|
67
|
+
}
|
|
68
|
+
return { processed };
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
exports.KeyConceptEmbeddingProcessor = KeyConceptEmbeddingProcessor;
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, bullmq_1.OnWorkerEvent)("active"),
|
|
75
|
+
__metadata("design:type", Function),
|
|
76
|
+
__metadata("design:paramtypes", [bullmq_2.Job]),
|
|
77
|
+
__metadata("design:returntype", void 0)
|
|
78
|
+
], KeyConceptEmbeddingProcessor.prototype, "onActive", null);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, bullmq_1.OnWorkerEvent)("failed"),
|
|
81
|
+
__metadata("design:type", Function),
|
|
82
|
+
__metadata("design:paramtypes", [bullmq_2.Job]),
|
|
83
|
+
__metadata("design:returntype", void 0)
|
|
84
|
+
], KeyConceptEmbeddingProcessor.prototype, "onError", null);
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, bullmq_1.OnWorkerEvent)("completed"),
|
|
87
|
+
__metadata("design:type", Function),
|
|
88
|
+
__metadata("design:paramtypes", [bullmq_2.Job]),
|
|
89
|
+
__metadata("design:returntype", void 0)
|
|
90
|
+
], KeyConceptEmbeddingProcessor.prototype, "onCompleted", null);
|
|
91
|
+
exports.KeyConceptEmbeddingProcessor = KeyConceptEmbeddingProcessor = __decorate([
|
|
92
|
+
(0, bullmq_1.Processor)(exports.KEYCONCEPT_EMBEDDING_QUEUE, { concurrency: 1, lockDuration: 1000 * 60 * 30 }),
|
|
93
|
+
__metadata("design:paramtypes", [nestjs_cls_1.ClsService,
|
|
94
|
+
keyconcept_repository_1.KeyConceptRepository,
|
|
95
|
+
core_1.EmbedderService,
|
|
96
|
+
config_1.ConfigService])
|
|
97
|
+
], KeyConceptEmbeddingProcessor);
|
|
98
|
+
//# sourceMappingURL=keyconcept.embedding.processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyconcept.embedding.processor.js","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/processors/keyconcept.embedding.processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OnModuleInit } from "@nestjs/common";
|
|
2
2
|
import { ClsService } from "nestjs-cls";
|
|
3
|
+
import { AiSourceQueryProvider } from "../../../common/repositories/ai-source-query.provider";
|
|
3
4
|
import { DataLimits } from "../../../common/types/data.limits";
|
|
4
5
|
import { EmbedderService, ModelService } from "../../../core";
|
|
5
6
|
import { Neo4jService } from "../../../core/neo4j/services/neo4j.service";
|
|
@@ -11,30 +12,23 @@ export declare class KeyConceptRepository implements OnModuleInit {
|
|
|
11
12
|
private readonly modelService;
|
|
12
13
|
private readonly securityService;
|
|
13
14
|
private readonly clsService;
|
|
14
|
-
|
|
15
|
+
private readonly aiSourceQuery;
|
|
16
|
+
constructor(neo4j: Neo4jService, embedderService: EmbedderService, modelService: ModelService, securityService: SecurityService, clsService: ClsService, aiSourceQuery: AiSourceQueryProvider);
|
|
15
17
|
onModuleInit(): Promise<void>;
|
|
18
|
+
recreateVectorIndex(): Promise<void>;
|
|
19
|
+
findAllKeyConcepts(): Promise<KeyConcept[]>;
|
|
20
|
+
updateEmbedding(params: {
|
|
21
|
+
keyConceptId: string;
|
|
22
|
+
embedding: number[];
|
|
23
|
+
}): Promise<void>;
|
|
16
24
|
findNeighboursByKeyConcepts(params: {
|
|
17
25
|
keyConcepts: string[];
|
|
18
26
|
dataLimits: DataLimits;
|
|
19
27
|
}): Promise<KeyConcept[]>;
|
|
20
|
-
/**
|
|
21
|
-
* Help-content retrieval. Intentionally bypasses company filtering — `(data:HowTo)`
|
|
22
|
-
* nodes are global and have no `BELONGS_TO Company` edge. Only callable from inside
|
|
23
|
-
* this repository; `findNeighboursByKeyConcepts` dispatches here based on
|
|
24
|
-
* `dataLimits.howToMode` / `dataLimits.limitToHowToId`.
|
|
25
|
-
*/
|
|
26
|
-
private findNeighboursByKeyConceptsFromHowTos;
|
|
27
28
|
findPotentialKeyConcepts(params: {
|
|
28
29
|
question: string;
|
|
29
30
|
dataLimits: DataLimits;
|
|
30
31
|
}): Promise<KeyConcept[]>;
|
|
31
|
-
/**
|
|
32
|
-
* Help-content retrieval. Intentionally bypasses company filtering — `(data:HowTo)`
|
|
33
|
-
* nodes are global and have no `BELONGS_TO Company` edge. Only callable from inside
|
|
34
|
-
* this repository; `findPotentialKeyConcepts` dispatches here based on
|
|
35
|
-
* `dataLimits.howToMode` / `dataLimits.limitToHowToId`.
|
|
36
|
-
*/
|
|
37
|
-
private findPotentialKeyConceptsFromHowTos;
|
|
38
32
|
deleteDisconnectedKeyConcepts(): Promise<void>;
|
|
39
33
|
findKeyConceptByValue(params: {
|
|
40
34
|
keyConceptValue: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyconcept.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/repositories/keyconcept.repository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"keyconcept.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/repositories/keyconcept.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,24 +8,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.KeyConceptRepository = void 0;
|
|
13
16
|
const common_1 = require("@nestjs/common");
|
|
14
17
|
const crypto_1 = require("crypto");
|
|
15
18
|
const nestjs_cls_1 = require("nestjs-cls");
|
|
16
|
-
const
|
|
19
|
+
const ai_source_query_provider_1 = require("../../../common/repositories/ai-source-query.provider");
|
|
17
20
|
const core_1 = require("../../../core");
|
|
18
21
|
const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
|
|
19
22
|
const security_service_1 = require("../../../core/security/services/security.service");
|
|
20
23
|
const key_concept_meta_1 = require("../../keyconcept/entities/key.concept.meta");
|
|
21
24
|
const key_concept_model_1 = require("../../keyconcept/entities/key.concept.model");
|
|
22
25
|
let KeyConceptRepository = class KeyConceptRepository {
|
|
23
|
-
constructor(neo4j, embedderService, modelService, securityService, clsService) {
|
|
26
|
+
constructor(neo4j, embedderService, modelService, securityService, clsService, aiSourceQuery) {
|
|
24
27
|
this.neo4j = neo4j;
|
|
25
28
|
this.embedderService = embedderService;
|
|
26
29
|
this.modelService = modelService;
|
|
27
30
|
this.securityService = securityService;
|
|
28
31
|
this.clsService = clsService;
|
|
32
|
+
this.aiSourceQuery = aiSourceQuery;
|
|
29
33
|
}
|
|
30
34
|
async onModuleInit() {
|
|
31
35
|
await this.neo4j.writeOne({
|
|
@@ -47,132 +51,93 @@ let KeyConceptRepository = class KeyConceptRepository {
|
|
|
47
51
|
`,
|
|
48
52
|
});
|
|
49
53
|
}
|
|
50
|
-
async
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
dataLimits: params.dataLimits,
|
|
73
|
-
returnsKeyConcepts: true,
|
|
74
|
-
})}
|
|
75
|
-
WITH COLLECT(DISTINCT keyconcept.id) AS topicKeyConceptIds
|
|
76
|
-
|
|
77
|
-
CALL db.index.vector.queryNodes('keyconcepts', 1000, $queryEmbedding)
|
|
78
|
-
YIELD node AS candidateKeyConcept, score
|
|
79
|
-
WHERE candidateKeyConcept.id IN topicKeyConceptIds
|
|
80
|
-
|
|
81
|
-
RETURN candidateKeyConcept, score
|
|
82
|
-
ORDER BY score DESC
|
|
83
|
-
LIMIT 100
|
|
54
|
+
async recreateVectorIndex() {
|
|
55
|
+
await this.neo4j.writeOne({
|
|
56
|
+
query: `DROP INDEX keyconcepts IF EXISTS`,
|
|
57
|
+
});
|
|
58
|
+
const dimensions = this.modelService.getEmbedderDimensions();
|
|
59
|
+
await this.neo4j.writeOne({
|
|
60
|
+
query: `
|
|
61
|
+
CREATE VECTOR INDEX keyconcepts IF NOT EXISTS
|
|
62
|
+
FOR (keyconcept:KeyConcept)
|
|
63
|
+
ON keyconcept.embedding
|
|
64
|
+
OPTIONS { indexConfig: {
|
|
65
|
+
\`vector.dimensions\`: ${dimensions},
|
|
66
|
+
\`vector.similarity_function\`: 'cosine'
|
|
67
|
+
}};
|
|
68
|
+
`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async findAllKeyConcepts() {
|
|
72
|
+
const query = this.neo4j.initQuery({ serialiser: key_concept_model_1.KeyConceptModel, fetchAll: true });
|
|
73
|
+
query.query = `
|
|
74
|
+
MATCH (${key_concept_meta_1.keyConceptMeta.nodeName}:${key_concept_meta_1.keyConceptMeta.labelName})
|
|
75
|
+
RETURN ${key_concept_meta_1.keyConceptMeta.nodeName}
|
|
84
76
|
`;
|
|
85
77
|
return this.neo4j.readMany(query);
|
|
86
78
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
async updateEmbedding(params) {
|
|
80
|
+
await this.neo4j.writeOne({
|
|
81
|
+
query: `
|
|
82
|
+
MATCH (keyconcept:KeyConcept {id: $keyConceptId})
|
|
83
|
+
SET keyconcept.embedding = $embedding
|
|
84
|
+
`,
|
|
85
|
+
queryParams: {
|
|
86
|
+
keyConceptId: params.keyConceptId,
|
|
87
|
+
embedding: params.embedding,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async findNeighboursByKeyConcepts(params) {
|
|
94
92
|
const query = this.neo4j.initQuery({ serialiser: key_concept_model_1.KeyConceptModel });
|
|
93
|
+
// SECURITY: HowTo retrieval (global content) intentionally bypasses company
|
|
94
|
+
// filtering. The package surfaces that bypass through `howToMode`/`limitToHowToId`
|
|
95
|
+
// (the app's `howToId` maps to these via declaration-merge semantics).
|
|
96
|
+
const isCompanyIndependent = !!params.dataLimits.howToMode || !!params.dataLimits.limitToHowToId;
|
|
95
97
|
query.queryParams = {
|
|
96
98
|
...query.queryParams,
|
|
97
99
|
keyConcepts: params.keyConcepts,
|
|
98
|
-
|
|
100
|
+
isCompanyIndependent,
|
|
99
101
|
};
|
|
100
|
-
const limitClause = params.dataLimits.limitToHowToId ? `WHERE data.id = $limitToHowToId` : "";
|
|
101
102
|
query.query += `
|
|
102
|
-
MATCH (data:HowTo)
|
|
103
|
-
${limitClause}
|
|
104
|
-
WITH data
|
|
105
103
|
MATCH (startingKeyConcept:KeyConcept)<-[:RELATES_TO]-(keyConceptRelationship:KeyConceptRelationship)-[:RELATES_TO]->(keyconcept:KeyConcept)
|
|
106
104
|
WHERE startingKeyConcept.value IN $keyConcepts
|
|
107
105
|
AND NOT keyconcept.value IN $keyConcepts
|
|
108
106
|
AND NOT EXISTS {
|
|
109
107
|
MATCH (startingKeyConcept)<-[:HAS_KEY_CONCEPT]-()<-[:HAS_ATOMIC_FACT]-()-[:HAS_ATOMIC_FACT]->()-[:HAS_KEY_CONCEPT]->(keyconcept)
|
|
110
108
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
// Company scoping: the neighbour is reachable only if the relationship that
|
|
110
|
+
// bridges to it belongs to the caller's company or is global (no company).
|
|
111
|
+
// The previous gate accepted a relationship owned by ANY company and relied on
|
|
112
|
+
// an unlinked aiSourceQuery data match, which leaked cross-company concepts.
|
|
113
|
+
AND (
|
|
114
|
+
$isCompanyIndependent = true
|
|
115
|
+
OR (keyConceptRelationship)-[:BELONGS_TO]->(:Company {id: $companyId})
|
|
116
|
+
OR NOT EXISTS { (keyConceptRelationship)-[:BELONGS_TO]->(:Company) }
|
|
117
|
+
)
|
|
118
|
+
WITH COLLECT(DISTINCT keyconcept) AS neighbors
|
|
119
|
+
UNWIND neighbors AS candidateKeyConcept
|
|
120
|
+
RETURN candidateKeyConcept
|
|
120
121
|
LIMIT 100
|
|
121
122
|
`;
|
|
122
123
|
return this.neo4j.readMany(query);
|
|
123
124
|
}
|
|
124
125
|
async findPotentialKeyConcepts(params) {
|
|
125
|
-
// SECURITY: HowTo retrieval intentionally bypasses company filtering.
|
|
126
|
-
// Dispatch to the private method so the bypass is visible and quarantined here.
|
|
127
|
-
if (params.dataLimits.howToMode || params.dataLimits.limitToHowToId) {
|
|
128
|
-
return this.findPotentialKeyConceptsFromHowTos(params);
|
|
129
|
-
}
|
|
130
126
|
const query = this.neo4j.initQuery({ serialiser: key_concept_model_1.KeyConceptModel });
|
|
131
127
|
const queryEmbedding = await this.embedderService.vectoriseText({ text: params.question });
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
queryEmbedding,
|
|
135
|
-
};
|
|
136
|
-
query.query += `
|
|
137
|
-
MATCH (data)-[:BELONGS_TO]->(company)
|
|
138
|
-
${(0, ai_source_query_1.aiSourceQuery)({
|
|
128
|
+
const scope = this.aiSourceQuery.build({
|
|
129
|
+
dataLimits: params.dataLimits,
|
|
139
130
|
currentUserId: this.clsService.get("userId"),
|
|
140
131
|
securityService: this.securityService,
|
|
141
|
-
dataLimits: params.dataLimits,
|
|
142
132
|
returnsData: true,
|
|
143
|
-
})
|
|
144
|
-
MATCH (data)-[:HAS_CHUNK]->()-[:HAS_ATOMIC_FACT]->()-[:HAS_KEY_CONCEPT]->(keyconcept:KeyConcept)
|
|
145
|
-
WITH COLLECT(DISTINCT keyconcept.id) AS topicKeyConceptIds
|
|
146
|
-
|
|
147
|
-
CALL db.index.vector.queryNodes('keyconcepts', 1000, $queryEmbedding)
|
|
148
|
-
YIELD node AS candidateKeyConcept, score
|
|
149
|
-
WHERE candidateKeyConcept.id IN topicKeyConceptIds
|
|
150
|
-
|
|
151
|
-
RETURN candidateKeyConcept as ${key_concept_meta_1.keyConceptMeta.nodeName}, score
|
|
152
|
-
ORDER BY score DESC
|
|
153
|
-
LIMIT 100
|
|
154
|
-
`;
|
|
155
|
-
return this.neo4j.readMany(query);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Help-content retrieval. Intentionally bypasses company filtering — `(data:HowTo)`
|
|
159
|
-
* nodes are global and have no `BELONGS_TO Company` edge. Only callable from inside
|
|
160
|
-
* this repository; `findPotentialKeyConcepts` dispatches here based on
|
|
161
|
-
* `dataLimits.howToMode` / `dataLimits.limitToHowToId`.
|
|
162
|
-
*/
|
|
163
|
-
async findPotentialKeyConceptsFromHowTos(params) {
|
|
164
|
-
const query = this.neo4j.initQuery({ serialiser: key_concept_model_1.KeyConceptModel });
|
|
165
|
-
const queryEmbedding = await this.embedderService.vectoriseText({ text: params.question });
|
|
133
|
+
});
|
|
166
134
|
query.queryParams = {
|
|
167
135
|
...query.queryParams,
|
|
168
136
|
queryEmbedding,
|
|
169
|
-
...
|
|
137
|
+
...scope.params,
|
|
170
138
|
};
|
|
171
|
-
const limitClause = params.dataLimits.limitToHowToId ? `WHERE data.id = $limitToHowToId` : "";
|
|
172
139
|
query.query += `
|
|
173
|
-
|
|
174
|
-
${limitClause}
|
|
175
|
-
WITH data
|
|
140
|
+
${scope.cypher}
|
|
176
141
|
MATCH (data)-[:HAS_CHUNK]->()-[:HAS_ATOMIC_FACT]->()-[:HAS_KEY_CONCEPT]->(keyconcept:KeyConcept)
|
|
177
142
|
WITH COLLECT(DISTINCT keyconcept.id) AS topicKeyConceptIds
|
|
178
143
|
|
|
@@ -399,10 +364,11 @@ let KeyConceptRepository = class KeyConceptRepository {
|
|
|
399
364
|
exports.KeyConceptRepository = KeyConceptRepository;
|
|
400
365
|
exports.KeyConceptRepository = KeyConceptRepository = __decorate([
|
|
401
366
|
(0, common_1.Injectable)(),
|
|
367
|
+
__param(5, (0, common_1.Inject)(ai_source_query_provider_1.AI_SOURCE_QUERY)),
|
|
402
368
|
__metadata("design:paramtypes", [neo4j_service_1.Neo4jService,
|
|
403
369
|
core_1.EmbedderService,
|
|
404
370
|
core_1.ModelService,
|
|
405
371
|
security_service_1.SecurityService,
|
|
406
|
-
nestjs_cls_1.ClsService])
|
|
372
|
+
nestjs_cls_1.ClsService, Object])
|
|
407
373
|
], KeyConceptRepository);
|
|
408
374
|
//# sourceMappingURL=keyconcept.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyconcept.repository.js","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/repositories/keyconcept.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keyconcept.repository.js","sourceRoot":"","sources":["../../../../src/foundations/keyconcept/repositories/keyconcept.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from "./s3.module";
|
|
2
|
+
export * from "./services/s3.service";
|
|
3
|
+
export * from "./serialisers/s3.serialiser";
|
|
4
|
+
export * from "./controllers/s3.controller";
|
|
5
|
+
export * from "./entities/s3.entity";
|
|
6
|
+
export * from "./entities/s3.meta";
|
|
7
|
+
export * from "./entities/s3.model";
|
|
8
|
+
export * from "./entities/s3.map";
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/s3/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/s3/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
17
|
+
__exportStar(require("./s3.module"), exports);
|
|
18
|
+
__exportStar(require("./services/s3.service"), exports);
|
|
19
|
+
__exportStar(require("./serialisers/s3.serialiser"), exports);
|
|
20
|
+
__exportStar(require("./controllers/s3.controller"), exports);
|
|
21
|
+
__exportStar(require("./entities/s3.entity"), exports);
|
|
22
|
+
__exportStar(require("./entities/s3.meta"), exports);
|
|
23
|
+
__exportStar(require("./entities/s3.model"), exports);
|
|
24
|
+
__exportStar(require("./entities/s3.map"), exports);
|
|
8
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/s3/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/s3/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,wDAAsC;AACtC,8DAA4C;AAC5C,8DAA4C;AAC5C,uDAAqC;AACrC,qDAAmC;AACnC,sDAAoC;AACpC,oDAAkC"}
|
|
@@ -4,17 +4,19 @@ import { ClsService } from "nestjs-cls";
|
|
|
4
4
|
import { BaseConfigInterface } from "../../../config/interfaces";
|
|
5
5
|
import { JsonApiDataInterface } from "../../../core/jsonapi/interfaces/jsonapi.data.interface";
|
|
6
6
|
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
7
|
+
import { AppLoggingService } from "../../../core/logging/services/logging.service";
|
|
7
8
|
export declare class S3Service {
|
|
8
9
|
private readonly builder;
|
|
9
10
|
private readonly clsService;
|
|
10
11
|
private readonly configService;
|
|
12
|
+
private readonly logger;
|
|
11
13
|
private s3Client;
|
|
12
14
|
private blobServiceClient;
|
|
13
15
|
private containerClient;
|
|
14
16
|
private _bucket;
|
|
15
17
|
private _endpoint;
|
|
16
18
|
private _storageType;
|
|
17
|
-
constructor(builder: JsonApiService, clsService: ClsService, configService: ConfigService<BaseConfigInterface
|
|
19
|
+
constructor(builder: JsonApiService, clsService: ClsService, configService: ConfigService<BaseConfigInterface>, logger: AppLoggingService);
|
|
18
20
|
private get s3Config();
|
|
19
21
|
private _loadConfiguration;
|
|
20
22
|
private _prepareUrl;
|
|
@@ -151,6 +153,14 @@ export declare class S3Service {
|
|
|
151
153
|
key: string;
|
|
152
154
|
}): Promise<Buffer | null>;
|
|
153
155
|
private _downloadAzureFileAsBuffer;
|
|
156
|
+
/**
|
|
157
|
+
* Download a file from S3/Azure and return a readable stream.
|
|
158
|
+
* Memory-efficient for large files like ZIP archives.
|
|
159
|
+
*/
|
|
160
|
+
downloadFileAsStream(params: {
|
|
161
|
+
key: string;
|
|
162
|
+
}): Promise<Readable | null>;
|
|
163
|
+
private _downloadAzureFileAsStream;
|
|
154
164
|
/**
|
|
155
165
|
* Upload a buffer with an exact key — NO extension appending.
|
|
156
166
|
* Unlike uploadFile (which adds .pdf, .zip, etc.), this method
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/s3/services/s3.service.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAUlC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yDAAyD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"s3.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/s3/services/s3.service.ts"],"names":[],"mappings":"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"}
|