@rbalchii/anchor-engine 4.7.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 +609 -0
- package/README.md +317 -0
- package/anchor.bat +5 -0
- package/docs/API.md +314 -0
- package/docs/DEPLOYMENT.md +448 -0
- package/docs/INDEX.md +226 -0
- package/docs/STAR_Whitepaper_Executive.md +216 -0
- package/docs/TROUBLESHOOTING.md +535 -0
- package/docs/archive/GIT_BACKUP_VERIFICATION.md +297 -0
- package/docs/archive/adoption-guide.md +264 -0
- package/docs/archive/adoption-preparation.md +179 -0
- package/docs/archive/agent-harness-integration.md +227 -0
- package/docs/archive/api-reference.md +106 -0
- package/docs/archive/api_flows_diagram.md +118 -0
- package/docs/archive/architecture.md +410 -0
- package/docs/archive/architecture_diagram.md +174 -0
- package/docs/archive/broader-adoption-preparation.md +175 -0
- package/docs/archive/browser-paradigm-architecture.md +163 -0
- package/docs/archive/chat-integration.md +124 -0
- package/docs/archive/community-adoption-materials.md +103 -0
- package/docs/archive/community-adoption.md +147 -0
- package/docs/archive/comparison-with-siloed-solutions.md +192 -0
- package/docs/archive/comprehensive-docs.md +156 -0
- package/docs/archive/data_flow_diagram.md +251 -0
- package/docs/archive/enhancement-implementation-summary.md +146 -0
- package/docs/archive/evolution-summary.md +141 -0
- package/docs/archive/ingestion_pipeline_diagram.md +198 -0
- package/docs/archive/native-module-profiling-results.md +135 -0
- package/docs/archive/positioning-document.md +158 -0
- package/docs/archive/positioning.md +175 -0
- package/docs/archive/query-builder-documentation.md +218 -0
- package/docs/archive/quick-reference.md +40 -0
- package/docs/archive/quickstart.md +63 -0
- package/docs/archive/relationship-narrative-discovery.md +141 -0
- package/docs/archive/search-logic-improvement-plan.md +336 -0
- package/docs/archive/search_architecture_diagram.md +212 -0
- package/docs/archive/semantic-architecture-guide.md +97 -0
- package/docs/archive/sequence-diagrams.md +128 -0
- package/docs/archive/system_components_diagram.md +296 -0
- package/docs/archive/test-framework-integration.md +109 -0
- package/docs/archive/testing-framework-documentation.md +397 -0
- package/docs/archive/testing-framework-summary.md +121 -0
- package/docs/archive/testing-framework.md +377 -0
- package/docs/archive/ui-architecture.md +75 -0
- package/docs/arxiv/BIBLIOGRAPHY.bib +145 -0
- package/docs/arxiv/RELATED_WORK.tex +39 -0
- package/docs/arxiv/compile.bat +48 -0
- package/docs/arxiv/joss_response.md +33 -0
- package/docs/arxiv/prepare-submission.bat +46 -0
- package/docs/arxiv/review.md +128 -0
- package/docs/arxiv/star-whitepaper.tex +657 -0
- package/docs/code-patterns.md +289 -0
- package/docs/whitepaper.md +445 -0
- package/engine/dist/agent/runtime.d.ts +41 -0
- package/engine/dist/agent/runtime.d.ts.map +1 -0
- package/engine/dist/agent/runtime.js +73 -0
- package/engine/dist/agent/runtime.js.map +1 -0
- package/engine/dist/commands/audit-tags.d.ts +14 -0
- package/engine/dist/commands/audit-tags.d.ts.map +1 -0
- package/engine/dist/commands/audit-tags.js +180 -0
- package/engine/dist/commands/audit-tags.js.map +1 -0
- package/engine/dist/commands/distill.d.ts +19 -0
- package/engine/dist/commands/distill.d.ts.map +1 -0
- package/engine/dist/commands/distill.js +114 -0
- package/engine/dist/commands/distill.js.map +1 -0
- package/engine/dist/commands/generate-synonyms.d.ts +14 -0
- package/engine/dist/commands/generate-synonyms.d.ts.map +1 -0
- package/engine/dist/commands/generate-synonyms.js +91 -0
- package/engine/dist/commands/generate-synonyms.js.map +1 -0
- package/engine/dist/config/index.d.ts +115 -0
- package/engine/dist/config/index.d.ts.map +1 -0
- package/engine/dist/config/index.js +326 -0
- package/engine/dist/config/index.js.map +1 -0
- package/engine/dist/config/max-recall-config.d.ts +102 -0
- package/engine/dist/config/max-recall-config.d.ts.map +1 -0
- package/engine/dist/config/max-recall-config.js +102 -0
- package/engine/dist/config/max-recall-config.js.map +1 -0
- package/engine/dist/config/paths.d.ts +40 -0
- package/engine/dist/config/paths.d.ts.map +1 -0
- package/engine/dist/config/paths.js +49 -0
- package/engine/dist/config/paths.js.map +1 -0
- package/engine/dist/core/batch.d.ts +19 -0
- package/engine/dist/core/batch.d.ts.map +1 -0
- package/engine/dist/core/batch.js +37 -0
- package/engine/dist/core/batch.js.map +1 -0
- package/engine/dist/core/db.d.ts +58 -0
- package/engine/dist/core/db.d.ts.map +1 -0
- package/engine/dist/core/db.js +563 -0
- package/engine/dist/core/db.js.map +1 -0
- package/engine/dist/core/inference/ChatWorker.d.ts +2 -0
- package/engine/dist/core/inference/ChatWorker.d.ts.map +1 -0
- package/engine/dist/core/inference/ChatWorker.js +28 -0
- package/engine/dist/core/inference/ChatWorker.js.map +1 -0
- package/engine/dist/core/inference/context_manager.d.ts +49 -0
- package/engine/dist/core/inference/context_manager.d.ts.map +1 -0
- package/engine/dist/core/inference/context_manager.js +199 -0
- package/engine/dist/core/inference/context_manager.js.map +1 -0
- package/engine/dist/core/inference/llamaLoaderWorker.d.ts +2 -0
- package/engine/dist/core/inference/llamaLoaderWorker.d.ts.map +1 -0
- package/engine/dist/core/inference/llamaLoaderWorker.js +23 -0
- package/engine/dist/core/inference/llamaLoaderWorker.js.map +1 -0
- package/engine/dist/core/vector.d.ts +40 -0
- package/engine/dist/core/vector.d.ts.map +1 -0
- package/engine/dist/core/vector.js +167 -0
- package/engine/dist/core/vector.js.map +1 -0
- package/engine/dist/index.d.ts +4 -0
- package/engine/dist/index.d.ts.map +1 -0
- package/engine/dist/index.js +400 -0
- package/engine/dist/index.js.map +1 -0
- package/engine/dist/middleware/auth.d.ts +14 -0
- package/engine/dist/middleware/auth.d.ts.map +1 -0
- package/engine/dist/middleware/auth.js +44 -0
- package/engine/dist/middleware/auth.js.map +1 -0
- package/engine/dist/middleware/request-tracing.d.ts +29 -0
- package/engine/dist/middleware/request-tracing.d.ts.map +1 -0
- package/engine/dist/middleware/request-tracing.js +115 -0
- package/engine/dist/middleware/request-tracing.js.map +1 -0
- package/engine/dist/middleware/validate.d.ts +30 -0
- package/engine/dist/middleware/validate.d.ts.map +1 -0
- package/engine/dist/middleware/validate.js +117 -0
- package/engine/dist/middleware/validate.js.map +1 -0
- package/engine/dist/native/index.d.ts +106 -0
- package/engine/dist/native/index.d.ts.map +1 -0
- package/engine/dist/native/index.js +230 -0
- package/engine/dist/native/index.js.map +1 -0
- package/engine/dist/native/types.d.ts +45 -0
- package/engine/dist/native/types.d.ts.map +1 -0
- package/engine/dist/native/types.js +6 -0
- package/engine/dist/native/types.js.map +1 -0
- package/engine/dist/profiling/atomization-profiling.d.ts +8 -0
- package/engine/dist/profiling/atomization-profiling.d.ts.map +1 -0
- package/engine/dist/profiling/atomization-profiling.js +108 -0
- package/engine/dist/profiling/atomization-profiling.js.map +1 -0
- package/engine/dist/profiling/bottleneck-identification.d.ts +8 -0
- package/engine/dist/profiling/bottleneck-identification.d.ts.map +1 -0
- package/engine/dist/profiling/bottleneck-identification.js +249 -0
- package/engine/dist/profiling/bottleneck-identification.js.map +1 -0
- package/engine/dist/profiling/content-sanitization-profiling.d.ts +12 -0
- package/engine/dist/profiling/content-sanitization-profiling.d.ts.map +1 -0
- package/engine/dist/profiling/content-sanitization-profiling.js +266 -0
- package/engine/dist/profiling/content-sanitization-profiling.js.map +1 -0
- package/engine/dist/profiling/simhash-profiling.d.ts +11 -0
- package/engine/dist/profiling/simhash-profiling.d.ts.map +1 -0
- package/engine/dist/profiling/simhash-profiling.js +168 -0
- package/engine/dist/profiling/simhash-profiling.js.map +1 -0
- package/engine/dist/routes/api.d.ts +9 -0
- package/engine/dist/routes/api.d.ts.map +1 -0
- package/engine/dist/routes/api.js +37 -0
- package/engine/dist/routes/api.js.map +1 -0
- package/engine/dist/routes/enhanced-api.d.ts +9 -0
- package/engine/dist/routes/enhanced-api.d.ts.map +1 -0
- package/engine/dist/routes/enhanced-api.js +139 -0
- package/engine/dist/routes/enhanced-api.js.map +1 -0
- package/engine/dist/routes/health.d.ts +8 -0
- package/engine/dist/routes/health.d.ts.map +1 -0
- package/engine/dist/routes/health.js +89 -0
- package/engine/dist/routes/health.js.map +1 -0
- package/engine/dist/routes/monitoring.d.ts +8 -0
- package/engine/dist/routes/monitoring.d.ts.map +1 -0
- package/engine/dist/routes/monitoring.js +509 -0
- package/engine/dist/routes/monitoring.js.map +1 -0
- package/engine/dist/routes/v1/admin.d.ts +3 -0
- package/engine/dist/routes/v1/admin.d.ts.map +1 -0
- package/engine/dist/routes/v1/admin.js +261 -0
- package/engine/dist/routes/v1/admin.js.map +1 -0
- package/engine/dist/routes/v1/atoms.d.ts +3 -0
- package/engine/dist/routes/v1/atoms.d.ts.map +1 -0
- package/engine/dist/routes/v1/atoms.js +172 -0
- package/engine/dist/routes/v1/atoms.js.map +1 -0
- package/engine/dist/routes/v1/backup.d.ts +3 -0
- package/engine/dist/routes/v1/backup.d.ts.map +1 -0
- package/engine/dist/routes/v1/backup.js +100 -0
- package/engine/dist/routes/v1/backup.js.map +1 -0
- package/engine/dist/routes/v1/git.d.ts +3 -0
- package/engine/dist/routes/v1/git.d.ts.map +1 -0
- package/engine/dist/routes/v1/git.js +316 -0
- package/engine/dist/routes/v1/git.js.map +1 -0
- package/engine/dist/routes/v1/ingest.d.ts +3 -0
- package/engine/dist/routes/v1/ingest.d.ts.map +1 -0
- package/engine/dist/routes/v1/ingest.js +66 -0
- package/engine/dist/routes/v1/ingest.js.map +1 -0
- package/engine/dist/routes/v1/memory.d.ts +14 -0
- package/engine/dist/routes/v1/memory.d.ts.map +1 -0
- package/engine/dist/routes/v1/memory.js +87 -0
- package/engine/dist/routes/v1/memory.js.map +1 -0
- package/engine/dist/routes/v1/research.d.ts +3 -0
- package/engine/dist/routes/v1/research.d.ts.map +1 -0
- package/engine/dist/routes/v1/research.js +109 -0
- package/engine/dist/routes/v1/research.js.map +1 -0
- package/engine/dist/routes/v1/search.d.ts +3 -0
- package/engine/dist/routes/v1/search.d.ts.map +1 -0
- package/engine/dist/routes/v1/search.js +180 -0
- package/engine/dist/routes/v1/search.js.map +1 -0
- package/engine/dist/routes/v1/settings.d.ts +8 -0
- package/engine/dist/routes/v1/settings.d.ts.map +1 -0
- package/engine/dist/routes/v1/settings.js +211 -0
- package/engine/dist/routes/v1/settings.js.map +1 -0
- package/engine/dist/routes/v1/system.d.ts +3 -0
- package/engine/dist/routes/v1/system.d.ts.map +1 -0
- package/engine/dist/routes/v1/system.js +326 -0
- package/engine/dist/routes/v1/system.js.map +1 -0
- package/engine/dist/routes/v1/tags.d.ts +3 -0
- package/engine/dist/routes/v1/tags.d.ts.map +1 -0
- package/engine/dist/routes/v1/tags.js +102 -0
- package/engine/dist/routes/v1/tags.js.map +1 -0
- package/engine/dist/server-8080.d.ts +2 -0
- package/engine/dist/server-8080.d.ts.map +1 -0
- package/engine/dist/server-8080.js +74 -0
- package/engine/dist/server-8080.js.map +1 -0
- package/engine/dist/services/backup/backup-restore.d.ts +37 -0
- package/engine/dist/services/backup/backup-restore.d.ts.map +1 -0
- package/engine/dist/services/backup/backup-restore.js +385 -0
- package/engine/dist/services/backup/backup-restore.js.map +1 -0
- package/engine/dist/services/backup/backup.d.ts +14 -0
- package/engine/dist/services/backup/backup.d.ts.map +1 -0
- package/engine/dist/services/backup/backup.js +442 -0
- package/engine/dist/services/backup/backup.js.map +1 -0
- package/engine/dist/services/distillation/radial-distiller-v2.d.ts +127 -0
- package/engine/dist/services/distillation/radial-distiller-v2.d.ts.map +1 -0
- package/engine/dist/services/distillation/radial-distiller-v2.js +503 -0
- package/engine/dist/services/distillation/radial-distiller-v2.js.map +1 -0
- package/engine/dist/services/distillation/radial-distiller.d.ts +63 -0
- package/engine/dist/services/distillation/radial-distiller.d.ts.map +1 -0
- package/engine/dist/services/distillation/radial-distiller.js +394 -0
- package/engine/dist/services/distillation/radial-distiller.js.map +1 -0
- package/engine/dist/services/health-check-enhanced.d.ts +89 -0
- package/engine/dist/services/health-check-enhanced.d.ts.map +1 -0
- package/engine/dist/services/health-check-enhanced.js +417 -0
- package/engine/dist/services/health-check-enhanced.js.map +1 -0
- package/engine/dist/services/idle-manager.d.ts +56 -0
- package/engine/dist/services/idle-manager.d.ts.map +1 -0
- package/engine/dist/services/idle-manager.js +210 -0
- package/engine/dist/services/idle-manager.js.map +1 -0
- package/engine/dist/services/inference/inference-service.d.ts +27 -0
- package/engine/dist/services/inference/inference-service.d.ts.map +1 -0
- package/engine/dist/services/inference/inference-service.js +89 -0
- package/engine/dist/services/inference/inference-service.js.map +1 -0
- package/engine/dist/services/inference/inference.d.ts +59 -0
- package/engine/dist/services/inference/inference.d.ts.map +1 -0
- package/engine/dist/services/inference/inference.js +131 -0
- package/engine/dist/services/inference/inference.js.map +1 -0
- package/engine/dist/services/ingest/atomizer-service.d.ts +74 -0
- package/engine/dist/services/ingest/atomizer-service.d.ts.map +1 -0
- package/engine/dist/services/ingest/atomizer-service.js +982 -0
- package/engine/dist/services/ingest/atomizer-service.js.map +1 -0
- package/engine/dist/services/ingest/content-cleaner.d.ts +43 -0
- package/engine/dist/services/ingest/content-cleaner.d.ts.map +1 -0
- package/engine/dist/services/ingest/content-cleaner.js +166 -0
- package/engine/dist/services/ingest/content-cleaner.js.map +1 -0
- package/engine/dist/services/ingest/github-ingest-service.d.ts +103 -0
- package/engine/dist/services/ingest/github-ingest-service.d.ts.map +1 -0
- package/engine/dist/services/ingest/github-ingest-service.js +537 -0
- package/engine/dist/services/ingest/github-ingest-service.js.map +1 -0
- package/engine/dist/services/ingest/ingest-atomic.d.ts +16 -0
- package/engine/dist/services/ingest/ingest-atomic.d.ts.map +1 -0
- package/engine/dist/services/ingest/ingest-atomic.js +437 -0
- package/engine/dist/services/ingest/ingest-atomic.js.map +1 -0
- package/engine/dist/services/ingest/ingest.d.ts +50 -0
- package/engine/dist/services/ingest/ingest.d.ts.map +1 -0
- package/engine/dist/services/ingest/ingest.js +230 -0
- package/engine/dist/services/ingest/ingest.js.map +1 -0
- package/engine/dist/services/ingest/watchdog.d.ts +31 -0
- package/engine/dist/services/ingest/watchdog.d.ts.map +1 -0
- package/engine/dist/services/ingest/watchdog.js +400 -0
- package/engine/dist/services/ingest/watchdog.js.map +1 -0
- package/engine/dist/services/llm/context.d.ts +6 -0
- package/engine/dist/services/llm/context.d.ts.map +1 -0
- package/engine/dist/services/llm/context.js +80 -0
- package/engine/dist/services/llm/context.js.map +1 -0
- package/engine/dist/services/llm/provider.d.ts +23 -0
- package/engine/dist/services/llm/provider.d.ts.map +1 -0
- package/engine/dist/services/llm/provider.js +338 -0
- package/engine/dist/services/llm/provider.js.map +1 -0
- package/engine/dist/services/llm/reader.d.ts +12 -0
- package/engine/dist/services/llm/reader.d.ts.map +1 -0
- package/engine/dist/services/llm/reader.js +40 -0
- package/engine/dist/services/llm/reader.js.map +1 -0
- package/engine/dist/services/mirror/mirror.d.ts +28 -0
- package/engine/dist/services/mirror/mirror.d.ts.map +1 -0
- package/engine/dist/services/mirror/mirror.js +208 -0
- package/engine/dist/services/mirror/mirror.js.map +1 -0
- package/engine/dist/services/nlp/nlp-service.d.ts +70 -0
- package/engine/dist/services/nlp/nlp-service.d.ts.map +1 -0
- package/engine/dist/services/nlp/nlp-service.js +151 -0
- package/engine/dist/services/nlp/nlp-service.js.map +1 -0
- package/engine/dist/services/nlp/query-parser.d.ts +9 -0
- package/engine/dist/services/nlp/query-parser.d.ts.map +1 -0
- package/engine/dist/services/nlp/query-parser.js +29 -0
- package/engine/dist/services/nlp/query-parser.js.map +1 -0
- package/engine/dist/services/query-builder/DataFrame.d.ts +95 -0
- package/engine/dist/services/query-builder/DataFrame.d.ts.map +1 -0
- package/engine/dist/services/query-builder/DataFrame.js +263 -0
- package/engine/dist/services/query-builder/DataFrame.js.map +1 -0
- package/engine/dist/services/query-builder/QueryBuilder.d.ts +106 -0
- package/engine/dist/services/query-builder/QueryBuilder.d.ts.map +1 -0
- package/engine/dist/services/query-builder/QueryBuilder.js +235 -0
- package/engine/dist/services/query-builder/QueryBuilder.js.map +1 -0
- package/engine/dist/services/query-builder/utils/export.d.ts +11 -0
- package/engine/dist/services/query-builder/utils/export.d.ts.map +1 -0
- package/engine/dist/services/query-builder/utils/export.js +130 -0
- package/engine/dist/services/query-builder/utils/export.js.map +1 -0
- package/engine/dist/services/research/researcher.d.ts +15 -0
- package/engine/dist/services/research/researcher.d.ts.map +1 -0
- package/engine/dist/services/research/researcher.js +123 -0
- package/engine/dist/services/research/researcher.js.map +1 -0
- package/engine/dist/services/scribe/scribe.d.ts +43 -0
- package/engine/dist/services/scribe/scribe.d.ts.map +1 -0
- package/engine/dist/services/scribe/scribe.js +135 -0
- package/engine/dist/services/scribe/scribe.js.map +1 -0
- package/engine/dist/services/search/bright-nodes.d.ts +41 -0
- package/engine/dist/services/search/bright-nodes.d.ts.map +1 -0
- package/engine/dist/services/search/bright-nodes.js +117 -0
- package/engine/dist/services/search/bright-nodes.js.map +1 -0
- package/engine/dist/services/search/context-inflator.d.ts +63 -0
- package/engine/dist/services/search/context-inflator.d.ts.map +1 -0
- package/engine/dist/services/search/context-inflator.js +649 -0
- package/engine/dist/services/search/context-inflator.js.map +1 -0
- package/engine/dist/services/search/context-manager.d.ts +34 -0
- package/engine/dist/services/search/context-manager.d.ts.map +1 -0
- package/engine/dist/services/search/context-manager.js +124 -0
- package/engine/dist/services/search/context-manager.js.map +1 -0
- package/engine/dist/services/search/distributed-query.d.ts +38 -0
- package/engine/dist/services/search/distributed-query.d.ts.map +1 -0
- package/engine/dist/services/search/distributed-query.js +105 -0
- package/engine/dist/services/search/distributed-query.js.map +1 -0
- package/engine/dist/services/search/explore.d.ts +73 -0
- package/engine/dist/services/search/explore.d.ts.map +1 -0
- package/engine/dist/services/search/explore.js +388 -0
- package/engine/dist/services/search/explore.js.map +1 -0
- package/engine/dist/services/search/graph-context-serializer.d.ts +76 -0
- package/engine/dist/services/search/graph-context-serializer.d.ts.map +1 -0
- package/engine/dist/services/search/graph-context-serializer.js +435 -0
- package/engine/dist/services/search/graph-context-serializer.js.map +1 -0
- package/engine/dist/services/search/llm-context-formatter.d.ts +122 -0
- package/engine/dist/services/search/llm-context-formatter.d.ts.map +1 -0
- package/engine/dist/services/search/llm-context-formatter.js +394 -0
- package/engine/dist/services/search/llm-context-formatter.js.map +1 -0
- package/engine/dist/services/search/physics-tag-walker.d.ts +115 -0
- package/engine/dist/services/search/physics-tag-walker.d.ts.map +1 -0
- package/engine/dist/services/search/physics-tag-walker.js +611 -0
- package/engine/dist/services/search/physics-tag-walker.js.map +1 -0
- package/engine/dist/services/search/query-parser.d.ts +66 -0
- package/engine/dist/services/search/query-parser.d.ts.map +1 -0
- package/engine/dist/services/search/query-parser.js +346 -0
- package/engine/dist/services/search/query-parser.js.map +1 -0
- package/engine/dist/services/search/search-utils.d.ts +100 -0
- package/engine/dist/services/search/search-utils.d.ts.map +1 -0
- package/engine/dist/services/search/search-utils.js +473 -0
- package/engine/dist/services/search/search-utils.js.map +1 -0
- package/engine/dist/services/search/search.d.ts +116 -0
- package/engine/dist/services/search/search.d.ts.map +1 -0
- package/engine/dist/services/search/search.js +1286 -0
- package/engine/dist/services/search/search.js.map +1 -0
- package/engine/dist/services/search/sovereign-system-prompt.d.ts +48 -0
- package/engine/dist/services/search/sovereign-system-prompt.d.ts.map +1 -0
- package/engine/dist/services/search/sovereign-system-prompt.js +101 -0
- package/engine/dist/services/search/sovereign-system-prompt.js.map +1 -0
- package/engine/dist/services/search/streaming-search.d.ts +51 -0
- package/engine/dist/services/search/streaming-search.d.ts.map +1 -0
- package/engine/dist/services/search/streaming-search.js +94 -0
- package/engine/dist/services/search/streaming-search.js.map +1 -0
- package/engine/dist/services/semantic/semantic-ingestion-service.d.ts +53 -0
- package/engine/dist/services/semantic/semantic-ingestion-service.d.ts.map +1 -0
- package/engine/dist/services/semantic/semantic-ingestion-service.js +625 -0
- package/engine/dist/services/semantic/semantic-ingestion-service.js.map +1 -0
- package/engine/dist/services/semantic/semantic-molecule-processor.d.ts +68 -0
- package/engine/dist/services/semantic/semantic-molecule-processor.d.ts.map +1 -0
- package/engine/dist/services/semantic/semantic-molecule-processor.js +176 -0
- package/engine/dist/services/semantic/semantic-molecule-processor.js.map +1 -0
- package/engine/dist/services/semantic/semantic-search.d.ts +52 -0
- package/engine/dist/services/semantic/semantic-search.d.ts.map +1 -0
- package/engine/dist/services/semantic/semantic-search.js +649 -0
- package/engine/dist/services/semantic/semantic-search.js.map +1 -0
- package/engine/dist/services/semantic/semantic-tag-deriver.d.ts +64 -0
- package/engine/dist/services/semantic/semantic-tag-deriver.d.ts.map +1 -0
- package/engine/dist/services/semantic/semantic-tag-deriver.js +191 -0
- package/engine/dist/services/semantic/semantic-tag-deriver.js.map +1 -0
- package/engine/dist/services/semantic/types/semantic.d.ts +26 -0
- package/engine/dist/services/semantic/types/semantic.d.ts.map +1 -0
- package/engine/dist/services/semantic/types/semantic.js +7 -0
- package/engine/dist/services/semantic/types/semantic.js.map +1 -0
- package/engine/dist/services/synonyms/auto-synonym-generator.d.ts +79 -0
- package/engine/dist/services/synonyms/auto-synonym-generator.d.ts.map +1 -0
- package/engine/dist/services/synonyms/auto-synonym-generator.js +415 -0
- package/engine/dist/services/synonyms/auto-synonym-generator.js.map +1 -0
- package/engine/dist/services/system-status.d.ts +68 -0
- package/engine/dist/services/system-status.d.ts.map +1 -0
- package/engine/dist/services/system-status.js +107 -0
- package/engine/dist/services/system-status.js.map +1 -0
- package/engine/dist/services/tags/discovery.d.ts +16 -0
- package/engine/dist/services/tags/discovery.d.ts.map +1 -0
- package/engine/dist/services/tags/discovery.js +206 -0
- package/engine/dist/services/tags/discovery.js.map +1 -0
- package/engine/dist/services/tags/gliner.d.ts +18 -0
- package/engine/dist/services/tags/gliner.d.ts.map +1 -0
- package/engine/dist/services/tags/gliner.js +119 -0
- package/engine/dist/services/tags/gliner.js.map +1 -0
- package/engine/dist/services/tags/infector.d.ts +21 -0
- package/engine/dist/services/tags/infector.d.ts.map +1 -0
- package/engine/dist/services/tags/infector.js +168 -0
- package/engine/dist/services/tags/infector.js.map +1 -0
- package/engine/dist/services/tags/tag-auditor.d.ts +77 -0
- package/engine/dist/services/tags/tag-auditor.d.ts.map +1 -0
- package/engine/dist/services/tags/tag-auditor.js +283 -0
- package/engine/dist/services/tags/tag-auditor.js.map +1 -0
- package/engine/dist/services/taxonomy/taxonomy-manager.d.ts +50 -0
- package/engine/dist/services/taxonomy/taxonomy-manager.d.ts.map +1 -0
- package/engine/dist/services/taxonomy/taxonomy-manager.js +291 -0
- package/engine/dist/services/taxonomy/taxonomy-manager.js.map +1 -0
- package/engine/dist/services/vision/vision_service.d.ts +4 -0
- package/engine/dist/services/vision/vision_service.d.ts.map +1 -0
- package/engine/dist/services/vision/vision_service.js +197 -0
- package/engine/dist/services/vision/vision_service.js.map +1 -0
- package/engine/dist/test-framework/core.d.ts +133 -0
- package/engine/dist/test-framework/core.d.ts.map +1 -0
- package/engine/dist/test-framework/core.js +313 -0
- package/engine/dist/test-framework/core.js.map +1 -0
- package/engine/dist/test-framework/dataset-runner.d.ts +78 -0
- package/engine/dist/test-framework/dataset-runner.d.ts.map +1 -0
- package/engine/dist/test-framework/dataset-runner.js +223 -0
- package/engine/dist/test-framework/dataset-runner.js.map +1 -0
- package/engine/dist/test-framework/diagnostic-tests.d.ts +38 -0
- package/engine/dist/test-framework/diagnostic-tests.d.ts.map +1 -0
- package/engine/dist/test-framework/diagnostic-tests.js +283 -0
- package/engine/dist/test-framework/diagnostic-tests.js.map +1 -0
- package/engine/dist/test-framework/performance-regression-tests.d.ts +30 -0
- package/engine/dist/test-framework/performance-regression-tests.d.ts.map +1 -0
- package/engine/dist/test-framework/performance-regression-tests.js +331 -0
- package/engine/dist/test-framework/performance-regression-tests.js.map +1 -0
- package/engine/dist/types/api.d.ts +53 -0
- package/engine/dist/types/api.d.ts.map +1 -0
- package/engine/dist/types/api.js +2 -0
- package/engine/dist/types/api.js.map +1 -0
- package/engine/dist/types/atomic.d.ts +42 -0
- package/engine/dist/types/atomic.d.ts.map +1 -0
- package/engine/dist/types/atomic.js +10 -0
- package/engine/dist/types/atomic.js.map +1 -0
- package/engine/dist/types/context-protocol.d.ts +137 -0
- package/engine/dist/types/context-protocol.d.ts.map +1 -0
- package/engine/dist/types/context-protocol.js +28 -0
- package/engine/dist/types/context-protocol.js.map +1 -0
- package/engine/dist/types/context.d.ts +2 -0
- package/engine/dist/types/context.d.ts.map +1 -0
- package/engine/dist/types/context.js +2 -0
- package/engine/dist/types/context.js.map +1 -0
- package/engine/dist/types/index.d.ts +20 -0
- package/engine/dist/types/index.d.ts.map +1 -0
- package/engine/dist/types/index.js +18 -0
- package/engine/dist/types/index.js.map +1 -0
- package/engine/dist/types/search.d.ts +31 -0
- package/engine/dist/types/search.d.ts.map +1 -0
- package/engine/dist/types/search.js +2 -0
- package/engine/dist/types/search.js.map +1 -0
- package/engine/dist/types/taxonomy.d.ts +137 -0
- package/engine/dist/types/taxonomy.d.ts.map +1 -0
- package/engine/dist/types/taxonomy.js +138 -0
- package/engine/dist/types/taxonomy.js.map +1 -0
- package/engine/dist/types/taxonomy.simple.d.ts +131 -0
- package/engine/dist/types/taxonomy.simple.d.ts.map +1 -0
- package/engine/dist/types/taxonomy.simple.js +132 -0
- package/engine/dist/types/taxonomy.simple.js.map +1 -0
- package/engine/dist/types/tool-call.d.ts +16 -0
- package/engine/dist/types/tool-call.d.ts.map +1 -0
- package/engine/dist/types/tool-call.js +6 -0
- package/engine/dist/types/tool-call.js.map +1 -0
- package/engine/dist/types/trace.d.ts +25 -0
- package/engine/dist/types/trace.d.ts.map +1 -0
- package/engine/dist/types/trace.js +5 -0
- package/engine/dist/types/trace.js.map +1 -0
- package/engine/dist/utils/adaptive-concurrency.d.ts +81 -0
- package/engine/dist/utils/adaptive-concurrency.d.ts.map +1 -0
- package/engine/dist/utils/adaptive-concurrency.js +266 -0
- package/engine/dist/utils/adaptive-concurrency.js.map +1 -0
- package/engine/dist/utils/date_extractor.d.ts +2 -0
- package/engine/dist/utils/date_extractor.d.ts.map +1 -0
- package/engine/dist/utils/date_extractor.js +32 -0
- package/engine/dist/utils/date_extractor.js.map +1 -0
- package/engine/dist/utils/native-module-manager.d.ts +48 -0
- package/engine/dist/utils/native-module-manager.d.ts.map +1 -0
- package/engine/dist/utils/native-module-manager.js +265 -0
- package/engine/dist/utils/native-module-manager.js.map +1 -0
- package/engine/dist/utils/native-module-profiler.d.ts +66 -0
- package/engine/dist/utils/native-module-profiler.d.ts.map +1 -0
- package/engine/dist/utils/native-module-profiler.js +182 -0
- package/engine/dist/utils/native-module-profiler.js.map +1 -0
- package/engine/dist/utils/path-manager.d.ts +59 -0
- package/engine/dist/utils/path-manager.d.ts.map +1 -0
- package/engine/dist/utils/path-manager.js +154 -0
- package/engine/dist/utils/path-manager.js.map +1 -0
- package/engine/dist/utils/performance-monitor.d.ts +92 -0
- package/engine/dist/utils/performance-monitor.d.ts.map +1 -0
- package/engine/dist/utils/performance-monitor.js +221 -0
- package/engine/dist/utils/performance-monitor.js.map +1 -0
- package/engine/dist/utils/process-manager.d.ts +18 -0
- package/engine/dist/utils/process-manager.d.ts.map +1 -0
- package/engine/dist/utils/process-manager.js +100 -0
- package/engine/dist/utils/process-manager.js.map +1 -0
- package/engine/dist/utils/request-tracer.d.ts +131 -0
- package/engine/dist/utils/request-tracer.d.ts.map +1 -0
- package/engine/dist/utils/request-tracer.js +414 -0
- package/engine/dist/utils/request-tracer.js.map +1 -0
- package/engine/dist/utils/resource-manager.d.ts +108 -0
- package/engine/dist/utils/resource-manager.d.ts.map +1 -0
- package/engine/dist/utils/resource-manager.js +235 -0
- package/engine/dist/utils/resource-manager.js.map +1 -0
- package/engine/dist/utils/safe-dns.d.ts +14 -0
- package/engine/dist/utils/safe-dns.d.ts.map +1 -0
- package/engine/dist/utils/safe-dns.js +105 -0
- package/engine/dist/utils/safe-dns.js.map +1 -0
- package/engine/dist/utils/structured-logger.d.ts +124 -0
- package/engine/dist/utils/structured-logger.d.ts.map +1 -0
- package/engine/dist/utils/structured-logger.js +332 -0
- package/engine/dist/utils/structured-logger.js.map +1 -0
- package/engine/dist/utils/tag-cleanup.d.ts +11 -0
- package/engine/dist/utils/tag-cleanup.d.ts.map +1 -0
- package/engine/dist/utils/tag-cleanup.js +111 -0
- package/engine/dist/utils/tag-cleanup.js.map +1 -0
- package/engine/dist/utils/tag-filter.d.ts +19 -0
- package/engine/dist/utils/tag-filter.d.ts.map +1 -0
- package/engine/dist/utils/tag-filter.js +147 -0
- package/engine/dist/utils/tag-filter.js.map +1 -0
- package/engine/dist/utils/tag-modulation.d.ts +80 -0
- package/engine/dist/utils/tag-modulation.d.ts.map +1 -0
- package/engine/dist/utils/tag-modulation.js +284 -0
- package/engine/dist/utils/tag-modulation.js.map +1 -0
- package/engine/dist/utils/timer.d.ts +40 -0
- package/engine/dist/utils/timer.d.ts.map +1 -0
- package/engine/dist/utils/timer.js +76 -0
- package/engine/dist/utils/timer.js.map +1 -0
- package/engine/dist/utils/token-utils.d.ts +19 -0
- package/engine/dist/utils/token-utils.d.ts.map +1 -0
- package/engine/dist/utils/token-utils.js +71 -0
- package/engine/dist/utils/token-utils.js.map +1 -0
- package/engine/dist/utils/wasm-module-loader.d.ts +50 -0
- package/engine/dist/utils/wasm-module-loader.d.ts.map +1 -0
- package/engine/dist/utils/wasm-module-loader.js +136 -0
- package/engine/dist/utils/wasm-module-loader.js.map +1 -0
- package/engine/package.json +105 -0
- package/package.json +106 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tag Quality Auditor
|
|
3
|
+
*
|
|
4
|
+
* Analyzes tagging patterns to identify:
|
|
5
|
+
* 1. Under-tagged atoms (high content, few tags)
|
|
6
|
+
* 2. Over-tagged atoms (noise)
|
|
7
|
+
* 3. Orphan tags (used once, never retrieved)
|
|
8
|
+
* 4. Tag clusters (tags that always appear together)
|
|
9
|
+
* 5. Missing tags (common terms not used as tags)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* const auditor = new TagAuditor();
|
|
13
|
+
* const report = await auditor.generateAuditReport();
|
|
14
|
+
* console.log(report);
|
|
15
|
+
*/
|
|
16
|
+
import { db } from '../../core/db.js';
|
|
17
|
+
import { nlp } from '../search/query-parser.js';
|
|
18
|
+
export class TagAuditor {
|
|
19
|
+
/**
|
|
20
|
+
* Find under-tagged content
|
|
21
|
+
*/
|
|
22
|
+
async findUnderTaggedAtoms(minContentLength = 500, maxTags = 2) {
|
|
23
|
+
console.log('[TagAuditor] Finding under-tagged atoms...');
|
|
24
|
+
// Fetch all existing distinct tags once for performance
|
|
25
|
+
// Bolt: Optimized array unnesting using implicit lateral join
|
|
26
|
+
const allTagsQuery = `SELECT DISTINCT tag FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL`;
|
|
27
|
+
const allTagsResult = await db.run(allTagsQuery);
|
|
28
|
+
const allTags = allTagsResult.rows
|
|
29
|
+
? allTagsResult.rows
|
|
30
|
+
.map((r) => r.tag)
|
|
31
|
+
.filter((tag) => tag && tag.length > 0)
|
|
32
|
+
: [];
|
|
33
|
+
const query = `
|
|
34
|
+
SELECT id, source_path, content, length(content) as content_length,
|
|
35
|
+
cardinality(tags) as tag_count, tags
|
|
36
|
+
FROM atoms
|
|
37
|
+
WHERE length(content) > $1
|
|
38
|
+
AND (tags IS NULL OR cardinality(tags) < $2)
|
|
39
|
+
ORDER BY length(content) DESC
|
|
40
|
+
LIMIT 100
|
|
41
|
+
`;
|
|
42
|
+
const result = await db.run(query, [minContentLength, maxTags]);
|
|
43
|
+
if (!result.rows)
|
|
44
|
+
return [];
|
|
45
|
+
const underTagged = [];
|
|
46
|
+
for (const row of result.rows) {
|
|
47
|
+
const suggestedTags = await this.suggestTagsForAtom(row.id, 5, {
|
|
48
|
+
content: row.content || '',
|
|
49
|
+
existingTags: row.tags || [],
|
|
50
|
+
allTags
|
|
51
|
+
});
|
|
52
|
+
underTagged.push({
|
|
53
|
+
id: row.id,
|
|
54
|
+
source: row.source_path,
|
|
55
|
+
contentLength: row.content_length,
|
|
56
|
+
tagCount: row.tag_count || 0,
|
|
57
|
+
suggestedTags
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
console.log(`[TagAuditor] Found ${underTagged.length} under-tagged atoms`);
|
|
61
|
+
return underTagged;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Find orphan tags (used only once)
|
|
65
|
+
*/
|
|
66
|
+
async findOrphanTags(minAtoms = 100) {
|
|
67
|
+
console.log('[TagAuditor] Finding orphan tags...');
|
|
68
|
+
// Bolt: Optimized array unnesting using implicit lateral join to prevent materializing intermediate table
|
|
69
|
+
const query = `
|
|
70
|
+
SELECT tag, COUNT(*) as usage_count
|
|
71
|
+
FROM atoms, unnest(tags) as tag
|
|
72
|
+
WHERE tags IS NOT NULL
|
|
73
|
+
GROUP BY tag
|
|
74
|
+
HAVING COUNT(*) = 1
|
|
75
|
+
ORDER BY tag
|
|
76
|
+
`;
|
|
77
|
+
const result = await db.run(query);
|
|
78
|
+
if (!result.rows)
|
|
79
|
+
return [];
|
|
80
|
+
const orphanTags = result.rows
|
|
81
|
+
.map((r) => r.tag)
|
|
82
|
+
.filter((tag) => tag && tag.length > 0);
|
|
83
|
+
console.log(`[TagAuditor] Found ${orphanTags.length} orphan tags`);
|
|
84
|
+
return orphanTags;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Find tag clusters (tags that always appear together)
|
|
88
|
+
*/
|
|
89
|
+
async findTagClusters(minSupport = 10) {
|
|
90
|
+
console.log('[TagAuditor] Finding tag clusters...');
|
|
91
|
+
// Bolt: Optimized array unnesting using CTE to avoid duplicate unnest() execution
|
|
92
|
+
const query = `
|
|
93
|
+
WITH atom_tags AS (
|
|
94
|
+
SELECT id, tag
|
|
95
|
+
FROM atoms, unnest(tags) as tag
|
|
96
|
+
WHERE tags IS NOT NULL
|
|
97
|
+
),
|
|
98
|
+
tag_pairs AS (
|
|
99
|
+
SELECT
|
|
100
|
+
t1.tag as tag1,
|
|
101
|
+
t2.tag as tag2,
|
|
102
|
+
COUNT(*) as co_occurrence
|
|
103
|
+
FROM atom_tags t1
|
|
104
|
+
JOIN atom_tags t2 ON t1.id = t2.id AND t1.tag < t2.tag
|
|
105
|
+
GROUP BY t1.tag, t2.tag
|
|
106
|
+
HAVING COUNT(*) >= $1
|
|
107
|
+
)
|
|
108
|
+
SELECT tag1, tag2, co_occurrence
|
|
109
|
+
FROM tag_pairs
|
|
110
|
+
ORDER BY co_occurrence DESC
|
|
111
|
+
LIMIT 100
|
|
112
|
+
`;
|
|
113
|
+
const result = await db.run(query, [minSupport]);
|
|
114
|
+
if (!result.rows)
|
|
115
|
+
return [];
|
|
116
|
+
// Build clusters from pairs
|
|
117
|
+
const clusters = new Map();
|
|
118
|
+
for (const row of result.rows) {
|
|
119
|
+
const { tag1, tag2 } = row;
|
|
120
|
+
if (!clusters.has(tag1)) {
|
|
121
|
+
clusters.set(tag1, new Set());
|
|
122
|
+
}
|
|
123
|
+
clusters.get(tag1).add(tag2);
|
|
124
|
+
if (!clusters.has(tag2)) {
|
|
125
|
+
clusters.set(tag2, new Set());
|
|
126
|
+
}
|
|
127
|
+
clusters.get(tag2).add(tag1);
|
|
128
|
+
}
|
|
129
|
+
// Convert to array of clusters
|
|
130
|
+
const clusterArray = [];
|
|
131
|
+
const processed = new Set();
|
|
132
|
+
for (const [seed, members] of clusters.entries()) {
|
|
133
|
+
if (processed.has(seed))
|
|
134
|
+
continue;
|
|
135
|
+
const cluster = [seed, ...Array.from(members)];
|
|
136
|
+
clusterArray.push(cluster);
|
|
137
|
+
for (const member of members) {
|
|
138
|
+
processed.add(member);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
console.log(`[TagAuditor] Found ${clusterArray.length} tag clusters`);
|
|
142
|
+
return clusterArray;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Suggest tags for an atom based on content
|
|
146
|
+
*/
|
|
147
|
+
async suggestTagsForAtom(atomId, limit = 5, context) {
|
|
148
|
+
try {
|
|
149
|
+
let atomContent = '';
|
|
150
|
+
let existingTags;
|
|
151
|
+
let allTags;
|
|
152
|
+
if (context) {
|
|
153
|
+
atomContent = context.content;
|
|
154
|
+
existingTags = new Set(context.existingTags || []);
|
|
155
|
+
allTags = context.allTags;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Get atom content
|
|
159
|
+
const atomQuery = `SELECT content, tags FROM atoms WHERE id = $1`;
|
|
160
|
+
const atomResult = await db.run(atomQuery, [atomId]);
|
|
161
|
+
if (!atomResult.rows || atomResult.rows.length === 0) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
const atom = atomResult.rows[0];
|
|
165
|
+
atomContent = atom.content || '';
|
|
166
|
+
existingTags = new Set(atom.tags || []);
|
|
167
|
+
// Get all existing tags
|
|
168
|
+
// Bolt: Optimized array unnesting using implicit lateral join
|
|
169
|
+
const allTagsQuery = `SELECT DISTINCT tag FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL`;
|
|
170
|
+
const allTagsResult = await db.run(allTagsQuery);
|
|
171
|
+
if (!allTagsResult.rows)
|
|
172
|
+
return [];
|
|
173
|
+
allTags = allTagsResult.rows
|
|
174
|
+
.map((r) => r.tag)
|
|
175
|
+
.filter((tag) => tag && tag.length > 0);
|
|
176
|
+
}
|
|
177
|
+
// Extract key terms from content
|
|
178
|
+
const doc = nlp.readDoc(atomContent);
|
|
179
|
+
const terms = doc.tokens()
|
|
180
|
+
.filter((t) => {
|
|
181
|
+
const pos = t.out(nlp.its.pos);
|
|
182
|
+
return pos === 'NOUN' || pos === 'PROPN' || pos === 'ADJ';
|
|
183
|
+
})
|
|
184
|
+
.out(nlp.its.normal)
|
|
185
|
+
.filter((term) => term.length > 3 && term.length < 30)
|
|
186
|
+
.slice(0, 20);
|
|
187
|
+
// Find matching tags
|
|
188
|
+
const suggestions = terms.filter((term) => {
|
|
189
|
+
const termLower = term.toLowerCase();
|
|
190
|
+
return allTags.some(tag => tag.toLowerCase() === termLower ||
|
|
191
|
+
tag.toLowerCase().includes(termLower)) && !existingTags.has(term);
|
|
192
|
+
}).slice(0, limit);
|
|
193
|
+
return suggestions;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
console.error('[TagAuditor] Failed to suggest tags:', error.message);
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get tag statistics
|
|
202
|
+
*/
|
|
203
|
+
async getTagStatistics() {
|
|
204
|
+
const query = `
|
|
205
|
+
SELECT
|
|
206
|
+
COUNT(*) as total_atoms,
|
|
207
|
+
AVG(COALESCE(cardinality(tags), 0)) as avg_tags,
|
|
208
|
+
MAX(COALESCE(cardinality(tags), 0)) as max_tags,
|
|
209
|
+
COUNT(DISTINCT unnest(tags)) as unique_tags
|
|
210
|
+
FROM atoms
|
|
211
|
+
`;
|
|
212
|
+
const result = await db.run(query);
|
|
213
|
+
if (!result.rows || result.rows.length === 0) {
|
|
214
|
+
return {
|
|
215
|
+
avgTagsPerAtom: 0,
|
|
216
|
+
medianTagsPerAtom: 0,
|
|
217
|
+
maxTagsInAtom: 0,
|
|
218
|
+
uniqueTags: 0,
|
|
219
|
+
tagsUsedOnce: 0
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const row = result.rows[0];
|
|
223
|
+
// Get tags used once
|
|
224
|
+
// Bolt: Optimized array unnesting using implicit lateral join
|
|
225
|
+
const orphanQuery = `
|
|
226
|
+
SELECT COUNT(*) as count
|
|
227
|
+
FROM (
|
|
228
|
+
SELECT tag
|
|
229
|
+
FROM atoms, unnest(tags) as tag
|
|
230
|
+
WHERE tags IS NOT NULL
|
|
231
|
+
GROUP BY tag
|
|
232
|
+
HAVING COUNT(*) = 1
|
|
233
|
+
)
|
|
234
|
+
`;
|
|
235
|
+
const orphanResult = await db.run(orphanQuery);
|
|
236
|
+
const tagsUsedOnce = orphanResult.rows?.[0]?.count || 0;
|
|
237
|
+
return {
|
|
238
|
+
avgTagsPerAtom: parseFloat(row.avg_tags) || 0,
|
|
239
|
+
medianTagsPerAtom: Math.round(parseFloat(row.avg_tags) || 0), // Approximation
|
|
240
|
+
maxTagsInAtom: row.max_tags || 0,
|
|
241
|
+
uniqueTags: row.unique_tags || 0,
|
|
242
|
+
tagsUsedOnce
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Generate comprehensive audit report
|
|
247
|
+
*/
|
|
248
|
+
async generateAuditReport() {
|
|
249
|
+
console.log('[TagAuditor] Generating comprehensive audit report...');
|
|
250
|
+
const [totalAtoms, totalTags, underTagged, orphanTags, tagClusters, statistics] = await Promise.all([
|
|
251
|
+
this.getTotalAtoms(),
|
|
252
|
+
this.getTotalTags(),
|
|
253
|
+
this.findUnderTaggedAtoms(),
|
|
254
|
+
this.findOrphanTags(),
|
|
255
|
+
this.findTagClusters(5),
|
|
256
|
+
this.getTagStatistics()
|
|
257
|
+
]);
|
|
258
|
+
const suggestions = underTagged.map(atom => ({
|
|
259
|
+
atomId: atom.id,
|
|
260
|
+
suggestedTags: atom.suggestedTags,
|
|
261
|
+
confidence: atom.suggestedTags.length > 0 ? 0.8 : 0.3
|
|
262
|
+
}));
|
|
263
|
+
return {
|
|
264
|
+
totalAtoms,
|
|
265
|
+
totalTags,
|
|
266
|
+
underTagged,
|
|
267
|
+
orphanTags,
|
|
268
|
+
tagClusters,
|
|
269
|
+
suggestions,
|
|
270
|
+
statistics
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
async getTotalAtoms() {
|
|
274
|
+
const result = await db.run('SELECT COUNT(*) as count FROM atoms');
|
|
275
|
+
return result.rows?.[0]?.count || 0;
|
|
276
|
+
}
|
|
277
|
+
async getTotalTags() {
|
|
278
|
+
// Bolt: Optimized array unnesting using implicit lateral join
|
|
279
|
+
const result = await db.run('SELECT COUNT(DISTINCT tag) as count FROM atoms, unnest(tags) as tag WHERE tags IS NOT NULL');
|
|
280
|
+
return result.rows?.[0]?.count || 0;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=tag-auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-auditor.js","sourceRoot":"","sources":["../../../src/services/tags/tag-auditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taxonomy Manager for ECE (Dynamic Cortex Architecture)
|
|
3
|
+
*
|
|
4
|
+
* Manages the semantic categories dynamically, allowing for soft-configuration
|
|
5
|
+
* instead of hardcoded enums. Enables context switching between different
|
|
6
|
+
* domain taxonomies (Personal Relationships vs Oil Industry).
|
|
7
|
+
*/
|
|
8
|
+
import { SemanticCategory } from '../../types/taxonomy.js';
|
|
9
|
+
export interface SemanticRule {
|
|
10
|
+
category: SemanticCategory;
|
|
11
|
+
triggers: string[];
|
|
12
|
+
requiredEntities?: string[];
|
|
13
|
+
exclusions?: string[];
|
|
14
|
+
weight: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class TaxonomyManager {
|
|
17
|
+
private activeRules;
|
|
18
|
+
private entityCooccurrenceThreshold;
|
|
19
|
+
constructor();
|
|
20
|
+
private init;
|
|
21
|
+
getRules(): SemanticRule[];
|
|
22
|
+
saveRules(rules: SemanticRule[]): Promise<void>;
|
|
23
|
+
getDefaultRules(): SemanticRule[];
|
|
24
|
+
createBackup(name: string): Promise<string>;
|
|
25
|
+
listBackups(): Promise<string[]>;
|
|
26
|
+
restoreBackup(filename: string): Promise<any>;
|
|
27
|
+
/**
|
|
28
|
+
* Discover entities from the graph for auto-tagging suggestions
|
|
29
|
+
*/
|
|
30
|
+
discoverEntitiesFromGraph(): Promise<Array<{
|
|
31
|
+
entity: string;
|
|
32
|
+
frequency: number;
|
|
33
|
+
suggestedCategory: string;
|
|
34
|
+
}>>;
|
|
35
|
+
private guessCategory;
|
|
36
|
+
/**
|
|
37
|
+
* Derive semantic tags for a text based on entity co-occurrence
|
|
38
|
+
*/
|
|
39
|
+
deriveSemanticTags(content: string, entities: string[]): SemanticCategory[];
|
|
40
|
+
private entityMatchesType;
|
|
41
|
+
private isPersonEntity;
|
|
42
|
+
private isPlaceEntity;
|
|
43
|
+
private isConceptEntity;
|
|
44
|
+
private isDateEntity;
|
|
45
|
+
private isTechnicalEntity;
|
|
46
|
+
private hasTimeReference;
|
|
47
|
+
private containsCodeBlock;
|
|
48
|
+
private isCommonWord;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=taxonomy-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomy-manager.d.ts","sourceRoot":"","sources":["../../../src/services/taxonomy/taxonomy-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,2BAA2B,CAAa;;YAMlC,IAAI;IAcX,QAAQ,IAAI,YAAY,EAAE;IAIpB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE;IAKrC,eAAe,IAAI,YAAY,EAAE;IAqE3B,YAAY,CAAC,IAAI,EAAE,MAAM;IAOzB,WAAW;IAKX,aAAa,CAAC,QAAQ,EAAE,MAAM;IAO3C;;OAEG;IACU,yBAAyB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IA4BxH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACI,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE;IAuDlF,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taxonomy Manager for ECE (Dynamic Cortex Architecture)
|
|
3
|
+
*
|
|
4
|
+
* Manages the semantic categories dynamically, allowing for soft-configuration
|
|
5
|
+
* instead of hardcoded enums. Enables context switching between different
|
|
6
|
+
* domain taxonomies (Personal Relationships vs Oil Industry).
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'fs/promises';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { SemanticCategory } from '../../types/taxonomy.js';
|
|
11
|
+
import { db } from '../../core/db.js';
|
|
12
|
+
const TAXONOMY_DIR = path.join(process.cwd(), 'user_data', 'taxonomy');
|
|
13
|
+
const CURRENT_RULES_FILE = path.join(TAXONOMY_DIR, 'current_rules.json');
|
|
14
|
+
const BACKUP_DIR = path.join(TAXONOMY_DIR, 'backups');
|
|
15
|
+
export class TaxonomyManager {
|
|
16
|
+
activeRules = [];
|
|
17
|
+
entityCooccurrenceThreshold = 2; // Minimum entities in a molecule to trigger relationship tagging
|
|
18
|
+
constructor() {
|
|
19
|
+
this.init();
|
|
20
|
+
}
|
|
21
|
+
async init() {
|
|
22
|
+
await fs.mkdir(TAXONOMY_DIR, { recursive: true });
|
|
23
|
+
await fs.mkdir(BACKUP_DIR, { recursive: true });
|
|
24
|
+
try {
|
|
25
|
+
const data = await fs.readFile(CURRENT_RULES_FILE, 'utf-8');
|
|
26
|
+
this.activeRules = JSON.parse(data);
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.log('[Taxonomy] No custom rules found. Loading defaults.');
|
|
30
|
+
this.activeRules = this.getDefaultRules();
|
|
31
|
+
await this.saveRules(this.activeRules);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getRules() {
|
|
35
|
+
return this.activeRules;
|
|
36
|
+
}
|
|
37
|
+
async saveRules(rules) {
|
|
38
|
+
this.activeRules = rules;
|
|
39
|
+
await fs.writeFile(CURRENT_RULES_FILE, JSON.stringify(rules, null, 2));
|
|
40
|
+
}
|
|
41
|
+
getDefaultRules() {
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
category: SemanticCategory.RELATIONSHIP,
|
|
45
|
+
triggers: [
|
|
46
|
+
'and', 'with', 'met', 'told', 'said to', 'spoke to', 'visited',
|
|
47
|
+
'called', 'texted', 'together', 'relationship', 'friend', 'partner',
|
|
48
|
+
'love', 'missed', 'cared about', 'knows', 'introduced to', 'about'
|
|
49
|
+
],
|
|
50
|
+
requiredEntities: ['person'],
|
|
51
|
+
weight: 0.9
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
category: SemanticCategory.NARRATIVE,
|
|
55
|
+
triggers: [
|
|
56
|
+
'when', 'then', 'later', 'before', 'after', 'during', 'while',
|
|
57
|
+
'first', 'next', 'finally', 'meanwhile', 'eventually', 'suddenly',
|
|
58
|
+
'it was', 'there was', 'once upon', 'story', 'remember', 'recall',
|
|
59
|
+
'yesterday', 'today', 'tomorrow', 'morning', 'afternoon', 'evening', 'night'
|
|
60
|
+
],
|
|
61
|
+
requiredEntities: ['person', 'date'],
|
|
62
|
+
weight: 0.8
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
category: SemanticCategory.TECHNICAL,
|
|
66
|
+
triggers: [
|
|
67
|
+
'function', 'class', 'method', 'variable', 'code', 'algorithm',
|
|
68
|
+
'API', 'endpoint', 'database', 'server', 'client', 'library',
|
|
69
|
+
'framework', 'module', 'component', 'system', 'architecture',
|
|
70
|
+
'Node.js', 'TypeScript', 'CozoDB', 'RAG', 'vector', 'embedding'
|
|
71
|
+
],
|
|
72
|
+
requiredEntities: ['technical'],
|
|
73
|
+
weight: 0.95
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
category: SemanticCategory.INDUSTRY,
|
|
77
|
+
triggers: [
|
|
78
|
+
'market', 'industry', 'company', 'business', 'finance', 'economy',
|
|
79
|
+
'oil', 'gas', 'energy', 'seismic', 'co2', 'sequestration',
|
|
80
|
+
'production', 'drilling', 'reservoir', 'pipeline', 'refinery',
|
|
81
|
+
'barrel', 'bpd', 'mboed', 'upstream', 'midstream', 'downstream'
|
|
82
|
+
],
|
|
83
|
+
requiredEntities: ['concept'],
|
|
84
|
+
weight: 0.85
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
category: SemanticCategory.LOCATION,
|
|
88
|
+
triggers: [
|
|
89
|
+
'in', 'at', 'near', 'by', 'around', 'beside', 'between', 'within',
|
|
90
|
+
'city', 'town', 'country', 'state', 'street', 'building', 'room',
|
|
91
|
+
'address', 'coordinates', 'region', 'area', 'district', 'zone',
|
|
92
|
+
'Albuquerque', 'Bernalillo', 'Sandia', 'Los Alamos', 'Texas', 'New Mexico'
|
|
93
|
+
],
|
|
94
|
+
requiredEntities: ['place'],
|
|
95
|
+
weight: 0.7
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
category: SemanticCategory.EMOTIONAL,
|
|
99
|
+
triggers: [
|
|
100
|
+
'happy', 'sad', 'angry', 'excited', 'frustrated', 'anxious', 'joy',
|
|
101
|
+
'fear', 'love', 'hate', 'regret', 'hope', 'despair', 'grateful',
|
|
102
|
+
'felt', 'emotions', 'feelings', 'heart', 'soul', 'spirit', 'lonely',
|
|
103
|
+
'connected', 'isolated', 'supported', 'understood'
|
|
104
|
+
],
|
|
105
|
+
weight: 0.8
|
|
106
|
+
}
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
async createBackup(name) {
|
|
110
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
111
|
+
const filename = `${name}_${timestamp}.json`;
|
|
112
|
+
await fs.writeFile(path.join(BACKUP_DIR, filename), JSON.stringify(this.activeRules, null, 2));
|
|
113
|
+
return filename;
|
|
114
|
+
}
|
|
115
|
+
async listBackups() {
|
|
116
|
+
const files = await fs.readdir(BACKUP_DIR);
|
|
117
|
+
return files.filter(f => f.endsWith('.json'));
|
|
118
|
+
}
|
|
119
|
+
async restoreBackup(filename) {
|
|
120
|
+
const data = await fs.readFile(path.join(BACKUP_DIR, filename), 'utf-8');
|
|
121
|
+
const rules = JSON.parse(data);
|
|
122
|
+
await this.saveRules(rules);
|
|
123
|
+
return rules;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Discover entities from the graph for auto-tagging suggestions
|
|
127
|
+
*/
|
|
128
|
+
async discoverEntitiesFromGraph() {
|
|
129
|
+
console.log('[Taxonomy] Starting Graph Discovery...');
|
|
130
|
+
try {
|
|
131
|
+
// Query the database for high-frequency entities
|
|
132
|
+
// This is a simplified version - in practice, you'd have a more sophisticated query
|
|
133
|
+
// that looks for named entities in your content
|
|
134
|
+
const result = await db.run(`
|
|
135
|
+
SELECT content as entity, COUNT(*) as count
|
|
136
|
+
FROM atoms
|
|
137
|
+
GROUP BY content
|
|
138
|
+
ORDER BY count DESC
|
|
139
|
+
LIMIT 50
|
|
140
|
+
`);
|
|
141
|
+
const suggestions = result.rows.map((row) => ({
|
|
142
|
+
entity: row.entity,
|
|
143
|
+
frequency: row.count,
|
|
144
|
+
suggestedCategory: this.guessCategory(row.entity)
|
|
145
|
+
})).filter((item) => item.frequency > 1); // Only include entities that appear more than once
|
|
146
|
+
return suggestions;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.error('[Taxonomy] Discovery failed:', error);
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
guessCategory(word) {
|
|
154
|
+
const lowerWord = word.toLowerCase();
|
|
155
|
+
// Check against known person names
|
|
156
|
+
const knownPeople = ['rob', 'jade', 'dory', 'coda', 'alex']; // Add more as needed
|
|
157
|
+
if (knownPeople.includes(lowerWord))
|
|
158
|
+
return 'Person/Relationship';
|
|
159
|
+
// Check against known places
|
|
160
|
+
const knownPlaces = ['albuquerque', 'bernalillo', 'sandia', 'los alamos', 'texas'];
|
|
161
|
+
if (knownPlaces.includes(lowerWord))
|
|
162
|
+
return 'Location';
|
|
163
|
+
// Check against known technical terms
|
|
164
|
+
const knownTech = ['node.js', 'typescript', 'cozodb', 'rag', 'vector', 'embedding', 'api'];
|
|
165
|
+
if (knownTech.some(tech => lowerWord.includes(tech)))
|
|
166
|
+
return 'Technical';
|
|
167
|
+
// Default to unknown concept
|
|
168
|
+
return 'Unknown Concept';
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Derive semantic tags for a text based on entity co-occurrence
|
|
172
|
+
*/
|
|
173
|
+
deriveSemanticTags(content, entities) {
|
|
174
|
+
const tags = new Set();
|
|
175
|
+
const contentLower = content.toLowerCase();
|
|
176
|
+
// Check each rule to see if it applies
|
|
177
|
+
for (const rule of this.activeRules) {
|
|
178
|
+
let applies = false;
|
|
179
|
+
// Check if any trigger words are in the content
|
|
180
|
+
for (const trigger of rule.triggers) {
|
|
181
|
+
if (contentLower.includes(trigger.toLowerCase())) {
|
|
182
|
+
applies = true;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// If trigger matched, check required entities
|
|
187
|
+
if (applies && rule.requiredEntities) {
|
|
188
|
+
applies = rule.requiredEntities.some(reqType => entities.some(entity => this.entityMatchesType(entity, reqType)));
|
|
189
|
+
}
|
|
190
|
+
// Check for exclusions
|
|
191
|
+
if (applies && rule.exclusions) {
|
|
192
|
+
applies = !rule.exclusions.some(excl => contentLower.includes(excl.toLowerCase()));
|
|
193
|
+
}
|
|
194
|
+
if (applies) {
|
|
195
|
+
tags.add(rule.category);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Special relationship logic: if multiple person entities exist in the same content, tag as relationship
|
|
199
|
+
const people = entities.filter(entity => this.isPersonEntity(entity));
|
|
200
|
+
if (people.length >= this.entityCooccurrenceThreshold) {
|
|
201
|
+
tags.add(SemanticCategory.RELATIONSHIP);
|
|
202
|
+
}
|
|
203
|
+
// Special narrative logic: if person and time reference exist, tag as narrative
|
|
204
|
+
if (people.length > 0 && this.hasTimeReference(content)) {
|
|
205
|
+
tags.add(SemanticCategory.NARRATIVE);
|
|
206
|
+
}
|
|
207
|
+
// Special technical logic: if technical terms exist, tag as technical
|
|
208
|
+
const techTerms = entities.filter(entity => this.isTechnicalEntity(entity));
|
|
209
|
+
if (techTerms.length > 0 || this.containsCodeBlock(content)) {
|
|
210
|
+
tags.add(SemanticCategory.TECHNICAL);
|
|
211
|
+
}
|
|
212
|
+
return Array.from(tags);
|
|
213
|
+
}
|
|
214
|
+
entityMatchesType(entity, entityType) {
|
|
215
|
+
switch (entityType) {
|
|
216
|
+
case 'person':
|
|
217
|
+
return this.isPersonEntity(entity);
|
|
218
|
+
case 'place':
|
|
219
|
+
return this.isPlaceEntity(entity);
|
|
220
|
+
case 'concept':
|
|
221
|
+
return this.isConceptEntity(entity);
|
|
222
|
+
case 'date':
|
|
223
|
+
return this.isDateEntity(entity);
|
|
224
|
+
case 'technical':
|
|
225
|
+
return this.isTechnicalEntity(entity);
|
|
226
|
+
default:
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
isPersonEntity(entity) {
|
|
231
|
+
// Simple heuristic for person names - could be enhanced with NER
|
|
232
|
+
const personIndicators = ['mr.', 'mrs.', 'ms.', 'dr.', 'prof.', 'jr.', 'sr.'];
|
|
233
|
+
const lowerEntity = entity.toLowerCase();
|
|
234
|
+
// Check if it's a capitalized name pattern
|
|
235
|
+
if (/^[A-Z][a-z]+$/.test(entity) && !this.isCommonWord(entity)) {
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
// Check for person indicators
|
|
239
|
+
return personIndicators.some(indicator => lowerEntity.includes(indicator));
|
|
240
|
+
}
|
|
241
|
+
isPlaceEntity(entity) {
|
|
242
|
+
const placeIndicators = ['city', 'town', 'state', 'country', 'street', 'avenue', 'road', 'building', 'avenue', 'boulevard', 'lane', 'drive', 'court', 'place', 'nm', 'tx', 'ca', 'ny', 'fl'];
|
|
243
|
+
return placeIndicators.some(indicator => entity.toLowerCase().includes(indicator));
|
|
244
|
+
}
|
|
245
|
+
isConceptEntity(entity) {
|
|
246
|
+
// Generic concept check - could be enhanced
|
|
247
|
+
return entity.length > 2 && !this.isPersonEntity(entity) && !this.isDateEntity(entity);
|
|
248
|
+
}
|
|
249
|
+
isDateEntity(entity) {
|
|
250
|
+
// Check for date patterns
|
|
251
|
+
const dateRegex = /^(19|20)\d{2}$|^(0?[1-9]|1[0-2])[\/\-](0?[1-9]|[12]\d|3[01])|^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])/;
|
|
252
|
+
if (dateRegex.test(entity))
|
|
253
|
+
return true;
|
|
254
|
+
// Check if it's a month name
|
|
255
|
+
const months = ['january', 'february', 'march', 'april', 'may', 'june',
|
|
256
|
+
'july', 'august', 'september', 'october', 'november', 'december'];
|
|
257
|
+
return months.includes(entity.toLowerCase());
|
|
258
|
+
}
|
|
259
|
+
isTechnicalEntity(entity) {
|
|
260
|
+
const techTerms = [
|
|
261
|
+
'node.js', 'typescript', 'javascript', 'api', 'database', 'function', 'class',
|
|
262
|
+
'method', 'variable', 'algorithm', 'cozodb', 'electron', 'react', 'vite',
|
|
263
|
+
'graphql', 'rest', 'json', 'xml', 'html', 'css', 'sql', 'nosql', 'mongodb',
|
|
264
|
+
'postgresql', 'mysql', 'redis', 'docker', 'kubernetes', 'aws', 'azure', 'gcp',
|
|
265
|
+
'rag', 'vector', 'embedding', 'simhash', 'cozo', 'rocksdb'
|
|
266
|
+
];
|
|
267
|
+
return techTerms.includes(entity.toLowerCase());
|
|
268
|
+
}
|
|
269
|
+
hasTimeReference(content) {
|
|
270
|
+
const timePatterns = [
|
|
271
|
+
/\b\d{4}\b/, // Year patterns
|
|
272
|
+
/yesterday|today|tomorrow/,
|
|
273
|
+
/morning|afternoon|evening|night/,
|
|
274
|
+
/january|february|march|april|may|june|july|august|september|october|november|december/i,
|
|
275
|
+
/monday|tuesday|wednesday|thursday|friday|saturday|sunday/i
|
|
276
|
+
];
|
|
277
|
+
return timePatterns.some(pattern => pattern.test(content.toLowerCase()));
|
|
278
|
+
}
|
|
279
|
+
containsCodeBlock(content) {
|
|
280
|
+
return /```[\s\S]*?```|`[^`]*`/.test(content) ||
|
|
281
|
+
/function\s+\w+\s*\(|class\s+\w+|import\s+\w+|const\s+\w+\s*=/.test(content);
|
|
282
|
+
}
|
|
283
|
+
isCommonWord(word) {
|
|
284
|
+
const commonWords = ['the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
|
|
285
|
+
'of', 'with', 'by', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
|
|
286
|
+
'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
|
|
287
|
+
'should', 'may', 'might', 'must', 'can', 'shall', 'this', 'that', 'these', 'those'];
|
|
288
|
+
return commonWords.includes(word.toLowerCase());
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=taxonomy-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomy-manager.js","sourceRoot":"","sources":["../../../src/services/taxonomy/taxonomy-manager.ts"],"names":[],"mappings":"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"}
|