@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,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Concurrency Utility
|
|
3
|
+
*
|
|
4
|
+
* Automatically switches between sequential and parallel processing
|
|
5
|
+
* based on available system memory. Optimized for:
|
|
6
|
+
* - Low-memory environments (Termux/Android): Sequential processing
|
|
7
|
+
* - High-memory systems (64GB laptops): Parallel processing
|
|
8
|
+
*
|
|
9
|
+
* Standards: 132 - Adaptive Concurrency Control
|
|
10
|
+
*/
|
|
11
|
+
import os from 'os';
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = path.dirname(__filename);
|
|
17
|
+
const USER_SETTINGS_PATH = path.join(__dirname, '..', '..', 'user_settings.json');
|
|
18
|
+
// In-memory cache for settings
|
|
19
|
+
let cachedSettings = null;
|
|
20
|
+
let settingsLastRead = 0;
|
|
21
|
+
const SETTINGS_CACHE_MS = 5000; // Cache for 5 seconds
|
|
22
|
+
/**
|
|
23
|
+
* Load adaptive concurrency settings from user_settings.json
|
|
24
|
+
* Falls back to environment variables, then defaults
|
|
25
|
+
*/
|
|
26
|
+
function loadUserSettings() {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
// Return cached settings if still valid
|
|
29
|
+
if (cachedSettings && (now - settingsLastRead) < SETTINGS_CACHE_MS) {
|
|
30
|
+
return cachedSettings;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
if (fs.existsSync(USER_SETTINGS_PATH)) {
|
|
34
|
+
const content = fs.readFileSync(USER_SETTINGS_PATH, 'utf-8');
|
|
35
|
+
const settings = JSON.parse(content);
|
|
36
|
+
cachedSettings = settings.adaptive_concurrency || {};
|
|
37
|
+
settingsLastRead = now;
|
|
38
|
+
return cachedSettings;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.warn('[AdaptiveConcurrency] Failed to load user_settings.json:', error);
|
|
43
|
+
}
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get environment setting from user_settings.json
|
|
48
|
+
* 'auto' | 'low_memory' | 'high_memory'
|
|
49
|
+
*/
|
|
50
|
+
function getEnvironmentMode() {
|
|
51
|
+
const settings = loadUserSettings();
|
|
52
|
+
const mode = settings.environment || process.env.ANCHOR_CONCURRENCY_ENV;
|
|
53
|
+
if (mode === 'low_memory' || mode === 'high_memory' || mode === 'auto') {
|
|
54
|
+
return mode;
|
|
55
|
+
}
|
|
56
|
+
return 'auto';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get current system memory information
|
|
60
|
+
*/
|
|
61
|
+
export function getSystemMemoryInfo(config) {
|
|
62
|
+
const totalBytes = os.totalmem();
|
|
63
|
+
const freeBytes = os.freemem();
|
|
64
|
+
const usedBytes = totalBytes - freeBytes;
|
|
65
|
+
const totalMB = Math.floor(totalBytes / 1024 / 1024);
|
|
66
|
+
const freeMB = Math.floor(freeBytes / 1024 / 1024);
|
|
67
|
+
const usedMB = Math.floor(usedBytes / 1024 / 1024);
|
|
68
|
+
const usagePercent = Math.round((usedBytes / totalBytes) * 100);
|
|
69
|
+
const thresholds = getThresholds(config);
|
|
70
|
+
return {
|
|
71
|
+
totalMB,
|
|
72
|
+
freeMB,
|
|
73
|
+
usedMB,
|
|
74
|
+
usagePercent,
|
|
75
|
+
isLowMemory: freeMB < thresholds.sequentialThresholdMB,
|
|
76
|
+
isHighMemory: freeMB > thresholds.parallelThresholdMB
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get configured thresholds with user_settings.json and environment overrides
|
|
81
|
+
* Priority: config param > user_settings.json > environment variables > defaults
|
|
82
|
+
*/
|
|
83
|
+
function getThresholds(config) {
|
|
84
|
+
const userSettings = loadUserSettings();
|
|
85
|
+
const environmentMode = getEnvironmentMode();
|
|
86
|
+
// Environment variable overrides (highest priority after config param)
|
|
87
|
+
const envSequential = process.env.ANCHOR_SEQUENTIAL_THRESHOLD_MB;
|
|
88
|
+
const envParallel = process.env.ANCHOR_PARALLEL_THRESHOLD_MB;
|
|
89
|
+
const envMaxConcurrency = process.env.ANCHOR_MAX_CONCURRENCY;
|
|
90
|
+
const envForceSequential = process.env.ANCHOR_FORCE_SEQUENTIAL;
|
|
91
|
+
const envForceParallel = process.env.ANCHOR_FORCE_PARALLEL;
|
|
92
|
+
// Determine force flags based on environment mode from user_settings.json
|
|
93
|
+
let forceSequential = config?.forceSequential ?? false;
|
|
94
|
+
let forceParallel = config?.forceParallel ?? false;
|
|
95
|
+
if (environmentMode === 'low_memory') {
|
|
96
|
+
forceSequential = true;
|
|
97
|
+
forceParallel = false;
|
|
98
|
+
}
|
|
99
|
+
else if (environmentMode === 'high_memory') {
|
|
100
|
+
forceSequential = false;
|
|
101
|
+
forceParallel = true;
|
|
102
|
+
}
|
|
103
|
+
// Environment variables can override user_settings.json
|
|
104
|
+
if (envForceSequential === 'true')
|
|
105
|
+
forceSequential = true;
|
|
106
|
+
if (envForceParallel === 'true')
|
|
107
|
+
forceParallel = true;
|
|
108
|
+
return {
|
|
109
|
+
sequentialThresholdMB: config?.sequentialThresholdMB ??
|
|
110
|
+
(envSequential ? parseInt(envSequential, 10) :
|
|
111
|
+
(userSettings.sequential_threshold_mb ?? 2048)),
|
|
112
|
+
parallelThresholdMB: config?.parallelThresholdMB ??
|
|
113
|
+
(envParallel ? parseInt(envParallel, 10) :
|
|
114
|
+
(userSettings.parallel_threshold_mb ?? 8192)),
|
|
115
|
+
maxConcurrency: config?.maxConcurrency ??
|
|
116
|
+
(envMaxConcurrency ? parseInt(envMaxConcurrency, 10) :
|
|
117
|
+
(userSettings.max_concurrency ?? 5)),
|
|
118
|
+
lowMemoryBatchSize: config?.lowMemoryBatchSize ??
|
|
119
|
+
(userSettings.low_memory_batch_size ?? 1),
|
|
120
|
+
highMemoryBatchSize: config?.highMemoryBatchSize ??
|
|
121
|
+
(userSettings.high_memory_batch_size ?? 20),
|
|
122
|
+
forceSequential,
|
|
123
|
+
forceParallel,
|
|
124
|
+
environmentMode
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Determine if we should use sequential processing
|
|
129
|
+
*/
|
|
130
|
+
export function shouldUseSequential(config) {
|
|
131
|
+
const thresholds = getThresholds(config);
|
|
132
|
+
// Force flags take precedence
|
|
133
|
+
if (thresholds.forceSequential)
|
|
134
|
+
return true;
|
|
135
|
+
if (thresholds.forceParallel)
|
|
136
|
+
return false;
|
|
137
|
+
// Auto-detect based on memory
|
|
138
|
+
const memory = getSystemMemoryInfo(config);
|
|
139
|
+
return memory.isLowMemory;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get the optimal batch size for current memory conditions
|
|
143
|
+
*/
|
|
144
|
+
export function getOptimalBatchSize(config) {
|
|
145
|
+
const thresholds = getThresholds(config);
|
|
146
|
+
const memory = getSystemMemoryInfo(config);
|
|
147
|
+
if (thresholds.forceSequential || memory.isLowMemory) {
|
|
148
|
+
return config?.lowMemoryBatchSize ?? thresholds.lowMemoryBatchSize ?? 1;
|
|
149
|
+
}
|
|
150
|
+
if (memory.isHighMemory) {
|
|
151
|
+
return config?.highMemoryBatchSize ?? thresholds.highMemoryBatchSize ?? 20;
|
|
152
|
+
}
|
|
153
|
+
// Adaptive: scale between low and high based on available memory
|
|
154
|
+
const ratio = (memory.freeMB - thresholds.sequentialThresholdMB) /
|
|
155
|
+
(thresholds.parallelThresholdMB - thresholds.sequentialThresholdMB);
|
|
156
|
+
const lowSize = config?.lowMemoryBatchSize ?? thresholds.lowMemoryBatchSize ?? 1;
|
|
157
|
+
const highSize = config?.highMemoryBatchSize ?? thresholds.highMemoryBatchSize ?? 20;
|
|
158
|
+
return Math.floor(lowSize + (highSize - lowSize) * Math.min(ratio, 1));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get the optimal concurrency level for current memory conditions
|
|
162
|
+
*/
|
|
163
|
+
export function getOptimalConcurrency(config) {
|
|
164
|
+
const thresholds = getThresholds(config);
|
|
165
|
+
const memory = getSystemMemoryInfo(config);
|
|
166
|
+
if (thresholds.forceSequential || memory.isLowMemory) {
|
|
167
|
+
return 1; // Sequential
|
|
168
|
+
}
|
|
169
|
+
if (memory.isHighMemory) {
|
|
170
|
+
// Use CPU count for high-memory systems, but cap at 16
|
|
171
|
+
return Math.min(os.cpus().length, 16);
|
|
172
|
+
}
|
|
173
|
+
// Adaptive: use configured max concurrency for mid-range systems
|
|
174
|
+
return thresholds.maxConcurrency;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Process an array of items with adaptive concurrency
|
|
178
|
+
* Automatically switches between sequential and parallel based on memory
|
|
179
|
+
*/
|
|
180
|
+
export async function processWithAdaptiveConcurrency(items, processor, config) {
|
|
181
|
+
const results = [];
|
|
182
|
+
const concurrency = getOptimalConcurrency(config);
|
|
183
|
+
const batchSize = getOptimalBatchSize(config);
|
|
184
|
+
// Log mode for debugging
|
|
185
|
+
const memory = getSystemMemoryInfo(config);
|
|
186
|
+
console.log(`[AdaptiveConcurrency] Mode: ${concurrency === 1 ? 'SEQUENTIAL' : `PARALLEL(${concurrency})`}, ` +
|
|
187
|
+
`Batch: ${batchSize}, FreeMem: ${memory.freeMB}MB`);
|
|
188
|
+
if (concurrency === 1) {
|
|
189
|
+
// Sequential processing - memory safe
|
|
190
|
+
for (let i = 0; i < items.length; i++) {
|
|
191
|
+
const result = await processor(items[i], i);
|
|
192
|
+
results.push(result);
|
|
193
|
+
// Periodic GC hint for low-memory environments
|
|
194
|
+
if ((i + 1) % batchSize === 0 && global.gc) {
|
|
195
|
+
global.gc();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// Parallel processing with controlled concurrency
|
|
201
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
202
|
+
const batch = items.slice(i, i + batchSize);
|
|
203
|
+
const batchPromises = batch.map((item, batchIndex) => processor(item, i + batchIndex));
|
|
204
|
+
const batchResults = await Promise.all(batchPromises);
|
|
205
|
+
results.push(...batchResults);
|
|
206
|
+
// Optional GC between batches on mid-range systems
|
|
207
|
+
if (global.gc && !memory.isHighMemory) {
|
|
208
|
+
global.gc();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return results;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Process items in batches with automatic memory management
|
|
216
|
+
* Always uses sequential processing within batches for memory safety
|
|
217
|
+
*/
|
|
218
|
+
export async function processInBatches(items, processor, batchSize = getOptimalBatchSize()) {
|
|
219
|
+
const results = [];
|
|
220
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
221
|
+
const batch = items.slice(i, i + batchSize);
|
|
222
|
+
// Process batch sequentially for memory safety
|
|
223
|
+
for (let j = 0; j < batch.length; j++) {
|
|
224
|
+
const result = await processor(batch[j], i + j);
|
|
225
|
+
results.push(result);
|
|
226
|
+
}
|
|
227
|
+
// GC hint after each batch
|
|
228
|
+
if (global.gc) {
|
|
229
|
+
global.gc();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return results;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get a summary of current concurrency settings for logging
|
|
236
|
+
*/
|
|
237
|
+
export function getConcurrencySummary(config) {
|
|
238
|
+
const memory = getSystemMemoryInfo(config);
|
|
239
|
+
const concurrency = getOptimalConcurrency(config);
|
|
240
|
+
const batchSize = getOptimalBatchSize(config);
|
|
241
|
+
const thresholds = getThresholds(config);
|
|
242
|
+
const mode = concurrency === 1 ? 'SEQUENTIAL' : 'PARALLEL';
|
|
243
|
+
const envMode = thresholds.environmentMode;
|
|
244
|
+
return `[AdaptiveConcurrency] ${mode} mode (env=${envMode}): concurrency=${concurrency}, batch=${batchSize}, ` +
|
|
245
|
+
`freeMem=${memory.freeMB}MB/${memory.totalMB}MB (${memory.usagePercent}% used)`;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get current environment mode setting
|
|
249
|
+
* Useful for UI display
|
|
250
|
+
*/
|
|
251
|
+
export function getCurrentEnvironmentMode() {
|
|
252
|
+
return getEnvironmentMode();
|
|
253
|
+
}
|
|
254
|
+
// Export default configuration for easy importing
|
|
255
|
+
export const AdaptiveConcurrency = {
|
|
256
|
+
getSystemMemoryInfo,
|
|
257
|
+
shouldUseSequential,
|
|
258
|
+
getOptimalBatchSize,
|
|
259
|
+
getOptimalConcurrency,
|
|
260
|
+
processWithAdaptiveConcurrency,
|
|
261
|
+
processInBatches,
|
|
262
|
+
getConcurrencySummary,
|
|
263
|
+
getCurrentEnvironmentMode
|
|
264
|
+
};
|
|
265
|
+
export default AdaptiveConcurrency;
|
|
266
|
+
//# sourceMappingURL=adaptive-concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-concurrency.js","sourceRoot":"","sources":["../../src/utils/adaptive-concurrency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date_extractor.d.ts","sourceRoot":"","sources":["../../src/utils/date_extractor.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BlE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date Extraction Utility
|
|
3
|
+
* Extracts timestamps from text content or filenames using regex patterns.
|
|
4
|
+
*/
|
|
5
|
+
import { config } from '../config/index.js';
|
|
6
|
+
export function extractDateFromContent(text) {
|
|
7
|
+
// Limit scope to header for performance (first chars based on config)
|
|
8
|
+
const scanText = text.length > config.LIMITS.DATE_EXTRACTOR_SCAN_LIMIT ? text.substring(0, config.LIMITS.DATE_EXTRACTOR_SCAN_LIMIT) : text;
|
|
9
|
+
// Patterns
|
|
10
|
+
const patterns = [
|
|
11
|
+
// ISO 8601: 2025-01-24 or 2025/01/24
|
|
12
|
+
/\b(\d{4})[-/](\d{1,2})[-/](\d{1,2})\b/,
|
|
13
|
+
// US: 01/24/2025
|
|
14
|
+
/\b(\d{1,2})[-/](\d{1,2})[-/](\d{4})\b/,
|
|
15
|
+
// Text: Jan 24, 2025 or January 24th, 2025
|
|
16
|
+
/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\s+(\d{1,2})(?:st|nd|rd|th)?,\s+(\d{4})\b/i
|
|
17
|
+
];
|
|
18
|
+
for (const pattern of patterns) {
|
|
19
|
+
const match = scanText.match(pattern);
|
|
20
|
+
if (match) {
|
|
21
|
+
// Validate date
|
|
22
|
+
// Remove ordinal suffixes (st, nd, rd, th) before parsing to support "January 1st, 2025"
|
|
23
|
+
const cleanDateStr = match[0].replace(/(\d+)(st|nd|rd|th)/i, '$1');
|
|
24
|
+
const parsed = Date.parse(cleanDateStr);
|
|
25
|
+
if (!isNaN(parsed)) {
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=date_extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date_extractor.js","sourceRoot":"","sources":["../../src/utils/date_extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAC/C,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3I,WAAW;IACX,MAAM,QAAQ,GAAG;QACb,qCAAqC;QACrC,uCAAuC;QACvC,iBAAiB;QACjB,uCAAuC;QACvC,2CAA2C;QAC3C,qGAAqG;KACxG,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACR,gBAAgB;YAChB,yFAAyF;YACzF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Native Module Manager for ECE
|
|
3
|
+
*
|
|
4
|
+
* Implements improved error handling and fallback mechanisms for native modules
|
|
5
|
+
* following Standard 074: Native Module Acceleration guidelines
|
|
6
|
+
*/
|
|
7
|
+
export interface NativeModuleStatus {
|
|
8
|
+
loaded: boolean;
|
|
9
|
+
moduleName: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
architecture: string;
|
|
12
|
+
error?: string;
|
|
13
|
+
fallbackActive: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare class NativeModuleManager {
|
|
16
|
+
private static instance;
|
|
17
|
+
private modules;
|
|
18
|
+
private status;
|
|
19
|
+
private constructor();
|
|
20
|
+
static getInstance(): NativeModuleManager;
|
|
21
|
+
/**
|
|
22
|
+
* Load a native module with comprehensive error handling and fallbacks
|
|
23
|
+
*/
|
|
24
|
+
loadNativeModule(moduleName: string, binaryName: string): any;
|
|
25
|
+
/**
|
|
26
|
+
* Determine if we should use fallback only for a particular module
|
|
27
|
+
* This could be based on previous crashes or configuration
|
|
28
|
+
*/
|
|
29
|
+
private shouldUseFallbackOnly;
|
|
30
|
+
/**
|
|
31
|
+
* Create a fallback implementation for when native modules fail
|
|
32
|
+
*/
|
|
33
|
+
private createFallbackModule;
|
|
34
|
+
/**
|
|
35
|
+
* Get the status of a loaded native module
|
|
36
|
+
*/
|
|
37
|
+
getStatus(moduleName: string): NativeModuleStatus | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a module is using fallback implementation
|
|
40
|
+
*/
|
|
41
|
+
isUsingFallback(moduleName: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Get all loaded modules status
|
|
44
|
+
*/
|
|
45
|
+
getAllStatus(): Map<string, NativeModuleStatus>;
|
|
46
|
+
}
|
|
47
|
+
export declare const nativeModuleManager: NativeModuleManager;
|
|
48
|
+
//# sourceMappingURL=native-module-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-module-manager.d.ts","sourceRoot":"","sources":["../../src/utils/native-module-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAC7C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,MAAM,CAA8C;IAE5D,OAAO;WAEO,WAAW,IAAI,mBAAmB;IAOhD;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;IAmGpE;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4H5B;;OAEG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIpE;;OAEG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKnD;;OAEG;IACI,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;CAGvD;AAGD,eAAO,MAAM,mBAAmB,qBAAoC,CAAC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Native Module Manager for ECE
|
|
3
|
+
*
|
|
4
|
+
* Implements improved error handling and fallback mechanisms for native modules
|
|
5
|
+
* following Standard 074: Native Module Acceleration guidelines
|
|
6
|
+
*/
|
|
7
|
+
import { pathManager } from './path-manager.js';
|
|
8
|
+
import { createRequire } from 'module';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
13
|
+
const require = createRequire(import.meta.url);
|
|
14
|
+
export class NativeModuleManager {
|
|
15
|
+
static instance;
|
|
16
|
+
modules = new Map();
|
|
17
|
+
status = new Map();
|
|
18
|
+
constructor() { }
|
|
19
|
+
static getInstance() {
|
|
20
|
+
if (!NativeModuleManager.instance) {
|
|
21
|
+
NativeModuleManager.instance = new NativeModuleManager();
|
|
22
|
+
}
|
|
23
|
+
return NativeModuleManager.instance;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load a native module with comprehensive error handling and fallbacks
|
|
27
|
+
*/
|
|
28
|
+
loadNativeModule(moduleName, binaryName) {
|
|
29
|
+
if (this.modules.has(moduleName)) {
|
|
30
|
+
const existingModule = this.modules.get(moduleName);
|
|
31
|
+
// Check if we previously marked this module as problematic
|
|
32
|
+
const status = this.status.get(moduleName);
|
|
33
|
+
if (status && status.fallbackActive) {
|
|
34
|
+
console.log(`[NativeModuleManager] Returning cached fallback for ${moduleName}`);
|
|
35
|
+
return existingModule;
|
|
36
|
+
}
|
|
37
|
+
return existingModule;
|
|
38
|
+
}
|
|
39
|
+
let nativeModule = null;
|
|
40
|
+
let fallbackActive = false;
|
|
41
|
+
let errorMessage;
|
|
42
|
+
// Check if we should skip native module loading entirely for safety
|
|
43
|
+
// This could be based on a config or previous crash detection
|
|
44
|
+
const shouldUseFallbackOnly = this.shouldUseFallbackOnly(moduleName);
|
|
45
|
+
if (shouldUseFallbackOnly) {
|
|
46
|
+
console.log(`[NativeModuleManager] Skipping native module ${moduleName} due to safety mode`);
|
|
47
|
+
fallbackActive = true;
|
|
48
|
+
nativeModule = this.createFallbackModule(moduleName);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
try {
|
|
52
|
+
// 1. Try standard path resolution
|
|
53
|
+
const nativePath = pathManager.getNativePath(binaryName);
|
|
54
|
+
if (require && typeof require === 'function') {
|
|
55
|
+
nativeModule = require(nativePath);
|
|
56
|
+
console.log(`[NativeModuleManager] Successfully loaded ${moduleName} from: ${nativePath}`);
|
|
57
|
+
// Perform a quick safety test to make sure the module doesn't crash
|
|
58
|
+
if (moduleName === 'ece_native' && nativeModule && typeof nativeModule.distance === 'function') {
|
|
59
|
+
try {
|
|
60
|
+
// Quick test with safe values
|
|
61
|
+
const testResult = nativeModule.distance(BigInt(1), BigInt(2));
|
|
62
|
+
if (typeof testResult !== 'number') {
|
|
63
|
+
throw new Error('Native distance function returned unexpected type');
|
|
64
|
+
}
|
|
65
|
+
console.log(`[NativeModuleManager] Native module ${moduleName} passed safety test`);
|
|
66
|
+
}
|
|
67
|
+
catch (testError) {
|
|
68
|
+
console.error(`[NativeModuleManager] Native module ${moduleName} failed safety test:`, testError);
|
|
69
|
+
fallbackActive = true;
|
|
70
|
+
nativeModule = this.createFallbackModule(moduleName);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error('Require function not available');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (e1) {
|
|
79
|
+
console.warn(`[NativeModuleManager] Standard load failed for ${moduleName}:`, e1.message);
|
|
80
|
+
// 2. Try alternative paths (debug builds, etc.)
|
|
81
|
+
try {
|
|
82
|
+
const debugPath = pathManager.getNativePath(binaryName).replace('Release', 'Debug');
|
|
83
|
+
nativeModule = require(debugPath);
|
|
84
|
+
console.log(`[NativeModuleManager] Loaded ${moduleName} from debug build: ${debugPath}`);
|
|
85
|
+
}
|
|
86
|
+
catch (e2) {
|
|
87
|
+
console.warn(`[NativeModuleManager] Debug load failed for ${moduleName}:`, e2.message);
|
|
88
|
+
// 3. Try development fallback path
|
|
89
|
+
try {
|
|
90
|
+
const devPath = path.resolve(__dirname, `../../build/Release/${binaryName}`);
|
|
91
|
+
nativeModule = require(devPath);
|
|
92
|
+
console.log(`[NativeModuleManager] Loaded ${moduleName} from dev path: ${devPath}`);
|
|
93
|
+
}
|
|
94
|
+
catch (e3) {
|
|
95
|
+
console.warn(`[NativeModuleManager] Dev path load failed for ${moduleName}:`, e3.message);
|
|
96
|
+
// 4. Activate fallback implementation
|
|
97
|
+
fallbackActive = true;
|
|
98
|
+
errorMessage = `Native module ${moduleName} failed to load: ${e3.message}`;
|
|
99
|
+
console.warn(`[NativeModuleManager] Activating fallback for ${moduleName}`);
|
|
100
|
+
// Return a fallback object with the same interface as the native module
|
|
101
|
+
nativeModule = this.createFallbackModule(moduleName);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Store module and status
|
|
107
|
+
this.modules.set(moduleName, nativeModule);
|
|
108
|
+
const status = {
|
|
109
|
+
loaded: nativeModule !== null,
|
|
110
|
+
moduleName,
|
|
111
|
+
platform: process.platform,
|
|
112
|
+
architecture: process.arch,
|
|
113
|
+
fallbackActive,
|
|
114
|
+
error: errorMessage
|
|
115
|
+
};
|
|
116
|
+
this.status.set(moduleName, status);
|
|
117
|
+
return nativeModule;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Determine if we should use fallback only for a particular module
|
|
121
|
+
* This could be based on previous crashes or configuration
|
|
122
|
+
*/
|
|
123
|
+
shouldUseFallbackOnly(moduleName) {
|
|
124
|
+
// For stability, force fallback for ece_native to prevent crashes
|
|
125
|
+
// This addresses the ECONNRESET issue caused by native module segfaults
|
|
126
|
+
if (moduleName === 'ece_native') {
|
|
127
|
+
console.log(`[NativeModuleManager] Forcing fallback for ${moduleName} to prevent crashes`);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
// For now, we'll return false for other modules, but this could be enhanced to check
|
|
131
|
+
// for crash history or user configuration
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Create a fallback implementation for when native modules fail
|
|
136
|
+
*/
|
|
137
|
+
createFallbackModule(moduleName) {
|
|
138
|
+
switch (moduleName) {
|
|
139
|
+
case 'ece_native':
|
|
140
|
+
return {
|
|
141
|
+
// Fallback implementations for native functions
|
|
142
|
+
cleanse: (input) => {
|
|
143
|
+
// Simple fallback for Key Assassin functionality
|
|
144
|
+
let clean = input;
|
|
145
|
+
// Recursive un-escape (JS fallback)
|
|
146
|
+
let pass = 0;
|
|
147
|
+
while (clean.includes('\\') && pass < 3) {
|
|
148
|
+
pass++;
|
|
149
|
+
clean = clean.replace(/\\"/g, '"');
|
|
150
|
+
clean = clean.replace(/\\n/g, '\n');
|
|
151
|
+
clean = clean.replace(/\\t/g, '\t');
|
|
152
|
+
}
|
|
153
|
+
// Remove common metadata keys
|
|
154
|
+
clean = clean.replace(/"type"\s*:\s*"[^"]*",?/g, '');
|
|
155
|
+
clean = clean.replace(/"timestamp"\s*:\s*"[^"]*",?/g, '');
|
|
156
|
+
clean = clean.replace(/"source"\s*:\s*"[^"]*",?/g, '');
|
|
157
|
+
clean = clean.replace(/"response_content"\s*:\s*/g, '');
|
|
158
|
+
clean = clean.replace(/"thinking_content"\s*:\s*/g, '');
|
|
159
|
+
// Slash compression
|
|
160
|
+
clean = clean.replace(/\\{2,}/g, '/');
|
|
161
|
+
return clean;
|
|
162
|
+
},
|
|
163
|
+
atomize: (input, strategy) => {
|
|
164
|
+
// Simple fallback for atomization
|
|
165
|
+
if (strategy === 'code') {
|
|
166
|
+
// Split by top-level code blocks
|
|
167
|
+
return input.split(/(?=^\s*[a-z_][^{]*\{)/m).filter(s => s.trim().length > 0);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Split by paragraphs for prose
|
|
171
|
+
return input.split(/\n\s*\n/).filter(s => s.trim().length > 0);
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
fingerprint: (input) => {
|
|
175
|
+
// Robust JS Fallback for SimHash (Standard 074)
|
|
176
|
+
// Implementation: 2-gram Shingling + Jenkins Hash + 64-bit Vector
|
|
177
|
+
const tokens = input.toLowerCase().split(/\s+/);
|
|
178
|
+
const shingles = [];
|
|
179
|
+
// Generate 2-shingles (overlapping pairs)
|
|
180
|
+
if (tokens.length < 2) {
|
|
181
|
+
shingles.push(tokens[0] || "");
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
for (let i = 0; i < tokens.length - 1; i++) {
|
|
185
|
+
shingles.push(`${tokens[i]} ${tokens[i + 1]}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const v = new Int32Array(64).fill(0);
|
|
189
|
+
for (const shingle of shingles) {
|
|
190
|
+
// Jenkins One-at-a-Time Hash for the shingle
|
|
191
|
+
let hash = 0;
|
|
192
|
+
for (let i = 0; i < shingle.length; i++) {
|
|
193
|
+
hash += shingle.charCodeAt(i);
|
|
194
|
+
hash += (hash << 10);
|
|
195
|
+
hash ^= (hash >>> 6);
|
|
196
|
+
}
|
|
197
|
+
hash += (hash << 3);
|
|
198
|
+
hash ^= (hash >>> 11);
|
|
199
|
+
hash += (hash << 15);
|
|
200
|
+
// Update vector
|
|
201
|
+
// We use the 32-bit hash twice to simulate 64 bits or just map 32 bits?
|
|
202
|
+
// For valid similarity with C++ implementation (usually MD5 or similar), we should try to match.
|
|
203
|
+
// But for fallback within JS-only scope, self-consistency is enough.
|
|
204
|
+
// Let's stick to 64-bit mapping of the 32-bit hash for simplicity or mix it.
|
|
205
|
+
// Simple expansion to 64 positions
|
|
206
|
+
for (let i = 0; i < 64; i++) {
|
|
207
|
+
const bit = (i < 32) ? ((hash >> i) & 1) : ((hash >> (i - 32)) & 1); // Mirror
|
|
208
|
+
v[i] += bit ? 1 : -1;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Collapse to 64-bit integer
|
|
212
|
+
let fingerprint = 0n;
|
|
213
|
+
for (let i = 0; i < 64; i++) {
|
|
214
|
+
if (v[i] > 0) {
|
|
215
|
+
fingerprint |= (1n << BigInt(i));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return fingerprint;
|
|
219
|
+
},
|
|
220
|
+
distance: (a, b) => {
|
|
221
|
+
// Hamming Distance
|
|
222
|
+
const xor = a ^ b;
|
|
223
|
+
let count = 0;
|
|
224
|
+
// Kernighan's Algorithm for bit counting with safety limit
|
|
225
|
+
let n = xor;
|
|
226
|
+
const MAX_BITS = 64; // Maximum possible bits for our fingerprint
|
|
227
|
+
while (n > 0n && count < MAX_BITS) {
|
|
228
|
+
n &= (n - 1n);
|
|
229
|
+
count++;
|
|
230
|
+
}
|
|
231
|
+
// Safety check in case of unexpected behavior
|
|
232
|
+
if (count >= MAX_BITS) {
|
|
233
|
+
console.warn('[NativeModuleManager] Hamming distance reached maximum bit count, returning 64');
|
|
234
|
+
return 64;
|
|
235
|
+
}
|
|
236
|
+
return count;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
default:
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get the status of a loaded native module
|
|
245
|
+
*/
|
|
246
|
+
getStatus(moduleName) {
|
|
247
|
+
return this.status.get(moduleName);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Check if a module is using fallback implementation
|
|
251
|
+
*/
|
|
252
|
+
isUsingFallback(moduleName) {
|
|
253
|
+
const status = this.getStatus(moduleName);
|
|
254
|
+
return status ? status.fallbackActive : false;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get all loaded modules status
|
|
258
|
+
*/
|
|
259
|
+
getAllStatus() {
|
|
260
|
+
return new Map(this.status);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Export singleton instance
|
|
264
|
+
export const nativeModuleManager = NativeModuleManager.getInstance();
|
|
265
|
+
//# sourceMappingURL=native-module-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-module-manager.js","sourceRoot":"","sources":["../../src/utils/native-module-manager.ts"],"names":[],"mappings":"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"}
|