agentic-flow 2.0.2 → 2.0.4
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/.claude/agents/test-neural.md +14 -0
- package/.claude/settings.json +9 -133
- package/README.md +622 -1862
- package/dist/.tsbuildinfo +1 -1
- package/dist/billing/mcp/tools.js +0 -1
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts.map +1 -1
- package/dist/cli/commands/hooks.js +4 -79
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli-proxy.js +1 -89
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +4 -20
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/agentdb-wrapper.d.ts +2 -3
- package/dist/core/agentdb-wrapper.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper.js +1 -15
- package/dist/core/agentdb-wrapper.js.map +1 -1
- package/dist/core/attention-native.d.ts +0 -4
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +2 -14
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/SecurityManager.d.ts +2 -11
- package/dist/federation/SecurityManager.d.ts.map +1 -1
- package/dist/federation/SecurityManager.js +17 -50
- package/dist/federation/SecurityManager.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/hooks/swarm-learning-optimizer.js +5 -5
- package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
- package/dist/intelligence/IntelligenceStore.d.ts +26 -35
- package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
- package/dist/intelligence/IntelligenceStore.js +123 -308
- package/dist/intelligence/IntelligenceStore.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.js +10 -49
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.js +3 -24
- package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
- package/dist/intelligence/index.d.ts +3 -29
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/index.js +3 -13
- package/dist/intelligence/index.js.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +3 -9
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
- package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
- package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js +4 -10
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +0 -6
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js +2 -5
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +1 -0
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -2
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +1 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +5 -2
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -11
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js +5 -45
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
- package/dist/reasoningbank/core/consolidate.js +45 -113
- package/dist/reasoningbank/core/consolidate.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +6 -1
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +6 -1
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +6 -2
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +6 -2
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
- package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
- package/dist/reasoningbank/utils/embeddings.js +26 -53
- package/dist/reasoningbank/utils/embeddings.js.map +1 -1
- package/dist/router/index.d.ts +17 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +19 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
- package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
- package/dist/router/providers/onnx-local-optimized.js +0 -10
- package/dist/router/providers/onnx-local-optimized.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts +0 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +5 -22
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.d.ts +0 -1
- package/dist/services/sona-agent-training.d.ts.map +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +6 -9
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +5 -6
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +0 -21
- package/dist/utils/cli.js.map +1 -1
- package/package.json +7 -19
- package/scripts/postinstall.js +4 -45
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
- package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
- package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
- package/.claude/skills/hooks-automation/skill.md +0 -155
- package/.claude/skills/memory-patterns/skill.md +0 -110
- package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/sparc-methodology/skill.md +0 -137
- package/.claude/skills/swarm-coordination/skill.md +0 -94
- package/.claude/skills/worker-benchmarks/skill.md +0 -135
- package/.claude/skills/worker-integration/skill.md +0 -154
- package/.claude/statusline.mjs +0 -109
- package/.claude/statusline.sh +0 -71
- package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
- package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
- package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
- package/dist/agentdb/cli/agentdb-cli.js +0 -717
- package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
- package/dist/agentdb/controllers/CausalRecall.js +0 -281
- package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/agentdb/controllers/EmbeddingService.js +0 -119
- package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
- package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
- package/dist/agentdb/controllers/NightlyLearner.js +0 -382
- package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
- package/dist/agentdb/controllers/SkillLibrary.js +0 -276
- package/dist/agentdb/controllers/frontier-index.js +0 -9
- package/dist/agentdb/controllers/index.js +0 -8
- package/dist/agentdb/optimizations/BatchOperations.js +0 -198
- package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
- package/dist/agentdb/optimizations/index.js +0 -7
- package/dist/agentdb/tests/frontier-features.test.js +0 -665
- package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
- package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/embeddings-benchmark.js +0 -282
- package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
- package/dist/cli/commands/embeddings.d.ts +0 -12
- package/dist/cli/commands/embeddings.d.ts.map +0 -1
- package/dist/cli/commands/embeddings.js +0 -386
- package/dist/cli/commands/embeddings.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -514
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/workers.d.ts +0 -9
- package/dist/cli/commands/workers.d.ts.map +0 -1
- package/dist/cli/commands/workers.js +0 -991
- package/dist/cli/commands/workers.js.map +0 -1
- package/dist/cli/skills-manager.js +0 -1297
- package/dist/cli/update-message.js +0 -175
- package/dist/embeddings/index.d.ts +0 -17
- package/dist/embeddings/index.d.ts.map +0 -1
- package/dist/embeddings/index.js +0 -17
- package/dist/embeddings/index.js.map +0 -1
- package/dist/embeddings/neural-substrate.d.ts +0 -206
- package/dist/embeddings/neural-substrate.d.ts.map +0 -1
- package/dist/embeddings/neural-substrate.js +0 -629
- package/dist/embeddings/neural-substrate.js.map +0 -1
- package/dist/embeddings/optimized-embedder.d.ts +0 -103
- package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
- package/dist/embeddings/optimized-embedder.js +0 -730
- package/dist/embeddings/optimized-embedder.js.map +0 -1
- package/dist/examples/embedding-geometry.d.ts +0 -105
- package/dist/examples/embedding-geometry.d.ts.map +0 -1
- package/dist/examples/embedding-geometry.js +0 -528
- package/dist/examples/embedding-geometry.js.map +0 -1
- package/dist/memory/SharedMemoryPool.d.ts +0 -129
- package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
- package/dist/memory/SharedMemoryPool.js +0 -243
- package/dist/memory/SharedMemoryPool.js.map +0 -1
- package/dist/memory/index.d.ts +0 -8
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -7
- package/dist/memory/index.js.map +0 -1
- package/dist/proxy/http3-proxy-old.js +0 -331
- package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
- package/dist/proxy/utils/logger.js +0 -59
- package/dist/reasoningbank/agentdb-adapter.js +0 -125
- package/dist/reasoningbank/core/database.js +0 -250
- package/dist/reasoningbank/core/memory-engine.js +0 -335
- package/dist/swarm/ipfs-swarm.d.ts +0 -265
- package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
- package/dist/swarm/ipfs-swarm.js +0 -508
- package/dist/swarm/ipfs-swarm.js.map +0 -1
- package/dist/swarm/p2p-free-swarm.d.ts +0 -344
- package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
- package/dist/swarm/p2p-free-swarm.js +0 -603
- package/dist/swarm/p2p-free-swarm.js.map +0 -1
- package/dist/swarm/real-p2p-swarm.d.ts +0 -183
- package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
- package/dist/swarm/real-p2p-swarm.js +0 -469
- package/dist/swarm/real-p2p-swarm.js.map +0 -1
- package/dist/utils/adaptive-pool-sizing.js +0 -414
- package/dist/utils/agentdbCommands.js +0 -175
- package/dist/utils/circular-rate-limiter.js +0 -391
- package/dist/utils/dynamic-compression.js +0 -298
- package/dist/utils/http2-multiplexing.js +0 -319
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -6
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/lazy-auth.js +0 -311
- package/dist/utils/model-cache.d.ts +0 -61
- package/dist/utils/model-cache.d.ts.map +0 -1
- package/dist/utils/model-cache.js +0 -176
- package/dist/utils/model-cache.js.map +0 -1
- package/dist/utils/server-push.js +0 -251
- package/dist/utils/suppress-warnings.d.ts +0 -19
- package/dist/utils/suppress-warnings.d.ts.map +0 -1
- package/dist/utils/suppress-warnings.js +0 -59
- package/dist/utils/suppress-warnings.js.map +0 -1
- package/dist/utils/zero-copy-buffer.js +0 -286
- package/dist/workers/consolidated-phases.d.ts +0 -40
- package/dist/workers/consolidated-phases.d.ts.map +0 -1
- package/dist/workers/consolidated-phases.js +0 -497
- package/dist/workers/consolidated-phases.js.map +0 -1
- package/dist/workers/custom-worker-config.d.ts +0 -133
- package/dist/workers/custom-worker-config.d.ts.map +0 -1
- package/dist/workers/custom-worker-config.js +0 -215
- package/dist/workers/custom-worker-config.js.map +0 -1
- package/dist/workers/custom-worker-factory.d.ts +0 -89
- package/dist/workers/custom-worker-factory.d.ts.map +0 -1
- package/dist/workers/custom-worker-factory.js +0 -404
- package/dist/workers/custom-worker-factory.js.map +0 -1
- package/dist/workers/dispatch-service.d.ts +0 -123
- package/dist/workers/dispatch-service.d.ts.map +0 -1
- package/dist/workers/dispatch-service.js +0 -1024
- package/dist/workers/dispatch-service.js.map +0 -1
- package/dist/workers/hooks-integration.d.ts +0 -79
- package/dist/workers/hooks-integration.d.ts.map +0 -1
- package/dist/workers/hooks-integration.js +0 -286
- package/dist/workers/hooks-integration.js.map +0 -1
- package/dist/workers/index.d.ts +0 -42
- package/dist/workers/index.d.ts.map +0 -1
- package/dist/workers/index.js +0 -52
- package/dist/workers/index.js.map +0 -1
- package/dist/workers/mcp-tools.d.ts +0 -56
- package/dist/workers/mcp-tools.d.ts.map +0 -1
- package/dist/workers/mcp-tools.js +0 -359
- package/dist/workers/mcp-tools.js.map +0 -1
- package/dist/workers/phase-executors.d.ts +0 -22
- package/dist/workers/phase-executors.d.ts.map +0 -1
- package/dist/workers/phase-executors.js +0 -445
- package/dist/workers/phase-executors.js.map +0 -1
- package/dist/workers/resource-governor.d.ts +0 -75
- package/dist/workers/resource-governor.d.ts.map +0 -1
- package/dist/workers/resource-governor.js +0 -187
- package/dist/workers/resource-governor.js.map +0 -1
- package/dist/workers/ruvector-integration.d.ts +0 -163
- package/dist/workers/ruvector-integration.d.ts.map +0 -1
- package/dist/workers/ruvector-integration.js +0 -543
- package/dist/workers/ruvector-integration.js.map +0 -1
- package/dist/workers/ruvector-native-integration.d.ts +0 -91
- package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
- package/dist/workers/ruvector-native-integration.js +0 -254
- package/dist/workers/ruvector-native-integration.js.map +0 -1
- package/dist/workers/trigger-detector.d.ts +0 -68
- package/dist/workers/trigger-detector.d.ts.map +0 -1
- package/dist/workers/trigger-detector.js +0 -281
- package/dist/workers/trigger-detector.js.map +0 -1
- package/dist/workers/types.d.ts +0 -145
- package/dist/workers/types.d.ts.map +0 -1
- package/dist/workers/types.js +0 -6
- package/dist/workers/types.js.map +0 -1
- package/dist/workers/worker-agent-integration.d.ts +0 -140
- package/dist/workers/worker-agent-integration.d.ts.map +0 -1
- package/dist/workers/worker-agent-integration.js +0 -471
- package/dist/workers/worker-agent-integration.js.map +0 -1
- package/dist/workers/worker-benchmarks.d.ts +0 -88
- package/dist/workers/worker-benchmarks.d.ts.map +0 -1
- package/dist/workers/worker-benchmarks.js +0 -452
- package/dist/workers/worker-benchmarks.js.map +0 -1
- package/dist/workers/worker-registry.d.ts +0 -85
- package/dist/workers/worker-registry.d.ts.map +0 -1
- package/dist/workers/worker-registry.js +0 -547
- package/dist/workers/worker-registry.js.map +0 -1
- package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
- package/docs/.claude-flow/metrics/performance.json +0 -87
- package/docs/.claude-flow/metrics/task-metrics.json +0 -10
- package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
- /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
- /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
- /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
- /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
- /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
- /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
- /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
- /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
- /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../../src/utils/model-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;gBAEZ,SAAS,GAAE,MAAY;IAInC;;OAEG;IACG,SAAS,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,YAAY,GAAE,MAAyB,GACtC,OAAO,CAAC,CAAC,CAAC;IA4Bb;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAUlC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,GAAE,MAAyB,GAAG,IAAI;IAW3E;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI,UAAU;IAoBtB;;OAEG;IACH,OAAO,CAAC,aAAa;CAuBtB;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC;AAG3C,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,CAgC1D;AAED,wBAAsB,6BAA6B,CACjD,IAAI,GAAE,MAA6B,EACnC,KAAK,GAAE,MAAkC,GACxC,OAAO,CAAC,GAAG,CAAC,CASd;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,CAS1D"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global Model Cache
|
|
3
|
-
*
|
|
4
|
-
* Caches loaded models in memory to avoid repeated initialization overhead.
|
|
5
|
-
* Supports ONNX embeddings, transformers.js pipelines, and other heavy models.
|
|
6
|
-
*/
|
|
7
|
-
class ModelCache {
|
|
8
|
-
cache = new Map();
|
|
9
|
-
maxSize; // Max cache size in bytes
|
|
10
|
-
totalHits = 0;
|
|
11
|
-
totalMisses = 0;
|
|
12
|
-
constructor(maxSizeMB = 512) {
|
|
13
|
-
this.maxSize = maxSizeMB * 1024 * 1024;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get a cached model or load it
|
|
17
|
-
*/
|
|
18
|
-
async getOrLoad(key, loader, sizeEstimate = 50 * 1024 * 1024 // Default 50MB estimate
|
|
19
|
-
) {
|
|
20
|
-
const cached = this.cache.get(key);
|
|
21
|
-
if (cached) {
|
|
22
|
-
cached.lastUsed = Date.now();
|
|
23
|
-
cached.useCount++;
|
|
24
|
-
this.totalHits++;
|
|
25
|
-
return cached.model;
|
|
26
|
-
}
|
|
27
|
-
this.totalMisses++;
|
|
28
|
-
// Evict if needed
|
|
29
|
-
this.evictIfNeeded(sizeEstimate);
|
|
30
|
-
// Load model
|
|
31
|
-
const model = await loader();
|
|
32
|
-
this.cache.set(key, {
|
|
33
|
-
model,
|
|
34
|
-
loadedAt: Date.now(),
|
|
35
|
-
lastUsed: Date.now(),
|
|
36
|
-
useCount: 1,
|
|
37
|
-
sizeEstimate
|
|
38
|
-
});
|
|
39
|
-
return model;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Check if model is cached
|
|
43
|
-
*/
|
|
44
|
-
has(key) {
|
|
45
|
-
return this.cache.has(key);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get cached model without loading
|
|
49
|
-
*/
|
|
50
|
-
get(key) {
|
|
51
|
-
const cached = this.cache.get(key);
|
|
52
|
-
if (cached) {
|
|
53
|
-
cached.lastUsed = Date.now();
|
|
54
|
-
cached.useCount++;
|
|
55
|
-
return cached.model;
|
|
56
|
-
}
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Manually cache a model
|
|
61
|
-
*/
|
|
62
|
-
set(key, model, sizeEstimate = 50 * 1024 * 1024) {
|
|
63
|
-
this.evictIfNeeded(sizeEstimate);
|
|
64
|
-
this.cache.set(key, {
|
|
65
|
-
model,
|
|
66
|
-
loadedAt: Date.now(),
|
|
67
|
-
lastUsed: Date.now(),
|
|
68
|
-
useCount: 1,
|
|
69
|
-
sizeEstimate
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Remove a model from cache
|
|
74
|
-
*/
|
|
75
|
-
delete(key) {
|
|
76
|
-
return this.cache.delete(key);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Clear all cached models
|
|
80
|
-
*/
|
|
81
|
-
clear() {
|
|
82
|
-
this.cache.clear();
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get cache statistics
|
|
86
|
-
*/
|
|
87
|
-
getStats() {
|
|
88
|
-
let totalSize = 0;
|
|
89
|
-
for (const cached of this.cache.values()) {
|
|
90
|
-
totalSize += cached.sizeEstimate;
|
|
91
|
-
}
|
|
92
|
-
const hits = this.totalHits;
|
|
93
|
-
const misses = this.totalMisses;
|
|
94
|
-
const total = hits + misses;
|
|
95
|
-
return {
|
|
96
|
-
models: this.cache.size,
|
|
97
|
-
totalSize,
|
|
98
|
-
size: this.cache.size,
|
|
99
|
-
totalHits: hits,
|
|
100
|
-
totalMisses: misses,
|
|
101
|
-
hits,
|
|
102
|
-
misses,
|
|
103
|
-
hitRate: total > 0 ? hits / total : 0
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Evict least recently used models if cache is full
|
|
108
|
-
*/
|
|
109
|
-
evictIfNeeded(newSize) {
|
|
110
|
-
let currentSize = 0;
|
|
111
|
-
for (const cached of this.cache.values()) {
|
|
112
|
-
currentSize += cached.sizeEstimate;
|
|
113
|
-
}
|
|
114
|
-
if (currentSize + newSize <= this.maxSize) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
// Sort by last used time (LRU)
|
|
118
|
-
const entries = Array.from(this.cache.entries())
|
|
119
|
-
.sort((a, b) => a[1].lastUsed - b[1].lastUsed);
|
|
120
|
-
// Evict until we have space
|
|
121
|
-
for (const [key, cached] of entries) {
|
|
122
|
-
if (currentSize + newSize <= this.maxSize) {
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
this.cache.delete(key);
|
|
126
|
-
currentSize -= cached.sizeEstimate;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// Global singleton
|
|
131
|
-
export const modelCache = new ModelCache();
|
|
132
|
-
// Convenience functions
|
|
133
|
-
export async function getCachedOnnxEmbedder() {
|
|
134
|
-
return modelCache.getOrLoad('onnx-embeddings', async () => {
|
|
135
|
-
// Suppress experimental warning for WASM
|
|
136
|
-
const originalEmit = process.emit;
|
|
137
|
-
// @ts-ignore
|
|
138
|
-
process.emit = function (name, data, ...args) {
|
|
139
|
-
if (name === 'warning' && typeof data === 'object' &&
|
|
140
|
-
data.name === 'ExperimentalWarning' &&
|
|
141
|
-
data.message?.includes('Import')) {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
// @ts-ignore
|
|
145
|
-
return originalEmit.apply(process, [name, data, ...args]);
|
|
146
|
-
};
|
|
147
|
-
try {
|
|
148
|
-
const onnxModule = await import('ruvector-onnx-embeddings-wasm');
|
|
149
|
-
const EmbedderClass = onnxModule.OnnxEmbeddings || onnxModule.default;
|
|
150
|
-
if (EmbedderClass) {
|
|
151
|
-
const embedder = new EmbedderClass();
|
|
152
|
-
await embedder.initialize?.();
|
|
153
|
-
return embedder;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
finally {
|
|
157
|
-
process.emit = originalEmit;
|
|
158
|
-
}
|
|
159
|
-
return null;
|
|
160
|
-
}, 100 * 1024 * 1024 // 100MB estimate for ONNX model
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
export async function getCachedTransformersPipeline(task = 'feature-extraction', model = 'Xenova/all-MiniLM-L6-v2') {
|
|
164
|
-
return modelCache.getOrLoad(`transformers:${task}:${model}`, async () => {
|
|
165
|
-
const { pipeline } = await import('@xenova/transformers');
|
|
166
|
-
return pipeline(task, model);
|
|
167
|
-
}, 200 * 1024 * 1024 // 200MB estimate for transformers model
|
|
168
|
-
);
|
|
169
|
-
}
|
|
170
|
-
export async function getCachedRuvectorCore() {
|
|
171
|
-
return modelCache.getOrLoad('ruvector-core', async () => {
|
|
172
|
-
const ruvector = await import('ruvector');
|
|
173
|
-
return ruvector;
|
|
174
|
-
}, 50 * 1024 * 1024);
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=model-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/utils/model-cache.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Global Model Cache\n *\n * Caches loaded models in memory to avoid repeated initialization overhead.\n * Supports ONNX embeddings, transformers.js pipelines, and other heavy models.\n */\n\ninterface CachedModel {\n model: any;\n loadedAt: number;\n lastUsed: number;\n useCount: number;\n sizeEstimate: number; // bytes\n}\n\ninterface CacheStats {\n models: number;\n totalSize: number;\n size?: number;\n totalHits: number;\n totalMisses: number;\n hits: number;\n misses: number;\n hitRate: number;\n}\n\nclass ModelCache {\n private cache = new Map<string, CachedModel>();\n private maxSize: number; // Max cache size in bytes\n private totalHits = 0;\n private totalMisses = 0;\n\n constructor(maxSizeMB: number = 512) {\n this.maxSize = maxSizeMB * 1024 * 1024;\n }\n\n /**\n * Get a cached model or load it\n */\n async getOrLoad<T>(\n key: string,\n loader: () => Promise<T>,\n sizeEstimate: number = 50 * 1024 * 1024 // Default 50MB estimate\n ): Promise<T> {\n const cached = this.cache.get(key);\n if (cached) {\n cached.lastUsed = Date.now();\n cached.useCount++;\n this.totalHits++;\n return cached.model as T;\n }\n\n this.totalMisses++;\n\n // Evict if needed\n this.evictIfNeeded(sizeEstimate);\n\n // Load model\n const model = await loader();\n\n this.cache.set(key, {\n model,\n loadedAt: Date.now(),\n lastUsed: Date.now(),\n useCount: 1,\n sizeEstimate\n });\n\n return model;\n }\n\n /**\n * Check if model is cached\n */\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n /**\n * Get cached model without loading\n */\n get<T>(key: string): T | undefined {\n const cached = this.cache.get(key);\n if (cached) {\n cached.lastUsed = Date.now();\n cached.useCount++;\n return cached.model as T;\n }\n return undefined;\n }\n\n /**\n * Manually cache a model\n */\n set(key: string, model: any, sizeEstimate: number = 50 * 1024 * 1024): void {\n this.evictIfNeeded(sizeEstimate);\n this.cache.set(key, {\n model,\n loadedAt: Date.now(),\n lastUsed: Date.now(),\n useCount: 1,\n sizeEstimate\n });\n }\n\n /**\n * Remove a model from cache\n */\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n /**\n * Clear all cached models\n */\n clear(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n let totalSize = 0;\n for (const cached of this.cache.values()) {\n totalSize += cached.sizeEstimate;\n }\n const hits = this.totalHits;\n const misses = this.totalMisses;\n const total = hits + misses;\n return {\n models: this.cache.size,\n totalSize,\n size: this.cache.size,\n totalHits: hits,\n totalMisses: misses,\n hits,\n misses,\n hitRate: total > 0 ? hits / total : 0\n };\n }\n\n /**\n * Evict least recently used models if cache is full\n */\n private evictIfNeeded(newSize: number): void {\n let currentSize = 0;\n for (const cached of this.cache.values()) {\n currentSize += cached.sizeEstimate;\n }\n\n if (currentSize + newSize <= this.maxSize) {\n return;\n }\n\n // Sort by last used time (LRU)\n const entries = Array.from(this.cache.entries())\n .sort((a, b) => a[1].lastUsed - b[1].lastUsed);\n\n // Evict until we have space\n for (const [key, cached] of entries) {\n if (currentSize + newSize <= this.maxSize) {\n break;\n }\n this.cache.delete(key);\n currentSize -= cached.sizeEstimate;\n }\n }\n}\n\n// Global singleton\nexport const modelCache = new ModelCache();\n\n// Convenience functions\nexport async function getCachedOnnxEmbedder(): Promise<any> {\n return modelCache.getOrLoad(\n 'onnx-embeddings',\n async () => {\n // Suppress experimental warning for WASM\n const originalEmit = process.emit;\n // @ts-ignore\n process.emit = function (name, data, ...args) {\n if (name === 'warning' && typeof data === 'object' &&\n (data as any).name === 'ExperimentalWarning' &&\n (data as any).message?.includes('Import')) {\n return false;\n }\n // @ts-ignore\n return originalEmit.apply(process, [name, data, ...args]);\n };\n\n try {\n const onnxModule = await import('ruvector-onnx-embeddings-wasm') as any;\n const EmbedderClass = onnxModule.OnnxEmbeddings || onnxModule.default;\n if (EmbedderClass) {\n const embedder = new EmbedderClass();\n await embedder.initialize?.();\n return embedder;\n }\n } finally {\n process.emit = originalEmit;\n }\n return null;\n },\n 100 * 1024 * 1024 // 100MB estimate for ONNX model\n );\n}\n\nexport async function getCachedTransformersPipeline(\n task: string = 'feature-extraction',\n model: string = 'Xenova/all-MiniLM-L6-v2'\n): Promise<any> {\n return modelCache.getOrLoad(\n `transformers:${task}:${model}`,\n async () => {\n const { pipeline } = await import('@xenova/transformers');\n return pipeline(task as any, model);\n },\n 200 * 1024 * 1024 // 200MB estimate for transformers model\n );\n}\n\nexport async function getCachedRuvectorCore(): Promise<any> {\n return modelCache.getOrLoad(\n 'ruvector-core',\n async () => {\n const ruvector = await import('ruvector');\n return ruvector;\n },\n 50 * 1024 * 1024\n );\n}\n"]}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP/2 Server Push Implementation
|
|
3
|
-
* Predictively pushes related resources to reduce latency
|
|
4
|
-
* Phase 2 Optimization
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Server Push Manager
|
|
8
|
-
* Manages HTTP/2 server push for predictive resource delivery
|
|
9
|
-
*/
|
|
10
|
-
export class ServerPushManager {
|
|
11
|
-
config;
|
|
12
|
-
pushRules;
|
|
13
|
-
pushStats;
|
|
14
|
-
activePushes = 0;
|
|
15
|
-
constructor(config) {
|
|
16
|
-
this.config = {
|
|
17
|
-
enabled: config.enabled,
|
|
18
|
-
maxConcurrentPushes: config.maxConcurrentPushes || 5,
|
|
19
|
-
pushDelay: config.pushDelay || 0,
|
|
20
|
-
intelligentPrediction: config.intelligentPrediction !== false
|
|
21
|
-
};
|
|
22
|
-
this.pushRules = new Map();
|
|
23
|
-
this.pushStats = new Map();
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Register a push rule
|
|
27
|
-
*/
|
|
28
|
-
registerRule(id, rule) {
|
|
29
|
-
this.pushRules.set(id, rule);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Unregister a push rule
|
|
33
|
-
*/
|
|
34
|
-
unregisterRule(id) {
|
|
35
|
-
this.pushRules.delete(id);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Perform server push for a stream
|
|
39
|
-
*/
|
|
40
|
-
async push(stream, path, headers) {
|
|
41
|
-
if (!this.config.enabled)
|
|
42
|
-
return;
|
|
43
|
-
if (this.activePushes >= this.config.maxConcurrentPushes)
|
|
44
|
-
return;
|
|
45
|
-
// Find matching rules
|
|
46
|
-
const matchingRules = this.findMatchingRules(path, headers);
|
|
47
|
-
for (const rule of matchingRules) {
|
|
48
|
-
for (const resource of rule.resources) {
|
|
49
|
-
await this.pushResource(stream, resource);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Push a single resource
|
|
55
|
-
*/
|
|
56
|
-
async pushResource(stream, resource) {
|
|
57
|
-
if (this.activePushes >= this.config.maxConcurrentPushes)
|
|
58
|
-
return;
|
|
59
|
-
return new Promise((resolve, reject) => {
|
|
60
|
-
this.activePushes++;
|
|
61
|
-
const pushHeaders = {
|
|
62
|
-
':path': resource.path,
|
|
63
|
-
...resource.headers
|
|
64
|
-
};
|
|
65
|
-
try {
|
|
66
|
-
stream.pushStream(pushHeaders, (err, pushStream) => {
|
|
67
|
-
if (err) {
|
|
68
|
-
this.activePushes--;
|
|
69
|
-
reject(err);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Set priority if specified
|
|
73
|
-
if (resource.priority !== undefined) {
|
|
74
|
-
pushStream.priority({
|
|
75
|
-
weight: resource.priority,
|
|
76
|
-
exclusive: false
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
pushStream.on('finish', () => {
|
|
80
|
-
this.activePushes--;
|
|
81
|
-
this.recordPush(resource.path);
|
|
82
|
-
});
|
|
83
|
-
pushStream.on('error', () => {
|
|
84
|
-
this.activePushes--;
|
|
85
|
-
});
|
|
86
|
-
// Write the resource (in real implementation, fetch from cache/disk)
|
|
87
|
-
pushStream.respond({
|
|
88
|
-
':status': 200,
|
|
89
|
-
'content-type': this.getContentType(resource.path)
|
|
90
|
-
});
|
|
91
|
-
pushStream.end();
|
|
92
|
-
resolve();
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
this.activePushes--;
|
|
97
|
-
reject(error);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Find rules matching the current request
|
|
103
|
-
*/
|
|
104
|
-
findMatchingRules(path, headers) {
|
|
105
|
-
const matches = [];
|
|
106
|
-
for (const [, rule] of this.pushRules) {
|
|
107
|
-
// Check trigger match
|
|
108
|
-
const triggerMatch = typeof rule.trigger === 'string'
|
|
109
|
-
? path.includes(rule.trigger)
|
|
110
|
-
: rule.trigger.test(path);
|
|
111
|
-
if (!triggerMatch)
|
|
112
|
-
continue;
|
|
113
|
-
// Check condition if present
|
|
114
|
-
if (rule.condition && !rule.condition(headers))
|
|
115
|
-
continue;
|
|
116
|
-
matches.push(rule);
|
|
117
|
-
}
|
|
118
|
-
return matches;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Record push statistics
|
|
122
|
-
*/
|
|
123
|
-
recordPush(path) {
|
|
124
|
-
const count = this.pushStats.get(path) || 0;
|
|
125
|
-
this.pushStats.set(path, count + 1);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Get content type for a path
|
|
129
|
-
*/
|
|
130
|
-
getContentType(path) {
|
|
131
|
-
const ext = path.split('.').pop()?.toLowerCase();
|
|
132
|
-
const types = {
|
|
133
|
-
'js': 'application/javascript',
|
|
134
|
-
'css': 'text/css',
|
|
135
|
-
'json': 'application/json',
|
|
136
|
-
'png': 'image/png',
|
|
137
|
-
'jpg': 'image/jpeg',
|
|
138
|
-
'jpeg': 'image/jpeg',
|
|
139
|
-
'gif': 'image/gif',
|
|
140
|
-
'svg': 'image/svg+xml',
|
|
141
|
-
'html': 'text/html',
|
|
142
|
-
'txt': 'text/plain'
|
|
143
|
-
};
|
|
144
|
-
return types[ext || ''] || 'application/octet-stream';
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get push statistics
|
|
148
|
-
*/
|
|
149
|
-
getStats() {
|
|
150
|
-
return {
|
|
151
|
-
activePushes: this.activePushes,
|
|
152
|
-
totalPushes: Array.from(this.pushStats.values()).reduce((a, b) => a + b, 0),
|
|
153
|
-
pushCounts: new Map(this.pushStats)
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Clear statistics
|
|
158
|
-
*/
|
|
159
|
-
clearStats() {
|
|
160
|
-
this.pushStats.clear();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Predefined push rules for common patterns
|
|
165
|
-
*/
|
|
166
|
-
export const CommonPushRules = {
|
|
167
|
-
/**
|
|
168
|
-
* Push API schema when main API endpoint is accessed
|
|
169
|
-
*/
|
|
170
|
-
apiSchema: {
|
|
171
|
-
trigger: /^\/api\/v1\//,
|
|
172
|
-
resources: [
|
|
173
|
-
{ path: '/api/v1/schema.json', priority: 10 }
|
|
174
|
-
]
|
|
175
|
-
},
|
|
176
|
-
/**
|
|
177
|
-
* Push authentication assets
|
|
178
|
-
*/
|
|
179
|
-
authAssets: {
|
|
180
|
-
trigger: '/auth',
|
|
181
|
-
resources: [
|
|
182
|
-
{ path: '/auth/login.js', priority: 15 },
|
|
183
|
-
{ path: '/auth/styles.css', priority: 10 }
|
|
184
|
-
]
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
/**
|
|
188
|
-
* Intelligent push predictor
|
|
189
|
-
* Learns from access patterns to predict what to push
|
|
190
|
-
*/
|
|
191
|
-
export class IntelligentPushPredictor {
|
|
192
|
-
accessPatterns = new Map();
|
|
193
|
-
confidence = new Map();
|
|
194
|
-
/**
|
|
195
|
-
* Record an access pattern
|
|
196
|
-
*/
|
|
197
|
-
recordAccess(primary, secondary) {
|
|
198
|
-
// Record that secondary was accessed after primary
|
|
199
|
-
if (!this.accessPatterns.has(primary)) {
|
|
200
|
-
this.accessPatterns.set(primary, new Set());
|
|
201
|
-
}
|
|
202
|
-
this.accessPatterns.get(primary).add(secondary);
|
|
203
|
-
// Update confidence scores
|
|
204
|
-
if (!this.confidence.has(primary)) {
|
|
205
|
-
this.confidence.set(primary, new Map());
|
|
206
|
-
}
|
|
207
|
-
const scores = this.confidence.get(primary);
|
|
208
|
-
scores.set(secondary, (scores.get(secondary) || 0) + 1);
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Predict resources to push based on confidence
|
|
212
|
-
*/
|
|
213
|
-
predict(path, minConfidence = 0.7) {
|
|
214
|
-
const patterns = this.accessPatterns.get(path);
|
|
215
|
-
if (!patterns)
|
|
216
|
-
return [];
|
|
217
|
-
const scores = this.confidence.get(path);
|
|
218
|
-
if (!scores)
|
|
219
|
-
return [];
|
|
220
|
-
const total = Array.from(scores.values()).reduce((a, b) => a + b, 0);
|
|
221
|
-
const predictions = [];
|
|
222
|
-
for (const [resource, count] of scores) {
|
|
223
|
-
const confidence = count / total;
|
|
224
|
-
if (confidence >= minConfidence) {
|
|
225
|
-
predictions.push({
|
|
226
|
-
path: resource,
|
|
227
|
-
priority: Math.round(confidence * 20) // 0-20 priority based on confidence
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return predictions.sort((a, b) => (b.priority || 0) - (a.priority || 0));
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Get statistics
|
|
235
|
-
*/
|
|
236
|
-
getStats() {
|
|
237
|
-
let totalConfidence = 0;
|
|
238
|
-
let count = 0;
|
|
239
|
-
for (const scores of this.confidence.values()) {
|
|
240
|
-
const total = Array.from(scores.values()).reduce((a, b) => a + b, 0);
|
|
241
|
-
for (const score of scores.values()) {
|
|
242
|
-
totalConfidence += score / total;
|
|
243
|
-
count++;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return {
|
|
247
|
-
totalPatterns: this.accessPatterns.size,
|
|
248
|
-
averageConfidence: count > 0 ? totalConfidence / count : 0
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warning Suppression Utilities
|
|
3
|
-
*
|
|
4
|
-
* Suppresses noisy warnings like ExperimentalWarning for WASM imports
|
|
5
|
-
* while preserving important warnings.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Suppress experimental warnings for WASM module imports
|
|
9
|
-
*/
|
|
10
|
-
export declare function suppressExperimentalWarnings(): void;
|
|
11
|
-
/**
|
|
12
|
-
* Run a function with warnings suppressed
|
|
13
|
-
*/
|
|
14
|
-
export declare function withSuppressedWarnings<T>(fn: () => Promise<T>): Promise<T>;
|
|
15
|
-
/**
|
|
16
|
-
* Import a module with experimental warnings suppressed
|
|
17
|
-
*/
|
|
18
|
-
export declare function quietImport<T>(modulePath: string): Promise<T>;
|
|
19
|
-
//# sourceMappingURL=suppress-warnings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suppress-warnings.d.ts","sourceRoot":"","sources":["../../src/utils/suppress-warnings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAmCnD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAGhF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGnE"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Warning Suppression Utilities
|
|
3
|
-
*
|
|
4
|
-
* Suppresses noisy warnings like ExperimentalWarning for WASM imports
|
|
5
|
-
* while preserving important warnings.
|
|
6
|
-
*/
|
|
7
|
-
let warningsSetup = false;
|
|
8
|
-
/**
|
|
9
|
-
* Suppress experimental warnings for WASM module imports
|
|
10
|
-
*/
|
|
11
|
-
export function suppressExperimentalWarnings() {
|
|
12
|
-
if (warningsSetup)
|
|
13
|
-
return;
|
|
14
|
-
warningsSetup = true;
|
|
15
|
-
const originalEmit = process.emit.bind(process);
|
|
16
|
-
// @ts-ignore - Override emit to filter warnings
|
|
17
|
-
process.emit = function (event, ...args) {
|
|
18
|
-
if (event === 'warning') {
|
|
19
|
-
const warning = args[0];
|
|
20
|
-
if (warning && typeof warning === 'object') {
|
|
21
|
-
const name = warning.name;
|
|
22
|
-
const message = warning.message || '';
|
|
23
|
-
// Suppress ExperimentalWarning for import assertions/attributes
|
|
24
|
-
if (name === 'ExperimentalWarning') {
|
|
25
|
-
if (message.includes('Import') ||
|
|
26
|
-
message.includes('import.meta') ||
|
|
27
|
-
message.includes('--experimental')) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Suppress noisy deprecation warnings from dependencies
|
|
32
|
-
if (name === 'DeprecationWarning') {
|
|
33
|
-
if (message.includes('punycode') ||
|
|
34
|
-
message.includes('Buffer()')) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return originalEmit(event, ...args);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Run a function with warnings suppressed
|
|
45
|
-
*/
|
|
46
|
-
export async function withSuppressedWarnings(fn) {
|
|
47
|
-
suppressExperimentalWarnings();
|
|
48
|
-
return fn();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Import a module with experimental warnings suppressed
|
|
52
|
-
*/
|
|
53
|
-
export async function quietImport(modulePath) {
|
|
54
|
-
suppressExperimentalWarnings();
|
|
55
|
-
return import(modulePath);
|
|
56
|
-
}
|
|
57
|
-
// Auto-setup on module load
|
|
58
|
-
suppressExperimentalWarnings();
|
|
59
|
-
//# sourceMappingURL=suppress-warnings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suppress-warnings.js","sourceRoot":"","sources":["../../src/utils/suppress-warnings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,IAAI,aAAa;QAAE,OAAO;IAC1B,aAAa,GAAG,IAAI,CAAC;IAErB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhD,gDAAgD;IAChD,OAAO,CAAC,IAAI,GAAG,UAAU,KAAa,EAAE,GAAG,IAAW;QACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAI,OAAe,CAAC,IAAI,CAAC;gBACnC,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,IAAI,EAAE,CAAC;gBAE/C,gEAAgE;gBAChE,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;wBAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACvC,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;gBAED,wDAAwD;gBACxD,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjC,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAI,EAAoB;IAClE,4BAA4B,EAAE,CAAC;IAC/B,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,UAAkB;IACrD,4BAA4B,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,UAAU,CAAe,CAAC;AAC1C,CAAC;AAED,4BAA4B;AAC5B,4BAA4B,EAAE,CAAC","sourcesContent":["/**\n * Warning Suppression Utilities\n *\n * Suppresses noisy warnings like ExperimentalWarning for WASM imports\n * while preserving important warnings.\n */\n\nlet warningsSetup = false;\n\n/**\n * Suppress experimental warnings for WASM module imports\n */\nexport function suppressExperimentalWarnings(): void {\n if (warningsSetup) return;\n warningsSetup = true;\n\n const originalEmit = process.emit.bind(process);\n\n // @ts-ignore - Override emit to filter warnings\n process.emit = function (event: string, ...args: any[]): boolean {\n if (event === 'warning') {\n const warning = args[0];\n if (warning && typeof warning === 'object') {\n const name = (warning as any).name;\n const message = (warning as any).message || '';\n\n // Suppress ExperimentalWarning for import assertions/attributes\n if (name === 'ExperimentalWarning') {\n if (message.includes('Import') ||\n message.includes('import.meta') ||\n message.includes('--experimental')) {\n return false;\n }\n }\n\n // Suppress noisy deprecation warnings from dependencies\n if (name === 'DeprecationWarning') {\n if (message.includes('punycode') ||\n message.includes('Buffer()')) {\n return false;\n }\n }\n }\n }\n\n return originalEmit(event, ...args);\n };\n}\n\n/**\n * Run a function with warnings suppressed\n */\nexport async function withSuppressedWarnings<T>(fn: () => Promise<T>): Promise<T> {\n suppressExperimentalWarnings();\n return fn();\n}\n\n/**\n * Import a module with experimental warnings suppressed\n */\nexport async function quietImport<T>(modulePath: string): Promise<T> {\n suppressExperimentalWarnings();\n return import(modulePath) as Promise<T>;\n}\n\n// Auto-setup on module load\nsuppressExperimentalWarnings();\n"]}
|