@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,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explore Service — Illuminate / BFS Graph Traversal
|
|
3
|
+
*
|
|
4
|
+
* Given seed concepts or atom IDs, performs a breadth-first traversal of the
|
|
5
|
+
* STAR co-occurrence graph and returns the reachable subgraph. This is
|
|
6
|
+
* "structural corpus compression": the returned molecule set is the distilled
|
|
7
|
+
* meaning of the seed topic, extracted from the full knowledge graph.
|
|
8
|
+
*
|
|
9
|
+
* Two traversal strategies:
|
|
10
|
+
* 1. Edge-based — follows the `edges` table (source_id / target_id / weight)
|
|
11
|
+
* 2. Tag-based — follows shared tags in the `tags` table (fallback if no edges)
|
|
12
|
+
*/
|
|
13
|
+
import { db } from '../../core/db.js';
|
|
14
|
+
import { StructuredLogger } from '../../utils/structured-logger.js';
|
|
15
|
+
/** PGlite WASM has a practical call-stack limit on large parameter arrays
|
|
16
|
+
* AND on large result payloads (result data is marshaled through WASM stack).
|
|
17
|
+
*
|
|
18
|
+
* Three limits:
|
|
19
|
+
* - CHUNK_IDS: INPUT parameter count for ID/tag queries
|
|
20
|
+
* - CHUNK_CONTENT: rows returned when query includes content column (~1KB/row)
|
|
21
|
+
* - CHUNK_RESULT_IDS: rows returned for ID-only queries (large fan-out joins)
|
|
22
|
+
* e.g. 100 hub IN-params → potentially 10K molecule rows — must cap output.
|
|
23
|
+
* ~500 × 20 bytes ≈ 10KB per batch — well below WASM limit.
|
|
24
|
+
*/
|
|
25
|
+
const PGLITE_CHUNK_IDS = 100; // IN-param count for lightweight queries
|
|
26
|
+
const PGLITE_CHUNK_CONTENT = 25; // Rows returned when content column included
|
|
27
|
+
const PGLITE_CHUNK_RESULT_IDS = 500; // Rows returned for ID-only fan-out queries
|
|
28
|
+
/** Resolve seed atom IDs from query text via FTS */
|
|
29
|
+
async function resolveSeedsByQuery(query, limit) {
|
|
30
|
+
const terms = query
|
|
31
|
+
.toLowerCase()
|
|
32
|
+
.replace(/[^a-z0-9\s]/g, ' ')
|
|
33
|
+
.trim()
|
|
34
|
+
.split(/\s+/)
|
|
35
|
+
.filter(Boolean)
|
|
36
|
+
.map(t => `${t}:*`)
|
|
37
|
+
.join(' & ');
|
|
38
|
+
if (!terms)
|
|
39
|
+
return [];
|
|
40
|
+
try {
|
|
41
|
+
const result = await db.run(`SELECT id FROM atoms
|
|
42
|
+
WHERE to_tsvector('simple', content) @@ to_tsquery('simple', $1)
|
|
43
|
+
LIMIT $2`, [terms, limit]);
|
|
44
|
+
return result.rows.map(r => r.id);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Fallback: LIKE search
|
|
48
|
+
const like = `%${query.split(' ')[0]}%`;
|
|
49
|
+
const result = await db.run(`SELECT id FROM atoms WHERE content ILIKE $1 LIMIT $2`, [like, limit]);
|
|
50
|
+
return result.rows.map(r => r.id);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** BFS via edges table */
|
|
54
|
+
async function bfsViaEdges(seeds, maxDepth, minWeight, maxNodes) {
|
|
55
|
+
const visited = new Set(seeds);
|
|
56
|
+
let frontier = [...seeds];
|
|
57
|
+
const allEdges = [];
|
|
58
|
+
for (let depth = 0; depth < maxDepth && frontier.length > 0; depth++) {
|
|
59
|
+
// Chunk frontier to stay under PGlite parameter limit
|
|
60
|
+
const chunks = [];
|
|
61
|
+
for (let i = 0; i < frontier.length; i += PGLITE_CHUNK_IDS) {
|
|
62
|
+
chunks.push(frontier.slice(i, i + PGLITE_CHUNK_IDS));
|
|
63
|
+
}
|
|
64
|
+
const nextFrontier = [];
|
|
65
|
+
for (const chunk of chunks) {
|
|
66
|
+
const placeholders = chunk.map((_, i) => `$${i + 2}`).join(', ');
|
|
67
|
+
const result = await db.run(`SELECT source_id, target_id, weight FROM edges
|
|
68
|
+
WHERE (source_id IN (${placeholders}) OR target_id IN (${placeholders}))
|
|
69
|
+
AND weight >= $1`, [minWeight, ...chunk]);
|
|
70
|
+
for (const row of result.rows) {
|
|
71
|
+
const neighbor = visited.has(row.source_id) ? row.target_id : row.source_id;
|
|
72
|
+
if (!visited.has(neighbor)) {
|
|
73
|
+
visited.add(neighbor);
|
|
74
|
+
nextFrontier.push(neighbor);
|
|
75
|
+
}
|
|
76
|
+
allEdges.push({ source: row.source_id, target: row.target_id, weight: row.weight });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
frontier = nextFrontier;
|
|
80
|
+
if (visited.size >= maxNodes)
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
// visited contains both mem_ (compound hubs) and atom_ IDs — only atoms have content
|
|
84
|
+
const atomIds = [...visited].filter(id => id.startsWith('atom_')).slice(0, maxNodes);
|
|
85
|
+
return {
|
|
86
|
+
nodeIds: atomIds,
|
|
87
|
+
edges: allEdges
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** BFS via shared tags (fallback when edges table is sparse/empty) */
|
|
91
|
+
async function bfsViaTags(seeds, maxDepth, maxNodes) {
|
|
92
|
+
const visited = new Set(seeds);
|
|
93
|
+
let frontier = [...seeds];
|
|
94
|
+
for (let depth = 0; depth < maxDepth && frontier.length > 0; depth++) {
|
|
95
|
+
const chunks = [];
|
|
96
|
+
for (let i = 0; i < frontier.length; i += PGLITE_CHUNK_IDS) {
|
|
97
|
+
chunks.push(frontier.slice(i, i + PGLITE_CHUNK_IDS));
|
|
98
|
+
}
|
|
99
|
+
const nextFrontier = [];
|
|
100
|
+
for (const chunk of chunks) {
|
|
101
|
+
const placeholders = chunk.map((_, i) => `$${i + 1}`).join(', ');
|
|
102
|
+
const result = await db.run(`SELECT DISTINCT t2.atom_id
|
|
103
|
+
FROM tags t1
|
|
104
|
+
JOIN tags t2 ON t1.tag = t2.tag AND t1.atom_id != t2.atom_id
|
|
105
|
+
WHERE t1.atom_id IN (${placeholders})`, chunk);
|
|
106
|
+
for (const row of result.rows) {
|
|
107
|
+
if (!visited.has(row.atom_id)) {
|
|
108
|
+
visited.add(row.atom_id);
|
|
109
|
+
nextFrontier.push(row.atom_id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
frontier = nextFrontier;
|
|
114
|
+
if (visited.size >= maxNodes)
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return { nodeIds: [...visited].slice(0, maxNodes) };
|
|
118
|
+
}
|
|
119
|
+
/** Fetch full atom details for a list of IDs — chunked to avoid PGlite param overflow */
|
|
120
|
+
async function fetchNodes(ids) {
|
|
121
|
+
if (ids.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
const atomRows = [];
|
|
124
|
+
const tagRows = [];
|
|
125
|
+
// Content queries: small chunks (25) — each row ~1KB, ~25KB per query
|
|
126
|
+
for (let i = 0; i < ids.length; i += PGLITE_CHUNK_CONTENT) {
|
|
127
|
+
const chunk = ids.slice(i, i + PGLITE_CHUNK_CONTENT);
|
|
128
|
+
const placeholders = chunk.map((_, j) => `$${j + 1}`).join(', ');
|
|
129
|
+
const aResult = await db.run(`SELECT id, content, source_path, timestamp FROM atoms WHERE id IN (${placeholders})`, chunk);
|
|
130
|
+
atomRows.push(...aResult.rows);
|
|
131
|
+
}
|
|
132
|
+
// Tag queries: larger chunks (100) — each row is just atom_id + tag string
|
|
133
|
+
for (let i = 0; i < ids.length; i += PGLITE_CHUNK_IDS) {
|
|
134
|
+
const chunk = ids.slice(i, i + PGLITE_CHUNK_IDS);
|
|
135
|
+
const placeholders = chunk.map((_, j) => `$${j + 1}`).join(', ');
|
|
136
|
+
const tResult = await db.run(`SELECT atom_id, tag FROM tags WHERE atom_id IN (${placeholders})`, chunk);
|
|
137
|
+
tagRows.push(...tResult.rows);
|
|
138
|
+
}
|
|
139
|
+
const tagMap = new Map();
|
|
140
|
+
for (const row of tagRows) {
|
|
141
|
+
if (!tagMap.has(row.atom_id))
|
|
142
|
+
tagMap.set(row.atom_id, []);
|
|
143
|
+
tagMap.get(row.atom_id).push(row.tag);
|
|
144
|
+
}
|
|
145
|
+
return atomRows.map(r => ({
|
|
146
|
+
id: r.id,
|
|
147
|
+
content: r.content,
|
|
148
|
+
source: r.source_path || '',
|
|
149
|
+
tags: tagMap.get(r.id) || [],
|
|
150
|
+
...(r.timestamp != null && { timestamp: Number(r.timestamp) })
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
/** Check if the edges table has any rows */
|
|
154
|
+
async function edgesTableHasData() {
|
|
155
|
+
try {
|
|
156
|
+
const result = await db.run(`SELECT 1 FROM edges LIMIT 1`, []);
|
|
157
|
+
return result.rows.length > 0;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Global mode: return the top N atom IDs by weighted degree centrality.
|
|
165
|
+
* These are the most interconnected nodes in the entire corpus — the spine.
|
|
166
|
+
*/
|
|
167
|
+
async function globalTopNodes(seedCount, minWeight) {
|
|
168
|
+
const result = await db.run(`SELECT id, SUM(weight) AS total_weight
|
|
169
|
+
FROM (
|
|
170
|
+
SELECT source_id AS id, weight FROM edges WHERE weight >= $1
|
|
171
|
+
UNION ALL
|
|
172
|
+
SELECT target_id AS id, weight FROM edges WHERE weight >= $1
|
|
173
|
+
) all_edges
|
|
174
|
+
GROUP BY id
|
|
175
|
+
ORDER BY total_weight DESC
|
|
176
|
+
LIMIT $2`, [minWeight, seedCount]);
|
|
177
|
+
return result.rows.map(r => r.id);
|
|
178
|
+
}
|
|
179
|
+
/** Estimate total corpus char size for auto_budget calculation */
|
|
180
|
+
async function estimateCorpusChars() {
|
|
181
|
+
const result = await db.run(`SELECT COUNT(*) AS atom_count, AVG(LENGTH(content)) AS avg_len FROM atoms`, []);
|
|
182
|
+
const row = result.rows[0];
|
|
183
|
+
return Math.round((row.atom_count ?? 0) * (row.avg_len ?? 0));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Rank nodes by their subgraph degree (sum of edge weights within result set).
|
|
187
|
+
* Returns node IDs ordered most-connected first.
|
|
188
|
+
*/
|
|
189
|
+
function rankNodesBySubgraphDegree(nodeIds, edges) {
|
|
190
|
+
// Edges connect mem_ hubs → atom_ nodes; score each atom by how many edges touch it
|
|
191
|
+
const score = new Map();
|
|
192
|
+
for (const id of nodeIds)
|
|
193
|
+
score.set(id, 0);
|
|
194
|
+
for (const e of edges) {
|
|
195
|
+
// source may be mem_ or atom_; target is typically atom_
|
|
196
|
+
if (score.has(e.source))
|
|
197
|
+
score.set(e.source, score.get(e.source) + e.weight);
|
|
198
|
+
if (score.has(e.target))
|
|
199
|
+
score.set(e.target, score.get(e.target) + e.weight);
|
|
200
|
+
}
|
|
201
|
+
return [...score.entries()]
|
|
202
|
+
.sort((a, b) => b[1] - a[1])
|
|
203
|
+
.map(([id]) => id);
|
|
204
|
+
}
|
|
205
|
+
/** For global illuminate: fetch content atoms from the top-degree compound hubs.
|
|
206
|
+
*
|
|
207
|
+
* Content atoms have a compound_id pointing to their parent mem_ compound.
|
|
208
|
+
* The most-connected compounds (highest weighted degree) contain the most
|
|
209
|
+
* cross-referenced content in the corpus — their atoms are the corpus narrative.
|
|
210
|
+
*
|
|
211
|
+
* Atoms are returned in compound rank order (most-connected compound first),
|
|
212
|
+
* then by start_byte within each compound (document reading order).
|
|
213
|
+
*
|
|
214
|
+
* NOTE: the tags table only indexes tag stub atoms (source_path='atom_source').
|
|
215
|
+
* Content atom tags live in atoms.tags (JSON column). The compound_id link is
|
|
216
|
+
* the reliable path to content from a hub compound.
|
|
217
|
+
*/
|
|
218
|
+
async function fetchContentAtomsByHubs(hubIds, // mem_ compound IDs ordered by importance (most connected first)
|
|
219
|
+
maxCount) {
|
|
220
|
+
if (hubIds.length === 0)
|
|
221
|
+
return [];
|
|
222
|
+
const allIds = [];
|
|
223
|
+
for (let i = 0; i < hubIds.length && allIds.length < maxCount; i += PGLITE_CHUNK_IDS) {
|
|
224
|
+
const chunk = hubIds.slice(i, i + PGLITE_CHUNK_IDS);
|
|
225
|
+
const placeholders = chunk.map((_, j) => `$${j + 1}`).join(', ');
|
|
226
|
+
const remaining = maxCount - allIds.length;
|
|
227
|
+
const result = await db.run(`SELECT id FROM atoms
|
|
228
|
+
WHERE compound_id IN (${placeholders})
|
|
229
|
+
AND source_path != 'atom_source'
|
|
230
|
+
AND id NOT LIKE 'mem_%'
|
|
231
|
+
ORDER BY start_byte
|
|
232
|
+
LIMIT ${Math.min(remaining, PGLITE_CHUNK_RESULT_IDS)}`, chunk);
|
|
233
|
+
allIds.push(...result.rows.map((r) => r.id));
|
|
234
|
+
}
|
|
235
|
+
return allIds;
|
|
236
|
+
}
|
|
237
|
+
export async function exploreMemory(req) {
|
|
238
|
+
const maxDepth = Math.min(req.max_depth ?? 2, 4);
|
|
239
|
+
const minWeight = req.min_weight ?? 0.1;
|
|
240
|
+
const limitSeeds = req.seed.limit_seeds ?? 5;
|
|
241
|
+
const seedCount = req.seed.seed_count ?? 10;
|
|
242
|
+
const format = req.format ?? 'flat';
|
|
243
|
+
// Budget-aware max_nodes: if a char budget is active, allow up to 10k nodes
|
|
244
|
+
// (trimming happens after fetch). Otherwise honour explicit max_nodes cap.
|
|
245
|
+
const hasBudget = req.max_chars !== undefined || req.auto_budget;
|
|
246
|
+
const maxNodes = hasBudget
|
|
247
|
+
? Math.min(req.max_nodes ?? 10_000, 10_000)
|
|
248
|
+
: Math.min(req.max_nodes ?? 50, 200);
|
|
249
|
+
// 1. Resolve seeds
|
|
250
|
+
let seedIds = [];
|
|
251
|
+
if (req.seed.global) {
|
|
252
|
+
// Global mode: top-degree nodes, no query needed
|
|
253
|
+
seedIds = await globalTopNodes(seedCount, minWeight);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
if (req.seed.atom_ids?.length) {
|
|
257
|
+
seedIds = req.seed.atom_ids;
|
|
258
|
+
}
|
|
259
|
+
if (req.seed.query && seedIds.length < limitSeeds) {
|
|
260
|
+
const fromQuery = await resolveSeedsByQuery(req.seed.query, limitSeeds - seedIds.length);
|
|
261
|
+
seedIds = [...new Set([...seedIds, ...fromQuery])];
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (seedIds.length === 0) {
|
|
265
|
+
StructuredLogger.warn('EXPLORE_NO_SEEDS', { query: req.seed.query, global: req.seed.global });
|
|
266
|
+
return {
|
|
267
|
+
nodes: [],
|
|
268
|
+
stats: { nodes_count: 0, seed_nodes: 0, max_depth_achieved: 0, strategy: 'none' }
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
const actualSeedCount = seedIds.length;
|
|
272
|
+
StructuredLogger.info('EXPLORE_START', { seeds: actualSeedCount, max_depth: maxDepth, max_nodes: maxNodes });
|
|
273
|
+
// 2. BFS traversal — prefer edges table, fall back to tag-based
|
|
274
|
+
let nodeIds;
|
|
275
|
+
let edges = [];
|
|
276
|
+
let strategy;
|
|
277
|
+
if (req.seed.global) {
|
|
278
|
+
// Illuminate mode: skip edge-BFS entirely.
|
|
279
|
+
// Get a larger pool of top-degree compound hubs (seed_count × 20, max 500),
|
|
280
|
+
// then pull their content atoms directly via compound_id.
|
|
281
|
+
// Hub order = weighted degree rank → atoms from most-connected compounds come first.
|
|
282
|
+
const hubCount = Math.min((req.seed.seed_count ?? 10) * 20, 500);
|
|
283
|
+
const hubIds = await globalTopNodes(hubCount, minWeight);
|
|
284
|
+
const contentIds = await fetchContentAtomsByHubs(hubIds, maxNodes);
|
|
285
|
+
StructuredLogger.info('EXPLORE_ILLUMINATE_CONTENT', {
|
|
286
|
+
hubs_queried: hubIds.length,
|
|
287
|
+
content_atoms: contentIds.length
|
|
288
|
+
});
|
|
289
|
+
nodeIds = contentIds;
|
|
290
|
+
strategy = 'illuminate-global';
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const hasEdges = await edgesTableHasData();
|
|
294
|
+
if (hasEdges) {
|
|
295
|
+
const result = await bfsViaEdges(seedIds, maxDepth, minWeight, maxNodes);
|
|
296
|
+
nodeIds = result.nodeIds;
|
|
297
|
+
edges = result.edges;
|
|
298
|
+
strategy = 'edge-bfs';
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
const result = await bfsViaTags(seedIds, maxDepth, maxNodes);
|
|
302
|
+
nodeIds = result.nodeIds;
|
|
303
|
+
strategy = 'tag-bfs';
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// 4. Resolve char budget
|
|
307
|
+
let charBudget;
|
|
308
|
+
if (req.auto_budget) {
|
|
309
|
+
const corpusChars = await estimateCorpusChars();
|
|
310
|
+
const ratio = req.compression_ratio ?? 1000;
|
|
311
|
+
charBudget = Math.max(Math.round(corpusChars / ratio), 50_000); // floor 50k chars
|
|
312
|
+
StructuredLogger.info('EXPLORE_AUTO_BUDGET', { corpus_chars: corpusChars, ratio, budget: charBudget });
|
|
313
|
+
}
|
|
314
|
+
else if (req.max_chars !== undefined) {
|
|
315
|
+
charBudget = req.max_chars;
|
|
316
|
+
}
|
|
317
|
+
// 5. Fetch node details — then trim to budget by importance
|
|
318
|
+
let finalNodeIds = nodeIds;
|
|
319
|
+
if (charBudget !== undefined) {
|
|
320
|
+
// illuminate-global: nodeIds already ranked by tag centrality; just trim by char budget
|
|
321
|
+
// edge-bfs: rank by subgraph degree first
|
|
322
|
+
const ranked = edges.length > 0
|
|
323
|
+
? rankNodesBySubgraphDegree(nodeIds, edges)
|
|
324
|
+
: nodeIds; // already ranked
|
|
325
|
+
const trimmed = [];
|
|
326
|
+
let usedChars = 0;
|
|
327
|
+
const allNodes = await fetchNodes(ranked);
|
|
328
|
+
for (const node of allNodes) {
|
|
329
|
+
if (usedChars + node.content.length > charBudget)
|
|
330
|
+
break;
|
|
331
|
+
trimmed.push(node.id);
|
|
332
|
+
usedChars += node.content.length;
|
|
333
|
+
}
|
|
334
|
+
finalNodeIds = trimmed;
|
|
335
|
+
StructuredLogger.info('EXPLORE_BUDGET_TRIM', {
|
|
336
|
+
before: nodeIds.length,
|
|
337
|
+
after: trimmed.length,
|
|
338
|
+
chars_used: usedChars,
|
|
339
|
+
budget: charBudget
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
const nodes = await fetchNodes(finalNodeIds);
|
|
343
|
+
// For illuminate-global: assign hub-rank score (1.0 = most central, ~0 = least).
|
|
344
|
+
// finalNodeIds is already ordered by centrality; map position → score.
|
|
345
|
+
let scoredNodes;
|
|
346
|
+
if (req.seed.global) {
|
|
347
|
+
const total = finalNodeIds.length;
|
|
348
|
+
const rankMap = new Map();
|
|
349
|
+
finalNodeIds.forEach((id, i) => rankMap.set(id, parseFloat(((total - i) / total).toFixed(4))));
|
|
350
|
+
scoredNodes = nodes.map(n => ({ ...n, score: rankMap.get(n.id) ?? 0 }));
|
|
351
|
+
// Re-sort by score descending so output order matches centrality rank
|
|
352
|
+
scoredNodes.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
scoredNodes = nodes;
|
|
356
|
+
}
|
|
357
|
+
StructuredLogger.info('EXPLORE_DONE', { nodes: scoredNodes.length, edges: edges.length, strategy });
|
|
358
|
+
const charsUsed = scoredNodes.reduce((sum, n) => sum + n.content.length, 0);
|
|
359
|
+
if (format === 'graph') {
|
|
360
|
+
const nodeSet = new Set(finalNodeIds);
|
|
361
|
+
const filteredEdges = edges.filter(e => nodeSet.has(e.source) && nodeSet.has(e.target));
|
|
362
|
+
return {
|
|
363
|
+
nodes: scoredNodes,
|
|
364
|
+
edges: filteredEdges,
|
|
365
|
+
stats: {
|
|
366
|
+
nodes_count: scoredNodes.length,
|
|
367
|
+
edges_count: filteredEdges.length,
|
|
368
|
+
seed_nodes: actualSeedCount,
|
|
369
|
+
max_depth_achieved: maxDepth,
|
|
370
|
+
strategy,
|
|
371
|
+
chars_used: charsUsed,
|
|
372
|
+
...(charBudget !== undefined && { char_budget: charBudget })
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
nodes: scoredNodes,
|
|
378
|
+
stats: {
|
|
379
|
+
nodes_count: scoredNodes.length,
|
|
380
|
+
seed_nodes: actualSeedCount,
|
|
381
|
+
max_depth_achieved: maxDepth,
|
|
382
|
+
strategy,
|
|
383
|
+
chars_used: charsUsed,
|
|
384
|
+
...(charBudget !== undefined && { char_budget: charBudget })
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=explore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../src/services/search/explore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph-Context Serializer
|
|
3
|
+
*
|
|
4
|
+
* Transforms the Physics Engine output into a dense, token-efficient format
|
|
5
|
+
* that the Local LLM can read as structured context.
|
|
6
|
+
*
|
|
7
|
+
* Design Goal: HIGH SIGNAL-TO-TOKEN RATIO.
|
|
8
|
+
* The LLM doesn't need pretty UI — it needs dense, structured signal.
|
|
9
|
+
* Every byte must carry meaning.
|
|
10
|
+
*
|
|
11
|
+
* Two output modes:
|
|
12
|
+
* 1. serializeForLLM() — Produces the compact [CONTEXT_GRAPH] text block.
|
|
13
|
+
* This is what gets injected into the LLM's prompt.
|
|
14
|
+
* 2. serializeToJSON() — Produces the full ContextPackage JSON.
|
|
15
|
+
* Used for debugging, API responses, and UI rendering.
|
|
16
|
+
*/
|
|
17
|
+
import type { ContextPackage, UserContext, QueryIntent } from '../../types/context-protocol.js';
|
|
18
|
+
import { SearchResult } from './search.js';
|
|
19
|
+
import { PhysicsResult } from './physics-tag-walker.js';
|
|
20
|
+
/**
|
|
21
|
+
* Detect the likely intent of a query without using the LLM.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectIntent(query: string): QueryIntent;
|
|
24
|
+
/**
|
|
25
|
+
* Serialize a ContextPackage into the compact [CONTEXT_GRAPH] text block.
|
|
26
|
+
*
|
|
27
|
+
* v2 Format — Hierarchical Source Grouping with Taxonomy Hoisting:
|
|
28
|
+
*
|
|
29
|
+
* [CONTEXT_GRAPH_START]
|
|
30
|
+
* user: @name | state: current_state | intent: factual | terms: t1, t2
|
|
31
|
+
*
|
|
32
|
+
* // DIRECT HITS
|
|
33
|
+
* [SRC: path/to/file.ext | max: 1.00 | N nodes]
|
|
34
|
+
* taxonomy: #tag1, #tag2, #tag3, ... ← declared ONCE per source
|
|
35
|
+
* [N:id] (freq:N) [loc] "content"
|
|
36
|
+
* [N:id] (freq:N) [loc] "content" | +tags: #unique1
|
|
37
|
+
*
|
|
38
|
+
* // ASSOCIATED MEMORIES
|
|
39
|
+
* [SRC: path/to/other.ext | max: 0.82 | N nodes]
|
|
40
|
+
* taxonomy: #sharedA, #sharedB
|
|
41
|
+
* [N:id] [W:0.82|WALK] [loc] "content" -> [N:anchor] (reason)
|
|
42
|
+
*
|
|
43
|
+
* [CONTEXT_GRAPH_END]
|
|
44
|
+
*
|
|
45
|
+
* Token savings: ~600 tokens/node eliminated by hoisting shared tags once per source.
|
|
46
|
+
*/
|
|
47
|
+
export declare function serializeForLLM(pkg: ContextPackage, charBudget?: number): string;
|
|
48
|
+
export interface AssembleOptions {
|
|
49
|
+
/** User context (who is asking) */
|
|
50
|
+
user: UserContext;
|
|
51
|
+
/** The raw query string */
|
|
52
|
+
query: string;
|
|
53
|
+
/** NLP-extracted key terms */
|
|
54
|
+
keyTerms: string[];
|
|
55
|
+
/** Explicit scope tags */
|
|
56
|
+
scopeTags?: string[];
|
|
57
|
+
/** Direct search results (Planets) */
|
|
58
|
+
anchors: SearchResult[];
|
|
59
|
+
/** Physics walker results (Moons) — optional, may be empty */
|
|
60
|
+
walkerResults?: PhysicsResult[];
|
|
61
|
+
/** Legacy walker results (SearchResult[]) for backward compat */
|
|
62
|
+
legacyWalkerResults?: SearchResult[];
|
|
63
|
+
/** Character budget for the serialized output */
|
|
64
|
+
charBudget?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Assemble the full ContextPackage from search results.
|
|
68
|
+
* This is the main entry point for the serializer.
|
|
69
|
+
*/
|
|
70
|
+
export declare function assembleContextPackage(opts: AssembleOptions): ContextPackage;
|
|
71
|
+
/**
|
|
72
|
+
* One-shot convenience: assemble + serialize for LLM consumption.
|
|
73
|
+
* Returns the compact text block ready to inject into a prompt.
|
|
74
|
+
*/
|
|
75
|
+
export declare function assembleAndSerialize(opts: AssembleOptions): string;
|
|
76
|
+
//# sourceMappingURL=graph-context-serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-context-serializer.d.ts","sourceRoot":"","sources":["../../../src/services/search/graph-context-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,cAAc,EAGd,WAAW,EAEX,WAAW,EAIZ,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAWxD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAsBvD;AA0LD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAmFhF;AAwDD,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sCAAsC;IACtC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC;IACrC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CAgE5E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAclE"}
|