@claude-flow/cli 3.42.1 → 3.42.3
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/analysis/analyze-code-quality.md +178 -178
- package/.claude/agents/analysis/code-analyzer.md +209 -209
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
- package/.claude/agents/architecture/arch-system-design.md +156 -156
- package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
- package/.claude/agents/browser/browser-agent.yaml +182 -182
- package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
- package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
- package/.claude/agents/consensus/gossip-coordinator.md +62 -62
- package/.claude/agents/consensus/performance-benchmarker.md +850 -850
- package/.claude/agents/consensus/quorum-manager.md +822 -822
- package/.claude/agents/consensus/raft-manager.md +62 -62
- package/.claude/agents/consensus/security-manager.md +621 -621
- package/.claude/agents/core/planner.md +374 -374
- package/.claude/agents/custom/test-long-runner.md +44 -44
- package/.claude/agents/data/data-ml-model.md +444 -444
- package/.claude/agents/data/ml/data-ml-model.md +192 -192
- package/.claude/agents/development/backend/dev-backend-api.md +141 -141
- package/.claude/agents/development/dev-backend-api.md +344 -344
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
- package/.claude/agents/devops/ops-cicd-github.md +164 -164
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
- package/.claude/agents/documentation/docs-api-openapi.md +354 -354
- package/.claude/agents/flow-nexus/app-store.md +87 -87
- package/.claude/agents/flow-nexus/authentication.md +68 -68
- package/.claude/agents/flow-nexus/challenges.md +80 -80
- package/.claude/agents/flow-nexus/neural-network.md +87 -87
- package/.claude/agents/flow-nexus/payments.md +82 -82
- package/.claude/agents/flow-nexus/sandbox.md +75 -75
- package/.claude/agents/flow-nexus/swarm.md +75 -75
- package/.claude/agents/flow-nexus/user-tools.md +95 -95
- package/.claude/agents/flow-nexus/workflow.md +83 -83
- package/.claude/agents/github/code-review-swarm.md +377 -377
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +575 -575
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +437 -437
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +604 -604
- package/.claude/agents/github/release-swarm.md +582 -582
- package/.claude/agents/github/repo-architect.md +397 -397
- package/.claude/agents/github/swarm-issue.md +572 -572
- package/.claude/agents/github/swarm-pr.md +427 -427
- package/.claude/agents/github/sync-coordinator.md +451 -451
- package/.claude/agents/github/workflow-automation.md +902 -902
- package/.claude/agents/goal/agent.md +815 -815
- package/.claude/agents/optimization/benchmark-suite.md +664 -664
- package/.claude/agents/optimization/load-balancer.md +430 -430
- package/.claude/agents/optimization/performance-monitor.md +671 -671
- package/.claude/agents/optimization/resource-allocator.md +673 -673
- package/.claude/agents/optimization/topology-optimizer.md +807 -807
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
- package/.claude/agents/sparc/architecture.md +698 -698
- package/.claude/agents/sparc/pseudocode.md +519 -519
- package/.claude/agents/sparc/refinement.md +801 -801
- package/.claude/agents/sparc/specification.md +477 -477
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
- package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
- package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
- package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
- package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
- package/.claude/agents/sublinear/performance-optimizer.md +367 -367
- package/.claude/agents/sublinear/trading-predictor.md +245 -245
- package/.claude/agents/swarm/adaptive-coordinator.md +1126 -1126
- package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
- package/.claude/agents/swarm/mesh-coordinator.md +962 -962
- package/.claude/agents/templates/automation-smart-agent.md +204 -204
- package/.claude/agents/templates/base-template-generator.md +289 -289
- package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
- package/.claude/agents/templates/github-pr-manager.md +176 -176
- package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
- package/.claude/agents/templates/memory-coordinator.md +186 -186
- package/.claude/agents/templates/orchestrator-task.md +138 -138
- package/.claude/agents/templates/performance-analyzer.md +198 -198
- package/.claude/agents/templates/sparc-coordinator.md +513 -513
- package/.claude/agents/testing/production-validator.md +394 -394
- package/.claude/agents/testing/tdd-london-swarm.md +243 -243
- package/.claude/agents/v3/aidefence-guardian.md +282 -282
- package/.claude/agents/v3/claims-authorizer.md +208 -208
- package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
- package/.claude/agents/v3/ddd-domain-expert.md +220 -220
- package/.claude/agents/v3/injection-analyst.md +236 -236
- package/.claude/agents/v3/performance-engineer.md +1233 -1233
- package/.claude/agents/v3/pii-detector.md +151 -151
- package/.claude/agents/v3/reasoningbank-learner.md +213 -213
- package/.claude/agents/v3/security-architect-aidefence.md +410 -410
- package/.claude/agents/v3/security-architect.md +867 -867
- package/.claude/agents/v3/swarm-memory-manager.md +157 -157
- package/.claude/agents/v3/v3-integration-architect.md +205 -205
- package/.claude/commands/agents/README.md +50 -50
- package/.claude/commands/agents/agent-capabilities.md +140 -140
- package/.claude/commands/agents/agent-coordination.md +28 -28
- package/.claude/commands/agents/agent-spawning.md +28 -28
- package/.claude/commands/agents/agent-types.md +216 -216
- package/.claude/commands/agents/health.md +139 -139
- package/.claude/commands/agents/list.md +100 -100
- package/.claude/commands/agents/logs.md +130 -130
- package/.claude/commands/agents/metrics.md +122 -122
- package/.claude/commands/agents/pool.md +127 -127
- package/.claude/commands/agents/spawn.md +140 -140
- package/.claude/commands/agents/status.md +115 -115
- package/.claude/commands/agents/stop.md +102 -102
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
- package/.claude/commands/analysis/README.md +9 -9
- package/.claude/commands/analysis/bottleneck-detect.md +162 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
- package/.claude/commands/analysis/performance-report.md +25 -25
- package/.claude/commands/analysis/token-efficiency.md +44 -44
- package/.claude/commands/analysis/token-usage.md +25 -25
- package/.claude/commands/automation/README.md +9 -9
- package/.claude/commands/automation/auto-agent.md +122 -122
- package/.claude/commands/automation/self-healing.md +105 -105
- package/.claude/commands/automation/session-memory.md +89 -89
- package/.claude/commands/automation/smart-agents.md +72 -72
- package/.claude/commands/automation/smart-spawn.md +25 -25
- package/.claude/commands/automation/workflow-select.md +25 -25
- package/.claude/commands/claude-flow-help.md +103 -103
- package/.claude/commands/claude-flow-memory.md +107 -107
- package/.claude/commands/claude-flow-swarm.md +205 -205
- package/.claude/commands/coordination/README.md +9 -9
- package/.claude/commands/coordination/agent-spawn.md +25 -25
- package/.claude/commands/coordination/init.md +44 -44
- package/.claude/commands/coordination/orchestrate.md +43 -43
- package/.claude/commands/coordination/spawn.md +45 -45
- package/.claude/commands/coordination/swarm-init.md +85 -85
- package/.claude/commands/coordination/task-orchestrate.md +25 -25
- package/.claude/commands/github/README.md +11 -11
- package/.claude/commands/github/code-review-swarm.md +513 -513
- package/.claude/commands/github/code-review.md +25 -25
- package/.claude/commands/github/github-modes.md +146 -146
- package/.claude/commands/github/github-swarm.md +121 -121
- package/.claude/commands/github/issue-tracker.md +291 -291
- package/.claude/commands/github/issue-triage.md +25 -25
- package/.claude/commands/github/multi-repo-swarm.md +518 -518
- package/.claude/commands/github/pr-enhance.md +26 -26
- package/.claude/commands/github/pr-manager.md +169 -169
- package/.claude/commands/github/project-board-sync.md +470 -470
- package/.claude/commands/github/release-manager.md +339 -339
- package/.claude/commands/github/release-swarm.md +543 -543
- package/.claude/commands/github/repo-analyze.md +25 -25
- package/.claude/commands/github/repo-architect.md +366 -366
- package/.claude/commands/github/swarm-issue.md +484 -484
- package/.claude/commands/github/swarm-pr.md +287 -287
- package/.claude/commands/github/sync-coordinator.md +302 -302
- package/.claude/commands/github/workflow-automation.md +441 -441
- package/.claude/commands/hive-mind/README.md +17 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
- package/.claude/commands/hive-mind/hive-mind.md +27 -27
- package/.claude/commands/hooks/README.md +11 -11
- package/.claude/commands/hooks/overview.md +57 -57
- package/.claude/commands/hooks/post-edit.md +117 -117
- package/.claude/commands/hooks/post-task.md +112 -112
- package/.claude/commands/hooks/pre-edit.md +113 -113
- package/.claude/commands/hooks/pre-task.md +111 -111
- package/.claude/commands/hooks/session-end.md +118 -118
- package/.claude/commands/hooks/setup.md +102 -102
- package/.claude/commands/memory/README.md +9 -9
- package/.claude/commands/memory/memory-persist.md +25 -25
- package/.claude/commands/memory/memory-search.md +25 -25
- package/.claude/commands/memory/memory-usage.md +25 -25
- package/.claude/commands/memory/neural.md +47 -47
- package/.claude/commands/monitoring/README.md +9 -9
- package/.claude/commands/monitoring/agent-metrics.md +25 -25
- package/.claude/commands/monitoring/agents.md +44 -44
- package/.claude/commands/monitoring/real-time-view.md +25 -25
- package/.claude/commands/monitoring/status.md +46 -46
- package/.claude/commands/monitoring/swarm-monitor.md +25 -25
- package/.claude/commands/optimization/README.md +9 -9
- package/.claude/commands/optimization/auto-topology.md +61 -61
- package/.claude/commands/optimization/cache-manage.md +25 -25
- package/.claude/commands/optimization/parallel-execute.md +25 -25
- package/.claude/commands/optimization/parallel-execution.md +49 -49
- package/.claude/commands/optimization/topology-optimize.md +25 -25
- package/.claude/commands/pair/README.md +260 -260
- package/.claude/commands/pair/commands.md +545 -545
- package/.claude/commands/pair/config.md +509 -509
- package/.claude/commands/pair/examples.md +511 -511
- package/.claude/commands/pair/modes.md +347 -347
- package/.claude/commands/pair/session.md +406 -406
- package/.claude/commands/pair/start.md +208 -208
- package/.claude/commands/sparc/analyzer.md +51 -51
- package/.claude/commands/sparc/architect.md +53 -53
- package/.claude/commands/sparc/ask.md +97 -97
- package/.claude/commands/sparc/batch-executor.md +54 -54
- package/.claude/commands/sparc/code.md +89 -89
- package/.claude/commands/sparc/coder.md +54 -54
- package/.claude/commands/sparc/debug.md +83 -83
- package/.claude/commands/sparc/debugger.md +54 -54
- package/.claude/commands/sparc/designer.md +53 -53
- package/.claude/commands/sparc/devops.md +109 -109
- package/.claude/commands/sparc/docs-writer.md +80 -80
- package/.claude/commands/sparc/documenter.md +54 -54
- package/.claude/commands/sparc/innovator.md +54 -54
- package/.claude/commands/sparc/integration.md +83 -83
- package/.claude/commands/sparc/mcp.md +117 -117
- package/.claude/commands/sparc/memory-manager.md +54 -54
- package/.claude/commands/sparc/optimizer.md +54 -54
- package/.claude/commands/sparc/orchestrator.md +131 -131
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
- package/.claude/commands/sparc/researcher.md +54 -54
- package/.claude/commands/sparc/reviewer.md +54 -54
- package/.claude/commands/sparc/security-review.md +80 -80
- package/.claude/commands/sparc/sparc-modes.md +174 -174
- package/.claude/commands/sparc/sparc.md +111 -111
- package/.claude/commands/sparc/spec-pseudocode.md +80 -80
- package/.claude/commands/sparc/supabase-admin.md +348 -348
- package/.claude/commands/sparc/swarm-coordinator.md +54 -54
- package/.claude/commands/sparc/tdd.md +54 -54
- package/.claude/commands/sparc/tester.md +54 -54
- package/.claude/commands/sparc/tutorial.md +79 -79
- package/.claude/commands/sparc/workflow-manager.md +54 -54
- package/.claude/commands/sparc.md +166 -166
- package/.claude/commands/stream-chain/pipeline.md +120 -120
- package/.claude/commands/stream-chain/run.md +69 -69
- package/.claude/commands/swarm/README.md +15 -15
- package/.claude/commands/swarm/analysis.md +95 -95
- package/.claude/commands/swarm/development.md +96 -96
- package/.claude/commands/swarm/examples.md +168 -168
- package/.claude/commands/swarm/maintenance.md +102 -102
- package/.claude/commands/swarm/optimization.md +117 -117
- package/.claude/commands/swarm/research.md +136 -136
- package/.claude/commands/swarm/swarm-analysis.md +8 -8
- package/.claude/commands/swarm/swarm-background.md +8 -8
- package/.claude/commands/swarm/swarm-init.md +19 -19
- package/.claude/commands/swarm/swarm-modes.md +8 -8
- package/.claude/commands/swarm/swarm-monitor.md +8 -8
- package/.claude/commands/swarm/swarm-spawn.md +19 -19
- package/.claude/commands/swarm/swarm-status.md +8 -8
- package/.claude/commands/swarm/swarm-strategies.md +8 -8
- package/.claude/commands/swarm/swarm.md +87 -87
- package/.claude/commands/swarm/testing.md +131 -131
- package/.claude/commands/training/README.md +9 -9
- package/.claude/commands/training/model-update.md +25 -25
- package/.claude/commands/training/neural-patterns.md +107 -107
- package/.claude/commands/training/neural-train.md +75 -75
- package/.claude/commands/training/pattern-learn.md +25 -25
- package/.claude/commands/training/specialization.md +62 -62
- package/.claude/commands/truth/start.md +142 -142
- package/.claude/commands/verify/check.md +49 -49
- package/.claude/commands/verify/start.md +127 -127
- package/.claude/commands/workflows/README.md +9 -9
- package/.claude/commands/workflows/development.md +77 -77
- package/.claude/commands/workflows/research.md +62 -62
- package/.claude/commands/workflows/workflow-create.md +25 -25
- package/.claude/commands/workflows/workflow-execute.md +25 -25
- package/.claude/commands/workflows/workflow-export.md +25 -25
- package/.claude/eval/human-relevance-frozen-v1.json +17 -17
- package/.claude/evolve-proof/generation-0.json +211 -211
- package/.claude/evolve-proof/real-generation-0.json +406 -406
- package/.claude/evolve-proof/real-generation-1.json +406 -406
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- package/.claude/helpers/auto-commit.sh +178 -178
- package/.claude/helpers/auto-memory-hook.mjs +430 -430
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +156 -156
- package/.claude/helpers/github-setup.sh +45 -45
- package/.claude/helpers/guidance-hook.sh +13 -13
- package/.claude/helpers/guidance-hooks.sh +102 -102
- package/.claude/helpers/health-monitor.sh +108 -108
- package/.claude/helpers/helpers.manifest.json +6 -6
- package/.claude/helpers/hook-handler.cjs +606 -606
- package/.claude/helpers/intelligence.cjs +1169 -1169
- package/.claude/helpers/learning-hooks.sh +329 -329
- package/.claude/helpers/learning-optimizer.sh +127 -127
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/memory.js +83 -83
- package/.claude/helpers/metrics-db.mjs +503 -503
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/post-commit +16 -16
- package/.claude/helpers/pre-commit +26 -26
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.js +105 -105
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.js +157 -157
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline-hook.sh +21 -21
- package/.claude/helpers/statusline.cjs +1290 -1290
- package/.claude/helpers/statusline.js +340 -340
- package/.claude/helpers/swarm-comms.sh +353 -353
- package/.claude/helpers/swarm-hooks.sh +761 -761
- package/.claude/helpers/swarm-monitor.sh +210 -210
- package/.claude/helpers/sync-v3-metrics.sh +245 -245
- package/.claude/helpers/update-v3-progress.sh +165 -165
- package/.claude/helpers/v3-quick-status.sh +57 -57
- package/.claude/helpers/v3.sh +110 -110
- package/.claude/helpers/validate-v3-config.sh +215 -215
- package/.claude/helpers/worker-manager.sh +170 -170
- package/.claude/proven-config.json +41 -41
- package/.claude/proven-config.manifest.json +37 -37
- package/.claude/proven-config.signed.json +41 -41
- package/.claude/settings.json +182 -182
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
- package/.claude/skills/agentdb-learning/SKILL.md +545 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
- package/.claude/skills/browser/SKILL.md +204 -204
- package/.claude/skills/dual-mode/README.md +71 -71
- package/.claude/skills/dual-mode/dual-collect.md +103 -103
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
- package/.claude/skills/dual-mode/dual-spawn.md +81 -81
- package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
- package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
- package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
- package/.claude/skills/github-code-review/SKILL.md +1125 -1125
- package/.claude/skills/github-multi-repo/SKILL.md +862 -862
- package/.claude/skills/github-project-management/SKILL.md +1262 -1262
- package/.claude/skills/github-release-management/SKILL.md +1064 -1064
- package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
- package/.claude/skills/skill-builder/SKILL.md +910 -910
- package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
- package/.claude/skills/stream-chain/SKILL.md +560 -560
- package/.claude/skills/swarm-advanced/SKILL.md +970 -970
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
- package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
- package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
- package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
- package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
- package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
- package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
- package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
- package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
- package/.claude/skills/verification-quality/SKILL.md +691 -691
- package/README.md +422 -422
- package/bin/cli.js +338 -338
- package/bin/mcp-server.js +224 -224
- package/bin/preinstall.cjs +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/benchmarks/gaia-critic.js +24 -24
- package/dist/src/business-pods/bbs-budget-tracker.js +53 -53
- package/dist/src/commands/completions.js +409 -409
- package/dist/src/commands/daemon.js +44 -44
- package/dist/src/commands/doctor.js +4 -4
- package/dist/src/commands/embeddings.js +26 -26
- package/dist/src/commands/hive-mind.js +97 -97
- package/dist/src/commands/hooks.js +9 -9
- package/dist/src/commands/init.js +75 -75
- package/dist/src/commands/ruvector/backup.js +23 -23
- package/dist/src/commands/ruvector/benchmark.js +31 -31
- package/dist/src/commands/ruvector/import.js +14 -14
- package/dist/src/commands/ruvector/init.js +115 -115
- package/dist/src/commands/ruvector/migrate.js +99 -99
- package/dist/src/commands/ruvector/optimize.js +51 -51
- package/dist/src/commands/ruvector/setup.js +624 -624
- package/dist/src/commands/ruvector/status.js +38 -38
- package/dist/src/config/proven-config.js +2 -2
- package/dist/src/init/claudemd-generator.js +273 -273
- package/dist/src/init/executor.js +453 -453
- package/dist/src/init/helper-signing.js +2 -2
- package/dist/src/init/helpers-generator.js +917 -751
- package/dist/src/init/statusline-generator.js +24 -24
- package/dist/src/mcp-tools/agentdb-tools.js +15 -15
- package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
- package/dist/src/mcp-tools/seraphina-tools.js +4 -4
- package/dist/src/memory/graph-edge-writer.js +22 -22
- package/dist/src/memory/memory-bridge.js +114 -114
- package/dist/src/memory/memory-initializer.js +416 -416
- package/dist/src/memory/rabitq-index.js +5 -5
- package/dist/src/proxy/verify.js +2 -2
- package/dist/src/runtime/headless.js +28 -28
- package/dist/src/ruvector/diskann-backend.d.ts +78 -0
- package/dist/src/ruvector/diskann-backend.js +310 -0
- package/dist/src/services/distill-tuning.js +7 -7
- package/dist/src/services/headless-worker-executor.js +84 -84
- package/dist/src/services/memory-distillation.js +18 -18
- package/dist/src/transfer/deploy-seraphine.js +23 -23
- package/node_modules/@claude-flow/codex/.agents/skills/github-automation/SKILL.md +32 -32
- package/node_modules/@claude-flow/codex/.agents/skills/memory-management/SKILL.md +45 -45
- package/node_modules/@claude-flow/codex/.agents/skills/performance-analysis/SKILL.md +32 -32
- package/node_modules/@claude-flow/codex/.agents/skills/security-audit/SKILL.md +46 -46
- package/node_modules/@claude-flow/codex/.agents/skills/sparc-methodology/SKILL.md +46 -46
- package/node_modules/@claude-flow/codex/.agents/skills/swarm-orchestration/SKILL.md +53 -53
- package/node_modules/@claude-flow/codex/README.md +1044 -1044
- package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js +13 -13
- package/node_modules/@claude-flow/codex/dist/generators/agents-md.js +664 -664
- package/node_modules/@claude-flow/codex/dist/generators/config-toml.js +455 -455
- package/node_modules/@claude-flow/codex/dist/generators/skill-md.js +45 -45
- package/node_modules/@claude-flow/codex/dist/initializer.js +167 -167
- package/node_modules/@claude-flow/codex/dist/templates/index.js +15 -15
- package/node_modules/@claude-flow/mcp/README.md +429 -429
- package/node_modules/@claude-flow/plugin-agent-federation/README.md +49 -49
- package/node_modules/@claude-flow/security/README.md +292 -292
- package/node_modules/@claude-flow/security/dist/credential-generator.js +9 -9
- package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
- package/node_modules/@claude-flow/security/dist/oauth/callback-server.js +9 -9
- package/package.json +181 -181
- package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
- package/plugins/ruflo-metaharness/README.md +72 -72
- package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
- package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +50 -50
- package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
- package/plugins/ruflo-metaharness/scripts/_harness.mjs +334 -334
- package/plugins/ruflo-metaharness/scripts/_invoke.mjs +230 -230
- package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
- package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
- package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
- package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
- package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
- package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
- package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
- package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
- package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
- package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
- package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
- package/plugins/ruflo-metaharness/scripts/genome.mjs +105 -105
- package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
- package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
- package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +110 -110
- package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
- package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
- package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
- package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
- package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
- package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
- package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
- package/plugins/ruflo-metaharness/scripts/smoke.sh +2422 -2422
- package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
- package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +498 -498
- package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
- package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
- package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +372 -372
- package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
- package/plugins/ruflo-metaharness/scripts/threat-model.mjs +62 -62
- package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
- package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
- package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +57 -57
- package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
- package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
- package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
- package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
- package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
- package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
- package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
- package/scripts/postinstall.cjs +153 -153
|
@@ -81,11 +81,11 @@ export async function buildRabitqIndex(options) {
|
|
|
81
81
|
const SQL = await initSqlJs();
|
|
82
82
|
const fileBuffer = fs.readFileSync(dbPath);
|
|
83
83
|
const db = new SQL.Database(fileBuffer);
|
|
84
|
-
const result = db.exec(`
|
|
85
|
-
SELECT id, key, namespace, embedding
|
|
86
|
-
FROM memory_entries
|
|
87
|
-
WHERE status = 'active' AND embedding IS NOT NULL
|
|
88
|
-
LIMIT 50000
|
|
84
|
+
const result = db.exec(`
|
|
85
|
+
SELECT id, key, namespace, embedding
|
|
86
|
+
FROM memory_entries
|
|
87
|
+
WHERE status = 'active' AND embedding IS NOT NULL
|
|
88
|
+
LIMIT 50000
|
|
89
89
|
`);
|
|
90
90
|
if (result[0]?.values) {
|
|
91
91
|
for (const row of result[0].values) {
|
package/dist/src/proxy/verify.js
CHANGED
|
@@ -15,8 +15,8 @@ import { createHash, createPublicKey, verify as cryptoVerify } from 'node:crypto
|
|
|
15
15
|
* live 2026-07-16 by verifying a real `SHA256SUMS.sig` from the v0.1.0
|
|
16
16
|
* release against it (crypto.verify -> true).
|
|
17
17
|
*/
|
|
18
|
-
export const PROXY_RELEASE_PUBKEY_PEM = `-----BEGIN PUBLIC KEY-----
|
|
19
|
-
MCowBQYDK2VwAyEAjhLDomjIGdcltYC7j+aiESQFD4LWoHaULietG1PuDjw=
|
|
18
|
+
export const PROXY_RELEASE_PUBKEY_PEM = `-----BEGIN PUBLIC KEY-----
|
|
19
|
+
MCowBQYDK2VwAyEAjhLDomjIGdcltYC7j+aiESQFD4LWoHaULietG1PuDjw=
|
|
20
20
|
-----END PUBLIC KEY-----`;
|
|
21
21
|
export class ReleaseVerificationError extends Error {
|
|
22
22
|
constructor(message) {
|
|
@@ -62,34 +62,34 @@ function parseArgs() {
|
|
|
62
62
|
* Show help message
|
|
63
63
|
*/
|
|
64
64
|
function showHelp() {
|
|
65
|
-
console.log(`
|
|
66
|
-
Headless Runtime for RuFlo V3
|
|
67
|
-
|
|
68
|
-
Usage:
|
|
69
|
-
headless --worker <type> Run a specific worker
|
|
70
|
-
headless --daemon Start background daemon
|
|
71
|
-
headless --benchmark Run performance benchmarks
|
|
72
|
-
headless --status Show system status
|
|
73
|
-
|
|
74
|
-
Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
|
|
75
|
-
|
|
76
|
-
Options:
|
|
77
|
-
-w, --worker <type> Worker type to run
|
|
78
|
-
-d, --daemon Run as daemon
|
|
79
|
-
-b, --benchmark Run benchmarks
|
|
80
|
-
-s, --status Show status
|
|
81
|
-
-t, --timeout <ms> Execution timeout (default: 60000)
|
|
82
|
-
-v, --verbose Verbose output
|
|
83
|
-
-h, --help Show help
|
|
84
|
-
|
|
85
|
-
Environment:
|
|
86
|
-
CLAUDE_FLOW_HEADLESS=true Enable headless mode
|
|
87
|
-
CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
|
|
88
|
-
|
|
89
|
-
Examples:
|
|
90
|
-
headless --worker audit --timeout 120000
|
|
91
|
-
headless --daemon
|
|
92
|
-
headless --benchmark
|
|
65
|
+
console.log(`
|
|
66
|
+
Headless Runtime for RuFlo V3
|
|
67
|
+
|
|
68
|
+
Usage:
|
|
69
|
+
headless --worker <type> Run a specific worker
|
|
70
|
+
headless --daemon Start background daemon
|
|
71
|
+
headless --benchmark Run performance benchmarks
|
|
72
|
+
headless --status Show system status
|
|
73
|
+
|
|
74
|
+
Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
|
|
75
|
+
|
|
76
|
+
Options:
|
|
77
|
+
-w, --worker <type> Worker type to run
|
|
78
|
+
-d, --daemon Run as daemon
|
|
79
|
+
-b, --benchmark Run benchmarks
|
|
80
|
+
-s, --status Show status
|
|
81
|
+
-t, --timeout <ms> Execution timeout (default: 60000)
|
|
82
|
+
-v, --verbose Verbose output
|
|
83
|
+
-h, --help Show help
|
|
84
|
+
|
|
85
|
+
Environment:
|
|
86
|
+
CLAUDE_FLOW_HEADLESS=true Enable headless mode
|
|
87
|
+
CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
headless --worker audit --timeout 120000
|
|
91
|
+
headless --daemon
|
|
92
|
+
headless --benchmark
|
|
93
93
|
`);
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiskANN Vector Search Backend
|
|
3
|
+
*
|
|
4
|
+
* SSD-friendly approximate nearest neighbor search using Vamana graph.
|
|
5
|
+
* Falls back gracefully to HNSW (@ruvector/router VectorDb) or
|
|
6
|
+
* pure-JS cosine similarity when DiskANN is unavailable.
|
|
7
|
+
*
|
|
8
|
+
* @module v3/cli/ruvector/diskann-backend
|
|
9
|
+
*/
|
|
10
|
+
export interface DiskAnnConfig {
|
|
11
|
+
dim: number;
|
|
12
|
+
maxDegree?: number;
|
|
13
|
+
buildBeam?: number;
|
|
14
|
+
searchBeam?: number;
|
|
15
|
+
alpha?: number;
|
|
16
|
+
pqSubspaces?: number;
|
|
17
|
+
storagePath?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SearchResult {
|
|
20
|
+
id: string;
|
|
21
|
+
distance: number;
|
|
22
|
+
score: number;
|
|
23
|
+
}
|
|
24
|
+
export type VectorBackend = 'diskann' | 'hnsw' | 'cosine-js';
|
|
25
|
+
/**
|
|
26
|
+
* Check if @ruvector/diskann is available
|
|
27
|
+
*/
|
|
28
|
+
export declare function isDiskAnnAvailable(): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Create or get a DiskANN index instance
|
|
31
|
+
*/
|
|
32
|
+
export declare function getDiskAnnIndex(config: DiskAnnConfig): Promise<{
|
|
33
|
+
index: any;
|
|
34
|
+
backend: VectorBackend;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Get the active backend name
|
|
38
|
+
*/
|
|
39
|
+
export declare function getActiveBackend(): VectorBackend;
|
|
40
|
+
/**
|
|
41
|
+
* Reset the index (for testing)
|
|
42
|
+
*/
|
|
43
|
+
export declare function resetIndex(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Insert a vector into the active backend
|
|
46
|
+
*/
|
|
47
|
+
export declare function insertVector(id: string, vector: Float32Array, config?: DiskAnnConfig): Promise<{
|
|
48
|
+
backend: VectorBackend;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Build the index (required for DiskANN before search)
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildIndex(config?: DiskAnnConfig): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Search for k nearest neighbors
|
|
56
|
+
*/
|
|
57
|
+
export declare function searchVectors(query: Float32Array, k: number, config?: DiskAnnConfig): Promise<SearchResult[]>;
|
|
58
|
+
export interface BenchmarkResult {
|
|
59
|
+
backend: VectorBackend;
|
|
60
|
+
dim: number;
|
|
61
|
+
vectorCount: number;
|
|
62
|
+
insertTimeMs: number;
|
|
63
|
+
buildTimeMs: number;
|
|
64
|
+
searchTimeMs: number;
|
|
65
|
+
searchesPerSecond: number;
|
|
66
|
+
recall: number;
|
|
67
|
+
memoryMB: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Run a benchmark comparing available backends
|
|
71
|
+
*/
|
|
72
|
+
export declare function benchmark(opts?: {
|
|
73
|
+
dim?: number;
|
|
74
|
+
vectorCount?: number;
|
|
75
|
+
k?: number;
|
|
76
|
+
queries?: number;
|
|
77
|
+
}): Promise<BenchmarkResult[]>;
|
|
78
|
+
//# sourceMappingURL=diskann-backend.d.ts.map
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiskANN Vector Search Backend
|
|
3
|
+
*
|
|
4
|
+
* SSD-friendly approximate nearest neighbor search using Vamana graph.
|
|
5
|
+
* Falls back gracefully to HNSW (@ruvector/router VectorDb) or
|
|
6
|
+
* pure-JS cosine similarity when DiskANN is unavailable.
|
|
7
|
+
*
|
|
8
|
+
* @module v3/cli/ruvector/diskann-backend
|
|
9
|
+
*/
|
|
10
|
+
// ===== Lazy loading =====
|
|
11
|
+
let diskannInstance = null;
|
|
12
|
+
let diskannAvailable = null;
|
|
13
|
+
let activeBackend = 'cosine-js';
|
|
14
|
+
/**
|
|
15
|
+
* Check if @ruvector/diskann is available
|
|
16
|
+
*/
|
|
17
|
+
export async function isDiskAnnAvailable() {
|
|
18
|
+
if (diskannAvailable !== null)
|
|
19
|
+
return diskannAvailable;
|
|
20
|
+
try {
|
|
21
|
+
const { createRequire } = await import('module');
|
|
22
|
+
const require2 = createRequire(import.meta.url);
|
|
23
|
+
const mod = require2('@ruvector/diskann');
|
|
24
|
+
diskannAvailable = typeof mod.DiskAnn === 'function';
|
|
25
|
+
return diskannAvailable;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
diskannAvailable = false;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create or get a DiskANN index instance
|
|
34
|
+
*/
|
|
35
|
+
export async function getDiskAnnIndex(config) {
|
|
36
|
+
if (diskannInstance)
|
|
37
|
+
return { index: diskannInstance, backend: activeBackend };
|
|
38
|
+
// Try DiskANN first
|
|
39
|
+
if (await isDiskAnnAvailable()) {
|
|
40
|
+
try {
|
|
41
|
+
const { createRequire } = await import('module');
|
|
42
|
+
const require2 = createRequire(import.meta.url);
|
|
43
|
+
const { DiskAnn } = require2('@ruvector/diskann');
|
|
44
|
+
const index = new DiskAnn({
|
|
45
|
+
dim: config.dim,
|
|
46
|
+
maxDegree: config.maxDegree ?? 64,
|
|
47
|
+
buildBeam: config.buildBeam ?? 128,
|
|
48
|
+
searchBeam: config.searchBeam ?? 64,
|
|
49
|
+
alpha: config.alpha ?? 1.2,
|
|
50
|
+
pqSubspaces: config.pqSubspaces ?? 0,
|
|
51
|
+
storagePath: config.storagePath,
|
|
52
|
+
});
|
|
53
|
+
diskannInstance = index;
|
|
54
|
+
activeBackend = 'diskann';
|
|
55
|
+
return { index, backend: 'diskann' };
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Fall through
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Try HNSW (@ruvector/router VectorDb) as fallback
|
|
62
|
+
try {
|
|
63
|
+
const { createRequire } = await import('module');
|
|
64
|
+
const require2 = createRequire(import.meta.url);
|
|
65
|
+
const router = require2('@ruvector/router');
|
|
66
|
+
if (router.VectorDb && router.DistanceMetric) {
|
|
67
|
+
const index = new router.VectorDb({
|
|
68
|
+
dimensions: config.dim,
|
|
69
|
+
distanceMetric: router.DistanceMetric.Cosine,
|
|
70
|
+
hnswM: 16,
|
|
71
|
+
hnswEfConstruction: 200,
|
|
72
|
+
hnswEfSearch: 100,
|
|
73
|
+
});
|
|
74
|
+
diskannInstance = index;
|
|
75
|
+
activeBackend = 'hnsw';
|
|
76
|
+
return { index, backend: 'hnsw' };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Fall through
|
|
81
|
+
}
|
|
82
|
+
// Pure JS fallback
|
|
83
|
+
const jsIndex = createJsFallbackIndex(config.dim);
|
|
84
|
+
diskannInstance = jsIndex;
|
|
85
|
+
activeBackend = 'cosine-js';
|
|
86
|
+
return { index: jsIndex, backend: 'cosine-js' };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the active backend name
|
|
90
|
+
*/
|
|
91
|
+
export function getActiveBackend() {
|
|
92
|
+
return activeBackend;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Reset the index (for testing)
|
|
96
|
+
*/
|
|
97
|
+
export function resetIndex() {
|
|
98
|
+
diskannInstance = null;
|
|
99
|
+
diskannAvailable = null;
|
|
100
|
+
activeBackend = 'cosine-js';
|
|
101
|
+
}
|
|
102
|
+
// ===== Unified search interface =====
|
|
103
|
+
/**
|
|
104
|
+
* Insert a vector into the active backend
|
|
105
|
+
*/
|
|
106
|
+
export async function insertVector(id, vector, config = { dim: 384 }) {
|
|
107
|
+
const { index, backend } = await getDiskAnnIndex(config);
|
|
108
|
+
if (backend === 'diskann') {
|
|
109
|
+
index.insert(id, vector);
|
|
110
|
+
}
|
|
111
|
+
else if (backend === 'hnsw') {
|
|
112
|
+
index.insert(id, vector);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
index.insert(id, vector);
|
|
116
|
+
}
|
|
117
|
+
return { backend };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Build the index (required for DiskANN before search)
|
|
121
|
+
*/
|
|
122
|
+
export async function buildIndex(config = { dim: 384 }) {
|
|
123
|
+
const { index, backend } = await getDiskAnnIndex(config);
|
|
124
|
+
if (backend === 'diskann' && typeof index.build === 'function') {
|
|
125
|
+
index.build();
|
|
126
|
+
}
|
|
127
|
+
// HNSW and JS fallback don't need explicit build
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Search for k nearest neighbors
|
|
131
|
+
*/
|
|
132
|
+
export async function searchVectors(query, k, config = { dim: 384 }) {
|
|
133
|
+
const { index, backend } = await getDiskAnnIndex(config);
|
|
134
|
+
if (backend === 'diskann') {
|
|
135
|
+
const results = index.search(query, k);
|
|
136
|
+
return results.map((r) => ({
|
|
137
|
+
id: r.id,
|
|
138
|
+
distance: r.distance,
|
|
139
|
+
score: 1 / (1 + r.distance), // Convert L2 distance to similarity
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
if (backend === 'hnsw') {
|
|
143
|
+
const results = index.search(query, k);
|
|
144
|
+
return results.map((r) => ({
|
|
145
|
+
id: r.id,
|
|
146
|
+
distance: r.score, // VectorDb returns distance as 'score'
|
|
147
|
+
score: 1 / (1 + r.score),
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
// JS fallback
|
|
151
|
+
return index.search(query, k);
|
|
152
|
+
}
|
|
153
|
+
// ===== Pure JS fallback =====
|
|
154
|
+
function createJsFallbackIndex(dim) {
|
|
155
|
+
const vectors = new Map();
|
|
156
|
+
return {
|
|
157
|
+
insert(id, vector) {
|
|
158
|
+
vectors.set(id, new Float32Array(vector));
|
|
159
|
+
},
|
|
160
|
+
search(query, k) {
|
|
161
|
+
const results = [];
|
|
162
|
+
for (const [id, vec] of vectors) {
|
|
163
|
+
let dot = 0, normQ = 0, normV = 0;
|
|
164
|
+
for (let i = 0; i < dim; i++) {
|
|
165
|
+
dot += query[i] * vec[i];
|
|
166
|
+
normQ += query[i] * query[i];
|
|
167
|
+
normV += vec[i] * vec[i];
|
|
168
|
+
}
|
|
169
|
+
const cosine = dot / (Math.sqrt(normQ) * Math.sqrt(normV) || 1);
|
|
170
|
+
const distance = 1 - cosine;
|
|
171
|
+
results.push({ id, distance, score: cosine });
|
|
172
|
+
}
|
|
173
|
+
return results.sort((a, b) => a.distance - b.distance).slice(0, k);
|
|
174
|
+
},
|
|
175
|
+
count() { return vectors.size; },
|
|
176
|
+
delete(id) { return vectors.delete(id); },
|
|
177
|
+
build() { },
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Run a benchmark comparing available backends
|
|
182
|
+
*/
|
|
183
|
+
export async function benchmark(opts = {}) {
|
|
184
|
+
const dim = opts.dim ?? 384;
|
|
185
|
+
const n = opts.vectorCount ?? 1000;
|
|
186
|
+
const k = opts.k ?? 10;
|
|
187
|
+
const queryCount = opts.queries ?? 100;
|
|
188
|
+
const results = [];
|
|
189
|
+
// Generate random vectors
|
|
190
|
+
const vectors = [];
|
|
191
|
+
for (let i = 0; i < n; i++) {
|
|
192
|
+
const v = new Float32Array(dim);
|
|
193
|
+
for (let j = 0; j < dim; j++)
|
|
194
|
+
v[j] = Math.random() * 2 - 1;
|
|
195
|
+
// Normalize
|
|
196
|
+
let norm = 0;
|
|
197
|
+
for (let j = 0; j < dim; j++)
|
|
198
|
+
norm += v[j] * v[j];
|
|
199
|
+
norm = Math.sqrt(norm);
|
|
200
|
+
for (let j = 0; j < dim; j++)
|
|
201
|
+
v[j] /= norm;
|
|
202
|
+
vectors.push([`vec-${i}`, v]);
|
|
203
|
+
}
|
|
204
|
+
// Generate query vectors
|
|
205
|
+
const queries = [];
|
|
206
|
+
for (let i = 0; i < queryCount; i++) {
|
|
207
|
+
const q = new Float32Array(dim);
|
|
208
|
+
for (let j = 0; j < dim; j++)
|
|
209
|
+
q[j] = Math.random() * 2 - 1;
|
|
210
|
+
let norm = 0;
|
|
211
|
+
for (let j = 0; j < dim; j++)
|
|
212
|
+
norm += q[j] * q[j];
|
|
213
|
+
norm = Math.sqrt(norm);
|
|
214
|
+
for (let j = 0; j < dim; j++)
|
|
215
|
+
q[j] /= norm;
|
|
216
|
+
queries.push(q);
|
|
217
|
+
}
|
|
218
|
+
// Brute force ground truth
|
|
219
|
+
function bruteForceSearch(query) {
|
|
220
|
+
const scores = [];
|
|
221
|
+
for (const [id, vec] of vectors) {
|
|
222
|
+
let dist = 0;
|
|
223
|
+
for (let j = 0; j < dim; j++) {
|
|
224
|
+
const d = query[j] - vec[j];
|
|
225
|
+
dist += d * d;
|
|
226
|
+
}
|
|
227
|
+
scores.push({ id, dist });
|
|
228
|
+
}
|
|
229
|
+
scores.sort((a, b) => a.dist - b.dist);
|
|
230
|
+
return scores.slice(0, k).map(s => s.id);
|
|
231
|
+
}
|
|
232
|
+
const groundTruth = queries.map(q => bruteForceSearch(q));
|
|
233
|
+
// Test each available backend
|
|
234
|
+
for (const backendName of ['diskann', 'hnsw', 'cosine-js']) {
|
|
235
|
+
resetIndex();
|
|
236
|
+
try {
|
|
237
|
+
let index;
|
|
238
|
+
const memBefore = process.memoryUsage().heapUsed;
|
|
239
|
+
if (backendName === 'diskann') {
|
|
240
|
+
if (!(await isDiskAnnAvailable()))
|
|
241
|
+
continue;
|
|
242
|
+
const { createRequire } = await import('module');
|
|
243
|
+
const require2 = createRequire(import.meta.url);
|
|
244
|
+
const { DiskAnn } = require2('@ruvector/diskann');
|
|
245
|
+
index = new DiskAnn({ dim, maxDegree: 64, buildBeam: 128, searchBeam: 64 });
|
|
246
|
+
}
|
|
247
|
+
else if (backendName === 'hnsw') {
|
|
248
|
+
try {
|
|
249
|
+
const { createRequire } = await import('module');
|
|
250
|
+
const require2 = createRequire(import.meta.url);
|
|
251
|
+
const router = require2('@ruvector/router');
|
|
252
|
+
if (!router.VectorDb)
|
|
253
|
+
continue;
|
|
254
|
+
index = new router.VectorDb({ dimensions: dim, distanceMetric: router.DistanceMetric.Cosine });
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
index = createJsFallbackIndex(dim);
|
|
262
|
+
}
|
|
263
|
+
// Insert
|
|
264
|
+
const insertStart = performance.now();
|
|
265
|
+
for (const [id, vec] of vectors) {
|
|
266
|
+
index.insert(id, vec);
|
|
267
|
+
}
|
|
268
|
+
const insertTime = performance.now() - insertStart;
|
|
269
|
+
// Build
|
|
270
|
+
const buildStart = performance.now();
|
|
271
|
+
if (typeof index.build === 'function')
|
|
272
|
+
index.build();
|
|
273
|
+
const buildTime = performance.now() - buildStart;
|
|
274
|
+
// Search
|
|
275
|
+
const searchStart = performance.now();
|
|
276
|
+
const searchResults = [];
|
|
277
|
+
for (const q of queries) {
|
|
278
|
+
const r = index.search(q, k);
|
|
279
|
+
searchResults.push(r.map((x) => x.id));
|
|
280
|
+
}
|
|
281
|
+
const searchTime = performance.now() - searchStart;
|
|
282
|
+
// Recall vs ground truth
|
|
283
|
+
let totalRecall = 0;
|
|
284
|
+
for (let i = 0; i < queryCount; i++) {
|
|
285
|
+
const truth = new Set(groundTruth[i]);
|
|
286
|
+
const found = searchResults[i].filter(id => truth.has(id)).length;
|
|
287
|
+
totalRecall += found / k;
|
|
288
|
+
}
|
|
289
|
+
const recall = totalRecall / queryCount;
|
|
290
|
+
const memAfter = process.memoryUsage().heapUsed;
|
|
291
|
+
results.push({
|
|
292
|
+
backend: backendName,
|
|
293
|
+
dim,
|
|
294
|
+
vectorCount: n,
|
|
295
|
+
insertTimeMs: Math.round(insertTime * 100) / 100,
|
|
296
|
+
buildTimeMs: Math.round(buildTime * 100) / 100,
|
|
297
|
+
searchTimeMs: Math.round(searchTime * 100) / 100,
|
|
298
|
+
searchesPerSecond: Math.round(queryCount / (searchTime / 1000)),
|
|
299
|
+
recall: Math.round(recall * 1000) / 1000,
|
|
300
|
+
memoryMB: Math.round((memAfter - memBefore) / 1024 / 1024 * 100) / 100,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
// Backend failed, skip
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
resetIndex();
|
|
308
|
+
return results;
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=diskann-backend.js.map
|
|
@@ -278,9 +278,9 @@ function buildQuerySet(db, opts) {
|
|
|
278
278
|
return [];
|
|
279
279
|
const placeholders = namespaces.map(() => '?').join(',');
|
|
280
280
|
const hiFinite = Number.isFinite(hiRowid);
|
|
281
|
-
const sql = `SELECT rowid, id, namespace, content, embedding FROM memory_entries
|
|
282
|
-
WHERE rowid > ? ${hiFinite ? 'AND rowid <= ?' : ''} AND embedding IS NOT NULL
|
|
283
|
-
AND COALESCE(namespace,'default') IN (${placeholders})
|
|
281
|
+
const sql = `SELECT rowid, id, namespace, content, embedding FROM memory_entries
|
|
282
|
+
WHERE rowid > ? ${hiFinite ? 'AND rowid <= ?' : ''} AND embedding IS NOT NULL
|
|
283
|
+
AND COALESCE(namespace,'default') IN (${placeholders})
|
|
284
284
|
ORDER BY rowid`;
|
|
285
285
|
const args = hiFinite ? [loRowid, hiRowid, ...namespaces] : [loRowid, ...namespaces];
|
|
286
286
|
const rows = db.prepare(sql).all(...args);
|
|
@@ -398,7 +398,7 @@ function resetDistillationState(db) {
|
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
400
|
function applyCorroboratedPromotion(db) {
|
|
401
|
-
db.prepare(`UPDATE reasoning_patterns SET metadata = json_set(metadata, '$.promoted', 1)
|
|
401
|
+
db.prepare(`UPDATE reasoning_patterns SET metadata = json_set(metadata, '$.promoted', 1)
|
|
402
402
|
WHERE json_extract(metadata, '$.provenance') = 'proxy:structural' AND uses >= ?`).run(CORROBORATION_MIN_USES);
|
|
403
403
|
}
|
|
404
404
|
// ── Scoring (MRR@K / recall@K, shared by candidate + baseline paths) ────
|
|
@@ -437,9 +437,9 @@ function isTopicallyCorrect(q, p) {
|
|
|
437
437
|
// ── pattern_embeddings BLOB → number[] ───────────────────────────────────
|
|
438
438
|
function loadPromotedPatternIndex(db) {
|
|
439
439
|
const rows = db
|
|
440
|
-
.prepare(`SELECT rp.id AS id, rp.tags AS tags, rp.metadata AS metadata, pe.embedding AS embedding
|
|
441
|
-
FROM reasoning_patterns rp
|
|
442
|
-
JOIN pattern_embeddings pe ON pe.pattern_id = rp.id
|
|
440
|
+
.prepare(`SELECT rp.id AS id, rp.tags AS tags, rp.metadata AS metadata, pe.embedding AS embedding
|
|
441
|
+
FROM reasoning_patterns rp
|
|
442
|
+
JOIN pattern_embeddings pe ON pe.pattern_id = rp.id
|
|
443
443
|
WHERE json_extract(rp.metadata, '$.promoted') = 1`)
|
|
444
444
|
.all();
|
|
445
445
|
return rows.map((r) => {
|