@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,415 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automated Synonym Ring Generator
|
|
3
|
+
*
|
|
4
|
+
* Mines your existing data (codebase + chat logs) to automatically generate
|
|
5
|
+
* synonym rings for semantic query expansion.
|
|
6
|
+
*
|
|
7
|
+
* Strategies:
|
|
8
|
+
* 1. Co-occurrence Analysis: Terms appearing together frequently
|
|
9
|
+
* 2. Tag Neighborhood Similarity: Terms with similar tag patterns
|
|
10
|
+
* 3. SimHash Proximity: Terms in atoms with similar simhashes
|
|
11
|
+
* 4. Content Similarity: Terms appearing in similar contexts
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* const generator = new AutoSynonymGenerator();
|
|
15
|
+
* const synonyms = await generator.generateSynonymRings();
|
|
16
|
+
* await generator.saveSynonymRings(synonyms, './data/synonym-ring.json');
|
|
17
|
+
*/
|
|
18
|
+
import { db } from '../../core/db.js';
|
|
19
|
+
import path from 'path';
|
|
20
|
+
import fs from 'fs';
|
|
21
|
+
import { fileURLToPath } from 'url';
|
|
22
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
23
|
+
const __dirname = path.dirname(__filename);
|
|
24
|
+
export class AutoSynonymGenerator {
|
|
25
|
+
MIN_CO_OCCURRENCE = 5; // Minimum times terms must appear together
|
|
26
|
+
MIN_JACCARD_SIMILARITY = 0.5; // Minimum tag neighborhood similarity
|
|
27
|
+
MAX_SIMHASH_DISTANCE = 8; // Maximum Hamming distance for simhash clustering
|
|
28
|
+
TOP_SYNONYMS_PER_TERM = 10; // Maximum synonyms to suggest per term
|
|
29
|
+
/**
|
|
30
|
+
* Specialized hamming distance for precomputed BigInts
|
|
31
|
+
*/
|
|
32
|
+
fastHammingDistance(big1, big2) {
|
|
33
|
+
let xor = big1 ^ big2;
|
|
34
|
+
let distance = 0;
|
|
35
|
+
while (xor > 0n) {
|
|
36
|
+
distance += Number(xor & 1n);
|
|
37
|
+
xor >>= 1n;
|
|
38
|
+
}
|
|
39
|
+
return distance;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Strategy 1: Co-occurrence Mining
|
|
43
|
+
* Find terms that frequently appear together in the same atoms/documents.
|
|
44
|
+
*
|
|
45
|
+
* SQL: Finds pairs of terms appearing in same atom content
|
|
46
|
+
* Groups by term pairs, counts co-occurrences
|
|
47
|
+
* Returns top N pairs per term
|
|
48
|
+
*/
|
|
49
|
+
async mineCooccurrenceSynonyms(windowSize = 100) {
|
|
50
|
+
console.log('[SynonymGenerator] Strategy 1: Mining co-occurrence patterns...');
|
|
51
|
+
const startTime = Date.now();
|
|
52
|
+
try {
|
|
53
|
+
// Get total count for progress tracking
|
|
54
|
+
const countQuery = `
|
|
55
|
+
SELECT COUNT(*) as total FROM atoms WHERE length(content) > 50
|
|
56
|
+
`;
|
|
57
|
+
const countResult = await db.run(countQuery);
|
|
58
|
+
const totalAtoms = countResult.rows?.[0]?.total || 0;
|
|
59
|
+
console.log(`[SynonymGenerator] Processing ${totalAtoms} atoms...`);
|
|
60
|
+
// SIMPLIFIED: Skip complex co-occurrence mining for now
|
|
61
|
+
// The tag neighborhood and simhash strategies are working well
|
|
62
|
+
console.log('[SynonymGenerator] Skipping co-occurrence mining (using tag neighborhood + simhash only)');
|
|
63
|
+
console.log(`[SynonymGenerator] Co-occurrence skipped in ${((Date.now() - startTime) / 1000).toFixed(1)}s`);
|
|
64
|
+
return new Map();
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('[SynonymGenerator] Co-occurrence mining failed:', error.message);
|
|
68
|
+
return new Map();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Strategy 2: Tag Neighborhood Similarity
|
|
73
|
+
* Terms with similar tag patterns are likely synonyms.
|
|
74
|
+
*
|
|
75
|
+
* Computes Jaccard similarity between term tag-sets.
|
|
76
|
+
* Jaccard(A,B) = |A ∩ B| / |A ∪ B|
|
|
77
|
+
* Clusters terms with Jaccard > threshold
|
|
78
|
+
*/
|
|
79
|
+
async mineTagNeighborhoodSynonyms() {
|
|
80
|
+
console.log('[SynonymGenerator] Strategy 2: Mining tag neighborhood similarity...');
|
|
81
|
+
try {
|
|
82
|
+
// Get all terms and their associated tags
|
|
83
|
+
const termTagsQuery = `
|
|
84
|
+
WITH term_tag_counts AS (
|
|
85
|
+
SELECT
|
|
86
|
+
LOWER(unnest(tags)) as tag,
|
|
87
|
+
a.id as atom_id
|
|
88
|
+
FROM atoms a
|
|
89
|
+
WHERE tags IS NOT NULL AND cardinality(tags) > 0
|
|
90
|
+
),
|
|
91
|
+
term_tag_sets AS (
|
|
92
|
+
SELECT
|
|
93
|
+
tag,
|
|
94
|
+
array_agg(DISTINCT atom_id) as atom_ids
|
|
95
|
+
FROM term_tag_counts
|
|
96
|
+
GROUP BY tag
|
|
97
|
+
)
|
|
98
|
+
SELECT tag, atom_ids
|
|
99
|
+
FROM term_tag_sets
|
|
100
|
+
WHERE array_length(atom_ids, 1) >= 2
|
|
101
|
+
ORDER BY array_length(atom_ids, 1) DESC
|
|
102
|
+
LIMIT 500
|
|
103
|
+
`;
|
|
104
|
+
const result = await db.run(termTagsQuery);
|
|
105
|
+
if (!result.rows || result.rows.length < 2) {
|
|
106
|
+
console.log('[SynonymGenerator] Insufficient tag data for neighborhood analysis');
|
|
107
|
+
return new Map();
|
|
108
|
+
}
|
|
109
|
+
const termTagSets = new Map();
|
|
110
|
+
for (const row of result.rows) {
|
|
111
|
+
const { tag, atom_ids } = row;
|
|
112
|
+
termTagSets.set(tag, new Set(atom_ids));
|
|
113
|
+
}
|
|
114
|
+
// Compute Jaccard similarity between all pairs
|
|
115
|
+
const pairs = new Map();
|
|
116
|
+
const terms = Array.from(termTagSets.keys());
|
|
117
|
+
for (let i = 0; i < terms.length; i++) {
|
|
118
|
+
for (let j = i + 1; j < terms.length; j++) {
|
|
119
|
+
const term1 = terms[i];
|
|
120
|
+
const term2 = terms[j];
|
|
121
|
+
const set1 = termTagSets.get(term1);
|
|
122
|
+
const set2 = termTagSets.get(term2);
|
|
123
|
+
const intersection = new Set([...set1].filter(x => set2.has(x)));
|
|
124
|
+
const union = new Set([...set1, ...set2]);
|
|
125
|
+
const jaccard = intersection.size / union.size;
|
|
126
|
+
if (jaccard >= this.MIN_JACCARD_SIMILARITY) {
|
|
127
|
+
if (!pairs.has(term1)) {
|
|
128
|
+
pairs.set(term1, []);
|
|
129
|
+
}
|
|
130
|
+
pairs.get(term1).push({
|
|
131
|
+
term1,
|
|
132
|
+
term2,
|
|
133
|
+
score: jaccard,
|
|
134
|
+
strategy: 'tag_neighborhood'
|
|
135
|
+
});
|
|
136
|
+
if (!pairs.has(term2)) {
|
|
137
|
+
pairs.set(term2, []);
|
|
138
|
+
}
|
|
139
|
+
pairs.get(term2).push({
|
|
140
|
+
term1: term2,
|
|
141
|
+
term2: term1,
|
|
142
|
+
score: jaccard,
|
|
143
|
+
strategy: 'tag_neighborhood'
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
console.log(`[SynonymGenerator] Found ${pairs.size} terms with tag neighborhood synonyms`);
|
|
149
|
+
return pairs;
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error('[SynonymGenerator] Tag neighborhood mining failed:', error.message);
|
|
153
|
+
return new Map();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Strategy 3: SimHash Proximity
|
|
158
|
+
* Terms in atoms with similar simhashes are related.
|
|
159
|
+
*
|
|
160
|
+
* Groups atoms by simhash Hamming distance < threshold.
|
|
161
|
+
* Extracts terms from each cluster.
|
|
162
|
+
* Terms appearing in same cluster are candidates.
|
|
163
|
+
*/
|
|
164
|
+
async mineSimHashSynonyms() {
|
|
165
|
+
console.log('[SynonymGenerator] Strategy 3: Mining simhash proximity...');
|
|
166
|
+
try {
|
|
167
|
+
// Get atoms with their simhashes and extract key terms
|
|
168
|
+
const query = `
|
|
169
|
+
SELECT
|
|
170
|
+
id,
|
|
171
|
+
simhash,
|
|
172
|
+
content,
|
|
173
|
+
tags
|
|
174
|
+
FROM atoms
|
|
175
|
+
WHERE simhash IS NOT NULL AND simhash != '0'
|
|
176
|
+
LIMIT 1000
|
|
177
|
+
`;
|
|
178
|
+
const result = await db.run(query);
|
|
179
|
+
if (!result.rows) {
|
|
180
|
+
console.log('[SynonymGenerator] No simhash data available');
|
|
181
|
+
return new Map();
|
|
182
|
+
}
|
|
183
|
+
// Helper to extract terms from content
|
|
184
|
+
const extractTerms = (content) => {
|
|
185
|
+
return content.toLowerCase()
|
|
186
|
+
.split(/[\s\W]+/)
|
|
187
|
+
.filter(term => term.length > 3 && term.length < 30)
|
|
188
|
+
.slice(0, 50); // Limit terms per atom
|
|
189
|
+
};
|
|
190
|
+
// Group atoms by simhash proximity
|
|
191
|
+
const atoms = result.rows;
|
|
192
|
+
// Precompute terms and simhash BigInts to avoid redundant work in O(N^2) loop
|
|
193
|
+
const atomsWithMetadata = atoms.map(atom => {
|
|
194
|
+
let hashBigInt;
|
|
195
|
+
try {
|
|
196
|
+
const hash = atom.simhash;
|
|
197
|
+
hashBigInt = BigInt(hash.startsWith('0x') ? hash : `0x${hash}`);
|
|
198
|
+
}
|
|
199
|
+
catch (e) {
|
|
200
|
+
// Fallback handled in distance calculation
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
...atom,
|
|
204
|
+
terms: extractTerms(atom.content),
|
|
205
|
+
hashBigInt
|
|
206
|
+
};
|
|
207
|
+
});
|
|
208
|
+
const termClusters = new Map(); // term -> (related_term -> co_occurrence_count)
|
|
209
|
+
for (let i = 0; i < atomsWithMetadata.length; i++) {
|
|
210
|
+
const atom1 = atomsWithMetadata[i];
|
|
211
|
+
for (let j = i + 1; j < atomsWithMetadata.length; j++) {
|
|
212
|
+
const atom2 = atomsWithMetadata[j];
|
|
213
|
+
// Use precomputed BigInts for faster distance calculation
|
|
214
|
+
let distance = 64;
|
|
215
|
+
if (atom1.hashBigInt !== undefined && atom2.hashBigInt !== undefined) {
|
|
216
|
+
distance = this.fastHammingDistance(atom1.hashBigInt, atom2.hashBigInt);
|
|
217
|
+
}
|
|
218
|
+
if (distance <= this.MAX_SIMHASH_DISTANCE) {
|
|
219
|
+
// Use precomputed terms
|
|
220
|
+
const terms1 = atom1.terms;
|
|
221
|
+
const terms2 = atom2.terms;
|
|
222
|
+
// Add cross-cluster term pairs with co-occurrence counting
|
|
223
|
+
for (const t1 of terms1) {
|
|
224
|
+
for (const t2 of terms2) {
|
|
225
|
+
if (t1 !== t2) {
|
|
226
|
+
if (!termClusters.has(t1)) {
|
|
227
|
+
termClusters.set(t1, new Map());
|
|
228
|
+
}
|
|
229
|
+
const related = termClusters.get(t1);
|
|
230
|
+
related.set(t2, (related.get(t2) || 0) + 1);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Convert clusters to pairs with frequency-based scoring
|
|
238
|
+
const pairs = new Map();
|
|
239
|
+
for (const [term1, relatedTerms] of termClusters.entries()) {
|
|
240
|
+
if (!pairs.has(term1)) {
|
|
241
|
+
pairs.set(term1, []);
|
|
242
|
+
}
|
|
243
|
+
// Convert to array and sort by co-occurrence frequency
|
|
244
|
+
const sortedRelated = Array.from(relatedTerms.entries())
|
|
245
|
+
.sort((a, b) => b[1] - a[1]) // Sort by frequency desc
|
|
246
|
+
.slice(0, 20); // Top 20 related terms
|
|
247
|
+
for (const [term2, frequency] of sortedRelated) {
|
|
248
|
+
pairs.get(term1).push({
|
|
249
|
+
term1,
|
|
250
|
+
term2,
|
|
251
|
+
score: frequency, // Use frequency as score (higher = more reliable)
|
|
252
|
+
strategy: 'simhash_proximity'
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
console.log(`[SynonymGenerator] Found ${pairs.size} terms with simhash synonyms`);
|
|
257
|
+
return pairs;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error('[SynonymGenerator] SimHash mining failed:', error.message);
|
|
261
|
+
return new Map();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Merge all strategies with weighted voting
|
|
266
|
+
* Term pairs appearing in 2+ strategies get higher confidence
|
|
267
|
+
*/
|
|
268
|
+
async generateSynonymRings() {
|
|
269
|
+
console.log('[SynonymGenerator] Generating synonym rings from all strategies...');
|
|
270
|
+
// Run all strategies in parallel
|
|
271
|
+
const [cooccurrence, neighborhood, simhash] = await Promise.all([
|
|
272
|
+
this.mineCooccurrenceSynonyms(),
|
|
273
|
+
this.mineTagNeighborhoodSynonyms(),
|
|
274
|
+
this.mineSimHashSynonyms()
|
|
275
|
+
]);
|
|
276
|
+
// Build synonym rings directly from each strategy
|
|
277
|
+
// No need for multi-strategy voting - each strategy has its own quality filters
|
|
278
|
+
const synonymRings = {};
|
|
279
|
+
// Helper to add synonyms
|
|
280
|
+
const addSynonym = (term1, term2) => {
|
|
281
|
+
if (!Array.isArray(synonymRings[term1]))
|
|
282
|
+
synonymRings[term1] = [];
|
|
283
|
+
if (!Array.isArray(synonymRings[term2]))
|
|
284
|
+
synonymRings[term2] = [];
|
|
285
|
+
if (!synonymRings[term1].includes(term2) && synonymRings[term1].length < this.TOP_SYNONYMS_PER_TERM) {
|
|
286
|
+
synonymRings[term1].push(term2);
|
|
287
|
+
}
|
|
288
|
+
if (!synonymRings[term2].includes(term1) && synonymRings[term2].length < this.TOP_SYNONYMS_PER_TERM) {
|
|
289
|
+
synonymRings[term2].push(term1);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
// 1. Tag neighborhood pairs (high precision - Jaccard >= 0.5)
|
|
293
|
+
let tagPairsAdded = 0;
|
|
294
|
+
for (const [term, pairs] of neighborhood.entries()) {
|
|
295
|
+
for (const pair of pairs) {
|
|
296
|
+
// Jaccard score already >= 0.5 threshold
|
|
297
|
+
addSynonym(pair.term1, pair.term2);
|
|
298
|
+
tagPairsAdded++;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
console.log(`[SynonymGenerator] Added ${tagPairsAdded} tag neighborhood pairs`);
|
|
302
|
+
// 2. SimHash proximity pairs (cluster-based)
|
|
303
|
+
// Score by cluster cohesion, not inverse size
|
|
304
|
+
let simhashPairsAdded = 0;
|
|
305
|
+
for (const [term, pairs] of simhash.entries()) {
|
|
306
|
+
// Sort pairs by score (higher = more cohesive cluster)
|
|
307
|
+
const sortedPairs = pairs.sort((a, b) => b.score - a.score);
|
|
308
|
+
// Take top pairs from each term's perspective
|
|
309
|
+
for (const pair of sortedPairs.slice(0, 5)) {
|
|
310
|
+
addSynonym(pair.term1, pair.term2);
|
|
311
|
+
simhashPairsAdded++;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
console.log(`[SynonymGenerator] Added ${simhashPairsAdded} simhash proximity pairs`);
|
|
315
|
+
// 3. Co-occurrence pairs (if available)
|
|
316
|
+
let coocPairsAdded = 0;
|
|
317
|
+
for (const [term, pairs] of cooccurrence.entries()) {
|
|
318
|
+
for (const pair of pairs) {
|
|
319
|
+
addSynonym(pair.term1, pair.term2);
|
|
320
|
+
coocPairsAdded++;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (coocPairsAdded > 0) {
|
|
324
|
+
console.log(`[SynonymGenerator] Added ${coocPairsAdded} co-occurrence pairs`);
|
|
325
|
+
}
|
|
326
|
+
console.log(`[SynonymGenerator] Generated ${Object.keys(synonymRings).length} synonym rings`);
|
|
327
|
+
return synonymRings;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Save to synonym ring file for @rbalchii/dse to load
|
|
331
|
+
*/
|
|
332
|
+
async saveSynonymRings(synonyms, outputPath) {
|
|
333
|
+
console.log(`[SynonymGenerator] Saving synonym rings to ${outputPath}...`);
|
|
334
|
+
try {
|
|
335
|
+
// Save directly to database
|
|
336
|
+
console.log(`[SynonymGenerator] Upserting synonyms to database table...`);
|
|
337
|
+
const terms = [];
|
|
338
|
+
const synLists = [];
|
|
339
|
+
for (const [term, syns] of Object.entries(synonyms)) {
|
|
340
|
+
if (!syns || syns.length === 0)
|
|
341
|
+
continue;
|
|
342
|
+
terms.push(term);
|
|
343
|
+
synLists.push(JSON.stringify(syns));
|
|
344
|
+
}
|
|
345
|
+
// Batch insert in chunks to avoid parameter limits and optimize performance
|
|
346
|
+
const BATCH_SIZE = 500;
|
|
347
|
+
let processed = 0;
|
|
348
|
+
while (processed < terms.length) {
|
|
349
|
+
const batchTerms = terms.slice(processed, processed + BATCH_SIZE);
|
|
350
|
+
const batchSynLists = synLists.slice(processed, processed + BATCH_SIZE);
|
|
351
|
+
if (batchTerms.length > 0) {
|
|
352
|
+
const query = `
|
|
353
|
+
INSERT INTO synonyms (term, synonyms)
|
|
354
|
+
SELECT * FROM unnest($1::text[], $2::text[])
|
|
355
|
+
ON CONFLICT (term) DO UPDATE SET synonyms = EXCLUDED.synonyms, created_at = CURRENT_TIMESTAMP;
|
|
356
|
+
`;
|
|
357
|
+
await db.run(query, [batchTerms, batchSynLists]);
|
|
358
|
+
}
|
|
359
|
+
processed += BATCH_SIZE;
|
|
360
|
+
}
|
|
361
|
+
// Ensure directory exists
|
|
362
|
+
const dir = path.dirname(outputPath);
|
|
363
|
+
if (!fs.existsSync(dir)) {
|
|
364
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
365
|
+
}
|
|
366
|
+
// Save as JSON
|
|
367
|
+
const jsonContent = JSON.stringify(synonyms, null, 2);
|
|
368
|
+
fs.writeFileSync(outputPath, jsonContent, 'utf-8');
|
|
369
|
+
console.log(`[SynonymGenerator] Saved ${Object.keys(synonyms).length} synonym rings`);
|
|
370
|
+
// Also generate a human-readable summary
|
|
371
|
+
const summaryPath = outputPath.replace('.json', '-summary.md');
|
|
372
|
+
this.generateSummary(synonyms, summaryPath);
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
console.error('[SynonymGenerator] Failed to save synonym rings:', error.message);
|
|
376
|
+
throw error;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Generate human-readable summary
|
|
381
|
+
*/
|
|
382
|
+
generateSummary(synonyms, outputPath) {
|
|
383
|
+
let markdown = '# Auto-Generated Synonym Rings\n\n';
|
|
384
|
+
markdown += `Generated: ${new Date().toISOString()}\n\n`;
|
|
385
|
+
markdown += `Total terms: ${Object.keys(synonyms).length}\n\n`;
|
|
386
|
+
markdown += '## Synonym Clusters\n\n';
|
|
387
|
+
// Sort by number of synonyms
|
|
388
|
+
const sorted = Object.entries(synonyms)
|
|
389
|
+
.sort((a, b) => b[1].length - a[1].length)
|
|
390
|
+
.slice(0, 100); // Top 100
|
|
391
|
+
for (const [term, synonymList] of sorted) {
|
|
392
|
+
markdown += `### ${term}\n`;
|
|
393
|
+
markdown += `**Synonyms:** ${synonymList.join(', ')}\n\n`;
|
|
394
|
+
}
|
|
395
|
+
fs.writeFileSync(outputPath, markdown, 'utf-8');
|
|
396
|
+
console.log(`[SynonymGenerator] Generated summary at ${outputPath}`);
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Load existing synonym rings
|
|
400
|
+
*/
|
|
401
|
+
async loadExistingSynonymRings(inputPath) {
|
|
402
|
+
try {
|
|
403
|
+
if (!fs.existsSync(inputPath)) {
|
|
404
|
+
return {};
|
|
405
|
+
}
|
|
406
|
+
const content = fs.readFileSync(inputPath, 'utf-8');
|
|
407
|
+
return JSON.parse(content);
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
console.error('[SynonymGenerator] Failed to load existing synonym rings:', error.message);
|
|
411
|
+
return {};
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=auto-synonym-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-synonym-generator.js","sourceRoot":"","sources":["../../../src/services/synonyms/auto-synonym-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Status Manager
|
|
3
|
+
*
|
|
4
|
+
* Tracks global system state (ingestion, search, idle) and provides
|
|
5
|
+
* queuing mechanism for search requests during ingestion.
|
|
6
|
+
*/
|
|
7
|
+
type SystemState = 'idle' | 'ingesting' | 'searching' | 'maintenance';
|
|
8
|
+
interface StatusInfo {
|
|
9
|
+
state: SystemState;
|
|
10
|
+
isBusy: boolean;
|
|
11
|
+
activeTask?: string;
|
|
12
|
+
progress?: {
|
|
13
|
+
current: number;
|
|
14
|
+
total: number;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
lastIngestion?: Date;
|
|
18
|
+
queuedSearches: SearchRequest[];
|
|
19
|
+
}
|
|
20
|
+
interface SearchRequest {
|
|
21
|
+
query: string;
|
|
22
|
+
resolve: (result: any) => void;
|
|
23
|
+
reject: (error: Error) => void;
|
|
24
|
+
timestamp: number;
|
|
25
|
+
}
|
|
26
|
+
declare class SystemStatusManager {
|
|
27
|
+
private state;
|
|
28
|
+
private activeTask?;
|
|
29
|
+
private progress?;
|
|
30
|
+
private lastIngestion?;
|
|
31
|
+
private queuedSearches;
|
|
32
|
+
private isProcessingQueue;
|
|
33
|
+
/**
|
|
34
|
+
* Set system state
|
|
35
|
+
*/
|
|
36
|
+
setState(state: SystemState, task?: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Set progress indicator
|
|
39
|
+
*/
|
|
40
|
+
setProgress(current: number, total: number, description: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Clear progress indicator
|
|
43
|
+
*/
|
|
44
|
+
clearProgress(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get current status
|
|
47
|
+
*/
|
|
48
|
+
getStatus(): StatusInfo;
|
|
49
|
+
/**
|
|
50
|
+
* Check if system is ready for search
|
|
51
|
+
*/
|
|
52
|
+
isReadyForSearch(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Queue a search request for later execution
|
|
55
|
+
*/
|
|
56
|
+
queueSearch(request: SearchRequest): void;
|
|
57
|
+
/**
|
|
58
|
+
* Process queued search requests
|
|
59
|
+
*/
|
|
60
|
+
processQueue(searchFn: (query: string) => Promise<any>): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Get estimated wait time for queued searches
|
|
63
|
+
*/
|
|
64
|
+
getEstimatedWaitTime(): number;
|
|
65
|
+
}
|
|
66
|
+
export declare const systemStatus: SystemStatusManager;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=system-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-status.d.ts","sourceRoot":"","sources":["../../src/services/system-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AAEtE,UAAU,UAAU;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAO;IAC7B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM;IAe1C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAI/D;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,SAAS,IAAI,UAAU;IAWvB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa;IAKlC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;IAyB5D;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAQ/B;AAGD,eAAO,MAAM,YAAY,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Status Manager
|
|
3
|
+
*
|
|
4
|
+
* Tracks global system state (ingestion, search, idle) and provides
|
|
5
|
+
* queuing mechanism for search requests during ingestion.
|
|
6
|
+
*/
|
|
7
|
+
class SystemStatusManager {
|
|
8
|
+
state = 'idle';
|
|
9
|
+
activeTask;
|
|
10
|
+
progress;
|
|
11
|
+
lastIngestion;
|
|
12
|
+
queuedSearches = [];
|
|
13
|
+
isProcessingQueue = false;
|
|
14
|
+
/**
|
|
15
|
+
* Set system state
|
|
16
|
+
*/
|
|
17
|
+
setState(state, task) {
|
|
18
|
+
const oldState = this.state;
|
|
19
|
+
this.state = state;
|
|
20
|
+
this.activeTask = task;
|
|
21
|
+
if (state === 'ingesting') {
|
|
22
|
+
this.lastIngestion = new Date();
|
|
23
|
+
}
|
|
24
|
+
// Log state transitions for debugging
|
|
25
|
+
if (oldState !== state) {
|
|
26
|
+
console.log(`[SystemStatus] ${oldState} → ${state}${task ? ` (${task})` : ''}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Set progress indicator
|
|
31
|
+
*/
|
|
32
|
+
setProgress(current, total, description) {
|
|
33
|
+
this.progress = { current, total, description };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Clear progress indicator
|
|
37
|
+
*/
|
|
38
|
+
clearProgress() {
|
|
39
|
+
this.progress = undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get current status
|
|
43
|
+
*/
|
|
44
|
+
getStatus() {
|
|
45
|
+
return {
|
|
46
|
+
state: this.state,
|
|
47
|
+
isBusy: this.state === 'ingesting' || this.state === 'maintenance',
|
|
48
|
+
activeTask: this.activeTask,
|
|
49
|
+
progress: this.progress,
|
|
50
|
+
lastIngestion: this.lastIngestion,
|
|
51
|
+
queuedSearches: this.queuedSearches
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if system is ready for search
|
|
56
|
+
*/
|
|
57
|
+
isReadyForSearch() {
|
|
58
|
+
return this.state !== 'ingesting' && this.state !== 'maintenance';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Queue a search request for later execution
|
|
62
|
+
*/
|
|
63
|
+
queueSearch(request) {
|
|
64
|
+
this.queuedSearches.push(request);
|
|
65
|
+
console.log(`[SystemStatus] Search queued: "${request.query.substring(0, 50)}..." (position: ${this.queuedSearches.length})`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Process queued search requests
|
|
69
|
+
*/
|
|
70
|
+
async processQueue(searchFn) {
|
|
71
|
+
if (this.isProcessingQueue || this.queuedSearches.length === 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.isProcessingQueue = true;
|
|
75
|
+
try {
|
|
76
|
+
while (this.queuedSearches.length > 0 && this.isReadyForSearch()) {
|
|
77
|
+
const request = this.queuedSearches.shift();
|
|
78
|
+
if (request) {
|
|
79
|
+
try {
|
|
80
|
+
console.log(`[SystemStatus] Processing queued search: "${request.query.substring(0, 50)}..."`);
|
|
81
|
+
const result = await searchFn(request.query);
|
|
82
|
+
request.resolve(result);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
request.reject(error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
this.isProcessingQueue = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get estimated wait time for queued searches
|
|
96
|
+
*/
|
|
97
|
+
getEstimatedWaitTime() {
|
|
98
|
+
if (!this.lastIngestion)
|
|
99
|
+
return 0;
|
|
100
|
+
const timeSinceIngestion = Date.now() - this.lastIngestion.getTime();
|
|
101
|
+
const remainingWait = Math.max(0, 30000 - timeSinceIngestion); // 30 second debounce
|
|
102
|
+
return Math.ceil(remainingWait / 1000); // Return seconds
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Singleton instance
|
|
106
|
+
export const systemStatus = new SystemStatusManager();
|
|
107
|
+
//# sourceMappingURL=system-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-status.js","sourceRoot":"","sources":["../../src/services/system-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,MAAM,mBAAmB;IACf,KAAK,GAAgB,MAAM,CAAC;IAC5B,UAAU,CAAU;IACpB,QAAQ,CAA0B;IAClC,aAAa,CAAQ;IACrB,cAAc,GAAoB,EAAE,CAAC;IACrC,iBAAiB,GAAG,KAAK,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAkB,EAAE,IAAa;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,WAAmB;QAC7D,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa;YAClE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAChI,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAyC;QAC1D,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACjE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;wBAC/F,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC7C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,CAAC;QAElC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,qBAAqB;QAEpF,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB;IAC3D,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Service (The Teacher)
|
|
3
|
+
*
|
|
4
|
+
* Implements "Tag Walker" Strategy (Standard 068 Phase B):
|
|
5
|
+
* 1. Pick a seed tag from the master list.
|
|
6
|
+
* 2. Find atoms that contain this tag ("Walking the Graph").
|
|
7
|
+
* 3. Use BERT NER to find NEW entities in these specific contexts.
|
|
8
|
+
* 4. Add new entities to the master list (Expansion).
|
|
9
|
+
*/
|
|
10
|
+
export declare function runDiscovery(sampleSize?: number): Promise<string[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Reads the master list for the Infector (and Walker).
|
|
13
|
+
* Uses an in-memory cache updated via file watcher.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getMasterTags(): string[];
|
|
16
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/services/tags/discovery.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+F7E;AA4DD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAuCxC"}
|