@wanshi-kg/wanshi 0.1.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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +458 -0
  3. package/dist/__tests__/helpers.js +27 -0
  4. package/dist/__tests__/helpers.js.map +1 -0
  5. package/dist/cli/commands/export.command.js +99 -0
  6. package/dist/cli/commands/export.command.js.map +1 -0
  7. package/dist/cli/commands/index.js +22 -0
  8. package/dist/cli/commands/index.js.map +1 -0
  9. package/dist/cli/commands/inspectMerges.command.js +84 -0
  10. package/dist/cli/commands/inspectMerges.command.js.map +1 -0
  11. package/dist/cli/commands/metrics.command.js +196 -0
  12. package/dist/cli/commands/metrics.command.js.map +1 -0
  13. package/dist/cli/commands/process.command.js +82 -0
  14. package/dist/cli/commands/process.command.js.map +1 -0
  15. package/dist/cli/commands/watch.command.js +91 -0
  16. package/dist/cli/commands/watch.command.js.map +1 -0
  17. package/dist/cli/index.js +269 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/cli/optionsToConfig.js +160 -0
  20. package/dist/cli/optionsToConfig.js.map +1 -0
  21. package/dist/config/index.js +59 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/config/legacyHints.js +113 -0
  24. package/dist/config/legacyHints.js.map +1 -0
  25. package/dist/config/schema.js +803 -0
  26. package/dist/config/schema.js.map +1 -0
  27. package/dist/config/ui.js +221 -0
  28. package/dist/config/ui.js.map +1 -0
  29. package/dist/core/DirectoryProcessor.js +725 -0
  30. package/dist/core/DirectoryProcessor.js.map +1 -0
  31. package/dist/core/adapters/IStructuredAdapter.js +3 -0
  32. package/dist/core/adapters/IStructuredAdapter.js.map +1 -0
  33. package/dist/core/adapters/SqliteAdapter.js +267 -0
  34. package/dist/core/adapters/SqliteAdapter.js.map +1 -0
  35. package/dist/core/adapters/StructuredAdapterRegistry.js +31 -0
  36. package/dist/core/adapters/StructuredAdapterRegistry.js.map +1 -0
  37. package/dist/core/adapters/index.js +20 -0
  38. package/dist/core/adapters/index.js.map +1 -0
  39. package/dist/core/checkpoint/CheckpointService.js +188 -0
  40. package/dist/core/checkpoint/CheckpointService.js.map +1 -0
  41. package/dist/core/checkpoint/index.js +18 -0
  42. package/dist/core/checkpoint/index.js.map +1 -0
  43. package/dist/core/corpus/CorpusAnalyzer.js +266 -0
  44. package/dist/core/corpus/CorpusAnalyzer.js.map +1 -0
  45. package/dist/core/corpus/CorpusProfileStore.js +92 -0
  46. package/dist/core/corpus/CorpusProfileStore.js.map +1 -0
  47. package/dist/core/corpus/index.js +21 -0
  48. package/dist/core/corpus/index.js.map +1 -0
  49. package/dist/core/corpus/normalizeGlossary.js +60 -0
  50. package/dist/core/corpus/normalizeGlossary.js.map +1 -0
  51. package/dist/core/corpus/relPath.js +52 -0
  52. package/dist/core/corpus/relPath.js.map +1 -0
  53. package/dist/core/corpus/termFrequency.js +86 -0
  54. package/dist/core/corpus/termFrequency.js.map +1 -0
  55. package/dist/core/cost/CostMeter.js +235 -0
  56. package/dist/core/cost/CostMeter.js.map +1 -0
  57. package/dist/core/cost/index.js +19 -0
  58. package/dist/core/cost/index.js.map +1 -0
  59. package/dist/core/cost/prices.js +38 -0
  60. package/dist/core/cost/prices.js.map +1 -0
  61. package/dist/core/cv/ObjectDetectionService.js +119 -0
  62. package/dist/core/cv/ObjectDetectionService.js.map +1 -0
  63. package/dist/core/di/ContainerFactory.js +670 -0
  64. package/dist/core/di/ContainerFactory.js.map +1 -0
  65. package/dist/core/di/DIContainer.js +103 -0
  66. package/dist/core/di/DIContainer.js.map +1 -0
  67. package/dist/core/di/index.js +19 -0
  68. package/dist/core/di/index.js.map +1 -0
  69. package/dist/core/errors/CustomErrors.js +342 -0
  70. package/dist/core/errors/CustomErrors.js.map +1 -0
  71. package/dist/core/errors/index.js +18 -0
  72. package/dist/core/errors/index.js.map +1 -0
  73. package/dist/core/export/KnowledgeGraphExportService.js +56 -0
  74. package/dist/core/export/KnowledgeGraphExportService.js.map +1 -0
  75. package/dist/core/export/index.js +19 -0
  76. package/dist/core/export/index.js.map +1 -0
  77. package/dist/core/export/strategies/GraphitiExportStrategy.js +115 -0
  78. package/dist/core/export/strategies/GraphitiExportStrategy.js.map +1 -0
  79. package/dist/core/export/strategies/GraphvizDotExportStrategy.js +331 -0
  80. package/dist/core/export/strategies/GraphvizDotExportStrategy.js.map +1 -0
  81. package/dist/core/export/strategies/IExportStrategy.js +3 -0
  82. package/dist/core/export/strategies/IExportStrategy.js.map +1 -0
  83. package/dist/core/export/strategies/JsonExportStrategy.js +19 -0
  84. package/dist/core/export/strategies/JsonExportStrategy.js.map +1 -0
  85. package/dist/core/export/strategies/JsonlExportStrategy.js +69 -0
  86. package/dist/core/export/strategies/JsonlExportStrategy.js.map +1 -0
  87. package/dist/core/export/strategies/KblamExportStrategy.js +36 -0
  88. package/dist/core/export/strategies/KblamExportStrategy.js.map +1 -0
  89. package/dist/core/export/strategies/LoraExportStrategy.js +46 -0
  90. package/dist/core/export/strategies/LoraExportStrategy.js.map +1 -0
  91. package/dist/core/export/strategies/McpExportStrategy.js +67 -0
  92. package/dist/core/export/strategies/McpExportStrategy.js.map +1 -0
  93. package/dist/core/export/strategies/index.js +25 -0
  94. package/dist/core/export/strategies/index.js.map +1 -0
  95. package/dist/core/export/strategies/kbTriples.js +60 -0
  96. package/dist/core/export/strategies/kbTriples.js.map +1 -0
  97. package/dist/core/index.js +22 -0
  98. package/dist/core/index.js.map +1 -0
  99. package/dist/core/knowledge/KnowledgeGraphBuilder.js +627 -0
  100. package/dist/core/knowledge/KnowledgeGraphBuilder.js.map +1 -0
  101. package/dist/core/knowledge/MergeRecord.js +3 -0
  102. package/dist/core/knowledge/MergeRecord.js.map +1 -0
  103. package/dist/core/knowledge/canon/Canonicalizer.js +414 -0
  104. package/dist/core/knowledge/canon/Canonicalizer.js.map +1 -0
  105. package/dist/core/knowledge/canon/index.js +18 -0
  106. package/dist/core/knowledge/canon/index.js.map +1 -0
  107. package/dist/core/knowledge/contradiction/HeuristicContradictionChecker.js +92 -0
  108. package/dist/core/knowledge/contradiction/HeuristicContradictionChecker.js.map +1 -0
  109. package/dist/core/knowledge/contradiction/LlmContradictionChecker.js +52 -0
  110. package/dist/core/knowledge/contradiction/LlmContradictionChecker.js.map +1 -0
  111. package/dist/core/knowledge/contradiction/index.js +19 -0
  112. package/dist/core/knowledge/contradiction/index.js.map +1 -0
  113. package/dist/core/knowledge/grounding/KeywordGroundingChecker.js +33 -0
  114. package/dist/core/knowledge/grounding/KeywordGroundingChecker.js.map +1 -0
  115. package/dist/core/knowledge/grounding/MiniCheckGroundingChecker.js +82 -0
  116. package/dist/core/knowledge/grounding/MiniCheckGroundingChecker.js.map +1 -0
  117. package/dist/core/knowledge/grounding/index.js +20 -0
  118. package/dist/core/knowledge/grounding/index.js.map +1 -0
  119. package/dist/core/knowledge/grounding/verbalize.js +38 -0
  120. package/dist/core/knowledge/grounding/verbalize.js.map +1 -0
  121. package/dist/core/knowledge/images/imageMetaGraph.js +136 -0
  122. package/dist/core/knowledge/images/imageMetaGraph.js.map +1 -0
  123. package/dist/core/knowledge/index.js +20 -0
  124. package/dist/core/knowledge/index.js.map +1 -0
  125. package/dist/core/knowledge/merging/KnowledgeMerger.js +624 -0
  126. package/dist/core/knowledge/merging/KnowledgeMerger.js.map +1 -0
  127. package/dist/core/knowledge/references/ReferenceResolver.js +184 -0
  128. package/dist/core/knowledge/references/ReferenceResolver.js.map +1 -0
  129. package/dist/core/knowledge/references/citations/CitationEvidenceProcessor.js +401 -0
  130. package/dist/core/knowledge/references/citations/CitationEvidenceProcessor.js.map +1 -0
  131. package/dist/core/knowledge/references/citations/CitationResolver.js +95 -0
  132. package/dist/core/knowledge/references/citations/CitationResolver.js.map +1 -0
  133. package/dist/core/knowledge/references/citations/GrobidClient.js +143 -0
  134. package/dist/core/knowledge/references/citations/GrobidClient.js.map +1 -0
  135. package/dist/core/knowledge/references/citations/TitleIdResolver.js +101 -0
  136. package/dist/core/knowledge/references/citations/TitleIdResolver.js.map +1 -0
  137. package/dist/core/knowledge/references/web/FetchCacheService.js +114 -0
  138. package/dist/core/knowledge/references/web/FetchCacheService.js.map +1 -0
  139. package/dist/core/knowledge/references/web/GatedFetcher.js +228 -0
  140. package/dist/core/knowledge/references/web/GatedFetcher.js.map +1 -0
  141. package/dist/core/knowledge/references/web/WebReferenceProcessor.js +164 -0
  142. package/dist/core/knowledge/references/web/WebReferenceProcessor.js.map +1 -0
  143. package/dist/core/knowledge/search/KnowledgeGraphSearch.js +261 -0
  144. package/dist/core/knowledge/search/KnowledgeGraphSearch.js.map +1 -0
  145. package/dist/core/knowledge/vocabulary.js +162 -0
  146. package/dist/core/knowledge/vocabulary.js.map +1 -0
  147. package/dist/core/llm/EmbeddingService.js +113 -0
  148. package/dist/core/llm/EmbeddingService.js.map +1 -0
  149. package/dist/core/llm/OllamaService.js +146 -0
  150. package/dist/core/llm/OllamaService.js.map +1 -0
  151. package/dist/core/llm/OpenAICompatibleService.js +190 -0
  152. package/dist/core/llm/OpenAICompatibleService.js.map +1 -0
  153. package/dist/core/llm/OpenAIEmbeddingService.js +129 -0
  154. package/dist/core/llm/OpenAIEmbeddingService.js.map +1 -0
  155. package/dist/core/llm/embeddingUtils.js +25 -0
  156. package/dist/core/llm/embeddingUtils.js.map +1 -0
  157. package/dist/core/llm/index.js +23 -0
  158. package/dist/core/llm/index.js.map +1 -0
  159. package/dist/core/llm/prompts/PromptManager.js +388 -0
  160. package/dist/core/llm/prompts/PromptManager.js.map +1 -0
  161. package/dist/core/llm/prompts/PromptTemplateEngine.js +257 -0
  162. package/dist/core/llm/prompts/PromptTemplateEngine.js.map +1 -0
  163. package/dist/core/llm/prompts/templates/partials/examples/EXAMPLE_STYLE_GUIDE.md +84 -0
  164. package/dist/core/llm/prompts/templates/partials/examples/article.md +187 -0
  165. package/dist/core/llm/prompts/templates/partials/examples/code.md +229 -0
  166. package/dist/core/llm/prompts/templates/partials/examples/communication.md +205 -0
  167. package/dist/core/llm/prompts/templates/partials/examples/documentation.md +262 -0
  168. package/dist/core/llm/prompts/templates/partials/examples/financial.md +157 -0
  169. package/dist/core/llm/prompts/templates/partials/examples/legal.md +153 -0
  170. package/dist/core/llm/prompts/templates/partials/examples/logs.md +127 -0
  171. package/dist/core/llm/prompts/templates/partials/examples/medical.md +218 -0
  172. package/dist/core/llm/prompts/templates/partials/examples/notes.md +201 -0
  173. package/dist/core/llm/prompts/templates/partials/examples/research.md +208 -0
  174. package/dist/core/llm/prompts/templates/partials/examples/tabular.md +178 -0
  175. package/dist/core/llm/prompts/templates/partials/examples/transcript.md +204 -0
  176. package/dist/core/llm/prompts/templates/partials/retrieved-context.hbs +18 -0
  177. package/dist/core/llm/prompts/templates/v1/system.hbs +371 -0
  178. package/dist/core/llm/prompts/templates/v1/user.hbs +20 -0
  179. package/dist/core/llm/prompts/templates/v2/system.hbs +573 -0
  180. package/dist/core/llm/prompts/templates/v2/user.hbs +20 -0
  181. package/dist/core/llm/prompts/templates/v3/system.hbs +861 -0
  182. package/dist/core/llm/prompts/templates/v3/user.hbs +16 -0
  183. package/dist/core/llm/prompts/templates/v4/system.hbs +800 -0
  184. package/dist/core/llm/prompts/templates/v4/user.hbs +40 -0
  185. package/dist/core/llm/prompts/templates/v4.5/system.hbs +71 -0
  186. package/dist/core/llm/prompts/templates/v4.5/user.hbs +46 -0
  187. package/dist/core/llm/prompts/templates/v5/glossary/system.hbs +40 -0
  188. package/dist/core/llm/prompts/templates/v5/glossary/user.hbs +11 -0
  189. package/dist/core/llm/prompts/templates/v5/system.hbs +163 -0
  190. package/dist/core/llm/prompts/templates/v5/user.hbs +55 -0
  191. package/dist/core/pipeline/GroundingTransform.js +52 -0
  192. package/dist/core/pipeline/GroundingTransform.js.map +1 -0
  193. package/dist/core/pipeline/PipelineRunner.js +51 -0
  194. package/dist/core/pipeline/PipelineRunner.js.map +1 -0
  195. package/dist/core/pipeline/RelationFilterTransform.js +72 -0
  196. package/dist/core/pipeline/RelationFilterTransform.js.map +1 -0
  197. package/dist/core/pipeline/index.js +20 -0
  198. package/dist/core/pipeline/index.js.map +1 -0
  199. package/dist/core/processor/FileProcessor.js +184 -0
  200. package/dist/core/processor/FileProcessor.js.map +1 -0
  201. package/dist/core/processor/ProcessedRegistry.js +38 -0
  202. package/dist/core/processor/ProcessedRegistry.js.map +1 -0
  203. package/dist/core/processor/ast/AstSeedService.js +0 -0
  204. package/dist/core/processor/ast/AstSeedService.js.map +1 -0
  205. package/dist/core/processor/ast/AstSymbolStore.js +110 -0
  206. package/dist/core/processor/ast/AstSymbolStore.js.map +1 -0
  207. package/dist/core/processor/ast/index.js +19 -0
  208. package/dist/core/processor/ast/index.js.map +1 -0
  209. package/dist/core/processor/chunking/TextChunker.js +98 -0
  210. package/dist/core/processor/chunking/TextChunker.js.map +1 -0
  211. package/dist/core/processor/chunking/index.js +18 -0
  212. package/dist/core/processor/chunking/index.js.map +1 -0
  213. package/dist/core/processor/classifier/CONTENT_CLASSES.js +294 -0
  214. package/dist/core/processor/classifier/CONTENT_CLASSES.js.map +1 -0
  215. package/dist/core/processor/classifier/CascadeContentClassifier.js +107 -0
  216. package/dist/core/processor/classifier/CascadeContentClassifier.js.map +1 -0
  217. package/dist/core/processor/classifier/HeuristicContentClassifier.js +113 -0
  218. package/dist/core/processor/classifier/HeuristicContentClassifier.js.map +1 -0
  219. package/dist/core/processor/classifier/IContentTypeClassifier.js +3 -0
  220. package/dist/core/processor/classifier/IContentTypeClassifier.js.map +1 -0
  221. package/dist/core/processor/classifier/LlmContentClassifier.js +107 -0
  222. package/dist/core/processor/classifier/LlmContentClassifier.js.map +1 -0
  223. package/dist/core/processor/classifier/NER_DOMAIN_EXAMPLES.js +498 -0
  224. package/dist/core/processor/classifier/NER_DOMAIN_EXAMPLES.js.map +1 -0
  225. package/dist/core/processor/classifier/index.js +21 -0
  226. package/dist/core/processor/classifier/index.js.map +1 -0
  227. package/dist/core/processor/classifier/mergeClassifications.js +32 -0
  228. package/dist/core/processor/classifier/mergeClassifications.js.map +1 -0
  229. package/dist/core/processor/index.js +20 -0
  230. package/dist/core/processor/index.js.map +1 -0
  231. package/dist/core/processor/readers/AudioReader.js +462 -0
  232. package/dist/core/processor/readers/AudioReader.js.map +1 -0
  233. package/dist/core/processor/readers/BinaryReader.js +90 -0
  234. package/dist/core/processor/readers/BinaryReader.js.map +1 -0
  235. package/dist/core/processor/readers/ChandraPdfReader.js +187 -0
  236. package/dist/core/processor/readers/ChandraPdfReader.js.map +1 -0
  237. package/dist/core/processor/readers/ChatExportReader.js +365 -0
  238. package/dist/core/processor/readers/ChatExportReader.js.map +1 -0
  239. package/dist/core/processor/readers/DoclingReader.js +445 -0
  240. package/dist/core/processor/readers/DoclingReader.js.map +1 -0
  241. package/dist/core/processor/readers/EmailReader.js +259 -0
  242. package/dist/core/processor/readers/EmailReader.js.map +1 -0
  243. package/dist/core/processor/readers/EpubReader.js +175 -0
  244. package/dist/core/processor/readers/EpubReader.js.map +1 -0
  245. package/dist/core/processor/readers/FileReader.js +90 -0
  246. package/dist/core/processor/readers/FileReader.js.map +1 -0
  247. package/dist/core/processor/readers/FileReaderFactory.js +49 -0
  248. package/dist/core/processor/readers/FileReaderFactory.js.map +1 -0
  249. package/dist/core/processor/readers/HtmlReader.js +371 -0
  250. package/dist/core/processor/readers/HtmlReader.js.map +1 -0
  251. package/dist/core/processor/readers/ImageReader.js +162 -0
  252. package/dist/core/processor/readers/ImageReader.js.map +1 -0
  253. package/dist/core/processor/readers/JsonFileReader.js +232 -0
  254. package/dist/core/processor/readers/JsonFileReader.js.map +1 -0
  255. package/dist/core/processor/readers/JupyterReader.js +178 -0
  256. package/dist/core/processor/readers/JupyterReader.js.map +1 -0
  257. package/dist/core/processor/readers/LatexReader.js +176 -0
  258. package/dist/core/processor/readers/LatexReader.js.map +1 -0
  259. package/dist/core/processor/readers/MarkdownReader.js +289 -0
  260. package/dist/core/processor/readers/MarkdownReader.js.map +1 -0
  261. package/dist/core/processor/readers/MarkerPdfReader.js +193 -0
  262. package/dist/core/processor/readers/MarkerPdfReader.js.map +1 -0
  263. package/dist/core/processor/readers/MistralOcrReader.js +198 -0
  264. package/dist/core/processor/readers/MistralOcrReader.js.map +1 -0
  265. package/dist/core/processor/readers/OfficeReader.js +174 -0
  266. package/dist/core/processor/readers/OfficeReader.js.map +1 -0
  267. package/dist/core/processor/readers/PdfReader.js +116 -0
  268. package/dist/core/processor/readers/PdfReader.js.map +1 -0
  269. package/dist/core/processor/readers/RtfReader.js +107 -0
  270. package/dist/core/processor/readers/RtfReader.js.map +1 -0
  271. package/dist/core/processor/readers/SubtitleReader.js +145 -0
  272. package/dist/core/processor/readers/SubtitleReader.js.map +1 -0
  273. package/dist/core/processor/readers/TesseractPdfReader.js +183 -0
  274. package/dist/core/processor/readers/TesseractPdfReader.js.map +1 -0
  275. package/dist/core/processor/readers/TextReader.js +129 -0
  276. package/dist/core/processor/readers/TextReader.js.map +1 -0
  277. package/dist/core/processor/readers/TranscriptReader.js +234 -0
  278. package/dist/core/processor/readers/TranscriptReader.js.map +1 -0
  279. package/dist/core/processor/readers/image/imageMetadata.js +155 -0
  280. package/dist/core/processor/readers/image/imageMetadata.js.map +1 -0
  281. package/dist/core/processor/readers/index.js +41 -0
  282. package/dist/core/processor/readers/index.js.map +1 -0
  283. package/dist/core/processor/readers/referenceExtraction.js +198 -0
  284. package/dist/core/processor/readers/referenceExtraction.js.map +1 -0
  285. package/dist/core/processor/readers/stripReferences.js +59 -0
  286. package/dist/core/processor/readers/stripReferences.js.map +1 -0
  287. package/dist/core/processor/readers/transcript/turnPacking.js +81 -0
  288. package/dist/core/processor/readers/transcript/turnPacking.js.map +1 -0
  289. package/dist/core/progress/NdjsonProgressEmitter.js +30 -0
  290. package/dist/core/progress/NdjsonProgressEmitter.js.map +1 -0
  291. package/dist/core/progress/NoopProgressEmitter.js +15 -0
  292. package/dist/core/progress/NoopProgressEmitter.js.map +1 -0
  293. package/dist/core/progress/index.js +19 -0
  294. package/dist/core/progress/index.js.map +1 -0
  295. package/dist/core/trace/TraceWriter.js +100 -0
  296. package/dist/core/trace/TraceWriter.js.map +1 -0
  297. package/dist/core/trace/events.js +13 -0
  298. package/dist/core/trace/events.js.map +1 -0
  299. package/dist/core/trace/index.js +20 -0
  300. package/dist/core/trace/index.js.map +1 -0
  301. package/dist/core/trace/lineage.js +97 -0
  302. package/dist/core/trace/lineage.js.map +1 -0
  303. package/dist/evaluation/BenchmarkRunner.js +171 -0
  304. package/dist/evaluation/BenchmarkRunner.js.map +1 -0
  305. package/dist/evaluation/classifier/ClassifierAccuracy.js +185 -0
  306. package/dist/evaluation/classifier/ClassifierAccuracy.js.map +1 -0
  307. package/dist/evaluation/classifier/labeledSamples.js +379 -0
  308. package/dist/evaluation/classifier/labeledSamples.js.map +1 -0
  309. package/dist/evaluation/compare/goldCompare.js +126 -0
  310. package/dist/evaluation/compare/goldCompare.js.map +1 -0
  311. package/dist/evaluation/crossre/compareScoring.js +30 -0
  312. package/dist/evaluation/crossre/compareScoring.js.map +1 -0
  313. package/dist/evaluation/datasets/CrossREDataset.js +170 -0
  314. package/dist/evaluation/datasets/CrossREDataset.js.map +1 -0
  315. package/dist/evaluation/datasets/IDataset.js +3 -0
  316. package/dist/evaluation/datasets/IDataset.js.map +1 -0
  317. package/dist/evaluation/datasets/RebelDataset.js +117 -0
  318. package/dist/evaluation/datasets/RebelDataset.js.map +1 -0
  319. package/dist/evaluation/datasets/RedocredDataset.js +218 -0
  320. package/dist/evaluation/datasets/RedocredDataset.js.map +1 -0
  321. package/dist/evaluation/datasets/SemEval2010Dataset.js +150 -0
  322. package/dist/evaluation/datasets/SemEval2010Dataset.js.map +1 -0
  323. package/dist/evaluation/index.js +33 -0
  324. package/dist/evaluation/index.js.map +1 -0
  325. package/dist/evaluation/matching/ExactMatcher.js +75 -0
  326. package/dist/evaluation/matching/ExactMatcher.js.map +1 -0
  327. package/dist/evaluation/matching/SemanticMatcher.js +143 -0
  328. package/dist/evaluation/matching/SemanticMatcher.js.map +1 -0
  329. package/dist/evaluation/metrics/TripleMetrics.js +64 -0
  330. package/dist/evaluation/metrics/TripleMetrics.js.map +1 -0
  331. package/dist/evaluation/mine/MineCheckpoint.js +114 -0
  332. package/dist/evaluation/mine/MineCheckpoint.js.map +1 -0
  333. package/dist/evaluation/mine/MineDataset.js +208 -0
  334. package/dist/evaluation/mine/MineDataset.js.map +1 -0
  335. package/dist/evaluation/mine/MineReporter.js +98 -0
  336. package/dist/evaluation/mine/MineReporter.js.map +1 -0
  337. package/dist/evaluation/mine/MineRunner.js +148 -0
  338. package/dist/evaluation/mine/MineRunner.js.map +1 -0
  339. package/dist/evaluation/mine/MineScorer.js +127 -0
  340. package/dist/evaluation/mine/MineScorer.js.map +1 -0
  341. package/dist/evaluation/mine/types.js +12 -0
  342. package/dist/evaluation/mine/types.js.map +1 -0
  343. package/dist/evaluation/reporters/ConsoleReporter.js +55 -0
  344. package/dist/evaluation/reporters/ConsoleReporter.js.map +1 -0
  345. package/dist/evaluation/reporters/JsonReporter.js +50 -0
  346. package/dist/evaluation/reporters/JsonReporter.js.map +1 -0
  347. package/dist/index.js +28 -0
  348. package/dist/index.js.map +1 -0
  349. package/dist/quality/CompositeScore.js +61 -0
  350. package/dist/quality/CompositeScore.js.map +1 -0
  351. package/dist/quality/ConsistencyMetrics.js +70 -0
  352. package/dist/quality/ConsistencyMetrics.js.map +1 -0
  353. package/dist/quality/FactualMetrics.js +76 -0
  354. package/dist/quality/FactualMetrics.js.map +1 -0
  355. package/dist/quality/GraphHealthMetrics.js +68 -0
  356. package/dist/quality/GraphHealthMetrics.js.map +1 -0
  357. package/dist/quality/SemanticMetrics.js +102 -0
  358. package/dist/quality/SemanticMetrics.js.map +1 -0
  359. package/dist/quality/StructuralMetrics.js +60 -0
  360. package/dist/quality/StructuralMetrics.js.map +1 -0
  361. package/dist/quality/index.js +23 -0
  362. package/dist/quality/index.js.map +1 -0
  363. package/dist/shared/index.js +20 -0
  364. package/dist/shared/index.js.map +1 -0
  365. package/dist/shared/logger/Logger.js +3 -0
  366. package/dist/shared/logger/Logger.js.map +1 -0
  367. package/dist/shared/logger/LoggerFactory.js +75 -0
  368. package/dist/shared/logger/LoggerFactory.js.map +1 -0
  369. package/dist/shared/logger/index.js +19 -0
  370. package/dist/shared/logger/index.js.map +1 -0
  371. package/dist/shared/shutdown.js +30 -0
  372. package/dist/shared/shutdown.js.map +1 -0
  373. package/dist/shared/utils/agglomerativeCluster.js +269 -0
  374. package/dist/shared/utils/agglomerativeCluster.js.map +1 -0
  375. package/dist/shared/utils/astSymbols.js +69 -0
  376. package/dist/shared/utils/astSymbols.js.map +1 -0
  377. package/dist/shared/utils/cosineSimilarity.js +18 -0
  378. package/dist/shared/utils/cosineSimilarity.js.map +1 -0
  379. package/dist/shared/utils/directoryTree.js +184 -0
  380. package/dist/shared/utils/directoryTree.js.map +1 -0
  381. package/dist/shared/utils/documentOutline.js +74 -0
  382. package/dist/shared/utils/documentOutline.js.map +1 -0
  383. package/dist/shared/utils/index.js +24 -0
  384. package/dist/shared/utils/index.js.map +1 -0
  385. package/dist/shared/utils/jaroWinklerSimilarity.js +60 -0
  386. package/dist/shared/utils/jaroWinklerSimilarity.js.map +1 -0
  387. package/dist/shared/utils/parseJsonLenient.js +27 -0
  388. package/dist/shared/utils/parseJsonLenient.js.map +1 -0
  389. package/dist/shared/utils/readConfig.js +42 -0
  390. package/dist/shared/utils/readConfig.js.map +1 -0
  391. package/dist/shared/utils/readRtf.js +216 -0
  392. package/dist/shared/utils/readRtf.js.map +1 -0
  393. package/dist/shared/utils/softmax.js +26 -0
  394. package/dist/shared/utils/softmax.js.map +1 -0
  395. package/dist/types/ContentClass.js +3 -0
  396. package/dist/types/ContentClass.js.map +1 -0
  397. package/dist/types/CorpusProfile.js +3 -0
  398. package/dist/types/CorpusProfile.js.map +1 -0
  399. package/dist/types/IContradictionChecker.js +3 -0
  400. package/dist/types/IContradictionChecker.js.map +1 -0
  401. package/dist/types/ICorpusAnalyzer.js +3 -0
  402. package/dist/types/ICorpusAnalyzer.js.map +1 -0
  403. package/dist/types/IDirectoryProcessor.js +3 -0
  404. package/dist/types/IDirectoryProcessor.js.map +1 -0
  405. package/dist/types/IEmbeddingProvider.js +3 -0
  406. package/dist/types/IEmbeddingProvider.js.map +1 -0
  407. package/dist/types/IEmbeddingService.js +6 -0
  408. package/dist/types/IEmbeddingService.js.map +1 -0
  409. package/dist/types/IFileProcessor.js +3 -0
  410. package/dist/types/IFileProcessor.js.map +1 -0
  411. package/dist/types/IGroundingChecker.js +3 -0
  412. package/dist/types/IGroundingChecker.js.map +1 -0
  413. package/dist/types/IKnowledgeGraphBuilder.js +3 -0
  414. package/dist/types/IKnowledgeGraphBuilder.js.map +1 -0
  415. package/dist/types/IKnowledgeGraphExporter.js +3 -0
  416. package/dist/types/IKnowledgeGraphExporter.js.map +1 -0
  417. package/dist/types/IKnowledgeGraphMerger.js +3 -0
  418. package/dist/types/IKnowledgeGraphMerger.js.map +1 -0
  419. package/dist/types/IKnowledgeGraphSearch.js +3 -0
  420. package/dist/types/IKnowledgeGraphSearch.js.map +1 -0
  421. package/dist/types/ILLMProvider.js +3 -0
  422. package/dist/types/ILLMProvider.js.map +1 -0
  423. package/dist/types/ILLMService.js +3 -0
  424. package/dist/types/ILLMService.js.map +1 -0
  425. package/dist/types/IObjectDetector.js +3 -0
  426. package/dist/types/IObjectDetector.js.map +1 -0
  427. package/dist/types/IProcessingService.js +3 -0
  428. package/dist/types/IProcessingService.js.map +1 -0
  429. package/dist/types/IProgressEmitter.js +3 -0
  430. package/dist/types/IProgressEmitter.js.map +1 -0
  431. package/dist/types/IPromptManager.js +3 -0
  432. package/dist/types/IPromptManager.js.map +1 -0
  433. package/dist/types/KnowledgeGraph.js +3 -0
  434. package/dist/types/KnowledgeGraph.js.map +1 -0
  435. package/dist/types/MCPKnowledgeGraph.js +3 -0
  436. package/dist/types/MCPKnowledgeGraph.js.map +1 -0
  437. package/dist/types/Observation.js +21 -0
  438. package/dist/types/Observation.js.map +1 -0
  439. package/dist/types/ProcessingOptions.js +3 -0
  440. package/dist/types/ProcessingOptions.js.map +1 -0
  441. package/dist/types/index.js +40 -0
  442. package/dist/types/index.js.map +1 -0
  443. package/package.json +122 -0
