@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 @@
|
|
|
1
|
+
{"version":3,"file":"PromptTemplateEngine.js","sourceRoot":"","sources":["../../../../src/core/llm/prompts/PromptTemplateEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Example partial style guide (v5)
|
|
2
|
+
|
|
3
|
+
Every file in `partials/examples/*.md` is training signal, not decoration. The
|
|
4
|
+
model imitates whatever the gold examples do. These rules make the examples teach
|
|
5
|
+
the behavior the merged graph needs.
|
|
6
|
+
|
|
7
|
+
## Status of the existing files
|
|
8
|
+
|
|
9
|
+
**Already close to v5 style — light touch only:** `article.md`, `transcript.md`,
|
|
10
|
+
`code.md`, `notes.md`, `tabular.md`. These use lowercase reusable types and rich
|
|
11
|
+
observations. The only fix they need: collapse the few two-synonym `relationType`
|
|
12
|
+
arrays (e.g. `["contains", "uses"]`, `["used_to_create"]` is fine; `["develops",
|
|
13
|
+
"announces"]` should split into the single most accurate predicate) and remove the
|
|
14
|
+
one self-loop in `notes.md` (`Cursor-based Pagination → Cursor-based Pagination`).
|
|
15
|
+
|
|
16
|
+
**Need a full rewrite (rebuilt in v5 form):** `financial.md` ✅ done, `medical.md`
|
|
17
|
+
✅ done, `legal.md` ✅ done, `logs.md` ✅ done.
|
|
18
|
+
|
|
19
|
+
**Dedicated examples (replaced the shared `generic.md` fallback):** `research.md`,
|
|
20
|
+
`communication.md`, `documentation.md` ✅ done. Every `ContentClass` now routes to
|
|
21
|
+
its own example file (`CLASS_TO_PARTIAL`); there is no generic catch-all — the
|
|
22
|
+
KG-05 test in `vocabulary.test.ts` requires every example file to be reachable.
|
|
23
|
+
|
|
24
|
+
## The seven rules
|
|
25
|
+
|
|
26
|
+
1. **Reuse types.** Across an entire example file, the distinct `entityType` count
|
|
27
|
+
should be small. If every entity has a unique bespoke type, the example is
|
|
28
|
+
teaching sprawl. Lowercase `snake_case` only.
|
|
29
|
+
|
|
30
|
+
2. **One canonical predicate per relation.** `relationType` is a one-element array.
|
|
31
|
+
Never stack near-synonyms (`["uses", "depends_on"]` → pick one). This is the
|
|
32
|
+
single biggest fix; the old examples taught the 500-relation-type explosion.
|
|
33
|
+
|
|
34
|
+
3. **No type-pair predicates.** A relation label is a verb-like predicate
|
|
35
|
+
(`depends_on`, `targets`), never the two endpoint types restated
|
|
36
|
+
(`["SOURCE_IP", "REQUEST_METHOD"]` is not a relation — it's two node types).
|
|
37
|
+
This was the core defect in `logs.md`.
|
|
38
|
+
|
|
39
|
+
4. **No self-loops.** `from` and `to` always differ.
|
|
40
|
+
|
|
41
|
+
5. **Literals are observations, not entities.** Dollar amounts, timestamps, raw
|
|
42
|
+
counts, single values — fold them into an observation on a real entity. Don't
|
|
43
|
+
make `$5,000` or `2022-10-15 14:30:00` a node. (This guts most of the old
|
|
44
|
+
`financial.md` and de-hubs `logs.md`.)
|
|
45
|
+
|
|
46
|
+
6. **Observations add information beyond the type.** `entityType: medication` +
|
|
47
|
+
observation `"a medication"` is circular. State dosage, route, indication,
|
|
48
|
+
measured value — something the type doesn't already say.
|
|
49
|
+
|
|
50
|
+
7. **Consistent direction.** actor → object, specific → general, caller → callee.
|
|
51
|
+
Don't emit both `A → B` and `B → A` for one relationship.
|
|
52
|
+
|
|
53
|
+
## Domain-specific notes for the three rewrites
|
|
54
|
+
|
|
55
|
+
**medical.md** — real entities are patients, conditions, medications, procedures,
|
|
56
|
+
providers. Suggested type set: `person, condition, medication, procedure, test,
|
|
57
|
+
result, allergy, provider, metric`. Vitals and dosages are observations
|
|
58
|
+
(`"BP 120/80 mmHg"` on the patient or the reading), not nodes. Predicates:
|
|
59
|
+
`diagnosed_with`, `prescribed`, `underwent`, `has_result`, `allergic_to`,
|
|
60
|
+
`treated_by`, `related_to`. Drop the `entityType: "Patient Name"` pattern — the
|
|
61
|
+
type is `person`, the name is the patient's name.
|
|
62
|
+
|
|
63
|
+
**legal.md** — types: `person, organization, document, court, statute, term, date,
|
|
64
|
+
duration`. Predicates: `party_to`, `signed`, `governs`, `references`, `defines`,
|
|
65
|
+
`filed_in`, `related_to`. Effective dates are observations on the document, not
|
|
66
|
+
their own `date` nodes unless the date genuinely anchors multiple entities.
|
|
67
|
+
|
|
68
|
+
**logs.md** — this one needs the most rethinking. A log line's real entities are
|
|
69
|
+
the actors and resources: an IP, a user, a service, a process, a file, an error.
|
|
70
|
+
The timestamp is an observation on the event, not a hub node every edge points at.
|
|
71
|
+
Types: `ip_address, user, service, process, file, request, error, event`.
|
|
72
|
+
Predicates: `requests`, `authenticates_as`, `accesses`, `triggers`, `targets`,
|
|
73
|
+
`reports`, `related_to`. Each relation is one real interaction
|
|
74
|
+
(`ip_address → request : requests`), never `["CLIENT_IP", "REQUEST_METHOD"]`.
|
|
75
|
+
|
|
76
|
+
## Quick self-check before committing an example file
|
|
77
|
+
|
|
78
|
+
- Distinct entityType count across the file: small? (If > ~10 for a short file,
|
|
79
|
+
you're sprawling.)
|
|
80
|
+
- Every `relationType` array length 1?
|
|
81
|
+
- Any predicate that is just two node types concatenated? (Must be zero.)
|
|
82
|
+
- Any `from == to`? (Must be zero.)
|
|
83
|
+
- Any standalone literal-value entity? (Must be zero.)
|
|
84
|
+
- Does every observation say something the type doesn't?
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
### Example 1
|
|
2
|
+
|
|
3
|
+
Input:
|
|
4
|
+
|
|
5
|
+
## File Information
|
|
6
|
+
|
|
7
|
+
Path: `articles/veritas-labs-edge-launch.md`
|
|
8
|
+
|
|
9
|
+
## Content to Analyze
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Veritas Labs Unveils EdgeMind 2.0, Targeting Industrial IoT Market
|
|
13
|
+
|
|
14
|
+
San Francisco, CA — Veritas Labs today announced EdgeMind 2.0, an on-device inference
|
|
15
|
+
platform designed for industrial sensor networks. The release marks the company's first
|
|
16
|
+
major product push into the manufacturing sector after two years focused on consumer
|
|
17
|
+
wearables.
|
|
18
|
+
|
|
19
|
+
"EdgeMind 2.0 can run our largest vision model in under 12 ms on a $30 microcontroller,"
|
|
20
|
+
said Dr. Priya Nair, Veritas Labs' Chief Technology Officer. "That changes the economics
|
|
21
|
+
of predictive maintenance dramatically."
|
|
22
|
+
|
|
23
|
+
The platform targets process manufacturers and heavy equipment operators who require
|
|
24
|
+
real-time anomaly detection without continuous cloud connectivity. Early adopters include
|
|
25
|
+
Helix Manufacturing, which piloted the system across its stamping lines in Detroit.
|
|
26
|
+
|
|
27
|
+
Veritas Labs raised a $45M Series B in January 2024, led by Meridian Capital, which it
|
|
28
|
+
says will fund a 60-person engineering expansion over the next 18 months.
|
|
29
|
+
|
|
30
|
+
Competitors in the edge inference space include Arm's Ethos NPU ecosystem and Qualcomm's
|
|
31
|
+
AI Hub, though Veritas claims superior latency on thermal and vibration sensor workloads.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Output:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"entities": [
|
|
39
|
+
{
|
|
40
|
+
"name": "Veritas Labs",
|
|
41
|
+
"entityType": "organization",
|
|
42
|
+
"observations": [
|
|
43
|
+
"AI company pivoting from consumer wearables to industrial IoT",
|
|
44
|
+
"Raised $45M Series B in January 2024",
|
|
45
|
+
"Plans 60-person engineering expansion over 18 months"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "EdgeMind 2.0",
|
|
50
|
+
"entityType": "product",
|
|
51
|
+
"observations": [
|
|
52
|
+
"On-device inference platform for industrial sensor networks",
|
|
53
|
+
"Runs vision models in under 12 ms on a $30 microcontroller",
|
|
54
|
+
"Targets real-time anomaly detection without cloud connectivity"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Dr. Priya Nair",
|
|
59
|
+
"entityType": "person",
|
|
60
|
+
"observations": ["Chief Technology Officer at Veritas Labs"]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "Helix Manufacturing",
|
|
64
|
+
"entityType": "organization",
|
|
65
|
+
"observations": [
|
|
66
|
+
"Early adopter of EdgeMind 2.0",
|
|
67
|
+
"Piloted the system on stamping lines in Detroit"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "Meridian Capital",
|
|
72
|
+
"entityType": "organization",
|
|
73
|
+
"observations": ["Led Veritas Labs' $45M Series B round in January 2024"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Industrial IoT",
|
|
77
|
+
"entityType": "market_segment",
|
|
78
|
+
"observations": [
|
|
79
|
+
"Target market for EdgeMind 2.0",
|
|
80
|
+
"Includes process manufacturers and heavy equipment operators"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"relations": [
|
|
85
|
+
{ "from": "Veritas Labs", "to": "EdgeMind 2.0", "relationType": ["develops"] },
|
|
86
|
+
{ "from": "Dr. Priya Nair", "to": "Veritas Labs", "relationType": ["works_at"] },
|
|
87
|
+
{ "from": "EdgeMind 2.0", "to": "Industrial IoT", "relationType": ["targets"] },
|
|
88
|
+
{ "from": "Helix Manufacturing", "to": "EdgeMind 2.0", "relationType": ["pilots"] },
|
|
89
|
+
{ "from": "Meridian Capital", "to": "Veritas Labs", "relationType": ["invests_in"] }
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Example 2
|
|
97
|
+
|
|
98
|
+
Input:
|
|
99
|
+
|
|
100
|
+
## File Information
|
|
101
|
+
|
|
102
|
+
Path: `articles/crispr-drought-wheat.md`
|
|
103
|
+
|
|
104
|
+
## Content to Analyze
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Scientists Engineer Drought-Tolerant Wheat Using CRISPR
|
|
108
|
+
|
|
109
|
+
Researchers at the Global Crop Institute have developed a wheat variety, designated GCI-W7,
|
|
110
|
+
that maintains 85% of normal yield under severe drought conditions — roughly double the
|
|
111
|
+
resilience of current commercial strains.
|
|
112
|
+
|
|
113
|
+
The team, led by geneticist Dr. Amara Diallo, used CRISPR-Cas9 to silence the DREB2A
|
|
114
|
+
transcription factor gene, triggering the plant's drought-stress response pathway earlier
|
|
115
|
+
and more strongly than in wild-type wheat. The work, published in Nature Plants, builds on
|
|
116
|
+
earlier research by Monsanto and CSIRO that identified DREB2A as a key regulator.
|
|
117
|
+
|
|
118
|
+
"We're not adding foreign genes. We're editing an existing switch," said Dr. Diallo. The
|
|
119
|
+
distinction matters for regulatory pathways in the EU, where gene editing without foreign
|
|
120
|
+
DNA insertion faces a less restrictive approval process than traditional GMOs.
|
|
121
|
+
|
|
122
|
+
Field trials are planned for 2025 in Kenya and Pakistan, in collaboration with the CGIAR
|
|
123
|
+
network. If approved, GCI-W7 could reach farmers in drought-prone regions by 2028.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Output:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"entities": [
|
|
131
|
+
{
|
|
132
|
+
"name": "GCI-W7",
|
|
133
|
+
"entityType": "research_subject",
|
|
134
|
+
"observations": [
|
|
135
|
+
"Drought-tolerant wheat variety developed by Global Crop Institute",
|
|
136
|
+
"Maintains 85% yield under severe drought — ~2× resilience of commercial strains",
|
|
137
|
+
"Targets farmers in drought-prone regions; projected availability 2028"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "Dr. Amara Diallo",
|
|
142
|
+
"entityType": "person",
|
|
143
|
+
"observations": [
|
|
144
|
+
"Lead geneticist at Global Crop Institute",
|
|
145
|
+
"Led the CRISPR-Cas9 editing work on GCI-W7"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "Global Crop Institute",
|
|
150
|
+
"entityType": "organization",
|
|
151
|
+
"observations": [
|
|
152
|
+
"Research institution that developed GCI-W7",
|
|
153
|
+
"Planning field trials in Kenya and Pakistan in 2025"
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"name": "CRISPR-Cas9",
|
|
158
|
+
"entityType": "methodology",
|
|
159
|
+
"observations": [
|
|
160
|
+
"Gene editing tool used to silence DREB2A transcription factor",
|
|
161
|
+
"No foreign DNA inserted — activates existing drought-stress pathway"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "DREB2A",
|
|
166
|
+
"entityType": "concept",
|
|
167
|
+
"observations": [
|
|
168
|
+
"Transcription factor gene silenced to enhance drought tolerance",
|
|
169
|
+
"Key regulator identified in prior research by Monsanto and CSIRO"
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "CGIAR network",
|
|
174
|
+
"entityType": "organization",
|
|
175
|
+
"observations": ["Collaborating on 2025 field trials in Kenya and Pakistan"]
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
"relations": [
|
|
179
|
+
{ "from": "Dr. Amara Diallo", "to": "Global Crop Institute", "relationType": ["works_at"] },
|
|
180
|
+
{ "from": "Global Crop Institute","to": "GCI-W7", "relationType": ["develops"] },
|
|
181
|
+
{ "from": "CRISPR-Cas9", "to": "GCI-W7", "relationType": ["used_to_create"] },
|
|
182
|
+
{ "from": "CRISPR-Cas9", "to": "DREB2A", "relationType": ["targets"] },
|
|
183
|
+
{ "from": "GCI-W7", "to": "DREB2A", "relationType": ["silences"] },
|
|
184
|
+
{ "from": "Global Crop Institute","to": "CGIAR network", "relationType": ["collaborates_with"] }
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
```
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
### Example 1
|
|
2
|
+
|
|
3
|
+
Input:
|
|
4
|
+
|
|
5
|
+
## File Information
|
|
6
|
+
|
|
7
|
+
Path: `src/auth/AuthService.ts`
|
|
8
|
+
|
|
9
|
+
## Content to Analyze
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { Injectable } from '@di/decorators';
|
|
13
|
+
import { IAuthService } from './IAuthService';
|
|
14
|
+
import { UserRepository } from '../user/UserRepository';
|
|
15
|
+
import { JwtTokenService } from '../token/JwtTokenService';
|
|
16
|
+
import { HashService } from '../crypto/HashService';
|
|
17
|
+
|
|
18
|
+
@Injectable()
|
|
19
|
+
export class AuthService implements IAuthService {
|
|
20
|
+
constructor(
|
|
21
|
+
private readonly userRepo: UserRepository,
|
|
22
|
+
private readonly jwtService: JwtTokenService,
|
|
23
|
+
private readonly hashService: HashService,
|
|
24
|
+
) {}
|
|
25
|
+
|
|
26
|
+
async login(email: string, password: string): Promise<string> {
|
|
27
|
+
const user = await this.userRepo.findByEmail(email);
|
|
28
|
+
if (!user) throw new Error('User not found');
|
|
29
|
+
const valid = await this.hashService.compare(password, user.passwordHash);
|
|
30
|
+
if (!valid) throw new Error('Invalid credentials');
|
|
31
|
+
return this.jwtService.sign({ sub: user.id, email: user.email });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async refresh(token: string): Promise<string> {
|
|
35
|
+
const payload = this.jwtService.verify(token);
|
|
36
|
+
return this.jwtService.sign({ sub: payload.sub, email: payload.email });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async logout(userId: string): Promise<void> {
|
|
40
|
+
await this.jwtService.revoke(userId);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Output:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"entities": [
|
|
50
|
+
{
|
|
51
|
+
"name": "AuthService",
|
|
52
|
+
"entityType": "class",
|
|
53
|
+
"observations": [
|
|
54
|
+
"Implements IAuthService interface",
|
|
55
|
+
"Decorated with @Injectable for dependency injection",
|
|
56
|
+
"Handles login, token refresh, and logout operations"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "IAuthService",
|
|
61
|
+
"entityType": "interface",
|
|
62
|
+
"observations": [
|
|
63
|
+
"Contract implemented by AuthService",
|
|
64
|
+
"Defines authentication operations"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "UserRepository",
|
|
69
|
+
"entityType": "dependency",
|
|
70
|
+
"observations": [
|
|
71
|
+
"Injected via constructor",
|
|
72
|
+
"Used to look up users by email"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "JwtTokenService",
|
|
77
|
+
"entityType": "dependency",
|
|
78
|
+
"observations": [
|
|
79
|
+
"Injected via constructor",
|
|
80
|
+
"Signs, verifies, and revokes JWT tokens"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "HashService",
|
|
85
|
+
"entityType": "dependency",
|
|
86
|
+
"observations": [
|
|
87
|
+
"Injected via constructor",
|
|
88
|
+
"Compares plain-text passwords against stored hashes"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "login",
|
|
93
|
+
"entityType": "function",
|
|
94
|
+
"observations": [
|
|
95
|
+
"Accepts email and password, returns signed JWT string",
|
|
96
|
+
"Throws on unknown user or wrong password"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "refresh",
|
|
101
|
+
"entityType": "function",
|
|
102
|
+
"observations": ["Verifies existing token and issues a new one"]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "logout",
|
|
106
|
+
"entityType": "function",
|
|
107
|
+
"observations": ["Revokes all tokens for the given user ID"]
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"relations": [
|
|
111
|
+
{ "from": "AuthService", "to": "IAuthService", "relationType": ["implements"] },
|
|
112
|
+
{ "from": "AuthService", "to": "UserRepository", "relationType": ["depends_on"] },
|
|
113
|
+
{ "from": "AuthService", "to": "JwtTokenService", "relationType": ["depends_on"] },
|
|
114
|
+
{ "from": "AuthService", "to": "HashService", "relationType": ["depends_on"] },
|
|
115
|
+
{ "from": "login", "to": "UserRepository", "relationType": ["calls"] },
|
|
116
|
+
{ "from": "login", "to": "HashService", "relationType": ["calls"] },
|
|
117
|
+
{ "from": "login", "to": "JwtTokenService", "relationType": ["calls"] },
|
|
118
|
+
{ "from": "refresh", "to": "JwtTokenService", "relationType": ["calls"] },
|
|
119
|
+
{ "from": "logout", "to": "JwtTokenService", "relationType": ["calls"] }
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Example 2
|
|
127
|
+
|
|
128
|
+
Input:
|
|
129
|
+
|
|
130
|
+
## File Information
|
|
131
|
+
|
|
132
|
+
Path: `pipelines/ingest.py`
|
|
133
|
+
|
|
134
|
+
## Content to Analyze
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
import csv
|
|
138
|
+
import json
|
|
139
|
+
from dataclasses import dataclass
|
|
140
|
+
from typing import List
|
|
141
|
+
|
|
142
|
+
@dataclass
|
|
143
|
+
class SalesRecord:
|
|
144
|
+
sku: str
|
|
145
|
+
region: str
|
|
146
|
+
quantity: int
|
|
147
|
+
revenue: float
|
|
148
|
+
|
|
149
|
+
def read_csv(file_path: str) -> List[SalesRecord]:
|
|
150
|
+
records = []
|
|
151
|
+
with open(file_path, newline='') as f:
|
|
152
|
+
for row in csv.DictReader(f):
|
|
153
|
+
records.append(SalesRecord(
|
|
154
|
+
sku=row['SKU'],
|
|
155
|
+
region=row['Region'],
|
|
156
|
+
quantity=int(row['Quantity']),
|
|
157
|
+
revenue=float(row['Revenue']),
|
|
158
|
+
))
|
|
159
|
+
return records
|
|
160
|
+
|
|
161
|
+
def filter_by_region(records: List[SalesRecord], region: str) -> List[SalesRecord]:
|
|
162
|
+
return [r for r in records if r.region == region]
|
|
163
|
+
|
|
164
|
+
def export_json(records: List[SalesRecord], out_path: str) -> None:
|
|
165
|
+
with open(out_path, 'w') as f:
|
|
166
|
+
json.dump([vars(r) for r in records], f, indent=2)
|
|
167
|
+
|
|
168
|
+
def ingest_pipeline(src: str, region: str, dest: str) -> None:
|
|
169
|
+
records = read_csv(src)
|
|
170
|
+
filtered = filter_by_region(records, region)
|
|
171
|
+
export_json(filtered, dest)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Output:
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"entities": [
|
|
179
|
+
{
|
|
180
|
+
"name": "SalesRecord",
|
|
181
|
+
"entityType": "data_structure",
|
|
182
|
+
"observations": [
|
|
183
|
+
"Python dataclass with sku, region, quantity, revenue fields",
|
|
184
|
+
"Used as the canonical in-memory representation of a CSV row"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "read_csv",
|
|
189
|
+
"entityType": "function",
|
|
190
|
+
"observations": [
|
|
191
|
+
"Reads a CSV file and returns a list of SalesRecord instances",
|
|
192
|
+
"Uses csv.DictReader; expects SKU, Region, Quantity, Revenue columns"
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "filter_by_region",
|
|
197
|
+
"entityType": "function",
|
|
198
|
+
"observations": [
|
|
199
|
+
"Filters a list of SalesRecord by exact region string match",
|
|
200
|
+
"Returns a new list; does not mutate input"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "export_json",
|
|
205
|
+
"entityType": "function",
|
|
206
|
+
"observations": [
|
|
207
|
+
"Serializes SalesRecord list to a pretty-printed JSON file",
|
|
208
|
+
"Converts dataclasses to dicts via vars()"
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "ingest_pipeline",
|
|
213
|
+
"entityType": "function",
|
|
214
|
+
"observations": [
|
|
215
|
+
"Orchestrates the full ETL: read → filter → export",
|
|
216
|
+
"Entry point for the ingestion module"
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"relations": [
|
|
221
|
+
{ "from": "read_csv", "to": "SalesRecord", "relationType": ["produces"] },
|
|
222
|
+
{ "from": "filter_by_region", "to": "SalesRecord", "relationType": ["processes"] },
|
|
223
|
+
{ "from": "export_json", "to": "SalesRecord", "relationType": ["processes"] },
|
|
224
|
+
{ "from": "ingest_pipeline", "to": "read_csv", "relationType": ["calls"] },
|
|
225
|
+
{ "from": "ingest_pipeline", "to": "filter_by_region", "relationType": ["calls"] },
|
|
226
|
+
{ "from": "ingest_pipeline", "to": "export_json", "relationType": ["calls"] }
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
```
|