@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,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to export query results in various formats
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs/promises';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Export results to specified format and file
|
|
10
|
+
*/
|
|
11
|
+
export async function exportResults(results, filename, format = 'json') {
|
|
12
|
+
let content;
|
|
13
|
+
switch (format.toLowerCase()) {
|
|
14
|
+
case 'csv':
|
|
15
|
+
content = toCSV(results);
|
|
16
|
+
break;
|
|
17
|
+
case 'json':
|
|
18
|
+
content = toJSON(results);
|
|
19
|
+
break;
|
|
20
|
+
case 'yaml':
|
|
21
|
+
content = toYAML(results);
|
|
22
|
+
break;
|
|
23
|
+
case 'table':
|
|
24
|
+
content = toTable(results);
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Unsupported export format: ${format}`);
|
|
28
|
+
}
|
|
29
|
+
// Ensure the directory exists
|
|
30
|
+
const dir = path.dirname(filename);
|
|
31
|
+
await fs.mkdir(dir, { recursive: true });
|
|
32
|
+
// Write the file
|
|
33
|
+
await fs.writeFile(filename, content);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Convert results to CSV format
|
|
37
|
+
*/
|
|
38
|
+
function toCSV(results) {
|
|
39
|
+
if (results.length === 0) {
|
|
40
|
+
return '';
|
|
41
|
+
}
|
|
42
|
+
// Get headers from the first row
|
|
43
|
+
const headers = Object.keys(results[0]);
|
|
44
|
+
const headerRow = headers.join(',');
|
|
45
|
+
// Convert each row to CSV
|
|
46
|
+
const rows = results.map(row => {
|
|
47
|
+
return headers.map(header => {
|
|
48
|
+
let value = row[header];
|
|
49
|
+
if (value === null || value === undefined) {
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
value = String(value);
|
|
53
|
+
// Escape quotes and wrap in quotes if needed
|
|
54
|
+
if (value.includes(',') || value.includes('"') || value.includes('\n')) {
|
|
55
|
+
value = '"' + value.replace(/"/g, '""') + '"';
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}).join(',');
|
|
59
|
+
});
|
|
60
|
+
return [headerRow, ...rows].join('\n');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert results to JSON format
|
|
64
|
+
*/
|
|
65
|
+
function toJSON(results) {
|
|
66
|
+
return JSON.stringify(results, null, 2);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Convert results to YAML format
|
|
70
|
+
*/
|
|
71
|
+
function toYAML(results) {
|
|
72
|
+
if (results.length === 0) {
|
|
73
|
+
return '[]';
|
|
74
|
+
}
|
|
75
|
+
// Simple YAML conversion (for more complex YAML, a library would be better)
|
|
76
|
+
const yamlLines = ['-'];
|
|
77
|
+
for (let i = 0; i < results.length; i++) {
|
|
78
|
+
if (i > 0) {
|
|
79
|
+
yamlLines.push('-');
|
|
80
|
+
}
|
|
81
|
+
const row = results[i];
|
|
82
|
+
for (const [key, value] of Object.entries(row)) {
|
|
83
|
+
yamlLines.push(` ${key}: ${formatYAMLValue(value)}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return yamlLines.join('\n');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Helper to format values for YAML
|
|
90
|
+
*/
|
|
91
|
+
function formatYAMLValue(value) {
|
|
92
|
+
if (value === null || value === undefined) {
|
|
93
|
+
return 'null';
|
|
94
|
+
}
|
|
95
|
+
if (typeof value === 'string') {
|
|
96
|
+
// Simple string quoting if needed
|
|
97
|
+
if (value.includes(' ') || value.includes('\n') || value.includes('"') || value.includes("'")) {
|
|
98
|
+
return `"${value.replace(/"/g, '\\"')}"`;
|
|
99
|
+
}
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
if (typeof value === 'object') {
|
|
103
|
+
return JSON.stringify(value);
|
|
104
|
+
}
|
|
105
|
+
return String(value);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Convert results to a formatted table string
|
|
109
|
+
*/
|
|
110
|
+
function toTable(results) {
|
|
111
|
+
if (results.length === 0) {
|
|
112
|
+
return 'No results';
|
|
113
|
+
}
|
|
114
|
+
// Get headers
|
|
115
|
+
const headers = Object.keys(results[0]);
|
|
116
|
+
// Calculate column widths
|
|
117
|
+
const colWidths = {};
|
|
118
|
+
for (const header of headers) {
|
|
119
|
+
colWidths[header] = Math.max(header.length, ...results.map(row => String(row[header] ?? '').length));
|
|
120
|
+
}
|
|
121
|
+
// Create header row
|
|
122
|
+
const headerRow = headers.map(header => header.padEnd(colWidths[header])).join(' | ');
|
|
123
|
+
// Create separator row
|
|
124
|
+
const separatorRow = headers.map(header => '-'.repeat(colWidths[header])).join('-|-');
|
|
125
|
+
// Create data rows
|
|
126
|
+
const dataRows = results.map(row => headers.map(header => String(row[header] ?? '').padEnd(colWidths[header])).join(' | '));
|
|
127
|
+
// Combine all rows
|
|
128
|
+
return [headerRow, separatorRow, ...dataRows].join('\n');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/services/query-builder/utils/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ResearchResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
filePath?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function fetchAndProcess(url: string, category?: 'article' | 'paper'): Promise<ResearchResult>;
|
|
8
|
+
export interface WebSearchResult {
|
|
9
|
+
title: string;
|
|
10
|
+
link: string;
|
|
11
|
+
snippet: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function searchWeb(query: string): Promise<WebSearchResult[]>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=researcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"researcher.d.ts","sourceRoot":"","sources":["../../../src/services/research/researcher.ts"],"names":[],"mappings":"AA+BA,UAAU,cAAc;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,GAAG,OAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsErH;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA6CzE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { gotScraping } from 'got-scraping';
|
|
2
|
+
import * as cheerio from 'cheerio';
|
|
3
|
+
import TurndownService from 'turndown';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as crypto from 'crypto';
|
|
7
|
+
import * as net from 'net';
|
|
8
|
+
import { ENGINE_PLUGINS } from '../../config/paths.js';
|
|
9
|
+
import { safeLookup, isPrivateIP } from '../../utils/safe-dns.js';
|
|
10
|
+
const PLUGINS_DIR = ENGINE_PLUGINS;
|
|
11
|
+
// Ensure staging directories exist
|
|
12
|
+
const ARTICLES_DIR = path.join(PLUGINS_DIR, 'articles');
|
|
13
|
+
const PAPERS_DIR = path.join(PLUGINS_DIR, 'research-papers');
|
|
14
|
+
// Robust Headers
|
|
15
|
+
if (!fs.existsSync(ARTICLES_DIR))
|
|
16
|
+
fs.mkdirSync(ARTICLES_DIR, { recursive: true });
|
|
17
|
+
if (!fs.existsSync(PAPERS_DIR))
|
|
18
|
+
fs.mkdirSync(PAPERS_DIR, { recursive: true });
|
|
19
|
+
const turndownService = new TurndownService({
|
|
20
|
+
headingStyle: 'atx',
|
|
21
|
+
codeBlockStyle: 'fenced'
|
|
22
|
+
});
|
|
23
|
+
// Remove script tags, styles, etc.
|
|
24
|
+
turndownService.remove(['script', 'style', 'noscript', 'iframe', 'nav', 'footer', 'header']);
|
|
25
|
+
export async function fetchAndProcess(url, category = 'article') {
|
|
26
|
+
try {
|
|
27
|
+
console.log(`[Research] Fetching: ${url}`);
|
|
28
|
+
const urlObj = new URL(url);
|
|
29
|
+
if (urlObj.protocol !== 'http:' && urlObj.protocol !== 'https:') {
|
|
30
|
+
throw new Error(`Invalid protocol: ${urlObj.protocol}. Only http and https are allowed.`);
|
|
31
|
+
}
|
|
32
|
+
if (net.isIP(urlObj.hostname) !== 0 && isPrivateIP(urlObj.hostname)) {
|
|
33
|
+
throw new Error(`Invalid IP address: ${urlObj.hostname}. Private IPs are not allowed.`);
|
|
34
|
+
}
|
|
35
|
+
const response = await gotScraping(url, {
|
|
36
|
+
timeout: { request: 10000 },
|
|
37
|
+
dnsLookup: safeLookup
|
|
38
|
+
});
|
|
39
|
+
const html = response.body;
|
|
40
|
+
const $ = cheerio.load(html);
|
|
41
|
+
// Extract Metadata
|
|
42
|
+
const title = $('title').text().trim() || 'Untitled Page';
|
|
43
|
+
const metaDesc = $('meta[name="description"]').attr('content') || '';
|
|
44
|
+
// Cleanup DOM
|
|
45
|
+
$('script').remove();
|
|
46
|
+
$('style').remove();
|
|
47
|
+
$('nav').remove();
|
|
48
|
+
$('header').remove();
|
|
49
|
+
$('footer').remove();
|
|
50
|
+
$('.ad').remove();
|
|
51
|
+
$('.advertisement').remove();
|
|
52
|
+
$('.sidebar').remove();
|
|
53
|
+
// Target main content if possible
|
|
54
|
+
let contentHtml = $('main').html() || $('article').html() || $('body').html() || '';
|
|
55
|
+
// Convert
|
|
56
|
+
const markdown = turndownService.turndown(contentHtml);
|
|
57
|
+
// Frontmatter
|
|
58
|
+
const fileContent = `# ${title}
|
|
59
|
+
> **Source**: ${url}
|
|
60
|
+
> **Date**: ${new Date().toISOString()}
|
|
61
|
+
> **Description**: ${metaDesc}
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
${markdown}
|
|
66
|
+
`;
|
|
67
|
+
// Filename
|
|
68
|
+
const safeTitle = title.replace(/[^a-zA-Z0-9-_]/g, '_').substring(0, 50);
|
|
69
|
+
const hash = crypto.createHash('md5').update(url).digest('hex').substring(0, 8);
|
|
70
|
+
const filename = `${safeTitle}_${hash}.md`;
|
|
71
|
+
// Save
|
|
72
|
+
const targetDir = category === 'paper' ? PAPERS_DIR : ARTICLES_DIR;
|
|
73
|
+
const filePath = path.join(targetDir, filename);
|
|
74
|
+
await fs.promises.writeFile(filePath, fileContent, 'utf8');
|
|
75
|
+
console.log(`[Research] Saved to: ${filePath}`);
|
|
76
|
+
return { success: true, filePath, title };
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
console.error(`[Research] Failed: ${e.message}`);
|
|
80
|
+
return { success: false, error: e.message };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export async function searchWeb(query) {
|
|
84
|
+
try {
|
|
85
|
+
console.log(`[Research] Searching Web: "${query}"`);
|
|
86
|
+
const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
87
|
+
const response = await gotScraping(searchUrl);
|
|
88
|
+
const $ = cheerio.load(response.body);
|
|
89
|
+
const results = [];
|
|
90
|
+
$('.result').each((_i, element) => {
|
|
91
|
+
const titleElement = $(element).find('.result__a');
|
|
92
|
+
const snippetElement = $(element).find('.result__snippet');
|
|
93
|
+
const title = titleElement.text().trim();
|
|
94
|
+
const link = titleElement.attr('href');
|
|
95
|
+
const snippet = snippetElement.text().trim();
|
|
96
|
+
if (title && link && !link.includes('duckduckgo.com/y.js')) {
|
|
97
|
+
// DuckDuckGo usually has internal redirects, we might get the raw link or the redirect.
|
|
98
|
+
// Ideally we decode it if it's a diffbot or similar proxy, but usually for HTML version it's direct or simple.
|
|
99
|
+
// Actually DDG HTML links are typically relative redirects `/l/?uddg=...`
|
|
100
|
+
// We should try to extract the real URL if possible, or use the redirect.
|
|
101
|
+
// Let's decode the uddg param if present.
|
|
102
|
+
let realLink = link;
|
|
103
|
+
try {
|
|
104
|
+
if (link.includes('uddg=')) {
|
|
105
|
+
const match = link.match(/uddg=([^&]+)/);
|
|
106
|
+
if (match && match[1]) {
|
|
107
|
+
realLink = decodeURIComponent(match[1]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (e) { /* ignore */ }
|
|
112
|
+
results.push({ title, link: realLink, snippet });
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
console.log(`[Research] Found ${results.length} results.`);
|
|
116
|
+
return results.slice(0, 10); // Top 10
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
console.error(`[Research] Search failed: ${e.message}`);
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=researcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"researcher.js","sourceRoot":"","sources":["../../../src/services/research/researcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scribe Service - Markovian Rolling Context
|
|
3
|
+
*
|
|
4
|
+
* Maintains a "Session State" that summarizes the current conversation.
|
|
5
|
+
* This enables the model to maintain coherence across long conversations
|
|
6
|
+
* without requiring the full history in context.
|
|
7
|
+
*/
|
|
8
|
+
interface HistoryItem {
|
|
9
|
+
role: string;
|
|
10
|
+
content: string;
|
|
11
|
+
}
|
|
12
|
+
interface UpdateStateResult {
|
|
13
|
+
status: string;
|
|
14
|
+
summary?: string;
|
|
15
|
+
message?: string;
|
|
16
|
+
}
|
|
17
|
+
interface ClearStateResult {
|
|
18
|
+
status: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Updates the rolling session state based on recent conversation history.
|
|
23
|
+
* Uses the LLM to compress recent turns into a coherent state summary.
|
|
24
|
+
*
|
|
25
|
+
* @param {HistoryItem[]} history - Array of {role, content} message objects
|
|
26
|
+
* @returns {Promise<UpdateStateResult>} - {status, summary} or {status, error}
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateState(history: HistoryItem[]): Promise<UpdateStateResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves the current session state from the database.
|
|
31
|
+
*
|
|
32
|
+
* @returns {Promise<string | null>} - The state summary or null if not found
|
|
33
|
+
*/
|
|
34
|
+
export declare function getState(): Promise<string | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Clears the current session state.
|
|
37
|
+
* Useful for starting a fresh conversation.
|
|
38
|
+
*
|
|
39
|
+
* @returns {Promise<ClearStateResult>} - {status}
|
|
40
|
+
*/
|
|
41
|
+
export declare function clearState(): Promise<ClearStateResult>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=scribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scribe.d.ts","sourceRoot":"","sources":["../../../src/services/scribe/scribe.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,gBAAgB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkFpF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAavD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAU5D"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scribe Service - Markovian Rolling Context
|
|
3
|
+
*
|
|
4
|
+
* Maintains a "Session State" that summarizes the current conversation.
|
|
5
|
+
* This enables the model to maintain coherence across long conversations
|
|
6
|
+
* without requiring the full history in context.
|
|
7
|
+
*/
|
|
8
|
+
import { db } from '../../core/db.js';
|
|
9
|
+
// Lazy-load inference to avoid circular dependency
|
|
10
|
+
let inferenceModule = null;
|
|
11
|
+
function getInference() {
|
|
12
|
+
if (!inferenceModule) {
|
|
13
|
+
inferenceModule = require('../inference/inference');
|
|
14
|
+
}
|
|
15
|
+
return inferenceModule;
|
|
16
|
+
}
|
|
17
|
+
const SESSION_STATE_ID = 'session_state';
|
|
18
|
+
const STATE_BUCKET = ['system', 'state'];
|
|
19
|
+
/**
|
|
20
|
+
* Updates the rolling session state based on recent conversation history.
|
|
21
|
+
* Uses the LLM to compress recent turns into a coherent state summary.
|
|
22
|
+
*
|
|
23
|
+
* @param {HistoryItem[]} history - Array of {role, content} message objects
|
|
24
|
+
* @returns {Promise<UpdateStateResult>} - {status, summary} or {status, error}
|
|
25
|
+
*/
|
|
26
|
+
export async function updateState(history) {
|
|
27
|
+
console.log('✍️ Scribe: Analyzing conversation state...');
|
|
28
|
+
try {
|
|
29
|
+
// 1. Flatten last 10 turns into readable text
|
|
30
|
+
const recentTurns = history.slice(-10);
|
|
31
|
+
const recentText = recentTurns
|
|
32
|
+
.map(m => `${m.role.toUpperCase()}: ${m.content}`)
|
|
33
|
+
.join('\n\n');
|
|
34
|
+
if (!recentText.trim()) {
|
|
35
|
+
return { status: 'skipped', message: 'No conversation history to analyze' };
|
|
36
|
+
}
|
|
37
|
+
// 2. Construct the state extraction prompt
|
|
38
|
+
const prompt = `Analyze this conversation segment and produce a concise "Session State" summary.
|
|
39
|
+
|
|
40
|
+
Keep it under 200 words. Focus on:
|
|
41
|
+
- Current Goal: What is the user trying to accomplish?
|
|
42
|
+
- Key Decisions: What has been decided or agreed upon?
|
|
43
|
+
- Active Tasks: What work is in progress or pending?
|
|
44
|
+
- Important Context: What background information is critical to remember?
|
|
45
|
+
|
|
46
|
+
Conversation:
|
|
47
|
+
${recentText}
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
Session State Summary:`;
|
|
51
|
+
// 3. Generate the state summary
|
|
52
|
+
const inf = getInference();
|
|
53
|
+
const summary = await inf.rawCompletion(prompt);
|
|
54
|
+
if (!summary || summary.trim().length < 10) {
|
|
55
|
+
return { status: 'error', message: 'Failed to generate meaningful state' };
|
|
56
|
+
}
|
|
57
|
+
// 4. Persist to database with special ID
|
|
58
|
+
const timestamp = Date.now();
|
|
59
|
+
await db.run(`INSERT INTO atoms (id, timestamp, content, source_path, source_id, sequence, type, hash, buckets, epochs, tags, provenance, simhash, embedding)
|
|
60
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)
|
|
61
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
62
|
+
content = EXCLUDED.content,
|
|
63
|
+
timestamp = EXCLUDED.timestamp,
|
|
64
|
+
source_path = EXCLUDED.source_path,
|
|
65
|
+
source_id = EXCLUDED.source_id,
|
|
66
|
+
sequence = EXCLUDED.sequence,
|
|
67
|
+
type = EXCLUDED.type,
|
|
68
|
+
hash = EXCLUDED.hash,
|
|
69
|
+
buckets = EXCLUDED.buckets,
|
|
70
|
+
epochs = EXCLUDED.epochs,
|
|
71
|
+
tags = EXCLUDED.tags,
|
|
72
|
+
provenance = EXCLUDED.provenance,
|
|
73
|
+
simhash = EXCLUDED.simhash,
|
|
74
|
+
embedding = EXCLUDED.embedding`, [
|
|
75
|
+
SESSION_STATE_ID,
|
|
76
|
+
timestamp,
|
|
77
|
+
summary.trim(),
|
|
78
|
+
'Scribe',
|
|
79
|
+
SESSION_STATE_ID, // source_id
|
|
80
|
+
0, // sequence
|
|
81
|
+
'state', // type
|
|
82
|
+
`state_${timestamp}`, // hash
|
|
83
|
+
STATE_BUCKET,
|
|
84
|
+
[], // epochs
|
|
85
|
+
[], // tags
|
|
86
|
+
'system', // provenance
|
|
87
|
+
'0', // simhash
|
|
88
|
+
new Array(768).fill(0.0) // embedding (stub)
|
|
89
|
+
]);
|
|
90
|
+
console.log('✍️ Scribe: State updated successfully');
|
|
91
|
+
return { status: 'updated', summary: summary.trim() };
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
console.error('✍️ Scribe Error:', e.message);
|
|
95
|
+
return { status: 'error', message: e.message };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Retrieves the current session state from the database.
|
|
100
|
+
*
|
|
101
|
+
* @returns {Promise<string | null>} - The state summary or null if not found
|
|
102
|
+
*/
|
|
103
|
+
export async function getState() {
|
|
104
|
+
try {
|
|
105
|
+
const query = 'SELECT content FROM atoms WHERE id = $1';
|
|
106
|
+
const res = await db.run(query, [SESSION_STATE_ID]);
|
|
107
|
+
if (res.rows && res.rows.length > 0) {
|
|
108
|
+
return res.rows[0][0];
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error('✍️ Scribe: Failed to retrieve state:', e.message);
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Clears the current session state.
|
|
119
|
+
* Useful for starting a fresh conversation.
|
|
120
|
+
*
|
|
121
|
+
* @returns {Promise<ClearStateResult>} - {status}
|
|
122
|
+
*/
|
|
123
|
+
export async function clearState() {
|
|
124
|
+
try {
|
|
125
|
+
const query = `DELETE FROM atoms WHERE id = $1`;
|
|
126
|
+
await db.run(query, [SESSION_STATE_ID]);
|
|
127
|
+
console.log('✍️ Scribe: State cleared');
|
|
128
|
+
return { status: 'cleared' };
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
console.error('✍️ Scribe: Failed to clear state:', e.message);
|
|
132
|
+
return { status: 'error', message: e.message };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=scribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scribe.js","sourceRoot":"","sources":["../../../src/services/scribe/scribe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bright Node Protocol — "The Illuminator"
|
|
3
|
+
*
|
|
4
|
+
* Selective Graph Illumination for reasoning models.
|
|
5
|
+
* Implements the "Bright Node" inference protocol where only relevant
|
|
6
|
+
* graph nodes are illuminated for reasoning, similar to how a flashlight
|
|
7
|
+
* illuminates only the relevant parts of a dark room.
|
|
8
|
+
*
|
|
9
|
+
* This supports the "Logic-Data Decoupling" concept by providing
|
|
10
|
+
* structured graph data to lightweight reasoning models.
|
|
11
|
+
*
|
|
12
|
+
* Extracted from search.ts for clean separation of the graph reasoning layer.
|
|
13
|
+
*/
|
|
14
|
+
export interface BrightNode {
|
|
15
|
+
id: string;
|
|
16
|
+
content: string;
|
|
17
|
+
source: string;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
buckets: string[];
|
|
20
|
+
tags: string[];
|
|
21
|
+
epochs: string;
|
|
22
|
+
provenance: string;
|
|
23
|
+
score: number;
|
|
24
|
+
sequence?: number;
|
|
25
|
+
molecular_signature?: string;
|
|
26
|
+
relationships: BrightNodeRelationship[];
|
|
27
|
+
}
|
|
28
|
+
export interface BrightNodeRelationship {
|
|
29
|
+
targetId: string;
|
|
30
|
+
relationshipType: string;
|
|
31
|
+
strength: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function getBrightNodes(query: string, buckets?: string[], maxNodes?: number): Promise<BrightNode[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Get Structured Graph for Reasoning Models
|
|
36
|
+
*
|
|
37
|
+
* Formats the bright nodes into a structure suitable for reasoning models
|
|
38
|
+
* as described in the "Logic-Data Decoupling" section of the white paper.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getStructuredGraph(query: string, buckets?: string[]): Promise<any>;
|
|
41
|
+
//# sourceMappingURL=bright-nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bright-nodes.d.ts","sourceRoot":"","sources":["../../../src/services/search/bright-nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,sBAAsB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAM,EAAO,EACtB,QAAQ,GAAE,MAAsC,GACjD,OAAO,CAAC,UAAU,EAAE,CAAC,CAoFvB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,GAAG,CAAC,CAwBd"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bright Node Protocol — "The Illuminator"
|
|
3
|
+
*
|
|
4
|
+
* Selective Graph Illumination for reasoning models.
|
|
5
|
+
* Implements the "Bright Node" inference protocol where only relevant
|
|
6
|
+
* graph nodes are illuminated for reasoning, similar to how a flashlight
|
|
7
|
+
* illuminates only the relevant parts of a dark room.
|
|
8
|
+
*
|
|
9
|
+
* This supports the "Logic-Data Decoupling" concept by providing
|
|
10
|
+
* structured graph data to lightweight reasoning models.
|
|
11
|
+
*
|
|
12
|
+
* Extracted from search.ts for clean separation of the graph reasoning layer.
|
|
13
|
+
*/
|
|
14
|
+
import { config } from '../../config/index.js';
|
|
15
|
+
import { executeSearch } from './search.js';
|
|
16
|
+
export async function getBrightNodes(query, buckets = [], maxNodes = config.SEARCH.max_chars_limit) {
|
|
17
|
+
console.log(`[BrightNode] Illuminating graph for query: "${query}"`);
|
|
18
|
+
// First, get relevant search results using the enhanced Tag-Walker (via executeSearch)
|
|
19
|
+
const { results: searchResults } = await executeSearch(query, buckets, maxNodes * config.SEARCH.fts_window_size, 'all');
|
|
20
|
+
if (searchResults.length === 0) {
|
|
21
|
+
console.log('[BrightNode] No results found for query.');
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
// Take top results based on score
|
|
25
|
+
const topResults = searchResults
|
|
26
|
+
.sort((a, b) => b.score - a.score)
|
|
27
|
+
.slice(0, maxNodes);
|
|
28
|
+
// Create bright nodes with relationship information
|
|
29
|
+
const brightNodes = topResults.map(result => ({
|
|
30
|
+
id: result.id,
|
|
31
|
+
content: result.content,
|
|
32
|
+
source: result.source,
|
|
33
|
+
timestamp: result.timestamp,
|
|
34
|
+
buckets: result.buckets,
|
|
35
|
+
tags: result.tags,
|
|
36
|
+
epochs: result.epochs,
|
|
37
|
+
provenance: result.provenance,
|
|
38
|
+
score: result.score,
|
|
39
|
+
sequence: result.sequence, // Pass through sequence
|
|
40
|
+
molecular_signature: result.molecular_signature, // V4 Nomenclature
|
|
41
|
+
relationships: [] // Will be populated based on shared tags/buckets
|
|
42
|
+
}));
|
|
43
|
+
// Identify relationships between nodes based on shared attributes
|
|
44
|
+
for (let i = 0; i < brightNodes.length; i++) {
|
|
45
|
+
const currentNode = brightNodes[i];
|
|
46
|
+
const relationships = [];
|
|
47
|
+
for (let j = 0; j < brightNodes.length; j++) {
|
|
48
|
+
if (i === j)
|
|
49
|
+
continue;
|
|
50
|
+
const otherNode = brightNodes[j];
|
|
51
|
+
let relationshipStrength = 0;
|
|
52
|
+
let relationshipType = 'related';
|
|
53
|
+
// 1. Semantic Overlap (Tags & Buckets)
|
|
54
|
+
const sharedBuckets = currentNode.buckets.filter((b) => otherNode.buckets.includes(b));
|
|
55
|
+
const sharedTags = currentNode.tags.filter((t) => otherNode.tags.includes(t));
|
|
56
|
+
relationshipStrength += sharedBuckets.length * 2 + sharedTags.length;
|
|
57
|
+
// 2. Source Continuity (Same Document)
|
|
58
|
+
if (currentNode.source === otherNode.source) {
|
|
59
|
+
relationshipStrength += 5; // Strong boost for same file
|
|
60
|
+
relationshipType = 'same_source';
|
|
61
|
+
// 3. Sequential Adjacency (The "Markov Link")
|
|
62
|
+
if (currentNode.sequence !== undefined && otherNode.sequence !== undefined) {
|
|
63
|
+
const dist = Math.abs(currentNode.sequence - otherNode.sequence);
|
|
64
|
+
if (dist === 1) {
|
|
65
|
+
relationshipStrength += 10; // Massive boost for direct neighbors
|
|
66
|
+
relationshipType = 'next_chunk';
|
|
67
|
+
}
|
|
68
|
+
else if (dist < 5) {
|
|
69
|
+
relationshipStrength += 3; // Boost for nearby chunks
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (relationshipStrength > 0) {
|
|
74
|
+
relationships.push({
|
|
75
|
+
targetId: otherNode.id,
|
|
76
|
+
relationshipType,
|
|
77
|
+
strength: relationshipStrength
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Sort relationships by strength and keep top 5
|
|
82
|
+
currentNode.relationships = relationships
|
|
83
|
+
.sort((a, b) => b.strength - a.strength)
|
|
84
|
+
.slice(0, 5);
|
|
85
|
+
}
|
|
86
|
+
console.log(`[BrightNode] Illuminated ${brightNodes.length} nodes with relationships`);
|
|
87
|
+
return brightNodes;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get Structured Graph for Reasoning Models
|
|
91
|
+
*
|
|
92
|
+
* Formats the bright nodes into a structure suitable for reasoning models
|
|
93
|
+
* as described in the "Logic-Data Decoupling" section of the white paper.
|
|
94
|
+
*/
|
|
95
|
+
export async function getStructuredGraph(query, buckets = []) {
|
|
96
|
+
const brightNodes = await getBrightNodes(query, buckets);
|
|
97
|
+
// Format as a graph structure suitable for reasoning models
|
|
98
|
+
return {
|
|
99
|
+
nodes: brightNodes.map(node => ({
|
|
100
|
+
id: node.id,
|
|
101
|
+
content: node.content.substring(0, 500), // Truncate for efficiency
|
|
102
|
+
tags: node.tags,
|
|
103
|
+
buckets: node.buckets,
|
|
104
|
+
provenance: node.provenance,
|
|
105
|
+
score: node.score
|
|
106
|
+
})),
|
|
107
|
+
edges: brightNodes.flatMap(node => node.relationships.map(rel => ({
|
|
108
|
+
source: node.id,
|
|
109
|
+
target: rel.targetId,
|
|
110
|
+
type: rel.relationshipType,
|
|
111
|
+
strength: rel.strength
|
|
112
|
+
}))),
|
|
113
|
+
query: query,
|
|
114
|
+
timestamp: Date.now()
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=bright-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bright-nodes.js","sourceRoot":"","sources":["../../../src/services/search/bright-nodes.ts"],"names":[],"mappings":"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"}
|