@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,208 @@
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 __asyncValues = (this && this.__asyncValues) || function (o) {
45
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
46
+ var m = o[Symbol.asyncIterator], i;
47
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
48
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
49
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.MineDataset = void 0;
53
+ const fs = __importStar(require("fs"));
54
+ const readline = __importStar(require("readline"));
55
+ /**
56
+ * Alignment guard threshold. The third-party HF mirror
57
+ * (josancamon/kg-gen-MINE-evaluation-dataset) ships baseline-graph columns that
58
+ * are DESYNCED from the essays past ~row 18 (verified against the live API: row 19
59
+ * is a VR essay carrying a board-games kggen graph). A misaligned baseline scores
60
+ * ~0 on every fact and silently poisons the four-way table. Guard: a baseline whose
61
+ * entities barely appear in its own essay belongs to a different article — drop it
62
+ * so it's excluded from scoring rather than counted as a (fake) zero. Aligned rows
63
+ * overlap ≥0.4; misaligned ~0.05, so 0.25 cleanly separates with margin.
64
+ */
65
+ const MIN_BASELINE_ALIGNMENT = 0.25;
66
+ class MineDataset {
67
+ load(dataPath, limit, logger) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ var _a, e_1, _b, _c;
70
+ if (!fs.existsSync(dataPath)) {
71
+ throw new Error(`MINE data not found at: ${dataPath}\n` +
72
+ `Fetch it first: npx ts-node scripts/fetch-mine.ts\n` +
73
+ `(downloads josancamon/kg-gen-MINE-evaluation-dataset → data/mine/mine.jsonl)`);
74
+ }
75
+ const samples = [];
76
+ const stream = fs.createReadStream(dataPath, { encoding: 'utf-8' });
77
+ const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
78
+ try {
79
+ for (var _d = true, rl_1 = __asyncValues(rl), rl_1_1; rl_1_1 = yield rl_1.next(), _a = rl_1_1.done, !_a; _d = true) {
80
+ _c = rl_1_1.value;
81
+ _d = false;
82
+ const line = _c;
83
+ if (samples.length >= limit)
84
+ break;
85
+ const trimmed = line.trim();
86
+ if (!trimmed)
87
+ continue;
88
+ let raw;
89
+ try {
90
+ raw = JSON.parse(trimmed);
91
+ }
92
+ catch (_e) {
93
+ continue;
94
+ }
95
+ const sample = MineDataset.parseRow(raw, samples.length);
96
+ if (sample)
97
+ samples.push(sample);
98
+ }
99
+ }
100
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
101
+ finally {
102
+ try {
103
+ if (!_d && !_a && (_b = rl_1.return)) yield _b.call(rl_1);
104
+ }
105
+ finally { if (e_1) throw e_1.error; }
106
+ }
107
+ MineDataset.guardBaselineAlignment(samples, logger);
108
+ return samples;
109
+ });
110
+ }
111
+ /**
112
+ * Drop baseline graphs that don't belong to their essay (the HF mirror's
113
+ * essay↔graph desync). Mutates each sample's `baselines`, removing any non-empty
114
+ * graph whose entities barely appear in the essay; a dropped baseline is then
115
+ * skipped by the runner (so it never counts as a fake zero). Logs a per-tool tally
116
+ * — a high drop count is the loud signal that the data source is corrupt.
117
+ */
118
+ static guardBaselineAlignment(samples, logger) {
119
+ var _a;
120
+ const dropped = {};
121
+ for (const s of samples) {
122
+ for (const tool of Object.keys(s.baselines)) {
123
+ const g = s.baselines[tool];
124
+ if (!g || g.entities.length === 0)
125
+ continue; // empty = legit absence, not misalignment
126
+ if (MineDataset.alignmentScore(s.text, g) < MIN_BASELINE_ALIGNMENT) {
127
+ delete s.baselines[tool];
128
+ dropped[tool] = ((_a = dropped[tool]) !== null && _a !== void 0 ? _a : 0) + 1;
129
+ }
130
+ }
131
+ }
132
+ const total = Object.values(dropped).reduce((a, b) => a + b, 0);
133
+ if (total > 0 && logger) {
134
+ const detail = Object.entries(dropped).map(([t, n]) => `${t}:${n}`).join(' ');
135
+ logger.warn(`MINE alignment guard dropped ${total} misaligned baseline graph(s) [${detail}] ` +
136
+ `across ${samples.length} articles — the source's essay↔graph columns are desynced. ` +
137
+ `Those (tool,article) cells are excluded from the four-way (not scored as 0).`);
138
+ }
139
+ }
140
+ /** Fraction of a graph's entity names that appear (case-insensitive substring)
141
+ * in the essay. ~1 when the graph is this essay's; ~0 when it's another's. */
142
+ static alignmentScore(text, graph) {
143
+ const ents = graph.entities;
144
+ if (ents.length === 0)
145
+ return 0;
146
+ const hay = text.toLowerCase();
147
+ let hit = 0;
148
+ for (const e of ents)
149
+ if (e.name && hay.includes(e.name.toLowerCase()))
150
+ hit++;
151
+ return hit / ents.length;
152
+ }
153
+ /** Pure row → MineSample mapping (static for unit testing without a file). */
154
+ static parseRow(raw, index) {
155
+ var _a, _b;
156
+ const text = raw.essay_content;
157
+ const facts = raw.generated_queries;
158
+ if (!text || !facts || facts.length === 0)
159
+ return null;
160
+ // Only include a baseline when it actually carries a graph. An empty/absent
161
+ // graph (the tool produced nothing, OR our re-align found no confident match —
162
+ // see scripts/realign-mine.ts) must be OMITTED, not scored as a fake 0, so the
163
+ // four-way aggregate covers only the (article, tool) cells we really have.
164
+ const baselines = {};
165
+ const kggen = MineDataset.toGraph(raw.kggen);
166
+ if (kggen.entities.length)
167
+ baselines.kggen = kggen;
168
+ const graphrag = MineDataset.toGraph(raw.graphrag_kg);
169
+ if (graphrag.entities.length)
170
+ baselines.graphrag = graphrag;
171
+ const openie = MineDataset.toGraph(raw.openie_kg);
172
+ if (openie.entities.length)
173
+ baselines.openie = openie;
174
+ return { id: String((_a = raw.id) !== null && _a !== void 0 ? _a : index), topic: (_b = raw.essay_topic) !== null && _b !== void 0 ? _b : '', text, facts, baselines };
175
+ }
176
+ /** Map a stored {entities, edges, relations} baseline graph to a wanshi
177
+ * KnowledgeGraph so every tool flows through the one identical scorer. */
178
+ static toGraph(raw) {
179
+ var _a, _b;
180
+ if (!raw)
181
+ return { entities: [], relations: [] };
182
+ const names = new Set();
183
+ const entities = [];
184
+ const ensure = (name) => {
185
+ const n = name === null || name === void 0 ? void 0 : name.trim();
186
+ if (!n || names.has(n))
187
+ return;
188
+ names.add(n);
189
+ entities.push({ name: n, entityType: 'concept', observations: [], files: [] });
190
+ };
191
+ for (const e of (_a = raw.entities) !== null && _a !== void 0 ? _a : [])
192
+ ensure(e);
193
+ const relations = [];
194
+ for (const t of (_b = raw.relations) !== null && _b !== void 0 ? _b : []) {
195
+ if (!Array.isArray(t) || t.length < 3)
196
+ continue;
197
+ const [from, predicate, to] = [String(t[0]).trim(), String(t[1]).trim(), String(t[2]).trim()];
198
+ if (!from || !to)
199
+ continue;
200
+ ensure(from);
201
+ ensure(to);
202
+ relations.push({ from, to, relationType: [predicate || 'related to'] });
203
+ }
204
+ return { entities, relations };
205
+ }
206
+ }
207
+ exports.MineDataset = MineDataset;
208
+ //# sourceMappingURL=MineDataset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MineDataset.js","sourceRoot":"","sources":["../../../src/evaluation/mine/MineDataset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MineReporter = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ function pct(n) {
40
+ return n === undefined ? ' — ' : `${(n * 100).toFixed(2)}%`.padStart(7);
41
+ }
42
+ function fmtDuration(ms) {
43
+ const s = Math.floor(ms / 1000);
44
+ if (s < 60)
45
+ return `${s}s`;
46
+ return `${Math.floor(s / 60)}m ${s % 60}s`;
47
+ }
48
+ const TOOL_LABEL = {
49
+ wanshi: 'wanshi',
50
+ kggen: 'KGGen',
51
+ graphrag: 'GraphRAG',
52
+ openie: 'OpenIE',
53
+ };
54
+ /**
55
+ * Four-way MINE comparison table. The "Re-scored" column is the apples-to-apples
56
+ * number (one identical retrieve+judge over all four graphs). "Published" is the
57
+ * KGGen-paper headline — a reference only; it used a different judge/retrieval and
58
+ * must not be conflated with the re-scored column.
59
+ */
60
+ class MineReporter {
61
+ print(result) {
62
+ const sep = '─'.repeat(52);
63
+ console.log('');
64
+ console.log(`MINE benchmark (n=${result.sampleCount}) Model: ${result.model} Judge: ${result.judgeModel}`);
65
+ console.log('');
66
+ console.log(`${'Tool'.padEnd(12)} ${'Re-scored'.padStart(9)} ${'Published'.padStart(9)}`);
67
+ console.log(sep);
68
+ const order = ['wanshi', 'kggen', 'graphrag', 'openie'];
69
+ for (const tool of order) {
70
+ const rescored = result.byTool[tool];
71
+ if (rescored === undefined && tool !== 'wanshi')
72
+ continue;
73
+ const published = tool === 'wanshi' ? undefined : result.published[tool];
74
+ console.log(`${TOOL_LABEL[tool].padEnd(12)} ${pct(rescored)} ${pct(published)}`);
75
+ }
76
+ console.log(sep);
77
+ console.log('Re-scored = our identical retrieve+judge over all graphs (comparable).');
78
+ console.log('Published = KGGen-paper headline (different judge/retrieval; reference only).');
79
+ if (result.relatedToShare !== undefined) {
80
+ // Guardrail: a high wanshi `related_to` share means the closed vocab is
81
+ // coercing real predicates away (Bug 1) — it caps the recall ceiling on MINE.
82
+ console.log(`wanshi vocab fit: ${(result.relatedToShare * 100).toFixed(0)}% of relations are 'related_to' ` +
83
+ `(high ⇒ closed vocab is coercing predicates; hurts MINE recall)`);
84
+ }
85
+ console.log('');
86
+ console.log(`Duration: ${fmtDuration(result.durationMs)}`);
87
+ console.log('');
88
+ }
89
+ save(result, outputPath) {
90
+ const dir = path.dirname(outputPath);
91
+ if (!fs.existsSync(dir))
92
+ fs.mkdirSync(dir, { recursive: true });
93
+ fs.writeFileSync(outputPath, JSON.stringify(result, null, 2), 'utf-8');
94
+ console.log(`Report saved to: ${outputPath}`);
95
+ }
96
+ }
97
+ exports.MineReporter = MineReporter;
98
+ //# sourceMappingURL=MineReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MineReporter.js","sourceRoot":"","sources":["../../../src/evaluation/mine/MineReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MineRunner = void 0;
13
+ exports.relatedToShare = relatedToShare;
14
+ const MineCheckpoint_1 = require("./MineCheckpoint");
15
+ const types_1 = require("./types");
16
+ const BASELINE_TOOLS = ['kggen', 'graphrag', 'openie'];
17
+ /**
18
+ * Runs the MINE benchmark four ways: extracts wanshi's KG per article and scores
19
+ * it, then re-scores the three stored baseline graphs with the SAME MineScorer, so
20
+ * every tool faces one identical retrieve+judge. Aggregates mean accuracy per tool.
21
+ */
22
+ class MineRunner {
23
+ constructor(kgBuilder, promptManager, scorer, logger) {
24
+ this.kgBuilder = kgBuilder;
25
+ this.promptManager = promptManager;
26
+ this.scorer = scorer;
27
+ this.logger = logger;
28
+ }
29
+ run(samples, opts) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ var _a, _b;
32
+ const start = Date.now();
33
+ const systemPrompt = yield this.promptManager.getSystemPrompt('mine', '**/*.txt', 'MINE benchmark', undefined, opts.glossary, opts.openPredicate);
34
+ if ((_b = (_a = opts.glossary) === null || _a === void 0 ? void 0 : _a.relationTypes) === null || _b === void 0 ? void 0 : _b.length) {
35
+ this.logger.info(`MINE glossary active: ${opts.glossary.relationTypes.length} relation types, ` +
36
+ `${opts.glossary.entityTypes.length} entity types`);
37
+ }
38
+ const perArticle = [];
39
+ // Per-article checkpoint: resume after a crash; key folds in the run config so a
40
+ // config change never reuses a stale article.
41
+ const checkpoint = opts.checkpointPath
42
+ ? new MineCheckpoint_1.MineCheckpoint(opts.checkpointPath, this.logger)
43
+ : undefined;
44
+ if (checkpoint)
45
+ yield checkpoint.load();
46
+ const keyFor = (id) => { var _a; return `${opts.model}␟${opts.judgeModel}␟${(_a = opts.armKey) !== null && _a !== void 0 ? _a : ''}␟${opts.rescoreBaselines}␟${id}`; };
47
+ for (let i = 0; i < samples.length; i++) {
48
+ const s = samples[i];
49
+ const cached = checkpoint === null || checkpoint === void 0 ? void 0 : checkpoint.get(keyFor(s.id));
50
+ if (cached) {
51
+ this.logger.info(`[${i + 1}/${samples.length}] MINE article ${s.id} (${s.topic}) — restored from checkpoint`);
52
+ perArticle.push(cached);
53
+ continue;
54
+ }
55
+ this.logger.info(`[${i + 1}/${samples.length}] MINE article ${s.id} (${s.topic}) — ${s.facts.length} facts`);
56
+ const wanshiKg = yield this.extract(s, systemPrompt, opts.glossary);
57
+ const scores = {
58
+ wanshi: yield this.scorer.score('wanshi', wanshiKg, s.facts),
59
+ };
60
+ if (opts.rescoreBaselines) {
61
+ for (const tool of BASELINE_TOOLS) {
62
+ const g = s.baselines[tool];
63
+ if (g)
64
+ scores[tool] = yield this.scorer.score(tool, g, s.facts);
65
+ }
66
+ }
67
+ this.logger.info(` ${Object.keys(scores)
68
+ .map((t) => `${t}=${(scores[t].accuracy * 100).toFixed(1)}%`)
69
+ .join(' ')}`);
70
+ const article = {
71
+ id: s.id,
72
+ topic: s.topic,
73
+ scores,
74
+ wanshiGraph: wanshiKg,
75
+ relatedToShare: relatedToShare(wanshiKg),
76
+ };
77
+ perArticle.push(article);
78
+ if (checkpoint)
79
+ yield checkpoint.append(keyFor(s.id), article);
80
+ }
81
+ const meanRelatedTo = perArticle.length
82
+ ? perArticle.reduce((acc, a) => { var _a; return acc + ((_a = a.relatedToShare) !== null && _a !== void 0 ? _a : 0); }, 0) / perArticle.length
83
+ : 0;
84
+ return {
85
+ model: opts.model,
86
+ judgeModel: opts.judgeModel,
87
+ sampleCount: samples.length,
88
+ byTool: this.aggregate(perArticle),
89
+ published: types_1.MINE_PUBLISHED,
90
+ perArticle,
91
+ durationMs: Date.now() - start,
92
+ relatedToShare: meanRelatedTo,
93
+ };
94
+ });
95
+ }
96
+ extract(s, systemPrompt, glossary) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ try {
99
+ const processedFile = {
100
+ path: `mine/${s.id}.txt`,
101
+ chunks: [
102
+ { content: s.text, index: 1, totalChunks: 1, startOffset: 0, endOffset: s.text.length },
103
+ ],
104
+ metadata: {},
105
+ };
106
+ const graphs = yield this.kgBuilder.build(processedFile, systemPrompt, undefined, glossary);
107
+ return graphs.length > 0 ? graphs[0] : { entities: [], relations: [] };
108
+ }
109
+ catch (err) {
110
+ this.logger.warn(`MINE article ${s.id} extraction failed: ${err}`);
111
+ return { entities: [], relations: [] };
112
+ }
113
+ });
114
+ }
115
+ /** Mean accuracy per tool across all articles that produced a score for it. */
116
+ aggregate(perArticle) {
117
+ var _a;
118
+ const sum = {};
119
+ for (const a of perArticle) {
120
+ for (const tool of Object.keys(a.scores)) {
121
+ const acc = (_a = sum[tool]) !== null && _a !== void 0 ? _a : { s: 0, n: 0 };
122
+ acc.s += a.scores[tool].accuracy;
123
+ acc.n += 1;
124
+ sum[tool] = acc;
125
+ }
126
+ }
127
+ const out = {};
128
+ for (const tool of Object.keys(sum)) {
129
+ const { s, n } = sum[tool];
130
+ out[tool] = n > 0 ? s / n : 0;
131
+ }
132
+ return out;
133
+ }
134
+ }
135
+ exports.MineRunner = MineRunner;
136
+ /** Fraction of a graph's relations that are the generic `related_to` catch-all (the
137
+ * vocab-fit guardrail; mirrors KnowledgeMerger.logVocabularyFit). 0 for no relations. */
138
+ function relatedToShare(graph) {
139
+ const rels = graph.relations;
140
+ if (rels.length === 0)
141
+ return 0;
142
+ const catchAll = rels.filter((r) => {
143
+ const types = Array.isArray(r.relationType) ? r.relationType : [r.relationType];
144
+ return types.length > 0 && types.every((t) => t === 'related_to');
145
+ }).length;
146
+ return catchAll / rels.length;
147
+ }
148
+ //# sourceMappingURL=MineRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MineRunner.js","sourceRoot":"","sources":["../../../src/evaluation/mine/MineRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MineScorer = exports.MINE_JUDGE_INSTRUCTION = void 0;
13
+ const zod_1 = require("zod");
14
+ const cosineSimilarity_1 = require("../../shared/utils/cosineSimilarity");
15
+ /**
16
+ * MINE scorer — replicates kg-gen `experiments/MINE/_1_evaluation.py` so it can be
17
+ * applied IDENTICALLY to any KnowledgeGraph (wanshi's fresh extraction and the
18
+ * three stored baselines), which is the apples-to-apples requirement of the
19
+ * comparison. For each atomic fact: embed graph nodes, take the top-k nearest to
20
+ * the fact, gather their incident triples (serialized "from predicate to") as the
21
+ * retrieved context, then ask the judge whether that context contains the fact.
22
+ */
23
+ // Verbatim instruction from MINE's DSPy `EvaluateResponse` signature.
24
+ exports.MINE_JUDGE_INSTRUCTION = 'Determine whether the context contains the information stated in the correct answer. Respond with 1 if yes, 0 if no.';
25
+ // The verbatim criterion + a firm output directive. Without it, smaller judges
26
+ // (gemma3:4b) intermittently EXPLAIN their answer (prose), which fails the schema →
27
+ // retries → some land as a wrong 0, biasing scores low and unequally across the
28
+ // graphs being compared. The directive (DSPy adds the equivalent internally) drives
29
+ // a clean bare digit; the tolerant schema accepts it (or the object form).
30
+ const JUDGE_SYSTEM = `${exports.MINE_JUDGE_INSTRUCTION} Respond with ONLY the digit 1 or 0 — no explanation, no other text.`;
31
+ // Output {evaluation: 0|1}. Tolerant of a BARE number/string too: gemma3:4b honors
32
+ // the verbatim "respond with 1" prompt with a bare `1` under Ollama's soft format
33
+ // constraint, so we coerce that into {evaluation:1} instead of 3x-retrying then
34
+ // dropping it — which zeroed every score AND took 27min on the first dev run.
35
+ // zod-to-json-schema emits the inner object schema, so capable judges still get an
36
+ // object format constraint and comply directly. We threshold ≥0.5 ⇒ 1.
37
+ const JudgeSchema = zod_1.z.preprocess((v) => (typeof v === 'number' || typeof v === 'string' ? { evaluation: v } : v), zod_1.z.object({ evaluation: zod_1.z.coerce.number() }));
38
+ class MineScorer {
39
+ constructor(embeddings, judge, opts = { topK: 15 }) {
40
+ this.embeddings = embeddings;
41
+ this.judge = judge;
42
+ this.opts = opts;
43
+ }
44
+ score(tool, graph, facts) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ var _a;
47
+ const nodes = graph.entities.map((e) => e.name).filter((n) => !!n);
48
+ const nodeEmb = nodes.length ? yield this.embeddings.embedBatch(nodes) : [];
49
+ const incident = this.buildIncident(graph);
50
+ // Judge facts through a bounded-concurrency pool (order preserved by index).
51
+ const perFact = new Array(facts.length);
52
+ const limit = Math.max(1, Math.min((_a = this.opts.concurrency) !== null && _a !== void 0 ? _a : 8, facts.length || 1));
53
+ let next = 0;
54
+ const worker = () => __awaiter(this, void 0, void 0, function* () {
55
+ for (let i = next++; i < facts.length; i = next++) {
56
+ const fact = facts[i];
57
+ const context = nodes.length ? yield this.retrieve(fact, nodes, nodeEmb, incident) : '';
58
+ const evaluation = context ? yield this.judgeFact(context, fact) : 0;
59
+ perFact[i] = { fact, context, evaluation };
60
+ }
61
+ });
62
+ yield Promise.all(Array.from({ length: limit }, () => worker()));
63
+ const correct = perFact.reduce((s, r) => s + r.evaluation, 0);
64
+ const total = facts.length;
65
+ return { tool, accuracy: total ? correct / total : 0, correct, total, perFact };
66
+ });
67
+ }
68
+ /** node → its incident triples serialized as "from predicate to". */
69
+ buildIncident(graph) {
70
+ var _a, _b;
71
+ const m = new Map();
72
+ const add = (node, s) => {
73
+ const arr = m.get(node);
74
+ if (arr)
75
+ arr.push(s);
76
+ else
77
+ m.set(node, [s]);
78
+ };
79
+ for (const r of graph.relations) {
80
+ const pred = (_b = (_a = r.relationType) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 'related to';
81
+ const serialized = `${r.from} ${pred} ${r.to}`;
82
+ add(r.from, serialized);
83
+ add(r.to, serialized);
84
+ }
85
+ return m;
86
+ }
87
+ retrieve(fact, nodes, nodeEmb, incident) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ var _a;
90
+ const q = yield this.embeddings.embed(fact);
91
+ const ranked = nodes
92
+ .map((name, i) => ({ name, sim: (0, cosineSimilarity_1.cosineSimilarity)(q, nodeEmb[i]) }))
93
+ .sort((a, b) => b.sim - a.sim)
94
+ .slice(0, this.opts.topK);
95
+ const seen = new Set();
96
+ const parts = [];
97
+ for (const { name } of ranked) {
98
+ for (const s of (_a = incident.get(name)) !== null && _a !== void 0 ? _a : []) {
99
+ if (!seen.has(s)) {
100
+ seen.add(s);
101
+ parts.push(s);
102
+ }
103
+ }
104
+ }
105
+ return parts.join('. ');
106
+ });
107
+ }
108
+ judgeFact(context, fact) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ const messages = [
111
+ { role: 'system', content: JUDGE_SYSTEM },
112
+ { role: 'user', content: `Context:\n${context}\n\nCorrect answer:\n${fact}` },
113
+ ];
114
+ try {
115
+ // Cast: the preprocess schema's INPUT is `unknown` (it accepts bare numbers),
116
+ // but its OUTPUT is exactly {evaluation:number}, which is what we read.
117
+ const out = yield this.judge.generateStructured(messages, JudgeSchema);
118
+ return out.evaluation >= 0.5 ? 1 : 0;
119
+ }
120
+ catch (_a) {
121
+ return 0; // a judge failure is a miss, never a thrown run
122
+ }
123
+ });
124
+ }
125
+ }
126
+ exports.MineScorer = MineScorer;
127
+ //# sourceMappingURL=MineScorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MineScorer.js","sourceRoot":"","sources":["../../../src/evaluation/mine/MineScorer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MINE_PUBLISHED = void 0;
4
+ /** KGGen paper headline accuracies on MINE (their judge + retrieval). A labelled
5
+ * reference row only — our re-scored numbers use one identical retrieve+judge over
6
+ * all four graphs, so they may differ from these and shouldn't be conflated. */
7
+ exports.MINE_PUBLISHED = {
8
+ kggen: 0.66,
9
+ graphrag: 0.48,
10
+ openie: 0.30,
11
+ };
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/evaluation/mine/types.ts"],"names":[],"mappings":";;;AAsDA;;iFAEiF;AACpE,QAAA,cAAc,GAAgD;IACzE,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;CACb,CAAC"}