@carlonicora/nestjs-neo4jsonapi 2.3.0 → 2.4.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/common/usage-attribution.d.ts +218 -0
- package/dist/agents/common/usage-attribution.d.ts.map +1 -0
- package/dist/agents/common/usage-attribution.js +235 -0
- package/dist/agents/common/usage-attribution.js.map +1 -0
- package/dist/agents/community.summariser/services/community.summariser.service.d.ts.map +1 -1
- package/dist/agents/community.summariser/services/community.summariser.service.js +13 -1
- package/dist/agents/community.summariser/services/community.summariser.service.js.map +1 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts +24 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts.map +1 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.js +32 -0
- package/dist/agents/contextualiser/contexts/contextualiser.context.js.map +1 -1
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts +7 -0
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts.map +1 -1
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.js +5 -0
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.js.map +1 -1
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/chunk.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js +15 -0
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js +11 -0
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/rational.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/rational.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/rational.node.service.js.map +1 -1
- package/dist/agents/contextualiser/services/contextualiser.service.d.ts +7 -0
- package/dist/agents/contextualiser/services/contextualiser.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/services/contextualiser.service.js +17 -5
- package/dist/agents/contextualiser/services/contextualiser.service.js.map +1 -1
- package/dist/agents/drift/contexts/drift.context.d.ts +25 -1
- package/dist/agents/drift/contexts/drift.context.d.ts.map +1 -1
- package/dist/agents/drift/contexts/drift.context.js +32 -0
- package/dist/agents/drift/contexts/drift.context.js.map +1 -1
- package/dist/agents/drift/nodes/followup.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/followup.node.service.js +4 -0
- package/dist/agents/drift/nodes/followup.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/hyde.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/hyde.node.service.js +9 -1
- package/dist/agents/drift/nodes/hyde.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/primer.answer.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/primer.answer.node.service.js +4 -0
- package/dist/agents/drift/nodes/primer.answer.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/synthesis.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/synthesis.node.service.js +4 -0
- package/dist/agents/drift/nodes/synthesis.node.service.js.map +1 -1
- package/dist/agents/drift/services/drift.search.service.d.ts +9 -0
- package/dist/agents/drift/services/drift.search.service.d.ts.map +1 -1
- package/dist/agents/drift/services/drift.search.service.js +22 -5
- package/dist/agents/drift/services/drift.search.service.js.map +1 -1
- package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
- package/dist/agents/graph/services/graph.search.service.js +10 -1
- package/dist/agents/graph/services/graph.search.service.js.map +1 -1
- package/dist/agents/graph/tools/tool.factory.d.ts +6 -0
- package/dist/agents/graph/tools/tool.factory.d.ts.map +1 -1
- package/dist/agents/graph/tools/tool.factory.js.map +1 -1
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +13 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/operator/contexts/operator.context.d.ts +37 -1
- package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
- package/dist/agents/operator/contexts/operator.context.js +8 -0
- package/dist/agents/operator/contexts/operator.context.js.map +1 -1
- package/dist/agents/operator/interfaces/operator.tool.interface.d.ts +8 -0
- package/dist/agents/operator/interfaces/operator.tool.interface.d.ts.map +1 -1
- package/dist/agents/operator/interfaces/operator.tool.interface.js.map +1 -1
- package/dist/agents/operator/services/operator.service.d.ts +8 -0
- package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
- package/dist/agents/operator/services/operator.service.js +29 -0
- package/dist/agents/operator/services/operator.service.js.map +1 -1
- package/dist/agents/operator/tools/operator.tool.registry.d.ts.map +1 -1
- package/dist/agents/operator/tools/operator.tool.registry.js +2 -1
- package/dist/agents/operator/tools/operator.tool.registry.js.map +1 -1
- package/dist/agents/operator/tools/search-communities.tool.d.ts +8 -2
- package/dist/agents/operator/tools/search-communities.tool.d.ts.map +1 -1
- package/dist/agents/operator/tools/search-communities.tool.js +16 -4
- package/dist/agents/operator/tools/search-communities.tool.js.map +1 -1
- package/dist/agents/operator/tools/search-documents.tool.d.ts.map +1 -1
- package/dist/agents/operator/tools/search-documents.tool.js +5 -0
- package/dist/agents/operator/tools/search-documents.tool.js.map +1 -1
- package/dist/agents/responder/contexts/responder.context.d.ts +31 -0
- package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
- package/dist/agents/responder/contexts/responder.context.js +8 -0
- package/dist/agents/responder/contexts/responder.context.js.map +1 -1
- package/dist/agents/responder/factories/responder.context.factory.d.ts +4 -0
- package/dist/agents/responder/factories/responder.context.factory.d.ts.map +1 -1
- package/dist/agents/responder/factories/responder.context.factory.js +2 -0
- package/dist/agents/responder/factories/responder.context.factory.js.map +1 -1
- package/dist/agents/responder/nodes/graph.node.service.d.ts +6 -0
- package/dist/agents/responder/nodes/graph.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/graph.node.service.js +20 -0
- package/dist/agents/responder/nodes/graph.node.service.js.map +1 -1
- package/dist/agents/responder/nodes/planner.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/planner.node.service.js +9 -0
- package/dist/agents/responder/nodes/planner.node.service.js.map +1 -1
- package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/responder.answer.node.service.js +9 -0
- package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
- package/dist/agents/responder/services/responder.service.d.ts +16 -0
- package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
- package/dist/agents/responder/services/responder.service.js +29 -5
- package/dist/agents/responder/services/responder.service.js.map +1 -1
- package/dist/agents/summariser/services/summariser.service.d.ts +7 -0
- package/dist/agents/summariser/services/summariser.service.d.ts.map +1 -1
- package/dist/agents/summariser/services/summariser.service.js +15 -3
- package/dist/agents/summariser/services/summariser.service.js.map +1 -1
- package/dist/common/helpers/index.d.ts +1 -0
- package/dist/common/helpers/index.d.ts.map +1 -1
- package/dist/common/helpers/index.js +1 -0
- package/dist/common/helpers/index.js.map +1 -1
- package/dist/common/helpers/map-with-concurrency.d.ts +23 -0
- package/dist/common/helpers/map-with-concurrency.d.ts.map +1 -0
- package/dist/common/helpers/map-with-concurrency.js +60 -0
- package/dist/common/helpers/map-with-concurrency.js.map +1 -0
- package/dist/common/tokens.d.ts +2 -1
- package/dist/common/tokens.d.ts.map +1 -1
- package/dist/common/tokens.js +2 -1
- package/dist/common/tokens.js.map +1 -1
- package/dist/config/base.config.d.ts +19 -0
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +30 -3
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/interfaces/config.ai.interface.d.ts +10 -1
- package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.chunk.queues.interface.d.ts +13 -0
- package/dist/config/interfaces/config.chunk.queues.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.credits.interface.d.ts +1 -1
- package/dist/core/blocknote/services/blocknote.service.d.ts.map +1 -1
- package/dist/core/blocknote/services/blocknote.service.js +7 -0
- package/dist/core/blocknote/services/blocknote.service.js.map +1 -1
- package/dist/core/llm/services/audio.llm.service.d.ts +70 -1
- package/dist/core/llm/services/audio.llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/audio.llm.service.js +118 -3
- package/dist/core/llm/services/audio.llm.service.js.map +1 -1
- package/dist/core/llm/services/document-ai.service.d.ts +6 -0
- package/dist/core/llm/services/document-ai.service.d.ts.map +1 -1
- package/dist/core/llm/services/document-ai.service.js +1 -0
- package/dist/core/llm/services/document-ai.service.js.map +1 -1
- package/dist/core/llm/services/embedder.service.d.ts +105 -0
- package/dist/core/llm/services/embedder.service.d.ts.map +1 -1
- package/dist/core/llm/services/embedder.service.js +237 -7
- package/dist/core/llm/services/embedder.service.js.map +1 -1
- package/dist/core/llm/services/llm.service.d.ts +103 -6
- package/dist/core/llm/services/llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/llm.service.js +570 -148
- package/dist/core/llm/services/llm.service.js.map +1 -1
- package/dist/core/llm/services/model.service.d.ts +25 -0
- package/dist/core/llm/services/model.service.d.ts.map +1 -1
- package/dist/core/llm/services/model.service.js +76 -4
- package/dist/core/llm/services/model.service.js.map +1 -1
- package/dist/core/llm/utils/repair-truncated-json.d.ts +29 -0
- package/dist/core/llm/utils/repair-truncated-json.d.ts.map +1 -0
- package/dist/core/llm/utils/repair-truncated-json.js +111 -0
- package/dist/core/llm/utils/repair-truncated-json.js.map +1 -0
- package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
- package/dist/foundations/assistant/services/assistant.service.js +12 -0
- package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
- package/dist/foundations/atomicfact/services/atomicfact.service.d.ts +7 -0
- package/dist/foundations/atomicfact/services/atomicfact.service.d.ts.map +1 -1
- package/dist/foundations/atomicfact/services/atomicfact.service.js +6 -0
- package/dist/foundations/atomicfact/services/atomicfact.service.js.map +1 -1
- package/dist/foundations/chunk/processors/chunk.processor.d.ts.map +1 -1
- package/dist/foundations/chunk/processors/chunk.processor.js +7 -1
- package/dist/foundations/chunk/processors/chunk.processor.js.map +1 -1
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts +90 -2
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts.map +1 -1
- package/dist/foundations/chunk/repositories/chunk.repository.js +205 -31
- package/dist/foundations/chunk/repositories/chunk.repository.js.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.js +50 -1
- package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
- package/dist/foundations/chunker/chunker.module.d.ts.map +1 -1
- package/dist/foundations/chunker/chunker.module.js +4 -1
- package/dist/foundations/chunker/chunker.module.js.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.d.ts +57 -1
- package/dist/foundations/chunker/services/chunker.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.js +207 -16
- package/dist/foundations/chunker/services/chunker.service.js.map +1 -1
- package/dist/foundations/chunker/services/types/pdf.service.d.ts +42 -1
- package/dist/foundations/chunker/services/types/pdf.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/types/pdf.service.js +111 -22
- package/dist/foundations/chunker/services/types/pdf.service.js.map +1 -1
- package/dist/foundations/chunker/services/types/semanticsplitter.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/types/semanticsplitter.service.js +24 -3
- package/dist/foundations/chunker/services/types/semanticsplitter.service.js.map +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
- package/dist/foundations/company/repositories/company.repository.js +31 -14
- package/dist/foundations/company/repositories/company.repository.js.map +1 -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 +20 -7
- package/dist/foundations/how-to/processors/how-to.processor.js.map +1 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts +25 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts.map +1 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js +38 -2
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js.map +1 -1
- package/dist/foundations/keyconcept/services/keyconcept.service.d.ts +5 -0
- package/dist/foundations/keyconcept/services/keyconcept.service.d.ts.map +1 -1
- package/dist/foundations/keyconcept/services/keyconcept.service.js +4 -0
- package/dist/foundations/keyconcept/services/keyconcept.service.js.map +1 -1
- package/dist/foundations/tokenusage/entities/tokenusage.js +1 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts +4 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts.map +1 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.js +3 -0
- package/dist/foundations/tokenusage/enums/tokenusage.type.js.map +1 -1
- package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +3 -3
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +2 -2
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +6 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.js +7 -2
- package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Document } from "@langchain/core/documents";
|
|
2
2
|
import { ConfigService } from "@nestjs/config";
|
|
3
|
+
import { TokenUsageRecorderInterface } from "../../../common/tokens";
|
|
3
4
|
import { BaseConfigInterface } from "../../../config/interfaces/base.config.interface";
|
|
4
5
|
import { ModelService } from "../../../core/llm/services/model.service";
|
|
5
6
|
import { S3Service } from "../../s3/services/s3.service";
|
|
7
|
+
import { TokenUsageService } from "../../tokenusage/services/tokenusage.service";
|
|
6
8
|
import { DocXService } from "./types/docx.service";
|
|
7
9
|
import { EmailParserService } from "./types/email.service";
|
|
8
10
|
import { MarkdownChunkingService } from "./types/markdownchunking.service";
|
|
@@ -10,6 +12,17 @@ import { PdfService } from "./types/pdf.service";
|
|
|
10
12
|
import { PptxService } from "./types/pptx.service";
|
|
11
13
|
import { SemanticSplitterService } from "./types/semanticsplitter.service";
|
|
12
14
|
import { XlsxService } from "./types/xlsx.service";
|
|
15
|
+
/**
|
|
16
|
+
* Opt-in cost attribution for the LLM calls the chunker makes while reading a
|
|
17
|
+
* file (today: image analysis). Without both `relationshipId` and
|
|
18
|
+
* `relationshipType` no usage record is written — the package stays
|
|
19
|
+
* domain-agnostic and the caller decides what the usage is billed against.
|
|
20
|
+
* Mirrors `EmbedderAttribution`.
|
|
21
|
+
*/
|
|
22
|
+
export interface ChunkerAttribution {
|
|
23
|
+
relationshipId: string;
|
|
24
|
+
relationshipType: string;
|
|
25
|
+
}
|
|
13
26
|
export declare class ChunkerService {
|
|
14
27
|
private readonly markdownChunkingService;
|
|
15
28
|
private readonly semanticSplitterService;
|
|
@@ -21,18 +34,47 @@ export declare class ChunkerService {
|
|
|
21
34
|
private readonly s3Service;
|
|
22
35
|
private readonly emailParserService;
|
|
23
36
|
private readonly config;
|
|
37
|
+
private readonly tokenUsageService?;
|
|
38
|
+
private readonly tokenUsageRecorder?;
|
|
24
39
|
private logger;
|
|
25
40
|
private readonly splitter;
|
|
26
41
|
private readonly targetChars;
|
|
27
|
-
constructor(markdownChunkingService: MarkdownChunkingService, semanticSplitterService: SemanticSplitterService, docxService: DocXService, pptxService: PptxService, pdfService: PdfService, xlsxService: XlsxService, modelService: ModelService, s3Service: S3Service, emailParserService: EmailParserService, config: ConfigService<BaseConfigInterface
|
|
42
|
+
constructor(markdownChunkingService: MarkdownChunkingService, semanticSplitterService: SemanticSplitterService, docxService: DocXService, pptxService: PptxService, pdfService: PdfService, xlsxService: XlsxService, modelService: ModelService, s3Service: S3Service, emailParserService: EmailParserService, config: ConfigService<BaseConfigInterface>, tokenUsageService?: TokenUsageService, tokenUsageRecorder?: TokenUsageRecorderInterface);
|
|
28
43
|
private _logChunkResult;
|
|
29
44
|
private _downloadFileAsBuffer;
|
|
30
45
|
private _downloadFile;
|
|
46
|
+
/**
|
|
47
|
+
* Page count for formats that carry no pagination of their own (everything
|
|
48
|
+
* except PDFs and images). Deliberately coarse — it exists so per-page costs
|
|
49
|
+
* (OCR, document AI) can be attributed to a document of any format.
|
|
50
|
+
*/
|
|
51
|
+
private _estimatePageCountFromText;
|
|
52
|
+
private _estimatePageCount;
|
|
53
|
+
/**
|
|
54
|
+
* Stamps the document's page count on every chunk it produced. The count
|
|
55
|
+
* travels on metadata because the return type of the public entry point is
|
|
56
|
+
* `Document[]` and must stay that way for existing callers. `extra` carries the
|
|
57
|
+
* optional read-quality flags (today: `ocrTruncated`) alongside it.
|
|
58
|
+
*/
|
|
59
|
+
private _stampTotalPages;
|
|
60
|
+
/**
|
|
61
|
+
* Enforces `MAX_CHUNK_CHARS` on the chunks about to leave the chunker.
|
|
62
|
+
*
|
|
63
|
+
* Splitters are best-effort: given text with no separator near the target size
|
|
64
|
+
* they emit a single huge chunk, which only fails much later (embedding call,
|
|
65
|
+
* LLM context). Splitting here is the last point where the oversize is still
|
|
66
|
+
* cheap to fix. `splitDocuments` carries the metadata onto the pieces, so the
|
|
67
|
+
* page count stamped upstream survives; the slice is a guarantee for text with
|
|
68
|
+
* no boundary to split on at all.
|
|
69
|
+
*/
|
|
70
|
+
private _capChunkChars;
|
|
31
71
|
generateContentStructureFromFile(params: {
|
|
32
72
|
fileType: string;
|
|
33
73
|
filePath: string;
|
|
74
|
+
attribution?: ChunkerAttribution;
|
|
34
75
|
}): Promise<Document[]>;
|
|
35
76
|
private _processLocalFile;
|
|
77
|
+
private _loadLocalFileDocuments;
|
|
36
78
|
private _createFromEmail;
|
|
37
79
|
private _extractAttachmentContent;
|
|
38
80
|
generateContentStructureFromMarkdown(params: {
|
|
@@ -42,11 +84,25 @@ export declare class ChunkerService {
|
|
|
42
84
|
extractContentFromUrl(params: {
|
|
43
85
|
url: string;
|
|
44
86
|
}): Promise<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Image analysis is a vision LLM call made inside the package, so — exactly
|
|
89
|
+
* like `EmbedderService.persistUsage` — its usage is written through the
|
|
90
|
+
* optional `TOKEN_USAGE_RECORDER` seam, attribution is opt-in, and a failure
|
|
91
|
+
* to record never fails the chunking itself.
|
|
92
|
+
*/
|
|
93
|
+
private _persistImageUsage;
|
|
45
94
|
private _createChunksFromImage;
|
|
46
95
|
private _createFromMarkdown;
|
|
47
96
|
private _createFromDocX;
|
|
48
97
|
private _createFromPptx;
|
|
49
98
|
private _createFromXlsx;
|
|
99
|
+
/**
|
|
100
|
+
* A PDF's own page count is authoritative — except when it clearly is not.
|
|
101
|
+
* Broken or unreadable document metadata surfaces as "1 page", and a 50-page
|
|
102
|
+
* PDF billed as one page under-reports per-page cost by a factor of 50, so a
|
|
103
|
+
* reported single page carrying pages of text is replaced by the estimate.
|
|
104
|
+
*/
|
|
105
|
+
private _resolvePdfPageCount;
|
|
50
106
|
private _createFromPdf;
|
|
51
107
|
}
|
|
52
108
|
//# sourceMappingURL=chunker.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/chunker/services/chunker.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAIrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"chunker.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/chunker/services/chunker.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
43
|
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
44
47
|
var ChunkerService_1;
|
|
45
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
49
|
exports.ChunkerService = void 0;
|
|
@@ -52,8 +55,11 @@ const common_1 = require("@nestjs/common");
|
|
|
52
55
|
const config_1 = require("@nestjs/config");
|
|
53
56
|
const crypto_1 = require("crypto");
|
|
54
57
|
const fs = __importStar(require("fs/promises"));
|
|
58
|
+
const tokens_1 = require("../../../common/tokens");
|
|
55
59
|
const model_service_1 = require("../../../core/llm/services/model.service");
|
|
56
60
|
const s3_service_1 = require("../../s3/services/s3.service");
|
|
61
|
+
const tokenusage_type_1 = require("../../tokenusage/enums/tokenusage.type");
|
|
62
|
+
const tokenusage_service_1 = require("../../tokenusage/services/tokenusage.service");
|
|
57
63
|
const file_types_1 = require("../constants/file.types");
|
|
58
64
|
const json_loader_1 = require("../loaders/json.loader");
|
|
59
65
|
const text_loader_1 = require("../loaders/text.loader");
|
|
@@ -64,8 +70,24 @@ const pdf_service_1 = require("./types/pdf.service");
|
|
|
64
70
|
const pptx_service_1 = require("./types/pptx.service");
|
|
65
71
|
const semanticsplitter_service_1 = require("./types/semanticsplitter.service");
|
|
66
72
|
const xlsx_service_1 = require("./types/xlsx.service");
|
|
73
|
+
/** Words per page used to estimate page counts for formats that have no real pagination. */
|
|
74
|
+
const WORDS_PER_ESTIMATED_PAGE = 500;
|
|
75
|
+
/**
|
|
76
|
+
* Hard ceiling on the size of a chunk leaving the chunker. A splitter that fails
|
|
77
|
+
* to find a boundary can emit a chunk far past its target, which then blows the
|
|
78
|
+
* embedding model's context window at the far end of the pipeline. Anything
|
|
79
|
+
* longer is split (with a WARN) rather than passed on.
|
|
80
|
+
*/
|
|
81
|
+
const MAX_CHUNK_CHARS = 24_000;
|
|
82
|
+
/**
|
|
83
|
+
* A PDF that reports one page but holds more than this many estimated pages of
|
|
84
|
+
* text is not believed: the reported count is treated as broken metadata and the
|
|
85
|
+
* estimate is used instead. Three pages of slack keeps genuinely short documents
|
|
86
|
+
* (a one-page letter whose estimate rounds to 2) on their real count.
|
|
87
|
+
*/
|
|
88
|
+
const IMPLAUSIBLE_SINGLE_PAGE_ESTIMATE = 3;
|
|
67
89
|
let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
68
|
-
constructor(markdownChunkingService, semanticSplitterService, docxService, pptxService, pdfService, xlsxService, modelService, s3Service, emailParserService, config) {
|
|
90
|
+
constructor(markdownChunkingService, semanticSplitterService, docxService, pptxService, pdfService, xlsxService, modelService, s3Service, emailParserService, config, tokenUsageService, tokenUsageRecorder) {
|
|
69
91
|
this.markdownChunkingService = markdownChunkingService;
|
|
70
92
|
this.semanticSplitterService = semanticSplitterService;
|
|
71
93
|
this.docxService = docxService;
|
|
@@ -76,6 +98,8 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
76
98
|
this.s3Service = s3Service;
|
|
77
99
|
this.emailParserService = emailParserService;
|
|
78
100
|
this.config = config;
|
|
101
|
+
this.tokenUsageService = tokenUsageService;
|
|
102
|
+
this.tokenUsageRecorder = tokenUsageRecorder;
|
|
79
103
|
this.logger = new common_1.Logger(ChunkerService_1.name);
|
|
80
104
|
const chunker = this.config.get("chunker");
|
|
81
105
|
this.splitter = chunker?.strategy === "semantic" ? this.semanticSplitterService : this.markdownChunkingService;
|
|
@@ -107,38 +131,121 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
107
131
|
await fs.writeFile(tempFilePath, buffer);
|
|
108
132
|
return tempFilePath;
|
|
109
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Page count for formats that carry no pagination of their own (everything
|
|
136
|
+
* except PDFs and images). Deliberately coarse — it exists so per-page costs
|
|
137
|
+
* (OCR, document AI) can be attributed to a document of any format.
|
|
138
|
+
*/
|
|
139
|
+
_estimatePageCountFromText(text) {
|
|
140
|
+
const words = text.split(/\s+/).filter(Boolean).length;
|
|
141
|
+
return Math.max(1, Math.round(words / WORDS_PER_ESTIMATED_PAGE));
|
|
142
|
+
}
|
|
143
|
+
_estimatePageCount(docs) {
|
|
144
|
+
return this._estimatePageCountFromText(docs.map((doc) => doc.pageContent ?? "").join(" "));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Stamps the document's page count on every chunk it produced. The count
|
|
148
|
+
* travels on metadata because the return type of the public entry point is
|
|
149
|
+
* `Document[]` and must stay that way for existing callers. `extra` carries the
|
|
150
|
+
* optional read-quality flags (today: `ocrTruncated`) alongside it.
|
|
151
|
+
*/
|
|
152
|
+
_stampTotalPages(docs, totalPages, extra) {
|
|
153
|
+
for (const doc of docs) {
|
|
154
|
+
doc.metadata = { ...doc.metadata, ...extra, totalPages };
|
|
155
|
+
}
|
|
156
|
+
return docs;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Enforces `MAX_CHUNK_CHARS` on the chunks about to leave the chunker.
|
|
160
|
+
*
|
|
161
|
+
* Splitters are best-effort: given text with no separator near the target size
|
|
162
|
+
* they emit a single huge chunk, which only fails much later (embedding call,
|
|
163
|
+
* LLM context). Splitting here is the last point where the oversize is still
|
|
164
|
+
* cheap to fix. `splitDocuments` carries the metadata onto the pieces, so the
|
|
165
|
+
* page count stamped upstream survives; the slice is a guarantee for text with
|
|
166
|
+
* no boundary to split on at all.
|
|
167
|
+
*/
|
|
168
|
+
async _capChunkChars(docs) {
|
|
169
|
+
if (!docs.some((doc) => (doc.pageContent?.length ?? 0) > MAX_CHUNK_CHARS))
|
|
170
|
+
return docs;
|
|
171
|
+
const splitter = new textsplitters_1.RecursiveCharacterTextSplitter({
|
|
172
|
+
chunkSize: MAX_CHUNK_CHARS,
|
|
173
|
+
chunkOverlap: 0,
|
|
174
|
+
});
|
|
175
|
+
const capped = [];
|
|
176
|
+
for (const doc of docs) {
|
|
177
|
+
const length = doc.pageContent?.length ?? 0;
|
|
178
|
+
if (length <= MAX_CHUNK_CHARS) {
|
|
179
|
+
capped.push(doc);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const partsBefore = capped.length;
|
|
183
|
+
const pieces = await splitter.splitDocuments([doc]);
|
|
184
|
+
for (const piece of pieces) {
|
|
185
|
+
if (piece.pageContent.length <= MAX_CHUNK_CHARS) {
|
|
186
|
+
capped.push(piece);
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
for (let offset = 0; offset < piece.pageContent.length; offset += MAX_CHUNK_CHARS) {
|
|
190
|
+
capped.push(new documents_1.Document({
|
|
191
|
+
pageContent: piece.pageContent.slice(offset, offset + MAX_CHUNK_CHARS),
|
|
192
|
+
metadata: { ...piece.metadata },
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
this.logger.warn(`Chunk of ${length} chars exceeds MAX_CHUNK_CHARS=${MAX_CHUNK_CHARS} — ` +
|
|
197
|
+
`split into ${capped.length - partsBefore} parts`);
|
|
198
|
+
}
|
|
199
|
+
return capped;
|
|
200
|
+
}
|
|
110
201
|
async generateContentStructureFromFile(params) {
|
|
111
202
|
if (this.config.get("ai").mock) {
|
|
112
203
|
return [
|
|
113
204
|
new documents_1.Document({
|
|
114
205
|
pageContent: "mock chunk content for smoke testing",
|
|
115
|
-
metadata: { source: params.filePath, mock: true },
|
|
206
|
+
metadata: { source: params.filePath, mock: true, totalPages: 1 },
|
|
116
207
|
}),
|
|
117
208
|
];
|
|
118
209
|
}
|
|
119
|
-
if ((0, file_types_1.isImageFile)(params.fileType))
|
|
120
|
-
|
|
210
|
+
if ((0, file_types_1.isImageFile)(params.fileType)) {
|
|
211
|
+
const imageDocs = await this._createChunksFromImage({
|
|
212
|
+
filePath: params.filePath,
|
|
213
|
+
fileType: params.fileType,
|
|
214
|
+
attribution: params.attribution,
|
|
215
|
+
});
|
|
216
|
+
return this._capChunkChars(this._stampTotalPages(imageDocs, 1));
|
|
217
|
+
}
|
|
121
218
|
const localFilePath = await this._downloadFile({
|
|
122
219
|
url: params.filePath,
|
|
123
220
|
extension: params.fileType,
|
|
124
221
|
});
|
|
125
222
|
// Email files need special handling (attachment extraction)
|
|
126
223
|
if (params.fileType.toLowerCase() === "eml" || params.fileType.toLowerCase() === "msg") {
|
|
127
|
-
|
|
224
|
+
const emailDocs = await this._createFromEmail({
|
|
128
225
|
filePath: params.filePath,
|
|
129
226
|
localFilePath,
|
|
130
227
|
fileType: params.fileType.toLowerCase(),
|
|
228
|
+
attribution: params.attribution,
|
|
131
229
|
});
|
|
230
|
+
return this._capChunkChars(emailDocs);
|
|
132
231
|
}
|
|
133
|
-
const docs = await this._processLocalFile({
|
|
232
|
+
const docs = await this._capChunkChars(await this._processLocalFile({
|
|
134
233
|
localFilePath,
|
|
135
234
|
fileType: params.fileType,
|
|
136
235
|
filePath: params.filePath,
|
|
137
|
-
});
|
|
236
|
+
}));
|
|
138
237
|
this._logChunkResult(params.fileType, docs);
|
|
139
238
|
return docs;
|
|
140
239
|
}
|
|
141
240
|
async _processLocalFile(params) {
|
|
241
|
+
const docs = await this._loadLocalFileDocuments(params);
|
|
242
|
+
// PDFs already carry their real page count (stamped by `_createFromPdf`);
|
|
243
|
+
// every other format has none to read, so it is estimated from the text.
|
|
244
|
+
const stamped = docs.find((doc) => typeof doc.metadata?.totalPages === "number");
|
|
245
|
+
const totalPages = stamped ? stamped.metadata.totalPages : this._estimatePageCount(docs);
|
|
246
|
+
return this._stampTotalPages(docs, totalPages);
|
|
247
|
+
}
|
|
248
|
+
async _loadLocalFileDocuments(params) {
|
|
142
249
|
switch (params.fileType.toLowerCase()) {
|
|
143
250
|
case "md":
|
|
144
251
|
return this._createFromMarkdown({ filePath: params.filePath, localFilePath: params.localFilePath });
|
|
@@ -187,7 +294,7 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
187
294
|
const attachmentContents = [];
|
|
188
295
|
for (const att of parsed.attachments) {
|
|
189
296
|
try {
|
|
190
|
-
const content = await this._extractAttachmentContent(att);
|
|
297
|
+
const content = await this._extractAttachmentContent(att, 0, params.attribution);
|
|
191
298
|
if (content) {
|
|
192
299
|
attachmentContents.push({ filename: att.filename, content });
|
|
193
300
|
}
|
|
@@ -208,7 +315,10 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
208
315
|
chunkSize: this.targetChars,
|
|
209
316
|
chunkOverlap: 200,
|
|
210
317
|
});
|
|
211
|
-
|
|
318
|
+
const emailDocs = await splitter.createDocuments([markdown]);
|
|
319
|
+
// Emails have no pagination: estimate from the assembled markdown itself
|
|
320
|
+
// (chunk overlap would otherwise inflate a count taken from the chunks).
|
|
321
|
+
return this._stampTotalPages(emailDocs, this._estimatePageCountFromText(markdown));
|
|
212
322
|
}
|
|
213
323
|
return [];
|
|
214
324
|
}
|
|
@@ -217,7 +327,7 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
217
327
|
return [];
|
|
218
328
|
}
|
|
219
329
|
}
|
|
220
|
-
async _extractAttachmentContent(attachment, depth = 0) {
|
|
330
|
+
async _extractAttachmentContent(attachment, depth = 0, attribution) {
|
|
221
331
|
if (depth >= 3) {
|
|
222
332
|
this.logger.warn(`Max email nesting depth reached for ${attachment.filename}`);
|
|
223
333
|
return null;
|
|
@@ -230,7 +340,7 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
230
340
|
: await this.emailParserService.parseMsg(attachment.content);
|
|
231
341
|
const nestedAttContents = [];
|
|
232
342
|
for (const att of parsed.attachments) {
|
|
233
|
-
const content = await this._extractAttachmentContent(att, depth + 1);
|
|
343
|
+
const content = await this._extractAttachmentContent(att, depth + 1, attribution);
|
|
234
344
|
if (content)
|
|
235
345
|
nestedAttContents.push({ filename: att.filename, content });
|
|
236
346
|
}
|
|
@@ -241,7 +351,7 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
241
351
|
const tempPath = `/tmp/temp-att.${(0, crypto_1.randomUUID)()}.${extension}`;
|
|
242
352
|
await fs.writeFile(tempPath, attachment.content);
|
|
243
353
|
try {
|
|
244
|
-
const docs = await this._createChunksFromImage({ filePath: tempPath, fileType: extension });
|
|
354
|
+
const docs = await this._createChunksFromImage({ filePath: tempPath, fileType: extension, attribution });
|
|
245
355
|
return docs.map((d) => d.pageContent).join("\n\n");
|
|
246
356
|
}
|
|
247
357
|
finally {
|
|
@@ -322,6 +432,31 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
322
432
|
await fs.unlink(tempFilePath).catch(() => { });
|
|
323
433
|
}
|
|
324
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* Image analysis is a vision LLM call made inside the package, so — exactly
|
|
437
|
+
* like `EmbedderService.persistUsage` — its usage is written through the
|
|
438
|
+
* optional `TOKEN_USAGE_RECORDER` seam, attribution is opt-in, and a failure
|
|
439
|
+
* to record never fails the chunking itself.
|
|
440
|
+
*/
|
|
441
|
+
async _persistImageUsage(params) {
|
|
442
|
+
if (!params.attribution?.relationshipId || !params.attribution?.relationshipType)
|
|
443
|
+
return;
|
|
444
|
+
const recorder = this.tokenUsageRecorder ?? this.tokenUsageService;
|
|
445
|
+
if (!recorder)
|
|
446
|
+
return;
|
|
447
|
+
try {
|
|
448
|
+
await recorder.recordTokenUsage({
|
|
449
|
+
tokens: params.tokens,
|
|
450
|
+
type: tokenusage_type_1.TokenUsageType.ImageAnalysis,
|
|
451
|
+
relationshipId: params.attribution.relationshipId,
|
|
452
|
+
relationshipType: params.attribution.relationshipType,
|
|
453
|
+
useVisionCosts: true,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
catch (err) {
|
|
457
|
+
this.logger.warn(`Image analysis usage persistence failed — continuing: ${String(err)}`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
325
460
|
async _createChunksFromImage(params) {
|
|
326
461
|
try {
|
|
327
462
|
const imageUrl = params.filePath.toLowerCase().startsWith("http")
|
|
@@ -331,6 +466,20 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
331
466
|
url: imageUrl,
|
|
332
467
|
extension: params.fileType,
|
|
333
468
|
});
|
|
469
|
+
/*
|
|
470
|
+
* NO USAGE IS RECORDED FOR THIS CALL, DELIBERATELY.
|
|
471
|
+
*
|
|
472
|
+
* It takes the raw model from `ModelService` and calls `invoke` on it
|
|
473
|
+
* directly, bypassing `LLMService` — the only place LLM spend is metered.
|
|
474
|
+
* It is also handed nothing to attribute the spend to: file chunking
|
|
475
|
+
* receives a path and a file type, no entity id or label, so a usage row
|
|
476
|
+
* written here would carry no `USED_FOR` edge and bill nobody.
|
|
477
|
+
*
|
|
478
|
+
* UNREACHABLE FROM narr8, which never ingests files through the chunker,
|
|
479
|
+
* so no narr8 spend goes unrecorded. It IS live for library consumers that
|
|
480
|
+
* do ingest files; metering it needs an attribution parameter threaded
|
|
481
|
+
* through the chunker's public entry points, which is out of scope here.
|
|
482
|
+
*/
|
|
334
483
|
const model = this.modelService.getLLM({ temperature: 0.2 });
|
|
335
484
|
// Analyze the image directly using the LLM
|
|
336
485
|
const imageDescription = await model.invoke([
|
|
@@ -349,6 +498,12 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
349
498
|
],
|
|
350
499
|
}),
|
|
351
500
|
]);
|
|
501
|
+
const usage = imageDescription
|
|
502
|
+
?.usage_metadata;
|
|
503
|
+
await this._persistImageUsage({
|
|
504
|
+
tokens: { input: usage?.input_tokens ?? 0, output: usage?.output_tokens ?? 0 },
|
|
505
|
+
attribution: params.attribution,
|
|
506
|
+
});
|
|
352
507
|
if (imageDescription?.content) {
|
|
353
508
|
// Create chunks from the image description
|
|
354
509
|
const splitter = new textsplitters_1.RecursiveCharacterTextSplitter({
|
|
@@ -476,9 +631,23 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
476
631
|
}
|
|
477
632
|
return response;
|
|
478
633
|
}
|
|
634
|
+
/**
|
|
635
|
+
* A PDF's own page count is authoritative — except when it clearly is not.
|
|
636
|
+
* Broken or unreadable document metadata surfaces as "1 page", and a 50-page
|
|
637
|
+
* PDF billed as one page under-reports per-page cost by a factor of 50, so a
|
|
638
|
+
* reported single page carrying pages of text is replaced by the estimate.
|
|
639
|
+
*/
|
|
640
|
+
_resolvePdfPageCount(params) {
|
|
641
|
+
if (params.reported <= 1 && params.estimated > IMPLAUSIBLE_SINGLE_PAGE_ESTIMATE) {
|
|
642
|
+
this.logger.warn(`PDF reported ${params.reported} page(s) but holds ~${params.estimated} pages of text — ` +
|
|
643
|
+
`reported count is implausible, using the estimate (${params.source})`);
|
|
644
|
+
return params.estimated;
|
|
645
|
+
}
|
|
646
|
+
return params.reported;
|
|
647
|
+
}
|
|
479
648
|
async _createFromPdf(params) {
|
|
480
649
|
try {
|
|
481
|
-
const pdfContent = await this.pdfService.extractPdfContent(params.localFilePath);
|
|
650
|
+
const { content: pdfContent, totalPages: reportedPages, pagesProcessed, } = await this.pdfService.extractPdfContent(params.localFilePath);
|
|
482
651
|
const markdownContent = pdfContent
|
|
483
652
|
.map((block) => {
|
|
484
653
|
if (block.type === "header") {
|
|
@@ -492,12 +661,27 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
492
661
|
}
|
|
493
662
|
})
|
|
494
663
|
.join("\n\n");
|
|
664
|
+
const totalPages = this._resolvePdfPageCount({
|
|
665
|
+
reported: reportedPages,
|
|
666
|
+
estimated: this._estimatePageCountFromText(markdownContent),
|
|
667
|
+
source: params.filePath,
|
|
668
|
+
});
|
|
669
|
+
// Only the OCR route reports `pagesProcessed`; reading fewer pages than the
|
|
670
|
+
// document has means the extracted text — and every cost derived from it —
|
|
671
|
+
// covers only part of the document.
|
|
672
|
+
const ocrTruncated = typeof pagesProcessed === "number" && pagesProcessed < totalPages;
|
|
673
|
+
if (ocrTruncated) {
|
|
674
|
+
this.logger.warn(`OCR read ${pagesProcessed} of ${totalPages} pages for ${params.filePath} — ` +
|
|
675
|
+
`chunks are flagged ocrTruncated`);
|
|
676
|
+
}
|
|
677
|
+
const readQuality = ocrTruncated ? { ocrTruncated: true } : undefined;
|
|
495
678
|
if (markdownContent && markdownContent.trim()) {
|
|
496
679
|
try {
|
|
497
|
-
|
|
680
|
+
const chunks = await this.splitter.splitMarkdownToChunks({
|
|
498
681
|
content: markdownContent,
|
|
499
682
|
title: undefined,
|
|
500
683
|
});
|
|
684
|
+
return this._stampTotalPages(chunks, totalPages, readQuality);
|
|
501
685
|
}
|
|
502
686
|
catch (error) {
|
|
503
687
|
this.logger.error("Presentation processing failed:", error);
|
|
@@ -505,7 +689,8 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
505
689
|
chunkSize: this.targetChars,
|
|
506
690
|
chunkOverlap: 200,
|
|
507
691
|
});
|
|
508
|
-
|
|
692
|
+
const chunks = await splitter.createDocuments([markdownContent]);
|
|
693
|
+
return this._stampTotalPages(chunks, totalPages, readQuality);
|
|
509
694
|
}
|
|
510
695
|
}
|
|
511
696
|
const rawElements = await this.pdfService.getRawElements(params.localFilePath);
|
|
@@ -513,6 +698,8 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
513
698
|
pageContent: element.content,
|
|
514
699
|
metadata: {
|
|
515
700
|
type: element.type,
|
|
701
|
+
...readQuality,
|
|
702
|
+
totalPages,
|
|
516
703
|
},
|
|
517
704
|
}));
|
|
518
705
|
}
|
|
@@ -525,6 +712,9 @@ let ChunkerService = ChunkerService_1 = class ChunkerService {
|
|
|
525
712
|
exports.ChunkerService = ChunkerService;
|
|
526
713
|
exports.ChunkerService = ChunkerService = ChunkerService_1 = __decorate([
|
|
527
714
|
(0, common_1.Injectable)(),
|
|
715
|
+
__param(10, (0, common_1.Optional)()),
|
|
716
|
+
__param(11, (0, common_1.Optional)()),
|
|
717
|
+
__param(11, (0, common_1.Inject)(tokens_1.TOKEN_USAGE_RECORDER)),
|
|
528
718
|
__metadata("design:paramtypes", [markdownchunking_service_1.MarkdownChunkingService,
|
|
529
719
|
semanticsplitter_service_1.SemanticSplitterService,
|
|
530
720
|
docx_service_1.DocXService,
|
|
@@ -534,6 +724,7 @@ exports.ChunkerService = ChunkerService = ChunkerService_1 = __decorate([
|
|
|
534
724
|
model_service_1.ModelService,
|
|
535
725
|
s3_service_1.S3Service,
|
|
536
726
|
email_service_1.EmailParserService,
|
|
537
|
-
config_1.ConfigService
|
|
727
|
+
config_1.ConfigService,
|
|
728
|
+
tokenusage_service_1.TokenUsageService, Object])
|
|
538
729
|
], ChunkerService);
|
|
539
730
|
//# sourceMappingURL=chunker.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.service.js","sourceRoot":"","sources":["../../../../src/foundations/chunker/services/chunker.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chunker.service.js","sourceRoot":"","sources":["../../../../src/foundations/chunker/services/chunker.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,38 @@ export declare class PdfService {
|
|
|
14
14
|
convertToMarkdown(pdfElements: PdfElement[]): string;
|
|
15
15
|
private extractElementAsMarkdown;
|
|
16
16
|
private extractTableAsMarkdown;
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Real page count of a PDF, read straight from the document info dictionary.
|
|
19
|
+
*
|
|
20
|
+
* Extraction can succeed through any of three paths (intelligent, basic, OCR)
|
|
21
|
+
* and each one discards the page count it happens to see, so the count is read
|
|
22
|
+
* once here and returned alongside whichever path wins. Never throws: a PDF we
|
|
23
|
+
* cannot introspect still counts as one page.
|
|
24
|
+
*/
|
|
25
|
+
private readPageCount;
|
|
26
|
+
/**
|
|
27
|
+
* The one place that knows where pdf-parse keeps the page count.
|
|
28
|
+
*
|
|
29
|
+
* pdf-parse v2 builds its result as `new InfoResult(doc.numPages)`, so the
|
|
30
|
+
* count lives on `InfoResult.total`. `InfoResult.info` is the PDF *Info
|
|
31
|
+
* dictionary* (title, author, producer, dates) and has no page count at all —
|
|
32
|
+
* reading `info.numPages` therefore yielded `undefined` for every PDF ever
|
|
33
|
+
* parsed here and every caller fell back to 1. Returns 0 when the count
|
|
34
|
+
* genuinely cannot be determined so callers can log their own fallback.
|
|
35
|
+
*/
|
|
36
|
+
private numPagesFromInfo;
|
|
37
|
+
/**
|
|
38
|
+
* `totalPages` is always the document's real page count, whichever route won.
|
|
39
|
+
* `pagesProcessed` is only present when the OCR route won and reports how many
|
|
40
|
+
* pages that route actually read — fewer than `totalPages` means the returned
|
|
41
|
+
* text covers only part of the document — now possible ONLY when individual pages fail
|
|
42
|
+
* to render, never by design: OCR no longer truncates.
|
|
43
|
+
*/
|
|
44
|
+
extractPdfContent(pdfPath: string, options?: Partial<PdfProcessingOptions>): Promise<{
|
|
45
|
+
content: PdfContent[];
|
|
46
|
+
totalPages: number;
|
|
47
|
+
pagesProcessed?: number;
|
|
48
|
+
}>;
|
|
18
49
|
private extractWithIntelligentParsing;
|
|
19
50
|
private createLayoutElementsFromText;
|
|
20
51
|
private groupElementsByPage;
|
|
@@ -31,7 +62,17 @@ export declare class PdfService {
|
|
|
31
62
|
private processTableLines;
|
|
32
63
|
private detectScannedPdf;
|
|
33
64
|
private extractWithBasicParsing;
|
|
65
|
+
/**
|
|
66
|
+
* `pagesProcessed` is the number of pages that were actually rendered and read
|
|
67
|
+
* by OCR. Every page is attempted, so this equals the document's page count unless a
|
|
68
|
+
* page FAILS to render; a shortfall is a defect, not policy. It is what lets the caller
|
|
69
|
+
* tell "a 50-page scan" from "20 pages of a 50-page scan".
|
|
70
|
+
*/
|
|
34
71
|
private extractWithOCR;
|
|
72
|
+
/**
|
|
73
|
+
* Renders the pages OCR will read. `pageCount` is the document's real page
|
|
74
|
+
* count, so a caller can see how much of the document `images` covers.
|
|
75
|
+
*/
|
|
35
76
|
private convertPdfToImages;
|
|
36
77
|
private processImageWithOCR;
|
|
37
78
|
private isGarbageOcrOutput;
|