@claude-flow/cli 3.21.1 → 3.22.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/helpers/helpers.manifest.json +12 -0
- package/.claude/helpers/hook-handler.cjs +26 -5
- package/.claude/helpers/intelligence.cjs +4 -1
- package/dist/src/commands/daemon.js +23 -2
- package/dist/src/commands/memory-distill.d.ts +27 -0
- package/dist/src/commands/memory-distill.js +374 -0
- package/dist/src/commands/memory.js +4 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +22 -1
- package/dist/src/init/executor.js +20 -0
- package/dist/src/init/helper-refresh.d.ts +19 -0
- package/dist/src/init/helper-refresh.js +175 -0
- package/dist/src/init/helper-signing.d.ts +30 -0
- package/dist/src/init/helper-signing.js +60 -0
- package/dist/src/init/helpers-generator.d.ts +16 -0
- package/dist/src/init/helpers-generator.js +63 -6
- package/dist/src/init/statusline-generator.js +18 -7
- package/dist/src/mcp-client.js +13 -0
- package/dist/src/mcp-tools/agenticow-speculate-tools.js +9 -2
- package/dist/src/mcp-tools/browser-intent-tools.d.ts +162 -0
- package/dist/src/mcp-tools/browser-intent-tools.js +548 -0
- package/dist/src/mcp-tools/browser-tools.d.ts +9 -1
- package/dist/src/mcp-tools/browser-tools.js +4 -1
- package/dist/src/memory/memory-bridge.js +67 -47
- package/dist/src/memory/memory-initializer.d.ts +71 -0
- package/dist/src/memory/memory-initializer.js +330 -2
- package/dist/src/services/distill-tuning.d.ts +111 -0
- package/dist/src/services/distill-tuning.js +510 -0
- package/dist/src/services/memory-distillation.d.ts +41 -0
- package/dist/src/services/memory-distillation.js +277 -0
- package/dist/src/services/worker-daemon.d.ts +22 -1
- package/dist/src/services/worker-daemon.js +117 -6
- package/package.json +5 -2
- package/dist/src/agenticow/speculative-exploration.d.ts.map +0 -1
- package/dist/src/agenticow/speculative-exploration.js.map +0 -1
- package/dist/src/appliance/gguf-engine.d.ts.map +0 -1
- package/dist/src/appliance/gguf-engine.js.map +0 -1
- package/dist/src/appliance/ruvllm-bridge.d.ts.map +0 -1
- package/dist/src/appliance/ruvllm-bridge.js.map +0 -1
- package/dist/src/appliance/rvfa-builder.d.ts.map +0 -1
- package/dist/src/appliance/rvfa-builder.js.map +0 -1
- package/dist/src/appliance/rvfa-distribution.d.ts.map +0 -1
- package/dist/src/appliance/rvfa-distribution.js.map +0 -1
- package/dist/src/appliance/rvfa-format.d.ts.map +0 -1
- package/dist/src/appliance/rvfa-format.js.map +0 -1
- package/dist/src/appliance/rvfa-runner.d.ts.map +0 -1
- package/dist/src/appliance/rvfa-runner.js.map +0 -1
- package/dist/src/appliance/rvfa-signing.d.ts.map +0 -1
- package/dist/src/appliance/rvfa-signing.js.map +0 -1
- package/dist/src/autopilot-state.d.ts.map +0 -1
- package/dist/src/autopilot-state.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent-planning.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent.js.map +0 -1
- package/dist/src/benchmarks/gaia-causal-memory.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-causal-memory.js.map +0 -1
- package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-causal-memory.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-convergence.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-convergence.js.map +0 -1
- package/dist/src/benchmarks/gaia-convergence.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-convergence.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-critic.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-critic.js.map +0 -1
- package/dist/src/benchmarks/gaia-critic.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-critic.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-decomposer.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-decomposer.js.map +0 -1
- package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-decomposer.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-e2e-smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-e2e-smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-extract.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-extract.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/features.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/features.js.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/predictor.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/predictor.js.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.js.map +0 -1
- package/dist/src/benchmarks/gaia-judge.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-judge.js.map +0 -1
- package/dist/src/benchmarks/gaia-loader.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-loader.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/file_read.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/file_read.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/index.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/index.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/types.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/types.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.js.map +0 -1
- package/dist/src/benchmarks/gaia-voting.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-voting.js.map +0 -1
- package/dist/src/benchmarks/gaia-voting.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-voting.smoke.js.map +0 -1
- package/dist/src/benchmarks/pretrain/index.d.ts.map +0 -1
- package/dist/src/benchmarks/pretrain/index.js.map +0 -1
- package/dist/src/business-pods/bbs-budget-tracker.d.ts.map +0 -1
- package/dist/src/business-pods/bbs-budget-tracker.js.map +0 -1
- package/dist/src/business-pods/domain-affinity-policy.d.ts.map +0 -1
- package/dist/src/business-pods/domain-affinity-policy.js.map +0 -1
- package/dist/src/business-pods/pod-schema.d.ts.map +0 -1
- package/dist/src/business-pods/pod-schema.js.map +0 -1
- package/dist/src/commands/agent-wasm.d.ts.map +0 -1
- package/dist/src/commands/agent-wasm.js.map +0 -1
- package/dist/src/commands/agent.d.ts.map +0 -1
- package/dist/src/commands/agent.js.map +0 -1
- package/dist/src/commands/analyze.d.ts.map +0 -1
- package/dist/src/commands/analyze.js.map +0 -1
- package/dist/src/commands/appliance-advanced.d.ts.map +0 -1
- package/dist/src/commands/appliance-advanced.js.map +0 -1
- package/dist/src/commands/appliance.d.ts.map +0 -1
- package/dist/src/commands/appliance.js.map +0 -1
- package/dist/src/commands/autopilot.d.ts.map +0 -1
- package/dist/src/commands/autopilot.js.map +0 -1
- package/dist/src/commands/benchmark.d.ts.map +0 -1
- package/dist/src/commands/benchmark.js.map +0 -1
- package/dist/src/commands/claims.d.ts.map +0 -1
- package/dist/src/commands/claims.js.map +0 -1
- package/dist/src/commands/cleanup.d.ts.map +0 -1
- package/dist/src/commands/cleanup.js.map +0 -1
- package/dist/src/commands/completions.d.ts.map +0 -1
- package/dist/src/commands/completions.js.map +0 -1
- package/dist/src/commands/config.d.ts.map +0 -1
- package/dist/src/commands/config.js.map +0 -1
- package/dist/src/commands/daemon.d.ts.map +0 -1
- package/dist/src/commands/daemon.js.map +0 -1
- package/dist/src/commands/deployment.d.ts.map +0 -1
- package/dist/src/commands/deployment.js.map +0 -1
- package/dist/src/commands/doctor.d.ts.map +0 -1
- package/dist/src/commands/doctor.js.map +0 -1
- package/dist/src/commands/eject.d.ts.map +0 -1
- package/dist/src/commands/eject.js.map +0 -1
- package/dist/src/commands/embeddings.d.ts.map +0 -1
- package/dist/src/commands/embeddings.js.map +0 -1
- package/dist/src/commands/gaia-bench.d.ts.map +0 -1
- package/dist/src/commands/gaia-bench.js.map +0 -1
- package/dist/src/commands/guidance.d.ts.map +0 -1
- package/dist/src/commands/guidance.js.map +0 -1
- package/dist/src/commands/hive-mind.d.ts.map +0 -1
- package/dist/src/commands/hive-mind.js.map +0 -1
- package/dist/src/commands/hooks.d.ts.map +0 -1
- package/dist/src/commands/hooks.js.map +0 -1
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js.map +0 -1
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/issues.d.ts.map +0 -1
- package/dist/src/commands/issues.js.map +0 -1
- package/dist/src/commands/mcp.d.ts.map +0 -1
- package/dist/src/commands/mcp.js.map +0 -1
- package/dist/src/commands/memory.d.ts.map +0 -1
- package/dist/src/commands/memory.js.map +0 -1
- package/dist/src/commands/metaharness.d.ts.map +0 -1
- package/dist/src/commands/metaharness.js.map +0 -1
- package/dist/src/commands/migrate.d.ts.map +0 -1
- package/dist/src/commands/migrate.js.map +0 -1
- package/dist/src/commands/neural.d.ts.map +0 -1
- package/dist/src/commands/neural.js.map +0 -1
- package/dist/src/commands/performance.d.ts.map +0 -1
- package/dist/src/commands/performance.js.map +0 -1
- package/dist/src/commands/plugins.d.ts.map +0 -1
- package/dist/src/commands/plugins.js.map +0 -1
- package/dist/src/commands/process.d.ts.map +0 -1
- package/dist/src/commands/process.js.map +0 -1
- package/dist/src/commands/progress.d.ts.map +0 -1
- package/dist/src/commands/progress.js.map +0 -1
- package/dist/src/commands/providers.d.ts.map +0 -1
- package/dist/src/commands/providers.js.map +0 -1
- package/dist/src/commands/route.d.ts.map +0 -1
- package/dist/src/commands/route.js.map +0 -1
- package/dist/src/commands/ruvector/backup.d.ts.map +0 -1
- package/dist/src/commands/ruvector/backup.js.map +0 -1
- package/dist/src/commands/ruvector/benchmark.d.ts.map +0 -1
- package/dist/src/commands/ruvector/benchmark.js.map +0 -1
- package/dist/src/commands/ruvector/import.d.ts.map +0 -1
- package/dist/src/commands/ruvector/import.js.map +0 -1
- package/dist/src/commands/ruvector/index.d.ts.map +0 -1
- package/dist/src/commands/ruvector/index.js.map +0 -1
- package/dist/src/commands/ruvector/init.d.ts.map +0 -1
- package/dist/src/commands/ruvector/init.js.map +0 -1
- package/dist/src/commands/ruvector/migrate.d.ts.map +0 -1
- package/dist/src/commands/ruvector/migrate.js.map +0 -1
- package/dist/src/commands/ruvector/optimize.d.ts.map +0 -1
- package/dist/src/commands/ruvector/optimize.js.map +0 -1
- package/dist/src/commands/ruvector/pg-utils.d.ts.map +0 -1
- package/dist/src/commands/ruvector/pg-utils.js.map +0 -1
- package/dist/src/commands/ruvector/setup.d.ts.map +0 -1
- package/dist/src/commands/ruvector/setup.js.map +0 -1
- package/dist/src/commands/ruvector/status.d.ts.map +0 -1
- package/dist/src/commands/ruvector/status.js.map +0 -1
- package/dist/src/commands/security.d.ts.map +0 -1
- package/dist/src/commands/security.js.map +0 -1
- package/dist/src/commands/session.d.ts.map +0 -1
- package/dist/src/commands/session.js.map +0 -1
- package/dist/src/commands/start.d.ts.map +0 -1
- package/dist/src/commands/start.js.map +0 -1
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/commands/swarm.d.ts.map +0 -1
- package/dist/src/commands/swarm.js.map +0 -1
- package/dist/src/commands/task.d.ts.map +0 -1
- package/dist/src/commands/task.js.map +0 -1
- package/dist/src/commands/transfer-store.d.ts.map +0 -1
- package/dist/src/commands/transfer-store.js.map +0 -1
- package/dist/src/commands/update.d.ts.map +0 -1
- package/dist/src/commands/update.js.map +0 -1
- package/dist/src/commands/verify.d.ts.map +0 -1
- package/dist/src/commands/verify.js.map +0 -1
- package/dist/src/commands/workflow.d.ts.map +0 -1
- package/dist/src/commands/workflow.js.map +0 -1
- package/dist/src/config-adapter.d.ts.map +0 -1
- package/dist/src/config-adapter.js.map +0 -1
- package/dist/src/encryption/vault.d.ts.map +0 -1
- package/dist/src/encryption/vault.js.map +0 -1
- package/dist/src/fs-secure.d.ts.map +0 -1
- package/dist/src/fs-secure.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/infrastructure/in-memory-repositories.d.ts.map +0 -1
- package/dist/src/infrastructure/in-memory-repositories.js.map +0 -1
- package/dist/src/init/claudemd-generator.d.ts.map +0 -1
- package/dist/src/init/claudemd-generator.js.map +0 -1
- package/dist/src/init/executor.d.ts.map +0 -1
- package/dist/src/init/executor.js.map +0 -1
- package/dist/src/init/helpers-generator.d.ts.map +0 -1
- package/dist/src/init/helpers-generator.js.map +0 -1
- package/dist/src/init/index.d.ts.map +0 -1
- package/dist/src/init/index.js.map +0 -1
- package/dist/src/init/mcp-generator.d.ts.map +0 -1
- package/dist/src/init/mcp-generator.js.map +0 -1
- package/dist/src/init/memory-package-resolver.d.ts.map +0 -1
- package/dist/src/init/memory-package-resolver.js.map +0 -1
- package/dist/src/init/settings-generator.d.ts.map +0 -1
- package/dist/src/init/settings-generator.js.map +0 -1
- package/dist/src/init/statusline-generator.d.ts.map +0 -1
- package/dist/src/init/statusline-generator.js.map +0 -1
- package/dist/src/init/types.d.ts.map +0 -1
- package/dist/src/init/types.js.map +0 -1
- package/dist/src/log-filters.d.ts.map +0 -1
- package/dist/src/log-filters.js.map +0 -1
- package/dist/src/mcp-client.d.ts.map +0 -1
- package/dist/src/mcp-client.js.map +0 -1
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-server.js.map +0 -1
- package/dist/src/mcp-tools/agent-execute-core.d.ts.map +0 -1
- package/dist/src/mcp-tools/agent-execute-core.js.map +0 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/agent-tools.js.map +0 -1
- package/dist/src/mcp-tools/agentbbs-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/agentbbs-tools.js.map +0 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/agentdb-tools.js.map +0 -1
- package/dist/src/mcp-tools/agenticow-loader.d.ts.map +0 -1
- package/dist/src/mcp-tools/agenticow-loader.js.map +0 -1
- package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/agenticow-speculate-tools.js.map +0 -1
- package/dist/src/mcp-tools/agenticow-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/agenticow-tools.js.map +0 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/analyze-tools.js.map +0 -1
- package/dist/src/mcp-tools/auto-install.d.ts.map +0 -1
- package/dist/src/mcp-tools/auto-install.js.map +0 -1
- package/dist/src/mcp-tools/autopilot-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/autopilot-tools.js.map +0 -1
- package/dist/src/mcp-tools/browser-session-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/browser-session-tools.js.map +0 -1
- package/dist/src/mcp-tools/browser-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/browser-tools.js.map +0 -1
- package/dist/src/mcp-tools/business-pod-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/business-pod-tools.js.map +0 -1
- package/dist/src/mcp-tools/claims-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/claims-tools.js.map +0 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/config-tools.js.map +0 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/coordination-tools.js.map +0 -1
- package/dist/src/mcp-tools/daa-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/daa-tools.js.map +0 -1
- package/dist/src/mcp-tools/embeddings-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/embeddings-tools.js.map +0 -1
- package/dist/src/mcp-tools/github-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/github-tools.js.map +0 -1
- package/dist/src/mcp-tools/guidance-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/guidance-tools.js.map +0 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/hive-mind-tools.js.map +0 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/hooks-tools.js.map +0 -1
- package/dist/src/mcp-tools/http-fetch-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/http-fetch-tools.js.map +0 -1
- package/dist/src/mcp-tools/index.d.ts.map +0 -1
- package/dist/src/mcp-tools/index.js.map +0 -1
- package/dist/src/mcp-tools/managed-agent-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/managed-agent-tools.js.map +0 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/memory-tools.js.map +0 -1
- package/dist/src/mcp-tools/metaharness-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/metaharness-tools.js.map +0 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/neural-tools.js.map +0 -1
- package/dist/src/mcp-tools/performance-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/performance-tools.js.map +0 -1
- package/dist/src/mcp-tools/progress-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/progress-tools.js.map +0 -1
- package/dist/src/mcp-tools/request-tracker.d.ts.map +0 -1
- package/dist/src/mcp-tools/request-tracker.js.map +0 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/ruvllm-tools.js.map +0 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/security-tools.js.map +0 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/session-tools.js.map +0 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/swarm-tools.js.map +0 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/system-tools.js.map +0 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/task-tools.js.map +0 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/terminal-tools.js.map +0 -1
- package/dist/src/mcp-tools/testgen-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/testgen-tools.js.map +0 -1
- package/dist/src/mcp-tools/tool-loop-guardrail.d.ts.map +0 -1
- package/dist/src/mcp-tools/tool-loop-guardrail.js.map +0 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/transfer-tools.js.map +0 -1
- package/dist/src/mcp-tools/types.d.ts.map +0 -1
- package/dist/src/mcp-tools/types.js.map +0 -1
- package/dist/src/mcp-tools/validate-input.d.ts.map +0 -1
- package/dist/src/mcp-tools/validate-input.js.map +0 -1
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +0 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/workflow-tools.js.map +0 -1
- package/dist/src/memory/bge-embedder.d.ts.map +0 -1
- package/dist/src/memory/bge-embedder.js.map +0 -1
- package/dist/src/memory/cross-encoder-rerank.d.ts.map +0 -1
- package/dist/src/memory/cross-encoder-rerank.js.map +0 -1
- package/dist/src/memory/embedding-quantization.d.ts.map +0 -1
- package/dist/src/memory/embedding-quantization.js.map +0 -1
- package/dist/src/memory/ewc-consolidation.d.ts.map +0 -1
- package/dist/src/memory/ewc-consolidation.js.map +0 -1
- package/dist/src/memory/graph-edge-writer.d.ts.map +0 -1
- package/dist/src/memory/graph-edge-writer.js.map +0 -1
- package/dist/src/memory/hybrid-retrieval.d.ts.map +0 -1
- package/dist/src/memory/hybrid-retrieval.js.map +0 -1
- package/dist/src/memory/intelligence.d.ts.map +0 -1
- package/dist/src/memory/intelligence.js.map +0 -1
- package/dist/src/memory/lucene-bm25.d.ts.map +0 -1
- package/dist/src/memory/lucene-bm25.js.map +0 -1
- package/dist/src/memory/memory-bridge.d.ts.map +0 -1
- package/dist/src/memory/memory-bridge.js.map +0 -1
- package/dist/src/memory/memory-initializer.d.ts.map +0 -1
- package/dist/src/memory/memory-initializer.js.map +0 -1
- package/dist/src/memory/neural-package-bridge.d.ts.map +0 -1
- package/dist/src/memory/neural-package-bridge.js.map +0 -1
- package/dist/src/memory/rabitq-index.d.ts.map +0 -1
- package/dist/src/memory/rabitq-index.js.map +0 -1
- package/dist/src/memory/sona-optimizer.d.ts.map +0 -1
- package/dist/src/memory/sona-optimizer.js.map +0 -1
- package/dist/src/memory/structured-distill.d.ts.map +0 -1
- package/dist/src/memory/structured-distill.js.map +0 -1
- package/dist/src/output.d.ts.map +0 -1
- package/dist/src/output.js.map +0 -1
- package/dist/src/parser.d.ts.map +0 -1
- package/dist/src/parser.js.map +0 -1
- package/dist/src/plugins/manager.d.ts.map +0 -1
- package/dist/src/plugins/manager.js.map +0 -1
- package/dist/src/plugins/store/discovery.d.ts.map +0 -1
- package/dist/src/plugins/store/discovery.js.map +0 -1
- package/dist/src/plugins/store/index.d.ts.map +0 -1
- package/dist/src/plugins/store/index.js.map +0 -1
- package/dist/src/plugins/store/search.d.ts.map +0 -1
- package/dist/src/plugins/store/search.js.map +0 -1
- package/dist/src/plugins/store/types.d.ts.map +0 -1
- package/dist/src/plugins/store/types.js.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.js.map +0 -1
- package/dist/src/plugins/tests/standalone-test.d.ts.map +0 -1
- package/dist/src/plugins/tests/standalone-test.js.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.js.map +0 -1
- package/dist/src/production/circuit-breaker.d.ts.map +0 -1
- package/dist/src/production/circuit-breaker.js.map +0 -1
- package/dist/src/production/error-handler.d.ts.map +0 -1
- package/dist/src/production/error-handler.js.map +0 -1
- package/dist/src/production/index.d.ts.map +0 -1
- package/dist/src/production/index.js.map +0 -1
- package/dist/src/production/monitoring.d.ts.map +0 -1
- package/dist/src/production/monitoring.js.map +0 -1
- package/dist/src/production/rate-limiter.d.ts.map +0 -1
- package/dist/src/production/rate-limiter.js.map +0 -1
- package/dist/src/production/retry.d.ts.map +0 -1
- package/dist/src/production/retry.js.map +0 -1
- package/dist/src/prompt.d.ts.map +0 -1
- package/dist/src/prompt.js.map +0 -1
- package/dist/src/runtime/headless.d.ts.map +0 -1
- package/dist/src/runtime/headless.js.map +0 -1
- package/dist/src/runtime/parent-death-watchdog.d.ts.map +0 -1
- package/dist/src/runtime/parent-death-watchdog.js.map +0 -1
- package/dist/src/ruvector/agent-wasm.d.ts.map +0 -1
- package/dist/src/ruvector/agent-wasm.js.map +0 -1
- package/dist/src/ruvector/ast-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/ast-analyzer.js.map +0 -1
- package/dist/src/ruvector/codemods/engine.d.ts.map +0 -1
- package/dist/src/ruvector/codemods/engine.js.map +0 -1
- package/dist/src/ruvector/codemods/scope-analysis.d.ts.map +0 -1
- package/dist/src/ruvector/codemods/scope-analysis.js.map +0 -1
- package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
- package/dist/src/ruvector/coverage-router.js.map +0 -1
- package/dist/src/ruvector/coverage-tools.d.ts.map +0 -1
- package/dist/src/ruvector/coverage-tools.js.map +0 -1
- package/dist/src/ruvector/diff-classifier.d.ts.map +0 -1
- package/dist/src/ruvector/diff-classifier.js.map +0 -1
- package/dist/src/ruvector/diskann-backend.d.ts.map +0 -1
- package/dist/src/ruvector/diskann-backend.js.map +0 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +0 -1
- package/dist/src/ruvector/enhanced-model-router.js.map +0 -1
- package/dist/src/ruvector/graph-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/graph-analyzer.js.map +0 -1
- package/dist/src/ruvector/graph-backend.d.ts.map +0 -1
- package/dist/src/ruvector/graph-backend.js.map +0 -1
- package/dist/src/ruvector/index.d.ts.map +0 -1
- package/dist/src/ruvector/index.js.map +0 -1
- package/dist/src/ruvector/lora-adapter.d.ts.map +0 -1
- package/dist/src/ruvector/lora-adapter.js.map +0 -1
- package/dist/src/ruvector/model-prices.d.ts.map +0 -1
- package/dist/src/ruvector/model-prices.js.map +0 -1
- package/dist/src/ruvector/model-router.d.ts.map +0 -1
- package/dist/src/ruvector/model-router.js.map +0 -1
- package/dist/src/ruvector/neural-router.d.ts.map +0 -1
- package/dist/src/ruvector/neural-router.js.map +0 -1
- package/dist/src/ruvector/output-verifier.d.ts.map +0 -1
- package/dist/src/ruvector/output-verifier.js.map +0 -1
- package/dist/src/ruvector/q-learning-router.d.ts.map +0 -1
- package/dist/src/ruvector/q-learning-router.js.map +0 -1
- package/dist/src/ruvector/router-calibrator.d.ts.map +0 -1
- package/dist/src/ruvector/router-calibrator.js.map +0 -1
- package/dist/src/ruvector/router-parallel-recorder.d.ts.map +0 -1
- package/dist/src/ruvector/router-parallel-recorder.js.map +0 -1
- package/dist/src/ruvector/router-trajectory.d.ts.map +0 -1
- package/dist/src/ruvector/router-trajectory.js.map +0 -1
- package/dist/src/ruvector/run-transcript-recorder.d.ts.map +0 -1
- package/dist/src/ruvector/run-transcript-recorder.js.map +0 -1
- package/dist/src/ruvector/ruvllm-wasm.d.ts.map +0 -1
- package/dist/src/ruvector/ruvllm-wasm.js.map +0 -1
- package/dist/src/ruvector/semantic-router.d.ts.map +0 -1
- package/dist/src/ruvector/semantic-router.js.map +0 -1
- package/dist/src/ruvector/task-embedder.d.ts.map +0 -1
- package/dist/src/ruvector/task-embedder.js.map +0 -1
- package/dist/src/ruvector/trajectory-tree.d.ts.map +0 -1
- package/dist/src/ruvector/trajectory-tree.js.map +0 -1
- package/dist/src/ruvector/vector-db.d.ts.map +0 -1
- package/dist/src/ruvector/vector-db.js.map +0 -1
- package/dist/src/services/agentic-flow-bridge.d.ts.map +0 -1
- package/dist/src/services/agentic-flow-bridge.js.map +0 -1
- package/dist/src/services/checkpoint-gate.d.ts.map +0 -1
- package/dist/src/services/checkpoint-gate.js.map +0 -1
- package/dist/src/services/claim-service.d.ts.map +0 -1
- package/dist/src/services/claim-service.js.map +0 -1
- package/dist/src/services/config-file-manager.d.ts.map +0 -1
- package/dist/src/services/config-file-manager.js.map +0 -1
- package/dist/src/services/container-worker-pool.d.ts.map +0 -1
- package/dist/src/services/container-worker-pool.js.map +0 -1
- package/dist/src/services/distill-oracle.d.ts.map +0 -1
- package/dist/src/services/distill-oracle.js.map +0 -1
- package/dist/src/services/fable-harness.d.ts.map +0 -1
- package/dist/src/services/fable-harness.js.map +0 -1
- package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
- package/dist/src/services/headless-worker-executor.js.map +0 -1
- package/dist/src/services/index.d.ts.map +0 -1
- package/dist/src/services/index.js.map +0 -1
- package/dist/src/services/native-training.d.ts.map +0 -1
- package/dist/src/services/native-training.js.map +0 -1
- package/dist/src/services/registry-api.d.ts.map +0 -1
- package/dist/src/services/registry-api.js.map +0 -1
- package/dist/src/services/ruvector-training.d.ts.map +0 -1
- package/dist/src/services/ruvector-training.js.map +0 -1
- package/dist/src/services/swarm-memory-branches.d.ts.map +0 -1
- package/dist/src/services/swarm-memory-branches.js.map +0 -1
- package/dist/src/services/weight-eft.d.ts.map +0 -1
- package/dist/src/services/weight-eft.js.map +0 -1
- package/dist/src/services/worker-daemon.d.ts.map +0 -1
- package/dist/src/services/worker-daemon.js.map +0 -1
- package/dist/src/services/worker-queue.d.ts.map +0 -1
- package/dist/src/services/worker-queue.js.map +0 -1
- package/dist/src/suggest.d.ts.map +0 -1
- package/dist/src/suggest.js.map +0 -1
- package/dist/src/transfer/anonymization/index.d.ts.map +0 -1
- package/dist/src/transfer/anonymization/index.js.map +0 -1
- package/dist/src/transfer/deploy-seraphine.d.ts.map +0 -1
- package/dist/src/transfer/deploy-seraphine.js.map +0 -1
- package/dist/src/transfer/export.d.ts.map +0 -1
- package/dist/src/transfer/export.js.map +0 -1
- package/dist/src/transfer/index.d.ts.map +0 -1
- package/dist/src/transfer/index.js.map +0 -1
- package/dist/src/transfer/ipfs/client.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/client.js.map +0 -1
- package/dist/src/transfer/ipfs/upload.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/upload.js.map +0 -1
- package/dist/src/transfer/models/seraphine.d.ts.map +0 -1
- package/dist/src/transfer/models/seraphine.js.map +0 -1
- package/dist/src/transfer/serialization/cfp.d.ts.map +0 -1
- package/dist/src/transfer/serialization/cfp.js.map +0 -1
- package/dist/src/transfer/storage/gcs.d.ts.map +0 -1
- package/dist/src/transfer/storage/gcs.js.map +0 -1
- package/dist/src/transfer/storage/index.d.ts.map +0 -1
- package/dist/src/transfer/storage/index.js.map +0 -1
- package/dist/src/transfer/store/discovery.d.ts.map +0 -1
- package/dist/src/transfer/store/discovery.js.map +0 -1
- package/dist/src/transfer/store/download.d.ts.map +0 -1
- package/dist/src/transfer/store/download.js.map +0 -1
- package/dist/src/transfer/store/index.d.ts.map +0 -1
- package/dist/src/transfer/store/index.js.map +0 -1
- package/dist/src/transfer/store/publish.d.ts.map +0 -1
- package/dist/src/transfer/store/publish.js.map +0 -1
- package/dist/src/transfer/store/registry.d.ts.map +0 -1
- package/dist/src/transfer/store/registry.js.map +0 -1
- package/dist/src/transfer/store/search.d.ts.map +0 -1
- package/dist/src/transfer/store/search.js.map +0 -1
- package/dist/src/transfer/store/tests/standalone-test.d.ts.map +0 -1
- package/dist/src/transfer/store/tests/standalone-test.js.map +0 -1
- package/dist/src/transfer/store/types.d.ts.map +0 -1
- package/dist/src/transfer/store/types.js.map +0 -1
- package/dist/src/transfer/test-seraphine.d.ts.map +0 -1
- package/dist/src/transfer/test-seraphine.js.map +0 -1
- package/dist/src/transfer/tests/test-store.d.ts.map +0 -1
- package/dist/src/transfer/tests/test-store.js.map +0 -1
- package/dist/src/transfer/types.d.ts.map +0 -1
- package/dist/src/transfer/types.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/src/update/checker.d.ts.map +0 -1
- package/dist/src/update/checker.js.map +0 -1
- package/dist/src/update/executor.d.ts.map +0 -1
- package/dist/src/update/executor.js.map +0 -1
- package/dist/src/update/index.d.ts.map +0 -1
- package/dist/src/update/index.js.map +0 -1
- package/dist/src/update/rate-limiter.d.ts.map +0 -1
- package/dist/src/update/rate-limiter.js.map +0 -1
- package/dist/src/update/validator.d.ts.map +0 -1
- package/dist/src/update/validator.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/scripts/beir-bootstrap-significance.mjs +0 -162
- package/scripts/bench-rvagent.mjs +0 -312
- package/scripts/benchmark-codemods.mjs +0 -127
- package/scripts/benchmark-cross-repo.mjs +0 -206
- package/scripts/benchmark-pretrained-retrieval.mjs +0 -305
- package/scripts/benchmark-self-learning.mjs +0 -241
- package/scripts/benchmark-trajectory-mrr.mjs +0 -191
- package/scripts/deploy-ipfs-node.sh +0 -153
- package/scripts/grid-search-retrieval.mjs +0 -216
- package/scripts/pretrain-from-github.mjs +0 -358
- package/scripts/publish-registry.ts +0 -345
- package/scripts/publish.sh +0 -57
- package/scripts/run-beir-bge.mjs +0 -324
- package/scripts/run-beir-hybrid.mjs +0 -284
- package/scripts/run-beir-lucene-bm25.mjs +0 -154
- package/scripts/run-beir-nfcorpus.mjs +0 -231
- package/scripts/run-beir-rrf-ablation.mjs +0 -221
- package/scripts/setup-ipfs-registry.md +0 -366
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// benchmark-cross-repo.mjs — cross-repo generalisation proof (ADR-084).
|
|
3
|
-
//
|
|
4
|
-
// Pretrains on a DIFFERENT repo's history (default: ruvnet/agentdb) and runs
|
|
5
|
-
// labelled queries about THAT repo's work. If the retrieval system genuinely
|
|
6
|
-
// generalises (vs overfits to the ruflo corpus it was tuned on), nDCG@3
|
|
7
|
-
// should stay near 0.96.
|
|
8
|
-
//
|
|
9
|
-
// Usage:
|
|
10
|
-
// 1. cd /tmp/agentdb-bench
|
|
11
|
-
// 2. REPO_ROOT=/tmp/agentdb-bench GH_REPO=ruvnet/agentdb \
|
|
12
|
-
// node /path/to/pretrain-from-github.mjs # writes /tmp/agentdb-bench/.claude-flow/neural/
|
|
13
|
-
// 3. cd /tmp/agentdb-bench && node /path/to/benchmark-cross-repo.mjs
|
|
14
|
-
//
|
|
15
|
-
// Or use the wrapper at the bottom that does both steps with --repo=<name>.
|
|
16
|
-
|
|
17
|
-
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
18
|
-
import { fileURLToPath } from 'node:url';
|
|
19
|
-
import { dirname, join, resolve } from 'node:path';
|
|
20
|
-
import { performance } from 'node:perf_hooks';
|
|
21
|
-
|
|
22
|
-
const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url));
|
|
23
|
-
const CLI_ROOT = resolve(SCRIPT_DIR, '..');
|
|
24
|
-
const RUFLO_ROOT = resolve(SCRIPT_DIR, '../../../..');
|
|
25
|
-
const RUNS_DIR = join(RUFLO_ROOT, 'docs', 'benchmarks', 'runs');
|
|
26
|
-
|
|
27
|
-
// Labelled queries about agentdb's actual history (commits + issues
|
|
28
|
-
// observed via `git log` + `gh issue list` on ruvnet/agentdb).
|
|
29
|
-
// Each query targets a specific piece of work; labels are case-insensitive
|
|
30
|
-
// substring matches against the pattern name.
|
|
31
|
-
const QUERIES_AGENTDB = [
|
|
32
|
-
{ q: 'SQL injection fix REINDEX',
|
|
33
|
-
labels: ['sql injection', 'reindex'] },
|
|
34
|
-
{ q: 'insecure PRNG random IDs',
|
|
35
|
-
labels: ['insecure prng', 'random ids', 'random id', 'crypto', 'uuid'] },
|
|
36
|
-
{ q: 'JSON parse crash hardening',
|
|
37
|
-
labels: ['json.parse', 'json parse', 'crash hardening'] },
|
|
38
|
-
{ q: 'protobuf critical CVE patch',
|
|
39
|
-
labels: ['protobufjs', 'protobuf', 'cve'] },
|
|
40
|
-
{ q: 'spawnSync vs execSync security',
|
|
41
|
-
labels: ['spawnsync', 'execsync'] },
|
|
42
|
-
{ q: 'better-sqlite3 inline schemas',
|
|
43
|
-
labels: ['better-sqlite3', 'inline schema', 'schemas'] },
|
|
44
|
-
{ q: 'Claude Code marketplace plugins',
|
|
45
|
-
labels: ['marketplace', 'plugin', 'claude code'] },
|
|
46
|
-
{ q: 'README rewrite ruflo style',
|
|
47
|
-
labels: ['readme', 'rewrite'] },
|
|
48
|
-
{ q: 'WASM browser fs.readFileSync blocking',
|
|
49
|
-
labels: ['wasm', 'browser', 'fs.readfilesync', 'readfilesync', 'agentdb/wasm'] },
|
|
50
|
-
{ q: 'AgentDB missing schema files',
|
|
51
|
-
labels: ['missing schema', 'mising schema', 'schema files', 'not working'] },
|
|
52
|
-
];
|
|
53
|
-
|
|
54
|
-
// Labelled queries about agentic-flow's actual history.
|
|
55
|
-
const QUERIES_AGENTIC_FLOW = [
|
|
56
|
-
{ q: 'CWE-78 shell injection fix',
|
|
57
|
-
labels: ['cwe-78', 'shell injection', 'execsync', 'safe-exec'] },
|
|
58
|
-
{ q: 'SSRF hardcoded key NaN panic security',
|
|
59
|
-
labels: ['ssrf', 'hardcoded key', 'nan-panic', 'nan panic'] },
|
|
60
|
-
{ q: 'WebSocket QUIC transport fallback',
|
|
61
|
-
labels: ['websocket', 'quic', 'transport'] },
|
|
62
|
-
{ q: 'agentdb submodule bump',
|
|
63
|
-
labels: ['agentdb submodule', 'bump agentdb', 'submodule'] },
|
|
64
|
-
{ q: 'sql.js prepared statement leak',
|
|
65
|
-
labels: ['sql.js', 'prepared statement', 'leak'] },
|
|
66
|
-
{ q: 'WASM ADR-071 integration',
|
|
67
|
-
labels: ['wasm', 'adr-071', 'wasm-integration'] },
|
|
68
|
-
{ q: 'patch CVEs transitive overrides',
|
|
69
|
-
labels: ['cve', 'patch', 'transitive', 'overrides'] },
|
|
70
|
-
{ q: 'GraphDatabaseAdapter delete API',
|
|
71
|
-
labels: ['graphdatabaseadapter', 'delete api', 'reflexionmemory', 'deleteepisode'] },
|
|
72
|
-
{ q: 'release alpha publish version',
|
|
73
|
-
labels: ['release', 'publish', 'alpha', 'version'] },
|
|
74
|
-
{ q: 'extract packages to dedicated repo',
|
|
75
|
-
labels: ['extract', 'refactor', 'dedicated repo', 'submodule', 'agentdb'] },
|
|
76
|
-
];
|
|
77
|
-
|
|
78
|
-
// Auto-pick query set based on GH_REPO env var.
|
|
79
|
-
const QUERY_SETS = {
|
|
80
|
-
'ruvnet/agentdb': QUERIES_AGENTDB,
|
|
81
|
-
'ruvnet/agentic-flow': QUERIES_AGENTIC_FLOW,
|
|
82
|
-
};
|
|
83
|
-
const QUERIES = QUERY_SETS[process.env.GH_REPO] || QUERIES_AGENTDB;
|
|
84
|
-
const TOP_K = 5;
|
|
85
|
-
|
|
86
|
-
function isRelevant(name, labels) {
|
|
87
|
-
if (!name || !labels?.length) return false;
|
|
88
|
-
const lower = String(name).toLowerCase();
|
|
89
|
-
return labels.some((s) => lower.includes(s.toLowerCase()));
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function ndcgAtK(rankedRel, k) {
|
|
93
|
-
const arr = rankedRel.slice(0, k);
|
|
94
|
-
const dcg = arr.reduce((acc, rel, i) => acc + (rel ? 1 / Math.log2(i + 2) : 0), 0);
|
|
95
|
-
const numRelevant = arr.filter(Boolean).length;
|
|
96
|
-
if (numRelevant === 0) return 0;
|
|
97
|
-
let idcg = 0;
|
|
98
|
-
for (let i = 0; i < numRelevant; i++) idcg += 1 / Math.log2(i + 2);
|
|
99
|
-
return idcg > 0 ? dcg / idcg : 0;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
async function evalConfig(tool, params) {
|
|
103
|
-
let top1 = 0, top3 = 0, ranks = [], ndcg3sum = 0, ndcg5sum = 0, p3sum = 0;
|
|
104
|
-
const t0 = performance.now();
|
|
105
|
-
const perQuery = [];
|
|
106
|
-
for (const { q, labels } of QUERIES) {
|
|
107
|
-
const r = await tool.handler({ action: 'search', query: q, mode: 'hybrid', limit: TOP_K, ...params });
|
|
108
|
-
const matches = (r.results || []).slice(0, TOP_K);
|
|
109
|
-
const rel = matches.map((m) => isRelevant(m?.name, labels));
|
|
110
|
-
if (rel[0]) top1++;
|
|
111
|
-
if (rel.slice(0, 3).some(Boolean)) top3++;
|
|
112
|
-
const firstRank = rel.findIndex(Boolean);
|
|
113
|
-
if (firstRank >= 0) ranks.push(firstRank + 1);
|
|
114
|
-
ndcg3sum += ndcgAtK(rel, 3);
|
|
115
|
-
ndcg5sum += ndcgAtK(rel, 5);
|
|
116
|
-
p3sum += rel.slice(0, 3).filter(Boolean).length / 3;
|
|
117
|
-
perQuery.push({ q, top1: rel[0] || false, topK: matches.map((m, i) => ({ name: m.name?.slice(0, 90), relevant: rel[i], score: (m.score ?? m.similarity)?.toFixed?.(3) })) });
|
|
118
|
-
}
|
|
119
|
-
const elapsed = performance.now() - t0;
|
|
120
|
-
return {
|
|
121
|
-
top1HitRate: top1 / QUERIES.length,
|
|
122
|
-
top3HitRate: top3 / QUERIES.length,
|
|
123
|
-
mrr3: ranks.reduce((s, r) => s + 1 / r, 0) / QUERIES.length,
|
|
124
|
-
precision3: p3sum / QUERIES.length,
|
|
125
|
-
ndcg3: ndcg3sum / QUERIES.length,
|
|
126
|
-
ndcg5: ndcg5sum / QUERIES.length,
|
|
127
|
-
avgLatencyMs: elapsed / QUERIES.length,
|
|
128
|
-
perQuery,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
async function main() {
|
|
133
|
-
const neural = await import(join(CLI_ROOT, 'dist/src/mcp-tools/neural-tools.js'));
|
|
134
|
-
const intel = await import(join(CLI_ROOT, 'dist/src/memory/intelligence.js'));
|
|
135
|
-
const stats = await intel.getUnifiedLearningStats();
|
|
136
|
-
const storeSize = stats.neuralPatterns.patternCount;
|
|
137
|
-
|
|
138
|
-
if (storeSize === 0) {
|
|
139
|
-
console.error('No patterns in neural store. Run pretrain-from-github.mjs first (with REPO_ROOT + GH_REPO env).');
|
|
140
|
-
process.exit(2);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const tool = neural.neuralTools.find((t) => t.name === 'neural_patterns');
|
|
144
|
-
if (!tool) throw new Error('neural_patterns tool not found');
|
|
145
|
-
|
|
146
|
-
console.log(`# Cross-repo generalisation benchmark (ADR-084)`);
|
|
147
|
-
console.log(`Cwd: ${process.cwd()}`);
|
|
148
|
-
console.log(`Store size: ${storeSize} patterns`);
|
|
149
|
-
console.log(`Queries: ${QUERIES.length} (labelled set for ${process.env.GH_REPO || 'default agentdb'})`);
|
|
150
|
-
console.log('');
|
|
151
|
-
|
|
152
|
-
console.log('--- Hybrid path (defaults) ---');
|
|
153
|
-
const hybrid = await evalConfig(tool, { rerank: false });
|
|
154
|
-
console.log(` top-1: ${(hybrid.top1HitRate * 100).toFixed(0)}% top-3: ${(hybrid.top3HitRate * 100).toFixed(0)}% MRR@3: ${hybrid.mrr3.toFixed(3)} P3: ${hybrid.precision3.toFixed(3)} nDCG@3: ${hybrid.ndcg3.toFixed(3)} nDCG@5: ${hybrid.ndcg5.toFixed(3)} ${hybrid.avgLatencyMs.toFixed(0)}ms`);
|
|
155
|
-
|
|
156
|
-
console.log('--- Rerank path (defaults) ---');
|
|
157
|
-
const rerank = await evalConfig(tool, { rerank: true });
|
|
158
|
-
console.log(` top-1: ${(rerank.top1HitRate * 100).toFixed(0)}% top-3: ${(rerank.top3HitRate * 100).toFixed(0)}% MRR@3: ${rerank.mrr3.toFixed(3)} P3: ${rerank.precision3.toFixed(3)} nDCG@3: ${rerank.ndcg3.toFixed(3)} nDCG@5: ${rerank.ndcg5.toFixed(3)} ${rerank.avgLatencyMs.toFixed(0)}ms`);
|
|
159
|
-
|
|
160
|
-
console.log('\n--- Per-query rerank top-3 ---');
|
|
161
|
-
for (const q of rerank.perQuery) {
|
|
162
|
-
console.log(`Q: "${q.q}" (top-1: ${q.top1 ? '✓' : '✗'})`);
|
|
163
|
-
for (const m of q.topK.slice(0, 3)) {
|
|
164
|
-
console.log(` ${m.relevant ? '★' : ' '} [${m.score ?? '—'}] ${m.name}`);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const summary = {
|
|
169
|
-
runAt: new Date().toISOString(),
|
|
170
|
-
benchmark: 'cross-repo-generalisation',
|
|
171
|
-
repo: process.env.GH_REPO || 'unknown',
|
|
172
|
-
cwd: process.cwd(),
|
|
173
|
-
storeSize,
|
|
174
|
-
queries: QUERIES.length,
|
|
175
|
-
hybrid: {
|
|
176
|
-
top1HitRate: hybrid.top1HitRate,
|
|
177
|
-
top3HitRate: hybrid.top3HitRate,
|
|
178
|
-
mrr3: hybrid.mrr3,
|
|
179
|
-
precision3: hybrid.precision3,
|
|
180
|
-
ndcg3: hybrid.ndcg3,
|
|
181
|
-
ndcg5: hybrid.ndcg5,
|
|
182
|
-
avgLatencyMs: hybrid.avgLatencyMs,
|
|
183
|
-
},
|
|
184
|
-
rerank: {
|
|
185
|
-
top1HitRate: rerank.top1HitRate,
|
|
186
|
-
top3HitRate: rerank.top3HitRate,
|
|
187
|
-
mrr3: rerank.mrr3,
|
|
188
|
-
precision3: rerank.precision3,
|
|
189
|
-
ndcg3: rerank.ndcg3,
|
|
190
|
-
ndcg5: rerank.ndcg5,
|
|
191
|
-
avgLatencyMs: rerank.avgLatencyMs,
|
|
192
|
-
},
|
|
193
|
-
perQueryRerank: rerank.perQuery,
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
mkdirSync(RUNS_DIR, { recursive: true });
|
|
197
|
-
const stamp = summary.runAt.replace(/[:.]/g, '-');
|
|
198
|
-
const repoSlug = (process.env.GH_REPO || 'unknown').replace('/', '-');
|
|
199
|
-
writeFileSync(join(RUNS_DIR, `cross-repo-${repoSlug}-${stamp}.json`), JSON.stringify(summary, null, 2));
|
|
200
|
-
writeFileSync(join(RUNS_DIR, `cross-repo-${repoSlug}-latest.json`), JSON.stringify(summary, null, 2));
|
|
201
|
-
console.log(`\nWrote ${join(RUNS_DIR, `cross-repo-${repoSlug}-${stamp}.json`)}`);
|
|
202
|
-
|
|
203
|
-
process.exit(0);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
main().catch((err) => { console.error(err); process.exit(1); });
|
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// benchmark-pretrained-retrieval.mjs — proof that pretrained patterns are
|
|
3
|
-
// retrievable, not just stored.
|
|
4
|
-
//
|
|
5
|
-
// Runs sample queries against the neural store (post-pretrain) and reports
|
|
6
|
-
// the top-k matches. Demonstrates that after `pretrain-from-github.mjs`
|
|
7
|
-
// runs, an agent can recall relevant past work by intent.
|
|
8
|
-
//
|
|
9
|
-
// Usage:
|
|
10
|
-
// 1. node scripts/pretrain-from-github.mjs # populate the store
|
|
11
|
-
// 2. node scripts/benchmark-pretrained-retrieval.mjs # query + report
|
|
12
|
-
|
|
13
|
-
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
14
|
-
import { fileURLToPath } from 'node:url';
|
|
15
|
-
import { dirname, join, resolve } from 'node:path';
|
|
16
|
-
import { performance } from 'node:perf_hooks';
|
|
17
|
-
|
|
18
|
-
const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url));
|
|
19
|
-
const CLI_ROOT = resolve(SCRIPT_DIR, '..');
|
|
20
|
-
const REPO_ROOT = resolve(SCRIPT_DIR, '../../../..');
|
|
21
|
-
const RUNS_DIR = join(REPO_ROOT, 'docs', 'benchmarks', 'runs');
|
|
22
|
-
|
|
23
|
-
// ADR-081 labelled held-out corpus. Each query has hand-curated
|
|
24
|
-
// `expectedSubstrings` — case-insensitive substring matches against the
|
|
25
|
-
// pattern's name. A result is "relevant" if its name contains ANY of the
|
|
26
|
-
// substrings. Tighter than the regex proxy used in ADRs 077-080 (which
|
|
27
|
-
// matched related-but-not-exact commits).
|
|
28
|
-
//
|
|
29
|
-
// `expect` (regex) is kept for backwards compatibility with the older
|
|
30
|
-
// numbers in ADRs 077-080. New metrics use expectedSubstrings.
|
|
31
|
-
const QUERIES = [
|
|
32
|
-
{
|
|
33
|
-
q: 'how was the Opus model alias fixed',
|
|
34
|
-
expect: /opus|2232|model.*alias|4\.8/i,
|
|
35
|
-
expectedSubstrings: ['opus 4.8', 'opus alias', 'opus model alias', '#2232'],
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
q: 'self-learning wiring task-completed pretrain',
|
|
39
|
-
expect: /self.?learning|task.?completed|pretrain|2245|074/i,
|
|
40
|
-
expectedSubstrings: ['self-learning', 'adr-074', 'self learning', '#2245', 'task-completed'],
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
q: 'deterministic codemod engine var-to-const',
|
|
44
|
-
expect: /codemod|var.?to.?const|143|deterministic/i,
|
|
45
|
-
expectedSubstrings: ['deterministic tier-1 codemod', 'adr-143', 'codemod', 'var-to-const'],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
q: 'MCP server orphan leak parent-death',
|
|
49
|
-
expect: /mcp.*orphan|orphan.*mcp|parent.?death|leak/i,
|
|
50
|
-
expectedSubstrings: ['mcp orphan', 'mcp servers orphan', 'parent-death', '#2234', 'orphan on every claude'],
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
q: 'unified learning stats aggregator',
|
|
54
|
-
expect: /unified|stats|aggregator|075/i,
|
|
55
|
-
expectedSubstrings: ['unified learning-stats', 'adr-075', 'unified learning stats'],
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
q: 'structured distillation 4-field schema',
|
|
59
|
-
expect: /distillation|structured|076|4.?field/i,
|
|
60
|
-
expectedSubstrings: ['structured distillation', 'adr-076', '4-field schema'],
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
q: 'SQL injection migrate.ts table identifier',
|
|
64
|
-
expect: /sql.?injection|migrate|table|identifier/i,
|
|
65
|
-
expectedSubstrings: ['sql injection', 'shell injection', 'migrate.ts', 'agentdb', 'cve'],
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
q: 'recall@k HNSW benchmark harness',
|
|
69
|
-
expect: /recall|hnsw|benchmark|harness/i,
|
|
70
|
-
expectedSubstrings: ['hnsw', 'memory-recall', 'benchmark suite', 'recall@k', 'benchmark intelligence'],
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
q: 'Q-learning encoder keyword block',
|
|
74
|
-
expect: /q.?learning|encoder|keyword|2239/i,
|
|
75
|
-
expectedSubstrings: ['q-state encoder', 'route q-state', 'keyword block', '#2239', 'q-encoder'],
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
q: 'security hardening crypto random IDs',
|
|
79
|
-
expect: /security|hardening|crypto|random/i,
|
|
80
|
-
expectedSubstrings: ['cwe-347', 'crypto.randomuuid', 'security fix', 'random id', 'crypto random'],
|
|
81
|
-
},
|
|
82
|
-
];
|
|
83
|
-
|
|
84
|
-
/** Returns true if name contains ANY of the labelled substrings (case-insensitive). */
|
|
85
|
-
function isRelevant(name, expectedSubstrings) {
|
|
86
|
-
if (!name || !expectedSubstrings?.length) return false;
|
|
87
|
-
const lower = String(name).toLowerCase();
|
|
88
|
-
return expectedSubstrings.some((s) => lower.includes(s.toLowerCase()));
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** nDCG@k with binary relevance (each relevant item contributes 1 / log2(i+1)). */
|
|
92
|
-
function ndcgAtK(rankedRelevance, k) {
|
|
93
|
-
const arr = rankedRelevance.slice(0, k);
|
|
94
|
-
const dcg = arr.reduce((acc, rel, i) => acc + (rel ? 1 / Math.log2(i + 2) : 0), 0);
|
|
95
|
-
const numRelevant = arr.filter(Boolean).length;
|
|
96
|
-
if (numRelevant === 0) return 0;
|
|
97
|
-
// Ideal: all relevant items packed at positions 1..numRelevant
|
|
98
|
-
let idcg = 0;
|
|
99
|
-
for (let i = 0; i < numRelevant; i++) idcg += 1 / Math.log2(i + 2);
|
|
100
|
-
return idcg > 0 ? dcg / idcg : 0;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const TOP_K = 5;
|
|
104
|
-
|
|
105
|
-
async function main() {
|
|
106
|
-
const intel = await import(join(CLI_ROOT, 'dist/src/memory/intelligence.js'));
|
|
107
|
-
const neural = await import(join(CLI_ROOT, 'dist/src/mcp-tools/neural-tools.js'));
|
|
108
|
-
|
|
109
|
-
// §1 — snapshot the neural store + globalStats so we know what's there.
|
|
110
|
-
const unified = await intel.getUnifiedLearningStats();
|
|
111
|
-
const total = unified.neuralPatterns.patternCount;
|
|
112
|
-
|
|
113
|
-
if (total === 0) {
|
|
114
|
-
console.error('No patterns in neural store. Run scripts/pretrain-from-github.mjs first.');
|
|
115
|
-
process.exit(2);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// §2 — A/B hybrid vs cosine-only (HYBRID=0 forces pre-3.10.18 behaviour).
|
|
119
|
-
// Default runs hybrid (cosine + BM25 + MMR per ADR-078).
|
|
120
|
-
const listTool = neural.neuralTools.find((t) => t.name === 'neural_patterns');
|
|
121
|
-
const mode = process.env.HYBRID === '0' ? 'cosine' : 'hybrid';
|
|
122
|
-
// ADR-080 opt-in cross-encoder rerank — set RERANK=1 to enable.
|
|
123
|
-
const useRerank = process.env.RERANK === '1';
|
|
124
|
-
|
|
125
|
-
// top-1-uniqueness — fraction of queries whose top-1 result is NOT the
|
|
126
|
-
// same pattern ID as another query's top-1. Catches the "everyone gets
|
|
127
|
-
// the same generic top-1" failure mode.
|
|
128
|
-
const top1Ids = new Map();
|
|
129
|
-
|
|
130
|
-
const tQuery0 = performance.now();
|
|
131
|
-
const results = [];
|
|
132
|
-
for (const { q, expect, expectedSubstrings } of QUERIES) {
|
|
133
|
-
const r = await listTool.handler({ action: 'search', query: q, mode, limit: TOP_K, rerank: useRerank });
|
|
134
|
-
const matches = (r.patterns || r.results || r.matches || []).slice(0, TOP_K);
|
|
135
|
-
if (matches.length > 0) {
|
|
136
|
-
const top1 = matches[0].id;
|
|
137
|
-
top1Ids.set(top1, (top1Ids.get(top1) ?? 0) + 1);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Two relevance signals per result:
|
|
141
|
-
// regexRel — old proxy (kept for back-compat with ADR-077-080 numbers)
|
|
142
|
-
// labelRel — ADR-081 hand-curated label match
|
|
143
|
-
const regexRel = matches.map((m) => expect.test(m?.name ?? ''));
|
|
144
|
-
const labelRel = matches.map((m) => isRelevant(m?.name, expectedSubstrings));
|
|
145
|
-
|
|
146
|
-
// First rank where a labelled-relevant doc appears.
|
|
147
|
-
let firstLabelRank = -1;
|
|
148
|
-
for (let i = 0; i < matches.length; i++) {
|
|
149
|
-
if (labelRel[i]) { firstLabelRank = i + 1; break; }
|
|
150
|
-
}
|
|
151
|
-
let firstRegexRank = -1;
|
|
152
|
-
for (let i = 0; i < matches.length; i++) {
|
|
153
|
-
if (regexRel[i]) { firstRegexRank = i + 1; break; }
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
results.push({
|
|
157
|
-
query: q,
|
|
158
|
-
matched: matches.length > 0,
|
|
159
|
-
// Regex-proxy metrics (back-compat with ADR-077-080)
|
|
160
|
-
top1Relevant: regexRel[0] || false,
|
|
161
|
-
top3Relevant: regexRel.slice(0, 3).some(Boolean),
|
|
162
|
-
firstRelevantRank: firstRegexRank,
|
|
163
|
-
// ADR-081 labelled metrics
|
|
164
|
-
label_top1: labelRel[0] || false,
|
|
165
|
-
label_top3_count: labelRel.slice(0, 3).filter(Boolean).length,
|
|
166
|
-
label_top5_count: labelRel.slice(0, 5).filter(Boolean).length,
|
|
167
|
-
label_firstRank: firstLabelRank,
|
|
168
|
-
label_ndcg3: ndcgAtK(labelRel, 3),
|
|
169
|
-
label_ndcg5: ndcgAtK(labelRel, 5),
|
|
170
|
-
topK: matches.map((m, i) => ({
|
|
171
|
-
id: m.id,
|
|
172
|
-
name: m.name?.slice(0, 100),
|
|
173
|
-
type: m.type,
|
|
174
|
-
score: m.score ?? m.similarity,
|
|
175
|
-
cosineScore: m.cosineScore,
|
|
176
|
-
bm25Score: m.bm25Score,
|
|
177
|
-
mmrScore: m.mmrScore,
|
|
178
|
-
labelRelevant: labelRel[i],
|
|
179
|
-
})),
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
const queryMs = performance.now() - tQuery0;
|
|
183
|
-
|
|
184
|
-
const matchedQueries = results.filter((r) => r.matched).length;
|
|
185
|
-
// Regex-proxy metrics (back-compat)
|
|
186
|
-
const top1Hits = results.filter((r) => r.top1Relevant).length;
|
|
187
|
-
const top3Hits = results.filter((r) => r.top3Relevant).length;
|
|
188
|
-
const ranks = results.filter((r) => r.firstRelevantRank > 0).map((r) => r.firstRelevantRank);
|
|
189
|
-
const mrr3 = QUERIES.length > 0
|
|
190
|
-
? Number((ranks.reduce((s, r) => s + 1 / r, 0) / QUERIES.length).toFixed(4))
|
|
191
|
-
: 0;
|
|
192
|
-
|
|
193
|
-
// ADR-081 labelled metrics — tighter ground truth than regex proxy.
|
|
194
|
-
const label_top1Hits = results.filter((r) => r.label_top1).length;
|
|
195
|
-
const label_top3HitsBinary = results.filter((r) => r.label_top3_count > 0).length;
|
|
196
|
-
const label_ranks = results.filter((r) => r.label_firstRank > 0).map((r) => r.label_firstRank);
|
|
197
|
-
const label_mrr3 = QUERIES.length > 0
|
|
198
|
-
? Number((label_ranks.reduce((s, r) => s + 1 / r, 0) / QUERIES.length).toFixed(4))
|
|
199
|
-
: 0;
|
|
200
|
-
const label_ndcg3_mean = QUERIES.length > 0
|
|
201
|
-
? Number((results.reduce((s, r) => s + r.label_ndcg3, 0) / QUERIES.length).toFixed(4))
|
|
202
|
-
: 0;
|
|
203
|
-
const label_ndcg5_mean = QUERIES.length > 0
|
|
204
|
-
? Number((results.reduce((s, r) => s + r.label_ndcg5, 0) / QUERIES.length).toFixed(4))
|
|
205
|
-
: 0;
|
|
206
|
-
// Mean precision@3 — fraction of top-3 that's relevant per query, averaged.
|
|
207
|
-
const label_precision3 = QUERIES.length > 0
|
|
208
|
-
? Number((results.reduce((s, r) => s + r.label_top3_count / 3, 0) / QUERIES.length).toFixed(4))
|
|
209
|
-
: 0;
|
|
210
|
-
// top-1 collision: number of distinct top-1 IDs over the query count.
|
|
211
|
-
const uniqueTop1 = top1Ids.size;
|
|
212
|
-
const top1Diversity = Number((uniqueTop1 / QUERIES.length).toFixed(4));
|
|
213
|
-
|
|
214
|
-
// top-3 redundancy: average fraction of top-3 results that are duplicates
|
|
215
|
-
// of the same pattern within a single query (should be 0 — but if the same
|
|
216
|
-
// ID appears twice in top-3 we surface it).
|
|
217
|
-
let dupCount = 0, top3Slots = 0;
|
|
218
|
-
for (const r of results) {
|
|
219
|
-
const ids = r.topK.slice(0, 3).map((m) => m.id);
|
|
220
|
-
top3Slots += ids.length;
|
|
221
|
-
const seen = new Set();
|
|
222
|
-
for (const id of ids) {
|
|
223
|
-
if (seen.has(id)) dupCount++;
|
|
224
|
-
seen.add(id);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
const top3DupRate = top3Slots > 0 ? Number((dupCount / top3Slots).toFixed(4)) : 0;
|
|
228
|
-
|
|
229
|
-
const summary = {
|
|
230
|
-
runAt: new Date().toISOString(),
|
|
231
|
-
benchmark: 'pretrained-retrieval',
|
|
232
|
-
mode, // ADR-078: which retrieval path was used
|
|
233
|
-
rerank: useRerank, // ADR-080: cross-encoder rerank on/off
|
|
234
|
-
storeSize: total,
|
|
235
|
-
queries: QUERIES.length,
|
|
236
|
-
matchedQueries,
|
|
237
|
-
matchRate: Number((matchedQueries / QUERIES.length).toFixed(4)),
|
|
238
|
-
// Regex-proxy metrics (ADR-077-080 back-compat)
|
|
239
|
-
top1HitRate: Number((top1Hits / QUERIES.length).toFixed(4)),
|
|
240
|
-
top3HitRate: Number((top3Hits / QUERIES.length).toFixed(4)),
|
|
241
|
-
mrr3,
|
|
242
|
-
// ADR-081 labelled metrics — tighter ground truth
|
|
243
|
-
label_top1HitRate: Number((label_top1Hits / QUERIES.length).toFixed(4)),
|
|
244
|
-
label_top3HitRate: Number((label_top3HitsBinary / QUERIES.length).toFixed(4)),
|
|
245
|
-
label_mrr3,
|
|
246
|
-
label_precision3,
|
|
247
|
-
label_ndcg3: label_ndcg3_mean,
|
|
248
|
-
label_ndcg5: label_ndcg5_mean,
|
|
249
|
-
top1Diversity, // 1.0 = every query gets a distinct top-1
|
|
250
|
-
top3DupRate, // 0.0 = no duplicate IDs inside any top-3
|
|
251
|
-
avgQueryLatencyMs: Number((queryMs / QUERIES.length).toFixed(2)),
|
|
252
|
-
totalQueryMs: Number(queryMs.toFixed(2)),
|
|
253
|
-
results,
|
|
254
|
-
passed: matchedQueries === QUERIES.length,
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
if (process.env.BENCH_JSON) {
|
|
258
|
-
console.log(JSON.stringify(summary, null, 2));
|
|
259
|
-
} else {
|
|
260
|
-
console.log(`# Pretrained-retrieval benchmark — proof of learning`);
|
|
261
|
-
console.log(`Mode: ${mode}${mode === 'hybrid' ? ' (cosine + BM25 + MMR, ADR-078)' : ' (cosine-only, pre-3.10.18)'}${useRerank ? ' + cross-encoder rerank (ADR-080)' : ''}`);
|
|
262
|
-
console.log(`Store size: ${total} patterns`);
|
|
263
|
-
console.log(`Queries: ${QUERIES.length}`);
|
|
264
|
-
console.log(`Match rate: ${(summary.matchRate * 100).toFixed(0)}% (${matchedQueries}/${QUERIES.length})`);
|
|
265
|
-
console.log(`Top-1 hit rate (regex proxy): ${(summary.top1HitRate * 100).toFixed(0)}% (${top1Hits}/${QUERIES.length})`);
|
|
266
|
-
console.log(`Top-3 hit rate (regex proxy): ${(summary.top3HitRate * 100).toFixed(0)}% (${top3Hits}/${QUERIES.length})`);
|
|
267
|
-
console.log(`MRR@3 (regex proxy): ${summary.mrr3}`);
|
|
268
|
-
console.log('');
|
|
269
|
-
console.log(`Top-1 hit rate (ADR-081 labelled): ${(summary.label_top1HitRate * 100).toFixed(0)}% (${label_top1Hits}/${QUERIES.length})`);
|
|
270
|
-
console.log(`Top-3 hit rate (ADR-081 labelled): ${(summary.label_top3HitRate * 100).toFixed(0)}% (${label_top3HitsBinary}/${QUERIES.length})`);
|
|
271
|
-
console.log(`MRR@3 (labelled): ${summary.label_mrr3}`);
|
|
272
|
-
console.log(`Precision@3 (labelled, mean): ${summary.label_precision3}`);
|
|
273
|
-
console.log(`nDCG@3 (labelled, mean): ${summary.label_ndcg3}`);
|
|
274
|
-
console.log(`nDCG@5 (labelled, mean): ${summary.label_ndcg5}`);
|
|
275
|
-
console.log(`Top-1 diversity: ${(summary.top1Diversity * 100).toFixed(0)}% (${uniqueTop1} distinct top-1 IDs across ${QUERIES.length} queries)`);
|
|
276
|
-
console.log(`Top-3 dup rate: ${(summary.top3DupRate * 100).toFixed(0)}%`);
|
|
277
|
-
console.log(`Avg query latency: ${summary.avgQueryLatencyMs} ms`);
|
|
278
|
-
console.log('');
|
|
279
|
-
for (const r of results) {
|
|
280
|
-
console.log(`Q: "${r.query}"`);
|
|
281
|
-
if (r.topK.length === 0) {
|
|
282
|
-
console.log(` → no matches`);
|
|
283
|
-
} else {
|
|
284
|
-
for (const m of r.topK.slice(0, 3)) {
|
|
285
|
-
console.log(` → ${m.score?.toFixed?.(3) ?? '—'} ${m.name}`);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
console.log('');
|
|
290
|
-
console.log(`Overall: ${summary.passed ? '✅ PASSED' : '⚠️ partial'}`);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
if (!process.env.BENCH_NO_WRITE) {
|
|
294
|
-
mkdirSync(RUNS_DIR, { recursive: true });
|
|
295
|
-
const stamp = summary.runAt.replace(/[:.]/g, '-');
|
|
296
|
-
writeFileSync(join(RUNS_DIR, `pretrained-retrieval-${stamp}.json`), JSON.stringify(summary, null, 2));
|
|
297
|
-
writeFileSync(join(RUNS_DIR, 'pretrained-retrieval-latest.json'), JSON.stringify(summary, null, 2));
|
|
298
|
-
if (!process.env.BENCH_JSON) console.log(`\nWrote ${join(RUNS_DIR, `pretrained-retrieval-${stamp}.json`)}`);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// ONNX runtime keeps a worker thread alive — force exit.
|
|
302
|
-
process.exit(summary.passed ? 0 : 1);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
main().catch((err) => { console.error(err); process.exit(1); });
|