agentic-qe 3.2.2 → 3.3.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/.claude/agents/v3/qe-accessibility-auditor.md +90 -0
- package/.claude/helpers/github-safe.js +10 -10
- package/README.md +43 -5
- package/package.json +4 -2
- package/scripts/cloud-db-config.json +37 -0
- package/scripts/cloud-db-connect.sh +37 -0
- package/scripts/cloud-db-tunnel.sh +23 -0
- package/v3/CHANGELOG.md +165 -0
- package/v3/README.md +59 -1
- package/v3/assets/agents/v3/qe-accessibility-auditor.md +90 -0
- package/v3/dist/adapters/claude-flow/index.d.ts +54 -0
- package/v3/dist/adapters/claude-flow/index.d.ts.map +1 -0
- package/v3/dist/adapters/claude-flow/index.js +79 -0
- package/v3/dist/adapters/claude-flow/index.js.map +1 -0
- package/v3/dist/adapters/claude-flow/model-router-bridge.d.ts +70 -0
- package/v3/dist/adapters/claude-flow/model-router-bridge.d.ts.map +1 -0
- package/v3/dist/adapters/claude-flow/model-router-bridge.js +203 -0
- package/v3/dist/adapters/claude-flow/model-router-bridge.js.map +1 -0
- package/v3/dist/adapters/claude-flow/pretrain-bridge.d.ts +73 -0
- package/v3/dist/adapters/claude-flow/pretrain-bridge.d.ts.map +1 -0
- package/v3/dist/adapters/claude-flow/pretrain-bridge.js +276 -0
- package/v3/dist/adapters/claude-flow/pretrain-bridge.js.map +1 -0
- package/v3/dist/adapters/claude-flow/trajectory-bridge.d.ts +70 -0
- package/v3/dist/adapters/claude-flow/trajectory-bridge.d.ts.map +1 -0
- package/v3/dist/adapters/claude-flow/trajectory-bridge.js +205 -0
- package/v3/dist/adapters/claude-flow/trajectory-bridge.js.map +1 -0
- package/v3/dist/adapters/claude-flow/types.d.ts +99 -0
- package/v3/dist/adapters/claude-flow/types.d.ts.map +1 -0
- package/v3/dist/adapters/claude-flow/types.js +6 -0
- package/v3/dist/adapters/claude-flow/types.js.map +1 -0
- package/v3/dist/causal-discovery/causal-graph.d.ts +80 -1
- package/v3/dist/causal-discovery/causal-graph.d.ts.map +1 -1
- package/v3/dist/causal-discovery/causal-graph.js +111 -1
- package/v3/dist/causal-discovery/causal-graph.js.map +1 -1
- package/v3/dist/cli/bundle.js +12486 -5503
- package/v3/dist/cli/commands/claude-flow-setup.d.ts +82 -0
- package/v3/dist/cli/commands/claude-flow-setup.d.ts.map +1 -0
- package/v3/dist/cli/commands/claude-flow-setup.js +334 -0
- package/v3/dist/cli/commands/claude-flow-setup.js.map +1 -0
- package/v3/dist/cli/commands/hooks.d.ts +2 -0
- package/v3/dist/cli/commands/hooks.d.ts.map +1 -1
- package/v3/dist/cli/commands/hooks.js +13 -2
- package/v3/dist/cli/commands/hooks.js.map +1 -1
- package/v3/dist/cli/commands/init.d.ts +19 -0
- package/v3/dist/cli/commands/init.d.ts.map +1 -0
- package/v3/dist/cli/commands/init.js +345 -0
- package/v3/dist/cli/commands/init.js.map +1 -0
- package/v3/dist/cli/index.js +110 -2
- package/v3/dist/cli/index.js.map +1 -1
- package/v3/dist/coordination/cross-domain-router.d.ts.map +1 -1
- package/v3/dist/coordination/cross-domain-router.js +2 -0
- package/v3/dist/coordination/cross-domain-router.js.map +1 -1
- package/v3/dist/coordination/mincut/interfaces.d.ts +8 -2
- package/v3/dist/coordination/mincut/interfaces.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/interfaces.js.map +1 -1
- package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts +5 -0
- package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/mincut-health-monitor.js +22 -4
- package/v3/dist/coordination/mincut/mincut-health-monitor.js.map +1 -1
- package/v3/dist/coordination/mincut/queen-integration.d.ts +4 -0
- package/v3/dist/coordination/mincut/queen-integration.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/queen-integration.js +14 -1
- package/v3/dist/coordination/mincut/queen-integration.js.map +1 -1
- package/v3/dist/coordination/queen-coordinator.d.ts +5 -0
- package/v3/dist/coordination/queen-coordinator.d.ts.map +1 -1
- package/v3/dist/coordination/queen-coordinator.js +45 -7
- package/v3/dist/coordination/queen-coordinator.js.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.d.ts +5 -0
- package/v3/dist/domains/learning-optimization/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.js +79 -0
- package/v3/dist/domains/learning-optimization/coordinator.js.map +1 -1
- package/v3/dist/domains/security-compliance/services/semgrep-integration.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/semgrep-integration.js +16 -12
- package/v3/dist/domains/security-compliance/services/semgrep-integration.js.map +1 -1
- package/v3/dist/domains/test-execution/services/e2e-runner.d.ts +1 -0
- package/v3/dist/domains/test-execution/services/e2e-runner.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/e2e-runner.js +9 -12
- package/v3/dist/domains/test-execution/services/e2e-runner.js.map +1 -1
- package/v3/dist/domains/test-generation/coherence-gate.d.ts +245 -0
- package/v3/dist/domains/test-generation/coherence-gate.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/coherence-gate.js +454 -0
- package/v3/dist/domains/test-generation/coherence-gate.js.map +1 -0
- package/v3/dist/domains/test-generation/coordinator.d.ts +32 -1
- package/v3/dist/domains/test-generation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.js +70 -1
- package/v3/dist/domains/test-generation/coordinator.js.map +1 -1
- package/v3/dist/domains/test-generation/index.d.ts +1 -0
- package/v3/dist/domains/test-generation/index.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/index.js +4 -0
- package/v3/dist/domains/test-generation/index.js.map +1 -1
- package/v3/dist/domains/test-generation/services/index.d.ts +1 -0
- package/v3/dist/domains/test-generation/services/index.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/index.js +2 -0
- package/v3/dist/domains/test-generation/services/index.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/index.d.ts +2 -1
- package/v3/dist/domains/visual-accessibility/index.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/index.js +1 -0
- package/v3/dist/domains/visual-accessibility/index.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/interfaces.d.ts +131 -0
- package/v3/dist/domains/visual-accessibility/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.d.ts +26 -0
- package/v3/dist/domains/visual-accessibility/plugin.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.js +151 -0
- package/v3/dist/domains/visual-accessibility/plugin.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +42 -1
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.js +69 -0
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/eu-compliance.d.ts +138 -0
- package/v3/dist/domains/visual-accessibility/services/eu-compliance.d.ts.map +1 -0
- package/v3/dist/domains/visual-accessibility/services/eu-compliance.js +830 -0
- package/v3/dist/domains/visual-accessibility/services/eu-compliance.js.map +1 -0
- package/v3/dist/domains/visual-accessibility/services/index.d.ts +1 -0
- package/v3/dist/domains/visual-accessibility/services/index.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/index.js +1 -0
- package/v3/dist/domains/visual-accessibility/services/index.js.map +1 -1
- package/v3/dist/init/enhancements/claude-flow-adapter.d.ts +84 -0
- package/v3/dist/init/enhancements/claude-flow-adapter.d.ts.map +1 -0
- package/v3/dist/init/enhancements/claude-flow-adapter.js +250 -0
- package/v3/dist/init/enhancements/claude-flow-adapter.js.map +1 -0
- package/v3/dist/init/enhancements/detector.d.ts +10 -0
- package/v3/dist/init/enhancements/detector.d.ts.map +1 -0
- package/v3/dist/init/enhancements/detector.js +87 -0
- package/v3/dist/init/enhancements/detector.js.map +1 -0
- package/v3/dist/init/enhancements/index.d.ts +13 -0
- package/v3/dist/init/enhancements/index.d.ts.map +1 -0
- package/v3/dist/init/enhancements/index.js +25 -0
- package/v3/dist/init/enhancements/index.js.map +1 -0
- package/v3/dist/init/enhancements/types.d.ts +93 -0
- package/v3/dist/init/enhancements/types.d.ts.map +1 -0
- package/v3/dist/init/enhancements/types.js +6 -0
- package/v3/dist/init/enhancements/types.js.map +1 -0
- package/v3/dist/init/index.d.ts +8 -0
- package/v3/dist/init/index.d.ts.map +1 -1
- package/v3/dist/init/index.js +4 -0
- package/v3/dist/init/index.js.map +1 -1
- package/v3/dist/init/migration/config-migrator.d.ts +31 -0
- package/v3/dist/init/migration/config-migrator.d.ts.map +1 -0
- package/v3/dist/init/migration/config-migrator.js +133 -0
- package/v3/dist/init/migration/config-migrator.js.map +1 -0
- package/v3/dist/init/migration/data-migrator.d.ts +72 -0
- package/v3/dist/init/migration/data-migrator.d.ts.map +1 -0
- package/v3/dist/init/migration/data-migrator.js +233 -0
- package/v3/dist/init/migration/data-migrator.js.map +1 -0
- package/v3/dist/init/migration/detector.d.ts +44 -0
- package/v3/dist/init/migration/detector.d.ts.map +1 -0
- package/v3/dist/init/migration/detector.js +106 -0
- package/v3/dist/init/migration/detector.js.map +1 -0
- package/v3/dist/init/migration/index.d.ts +8 -0
- package/v3/dist/init/migration/index.d.ts.map +1 -0
- package/v3/dist/init/migration/index.js +8 -0
- package/v3/dist/init/migration/index.js.map +1 -0
- package/v3/dist/init/orchestrator.d.ts +68 -0
- package/v3/dist/init/orchestrator.d.ts.map +1 -0
- package/v3/dist/init/orchestrator.js +239 -0
- package/v3/dist/init/orchestrator.js.map +1 -0
- package/v3/dist/init/phases/01-detection.d.ts +30 -0
- package/v3/dist/init/phases/01-detection.d.ts.map +1 -0
- package/v3/dist/init/phases/01-detection.js +143 -0
- package/v3/dist/init/phases/01-detection.js.map +1 -0
- package/v3/dist/init/phases/02-analysis.d.ts +18 -0
- package/v3/dist/init/phases/02-analysis.d.ts.map +1 -0
- package/v3/dist/init/phases/02-analysis.js +28 -0
- package/v3/dist/init/phases/02-analysis.js.map +1 -0
- package/v3/dist/init/phases/03-configuration.d.ts +26 -0
- package/v3/dist/init/phases/03-configuration.d.ts.map +1 -0
- package/v3/dist/init/phases/03-configuration.js +98 -0
- package/v3/dist/init/phases/03-configuration.js.map +1 -0
- package/v3/dist/init/phases/04-database.d.ts +22 -0
- package/v3/dist/init/phases/04-database.d.ts.map +1 -0
- package/v3/dist/init/phases/04-database.js +88 -0
- package/v3/dist/init/phases/04-database.js.map +1 -0
- package/v3/dist/init/phases/05-learning.d.ts +28 -0
- package/v3/dist/init/phases/05-learning.d.ts.map +1 -0
- package/v3/dist/init/phases/05-learning.js +98 -0
- package/v3/dist/init/phases/05-learning.js.map +1 -0
- package/v3/dist/init/phases/06-code-intelligence.d.ts +33 -0
- package/v3/dist/init/phases/06-code-intelligence.d.ts.map +1 -0
- package/v3/dist/init/phases/06-code-intelligence.js +115 -0
- package/v3/dist/init/phases/06-code-intelligence.js.map +1 -0
- package/v3/dist/init/phases/07-hooks.d.ts +27 -0
- package/v3/dist/init/phases/07-hooks.d.ts.map +1 -0
- package/v3/dist/init/phases/07-hooks.js +209 -0
- package/v3/dist/init/phases/07-hooks.js.map +1 -0
- package/v3/dist/init/phases/08-mcp.d.ts +22 -0
- package/v3/dist/init/phases/08-mcp.d.ts.map +1 -0
- package/v3/dist/init/phases/08-mcp.js +62 -0
- package/v3/dist/init/phases/08-mcp.js.map +1 -0
- package/v3/dist/init/phases/09-assets.d.ts +23 -0
- package/v3/dist/init/phases/09-assets.d.ts.map +1 -0
- package/v3/dist/init/phases/09-assets.js +82 -0
- package/v3/dist/init/phases/09-assets.js.map +1 -0
- package/v3/dist/init/phases/10-workers.d.ts +23 -0
- package/v3/dist/init/phases/10-workers.d.ts.map +1 -0
- package/v3/dist/init/phases/10-workers.js +111 -0
- package/v3/dist/init/phases/10-workers.js.map +1 -0
- package/v3/dist/init/phases/11-claude-md.d.ts +26 -0
- package/v3/dist/init/phases/11-claude-md.d.ts.map +1 -0
- package/v3/dist/init/phases/11-claude-md.js +121 -0
- package/v3/dist/init/phases/11-claude-md.js.map +1 -0
- package/v3/dist/init/phases/12-verification.d.ts +38 -0
- package/v3/dist/init/phases/12-verification.d.ts.map +1 -0
- package/v3/dist/init/phases/12-verification.js +187 -0
- package/v3/dist/init/phases/12-verification.js.map +1 -0
- package/v3/dist/init/phases/index.d.ts +46 -0
- package/v3/dist/init/phases/index.d.ts.map +1 -0
- package/v3/dist/init/phases/index.js +64 -0
- package/v3/dist/init/phases/index.js.map +1 -0
- package/v3/dist/init/phases/phase-interface.d.ts +193 -0
- package/v3/dist/init/phases/phase-interface.d.ts.map +1 -0
- package/v3/dist/init/phases/phase-interface.js +119 -0
- package/v3/dist/init/phases/phase-interface.js.map +1 -0
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +9 -3
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +103 -26
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js.map +1 -1
- package/v3/dist/integrations/coherence/coherence-service.d.ts +323 -0
- package/v3/dist/integrations/coherence/coherence-service.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/coherence-service.js +799 -0
- package/v3/dist/integrations/coherence/coherence-service.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/category-adapter.d.ts +170 -0
- package/v3/dist/integrations/coherence/engines/category-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/category-adapter.js +403 -0
- package/v3/dist/integrations/coherence/engines/category-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/causal-adapter.d.ts +159 -0
- package/v3/dist/integrations/coherence/engines/causal-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/causal-adapter.js +348 -0
- package/v3/dist/integrations/coherence/engines/causal-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/cohomology-adapter.d.ts +174 -0
- package/v3/dist/integrations/coherence/engines/cohomology-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/cohomology-adapter.js +401 -0
- package/v3/dist/integrations/coherence/engines/cohomology-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/homotopy-adapter.d.ts +201 -0
- package/v3/dist/integrations/coherence/engines/homotopy-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/homotopy-adapter.js +324 -0
- package/v3/dist/integrations/coherence/engines/homotopy-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/index.d.ts +20 -0
- package/v3/dist/integrations/coherence/engines/index.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/index.js +26 -0
- package/v3/dist/integrations/coherence/engines/index.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/spectral-adapter.d.ts +193 -0
- package/v3/dist/integrations/coherence/engines/spectral-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/spectral-adapter.js +476 -0
- package/v3/dist/integrations/coherence/engines/spectral-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/engines/witness-adapter.d.ts +175 -0
- package/v3/dist/integrations/coherence/engines/witness-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/engines/witness-adapter.js +377 -0
- package/v3/dist/integrations/coherence/engines/witness-adapter.js.map +1 -0
- package/v3/dist/integrations/coherence/index.d.ts +84 -0
- package/v3/dist/integrations/coherence/index.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/index.js +114 -0
- package/v3/dist/integrations/coherence/index.js.map +1 -0
- package/v3/dist/integrations/coherence/threshold-tuner.d.ts +396 -0
- package/v3/dist/integrations/coherence/threshold-tuner.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/threshold-tuner.js +538 -0
- package/v3/dist/integrations/coherence/threshold-tuner.js.map +1 -0
- package/v3/dist/integrations/coherence/types.d.ts +879 -0
- package/v3/dist/integrations/coherence/types.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/types.js +134 -0
- package/v3/dist/integrations/coherence/types.js.map +1 -0
- package/v3/dist/integrations/coherence/wasm-loader.d.ts +351 -0
- package/v3/dist/integrations/coherence/wasm-loader.d.ts.map +1 -0
- package/v3/dist/integrations/coherence/wasm-loader.js +842 -0
- package/v3/dist/integrations/coherence/wasm-loader.js.map +1 -0
- package/v3/dist/integrations/embeddings/base/EmbeddingGenerator.d.ts.map +1 -1
- package/v3/dist/integrations/embeddings/base/EmbeddingGenerator.js +1 -0
- package/v3/dist/integrations/embeddings/base/EmbeddingGenerator.js.map +1 -1
- package/v3/dist/integrations/embeddings/base/types.d.ts +1 -1
- package/v3/dist/integrations/embeddings/base/types.d.ts.map +1 -1
- package/v3/dist/integrations/embeddings/cache/EmbeddingCache.d.ts.map +1 -1
- package/v3/dist/integrations/embeddings/cache/EmbeddingCache.js +1 -0
- package/v3/dist/integrations/embeddings/cache/EmbeddingCache.js.map +1 -1
- package/v3/dist/integrations/embeddings/index/HNSWIndex.d.ts.map +1 -1
- package/v3/dist/integrations/embeddings/index/HNSWIndex.js +4 -1
- package/v3/dist/integrations/embeddings/index/HNSWIndex.js.map +1 -1
- package/v3/dist/kernel/interfaces.d.ts +8 -1
- package/v3/dist/kernel/interfaces.d.ts.map +1 -1
- package/v3/dist/learning/aqe-learning-engine.d.ts +272 -0
- package/v3/dist/learning/aqe-learning-engine.d.ts.map +1 -0
- package/v3/dist/learning/aqe-learning-engine.js +708 -0
- package/v3/dist/learning/aqe-learning-engine.js.map +1 -0
- package/v3/dist/learning/causal-verifier.d.ts +244 -0
- package/v3/dist/learning/causal-verifier.d.ts.map +1 -0
- package/v3/dist/learning/causal-verifier.js +300 -0
- package/v3/dist/learning/causal-verifier.js.map +1 -0
- package/v3/dist/learning/experience-capture.d.ts +266 -0
- package/v3/dist/learning/experience-capture.d.ts.map +1 -0
- package/v3/dist/learning/experience-capture.js +647 -0
- package/v3/dist/learning/experience-capture.js.map +1 -0
- package/v3/dist/learning/index.d.ts +8 -0
- package/v3/dist/learning/index.d.ts.map +1 -1
- package/v3/dist/learning/index.js +16 -0
- package/v3/dist/learning/index.js.map +1 -1
- package/v3/dist/learning/memory-auditor.d.ts +235 -0
- package/v3/dist/learning/memory-auditor.d.ts.map +1 -0
- package/v3/dist/learning/memory-auditor.js +478 -0
- package/v3/dist/learning/memory-auditor.js.map +1 -0
- package/v3/dist/learning/pattern-store.d.ts.map +1 -1
- package/v3/dist/learning/pattern-store.js +27 -6
- package/v3/dist/learning/pattern-store.js.map +1 -1
- package/v3/dist/learning/qe-patterns.d.ts +15 -1
- package/v3/dist/learning/qe-patterns.d.ts.map +1 -1
- package/v3/dist/learning/qe-patterns.js +26 -5
- package/v3/dist/learning/qe-patterns.js.map +1 -1
- package/v3/dist/learning/qe-reasoning-bank.d.ts +38 -2
- package/v3/dist/learning/qe-reasoning-bank.d.ts.map +1 -1
- package/v3/dist/learning/qe-reasoning-bank.js +86 -4
- package/v3/dist/learning/qe-reasoning-bank.js.map +1 -1
- package/v3/dist/learning/real-qe-reasoning-bank.d.ts +32 -2
- package/v3/dist/learning/real-qe-reasoning-bank.d.ts.map +1 -1
- package/v3/dist/learning/real-qe-reasoning-bank.js +61 -6
- package/v3/dist/learning/real-qe-reasoning-bank.js.map +1 -1
- package/v3/dist/learning/token-tracker.d.ts.map +1 -1
- package/v3/dist/learning/token-tracker.js +5 -2
- package/v3/dist/learning/token-tracker.js.map +1 -1
- package/v3/dist/mcp/bundle.js +6698 -303
- package/v3/dist/mcp/tools/coherence/audit.d.ts +107 -0
- package/v3/dist/mcp/tools/coherence/audit.d.ts.map +1 -0
- package/v3/dist/mcp/tools/coherence/audit.js +236 -0
- package/v3/dist/mcp/tools/coherence/audit.js.map +1 -0
- package/v3/dist/mcp/tools/coherence/check.d.ts +106 -0
- package/v3/dist/mcp/tools/coherence/check.d.ts.map +1 -0
- package/v3/dist/mcp/tools/coherence/check.js +205 -0
- package/v3/dist/mcp/tools/coherence/check.js.map +1 -0
- package/v3/dist/mcp/tools/coherence/collapse.d.ts +123 -0
- package/v3/dist/mcp/tools/coherence/collapse.d.ts.map +1 -0
- package/v3/dist/mcp/tools/coherence/collapse.js +279 -0
- package/v3/dist/mcp/tools/coherence/collapse.js.map +1 -0
- package/v3/dist/mcp/tools/coherence/consensus.d.ts +100 -0
- package/v3/dist/mcp/tools/coherence/consensus.d.ts.map +1 -0
- package/v3/dist/mcp/tools/coherence/consensus.js +201 -0
- package/v3/dist/mcp/tools/coherence/consensus.js.map +1 -0
- package/v3/dist/mcp/tools/coherence/index.d.ts +31 -0
- package/v3/dist/mcp/tools/coherence/index.d.ts.map +1 -0
- package/v3/dist/mcp/tools/coherence/index.js +42 -0
- package/v3/dist/mcp/tools/coherence/index.js.map +1 -0
- package/v3/dist/mcp/tools/contract-testing/validate.d.ts +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.d.ts.map +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.js +66 -0
- package/v3/dist/mcp/tools/contract-testing/validate.js.map +1 -1
- package/v3/dist/mcp/tools/index.d.ts +6 -1
- package/v3/dist/mcp/tools/index.d.ts.map +1 -1
- package/v3/dist/mcp/tools/index.js +9 -1
- package/v3/dist/mcp/tools/index.js.map +1 -1
- package/v3/dist/mcp/tools/mincut/index.d.ts +1 -1
- package/v3/dist/mcp/tools/mincut/index.d.ts.map +1 -1
- package/v3/dist/mcp/tools/mincut/index.js.map +1 -1
- package/v3/dist/mcp/tools/registry.d.ts +4 -0
- package/v3/dist/mcp/tools/registry.d.ts.map +1 -1
- package/v3/dist/mcp/tools/registry.js +5 -0
- package/v3/dist/mcp/tools/registry.js.map +1 -1
- package/v3/dist/mcp/types.d.ts +1 -1
- package/v3/dist/mcp/types.d.ts.map +1 -1
- package/v3/dist/shared/utils/safe-expression-evaluator.d.ts +61 -0
- package/v3/dist/shared/utils/safe-expression-evaluator.d.ts.map +1 -0
- package/v3/dist/shared/utils/safe-expression-evaluator.js +365 -0
- package/v3/dist/shared/utils/safe-expression-evaluator.js.map +1 -0
- package/v3/dist/strange-loop/belief-reconciler.d.ts +357 -0
- package/v3/dist/strange-loop/belief-reconciler.d.ts.map +1 -0
- package/v3/dist/strange-loop/belief-reconciler.js +696 -0
- package/v3/dist/strange-loop/belief-reconciler.js.map +1 -0
- package/v3/dist/strange-loop/index.d.ts +1 -0
- package/v3/dist/strange-loop/index.d.ts.map +1 -1
- package/v3/dist/strange-loop/index.js +2 -0
- package/v3/dist/strange-loop/index.js.map +1 -1
- package/v3/dist/strange-loop/strange-loop.d.ts +177 -5
- package/v3/dist/strange-loop/strange-loop.d.ts.map +1 -1
- package/v3/dist/strange-loop/strange-loop.js +452 -9
- package/v3/dist/strange-loop/strange-loop.js.map +1 -1
- package/v3/dist/strange-loop/types.d.ts +205 -1
- package/v3/dist/strange-loop/types.d.ts.map +1 -1
- package/v3/dist/strange-loop/types.js +5 -0
- package/v3/dist/strange-loop/types.js.map +1 -1
- package/v3/dist/test-scheduling/executors/vitest-executor.d.ts.map +1 -1
- package/v3/dist/test-scheduling/executors/vitest-executor.js +7 -2
- package/v3/dist/test-scheduling/executors/vitest-executor.js.map +1 -1
- package/v3/dist/workflows/browser/workflow-loader.d.ts +1 -0
- package/v3/dist/workflows/browser/workflow-loader.d.ts.map +1 -1
- package/v3/dist/workflows/browser/workflow-loader.js +11 -16
- package/v3/dist/workflows/browser/workflow-loader.js.map +1 -1
- package/v3/package.json +5 -1
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase Interface - Modular Init System
|
|
3
|
+
* ADR-025: Enhanced Init with Self-Configuration
|
|
4
|
+
*
|
|
5
|
+
* Defines the contract for init phases that can be composed
|
|
6
|
+
* into a pipeline for flexible initialization.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProjectAnalysis, AQEInitConfig } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Result of running an init phase
|
|
11
|
+
*/
|
|
12
|
+
export interface PhaseResult<T = unknown> {
|
|
13
|
+
/** Whether the phase succeeded */
|
|
14
|
+
success: boolean;
|
|
15
|
+
/** Phase output data */
|
|
16
|
+
data?: T;
|
|
17
|
+
/** Error if phase failed */
|
|
18
|
+
error?: Error;
|
|
19
|
+
/** Execution duration in milliseconds */
|
|
20
|
+
durationMs: number;
|
|
21
|
+
/** Optional message for logging */
|
|
22
|
+
message?: string;
|
|
23
|
+
/** Whether to skip subsequent phases */
|
|
24
|
+
skipRemaining?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Enhancement availability status
|
|
28
|
+
*/
|
|
29
|
+
export interface EnhancementStatus {
|
|
30
|
+
claudeFlow: boolean;
|
|
31
|
+
claudeFlowVersion?: string;
|
|
32
|
+
ruvector: boolean;
|
|
33
|
+
ruvectorVersion?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Context passed through init phases
|
|
37
|
+
*/
|
|
38
|
+
export interface InitContext {
|
|
39
|
+
/** Project root directory */
|
|
40
|
+
projectRoot: string;
|
|
41
|
+
/** CLI options passed to init */
|
|
42
|
+
options: InitOptions;
|
|
43
|
+
/** Configuration being built up through phases */
|
|
44
|
+
config: Partial<AQEInitConfig>;
|
|
45
|
+
/** Project analysis result (set by analysis phase) */
|
|
46
|
+
analysis?: ProjectAnalysis;
|
|
47
|
+
/** Available enhancements detected */
|
|
48
|
+
enhancements: EnhancementStatus;
|
|
49
|
+
/** Results from completed phases */
|
|
50
|
+
results: Map<string, PhaseResult>;
|
|
51
|
+
/** V2 detection result (if applicable) */
|
|
52
|
+
v2Detection?: V2DetectionResult;
|
|
53
|
+
/** Shared services for phases */
|
|
54
|
+
services: {
|
|
55
|
+
/** Log a message */
|
|
56
|
+
log: (message: string) => void;
|
|
57
|
+
/** Log a warning */
|
|
58
|
+
warn: (message: string) => void;
|
|
59
|
+
/** Log an error */
|
|
60
|
+
error: (message: string) => void;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Options passed to aqe init command
|
|
65
|
+
*/
|
|
66
|
+
export interface InitOptions {
|
|
67
|
+
/** Skip wizard and use auto-configuration */
|
|
68
|
+
autoMode?: boolean;
|
|
69
|
+
/** Skip pattern loading */
|
|
70
|
+
skipPatterns?: boolean;
|
|
71
|
+
/** Minimal configuration (no skills, patterns, workers) */
|
|
72
|
+
minimal?: boolean;
|
|
73
|
+
/** Automatically migrate from v2 if detected */
|
|
74
|
+
autoMigrate?: boolean;
|
|
75
|
+
/** Install n8n workflow testing platform */
|
|
76
|
+
withN8n?: boolean;
|
|
77
|
+
/** N8n API configuration */
|
|
78
|
+
n8nApiConfig?: {
|
|
79
|
+
baseUrl?: string;
|
|
80
|
+
apiKey?: string;
|
|
81
|
+
};
|
|
82
|
+
/** Custom wizard answers */
|
|
83
|
+
wizardAnswers?: Record<string, unknown>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* V2 installation detection result
|
|
87
|
+
*/
|
|
88
|
+
export interface V2DetectionResult {
|
|
89
|
+
detected: boolean;
|
|
90
|
+
memoryDbPath?: string;
|
|
91
|
+
configPath?: string;
|
|
92
|
+
agentsPath?: string;
|
|
93
|
+
hasMemoryDb: boolean;
|
|
94
|
+
hasConfig: boolean;
|
|
95
|
+
hasAgents: boolean;
|
|
96
|
+
version?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Init phase interface
|
|
100
|
+
* Each phase is a self-contained unit of initialization logic
|
|
101
|
+
*/
|
|
102
|
+
export interface InitPhase<TResult = unknown> {
|
|
103
|
+
/** Unique phase name (used as key in results map) */
|
|
104
|
+
readonly name: string;
|
|
105
|
+
/** Human-readable description */
|
|
106
|
+
readonly description: string;
|
|
107
|
+
/** Execution order (lower runs first) */
|
|
108
|
+
readonly order: number;
|
|
109
|
+
/** If true, failure stops the entire init process */
|
|
110
|
+
readonly critical: boolean;
|
|
111
|
+
/** Phase names that must complete before this phase */
|
|
112
|
+
readonly requiresPhases?: readonly string[];
|
|
113
|
+
/** Enhancement names that this phase uses (optional) */
|
|
114
|
+
readonly requiresEnhancements?: readonly string[];
|
|
115
|
+
/**
|
|
116
|
+
* Determine if this phase should run
|
|
117
|
+
* @param context Current init context
|
|
118
|
+
* @returns true if phase should execute
|
|
119
|
+
*/
|
|
120
|
+
shouldRun(context: InitContext): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* Execute the phase
|
|
123
|
+
* @param context Current init context
|
|
124
|
+
* @returns Phase result with data or error
|
|
125
|
+
*/
|
|
126
|
+
execute(context: InitContext): Promise<PhaseResult<TResult>>;
|
|
127
|
+
/**
|
|
128
|
+
* Optional rollback if phase fails and cleanup is needed
|
|
129
|
+
* @param context Current init context
|
|
130
|
+
*/
|
|
131
|
+
rollback?(context: InitContext): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Base class for init phases with common functionality
|
|
135
|
+
*/
|
|
136
|
+
export declare abstract class BasePhase<TResult = unknown> implements InitPhase<TResult> {
|
|
137
|
+
abstract readonly name: string;
|
|
138
|
+
abstract readonly description: string;
|
|
139
|
+
abstract readonly order: number;
|
|
140
|
+
abstract readonly critical: boolean;
|
|
141
|
+
readonly requiresPhases?: readonly string[];
|
|
142
|
+
readonly requiresEnhancements?: readonly string[];
|
|
143
|
+
/**
|
|
144
|
+
* Default shouldRun - always returns true
|
|
145
|
+
* Override in subclass for conditional execution
|
|
146
|
+
*/
|
|
147
|
+
shouldRun(_context: InitContext): Promise<boolean>;
|
|
148
|
+
/**
|
|
149
|
+
* Execute with timing wrapper
|
|
150
|
+
*/
|
|
151
|
+
execute(context: InitContext): Promise<PhaseResult<TResult>>;
|
|
152
|
+
/**
|
|
153
|
+
* Implement phase logic here
|
|
154
|
+
* @param context Init context
|
|
155
|
+
* @returns Phase result data
|
|
156
|
+
*/
|
|
157
|
+
protected abstract run(context: InitContext): Promise<TResult>;
|
|
158
|
+
/**
|
|
159
|
+
* Check if required phases have completed successfully
|
|
160
|
+
*/
|
|
161
|
+
protected checkDependencies(context: InitContext): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Check if required enhancements are available
|
|
164
|
+
*/
|
|
165
|
+
protected checkEnhancements(context: InitContext): boolean;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Phase registry for managing available phases
|
|
169
|
+
*/
|
|
170
|
+
export declare class PhaseRegistry {
|
|
171
|
+
private phases;
|
|
172
|
+
/**
|
|
173
|
+
* Register a phase
|
|
174
|
+
*/
|
|
175
|
+
register(phase: InitPhase): void;
|
|
176
|
+
/**
|
|
177
|
+
* Get a phase by name
|
|
178
|
+
*/
|
|
179
|
+
get(name: string): InitPhase | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* Get all phases sorted by order
|
|
182
|
+
*/
|
|
183
|
+
getOrdered(): InitPhase[];
|
|
184
|
+
/**
|
|
185
|
+
* Check if a phase is registered
|
|
186
|
+
*/
|
|
187
|
+
has(name: string): boolean;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a new phase registry with default phases
|
|
191
|
+
*/
|
|
192
|
+
export declare function createPhaseRegistry(): PhaseRegistry;
|
|
193
|
+
//# sourceMappingURL=phase-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-interface.d.ts","sourceRoot":"","sources":["../../../src/init/phases/phase-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase Interface - Modular Init System
|
|
3
|
+
* ADR-025: Enhanced Init with Self-Configuration
|
|
4
|
+
*
|
|
5
|
+
* Defines the contract for init phases that can be composed
|
|
6
|
+
* into a pipeline for flexible initialization.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Base class for init phases with common functionality
|
|
10
|
+
*/
|
|
11
|
+
export class BasePhase {
|
|
12
|
+
requiresPhases;
|
|
13
|
+
requiresEnhancements;
|
|
14
|
+
/**
|
|
15
|
+
* Default shouldRun - always returns true
|
|
16
|
+
* Override in subclass for conditional execution
|
|
17
|
+
*/
|
|
18
|
+
async shouldRun(_context) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Execute with timing wrapper
|
|
23
|
+
*/
|
|
24
|
+
async execute(context) {
|
|
25
|
+
const startTime = Date.now();
|
|
26
|
+
try {
|
|
27
|
+
const data = await this.run(context);
|
|
28
|
+
return {
|
|
29
|
+
success: true,
|
|
30
|
+
data,
|
|
31
|
+
durationMs: Date.now() - startTime,
|
|
32
|
+
message: `${this.description} completed`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
39
|
+
durationMs: Date.now() - startTime,
|
|
40
|
+
message: `${this.description} failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if required phases have completed successfully
|
|
46
|
+
*/
|
|
47
|
+
checkDependencies(context) {
|
|
48
|
+
if (!this.requiresPhases?.length)
|
|
49
|
+
return true;
|
|
50
|
+
for (const phaseName of this.requiresPhases) {
|
|
51
|
+
const result = context.results.get(phaseName);
|
|
52
|
+
if (!result?.success) {
|
|
53
|
+
context.services.warn(`Phase ${this.name} requires ${phaseName} which has not completed`);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if required enhancements are available
|
|
61
|
+
*/
|
|
62
|
+
checkEnhancements(context) {
|
|
63
|
+
if (!this.requiresEnhancements?.length)
|
|
64
|
+
return true;
|
|
65
|
+
for (const enhancement of this.requiresEnhancements) {
|
|
66
|
+
const available = enhancement === 'claudeFlow'
|
|
67
|
+
? context.enhancements.claudeFlow
|
|
68
|
+
: enhancement === 'ruvector'
|
|
69
|
+
? context.enhancements.ruvector
|
|
70
|
+
: false;
|
|
71
|
+
if (!available) {
|
|
72
|
+
context.services.warn(`Phase ${this.name} requires ${enhancement} which is not available`);
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Phase registry for managing available phases
|
|
81
|
+
*/
|
|
82
|
+
export class PhaseRegistry {
|
|
83
|
+
phases = new Map();
|
|
84
|
+
/**
|
|
85
|
+
* Register a phase
|
|
86
|
+
*/
|
|
87
|
+
register(phase) {
|
|
88
|
+
if (this.phases.has(phase.name)) {
|
|
89
|
+
throw new Error(`Phase ${phase.name} is already registered`);
|
|
90
|
+
}
|
|
91
|
+
this.phases.set(phase.name, phase);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get a phase by name
|
|
95
|
+
*/
|
|
96
|
+
get(name) {
|
|
97
|
+
return this.phases.get(name);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get all phases sorted by order
|
|
101
|
+
*/
|
|
102
|
+
getOrdered() {
|
|
103
|
+
return Array.from(this.phases.values())
|
|
104
|
+
.sort((a, b) => a.order - b.order);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if a phase is registered
|
|
108
|
+
*/
|
|
109
|
+
has(name) {
|
|
110
|
+
return this.phases.has(name);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create a new phase registry with default phases
|
|
115
|
+
*/
|
|
116
|
+
export function createPhaseRegistry() {
|
|
117
|
+
return new PhaseRegistry();
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=phase-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-interface.js","sourceRoot":"","sources":["../../../src/init/phases/phase-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,7 +112,10 @@ export declare class ExperienceReplay {
|
|
|
112
112
|
private db;
|
|
113
113
|
private prepared;
|
|
114
114
|
private initialized;
|
|
115
|
-
private
|
|
115
|
+
private hnswIndex;
|
|
116
|
+
private idToExperienceId;
|
|
117
|
+
private experienceIdToHnswId;
|
|
118
|
+
private nextHnswId;
|
|
116
119
|
private recentExperiences;
|
|
117
120
|
private stats;
|
|
118
121
|
constructor(config?: Partial<ExperienceReplayConfig>);
|
|
@@ -129,7 +132,8 @@ export declare class ExperienceReplay {
|
|
|
129
132
|
*/
|
|
130
133
|
private prepareStatements;
|
|
131
134
|
/**
|
|
132
|
-
* Load embeddings into
|
|
135
|
+
* Load embeddings into HNSW index for O(log n) similarity search
|
|
136
|
+
* Performance: 150x-12,500x faster than linear scan
|
|
133
137
|
*/
|
|
134
138
|
private loadEmbeddingIndex;
|
|
135
139
|
/**
|
|
@@ -150,7 +154,8 @@ export declare class ExperienceReplay {
|
|
|
150
154
|
*/
|
|
151
155
|
getGuidance(task: string, domain?: QEDomain): Promise<ExperienceGuidance | null>;
|
|
152
156
|
/**
|
|
153
|
-
* Find experiences similar to a task
|
|
157
|
+
* Find experiences similar to a task using HNSW index
|
|
158
|
+
* Performance: O(log n) instead of O(n) - 150x-12,500x faster for large collections
|
|
154
159
|
*/
|
|
155
160
|
findSimilarExperiences(task: string, domain?: QEDomain, limit?: number): Promise<Array<{
|
|
156
161
|
experience: Experience;
|
|
@@ -181,6 +186,7 @@ export declare class ExperienceReplay {
|
|
|
181
186
|
totalTokensSaved: number;
|
|
182
187
|
avgSimilarityOnRetrieval: number;
|
|
183
188
|
embeddingIndexSize: number;
|
|
189
|
+
hnswIndexSize: number;
|
|
184
190
|
recentBufferSize: number;
|
|
185
191
|
};
|
|
186
192
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experience-replay.d.ts","sourceRoot":"","sources":["../../../../src/integrations/agentic-flow/reasoning-bank/experience-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"experience-replay.d.ts","sourceRoot":"","sources":["../../../../src/integrations/agentic-flow/reasoning-bank/experience-replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
16
16
|
import { getUnifiedMemory } from '../../../kernel/unified-memory.js';
|
|
17
|
-
import { computeRealEmbedding,
|
|
17
|
+
import { computeRealEmbedding, } from '../../../learning/real-embeddings.js';
|
|
18
18
|
import { CircularBuffer } from '../../../shared/utils/circular-buffer.js';
|
|
19
|
+
import { HNSWEmbeddingIndex } from '../../embeddings/index/HNSWIndex.js';
|
|
19
20
|
const DEFAULT_CONFIG = {
|
|
20
21
|
minQualityThreshold: 0.6,
|
|
21
22
|
maxExperiencesPerDomain: 500,
|
|
@@ -53,8 +54,12 @@ export class ExperienceReplay {
|
|
|
53
54
|
db = null;
|
|
54
55
|
prepared = new Map();
|
|
55
56
|
initialized = false;
|
|
56
|
-
//
|
|
57
|
-
|
|
57
|
+
// Real HNSW index for O(log n) similarity search (150x-12,500x faster than linear scan)
|
|
58
|
+
hnswIndex;
|
|
59
|
+
// Mapping from HNSW numeric IDs to experience string IDs
|
|
60
|
+
idToExperienceId = new Map();
|
|
61
|
+
experienceIdToHnswId = new Map();
|
|
62
|
+
nextHnswId = 0;
|
|
58
63
|
// Recent experiences buffer
|
|
59
64
|
recentExperiences;
|
|
60
65
|
// Statistics
|
|
@@ -68,6 +73,14 @@ export class ExperienceReplay {
|
|
|
68
73
|
constructor(config = {}) {
|
|
69
74
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
70
75
|
this.recentExperiences = new CircularBuffer(100);
|
|
76
|
+
// Initialize real HNSW index with optimal parameters for experience search
|
|
77
|
+
this.hnswIndex = new HNSWEmbeddingIndex({
|
|
78
|
+
dimension: 384, // all-MiniLM-L6-v2 dimension
|
|
79
|
+
M: 16, // Connectivity parameter (higher = more accurate, more memory)
|
|
80
|
+
efConstruction: 200, // Construction time accuracy (higher = better index quality)
|
|
81
|
+
efSearch: 100, // Search time accuracy (higher = more accurate, slower)
|
|
82
|
+
metric: 'cosine',
|
|
83
|
+
});
|
|
71
84
|
}
|
|
72
85
|
/**
|
|
73
86
|
* Initialize with SQLite persistence
|
|
@@ -179,21 +192,41 @@ export class ExperienceReplay {
|
|
|
179
192
|
`));
|
|
180
193
|
}
|
|
181
194
|
/**
|
|
182
|
-
* Load embeddings into
|
|
195
|
+
* Load embeddings into HNSW index for O(log n) similarity search
|
|
196
|
+
* Performance: 150x-12,500x faster than linear scan
|
|
183
197
|
*/
|
|
184
198
|
async loadEmbeddingIndex() {
|
|
185
199
|
const stmt = this.prepared.get('getAllEmbeddings');
|
|
186
200
|
if (!stmt)
|
|
187
201
|
return;
|
|
188
202
|
const rows = stmt.all();
|
|
189
|
-
|
|
203
|
+
// Clear existing mappings
|
|
204
|
+
this.idToExperienceId.clear();
|
|
205
|
+
this.experienceIdToHnswId.clear();
|
|
206
|
+
this.hnswIndex.clearIndex('experiences');
|
|
207
|
+
this.nextHnswId = 0;
|
|
208
|
+
// Build HNSW index with all embeddings
|
|
190
209
|
for (const row of rows) {
|
|
191
210
|
if (row.embedding && row.embedding_dimension) {
|
|
192
211
|
const embedding = this.bufferToFloatArray(row.embedding, row.embedding_dimension);
|
|
193
|
-
|
|
212
|
+
const hnswId = this.nextHnswId++;
|
|
213
|
+
// Create IEmbedding for HNSW index
|
|
214
|
+
const iEmbedding = {
|
|
215
|
+
vector: embedding,
|
|
216
|
+
dimension: 384,
|
|
217
|
+
namespace: 'experiences',
|
|
218
|
+
text: row.id, // Use ID as text identifier
|
|
219
|
+
timestamp: Date.now(),
|
|
220
|
+
quantization: 'none',
|
|
221
|
+
metadata: {},
|
|
222
|
+
};
|
|
223
|
+
this.hnswIndex.addEmbedding(iEmbedding, hnswId);
|
|
224
|
+
// Track ID mappings
|
|
225
|
+
this.idToExperienceId.set(hnswId, row.id);
|
|
226
|
+
this.experienceIdToHnswId.set(row.id, hnswId);
|
|
194
227
|
}
|
|
195
228
|
}
|
|
196
|
-
console.log(`[ExperienceReplay] Loaded ${this.
|
|
229
|
+
console.log(`[ExperienceReplay] Loaded ${this.idToExperienceId.size} embeddings into HNSW index`);
|
|
197
230
|
}
|
|
198
231
|
/**
|
|
199
232
|
* Store a successful trajectory as a reusable experience
|
|
@@ -241,9 +274,21 @@ export class ExperienceReplay {
|
|
|
241
274
|
const embeddingBuffer = embedding ? this.floatArrayToBuffer(embedding) : null;
|
|
242
275
|
insertStmt.run(id, trajectory.id, trajectory.task, domain, strategy, JSON.stringify(keyActions), trajectory.metrics.efficiencyScore, embeddingBuffer, embedding?.length ?? null, JSON.stringify(trajectory.metrics), JSON.stringify(tags));
|
|
243
276
|
}
|
|
244
|
-
//
|
|
277
|
+
// Add to HNSW index for fast similarity search
|
|
245
278
|
if (embedding) {
|
|
246
|
-
|
|
279
|
+
const hnswId = this.nextHnswId++;
|
|
280
|
+
const iEmbedding = {
|
|
281
|
+
vector: embedding,
|
|
282
|
+
dimension: 384,
|
|
283
|
+
namespace: 'experiences',
|
|
284
|
+
text: id, // Use ID as text identifier
|
|
285
|
+
timestamp: Date.now(),
|
|
286
|
+
quantization: 'none',
|
|
287
|
+
metadata: {},
|
|
288
|
+
};
|
|
289
|
+
this.hnswIndex.addEmbedding(iEmbedding, hnswId);
|
|
290
|
+
this.idToExperienceId.set(hnswId, id);
|
|
291
|
+
this.experienceIdToHnswId.set(id, hnswId);
|
|
247
292
|
}
|
|
248
293
|
// Add to recent buffer
|
|
249
294
|
this.recentExperiences.push(experience);
|
|
@@ -316,29 +361,52 @@ export class ExperienceReplay {
|
|
|
316
361
|
};
|
|
317
362
|
}
|
|
318
363
|
/**
|
|
319
|
-
* Find experiences similar to a task
|
|
364
|
+
* Find experiences similar to a task using HNSW index
|
|
365
|
+
* Performance: O(log n) instead of O(n) - 150x-12,500x faster for large collections
|
|
320
366
|
*/
|
|
321
367
|
async findSimilarExperiences(task, domain, limit) {
|
|
322
368
|
this.ensureInitialized();
|
|
323
369
|
const k = limit ?? this.config.topK;
|
|
370
|
+
// Check if index is empty
|
|
371
|
+
if (this.idToExperienceId.size === 0) {
|
|
372
|
+
return [];
|
|
373
|
+
}
|
|
324
374
|
// Generate embedding for the task
|
|
325
375
|
const taskEmbedding = await computeRealEmbedding(task, this.config.embedding);
|
|
326
|
-
//
|
|
327
|
-
const
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
//
|
|
376
|
+
// Create query embedding for HNSW search
|
|
377
|
+
const queryEmbedding = {
|
|
378
|
+
vector: taskEmbedding,
|
|
379
|
+
dimension: 384,
|
|
380
|
+
namespace: 'experiences',
|
|
381
|
+
text: task, // Query text
|
|
382
|
+
timestamp: Date.now(),
|
|
383
|
+
quantization: 'none',
|
|
384
|
+
metadata: {},
|
|
385
|
+
};
|
|
386
|
+
// Use HNSW O(log n) search instead of linear scan
|
|
387
|
+
// Request more results to account for domain filtering and similarity threshold
|
|
388
|
+
const searchLimit = domain ? k * 4 : k * 2;
|
|
389
|
+
const hnswResults = this.hnswIndex.search(queryEmbedding, {
|
|
390
|
+
limit: searchLimit,
|
|
391
|
+
namespace: 'experiences',
|
|
392
|
+
});
|
|
393
|
+
// Convert HNSW results to experiences
|
|
337
394
|
const results = [];
|
|
338
395
|
const getStmt = this.prepared.get('getExperience');
|
|
339
|
-
for (const { id,
|
|
396
|
+
for (const { id: hnswId, distance } of hnswResults) {
|
|
397
|
+
// Convert HNSW distance to similarity (cosine distance to similarity)
|
|
398
|
+
// For cosine metric: similarity = 1 - distance (hnswlib returns distance in [0, 2])
|
|
399
|
+
const similarity = 1 - distance;
|
|
400
|
+
// Apply similarity threshold
|
|
401
|
+
if (similarity < this.config.similarityThreshold) {
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
// Map HNSW ID back to experience ID
|
|
405
|
+
const experienceId = this.idToExperienceId.get(hnswId);
|
|
406
|
+
if (!experienceId)
|
|
407
|
+
continue;
|
|
340
408
|
if (getStmt) {
|
|
341
|
-
const row = getStmt.get(
|
|
409
|
+
const row = getStmt.get(experienceId);
|
|
342
410
|
if (row) {
|
|
343
411
|
// Filter by domain if specified
|
|
344
412
|
if (domain && row.domain !== domain)
|
|
@@ -416,7 +484,13 @@ export class ExperienceReplay {
|
|
|
416
484
|
for (const { id } of toRemove) {
|
|
417
485
|
if (deleteStmt) {
|
|
418
486
|
deleteStmt.run(id);
|
|
419
|
-
|
|
487
|
+
// Note: HNSW doesn't support deletion, but we remove from ID mappings
|
|
488
|
+
// The orphaned entry will be ignored during search
|
|
489
|
+
const hnswId = this.experienceIdToHnswId.get(id);
|
|
490
|
+
if (hnswId !== undefined) {
|
|
491
|
+
this.idToExperienceId.delete(hnswId);
|
|
492
|
+
this.experienceIdToHnswId.delete(id);
|
|
493
|
+
}
|
|
420
494
|
removed++;
|
|
421
495
|
}
|
|
422
496
|
if (domainCount - removed <= this.config.maxExperiencesPerDomain)
|
|
@@ -434,7 +508,8 @@ export class ExperienceReplay {
|
|
|
434
508
|
getStats() {
|
|
435
509
|
return {
|
|
436
510
|
...this.stats,
|
|
437
|
-
embeddingIndexSize: this.
|
|
511
|
+
embeddingIndexSize: this.idToExperienceId.size, // For backward compatibility
|
|
512
|
+
hnswIndexSize: this.hnswIndex.getSize('experiences'),
|
|
438
513
|
recentBufferSize: this.recentExperiences.length,
|
|
439
514
|
};
|
|
440
515
|
}
|
|
@@ -442,7 +517,9 @@ export class ExperienceReplay {
|
|
|
442
517
|
* Dispose and cleanup
|
|
443
518
|
*/
|
|
444
519
|
async dispose() {
|
|
445
|
-
this.
|
|
520
|
+
this.hnswIndex.clearIndex('experiences');
|
|
521
|
+
this.idToExperienceId.clear();
|
|
522
|
+
this.experienceIdToHnswId.clear();
|
|
446
523
|
this.recentExperiences.clear();
|
|
447
524
|
this.prepared.clear();
|
|
448
525
|
this.db = null;
|