@@ -0,0 +1,388 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.PromptManager = void 0;
46
+ const path = __importStar(require("path"));
47
+ const fs = __importStar(require("fs"));
48
+ const PromptTemplateEngine_1 = require("./PromptTemplateEngine");
49
+ const vocabulary_1 = require("../../knowledge/vocabulary");
50
+ /** Maps content class to its example partial filename */
51
+ const CLASS_TO_PARTIAL = {
52
+ code: 'code.md',
53
+ financial: 'financial.md',
54
+ medical: 'medical.md',
55
+ legal: 'legal.md',
56
+ technical: 'logs.md',
57
+ research: 'research.md',
58
+ transcript: 'transcript.md',
59
+ tabular: 'tabular.md',
60
+ communication: 'communication.md',
61
+ documentation: 'documentation.md',
62
+ narrative: 'article.md',
63
+ reference: 'notes.md',
64
+ };
65
+ /**
66
+ * Manages prompt templates using Handlebars templating
67
+ */
68
+ class PromptManager {
69
+ constructor(logger, templatesDir, outlineOptions) {
70
+ this.systemPromptVersion = 'v5';
71
+ /** Cache of loaded domain example partial contents keyed by filename */
72
+ this.domainPartialCache = new Map();
73
+ this.logger = logger;
74
+ this.templateEngine = new PromptTemplateEngine_1.PromptTemplateEngine(logger, outlineOptions);
75
+ this.templatesDir = templatesDir || path.join(__dirname, 'templates');
76
+ this.ready = this.initializeTemplates();
77
+ }
78
+ /**
79
+ * Initialize templates and partials
80
+ */
81
+ initializeTemplates() {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ try {
84
+ const partialsDir = path.join(this.templatesDir, 'partials');
85
+ yield this.templateEngine.registerPartials(partialsDir);
86
+ this.logger.info('Prompt templates initialized');
87
+ }
88
+ catch (error) {
89
+ this.logger.error(`Failed to initialize templates: ${error}`);
90
+ }
91
+ });
92
+ }
93
+ /**
94
+ * Override the prompt template version (default: 'v5').
95
+ * Must match a directory under src/core/llm/prompts/templates/.
96
+ */
97
+ setPromptVersion(version) {
98
+ this.systemPromptVersion = version;
99
+ this.logger.info(`Using prompt version: ${version}`);
100
+ }
101
+ /**
102
+ * Set a custom system prompt
103
+ */
104
+ setCustomSystemPrompt(prompt) {
105
+ this.customSystemPrompt = prompt;
106
+ this.logger.info('Using custom system prompt');
107
+ }
108
+ /**
109
+ * Get the system prompt, optionally enriched with domain-specific examples
110
+ */
111
+ getSystemPrompt(input, filter, description, contentClasses, glossary, openVocabulary) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ var _a, _b;
114
+ if (this.customSystemPrompt) {
115
+ return this.customSystemPrompt;
116
+ }
117
+ yield this.ready; // partials registered before first render (KG-16)
118
+ try {
119
+ const templatePath = path.join(this.templatesDir, this.systemPromptVersion, 'system.hbs');
120
+ const context = {
121
+ inputDirectory: input,
122
+ filter: filter,
123
+ userDescription: description,
124
+ };
125
+ // Open-vocabulary mode (the canonicalization-tax arm): suppress every vocab
126
+ // constraint so the template renders "use any concise predicate" instead of a
127
+ // closed/base set — mirrors the builder dropping the Zod enum. Overrides the
128
+ // glossary (free predicates win over a controlled set).
129
+ if (openVocabulary) {
130
+ context.openVocabulary = true;
131
+ }
132
+ else {
133
+ // Promote the corpus glossary to the *authoritative* closed vocabularies
134
+ // rendered in the system prompt (v5). Absent → the template falls back to
135
+ // its base entity/relation vocab. Names stay in the user prompt.
136
+ if ((_a = glossary === null || glossary === void 0 ? void 0 : glossary.entityTypes) === null || _a === void 0 ? void 0 : _a.length) {
137
+ context.entityTypeVocabulary = glossary.entityTypes.join(', ');
138
+ }
139
+ if ((_b = glossary === null || glossary === void 0 ? void 0 : glossary.relationTypes) === null || _b === void 0 ? void 0 : _b.length) {
140
+ context.relationTypeVocabulary = glossary.relationTypes.join(', ');
141
+ }
142
+ }
143
+ // Inject domain-specific examples if classification is available
144
+ const topClass = this.getTopClass(contentClasses);
145
+ if (topClass) {
146
+ const domainExamples = yield this.loadDomainPartial(topClass.class);
147
+ if (domainExamples) {
148
+ context.domainExamples = domainExamples;
149
+ context.detectedContentClass = topClass.class;
150
+ }
151
+ else {
152
+ // No example file, but still pass the class name for context
153
+ context.detectedContentClass = topClass.class;
154
+ }
155
+ this.logger.debug(`Domain routing: ${topClass.class} (confidence: ${topClass.confidence.toFixed(2)})`);
156
+ }
157
+ // Enhance context with computed properties (like directory tree)
158
+ const enhancedContext = yield this.templateEngine.enhanceContext(context);
159
+ return yield this.templateEngine.renderFile(templatePath, enhancedContext);
160
+ }
161
+ catch (error) {
162
+ this.logger.error(`Failed to render system prompt: ${error}`);
163
+ // Fallback to a basic prompt
164
+ return this.getFallbackSystemPrompt(input, filter);
165
+ }
166
+ });
167
+ }
168
+ /**
169
+ * Get the user prompt for a file, optionally enriched with domain hints
170
+ */
171
+ getUserPrompt(context) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ yield this.ready; // partials registered before first render (KG-16)
174
+ try {
175
+ const templatePath = path.join(this.templatesDir, this.systemPromptVersion, 'user.hbs');
176
+ const templateContext = {
177
+ fileName: context.fileName,
178
+ filePath: context.fileName,
179
+ fileContent: context.fileContent,
180
+ chunkIndex: context.chunkIndex,
181
+ totalChunks: context.totalChunks,
182
+ chunkContent: context.chunkContent,
183
+ inputDirectory: context.input,
184
+ filter: context.filter
185
+ };
186
+ // Add retrieved context if available
187
+ if (context.retrievedContext) {
188
+ templateContext.retrievedEntities = context.retrievedContext.entities;
189
+ templateContext.retrievedObservations = context.retrievedContext.observations;
190
+ }
191
+ // Add domain hints from NER_DOMAIN_EXAMPLES if classification is available
192
+ const domainHints = this.buildDomainHints(context.contentClasses);
193
+ if (domainHints) {
194
+ templateContext.domainHints = domainHints;
195
+ }
196
+ // Add the corpus glossary (canonical names/types) as a soft naming hint.
197
+ const corpusGlossary = this.buildCorpusGlossaryHint(context.corpusGlossary);
198
+ if (corpusGlossary) {
199
+ templateContext.corpusGlossary = corpusGlossary;
200
+ }
201
+ // Enhance context
202
+ const enhancedContext = yield this.templateEngine.enhanceContext(templateContext);
203
+ return yield this.templateEngine.renderFile(templatePath, enhancedContext);
204
+ }
205
+ catch (error) {
206
+ this.logger.error(`Failed to render user prompt: ${error}`);
207
+ // Fallback to basic prompt
208
+ return this.getFallbackUserPrompt(context);
209
+ }
210
+ });
211
+ }
212
+ /**
213
+ * Set the system prompt version
214
+ */
215
+ setSystemPromptVersion(version) {
216
+ this.systemPromptVersion = version;
217
+ this.logger.info(`Using system prompt version: ${version}`);
218
+ }
219
+ /**
220
+ * Render a custom template with context
221
+ */
222
+ renderCustomTemplate(templateString, context) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ yield this.ready; // partials registered before first render (KG-16)
225
+ try {
226
+ const template = this.templateEngine.compile(templateString);
227
+ const enhancedContext = yield this.templateEngine.enhanceContext(context);
228
+ return this.templateEngine.render(template, enhancedContext);
229
+ }
230
+ catch (error) {
231
+ this.logger.error(`Failed to render custom template: ${error}`);
232
+ throw error;
233
+ }
234
+ });
235
+ }
236
+ // ─── Private helpers ───────────────────────────────────────────────────────
237
+ /**
238
+ * Returns the top classification result if it meets the confidence threshold,
239
+ * otherwise undefined.
240
+ */
241
+ getTopClass(contentClasses) {
242
+ if (!contentClasses || contentClasses.length === 0)
243
+ return undefined;
244
+ const top = contentClasses[0]; // already sorted descending by confidence
245
+ return top.confidence >= (0, vocabulary_1.domainGateThresholds)().lowConfidence ? top : undefined;
246
+ }
247
+ /**
248
+ * Builds a human-readable domain hints string from classification results.
249
+ * Handles mixed-domain case (top-2 classes within MIXED_DOMAIN_THRESHOLD).
250
+ */
251
+ buildDomainHints(contentClasses) {
252
+ // Class selection + vocabulary come from the shared single source so the
253
+ // hints can never diverge from the Zod enum (KG-05).
254
+ const activeClasses = (0, vocabulary_1.activeDomainClasses)(contentClasses);
255
+ if (activeClasses.length === 0)
256
+ return undefined;
257
+ const sorted = [...contentClasses].sort((a, b) => b.confidence - a.confidence);
258
+ const lines = [];
259
+ if (activeClasses.length === 1) {
260
+ lines.push(`Detected content type: **${sorted[0].class}** (confidence: ${sorted[0].confidence.toFixed(2)})`);
261
+ }
262
+ else {
263
+ lines.push(`Detected content type: **${activeClasses[0]}** (${sorted[0].confidence.toFixed(2)}) / **${activeClasses[1]}** (${sorted[1].confidence.toFixed(2)}) — mixed domain`);
264
+ }
265
+ const { entityTypes, relationTypes } = (0, vocabulary_1.domainVocabulary)(contentClasses);
266
+ const uniqueEntityTypes = Array.from(new Set(entityTypes));
267
+ const uniqueRelationTypes = Array.from(new Set(relationTypes));
268
+ if (uniqueEntityTypes.length > 0) {
269
+ lines.push(`Prioritize these entity types: ${uniqueEntityTypes.join(', ')}`);
270
+ }
271
+ if (uniqueRelationTypes.length > 0) {
272
+ lines.push(`Prioritize these relation types: ${uniqueRelationTypes.join(', ')}`);
273
+ }
274
+ return lines.join('\n');
275
+ }
276
+ /**
277
+ * Renders the corpus glossary block for the user prompt (v5: authoritative).
278
+ * Focuses on canonical entity *names* — the established entity/relation *types*
279
+ * are now the closed vocabularies in the system prompt, so this avoids
280
+ * duplicating them. New entities not listed are still extracted as usual.
281
+ * Returns undefined when the glossary is empty.
282
+ */
283
+ buildCorpusGlossaryHint(glossary) {
284
+ if (!glossary)
285
+ return undefined;
286
+ const { entityNames, entityTypes, relationTypes } = glossary;
287
+ if (entityNames.length === 0 &&
288
+ entityTypes.length === 0 &&
289
+ relationTypes.length === 0) {
290
+ return undefined;
291
+ }
292
+ const lines = [];
293
+ if (entityNames.length > 0) {
294
+ lines.push(`Canonical entity names: ${entityNames.join(', ')}`);
295
+ }
296
+ if (entityTypes.length > 0) {
297
+ lines.push(`Established entity types: ${entityTypes.join(', ')}`);
298
+ }
299
+ if (relationTypes.length > 0) {
300
+ lines.push(`Established relation predicates: ${relationTypes.join(', ')}`);
301
+ }
302
+ return lines.join('\n');
303
+ }
304
+ /**
305
+ * Render the glossary-generation system + user prompts for the corpus pre-pass
306
+ * from `templates/<version>/glossary/{system,user}.hbs`. Falls back to `undefined`
307
+ * when the current version ships no glossary templates (e.g. v4.5), so the caller
308
+ * (CorpusAnalyzer) keeps its inline-string prompts. Non-fatal: a render failure
309
+ * also returns undefined.
310
+ */
311
+ getGlossaryPrompt(vars) {
312
+ return __awaiter(this, void 0, void 0, function* () {
313
+ yield this.ready; // partials registered before first render (KG-16)
314
+ const dir = path.join(this.templatesDir, this.systemPromptVersion, 'glossary');
315
+ const systemPath = path.join(dir, 'system.hbs');
316
+ const userPath = path.join(dir, 'user.hbs');
317
+ if (!fs.existsSync(systemPath) || !fs.existsSync(userPath)) {
318
+ return undefined;
319
+ }
320
+ try {
321
+ const system = yield this.templateEngine.renderFile(systemPath, {});
322
+ const user = yield this.templateEngine.renderFile(userPath, vars);
323
+ return { system, user };
324
+ }
325
+ catch (error) {
326
+ this.logger.warn(`Failed to render glossary prompt (using inline fallback): ${error}`);
327
+ return undefined;
328
+ }
329
+ });
330
+ }
331
+ /**
332
+ * Loads and caches the content of a domain example partial file.
333
+ * Returns undefined if the file doesn't exist or is a stub (≤ 3 lines).
334
+ */
335
+ loadDomainPartial(contentClass) {
336
+ return __awaiter(this, void 0, void 0, function* () {
337
+ const filename = CLASS_TO_PARTIAL[contentClass];
338
+ if (!filename)
339
+ return undefined;
340
+ if (this.domainPartialCache.has(filename)) {
341
+ const cached = this.domainPartialCache.get(filename);
342
+ return cached.length > 0 ? cached : undefined;
343
+ }
344
+ const partialPath = path.join(this.templatesDir, 'partials', 'examples', filename);
345
+ try {
346
+ const content = fs.readFileSync(partialPath, 'utf-8').trim();
347
+ // Treat files with ≤ 3 lines as stubs (placeholder content)
348
+ const isStub = content.split('\n').length <= 3;
349
+ const result = isStub ? '' : content;
350
+ this.domainPartialCache.set(filename, result);
351
+ return result.length > 0 ? result : undefined;
352
+ }
353
+ catch (_a) {
354
+ this.domainPartialCache.set(filename, '');
355
+ return undefined;
356
+ }
357
+ });
358
+ }
359
+ /**
360
+ * Get a fallback system prompt if template rendering fails
361
+ */
362
+ getFallbackSystemPrompt(input, filter) {
363
+ return `You are an AI assistant designed to analyze code and documentation to extract knowledge in the form of a graph.
364
+
365
+ Your task is to identify entities (key concepts, functions, classes, modules, etc.) and their relationships from the given content.
366
+
367
+ The input directory is: ${input}
368
+ The file filter is: ${filter}
369
+
370
+ Return a JSON object with:
371
+ - entities: Array of objects with name, entityType, and observations
372
+ - relations: Array of objects with from, to, and relationType`;
373
+ }
374
+ /**
375
+ * Get a fallback user prompt if template rendering fails
376
+ */
377
+ getFallbackUserPrompt(context) {
378
+ let prompt = `Analyze the following content from ${context.fileName}:\n\n`;
379
+ if (context.chunkIndex && context.totalChunks && context.totalChunks > 1) {
380
+ prompt += `(Chunk ${context.chunkIndex} of ${context.totalChunks})\n\n`;
381
+ }
382
+ prompt += `${context.chunkContent || context.fileContent}\n\n`;
383
+ prompt += `Extract all entities and relationships from this content.`;
384
+ return prompt;
385
+ }
386
+ }
387
+ exports.PromptManager = PromptManager;
388
+ //# sourceMappingURL=PromptManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptManager.js","sourceRoot":"","sources":["../../../../src/core/llm/prompts/PromptManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.PromptTemplateEngine = void 0;
49
+ const handlebars_1 = __importDefault(require("handlebars"));
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const directoryTree_1 = require("../../../shared/utils/directoryTree");
53
+ const documentOutline_1 = require("../../../shared/utils/documentOutline");
54
+ /**
55
+ * Template engine for managing prompt templates
56
+ */
57
+ class PromptTemplateEngine {
58
+ constructor(logger, outlineOptions) {
59
+ this.partialsRegistered = false;
60
+ this.logger = logger;
61
+ this.outlineOptions = outlineOptions;
62
+ this.handlebars = handlebars_1.default.create();
63
+ this.templateCache = new Map();
64
+ this.registerHelpers();
65
+ }
66
+ /**
67
+ * Register custom Handlebars helpers
68
+ */
69
+ registerHelpers() {
70
+ // Helper to check if a value exists
71
+ this.handlebars.registerHelper('exists', (value) => {
72
+ return value !== undefined && value !== null;
73
+ });
74
+ // Helper to join array with separator
75
+ this.handlebars.registerHelper('join', (array, separator = ', ') => {
76
+ if (!Array.isArray(array))
77
+ return '';
78
+ return array.join(separator);
79
+ });
80
+ // Helper to truncate text
81
+ this.handlebars.registerHelper('truncate', (text, length = 100) => {
82
+ if (!text || text.length <= length)
83
+ return text;
84
+ return text.substring(0, length) + '...';
85
+ });
86
+ // Helper to format file size
87
+ this.handlebars.registerHelper('fileSize', (bytes) => {
88
+ const sizes = ['Bytes', 'KB', 'MB', 'GB'];
89
+ if (bytes === 0)
90
+ return '0 Byte';
91
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
92
+ return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i];
93
+ });
94
+ // Helper for conditional rendering. Must be a regular `function` (not an
95
+ // arrow): Handlebars binds `this` to the current template context when it
96
+ // invokes a block helper, and the body must render with that context. As an
97
+ // arrow, `this` was the engine instance, so the block rendered with no data
98
+ // — e.g. "Chunk of from " (KG-16).
99
+ this.handlebars.registerHelper('when', function (value1, operator, value2, options) {
100
+ switch (operator) {
101
+ case '==': return value1 == value2 ? options.fn(this) : options.inverse(this);
102
+ case '===': return value1 === value2 ? options.fn(this) : options.inverse(this);
103
+ case '!=': return value1 != value2 ? options.fn(this) : options.inverse(this);
104
+ case '!==': return value1 !== value2 ? options.fn(this) : options.inverse(this);
105
+ case '<': return value1 < value2 ? options.fn(this) : options.inverse(this);
106
+ case '<=': return value1 <= value2 ? options.fn(this) : options.inverse(this);
107
+ case '>': return value1 > value2 ? options.fn(this) : options.inverse(this);
108
+ case '>=': return value1 >= value2 ? options.fn(this) : options.inverse(this);
109
+ case '&&': return value1 && value2 ? options.fn(this) : options.inverse(this);
110
+ case '||': return value1 || value2 ? options.fn(this) : options.inverse(this);
111
+ default: throw new Error(`Unknown operator: ${operator}`);
112
+ }
113
+ });
114
+ // // Helper to generate directory tree
115
+ // this.handlebars.registerHelper('directoryTree', async (dirPath: string, filter: string) => {
116
+ // try {
117
+ // const tree = await DirectoryTreeGenerator.generateTextTree(dirPath, {
118
+ // filter,
119
+ // excludePatterns: ['node_modules/**', '.git/**', 'dist/**', 'build/**'],
120
+ // maxDepth: 5
121
+ // });
122
+ // return new this.handlebars.SafeString(tree);
123
+ // } catch (error) {
124
+ // logger.error(`Failed to generate directory tree: ${error}`);
125
+ // return '[Directory tree generation failed]';
126
+ // }
127
+ // });
128
+ }
129
+ /**
130
+ * Register template partials from a directory
131
+ */
132
+ registerPartials(partialsDir) {
133
+ return __awaiter(this, void 0, void 0, function* () {
134
+ if (this.partialsRegistered)
135
+ return;
136
+ try {
137
+ const files = yield fs.promises.readdir(partialsDir);
138
+ for (const file of files) {
139
+ if (file.endsWith('.hbs') || file.endsWith('.handlebars')) {
140
+ const partialName = path.basename(file, path.extname(file));
141
+ const partialPath = path.join(partialsDir, file);
142
+ const partialContent = yield fs.promises.readFile(partialPath, 'utf-8');
143
+ this.handlebars.registerPartial(partialName, partialContent);
144
+ this.logger.debug(`Registered partial: ${partialName}`);
145
+ }
146
+ }
147
+ this.partialsRegistered = true;
148
+ }
149
+ catch (error) {
150
+ this.logger.error(`Failed to register partials: ${error}`);
151
+ }
152
+ });
153
+ }
154
+ /**
155
+ * Compile a template from string
156
+ */
157
+ compile(templateString) {
158
+ return this.handlebars.compile(templateString, { noEscape: true });
159
+ }
160
+ /**
161
+ * Compile a template from file
162
+ */
163
+ compileFile(templatePath) {
164
+ return __awaiter(this, void 0, void 0, function* () {
165
+ // Check cache first
166
+ if (this.templateCache.has(templatePath)) {
167
+ return this.templateCache.get(templatePath);
168
+ }
169
+ try {
170
+ const templateContent = yield fs.promises.readFile(templatePath, 'utf-8');
171
+ const compiled = this.compile(templateContent);
172
+ // Cache the compiled template
173
+ this.templateCache.set(templatePath, compiled);
174
+ return compiled;
175
+ }
176
+ catch (error) {
177
+ throw new Error(`Failed to compile template ${templatePath}: ${error}`);
178
+ }
179
+ });
180
+ }
181
+ /**
182
+ * Render a template with context
183
+ */
184
+ render(template, context) {
185
+ return template(context);
186
+ }
187
+ /**
188
+ * Render a template file with context
189
+ */
190
+ renderFile(templatePath, context) {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ const template = yield this.compileFile(templatePath);
193
+ return this.render(template, context);
194
+ });
195
+ }
196
+ /**
197
+ * Enhance context with additional computed properties
198
+ */
199
+ enhanceContext(context) {
200
+ return __awaiter(this, void 0, void 0, function* () {
201
+ var _a, _b, _c, _d, _e, _f;
202
+ const enhanced = Object.assign({}, context);
203
+ // Generate directory tree if needed
204
+ if (enhanced.inputDirectory && enhanced.filter && !enhanced.directoryTree) {
205
+ try {
206
+ enhanced.directoryTree = yield directoryTree_1.DirectoryTreeGenerator.generateTextTree(enhanced.inputDirectory, {
207
+ filter: enhanced.filter,
208
+ excludePatterns: ['node_modules/**', '.git/**', 'dist/**', 'build/**'],
209
+ maxDepth: 5
210
+ }, this.logger);
211
+ }
212
+ catch (error) {
213
+ this.logger.error(`Failed to generate directory tree: ${error}`);
214
+ }
215
+ }
216
+ // Add file list if needed
217
+ if (enhanced.inputDirectory && enhanced.filter && !enhanced.fileList) {
218
+ try {
219
+ enhanced.fileList = yield directoryTree_1.DirectoryTreeGenerator.getFilteredFiles(enhanced.inputDirectory, enhanced.filter, ['node_modules/**', '.git/**', 'dist/**', 'build/**']);
220
+ }
221
+ catch (error) {
222
+ this.logger.error(`Failed to get file list: ${error}`);
223
+ }
224
+ }
225
+ // Extract file extension
226
+ if (enhanced.fileName && !enhanced.fileExtension) {
227
+ enhanced.fileExtension = path.extname(enhanced.fileName).toLowerCase();
228
+ }
229
+ // Extract document outline (skip entirely when disabled via config)
230
+ if (((_a = this.outlineOptions) === null || _a === void 0 ? void 0 : _a.enabled) !== false &&
231
+ enhanced.fileContent &&
232
+ enhanced.fileExtension) {
233
+ try {
234
+ enhanced.fileOutline = yield documentOutline_1.DocumentOutlineGenerator.generateOutlineFromContent(enhanced.fileContent, enhanced.fileExtension.slice(1), {
235
+ maxDepth: (_b = this.outlineOptions) === null || _b === void 0 ? void 0 : _b.maxDepth,
236
+ includeLineNumbers: (_c = this.outlineOptions) === null || _c === void 0 ? void 0 : _c.includeLineNumbers,
237
+ includePrivate: (_d = this.outlineOptions) === null || _d === void 0 ? void 0 : _d.includePrivate,
238
+ includeComments: (_e = this.outlineOptions) === null || _e === void 0 ? void 0 : _e.includeComments,
239
+ compact: (_f = this.outlineOptions) === null || _f === void 0 ? void 0 : _f.compact,
240
+ });
241
+ }
242
+ catch (error) {
243
+ this.logger.warn(`Cannot generate document outline from file content: ${error.message}`);
244
+ }
245
+ }
246
+ return enhanced;
247
+ });
248
+ }
249
+ /**
250
+ * Clear template cache
251
+ */
252
+ clearCache() {
253
+ this.templateCache.clear();
254
+ }
255
+ }
256
+ exports.PromptTemplateEngine = PromptTemplateEngine;
257
+ //# sourceMappingURL=PromptTemplateEngine.js.map