@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.
Files changed (220) hide show
  1. package/dist/agents/common/usage-attribution.d.ts +218 -0
  2. package/dist/agents/common/usage-attribution.d.ts.map +1 -0
  3. package/dist/agents/common/usage-attribution.js +235 -0
  4. package/dist/agents/common/usage-attribution.js.map +1 -0
  5. package/dist/agents/community.summariser/services/community.summariser.service.d.ts.map +1 -1
  6. package/dist/agents/community.summariser/services/community.summariser.service.js +13 -1
  7. package/dist/agents/community.summariser/services/community.summariser.service.js.map +1 -1
  8. package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts +24 -1
  9. package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts.map +1 -1
  10. package/dist/agents/contextualiser/contexts/contextualiser.context.js +32 -0
  11. package/dist/agents/contextualiser/contexts/contextualiser.context.js.map +1 -1
  12. package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts +7 -0
  13. package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts.map +1 -1
  14. package/dist/agents/contextualiser/factories/contextualiser.context.factory.js +5 -0
  15. package/dist/agents/contextualiser/factories/contextualiser.context.factory.js.map +1 -1
  16. package/dist/agents/contextualiser/nodes/atomicfacts.node.service.d.ts.map +1 -1
  17. package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js +4 -0
  18. package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js.map +1 -1
  19. package/dist/agents/contextualiser/nodes/chunk.node.service.d.ts.map +1 -1
  20. package/dist/agents/contextualiser/nodes/chunk.node.service.js +4 -0
  21. package/dist/agents/contextualiser/nodes/chunk.node.service.js.map +1 -1
  22. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.d.ts.map +1 -1
  23. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js +15 -0
  24. package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js.map +1 -1
  25. package/dist/agents/contextualiser/nodes/keyconcepts.node.service.d.ts.map +1 -1
  26. package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js +11 -0
  27. package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js.map +1 -1
  28. package/dist/agents/contextualiser/nodes/question.refiner.node.service.d.ts.map +1 -1
  29. package/dist/agents/contextualiser/nodes/question.refiner.node.service.js +4 -0
  30. package/dist/agents/contextualiser/nodes/question.refiner.node.service.js.map +1 -1
  31. package/dist/agents/contextualiser/nodes/rational.node.service.d.ts.map +1 -1
  32. package/dist/agents/contextualiser/nodes/rational.node.service.js +4 -0
  33. package/dist/agents/contextualiser/nodes/rational.node.service.js.map +1 -1
  34. package/dist/agents/contextualiser/services/contextualiser.service.d.ts +7 -0
  35. package/dist/agents/contextualiser/services/contextualiser.service.d.ts.map +1 -1
  36. package/dist/agents/contextualiser/services/contextualiser.service.js +17 -5
  37. package/dist/agents/contextualiser/services/contextualiser.service.js.map +1 -1
  38. package/dist/agents/drift/contexts/drift.context.d.ts +25 -1
  39. package/dist/agents/drift/contexts/drift.context.d.ts.map +1 -1
  40. package/dist/agents/drift/contexts/drift.context.js +32 -0
  41. package/dist/agents/drift/contexts/drift.context.js.map +1 -1
  42. package/dist/agents/drift/nodes/followup.node.service.d.ts.map +1 -1
  43. package/dist/agents/drift/nodes/followup.node.service.js +4 -0
  44. package/dist/agents/drift/nodes/followup.node.service.js.map +1 -1
  45. package/dist/agents/drift/nodes/hyde.node.service.d.ts.map +1 -1
  46. package/dist/agents/drift/nodes/hyde.node.service.js +9 -1
  47. package/dist/agents/drift/nodes/hyde.node.service.js.map +1 -1
  48. package/dist/agents/drift/nodes/primer.answer.node.service.d.ts.map +1 -1
  49. package/dist/agents/drift/nodes/primer.answer.node.service.js +4 -0
  50. package/dist/agents/drift/nodes/primer.answer.node.service.js.map +1 -1
  51. package/dist/agents/drift/nodes/synthesis.node.service.d.ts.map +1 -1
  52. package/dist/agents/drift/nodes/synthesis.node.service.js +4 -0
  53. package/dist/agents/drift/nodes/synthesis.node.service.js.map +1 -1
  54. package/dist/agents/drift/services/drift.search.service.d.ts +9 -0
  55. package/dist/agents/drift/services/drift.search.service.d.ts.map +1 -1
  56. package/dist/agents/drift/services/drift.search.service.js +22 -5
  57. package/dist/agents/drift/services/drift.search.service.js.map +1 -1
  58. package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
  59. package/dist/agents/graph/services/graph.search.service.js +10 -1
  60. package/dist/agents/graph/services/graph.search.service.js.map +1 -1
  61. package/dist/agents/graph/tools/tool.factory.d.ts +6 -0
  62. package/dist/agents/graph/tools/tool.factory.d.ts.map +1 -1
  63. package/dist/agents/graph/tools/tool.factory.js.map +1 -1
  64. package/dist/agents/index.d.ts +7 -0
  65. package/dist/agents/index.d.ts.map +1 -1
  66. package/dist/agents/index.js +13 -1
  67. package/dist/agents/index.js.map +1 -1
  68. package/dist/agents/operator/contexts/operator.context.d.ts +37 -1
  69. package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
  70. package/dist/agents/operator/contexts/operator.context.js +8 -0
  71. package/dist/agents/operator/contexts/operator.context.js.map +1 -1
  72. package/dist/agents/operator/interfaces/operator.tool.interface.d.ts +8 -0
  73. package/dist/agents/operator/interfaces/operator.tool.interface.d.ts.map +1 -1
  74. package/dist/agents/operator/interfaces/operator.tool.interface.js.map +1 -1
  75. package/dist/agents/operator/services/operator.service.d.ts +8 -0
  76. package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
  77. package/dist/agents/operator/services/operator.service.js +29 -0
  78. package/dist/agents/operator/services/operator.service.js.map +1 -1
  79. package/dist/agents/operator/tools/operator.tool.registry.d.ts.map +1 -1
  80. package/dist/agents/operator/tools/operator.tool.registry.js +2 -1
  81. package/dist/agents/operator/tools/operator.tool.registry.js.map +1 -1
  82. package/dist/agents/operator/tools/search-communities.tool.d.ts +8 -2
  83. package/dist/agents/operator/tools/search-communities.tool.d.ts.map +1 -1
  84. package/dist/agents/operator/tools/search-communities.tool.js +16 -4
  85. package/dist/agents/operator/tools/search-communities.tool.js.map +1 -1
  86. package/dist/agents/operator/tools/search-documents.tool.d.ts.map +1 -1
  87. package/dist/agents/operator/tools/search-documents.tool.js +5 -0
  88. package/dist/agents/operator/tools/search-documents.tool.js.map +1 -1
  89. package/dist/agents/responder/contexts/responder.context.d.ts +31 -0
  90. package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
  91. package/dist/agents/responder/contexts/responder.context.js +8 -0
  92. package/dist/agents/responder/contexts/responder.context.js.map +1 -1
  93. package/dist/agents/responder/factories/responder.context.factory.d.ts +4 -0
  94. package/dist/agents/responder/factories/responder.context.factory.d.ts.map +1 -1
  95. package/dist/agents/responder/factories/responder.context.factory.js +2 -0
  96. package/dist/agents/responder/factories/responder.context.factory.js.map +1 -1
  97. package/dist/agents/responder/nodes/graph.node.service.d.ts +6 -0
  98. package/dist/agents/responder/nodes/graph.node.service.d.ts.map +1 -1
  99. package/dist/agents/responder/nodes/graph.node.service.js +20 -0
  100. package/dist/agents/responder/nodes/graph.node.service.js.map +1 -1
  101. package/dist/agents/responder/nodes/planner.node.service.d.ts.map +1 -1
  102. package/dist/agents/responder/nodes/planner.node.service.js +9 -0
  103. package/dist/agents/responder/nodes/planner.node.service.js.map +1 -1
  104. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
  105. package/dist/agents/responder/nodes/responder.answer.node.service.js +9 -0
  106. package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
  107. package/dist/agents/responder/services/responder.service.d.ts +16 -0
  108. package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
  109. package/dist/agents/responder/services/responder.service.js +29 -5
  110. package/dist/agents/responder/services/responder.service.js.map +1 -1
  111. package/dist/agents/summariser/services/summariser.service.d.ts +7 -0
  112. package/dist/agents/summariser/services/summariser.service.d.ts.map +1 -1
  113. package/dist/agents/summariser/services/summariser.service.js +15 -3
  114. package/dist/agents/summariser/services/summariser.service.js.map +1 -1
  115. package/dist/common/helpers/index.d.ts +1 -0
  116. package/dist/common/helpers/index.d.ts.map +1 -1
  117. package/dist/common/helpers/index.js +1 -0
  118. package/dist/common/helpers/index.js.map +1 -1
  119. package/dist/common/helpers/map-with-concurrency.d.ts +23 -0
  120. package/dist/common/helpers/map-with-concurrency.d.ts.map +1 -0
  121. package/dist/common/helpers/map-with-concurrency.js +60 -0
  122. package/dist/common/helpers/map-with-concurrency.js.map +1 -0
  123. package/dist/common/tokens.d.ts +2 -1
  124. package/dist/common/tokens.d.ts.map +1 -1
  125. package/dist/common/tokens.js +2 -1
  126. package/dist/common/tokens.js.map +1 -1
  127. package/dist/config/base.config.d.ts +19 -0
  128. package/dist/config/base.config.d.ts.map +1 -1
  129. package/dist/config/base.config.js +30 -3
  130. package/dist/config/base.config.js.map +1 -1
  131. package/dist/config/interfaces/config.ai.interface.d.ts +10 -1
  132. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  133. package/dist/config/interfaces/config.chunk.queues.interface.d.ts +13 -0
  134. package/dist/config/interfaces/config.chunk.queues.interface.d.ts.map +1 -1
  135. package/dist/config/interfaces/config.credits.interface.d.ts +1 -1
  136. package/dist/core/blocknote/services/blocknote.service.d.ts.map +1 -1
  137. package/dist/core/blocknote/services/blocknote.service.js +7 -0
  138. package/dist/core/blocknote/services/blocknote.service.js.map +1 -1
  139. package/dist/core/llm/services/audio.llm.service.d.ts +70 -1
  140. package/dist/core/llm/services/audio.llm.service.d.ts.map +1 -1
  141. package/dist/core/llm/services/audio.llm.service.js +118 -3
  142. package/dist/core/llm/services/audio.llm.service.js.map +1 -1
  143. package/dist/core/llm/services/document-ai.service.d.ts +6 -0
  144. package/dist/core/llm/services/document-ai.service.d.ts.map +1 -1
  145. package/dist/core/llm/services/document-ai.service.js +1 -0
  146. package/dist/core/llm/services/document-ai.service.js.map +1 -1
  147. package/dist/core/llm/services/embedder.service.d.ts +105 -0
  148. package/dist/core/llm/services/embedder.service.d.ts.map +1 -1
  149. package/dist/core/llm/services/embedder.service.js +237 -7
  150. package/dist/core/llm/services/embedder.service.js.map +1 -1
  151. package/dist/core/llm/services/llm.service.d.ts +103 -6
  152. package/dist/core/llm/services/llm.service.d.ts.map +1 -1
  153. package/dist/core/llm/services/llm.service.js +570 -148
  154. package/dist/core/llm/services/llm.service.js.map +1 -1
  155. package/dist/core/llm/services/model.service.d.ts +25 -0
  156. package/dist/core/llm/services/model.service.d.ts.map +1 -1
  157. package/dist/core/llm/services/model.service.js +76 -4
  158. package/dist/core/llm/services/model.service.js.map +1 -1
  159. package/dist/core/llm/utils/repair-truncated-json.d.ts +29 -0
  160. package/dist/core/llm/utils/repair-truncated-json.d.ts.map +1 -0
  161. package/dist/core/llm/utils/repair-truncated-json.js +111 -0
  162. package/dist/core/llm/utils/repair-truncated-json.js.map +1 -0
  163. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  164. package/dist/foundations/assistant/services/assistant.service.js +12 -0
  165. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  166. package/dist/foundations/atomicfact/services/atomicfact.service.d.ts +7 -0
  167. package/dist/foundations/atomicfact/services/atomicfact.service.d.ts.map +1 -1
  168. package/dist/foundations/atomicfact/services/atomicfact.service.js +6 -0
  169. package/dist/foundations/atomicfact/services/atomicfact.service.js.map +1 -1
  170. package/dist/foundations/chunk/processors/chunk.processor.d.ts.map +1 -1
  171. package/dist/foundations/chunk/processors/chunk.processor.js +7 -1
  172. package/dist/foundations/chunk/processors/chunk.processor.js.map +1 -1
  173. package/dist/foundations/chunk/repositories/chunk.repository.d.ts +90 -2
  174. package/dist/foundations/chunk/repositories/chunk.repository.d.ts.map +1 -1
  175. package/dist/foundations/chunk/repositories/chunk.repository.js +205 -31
  176. package/dist/foundations/chunk/repositories/chunk.repository.js.map +1 -1
  177. package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
  178. package/dist/foundations/chunk/services/chunk.service.js +50 -1
  179. package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
  180. package/dist/foundations/chunker/chunker.module.d.ts.map +1 -1
  181. package/dist/foundations/chunker/chunker.module.js +4 -1
  182. package/dist/foundations/chunker/chunker.module.js.map +1 -1
  183. package/dist/foundations/chunker/services/chunker.service.d.ts +57 -1
  184. package/dist/foundations/chunker/services/chunker.service.d.ts.map +1 -1
  185. package/dist/foundations/chunker/services/chunker.service.js +207 -16
  186. package/dist/foundations/chunker/services/chunker.service.js.map +1 -1
  187. package/dist/foundations/chunker/services/types/pdf.service.d.ts +42 -1
  188. package/dist/foundations/chunker/services/types/pdf.service.d.ts.map +1 -1
  189. package/dist/foundations/chunker/services/types/pdf.service.js +111 -22
  190. package/dist/foundations/chunker/services/types/pdf.service.js.map +1 -1
  191. package/dist/foundations/chunker/services/types/semanticsplitter.service.d.ts.map +1 -1
  192. package/dist/foundations/chunker/services/types/semanticsplitter.service.js +24 -3
  193. package/dist/foundations/chunker/services/types/semanticsplitter.service.js.map +1 -1
  194. package/dist/foundations/company/repositories/company.repository.d.ts +1 -1
  195. package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
  196. package/dist/foundations/company/repositories/company.repository.js +31 -14
  197. package/dist/foundations/company/repositories/company.repository.js.map +1 -1
  198. package/dist/foundations/how-to/processors/how-to.processor.d.ts.map +1 -1
  199. package/dist/foundations/how-to/processors/how-to.processor.js +20 -7
  200. package/dist/foundations/how-to/processors/how-to.processor.js.map +1 -1
  201. package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts +25 -1
  202. package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts.map +1 -1
  203. package/dist/foundations/keyconcept/repositories/keyconcept.repository.js +38 -2
  204. package/dist/foundations/keyconcept/repositories/keyconcept.repository.js.map +1 -1
  205. package/dist/foundations/keyconcept/services/keyconcept.service.d.ts +5 -0
  206. package/dist/foundations/keyconcept/services/keyconcept.service.d.ts.map +1 -1
  207. package/dist/foundations/keyconcept/services/keyconcept.service.js +4 -0
  208. package/dist/foundations/keyconcept/services/keyconcept.service.js.map +1 -1
  209. package/dist/foundations/tokenusage/entities/tokenusage.js +1 -1
  210. package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts +4 -1
  211. package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts.map +1 -1
  212. package/dist/foundations/tokenusage/enums/tokenusage.type.js +3 -0
  213. package/dist/foundations/tokenusage/enums/tokenusage.type.js.map +1 -1
  214. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +3 -3
  215. package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +2 -2
  216. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +6 -1
  217. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
  218. package/dist/foundations/tokenusage/services/tokenusage.service.js +7 -2
  219. package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
  220. 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;AAIzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qBACa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB,OAAO,CAAC,MAAM,CAA2C;IAEzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyF;IAClH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGlB,uBAAuB,EAAE,uBAAuB,EAChD,uBAAuB,EAAE,uBAAuB,EAChD,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAc7D,OAAO,CAAC,eAAe;YAWT,qBAAqB;YAQrB,aAAa;IAOrB,gCAAgC,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAmC7F,iBAAiB;YA4CjB,gBAAgB;YAkDhB,yBAAyB;IAkDjC,oCAAoC,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuBtG,qBAAqB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YA6CvD,sBAAsB;YA+CtB,mBAAmB;YAsBnB,eAAe;YAuCf,eAAe;YAoCf,eAAe;YAmCf,cAAc;CAgD7B"}
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
- return this._createChunksFromImage(params);
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
- return this._createFromEmail({
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
- return await splitter.createDocuments([markdown]);
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
- return await this.splitter.splitMarkdownToChunks({
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
- return await splitter.createDocuments([markdownContent]);
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
- extractPdfContent(pdfPath: string, options?: Partial<PdfProcessingOptions>): Promise<PdfContent[]>;
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;