@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.
- package/LICENSE +21 -0
- package/README.md +458 -0
- package/dist/__tests__/helpers.js +27 -0
- package/dist/__tests__/helpers.js.map +1 -0
- package/dist/cli/commands/export.command.js +99 -0
- package/dist/cli/commands/export.command.js.map +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/inspectMerges.command.js +84 -0
- package/dist/cli/commands/inspectMerges.command.js.map +1 -0
- package/dist/cli/commands/metrics.command.js +196 -0
- package/dist/cli/commands/metrics.command.js.map +1 -0
- package/dist/cli/commands/process.command.js +82 -0
- package/dist/cli/commands/process.command.js.map +1 -0
- package/dist/cli/commands/watch.command.js +91 -0
- package/dist/cli/commands/watch.command.js.map +1 -0
- package/dist/cli/index.js +269 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/optionsToConfig.js +160 -0
- package/dist/cli/optionsToConfig.js.map +1 -0
- package/dist/config/index.js +59 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/legacyHints.js +113 -0
- package/dist/config/legacyHints.js.map +1 -0
- package/dist/config/schema.js +803 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/ui.js +221 -0
- package/dist/config/ui.js.map +1 -0
- package/dist/core/DirectoryProcessor.js +725 -0
- package/dist/core/DirectoryProcessor.js.map +1 -0
- package/dist/core/adapters/IStructuredAdapter.js +3 -0
- package/dist/core/adapters/IStructuredAdapter.js.map +1 -0
- package/dist/core/adapters/SqliteAdapter.js +267 -0
- package/dist/core/adapters/SqliteAdapter.js.map +1 -0
- package/dist/core/adapters/StructuredAdapterRegistry.js +31 -0
- package/dist/core/adapters/StructuredAdapterRegistry.js.map +1 -0
- package/dist/core/adapters/index.js +20 -0
- package/dist/core/adapters/index.js.map +1 -0
- package/dist/core/checkpoint/CheckpointService.js +188 -0
- package/dist/core/checkpoint/CheckpointService.js.map +1 -0
- package/dist/core/checkpoint/index.js +18 -0
- package/dist/core/checkpoint/index.js.map +1 -0
- package/dist/core/corpus/CorpusAnalyzer.js +266 -0
- package/dist/core/corpus/CorpusAnalyzer.js.map +1 -0
- package/dist/core/corpus/CorpusProfileStore.js +92 -0
- package/dist/core/corpus/CorpusProfileStore.js.map +1 -0
- package/dist/core/corpus/index.js +21 -0
- package/dist/core/corpus/index.js.map +1 -0
- package/dist/core/corpus/normalizeGlossary.js +60 -0
- package/dist/core/corpus/normalizeGlossary.js.map +1 -0
- package/dist/core/corpus/relPath.js +52 -0
- package/dist/core/corpus/relPath.js.map +1 -0
- package/dist/core/corpus/termFrequency.js +86 -0
- package/dist/core/corpus/termFrequency.js.map +1 -0
- package/dist/core/cost/CostMeter.js +235 -0
- package/dist/core/cost/CostMeter.js.map +1 -0
- package/dist/core/cost/index.js +19 -0
- package/dist/core/cost/index.js.map +1 -0
- package/dist/core/cost/prices.js +38 -0
- package/dist/core/cost/prices.js.map +1 -0
- package/dist/core/cv/ObjectDetectionService.js +119 -0
- package/dist/core/cv/ObjectDetectionService.js.map +1 -0
- package/dist/core/di/ContainerFactory.js +670 -0
- package/dist/core/di/ContainerFactory.js.map +1 -0
- package/dist/core/di/DIContainer.js +103 -0
- package/dist/core/di/DIContainer.js.map +1 -0
- package/dist/core/di/index.js +19 -0
- package/dist/core/di/index.js.map +1 -0
- package/dist/core/errors/CustomErrors.js +342 -0
- package/dist/core/errors/CustomErrors.js.map +1 -0
- package/dist/core/errors/index.js +18 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/export/KnowledgeGraphExportService.js +56 -0
- package/dist/core/export/KnowledgeGraphExportService.js.map +1 -0
- package/dist/core/export/index.js +19 -0
- package/dist/core/export/index.js.map +1 -0
- package/dist/core/export/strategies/GraphitiExportStrategy.js +115 -0
- package/dist/core/export/strategies/GraphitiExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/GraphvizDotExportStrategy.js +331 -0
- package/dist/core/export/strategies/GraphvizDotExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/IExportStrategy.js +3 -0
- package/dist/core/export/strategies/IExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/JsonExportStrategy.js +19 -0
- package/dist/core/export/strategies/JsonExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/JsonlExportStrategy.js +69 -0
- package/dist/core/export/strategies/JsonlExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/KblamExportStrategy.js +36 -0
- package/dist/core/export/strategies/KblamExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/LoraExportStrategy.js +46 -0
- package/dist/core/export/strategies/LoraExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/McpExportStrategy.js +67 -0
- package/dist/core/export/strategies/McpExportStrategy.js.map +1 -0
- package/dist/core/export/strategies/index.js +25 -0
- package/dist/core/export/strategies/index.js.map +1 -0
- package/dist/core/export/strategies/kbTriples.js +60 -0
- package/dist/core/export/strategies/kbTriples.js.map +1 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/knowledge/KnowledgeGraphBuilder.js +627 -0
- package/dist/core/knowledge/KnowledgeGraphBuilder.js.map +1 -0
- package/dist/core/knowledge/MergeRecord.js +3 -0
- package/dist/core/knowledge/MergeRecord.js.map +1 -0
- package/dist/core/knowledge/canon/Canonicalizer.js +414 -0
- package/dist/core/knowledge/canon/Canonicalizer.js.map +1 -0
- package/dist/core/knowledge/canon/index.js +18 -0
- package/dist/core/knowledge/canon/index.js.map +1 -0
- package/dist/core/knowledge/contradiction/HeuristicContradictionChecker.js +92 -0
- package/dist/core/knowledge/contradiction/HeuristicContradictionChecker.js.map +1 -0
- package/dist/core/knowledge/contradiction/LlmContradictionChecker.js +52 -0
- package/dist/core/knowledge/contradiction/LlmContradictionChecker.js.map +1 -0
- package/dist/core/knowledge/contradiction/index.js +19 -0
- package/dist/core/knowledge/contradiction/index.js.map +1 -0
- package/dist/core/knowledge/grounding/KeywordGroundingChecker.js +33 -0
- package/dist/core/knowledge/grounding/KeywordGroundingChecker.js.map +1 -0
- package/dist/core/knowledge/grounding/MiniCheckGroundingChecker.js +82 -0
- package/dist/core/knowledge/grounding/MiniCheckGroundingChecker.js.map +1 -0
- package/dist/core/knowledge/grounding/index.js +20 -0
- package/dist/core/knowledge/grounding/index.js.map +1 -0
- package/dist/core/knowledge/grounding/verbalize.js +38 -0
- package/dist/core/knowledge/grounding/verbalize.js.map +1 -0
- package/dist/core/knowledge/images/imageMetaGraph.js +136 -0
- package/dist/core/knowledge/images/imageMetaGraph.js.map +1 -0
- package/dist/core/knowledge/index.js +20 -0
- package/dist/core/knowledge/index.js.map +1 -0
- package/dist/core/knowledge/merging/KnowledgeMerger.js +624 -0
- package/dist/core/knowledge/merging/KnowledgeMerger.js.map +1 -0
- package/dist/core/knowledge/references/ReferenceResolver.js +184 -0
- package/dist/core/knowledge/references/ReferenceResolver.js.map +1 -0
- package/dist/core/knowledge/references/citations/CitationEvidenceProcessor.js +401 -0
- package/dist/core/knowledge/references/citations/CitationEvidenceProcessor.js.map +1 -0
- package/dist/core/knowledge/references/citations/CitationResolver.js +95 -0
- package/dist/core/knowledge/references/citations/CitationResolver.js.map +1 -0
- package/dist/core/knowledge/references/citations/GrobidClient.js +143 -0
- package/dist/core/knowledge/references/citations/GrobidClient.js.map +1 -0
- package/dist/core/knowledge/references/citations/TitleIdResolver.js +101 -0
- package/dist/core/knowledge/references/citations/TitleIdResolver.js.map +1 -0
- package/dist/core/knowledge/references/web/FetchCacheService.js +114 -0
- package/dist/core/knowledge/references/web/FetchCacheService.js.map +1 -0
- package/dist/core/knowledge/references/web/GatedFetcher.js +228 -0
- package/dist/core/knowledge/references/web/GatedFetcher.js.map +1 -0
- package/dist/core/knowledge/references/web/WebReferenceProcessor.js +164 -0
- package/dist/core/knowledge/references/web/WebReferenceProcessor.js.map +1 -0
- package/dist/core/knowledge/search/KnowledgeGraphSearch.js +261 -0
- package/dist/core/knowledge/search/KnowledgeGraphSearch.js.map +1 -0
- package/dist/core/knowledge/vocabulary.js +162 -0
- package/dist/core/knowledge/vocabulary.js.map +1 -0
- package/dist/core/llm/EmbeddingService.js +113 -0
- package/dist/core/llm/EmbeddingService.js.map +1 -0
- package/dist/core/llm/OllamaService.js +146 -0
- package/dist/core/llm/OllamaService.js.map +1 -0
- package/dist/core/llm/OpenAICompatibleService.js +190 -0
- package/dist/core/llm/OpenAICompatibleService.js.map +1 -0
- package/dist/core/llm/OpenAIEmbeddingService.js +129 -0
- package/dist/core/llm/OpenAIEmbeddingService.js.map +1 -0
- package/dist/core/llm/embeddingUtils.js +25 -0
- package/dist/core/llm/embeddingUtils.js.map +1 -0
- package/dist/core/llm/index.js +23 -0
- package/dist/core/llm/index.js.map +1 -0
- package/dist/core/llm/prompts/PromptManager.js +388 -0
- package/dist/core/llm/prompts/PromptManager.js.map +1 -0
- package/dist/core/llm/prompts/PromptTemplateEngine.js +257 -0
- package/dist/core/llm/prompts/PromptTemplateEngine.js.map +1 -0
- package/dist/core/llm/prompts/templates/partials/examples/EXAMPLE_STYLE_GUIDE.md +84 -0
- package/dist/core/llm/prompts/templates/partials/examples/article.md +187 -0
- package/dist/core/llm/prompts/templates/partials/examples/code.md +229 -0
- package/dist/core/llm/prompts/templates/partials/examples/communication.md +205 -0
- package/dist/core/llm/prompts/templates/partials/examples/documentation.md +262 -0
- package/dist/core/llm/prompts/templates/partials/examples/financial.md +157 -0
- package/dist/core/llm/prompts/templates/partials/examples/legal.md +153 -0
- package/dist/core/llm/prompts/templates/partials/examples/logs.md +127 -0
- package/dist/core/llm/prompts/templates/partials/examples/medical.md +218 -0
- package/dist/core/llm/prompts/templates/partials/examples/notes.md +201 -0
- package/dist/core/llm/prompts/templates/partials/examples/research.md +208 -0
- package/dist/core/llm/prompts/templates/partials/examples/tabular.md +178 -0
- package/dist/core/llm/prompts/templates/partials/examples/transcript.md +204 -0
- package/dist/core/llm/prompts/templates/partials/retrieved-context.hbs +18 -0
- package/dist/core/llm/prompts/templates/v1/system.hbs +371 -0
- package/dist/core/llm/prompts/templates/v1/user.hbs +20 -0
- package/dist/core/llm/prompts/templates/v2/system.hbs +573 -0
- package/dist/core/llm/prompts/templates/v2/user.hbs +20 -0
- package/dist/core/llm/prompts/templates/v3/system.hbs +861 -0
- package/dist/core/llm/prompts/templates/v3/user.hbs +16 -0
- package/dist/core/llm/prompts/templates/v4/system.hbs +800 -0
- package/dist/core/llm/prompts/templates/v4/user.hbs +40 -0
- package/dist/core/llm/prompts/templates/v4.5/system.hbs +71 -0
- package/dist/core/llm/prompts/templates/v4.5/user.hbs +46 -0
- package/dist/core/llm/prompts/templates/v5/glossary/system.hbs +40 -0
- package/dist/core/llm/prompts/templates/v5/glossary/user.hbs +11 -0
- package/dist/core/llm/prompts/templates/v5/system.hbs +163 -0
- package/dist/core/llm/prompts/templates/v5/user.hbs +55 -0
- package/dist/core/pipeline/GroundingTransform.js +52 -0
- package/dist/core/pipeline/GroundingTransform.js.map +1 -0
- package/dist/core/pipeline/PipelineRunner.js +51 -0
- package/dist/core/pipeline/PipelineRunner.js.map +1 -0
- package/dist/core/pipeline/RelationFilterTransform.js +72 -0
- package/dist/core/pipeline/RelationFilterTransform.js.map +1 -0
- package/dist/core/pipeline/index.js +20 -0
- package/dist/core/pipeline/index.js.map +1 -0
- package/dist/core/processor/FileProcessor.js +184 -0
- package/dist/core/processor/FileProcessor.js.map +1 -0
- package/dist/core/processor/ProcessedRegistry.js +38 -0
- package/dist/core/processor/ProcessedRegistry.js.map +1 -0
- package/dist/core/processor/ast/AstSeedService.js +0 -0
- package/dist/core/processor/ast/AstSeedService.js.map +1 -0
- package/dist/core/processor/ast/AstSymbolStore.js +110 -0
- package/dist/core/processor/ast/AstSymbolStore.js.map +1 -0
- package/dist/core/processor/ast/index.js +19 -0
- package/dist/core/processor/ast/index.js.map +1 -0
- package/dist/core/processor/chunking/TextChunker.js +98 -0
- package/dist/core/processor/chunking/TextChunker.js.map +1 -0
- package/dist/core/processor/chunking/index.js +18 -0
- package/dist/core/processor/chunking/index.js.map +1 -0
- package/dist/core/processor/classifier/CONTENT_CLASSES.js +294 -0
- package/dist/core/processor/classifier/CONTENT_CLASSES.js.map +1 -0
- package/dist/core/processor/classifier/CascadeContentClassifier.js +107 -0
- package/dist/core/processor/classifier/CascadeContentClassifier.js.map +1 -0
- package/dist/core/processor/classifier/HeuristicContentClassifier.js +113 -0
- package/dist/core/processor/classifier/HeuristicContentClassifier.js.map +1 -0
- package/dist/core/processor/classifier/IContentTypeClassifier.js +3 -0
- package/dist/core/processor/classifier/IContentTypeClassifier.js.map +1 -0
- package/dist/core/processor/classifier/LlmContentClassifier.js +107 -0
- package/dist/core/processor/classifier/LlmContentClassifier.js.map +1 -0
- package/dist/core/processor/classifier/NER_DOMAIN_EXAMPLES.js +498 -0
- package/dist/core/processor/classifier/NER_DOMAIN_EXAMPLES.js.map +1 -0
- package/dist/core/processor/classifier/index.js +21 -0
- package/dist/core/processor/classifier/index.js.map +1 -0
- package/dist/core/processor/classifier/mergeClassifications.js +32 -0
- package/dist/core/processor/classifier/mergeClassifications.js.map +1 -0
- package/dist/core/processor/index.js +20 -0
- package/dist/core/processor/index.js.map +1 -0
- package/dist/core/processor/readers/AudioReader.js +462 -0
- package/dist/core/processor/readers/AudioReader.js.map +1 -0
- package/dist/core/processor/readers/BinaryReader.js +90 -0
- package/dist/core/processor/readers/BinaryReader.js.map +1 -0
- package/dist/core/processor/readers/ChandraPdfReader.js +187 -0
- package/dist/core/processor/readers/ChandraPdfReader.js.map +1 -0
- package/dist/core/processor/readers/ChatExportReader.js +365 -0
- package/dist/core/processor/readers/ChatExportReader.js.map +1 -0
- package/dist/core/processor/readers/DoclingReader.js +445 -0
- package/dist/core/processor/readers/DoclingReader.js.map +1 -0
- package/dist/core/processor/readers/EmailReader.js +259 -0
- package/dist/core/processor/readers/EmailReader.js.map +1 -0
- package/dist/core/processor/readers/EpubReader.js +175 -0
- package/dist/core/processor/readers/EpubReader.js.map +1 -0
- package/dist/core/processor/readers/FileReader.js +90 -0
- package/dist/core/processor/readers/FileReader.js.map +1 -0
- package/dist/core/processor/readers/FileReaderFactory.js +49 -0
- package/dist/core/processor/readers/FileReaderFactory.js.map +1 -0
- package/dist/core/processor/readers/HtmlReader.js +371 -0
- package/dist/core/processor/readers/HtmlReader.js.map +1 -0
- package/dist/core/processor/readers/ImageReader.js +162 -0
- package/dist/core/processor/readers/ImageReader.js.map +1 -0
- package/dist/core/processor/readers/JsonFileReader.js +232 -0
- package/dist/core/processor/readers/JsonFileReader.js.map +1 -0
- package/dist/core/processor/readers/JupyterReader.js +178 -0
- package/dist/core/processor/readers/JupyterReader.js.map +1 -0
- package/dist/core/processor/readers/LatexReader.js +176 -0
- package/dist/core/processor/readers/LatexReader.js.map +1 -0
- package/dist/core/processor/readers/MarkdownReader.js +289 -0
- package/dist/core/processor/readers/MarkdownReader.js.map +1 -0
- package/dist/core/processor/readers/MarkerPdfReader.js +193 -0
- package/dist/core/processor/readers/MarkerPdfReader.js.map +1 -0
- package/dist/core/processor/readers/MistralOcrReader.js +198 -0
- package/dist/core/processor/readers/MistralOcrReader.js.map +1 -0
- package/dist/core/processor/readers/OfficeReader.js +174 -0
- package/dist/core/processor/readers/OfficeReader.js.map +1 -0
- package/dist/core/processor/readers/PdfReader.js +116 -0
- package/dist/core/processor/readers/PdfReader.js.map +1 -0
- package/dist/core/processor/readers/RtfReader.js +107 -0
- package/dist/core/processor/readers/RtfReader.js.map +1 -0
- package/dist/core/processor/readers/SubtitleReader.js +145 -0
- package/dist/core/processor/readers/SubtitleReader.js.map +1 -0
- package/dist/core/processor/readers/TesseractPdfReader.js +183 -0
- package/dist/core/processor/readers/TesseractPdfReader.js.map +1 -0
- package/dist/core/processor/readers/TextReader.js +129 -0
- package/dist/core/processor/readers/TextReader.js.map +1 -0
- package/dist/core/processor/readers/TranscriptReader.js +234 -0
- package/dist/core/processor/readers/TranscriptReader.js.map +1 -0
- package/dist/core/processor/readers/image/imageMetadata.js +155 -0
- package/dist/core/processor/readers/image/imageMetadata.js.map +1 -0
- package/dist/core/processor/readers/index.js +41 -0
- package/dist/core/processor/readers/index.js.map +1 -0
- package/dist/core/processor/readers/referenceExtraction.js +198 -0
- package/dist/core/processor/readers/referenceExtraction.js.map +1 -0
- package/dist/core/processor/readers/stripReferences.js +59 -0
- package/dist/core/processor/readers/stripReferences.js.map +1 -0
- package/dist/core/processor/readers/transcript/turnPacking.js +81 -0
- package/dist/core/processor/readers/transcript/turnPacking.js.map +1 -0
- package/dist/core/progress/NdjsonProgressEmitter.js +30 -0
- package/dist/core/progress/NdjsonProgressEmitter.js.map +1 -0
- package/dist/core/progress/NoopProgressEmitter.js +15 -0
- package/dist/core/progress/NoopProgressEmitter.js.map +1 -0
- package/dist/core/progress/index.js +19 -0
- package/dist/core/progress/index.js.map +1 -0
- package/dist/core/trace/TraceWriter.js +100 -0
- package/dist/core/trace/TraceWriter.js.map +1 -0
- package/dist/core/trace/events.js +13 -0
- package/dist/core/trace/events.js.map +1 -0
- package/dist/core/trace/index.js +20 -0
- package/dist/core/trace/index.js.map +1 -0
- package/dist/core/trace/lineage.js +97 -0
- package/dist/core/trace/lineage.js.map +1 -0
- package/dist/evaluation/BenchmarkRunner.js +171 -0
- package/dist/evaluation/BenchmarkRunner.js.map +1 -0
- package/dist/evaluation/classifier/ClassifierAccuracy.js +185 -0
- package/dist/evaluation/classifier/ClassifierAccuracy.js.map +1 -0
- package/dist/evaluation/classifier/labeledSamples.js +379 -0
- package/dist/evaluation/classifier/labeledSamples.js.map +1 -0
- package/dist/evaluation/compare/goldCompare.js +126 -0
- package/dist/evaluation/compare/goldCompare.js.map +1 -0
- package/dist/evaluation/crossre/compareScoring.js +30 -0
- package/dist/evaluation/crossre/compareScoring.js.map +1 -0
- package/dist/evaluation/datasets/CrossREDataset.js +170 -0
- package/dist/evaluation/datasets/CrossREDataset.js.map +1 -0
- package/dist/evaluation/datasets/IDataset.js +3 -0
- package/dist/evaluation/datasets/IDataset.js.map +1 -0
- package/dist/evaluation/datasets/RebelDataset.js +117 -0
- package/dist/evaluation/datasets/RebelDataset.js.map +1 -0
- package/dist/evaluation/datasets/RedocredDataset.js +218 -0
- package/dist/evaluation/datasets/RedocredDataset.js.map +1 -0
- package/dist/evaluation/datasets/SemEval2010Dataset.js +150 -0
- package/dist/evaluation/datasets/SemEval2010Dataset.js.map +1 -0
- package/dist/evaluation/index.js +33 -0
- package/dist/evaluation/index.js.map +1 -0
- package/dist/evaluation/matching/ExactMatcher.js +75 -0
- package/dist/evaluation/matching/ExactMatcher.js.map +1 -0
- package/dist/evaluation/matching/SemanticMatcher.js +143 -0
- package/dist/evaluation/matching/SemanticMatcher.js.map +1 -0
- package/dist/evaluation/metrics/TripleMetrics.js +64 -0
- package/dist/evaluation/metrics/TripleMetrics.js.map +1 -0
- package/dist/evaluation/mine/MineCheckpoint.js +114 -0
- package/dist/evaluation/mine/MineCheckpoint.js.map +1 -0
- package/dist/evaluation/mine/MineDataset.js +208 -0
- package/dist/evaluation/mine/MineDataset.js.map +1 -0
- package/dist/evaluation/mine/MineReporter.js +98 -0
- package/dist/evaluation/mine/MineReporter.js.map +1 -0
- package/dist/evaluation/mine/MineRunner.js +148 -0
- package/dist/evaluation/mine/MineRunner.js.map +1 -0
- package/dist/evaluation/mine/MineScorer.js +127 -0
- package/dist/evaluation/mine/MineScorer.js.map +1 -0
- package/dist/evaluation/mine/types.js +12 -0
- package/dist/evaluation/mine/types.js.map +1 -0
- package/dist/evaluation/reporters/ConsoleReporter.js +55 -0
- package/dist/evaluation/reporters/ConsoleReporter.js.map +1 -0
- package/dist/evaluation/reporters/JsonReporter.js +50 -0
- package/dist/evaluation/reporters/JsonReporter.js.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/quality/CompositeScore.js +61 -0
- package/dist/quality/CompositeScore.js.map +1 -0
- package/dist/quality/ConsistencyMetrics.js +70 -0
- package/dist/quality/ConsistencyMetrics.js.map +1 -0
- package/dist/quality/FactualMetrics.js +76 -0
- package/dist/quality/FactualMetrics.js.map +1 -0
- package/dist/quality/GraphHealthMetrics.js +68 -0
- package/dist/quality/GraphHealthMetrics.js.map +1 -0
- package/dist/quality/SemanticMetrics.js +102 -0
- package/dist/quality/SemanticMetrics.js.map +1 -0
- package/dist/quality/StructuralMetrics.js +60 -0
- package/dist/quality/StructuralMetrics.js.map +1 -0
- package/dist/quality/index.js +23 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/shared/index.js +20 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/logger/Logger.js +3 -0
- package/dist/shared/logger/Logger.js.map +1 -0
- package/dist/shared/logger/LoggerFactory.js +75 -0
- package/dist/shared/logger/LoggerFactory.js.map +1 -0
- package/dist/shared/logger/index.js +19 -0
- package/dist/shared/logger/index.js.map +1 -0
- package/dist/shared/shutdown.js +30 -0
- package/dist/shared/shutdown.js.map +1 -0
- package/dist/shared/utils/agglomerativeCluster.js +269 -0
- package/dist/shared/utils/agglomerativeCluster.js.map +1 -0
- package/dist/shared/utils/astSymbols.js +69 -0
- package/dist/shared/utils/astSymbols.js.map +1 -0
- package/dist/shared/utils/cosineSimilarity.js +18 -0
- package/dist/shared/utils/cosineSimilarity.js.map +1 -0
- package/dist/shared/utils/directoryTree.js +184 -0
- package/dist/shared/utils/directoryTree.js.map +1 -0
- package/dist/shared/utils/documentOutline.js +74 -0
- package/dist/shared/utils/documentOutline.js.map +1 -0
- package/dist/shared/utils/index.js +24 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/jaroWinklerSimilarity.js +60 -0
- package/dist/shared/utils/jaroWinklerSimilarity.js.map +1 -0
- package/dist/shared/utils/parseJsonLenient.js +27 -0
- package/dist/shared/utils/parseJsonLenient.js.map +1 -0
- package/dist/shared/utils/readConfig.js +42 -0
- package/dist/shared/utils/readConfig.js.map +1 -0
- package/dist/shared/utils/readRtf.js +216 -0
- package/dist/shared/utils/readRtf.js.map +1 -0
- package/dist/shared/utils/softmax.js +26 -0
- package/dist/shared/utils/softmax.js.map +1 -0
- package/dist/types/ContentClass.js +3 -0
- package/dist/types/ContentClass.js.map +1 -0
- package/dist/types/CorpusProfile.js +3 -0
- package/dist/types/CorpusProfile.js.map +1 -0
- package/dist/types/IContradictionChecker.js +3 -0
- package/dist/types/IContradictionChecker.js.map +1 -0
- package/dist/types/ICorpusAnalyzer.js +3 -0
- package/dist/types/ICorpusAnalyzer.js.map +1 -0
- package/dist/types/IDirectoryProcessor.js +3 -0
- package/dist/types/IDirectoryProcessor.js.map +1 -0
- package/dist/types/IEmbeddingProvider.js +3 -0
- package/dist/types/IEmbeddingProvider.js.map +1 -0
- package/dist/types/IEmbeddingService.js +6 -0
- package/dist/types/IEmbeddingService.js.map +1 -0
- package/dist/types/IFileProcessor.js +3 -0
- package/dist/types/IFileProcessor.js.map +1 -0
- package/dist/types/IGroundingChecker.js +3 -0
- package/dist/types/IGroundingChecker.js.map +1 -0
- package/dist/types/IKnowledgeGraphBuilder.js +3 -0
- package/dist/types/IKnowledgeGraphBuilder.js.map +1 -0
- package/dist/types/IKnowledgeGraphExporter.js +3 -0
- package/dist/types/IKnowledgeGraphExporter.js.map +1 -0
- package/dist/types/IKnowledgeGraphMerger.js +3 -0
- package/dist/types/IKnowledgeGraphMerger.js.map +1 -0
- package/dist/types/IKnowledgeGraphSearch.js +3 -0
- package/dist/types/IKnowledgeGraphSearch.js.map +1 -0
- package/dist/types/ILLMProvider.js +3 -0
- package/dist/types/ILLMProvider.js.map +1 -0
- package/dist/types/ILLMService.js +3 -0
- package/dist/types/ILLMService.js.map +1 -0
- package/dist/types/IObjectDetector.js +3 -0
- package/dist/types/IObjectDetector.js.map +1 -0
- package/dist/types/IProcessingService.js +3 -0
- package/dist/types/IProcessingService.js.map +1 -0
- package/dist/types/IProgressEmitter.js +3 -0
- package/dist/types/IProgressEmitter.js.map +1 -0
- package/dist/types/IPromptManager.js +3 -0
- package/dist/types/IPromptManager.js.map +1 -0
- package/dist/types/KnowledgeGraph.js +3 -0
- package/dist/types/KnowledgeGraph.js.map +1 -0
- package/dist/types/MCPKnowledgeGraph.js +3 -0
- package/dist/types/MCPKnowledgeGraph.js.map +1 -0
- package/dist/types/Observation.js +21 -0
- package/dist/types/Observation.js.map +1 -0
- package/dist/types/ProcessingOptions.js +3 -0
- package/dist/types/ProcessingOptions.js.map +1 -0
- package/dist/types/index.js +40 -0
- package/dist/types/index.js.map +1 -0
- 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
|