@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,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Parser Module — "The Ears"
|
|
3
|
+
*
|
|
4
|
+
* NLP parsing, temporal extraction, query decomposition, and semantic expansion.
|
|
5
|
+
* Extracted from search.ts to isolate natural language understanding
|
|
6
|
+
* from the physics-based search core.
|
|
7
|
+
*/
|
|
8
|
+
import { expandTerms as semanticExpand, isExpansionReady } from '@rbalchii/dse';
|
|
9
|
+
declare const nlp: import("wink-nlp").WinkMethods;
|
|
10
|
+
export { nlp, isExpansionReady, semanticExpand };
|
|
11
|
+
/**
|
|
12
|
+
* Fetch top tags from the system to ground the LLM's query expansion
|
|
13
|
+
*/
|
|
14
|
+
export declare function getGlobalTags(limit?: number): Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Deterministic Query Expansion (No LLM)
|
|
17
|
+
* Scans the user query for known tags from the master list.
|
|
18
|
+
*/
|
|
19
|
+
export declare function expandQuery(originalQuery: string): Promise<string[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Helper to sanitize queries for FTS engine
|
|
22
|
+
*/
|
|
23
|
+
export declare function sanitizeFtsQuery(query: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Expand camelCase and PascalCase identifiers into additional search terms.
|
|
26
|
+
* e.g. "findAnchors" → ["findAnchors", "find", "Anchors", "anchors"]
|
|
27
|
+
* Returned terms are de-duped and lowercased for FTS.
|
|
28
|
+
*/
|
|
29
|
+
export declare function expandCamelCase(terms: string[]): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Helper: Extract Temporal Context
|
|
32
|
+
* Detects "last X months/years", year ranges, and returns a list of relevant year tags.
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractTemporalContext(query: string): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Natural Language Parser (Standard 070 - Enhanced)
|
|
37
|
+
* Uses NLP to extract "Meaningful Tags" including Temporal Context.
|
|
38
|
+
* Enhanced to handle conversational queries of any size.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseNaturalLanguage(query: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Extract key terms from conversational queries
|
|
43
|
+
* Identifies important nouns, proper nouns, adjectives, and verbs while preserving context
|
|
44
|
+
*/
|
|
45
|
+
export declare function extractKeyTermsFromConversation(conversation: string): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Split a query into sentence-like chunks (molecules)
|
|
48
|
+
*/
|
|
49
|
+
export declare function splitQueryIntoMolecules(query: string): string[];
|
|
50
|
+
export declare function parseQuery(query: string): {
|
|
51
|
+
phrases: string[];
|
|
52
|
+
temporal: string[];
|
|
53
|
+
buckets: string[];
|
|
54
|
+
keywords: string[];
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Conversational Query Expansion (Standard 086)
|
|
58
|
+
* Expands natural language queries into semantic equivalents
|
|
59
|
+
*/
|
|
60
|
+
export declare function expandConversationalQuery(query: string): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Get related tags for a given query to provide semantic serendipity
|
|
63
|
+
* This function finds tags that are semantically related to the query terms
|
|
64
|
+
*/
|
|
65
|
+
export declare function getRelatedTagsForQuery(query: string, maxTags?: number): Promise<string[]>;
|
|
66
|
+
//# sourceMappingURL=query-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../../src/services/search/query-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAmB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMjG,QAAA,MAAM,GAAG,gCAAc,CAAC;AAMxB,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAEjD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBzE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqB1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAezD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAoD9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsC1D;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAmC/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAAE,CAgB3H;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BjE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6ClG"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Parser Module — "The Ears"
|
|
3
|
+
*
|
|
4
|
+
* NLP parsing, temporal extraction, query decomposition, and semantic expansion.
|
|
5
|
+
* Extracted from search.ts to isolate natural language understanding
|
|
6
|
+
* from the physics-based search core.
|
|
7
|
+
*/
|
|
8
|
+
import { db } from '../../core/db.js';
|
|
9
|
+
import { config } from '../../config/index.js';
|
|
10
|
+
import { expandTerms as semanticExpand, loadSynonymRing, isExpansionReady } from '@rbalchii/dse';
|
|
11
|
+
import wink from 'wink-nlp';
|
|
12
|
+
import model from 'wink-eng-lite-web-model';
|
|
13
|
+
import { getMasterTags } from '../tags/discovery.js';
|
|
14
|
+
// Initialize NLP (Fast CPU-based)
|
|
15
|
+
const nlp = wink(model);
|
|
16
|
+
// Initialize Semantic Expansion (Synonym Ring)
|
|
17
|
+
loadSynonymRing();
|
|
18
|
+
// Re-export NLP instance and expansion readiness for use by search orchestrator
|
|
19
|
+
export { nlp, isExpansionReady, semanticExpand };
|
|
20
|
+
/**
|
|
21
|
+
* Fetch top tags from the system to ground the LLM's query expansion
|
|
22
|
+
*/
|
|
23
|
+
export async function getGlobalTags(limit = 50) {
|
|
24
|
+
try {
|
|
25
|
+
// Fetch unique tags from the tags table
|
|
26
|
+
const query = `
|
|
27
|
+
SELECT DISTINCT unnest(tags) as tag
|
|
28
|
+
FROM atoms
|
|
29
|
+
WHERE tags IS NOT NULL
|
|
30
|
+
LIMIT $1
|
|
31
|
+
`;
|
|
32
|
+
const result = await db.run(query, [limit * 10]); // Get more than needed for filtering
|
|
33
|
+
if (!result.rows)
|
|
34
|
+
return [];
|
|
35
|
+
const uniqueTags = result.rows
|
|
36
|
+
.map((r) => r.tag)
|
|
37
|
+
.filter((t) => typeof t === 'string' && t.length > 0);
|
|
38
|
+
return [...new Set(uniqueTags)].slice(0, limit);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
console.error('[Search] Failed to fetch global tags:', e);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Deterministic Query Expansion (No LLM)
|
|
47
|
+
* Scans the user query for known tags from the master list.
|
|
48
|
+
*/
|
|
49
|
+
export async function expandQuery(originalQuery) {
|
|
50
|
+
try {
|
|
51
|
+
const globalTags = getMasterTags(); // This is synchronous file read
|
|
52
|
+
const queryLower = originalQuery.toLowerCase();
|
|
53
|
+
// Find tags specifically mentioned in the query or that substring match
|
|
54
|
+
// Simple heuristic: if query contains the tag, we boost it.
|
|
55
|
+
const foundTags = globalTags.filter(tag => {
|
|
56
|
+
const tagLower = tag.toLowerCase();
|
|
57
|
+
// Check for boundary matches or direct inclusion
|
|
58
|
+
return queryLower.includes(tagLower);
|
|
59
|
+
});
|
|
60
|
+
if (foundTags.length > 0) {
|
|
61
|
+
console.log(`[Search] Deterministically matched tags: ${foundTags.join(', ')}`);
|
|
62
|
+
}
|
|
63
|
+
return foundTags;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.error('[Search] Expansion failed:', e);
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Helper to sanitize queries for FTS engine
|
|
72
|
+
*/
|
|
73
|
+
export function sanitizeFtsQuery(query) {
|
|
74
|
+
return query
|
|
75
|
+
.replace(/[^a-zA-Z0-9\s]/g, ' ')
|
|
76
|
+
.replace(/\s+/g, ' ')
|
|
77
|
+
.trim()
|
|
78
|
+
.toLowerCase();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Expand camelCase and PascalCase identifiers into additional search terms.
|
|
82
|
+
* e.g. "findAnchors" → ["findAnchors", "find", "Anchors", "anchors"]
|
|
83
|
+
* Returned terms are de-duped and lowercased for FTS.
|
|
84
|
+
*/
|
|
85
|
+
export function expandCamelCase(terms) {
|
|
86
|
+
const expanded = new Set();
|
|
87
|
+
for (const term of terms) {
|
|
88
|
+
expanded.add(term.toLowerCase());
|
|
89
|
+
// Split on camelCase/PascalCase boundaries
|
|
90
|
+
const parts = term
|
|
91
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2') // camelCase → camel Case
|
|
92
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2') // acronym run: ABCDef → ABC Def
|
|
93
|
+
.split(/\s+/)
|
|
94
|
+
.filter(p => p.length > 1);
|
|
95
|
+
for (const p of parts) {
|
|
96
|
+
expanded.add(p.toLowerCase());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return Array.from(expanded);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Helper: Extract Temporal Context
|
|
103
|
+
* Detects "last X months/years", year ranges, and returns a list of relevant year tags.
|
|
104
|
+
*/
|
|
105
|
+
export function extractTemporalContext(query) {
|
|
106
|
+
const now = new Date();
|
|
107
|
+
const currentYear = now.getFullYear();
|
|
108
|
+
const tags = new Set();
|
|
109
|
+
const MAX_TEMPORAL_AMOUNT = 100;
|
|
110
|
+
// Regex for "last X months/years"
|
|
111
|
+
const match = query.match(/last\s+(\d+)\s+(months?|years?|days?)/i);
|
|
112
|
+
if (match) {
|
|
113
|
+
let amount = parseInt(match[1]);
|
|
114
|
+
const unit = match[2].toLowerCase();
|
|
115
|
+
// Security: Cap the amount to prevent loop exhaustion DoS
|
|
116
|
+
if (amount > MAX_TEMPORAL_AMOUNT) {
|
|
117
|
+
amount = MAX_TEMPORAL_AMOUNT;
|
|
118
|
+
}
|
|
119
|
+
tags.add(currentYear.toString()); // Always include current year
|
|
120
|
+
if (unit.startsWith('year')) {
|
|
121
|
+
for (let i = 1; i <= amount; i++) {
|
|
122
|
+
tags.add((currentYear - i).toString());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (unit.startsWith('month')) {
|
|
126
|
+
// If subtracting months goes back to prev year
|
|
127
|
+
const pastDate = new Date(now);
|
|
128
|
+
pastDate.setMonth(now.getMonth() - amount);
|
|
129
|
+
const pastYear = pastDate.getFullYear();
|
|
130
|
+
if (pastYear < currentYear) {
|
|
131
|
+
for (let y = pastYear; y < currentYear; y++)
|
|
132
|
+
tags.add(y.toString());
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Detect year ranges like "from 2025 to 2026" or "between 2024 and 2025"
|
|
137
|
+
const rangeMatch = query.match(/\b(from|between)\s+(\d{4})\s+(to|and)\s+(\d{4})\b/i);
|
|
138
|
+
if (rangeMatch) {
|
|
139
|
+
const startYear = parseInt(rangeMatch[2]);
|
|
140
|
+
const endYear = parseInt(rangeMatch[4]);
|
|
141
|
+
// Add all years in the range
|
|
142
|
+
for (let year = Math.min(startYear, endYear); year <= Math.max(startYear, endYear); year++) {
|
|
143
|
+
tags.add(year.toString());
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Also detect explicit years (2020-2030)
|
|
147
|
+
const yearMatch = query.match(/\b(202[0-9]|203[0-9])\b/g);
|
|
148
|
+
if (yearMatch) {
|
|
149
|
+
yearMatch.forEach(y => tags.add(y));
|
|
150
|
+
}
|
|
151
|
+
return Array.from(tags);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Natural Language Parser (Standard 070 - Enhanced)
|
|
155
|
+
* Uses NLP to extract "Meaningful Tags" including Temporal Context.
|
|
156
|
+
* Enhanced to handle conversational queries of any size.
|
|
157
|
+
*/
|
|
158
|
+
export function parseNaturalLanguage(query) {
|
|
159
|
+
// 1. Extract Temporal Context
|
|
160
|
+
const timeTags = extractTemporalContext(query);
|
|
161
|
+
// 2. Handle conversational queries by extracting key entities and concepts
|
|
162
|
+
// For very long queries, we want to identify the most important terms
|
|
163
|
+
const queryLength = query.trim().split(/\s+/).length;
|
|
164
|
+
let tokens = [];
|
|
165
|
+
if (queryLength > 10) {
|
|
166
|
+
// For longer conversational queries, use more sophisticated extraction
|
|
167
|
+
tokens = extractKeyTermsFromConversation(query);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// For shorter queries, use the original approach
|
|
171
|
+
const doc = nlp.readDoc(query);
|
|
172
|
+
tokens = doc.tokens().filter((t) => {
|
|
173
|
+
const tag = t.out(nlp.its.pos);
|
|
174
|
+
const text = t.out().toLowerCase();
|
|
175
|
+
// Whitelist specific domain words that might get misclassified or filtered
|
|
176
|
+
// Uses Config-based whitelist or falls back to defaults
|
|
177
|
+
const whitelist = config.SEARCH?.whitelist || ['burnout', 'career', 'decision', 'pattern', 'impact'];
|
|
178
|
+
if (whitelist.some((w) => text.includes(w)))
|
|
179
|
+
return true;
|
|
180
|
+
return tag === 'NOUN' || tag === 'PROPN' || tag === 'ADJ' || tag === 'VERB';
|
|
181
|
+
}).out(nlp.its.text);
|
|
182
|
+
}
|
|
183
|
+
// Combine with temporal tags
|
|
184
|
+
const uniqueTokens = new Set([...tokens, ...timeTags]);
|
|
185
|
+
if (uniqueTokens.size > 0) {
|
|
186
|
+
return Array.from(uniqueTokens).join(' ').toLowerCase();
|
|
187
|
+
}
|
|
188
|
+
return sanitizeFtsQuery(query);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Extract key terms from conversational queries
|
|
192
|
+
* Identifies important nouns, proper nouns, adjectives, and verbs while preserving context
|
|
193
|
+
*/
|
|
194
|
+
export function extractKeyTermsFromConversation(conversation) {
|
|
195
|
+
const doc = nlp.readDoc(conversation);
|
|
196
|
+
// Extract named entities (people, places, organizations)
|
|
197
|
+
const entities = doc.entities().out(nlp.its.normal);
|
|
198
|
+
// Extract important tokens (nouns, proper nouns, adjectives, verbs)
|
|
199
|
+
const importantTokens = doc.tokens().filter((t) => {
|
|
200
|
+
const tag = t.out(nlp.its.pos);
|
|
201
|
+
const text = t.out().toLowerCase();
|
|
202
|
+
// Include named entities
|
|
203
|
+
if (entities.includes(text))
|
|
204
|
+
return true;
|
|
205
|
+
// Include important POS tags
|
|
206
|
+
return tag === 'NOUN' || tag === 'PROPN' || tag === 'ADJ' || tag === 'VERB';
|
|
207
|
+
}).out(nlp.its.normal);
|
|
208
|
+
// Combine and deduplicate
|
|
209
|
+
const allTerms = [...new Set([...entities, ...importantTokens])];
|
|
210
|
+
// Filter out common stop words that might have slipped through
|
|
211
|
+
const stopWords = new Set([
|
|
212
|
+
'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
|
|
213
|
+
'of', 'with', 'by', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
|
|
214
|
+
'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
|
|
215
|
+
'should', 'may', 'might', 'must', 'can', 'shall', 'this', 'that', 'these', 'those',
|
|
216
|
+
'i', 'you', 'he', 'she', 'it', 'we', 'they', 'me', 'him', 'her', 'us', 'them',
|
|
217
|
+
'what', 'which', 'who', 'when', 'where', 'why', 'how', 'whose', 'whom'
|
|
218
|
+
]);
|
|
219
|
+
return allTerms.filter(term => !stopWords.has(term.toLowerCase()) && term.length > 2);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Split a query into sentence-like chunks (molecules)
|
|
223
|
+
*/
|
|
224
|
+
export function splitQueryIntoMolecules(query) {
|
|
225
|
+
// First, clean the query of any extraneous characters or formatting
|
|
226
|
+
let cleanQuery = query.trim();
|
|
227
|
+
// Remove common prefixes/suffixes that might interfere with sentence detection
|
|
228
|
+
cleanQuery = cleanQuery.replace(/^[#\-\*\s]+|[#\-\*\s]+$/g, '').trim();
|
|
229
|
+
// Split by sentence endings first (periods, exclamation marks, question marks)
|
|
230
|
+
let sentences = cleanQuery.split(/(?<=[.!?])\s+/);
|
|
231
|
+
// If no sentence endings found, try to split by commas or other separators
|
|
232
|
+
if (sentences.length <= 1) {
|
|
233
|
+
sentences = cleanQuery.split(/(?<=[,;:])\s+/);
|
|
234
|
+
}
|
|
235
|
+
// If still no good splits, split by word count (about 10-15 words per chunk)
|
|
236
|
+
if (sentences.length <= 1) {
|
|
237
|
+
const words = cleanQuery.split(/\s+/);
|
|
238
|
+
const chunks = [];
|
|
239
|
+
const chunkSize = 15; // About 15 words per "molecule"
|
|
240
|
+
for (let i = 0; i < words.length; i += chunkSize) {
|
|
241
|
+
const chunk = words.slice(i, i + chunkSize).join(' ');
|
|
242
|
+
if (chunk.trim()) {
|
|
243
|
+
chunks.push(chunk);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return chunks.length > 0 ? chunks : [cleanQuery];
|
|
247
|
+
}
|
|
248
|
+
// Clean up the sentences
|
|
249
|
+
return sentences
|
|
250
|
+
.map(s => s.trim())
|
|
251
|
+
.filter(s => s.length > 0);
|
|
252
|
+
}
|
|
253
|
+
export function parseQuery(query) {
|
|
254
|
+
const result = { phrases: [], temporal: [], buckets: [], keywords: [] };
|
|
255
|
+
const phraseRegex = /"([^"]+)"/g;
|
|
256
|
+
let phraseMatch;
|
|
257
|
+
while ((phraseMatch = phraseRegex.exec(query)) !== null)
|
|
258
|
+
result.phrases.push(phraseMatch[1]);
|
|
259
|
+
let remainingQuery = query.replace(/"[^"]+"/g, '');
|
|
260
|
+
const temporalRegex = /@(\w+)/g;
|
|
261
|
+
let temporalMatch;
|
|
262
|
+
while ((temporalMatch = temporalRegex.exec(remainingQuery)) !== null)
|
|
263
|
+
result.temporal.push(temporalMatch[1]);
|
|
264
|
+
remainingQuery = remainingQuery.replace(/@\w+/g, '');
|
|
265
|
+
const bucketRegex = /#(\w+)/g;
|
|
266
|
+
let bucketMatch;
|
|
267
|
+
while ((bucketMatch = bucketRegex.exec(remainingQuery)) !== null)
|
|
268
|
+
result.buckets.push(bucketMatch[1]);
|
|
269
|
+
remainingQuery = remainingQuery.replace(/#\w+/g, '');
|
|
270
|
+
result.keywords = remainingQuery.split(/\s+/).filter(kw => kw.length > 0);
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Conversational Query Expansion (Standard 086)
|
|
275
|
+
* Expands natural language queries into semantic equivalents
|
|
276
|
+
*/
|
|
277
|
+
export function expandConversationalQuery(query) {
|
|
278
|
+
const expansions = [];
|
|
279
|
+
// Common conversational patterns
|
|
280
|
+
const patterns = [
|
|
281
|
+
{ pattern: /what is the (latest|current|recent) (.+)/i, replacement: "$2" },
|
|
282
|
+
{ pattern: /tell me about (.+)/i, replacement: "$1" },
|
|
283
|
+
{ pattern: /how is (.+) doing/i, replacement: "$1" },
|
|
284
|
+
{ pattern: /what's happening with (.+)/i, replacement: "$1" },
|
|
285
|
+
{ pattern: /what do you know about (.+)/i, replacement: "$1" },
|
|
286
|
+
{ pattern: /explain (.+)/i, replacement: "$1" },
|
|
287
|
+
{ pattern: /describe (.+)/i, replacement: "$1" },
|
|
288
|
+
{ pattern: /summarize (.+)/i, replacement: "$1" }
|
|
289
|
+
];
|
|
290
|
+
for (const p of patterns) {
|
|
291
|
+
const match = query.match(p.pattern);
|
|
292
|
+
if (match) {
|
|
293
|
+
const expanded = query.replace(p.pattern, p.replacement).trim();
|
|
294
|
+
if (expanded && !expansions.includes(expanded)) {
|
|
295
|
+
expansions.push(expanded);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return expansions;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get related tags for a given query to provide semantic serendipity
|
|
303
|
+
* This function finds tags that are semantically related to the query terms
|
|
304
|
+
*/
|
|
305
|
+
export async function getRelatedTagsForQuery(query, maxTags = 5) {
|
|
306
|
+
try {
|
|
307
|
+
// Get all tags from the system
|
|
308
|
+
const allTags = await getGlobalTags(100); // Get top 100 tags
|
|
309
|
+
// Get the query terms to match against
|
|
310
|
+
const queryTerms = query.toLowerCase().split(/\s+/).filter(term => term.length > 0);
|
|
311
|
+
// If no query terms, return empty array
|
|
312
|
+
if (queryTerms.length === 0) {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
// Find tags that are related to the query terms
|
|
316
|
+
const relatedTags = [];
|
|
317
|
+
for (const tag of allTags) {
|
|
318
|
+
if (typeof tag !== 'string')
|
|
319
|
+
continue;
|
|
320
|
+
const tagLower = tag.toLowerCase();
|
|
321
|
+
let score = 0;
|
|
322
|
+
// Increase score if tag contains or is similar to query terms
|
|
323
|
+
for (const term of queryTerms) {
|
|
324
|
+
if (tagLower.includes(term) || term.includes(tagLower)) {
|
|
325
|
+
score += 10; // Direct match gets high score
|
|
326
|
+
}
|
|
327
|
+
else if (tagLower.startsWith(term) || tagLower.endsWith(term)) {
|
|
328
|
+
score += 5; // Partial match gets medium score
|
|
329
|
+
}
|
|
330
|
+
// Additional heuristics could be added here
|
|
331
|
+
}
|
|
332
|
+
if (score > 0) {
|
|
333
|
+
relatedTags.push({ tag, score });
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Sort by score and return top tags
|
|
337
|
+
relatedTags.sort((a, b) => b.score - a.score);
|
|
338
|
+
return relatedTags.slice(0, maxTags).map(item => item.tag);
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
console.error('[Search] Error getting related tags:', error);
|
|
342
|
+
// Return empty array if there's an error
|
|
343
|
+
return [];
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=query-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../../src/services/search/query-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Utilities Module — "The Tools"
|
|
3
|
+
*
|
|
4
|
+
* Types, interfaces, Hamming distance calculation, result formatting,
|
|
5
|
+
* and display helpers used across the search subsystem.
|
|
6
|
+
* Extracted from search.ts for clean separation of concerns.
|
|
7
|
+
*/
|
|
8
|
+
import { SemanticCategory } from '../../types/taxonomy.js';
|
|
9
|
+
/**
|
|
10
|
+
* Coalesced Snippet - Merged atoms from same file within proximity threshold
|
|
11
|
+
*/
|
|
12
|
+
export interface CoalescedSnippet {
|
|
13
|
+
source: string;
|
|
14
|
+
compoundId: string;
|
|
15
|
+
startByte: number;
|
|
16
|
+
endByte: number;
|
|
17
|
+
timestamp: number;
|
|
18
|
+
content: string;
|
|
19
|
+
sourceAtoms: SearchResult[];
|
|
20
|
+
relevanceScore: number;
|
|
21
|
+
provenance: string;
|
|
22
|
+
tags: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface SearchResult {
|
|
25
|
+
id: string;
|
|
26
|
+
content: string;
|
|
27
|
+
source: string;
|
|
28
|
+
timestamp: number;
|
|
29
|
+
buckets: string[];
|
|
30
|
+
tags: string[];
|
|
31
|
+
epochs: string;
|
|
32
|
+
provenance: string;
|
|
33
|
+
score: number;
|
|
34
|
+
sequence?: number;
|
|
35
|
+
molecular_signature?: string;
|
|
36
|
+
frequency?: number;
|
|
37
|
+
temporal_state?: {
|
|
38
|
+
first_seen: number;
|
|
39
|
+
last_seen: number;
|
|
40
|
+
occurrence_count: number;
|
|
41
|
+
timestamps: number[];
|
|
42
|
+
};
|
|
43
|
+
compound_id?: string;
|
|
44
|
+
start_byte?: number;
|
|
45
|
+
end_byte?: number;
|
|
46
|
+
type?: string;
|
|
47
|
+
numeric_value?: number;
|
|
48
|
+
numeric_unit?: string;
|
|
49
|
+
is_inflated?: boolean;
|
|
50
|
+
semanticCategories?: SemanticCategory[];
|
|
51
|
+
relatedEntities?: string[];
|
|
52
|
+
temporal_weight?: number;
|
|
53
|
+
decay_factor?: number;
|
|
54
|
+
simhash_distance?: number;
|
|
55
|
+
structural_similarity?: number;
|
|
56
|
+
association_path?: string[];
|
|
57
|
+
retrieved_at?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Helper: Calculate Hamming Distance between two hex strings
|
|
61
|
+
* Uses the native module or fallback if available
|
|
62
|
+
*/
|
|
63
|
+
export declare function getHammingDistance(hashA: string, hashB: string): number;
|
|
64
|
+
/**
|
|
65
|
+
* Helper: safely extract array from possibly undefined input
|
|
66
|
+
*/
|
|
67
|
+
export declare function getItems(input: string[] | undefined): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Coalesce atoms by proximity - merges nearby atoms from same source file
|
|
70
|
+
* into coherent snippets for better LLM consumption
|
|
71
|
+
*
|
|
72
|
+
* @param results - Search results to coalesce
|
|
73
|
+
* @param proximityThreshold - Bytes within which to merge atoms (default 500)
|
|
74
|
+
* @returns Coalesced snippets with expanded content
|
|
75
|
+
*/
|
|
76
|
+
export declare function coalesceByProximity(results: SearchResult[], proximityThreshold?: number, maxSnippets?: number): Promise<CoalescedSnippet[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Format search results within character budget
|
|
79
|
+
* Uses molecular coordinates (start_byte/end_byte) for precise content slicing
|
|
80
|
+
*
|
|
81
|
+
* Features:
|
|
82
|
+
* - Coalesces nearby atoms into coherent snippets (500-1000 chars)
|
|
83
|
+
* - Adds metadata headers with file, range, timestamp, atom count
|
|
84
|
+
* - Sorts chronologically for causal narrative
|
|
85
|
+
* - Wraps in XML with relevance scores for LLM prioritization
|
|
86
|
+
*/
|
|
87
|
+
export declare function formatResults(results: SearchResult[], maxChars: number, options?: {
|
|
88
|
+
enableCoalescing?: boolean;
|
|
89
|
+
proximityThreshold?: number;
|
|
90
|
+
}): Promise<{
|
|
91
|
+
context: string;
|
|
92
|
+
results: SearchResult[];
|
|
93
|
+
toAgentString: () => string;
|
|
94
|
+
metadata?: any;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Helper to filter tags for display (User Request: Hide Year Numbers)
|
|
98
|
+
*/
|
|
99
|
+
export declare function filterDisplayTags(tags: string[]): string[];
|
|
100
|
+
//# sourceMappingURL=search-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-utils.d.ts","sourceRoot":"","sources":["../../../src/services/search/search-utils.ts"],"names":[],"mappings":"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"}
|