@claude-flow/cli 3.32.3 → 3.32.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/helpers/helpers.manifest.json +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/agenticow/speculative-exploration.d.ts +148 -0
- package/dist/src/agenticow/speculative-exploration.js +218 -0
- package/dist/src/appliance/gguf-engine.d.ts +91 -0
- package/dist/src/appliance/gguf-engine.js +425 -0
- package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
- package/dist/src/appliance/ruvllm-bridge.js +292 -0
- package/dist/src/appliance/rvfa-builder.d.ts +44 -0
- package/dist/src/appliance/rvfa-builder.js +329 -0
- package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
- package/dist/src/appliance/rvfa-distribution.js +370 -0
- package/dist/src/appliance/rvfa-format.d.ts +111 -0
- package/dist/src/appliance/rvfa-format.js +393 -0
- package/dist/src/appliance/rvfa-runner.d.ts +69 -0
- package/dist/src/appliance/rvfa-runner.js +237 -0
- package/dist/src/appliance/rvfa-signing.d.ts +123 -0
- package/dist/src/appliance/rvfa-signing.js +347 -0
- package/dist/src/auth/client.d.ts +89 -0
- package/dist/src/auth/client.js +242 -0
- package/dist/src/auth/constants.d.ts +7 -0
- package/dist/src/auth/constants.js +7 -0
- package/dist/src/auth/scopes.d.ts +14 -0
- package/dist/src/auth/scopes.js +21 -0
- package/dist/src/auth/security-bridge.d.ts +36 -0
- package/dist/src/auth/security-bridge.js +42 -0
- package/dist/src/auth/session.d.ts +20 -0
- package/dist/src/auth/session.js +32 -0
- package/dist/src/auth/state.d.ts +19 -0
- package/dist/src/auth/state.js +53 -0
- package/dist/src/auth/types.d.ts +27 -0
- package/dist/src/auth/types.js +11 -0
- package/dist/src/autopilot-state.d.ts +77 -0
- package/dist/src/autopilot-state.js +271 -0
- package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +18 -0
- package/dist/src/benchmarks/gaia-agent-planning.smoke.js +253 -0
- package/dist/src/benchmarks/gaia-agent.d.ts +198 -0
- package/dist/src/benchmarks/gaia-agent.js +651 -0
- package/dist/src/benchmarks/gaia-causal-memory.d.ts +133 -0
- package/dist/src/benchmarks/gaia-causal-memory.js +281 -0
- package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +22 -0
- package/dist/src/benchmarks/gaia-causal-memory.smoke.js +300 -0
- package/dist/src/benchmarks/gaia-convergence.d.ts +138 -0
- package/dist/src/benchmarks/gaia-convergence.js +260 -0
- package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +19 -0
- package/dist/src/benchmarks/gaia-convergence.smoke.js +246 -0
- package/dist/src/benchmarks/gaia-critic.d.ts +123 -0
- package/dist/src/benchmarks/gaia-critic.js +312 -0
- package/dist/src/benchmarks/gaia-critic.smoke.d.ts +21 -0
- package/dist/src/benchmarks/gaia-critic.smoke.js +327 -0
- package/dist/src/benchmarks/gaia-decomposer.d.ts +125 -0
- package/dist/src/benchmarks/gaia-decomposer.js +350 -0
- package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +21 -0
- package/dist/src/benchmarks/gaia-decomposer.smoke.js +228 -0
- package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +27 -0
- package/dist/src/benchmarks/gaia-e2e-smoke.js +136 -0
- package/dist/src/benchmarks/gaia-extract.smoke.d.ts +45 -0
- package/dist/src/benchmarks/gaia-extract.smoke.js +242 -0
- package/dist/src/benchmarks/gaia-hardness/features.d.ts +46 -0
- package/dist/src/benchmarks/gaia-hardness/features.js +170 -0
- package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +105 -0
- package/dist/src/benchmarks/gaia-hardness/predictor.js +260 -0
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +20 -0
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +235 -0
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +51 -0
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +179 -0
- package/dist/src/benchmarks/gaia-judge.d.ts +88 -0
- package/dist/src/benchmarks/gaia-judge.js +437 -0
- package/dist/src/benchmarks/gaia-loader.d.ts +87 -0
- package/dist/src/benchmarks/gaia-loader.js +326 -0
- package/dist/src/benchmarks/gaia-tools/file_read.d.ts +35 -0
- package/dist/src/benchmarks/gaia-tools/file_read.js +403 -0
- package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +126 -0
- package/dist/src/benchmarks/gaia-tools/grounded_query.js +225 -0
- package/dist/src/benchmarks/gaia-tools/index.d.ts +32 -0
- package/dist/src/benchmarks/gaia-tools/index.js +36 -0
- package/dist/src/benchmarks/gaia-tools/types.d.ts +62 -0
- package/dist/src/benchmarks/gaia-tools/types.js +12 -0
- package/dist/src/benchmarks/gaia-tools/web_search.d.ts +30 -0
- package/dist/src/benchmarks/gaia-tools/web_search.js +210 -0
- package/dist/src/benchmarks/gaia-voting.d.ts +88 -0
- package/dist/src/benchmarks/gaia-voting.js +297 -0
- package/dist/src/benchmarks/gaia-voting.smoke.d.ts +20 -0
- package/dist/src/benchmarks/gaia-voting.smoke.js +332 -0
- package/dist/src/benchmarks/pretrain/index.d.ts +58 -0
- package/dist/src/benchmarks/pretrain/index.js +404 -0
- package/dist/src/business-pods/bbs-budget-tracker.d.ts +139 -0
- package/dist/src/business-pods/bbs-budget-tracker.js +358 -0
- package/dist/src/business-pods/domain-affinity-policy.d.ts +47 -0
- package/dist/src/business-pods/domain-affinity-policy.js +65 -0
- package/dist/src/business-pods/pod-schema.d.ts +96 -0
- package/dist/src/business-pods/pod-schema.js +225 -0
- package/dist/src/commands/advisor.d.ts +15 -0
- package/dist/src/commands/advisor.js +94 -0
- package/dist/src/commands/agent-wasm.d.ts +14 -0
- package/dist/src/commands/agent-wasm.js +333 -0
- package/dist/src/commands/agent.d.ts +8 -0
- package/dist/src/commands/agent.js +927 -0
- package/dist/src/commands/analyze.d.ts +19 -0
- package/dist/src/commands/analyze.js +2047 -0
- package/dist/src/commands/announcements.d.ts +17 -0
- package/dist/src/commands/announcements.js +0 -0
- package/dist/src/commands/appliance-advanced.d.ts +9 -0
- package/dist/src/commands/appliance-advanced.js +215 -0
- package/dist/src/commands/appliance.d.ts +8 -0
- package/dist/src/commands/appliance.js +404 -0
- package/dist/src/commands/auth.d.ts +15 -0
- package/dist/src/commands/auth.js +244 -0
- package/dist/src/commands/autopilot.d.ts +15 -0
- package/dist/src/commands/autopilot.js +407 -0
- package/dist/src/commands/benchmark.d.ts +10 -0
- package/dist/src/commands/benchmark.js +460 -0
- package/dist/src/commands/claims.d.ts +10 -0
- package/dist/src/commands/claims.js +620 -0
- package/dist/src/commands/cleanup.d.ts +13 -0
- package/dist/src/commands/cleanup.js +250 -0
- package/dist/src/commands/completions.d.ts +10 -0
- package/dist/src/commands/completions.js +539 -0
- package/dist/src/commands/config.d.ts +8 -0
- package/dist/src/commands/config.js +428 -0
- package/dist/src/commands/daemon.d.ts +59 -0
- package/dist/src/commands/daemon.js +1733 -0
- package/dist/src/commands/deployment.d.ts +10 -0
- package/dist/src/commands/deployment.js +672 -0
- package/dist/src/commands/doctor.d.ts +10 -0
- package/dist/src/commands/doctor.js +1902 -0
- package/dist/src/commands/eject.d.ts +33 -0
- package/dist/src/commands/eject.js +195 -0
- package/dist/src/commands/embeddings.d.ts +18 -0
- package/dist/src/commands/embeddings.js +1623 -0
- package/dist/src/commands/funnel.d.ts +18 -0
- package/dist/src/commands/funnel.js +302 -0
- package/dist/src/commands/gaia-bench.d.ts +40 -0
- package/dist/src/commands/gaia-bench.js +597 -0
- package/dist/src/commands/guidance.d.ts +8 -0
- package/dist/src/commands/guidance.js +556 -0
- package/dist/src/commands/hive-mind.d.ts +11 -0
- package/dist/src/commands/hive-mind.js +1319 -0
- package/dist/src/commands/hooks.d.ts +8 -0
- package/dist/src/commands/hooks.js +4606 -0
- package/dist/src/commands/index.d.ts +118 -0
- package/dist/src/commands/index.js +366 -0
- package/dist/src/commands/init.d.ts +13 -0
- package/dist/src/commands/init.js +1297 -0
- package/dist/src/commands/issues.d.ts +21 -0
- package/dist/src/commands/issues.js +567 -0
- package/dist/src/commands/mcp.d.ts +11 -0
- package/dist/src/commands/mcp.js +732 -0
- package/dist/src/commands/memory-backup.d.ts +11 -0
- package/dist/src/commands/memory-backup.js +46 -0
- package/dist/src/commands/memory-distill.d.ts +27 -0
- package/dist/src/commands/memory-distill.js +374 -0
- package/dist/src/commands/memory.d.ts +8 -0
- package/dist/src/commands/memory.js +1596 -0
- package/dist/src/commands/metaharness.d.ts +39 -0
- package/dist/src/commands/metaharness.js +215 -0
- package/dist/src/commands/migrate.d.ts +8 -0
- package/dist/src/commands/migrate.js +742 -0
- package/dist/src/commands/neural.d.ts +10 -0
- package/dist/src/commands/neural.js +4331 -0
- package/dist/src/commands/performance.d.ts +10 -0
- package/dist/src/commands/performance.js +583 -0
- package/dist/src/commands/plugins.d.ts +11 -0
- package/dist/src/commands/plugins.js +826 -0
- package/dist/src/commands/process.d.ts +10 -0
- package/dist/src/commands/process.js +694 -0
- package/dist/src/commands/progress.d.ts +11 -0
- package/dist/src/commands/progress.js +259 -0
- package/dist/src/commands/providers.d.ts +10 -0
- package/dist/src/commands/providers.js +502 -0
- package/dist/src/commands/proxy-lifecycle.d.ts +12 -0
- package/dist/src/commands/proxy-lifecycle.js +232 -0
- package/dist/src/commands/proxy.d.ts +21 -0
- package/dist/src/commands/proxy.js +398 -0
- package/dist/src/commands/route.d.ts +16 -0
- package/dist/src/commands/route.js +822 -0
- package/dist/src/commands/ruvector/backup.d.ts +11 -0
- package/dist/src/commands/ruvector/backup.js +747 -0
- package/dist/src/commands/ruvector/benchmark.d.ts +11 -0
- package/dist/src/commands/ruvector/benchmark.js +490 -0
- package/dist/src/commands/ruvector/import.d.ts +18 -0
- package/dist/src/commands/ruvector/import.js +373 -0
- package/dist/src/commands/ruvector/index.d.ts +29 -0
- package/dist/src/commands/ruvector/index.js +129 -0
- package/dist/src/commands/ruvector/init.d.ts +11 -0
- package/dist/src/commands/ruvector/init.js +467 -0
- package/dist/src/commands/ruvector/migrate.d.ts +11 -0
- package/dist/src/commands/ruvector/migrate.js +498 -0
- package/dist/src/commands/ruvector/optimize.d.ts +11 -0
- package/dist/src/commands/ruvector/optimize.js +505 -0
- package/dist/src/commands/ruvector/pg-utils.d.ts +14 -0
- package/dist/src/commands/ruvector/pg-utils.js +41 -0
- package/dist/src/commands/ruvector/setup.d.ts +18 -0
- package/dist/src/commands/ruvector/setup.js +765 -0
- package/dist/src/commands/ruvector/status.d.ts +11 -0
- package/dist/src/commands/ruvector/status.js +479 -0
- package/dist/src/commands/security.d.ts +10 -0
- package/dist/src/commands/security.js +1012 -0
- package/dist/src/commands/session.d.ts +8 -0
- package/dist/src/commands/session.js +757 -0
- package/dist/src/commands/settings.d.ts +19 -0
- package/dist/src/commands/settings.js +180 -0
- package/dist/src/commands/spinner.d.ts +16 -0
- package/dist/src/commands/spinner.js +329 -0
- package/dist/src/commands/start.d.ts +8 -0
- package/dist/src/commands/start.js +418 -0
- package/dist/src/commands/status.d.ts +8 -0
- package/dist/src/commands/status.js +608 -0
- package/dist/src/commands/swarm.d.ts +8 -0
- package/dist/src/commands/swarm.js +891 -0
- package/dist/src/commands/task.d.ts +8 -0
- package/dist/src/commands/task.js +675 -0
- package/dist/src/commands/transfer-store.d.ts +13 -0
- package/dist/src/commands/transfer-store.js +428 -0
- package/dist/src/commands/update.d.ts +8 -0
- package/dist/src/commands/update.js +276 -0
- package/dist/src/commands/verify.d.ts +19 -0
- package/dist/src/commands/verify.js +261 -0
- package/dist/src/commands/version.d.ts +42 -0
- package/dist/src/commands/version.js +106 -0
- package/dist/src/commands/workflow.d.ts +8 -0
- package/dist/src/commands/workflow.js +617 -0
- package/dist/src/config/harness-feedback-applier.d.ts +50 -0
- package/dist/src/config/harness-feedback-applier.js +122 -0
- package/dist/src/config/proven-config-refresh.d.ts +39 -0
- package/dist/src/config/proven-config-refresh.js +154 -0
- package/dist/src/config/proven-config-rvfa.d.ts +23 -0
- package/dist/src/config/proven-config-rvfa.js +73 -0
- package/dist/src/config/proven-config.d.ts +86 -0
- package/dist/src/config/proven-config.js +176 -0
- package/dist/src/config-adapter.d.ts +15 -0
- package/dist/src/config-adapter.js +186 -0
- package/dist/src/encryption/vault.d.ts +94 -0
- package/dist/src/encryption/vault.js +172 -0
- package/dist/src/fs-secure.d.ts +86 -0
- package/dist/src/fs-secure.js +133 -0
- package/dist/src/funnel/advisor-tip.d.ts +58 -0
- package/dist/src/funnel/advisor-tip.js +92 -0
- package/dist/src/funnel/attribution.d.ts +37 -0
- package/dist/src/funnel/attribution.js +101 -0
- package/dist/src/funnel/consent.d.ts +22 -0
- package/dist/src/funnel/consent.js +58 -0
- package/dist/src/funnel/credit-errors.d.ts +31 -0
- package/dist/src/funnel/credit-errors.js +88 -0
- package/dist/src/funnel/credit-notifier.d.ts +44 -0
- package/dist/src/funnel/credit-notifier.js +74 -0
- package/dist/src/funnel/disclosure.d.ts +47 -0
- package/dist/src/funnel/disclosure.js +109 -0
- package/dist/src/funnel/enrollment.d.ts +36 -0
- package/dist/src/funnel/enrollment.js +64 -0
- package/dist/src/funnel/environment.d.ts +17 -0
- package/dist/src/funnel/environment.js +39 -0
- package/dist/src/funnel/event-transport.d.ts +51 -0
- package/dist/src/funnel/event-transport.js +199 -0
- package/dist/src/funnel/events.d.ts +42 -0
- package/dist/src/funnel/events.js +150 -0
- package/dist/src/funnel/index.d.ts +21 -0
- package/dist/src/funnel/index.js +21 -0
- package/dist/src/funnel/insights.d.ts +50 -0
- package/dist/src/funnel/insights.js +120 -0
- package/dist/src/funnel/local-signals.d.ts +20 -0
- package/dist/src/funnel/local-signals.js +77 -0
- package/dist/src/funnel/message-transport.d.ts +51 -0
- package/dist/src/funnel/message-transport.js +149 -0
- package/dist/src/funnel/messages.d.ts +55 -0
- package/dist/src/funnel/messages.js +160 -0
- package/dist/src/funnel/payout.d.ts +40 -0
- package/dist/src/funnel/payout.js +60 -0
- package/dist/src/funnel/power-saver-notifier.d.ts +44 -0
- package/dist/src/funnel/power-saver-notifier.js +92 -0
- package/dist/src/funnel/precedence.d.ts +16 -0
- package/dist/src/funnel/precedence.js +85 -0
- package/dist/src/funnel/promo.d.ts +41 -0
- package/dist/src/funnel/promo.js +144 -0
- package/dist/src/funnel/rate-limit-notifier.d.ts +55 -0
- package/dist/src/funnel/rate-limit-notifier.js +102 -0
- package/dist/src/funnel/rotation.d.ts +19 -0
- package/dist/src/funnel/rotation.js +70 -0
- package/dist/src/funnel/state.d.ts +13 -0
- package/dist/src/funnel/state.js +52 -0
- package/dist/src/funnel/toggle-cooldown.d.ts +17 -0
- package/dist/src/funnel/toggle-cooldown.js +32 -0
- package/dist/src/funnel/types.d.ts +98 -0
- package/dist/src/funnel/types.js +26 -0
- package/dist/src/index.d.ts +81 -0
- package/dist/src/index.js +609 -0
- package/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
- package/dist/src/infrastructure/in-memory-repositories.js +264 -0
- package/dist/src/init/claudemd-generator.d.ts +16 -0
- package/dist/src/init/claudemd-generator.js +368 -0
- package/dist/src/init/executor.d.ts +41 -0
- package/dist/src/init/executor.js +2142 -0
- package/dist/src/init/helper-refresh.d.ts +79 -0
- package/dist/src/init/helper-refresh.js +347 -0
- package/dist/src/init/helper-signing.d.ts +37 -0
- package/dist/src/init/helper-signing.js +67 -0
- package/dist/src/init/helpers-generator.d.ts +87 -0
- package/dist/src/init/helpers-generator.js +1456 -0
- package/dist/src/init/index.d.ts +13 -0
- package/dist/src/init/index.js +15 -0
- package/dist/src/init/mcp-generator.d.ts +26 -0
- package/dist/src/init/mcp-generator.js +126 -0
- package/dist/src/init/memory-package-resolver.d.ts +53 -0
- package/dist/src/init/memory-package-resolver.js +118 -0
- package/dist/src/init/settings-generator.d.ts +14 -0
- package/dist/src/init/settings-generator.js +462 -0
- package/dist/src/init/statusline-generator.d.ts +28 -0
- package/dist/src/init/statusline-generator.js +177 -0
- package/dist/src/init/types.d.ts +331 -0
- package/dist/src/init/types.js +276 -0
- package/dist/src/log-filters.d.ts +46 -0
- package/dist/src/log-filters.js +107 -0
- package/dist/src/mcp-client.d.ts +92 -0
- package/dist/src/mcp-client.js +397 -0
- package/dist/src/mcp-server.d.ts +163 -0
- package/dist/src/mcp-server.js +751 -0
- package/dist/src/mcp-tools/agent-execute-core.d.ts +115 -0
- package/dist/src/mcp-tools/agent-execute-core.js +587 -0
- package/dist/src/mcp-tools/agent-tools.d.ts +9 -0
- package/dist/src/mcp-tools/agent-tools.js +837 -0
- package/dist/src/mcp-tools/agentbbs-tools.d.ts +28 -0
- package/dist/src/mcp-tools/agentbbs-tools.js +394 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts +35 -0
- package/dist/src/mcp-tools/agentdb-tools.js +1473 -0
- package/dist/src/mcp-tools/agenticow-loader.d.ts +59 -0
- package/dist/src/mcp-tools/agenticow-loader.js +105 -0
- package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +24 -0
- package/dist/src/mcp-tools/agenticow-speculate-tools.js +209 -0
- package/dist/src/mcp-tools/agenticow-tools.d.ts +36 -0
- package/dist/src/mcp-tools/agenticow-tools.js +360 -0
- package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
- package/dist/src/mcp-tools/analyze-tools.js +346 -0
- package/dist/src/mcp-tools/auto-install.d.ts +83 -0
- package/dist/src/mcp-tools/auto-install.js +131 -0
- package/dist/src/mcp-tools/autopilot-tools.d.ts +12 -0
- package/dist/src/mcp-tools/autopilot-tools.js +231 -0
- 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-session-tools.d.ts +27 -0
- package/dist/src/mcp-tools/browser-session-tools.js +398 -0
- package/dist/src/mcp-tools/browser-tools.d.ts +21 -0
- package/dist/src/mcp-tools/browser-tools.js +760 -0
- package/dist/src/mcp-tools/business-pod-tools.d.ts +20 -0
- package/dist/src/mcp-tools/business-pod-tools.js +169 -0
- package/dist/src/mcp-tools/claims-tools.d.ts +12 -0
- package/dist/src/mcp-tools/claims-tools.js +863 -0
- package/dist/src/mcp-tools/config-tools.d.ts +8 -0
- package/dist/src/mcp-tools/config-tools.js +411 -0
- package/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
- package/dist/src/mcp-tools/coordination-tools.js +729 -0
- package/dist/src/mcp-tools/daa-tools.d.ts +13 -0
- package/dist/src/mcp-tools/daa-tools.js +534 -0
- package/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
- package/dist/src/mcp-tools/embeddings-tools.js +904 -0
- package/dist/src/mcp-tools/github-tools.d.ts +9 -0
- package/dist/src/mcp-tools/github-tools.js +659 -0
- package/dist/src/mcp-tools/guidance-tools.d.ts +15 -0
- package/dist/src/mcp-tools/guidance-tools.js +639 -0
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
- package/dist/src/mcp-tools/hive-mind-tools.js +953 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +65 -0
- package/dist/src/mcp-tools/hooks-tools.js +4836 -0
- package/dist/src/mcp-tools/http-fetch-tools.d.ts +55 -0
- package/dist/src/mcp-tools/http-fetch-tools.js +329 -0
- package/dist/src/mcp-tools/index.d.ts +34 -0
- package/dist/src/mcp-tools/index.js +40 -0
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
- package/dist/src/mcp-tools/managed-agent-tools.js +357 -0
- package/dist/src/mcp-tools/memory-tools.d.ts +14 -0
- package/dist/src/mcp-tools/memory-tools.js +1330 -0
- package/dist/src/mcp-tools/metaharness-tools.d.ts +51 -0
- package/dist/src/mcp-tools/metaharness-tools.js +684 -0
- package/dist/src/mcp-tools/neural-tools.d.ts +54 -0
- package/dist/src/mcp-tools/neural-tools.js +1168 -0
- package/dist/src/mcp-tools/performance-tools.d.ts +16 -0
- package/dist/src/mcp-tools/performance-tools.js +675 -0
- package/dist/src/mcp-tools/progress-tools.d.ts +14 -0
- package/dist/src/mcp-tools/progress-tools.js +348 -0
- package/dist/src/mcp-tools/request-tracker.d.ts +17 -0
- package/dist/src/mcp-tools/request-tracker.js +27 -0
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
- package/dist/src/mcp-tools/ruvllm-tools.js +355 -0
- package/dist/src/mcp-tools/security-tools.d.ts +18 -0
- package/dist/src/mcp-tools/security-tools.js +556 -0
- package/dist/src/mcp-tools/session-tools.d.ts +8 -0
- package/dist/src/mcp-tools/session-tools.js +517 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts +37 -0
- package/dist/src/mcp-tools/swarm-tools.js +390 -0
- package/dist/src/mcp-tools/system-tools.d.ts +13 -0
- package/dist/src/mcp-tools/system-tools.js +688 -0
- package/dist/src/mcp-tools/task-tools.d.ts +8 -0
- package/dist/src/mcp-tools/task-tools.js +487 -0
- package/dist/src/mcp-tools/terminal-tools.d.ts +8 -0
- package/dist/src/mcp-tools/terminal-tools.js +306 -0
- package/dist/src/mcp-tools/testgen-tools.d.ts +26 -0
- package/dist/src/mcp-tools/testgen-tools.js +168 -0
- package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +31 -0
- package/dist/src/mcp-tools/tool-loop-guardrail.js +71 -0
- package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
- package/dist/src/mcp-tools/transfer-tools.js +447 -0
- package/dist/src/mcp-tools/types.d.ts +8 -0
- package/dist/src/mcp-tools/types.js +8 -0
- package/dist/src/mcp-tools/validate-input.d.ts +9 -0
- package/dist/src/mcp-tools/validate-input.js +9 -0
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +13 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js +840 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
- package/dist/src/mcp-tools/workflow-tools.js +884 -0
- package/dist/src/memory/bge-embedder.d.ts +25 -0
- package/dist/src/memory/bge-embedder.js +121 -0
- package/dist/src/memory/cross-encoder-rerank.d.ts +33 -0
- package/dist/src/memory/cross-encoder-rerank.js +123 -0
- package/dist/src/memory/embedding-policy.d.ts +21 -0
- package/dist/src/memory/embedding-policy.js +30 -0
- package/dist/src/memory/embedding-quantization.d.ts +62 -0
- package/dist/src/memory/embedding-quantization.js +156 -0
- package/dist/src/memory/ewc-consolidation.d.ts +305 -0
- package/dist/src/memory/ewc-consolidation.js +611 -0
- package/dist/src/memory/graph-edge-writer.d.ts +95 -0
- package/dist/src/memory/graph-edge-writer.js +217 -0
- package/dist/src/memory/hybrid-retrieval.d.ts +77 -0
- package/dist/src/memory/hybrid-retrieval.js +192 -0
- package/dist/src/memory/intelligence.d.ts +405 -0
- package/dist/src/memory/intelligence.js +1316 -0
- package/dist/src/memory/lucene-bm25.d.ts +19 -0
- package/dist/src/memory/lucene-bm25.js +308 -0
- package/dist/src/memory/memory-bridge.d.ts +537 -0
- package/dist/src/memory/memory-bridge.js +2460 -0
- package/dist/src/memory/memory-initializer.d.ts +556 -0
- package/dist/src/memory/memory-initializer.js +3021 -0
- package/dist/src/memory/neural-package-bridge.d.ts +48 -0
- package/dist/src/memory/neural-package-bridge.js +87 -0
- package/dist/src/memory/rabitq-index.d.ts +60 -0
- package/dist/src/memory/rabitq-index.js +242 -0
- package/dist/src/memory/sona-optimizer.d.ts +267 -0
- package/dist/src/memory/sona-optimizer.js +779 -0
- package/dist/src/memory/structured-distill.d.ts +48 -0
- package/dist/src/memory/structured-distill.js +125 -0
- package/dist/src/output.d.ts +9 -0
- package/dist/src/output.js +9 -0
- package/dist/src/parser.d.ts +89 -0
- package/dist/src/parser.js +516 -0
- package/dist/src/plugins/manager.d.ts +133 -0
- package/dist/src/plugins/manager.js +415 -0
- package/dist/src/plugins/store/discovery.d.ts +99 -0
- package/dist/src/plugins/store/discovery.js +1224 -0
- package/dist/src/plugins/store/index.d.ts +76 -0
- package/dist/src/plugins/store/index.js +141 -0
- package/dist/src/plugins/store/search.d.ts +46 -0
- package/dist/src/plugins/store/search.js +230 -0
- package/dist/src/plugins/store/types.d.ts +279 -0
- package/dist/src/plugins/store/types.js +7 -0
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/dist/src/plugins/tests/standalone-test.js +188 -0
- package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/dist/src/production/circuit-breaker.d.ts +101 -0
- package/dist/src/production/circuit-breaker.js +241 -0
- package/dist/src/production/error-handler.d.ts +92 -0
- package/dist/src/production/error-handler.js +299 -0
- package/dist/src/production/index.d.ts +23 -0
- package/dist/src/production/index.js +18 -0
- package/dist/src/production/monitoring.d.ts +161 -0
- package/dist/src/production/monitoring.js +356 -0
- package/dist/src/production/rate-limiter.d.ts +80 -0
- package/dist/src/production/rate-limiter.js +201 -0
- package/dist/src/production/retry.d.ts +48 -0
- package/dist/src/production/retry.js +179 -0
- package/dist/src/prompt.d.ts +44 -0
- package/dist/src/prompt.js +501 -0
- package/dist/src/proxy/install.d.ts +29 -0
- package/dist/src/proxy/install.js +135 -0
- package/dist/src/proxy/lifecycle.d.ts +61 -0
- package/dist/src/proxy/lifecycle.js +249 -0
- package/dist/src/proxy/paths.d.ts +34 -0
- package/dist/src/proxy/paths.js +70 -0
- package/dist/src/proxy/release.d.ts +47 -0
- package/dist/src/proxy/release.js +138 -0
- package/dist/src/proxy/token-bridge.d.ts +5 -0
- package/dist/src/proxy/token-bridge.js +61 -0
- package/dist/src/proxy/verify.d.ts +44 -0
- package/dist/src/proxy/verify.js +68 -0
- package/dist/src/runtime/headless.d.ts +60 -0
- package/dist/src/runtime/headless.js +284 -0
- package/dist/src/runtime/parent-death-watchdog.d.ts +42 -0
- package/dist/src/runtime/parent-death-watchdog.js +70 -0
- package/dist/src/ruvector/agent-wasm.d.ts +228 -0
- package/dist/src/ruvector/agent-wasm.js +463 -0
- package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/dist/src/ruvector/ast-analyzer.js +277 -0
- package/dist/src/ruvector/codemods/engine.d.ts +45 -0
- package/dist/src/ruvector/codemods/engine.js +291 -0
- package/dist/src/ruvector/codemods/scope-analysis.d.ts +29 -0
- package/dist/src/ruvector/codemods/scope-analysis.js +162 -0
- package/dist/src/ruvector/coverage-router.d.ts +160 -0
- package/dist/src/ruvector/coverage-router.js +531 -0
- package/dist/src/ruvector/coverage-tools.d.ts +33 -0
- package/dist/src/ruvector/coverage-tools.js +157 -0
- package/dist/src/ruvector/diff-classifier.d.ts +175 -0
- package/dist/src/ruvector/diff-classifier.js +699 -0
- package/dist/src/ruvector/diskann-backend.d.ts +78 -0
- package/dist/src/ruvector/diskann-backend.js +310 -0
- package/dist/src/ruvector/enhanced-model-router.d.ts +172 -0
- package/dist/src/ruvector/enhanced-model-router.js +577 -0
- package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
- package/dist/src/ruvector/graph-analyzer.js +929 -0
- package/dist/src/ruvector/graph-backend.d.ts +79 -0
- package/dist/src/ruvector/graph-backend.js +220 -0
- package/dist/src/ruvector/index.d.ts +38 -0
- package/dist/src/ruvector/index.js +86 -0
- package/dist/src/ruvector/lora-adapter.d.ts +292 -0
- package/dist/src/ruvector/lora-adapter.js +710 -0
- package/dist/src/ruvector/model-prices.d.ts +50 -0
- package/dist/src/ruvector/model-prices.js +72 -0
- package/dist/src/ruvector/model-router.d.ts +408 -0
- package/dist/src/ruvector/model-router.js +1162 -0
- package/dist/src/ruvector/neural-router.d.ts +182 -0
- package/dist/src/ruvector/neural-router.js +825 -0
- package/dist/src/ruvector/output-verifier.d.ts +83 -0
- package/dist/src/ruvector/output-verifier.js +277 -0
- package/dist/src/ruvector/q-learning-router.d.ts +227 -0
- package/dist/src/ruvector/q-learning-router.js +721 -0
- package/dist/src/ruvector/router-calibrator.d.ts +65 -0
- package/dist/src/ruvector/router-calibrator.js +120 -0
- package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
- package/dist/src/ruvector/router-parallel-recorder.js +183 -0
- package/dist/src/ruvector/router-trajectory.d.ts +194 -0
- package/dist/src/ruvector/router-trajectory.js +281 -0
- package/dist/src/ruvector/run-transcript-recorder.d.ts +154 -0
- package/dist/src/ruvector/run-transcript-recorder.js +209 -0
- package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
- package/dist/src/ruvector/ruvllm-wasm.js +379 -0
- package/dist/src/ruvector/semantic-router.d.ts +77 -0
- package/dist/src/ruvector/semantic-router.js +178 -0
- package/dist/src/ruvector/task-embedder.d.ts +56 -0
- package/dist/src/ruvector/task-embedder.js +237 -0
- package/dist/src/ruvector/trajectory-tree.d.ts +113 -0
- package/dist/src/ruvector/trajectory-tree.js +237 -0
- package/dist/src/ruvector/vector-db.d.ts +73 -0
- package/dist/src/ruvector/vector-db.js +301 -0
- package/dist/src/ruvector/wasm-embedder.d.ts +13 -0
- package/dist/src/ruvector/wasm-embedder.js +143 -0
- package/dist/src/security/builtin-aidefence.d.ts +34 -0
- package/dist/src/security/builtin-aidefence.js +86 -0
- package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/dist/src/services/agentic-flow-bridge.js +95 -0
- package/dist/src/services/ai-job-dedup.d.ts +61 -0
- package/dist/src/services/ai-job-dedup.js +136 -0
- package/dist/src/services/checkpoint-gate.d.ts +140 -0
- package/dist/src/services/checkpoint-gate.js +223 -0
- package/dist/src/services/claim-service.d.ts +204 -0
- package/dist/src/services/claim-service.js +818 -0
- package/dist/src/services/config-file-manager.d.ts +37 -0
- package/dist/src/services/config-file-manager.js +224 -0
- package/dist/src/services/container-worker-pool.d.ts +204 -0
- package/dist/src/services/container-worker-pool.js +589 -0
- package/dist/src/services/daemon-autostart.d.ts +17 -0
- package/dist/src/services/daemon-autostart.js +102 -0
- package/dist/src/services/distill-oracle.d.ts +190 -0
- package/dist/src/services/distill-oracle.js +349 -0
- package/dist/src/services/distill-tuning.d.ts +111 -0
- package/dist/src/services/distill-tuning.js +510 -0
- package/dist/src/services/evolve-proof.d.ts +253 -0
- package/dist/src/services/evolve-proof.js +343 -0
- package/dist/src/services/fable-harness.d.ts +208 -0
- package/dist/src/services/fable-harness.js +388 -0
- package/dist/src/services/git-workspace-identity.d.ts +42 -0
- package/dist/src/services/git-workspace-identity.js +99 -0
- package/dist/src/services/global-ai-budget.d.ts +135 -0
- package/dist/src/services/global-ai-budget.js +415 -0
- package/dist/src/services/harness-benchmark.d.ts +68 -0
- package/dist/src/services/harness-benchmark.js +94 -0
- package/dist/src/services/harness-canary.d.ts +60 -0
- package/dist/src/services/harness-canary.js +69 -0
- package/dist/src/services/harness-corpus-harvester.d.ts +51 -0
- package/dist/src/services/harness-corpus-harvester.js +74 -0
- package/dist/src/services/harness-flywheel-generations.d.ts +115 -0
- package/dist/src/services/harness-flywheel-generations.js +360 -0
- package/dist/src/services/harness-flywheel-runtime.d.ts +25 -0
- package/dist/src/services/harness-flywheel-runtime.js +92 -0
- package/dist/src/services/harness-flywheel.d.ts +48 -0
- package/dist/src/services/harness-flywheel.js +207 -0
- package/dist/src/services/harness-frozen-eval.d.ts +22 -0
- package/dist/src/services/harness-frozen-eval.js +66 -0
- package/dist/src/services/harness-hosts.d.ts +40 -0
- package/dist/src/services/harness-hosts.js +88 -0
- package/dist/src/services/harness-improvement-ledger.d.ts +63 -0
- package/dist/src/services/harness-improvement-ledger.js +101 -0
- package/dist/src/services/harness-loop.d.ts +53 -0
- package/dist/src/services/harness-loop.js +85 -0
- package/dist/src/services/harness-qualification.d.ts +66 -0
- package/dist/src/services/harness-qualification.js +143 -0
- package/dist/src/services/harness-replay.d.ts +37 -0
- package/dist/src/services/harness-replay.js +92 -0
- package/dist/src/services/harness-verify.d.ts +33 -0
- package/dist/src/services/harness-verify.js +26 -0
- package/dist/src/services/harness-worker.d.ts +23 -0
- package/dist/src/services/harness-worker.js +66 -0
- package/dist/src/services/headless-worker-executor.d.ts +358 -0
- package/dist/src/services/headless-worker-executor.js +1269 -0
- package/dist/src/services/index.d.ts +13 -0
- package/dist/src/services/index.js +11 -0
- package/dist/src/services/memory-backup.d.ts +53 -0
- package/dist/src/services/memory-backup.js +198 -0
- package/dist/src/services/memory-distillation.d.ts +41 -0
- package/dist/src/services/memory-distillation.js +277 -0
- package/dist/src/services/native-training.d.ts +68 -0
- package/dist/src/services/native-training.js +141 -0
- package/dist/src/services/registry-api.d.ts +58 -0
- package/dist/src/services/registry-api.js +146 -0
- package/dist/src/services/repo-supervisor.d.ts +70 -0
- package/dist/src/services/repo-supervisor.js +228 -0
- package/dist/src/services/ruvector-training.d.ts +222 -0
- package/dist/src/services/ruvector-training.js +693 -0
- package/dist/src/services/swarm-memory-branches.d.ts +135 -0
- package/dist/src/services/swarm-memory-branches.js +213 -0
- package/dist/src/services/weight-eft.d.ts +305 -0
- package/dist/src/services/weight-eft.js +296 -0
- package/dist/src/services/worker-daemon.d.ts +439 -0
- package/dist/src/services/worker-daemon.js +1865 -0
- package/dist/src/services/worker-queue.d.ts +194 -0
- package/dist/src/services/worker-queue.js +513 -0
- package/dist/src/services/workspace-lease.d.ts +55 -0
- package/dist/src/services/workspace-lease.js +191 -0
- package/dist/src/suggest.d.ts +53 -0
- package/dist/src/suggest.js +200 -0
- package/dist/src/transfer/anonymization/index.d.ts +25 -0
- package/dist/src/transfer/anonymization/index.js +175 -0
- package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/dist/src/transfer/deploy-seraphine.js +205 -0
- package/dist/src/transfer/export.d.ts +25 -0
- package/dist/src/transfer/export.js +113 -0
- package/dist/src/transfer/index.d.ts +12 -0
- package/dist/src/transfer/index.js +31 -0
- package/dist/src/transfer/ipfs/client.d.ts +109 -0
- package/dist/src/transfer/ipfs/client.js +307 -0
- package/dist/src/transfer/ipfs/upload.d.ts +95 -0
- package/dist/src/transfer/ipfs/upload.js +413 -0
- package/dist/src/transfer/models/seraphine.d.ts +72 -0
- package/dist/src/transfer/models/seraphine.js +373 -0
- package/dist/src/transfer/serialization/cfp.d.ts +49 -0
- package/dist/src/transfer/serialization/cfp.js +183 -0
- package/dist/src/transfer/storage/gcs.d.ts +82 -0
- package/dist/src/transfer/storage/gcs.js +272 -0
- package/dist/src/transfer/storage/index.d.ts +6 -0
- package/dist/src/transfer/storage/index.js +6 -0
- package/dist/src/transfer/store/discovery.d.ts +84 -0
- package/dist/src/transfer/store/discovery.js +382 -0
- package/dist/src/transfer/store/download.d.ts +70 -0
- package/dist/src/transfer/store/download.js +334 -0
- package/dist/src/transfer/store/index.d.ts +84 -0
- package/dist/src/transfer/store/index.js +153 -0
- package/dist/src/transfer/store/publish.d.ts +76 -0
- package/dist/src/transfer/store/publish.js +294 -0
- package/dist/src/transfer/store/registry.d.ts +58 -0
- package/dist/src/transfer/store/registry.js +285 -0
- package/dist/src/transfer/store/search.d.ts +54 -0
- package/dist/src/transfer/store/search.js +232 -0
- package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/dist/src/transfer/store/types.d.ts +193 -0
- package/dist/src/transfer/store/types.js +6 -0
- package/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/dist/src/transfer/test-seraphine.js +105 -0
- package/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/dist/src/transfer/tests/test-store.js +214 -0
- package/dist/src/transfer/types.d.ts +245 -0
- package/dist/src/transfer/types.js +6 -0
- package/dist/src/types.d.ts +13 -0
- package/dist/src/types.js +13 -0
- package/dist/src/update/checker.d.ts +34 -0
- package/dist/src/update/checker.js +191 -0
- package/dist/src/update/executor.d.ts +33 -0
- package/dist/src/update/executor.js +217 -0
- package/dist/src/update/index.d.ts +33 -0
- package/dist/src/update/index.js +64 -0
- package/dist/src/update/rate-limiter.d.ts +20 -0
- package/dist/src/update/rate-limiter.js +96 -0
- package/dist/src/update/validator.d.ts +17 -0
- package/dist/src/update/validator.js +123 -0
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* output-verifier.ts — Confidence-gated tier escalation (post-generation).
|
|
3
|
+
*
|
|
4
|
+
* ADR-026/143 route tasks to a tier BEFORE generation. 2026 SOTA cascade
|
|
5
|
+
* routing adds a post-generation gate: attempt the cheap tier, run a CHEAP
|
|
6
|
+
* verifier over the produced output, and escalate to the next tier only when
|
|
7
|
+
* the verifier is not confident. This module is that verifier.
|
|
8
|
+
*
|
|
9
|
+
* Design constraints (load-bearing):
|
|
10
|
+
* - $0 by default — NO LLM call. Every signal is a structural / lexical
|
|
11
|
+
* check: emptiness, refusal patterns, truncation, delimiter balance,
|
|
12
|
+
* degenerate repetition, and (for code tasks) a real syntax parse via the
|
|
13
|
+
* TypeScript compiler (lazy-imported; degrades to delimiter checks when
|
|
14
|
+
* typescript is not installed) or JSON.parse for JSON output.
|
|
15
|
+
* - Pure with respect to router state — recording the verdict into the
|
|
16
|
+
* bandit's learning stream is the CALLER's job (the hooks_model-verify
|
|
17
|
+
* MCP tool does it via ModelRouter.recordOutcome), keeping this module
|
|
18
|
+
* trivially unit-testable.
|
|
19
|
+
* - Escalation ladder mirrors the tier table: tier 2 (haiku) → tier 3
|
|
20
|
+
* (sonnet), sonnet → opus, opus has no bump (escalate=false even when the
|
|
21
|
+
* verdict is not confident — the caller should retry or surface instead).
|
|
22
|
+
*
|
|
23
|
+
* Verdict semantics: `confident=false` means "cheap signals say this output
|
|
24
|
+
* is likely unusable"; it is NOT a semantic-quality judgment. False
|
|
25
|
+
* negatives (bad output that parses fine) are expected — this gate trades
|
|
26
|
+
* recall for being free.
|
|
27
|
+
*
|
|
28
|
+
* @module ruvector/output-verifier
|
|
29
|
+
*/
|
|
30
|
+
export type VerifyTier = 1 | 2 | 3;
|
|
31
|
+
export type VerifyModel = 'haiku' | 'sonnet' | 'opus';
|
|
32
|
+
export type VerifyTaskKind = 'code' | 'json' | 'text' | 'auto';
|
|
33
|
+
export interface VerifyInput {
|
|
34
|
+
/** The task the output was generated for. */
|
|
35
|
+
task: string;
|
|
36
|
+
/** The generated output to verify. */
|
|
37
|
+
output: string;
|
|
38
|
+
/** Model that produced the output (drives the escalation ladder). */
|
|
39
|
+
model?: VerifyModel;
|
|
40
|
+
/** Tier that produced the output; derived from `model` when absent. */
|
|
41
|
+
tierUsed?: VerifyTier;
|
|
42
|
+
/** Force the task kind; 'auto' (default) detects from task + output. */
|
|
43
|
+
taskKind?: VerifyTaskKind;
|
|
44
|
+
/** Minimum trimmed output length considered plausible (default 20). */
|
|
45
|
+
minLength?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface VerifySignal {
|
|
48
|
+
name: string;
|
|
49
|
+
ok: boolean;
|
|
50
|
+
detail?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface VerifyVerdict {
|
|
53
|
+
confident: boolean;
|
|
54
|
+
/** Fraction of signals that passed (0..1). */
|
|
55
|
+
score: number;
|
|
56
|
+
/** Human-readable failure reasons; empty when confident. */
|
|
57
|
+
reasons: string[];
|
|
58
|
+
/** Every signal evaluated, pass or fail. */
|
|
59
|
+
signals: VerifySignal[];
|
|
60
|
+
/** Tier the caller should use next: unchanged when confident, bumped 2→3 on failure. */
|
|
61
|
+
suggestedTier: VerifyTier;
|
|
62
|
+
/** Concrete next model on the ladder (haiku→sonnet→opus); null when no bump exists. */
|
|
63
|
+
suggestedModel: VerifyModel | null;
|
|
64
|
+
/** True when not confident AND a higher tier exists to escalate to. */
|
|
65
|
+
escalate: boolean;
|
|
66
|
+
/** Detected task kind after 'auto' resolution. */
|
|
67
|
+
taskKind: Exclude<VerifyTaskKind, 'auto'>;
|
|
68
|
+
}
|
|
69
|
+
interface ExtractedCode {
|
|
70
|
+
lang: string;
|
|
71
|
+
code: string;
|
|
72
|
+
}
|
|
73
|
+
/** Pull fenced code blocks out of markdown-ish output. */
|
|
74
|
+
export declare function extractCodeBlocks(output: string): ExtractedCode[];
|
|
75
|
+
/** Cheap stack-based bracket balance check that skips string/comment-ish content. */
|
|
76
|
+
export declare function bracketsBalanced(code: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Compute a confidence verdict for `output` from cheap structural signals,
|
|
79
|
+
* and suggest an escalation target when not confident.
|
|
80
|
+
*/
|
|
81
|
+
export declare function verifyAndEscalate(input: VerifyInput): Promise<VerifyVerdict>;
|
|
82
|
+
export default verifyAndEscalate;
|
|
83
|
+
//# sourceMappingURL=output-verifier.d.ts.map
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* output-verifier.ts — Confidence-gated tier escalation (post-generation).
|
|
3
|
+
*
|
|
4
|
+
* ADR-026/143 route tasks to a tier BEFORE generation. 2026 SOTA cascade
|
|
5
|
+
* routing adds a post-generation gate: attempt the cheap tier, run a CHEAP
|
|
6
|
+
* verifier over the produced output, and escalate to the next tier only when
|
|
7
|
+
* the verifier is not confident. This module is that verifier.
|
|
8
|
+
*
|
|
9
|
+
* Design constraints (load-bearing):
|
|
10
|
+
* - $0 by default — NO LLM call. Every signal is a structural / lexical
|
|
11
|
+
* check: emptiness, refusal patterns, truncation, delimiter balance,
|
|
12
|
+
* degenerate repetition, and (for code tasks) a real syntax parse via the
|
|
13
|
+
* TypeScript compiler (lazy-imported; degrades to delimiter checks when
|
|
14
|
+
* typescript is not installed) or JSON.parse for JSON output.
|
|
15
|
+
* - Pure with respect to router state — recording the verdict into the
|
|
16
|
+
* bandit's learning stream is the CALLER's job (the hooks_model-verify
|
|
17
|
+
* MCP tool does it via ModelRouter.recordOutcome), keeping this module
|
|
18
|
+
* trivially unit-testable.
|
|
19
|
+
* - Escalation ladder mirrors the tier table: tier 2 (haiku) → tier 3
|
|
20
|
+
* (sonnet), sonnet → opus, opus has no bump (escalate=false even when the
|
|
21
|
+
* verdict is not confident — the caller should retry or surface instead).
|
|
22
|
+
*
|
|
23
|
+
* Verdict semantics: `confident=false` means "cheap signals say this output
|
|
24
|
+
* is likely unusable"; it is NOT a semantic-quality judgment. False
|
|
25
|
+
* negatives (bad output that parses fine) are expected — this gate trades
|
|
26
|
+
* recall for being free.
|
|
27
|
+
*
|
|
28
|
+
* @module ruvector/output-verifier
|
|
29
|
+
*/
|
|
30
|
+
const MODEL_TIER = { haiku: 2, sonnet: 3, opus: 3 };
|
|
31
|
+
const NEXT_MODEL = {
|
|
32
|
+
haiku: 'sonnet',
|
|
33
|
+
sonnet: 'opus',
|
|
34
|
+
opus: null,
|
|
35
|
+
};
|
|
36
|
+
// Refusal phrasings scanned near the start of the output. Anchored to the
|
|
37
|
+
// head so a legitimate answer that *discusses* refusals doesn't trip it.
|
|
38
|
+
const REFUSAL_HEAD_CHARS = 240;
|
|
39
|
+
const REFUSAL_PATTERNS = [
|
|
40
|
+
/\bI\s+(?:can(?:no|')t|cannot)\s+(?:help|assist|do|provide|comply|fulfill|complete|write|generate)\b/i,
|
|
41
|
+
/\bI(?:'m| am)\s+(?:sorry|afraid)\b[\s\S]{0,60}\b(?:can(?:no|')t|cannot|unable)\b/i,
|
|
42
|
+
/\bI(?:'m| am)\s+(?:unable|not able)\s+to\b/i,
|
|
43
|
+
/\bI\s+(?:must|have to)\s+(?:decline|refuse)\b/i,
|
|
44
|
+
/\bI\s+won'?t\s+be\s+able\s+to\b/i,
|
|
45
|
+
/\bas an AI(?:\s+(?:language\s+)?model)?[,\s]+I\b/i,
|
|
46
|
+
];
|
|
47
|
+
// A trailing dangling operator / opener strongly suggests a mid-expression cutoff.
|
|
48
|
+
const TRUNCATION_TAIL = /(?:,|&&|\|\||=>|[+*/%=]|\(|\[|\{|\bconst|\blet|\bvar|\bfunction|\breturn|:)\s*$/;
|
|
49
|
+
/** Pull fenced code blocks out of markdown-ish output. */
|
|
50
|
+
export function extractCodeBlocks(output) {
|
|
51
|
+
const blocks = [];
|
|
52
|
+
const re = /```([A-Za-z0-9_-]*)\n([\s\S]*?)```/g;
|
|
53
|
+
let m;
|
|
54
|
+
while ((m = re.exec(output)) !== null) {
|
|
55
|
+
blocks.push({ lang: (m[1] || '').toLowerCase(), code: m[2] });
|
|
56
|
+
}
|
|
57
|
+
return blocks;
|
|
58
|
+
}
|
|
59
|
+
/** Cheap stack-based bracket balance check that skips string/comment-ish content. */
|
|
60
|
+
export function bracketsBalanced(code) {
|
|
61
|
+
const stack = [];
|
|
62
|
+
const pairs = { ')': '(', ']': '[', '}': '{' };
|
|
63
|
+
let inString = null;
|
|
64
|
+
let inLineComment = false;
|
|
65
|
+
let inBlockComment = false;
|
|
66
|
+
for (let i = 0; i < code.length; i++) {
|
|
67
|
+
const c = code[i];
|
|
68
|
+
const next = code[i + 1];
|
|
69
|
+
if (inLineComment) {
|
|
70
|
+
if (c === '\n')
|
|
71
|
+
inLineComment = false;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (inBlockComment) {
|
|
75
|
+
if (c === '*' && next === '/') {
|
|
76
|
+
inBlockComment = false;
|
|
77
|
+
i++;
|
|
78
|
+
}
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (inString) {
|
|
82
|
+
if (c === '\\') {
|
|
83
|
+
i++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (c === inString)
|
|
87
|
+
inString = null;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (c === '/' && next === '/') {
|
|
91
|
+
inLineComment = true;
|
|
92
|
+
i++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (c === '/' && next === '*') {
|
|
96
|
+
inBlockComment = true;
|
|
97
|
+
i++;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (c === '"' || c === "'" || c === '`') {
|
|
101
|
+
inString = c;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (c === '(' || c === '[' || c === '{')
|
|
105
|
+
stack.push(c);
|
|
106
|
+
else if (c === ')' || c === ']' || c === '}') {
|
|
107
|
+
if (stack.pop() !== pairs[c])
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return stack.length === 0;
|
|
112
|
+
}
|
|
113
|
+
const CODE_TASK_HINT = /\b(?:code|function|class|implement|refactor|typescript|javascript|python|script|method|api endpoint|unit test)\b/i;
|
|
114
|
+
const CODE_OUTPUT_HINT = /(?:^|\n)\s*(?:import\s|export\s|function\s|class\s|const\s|let\s|def\s|return\s)/;
|
|
115
|
+
function detectTaskKind(input) {
|
|
116
|
+
if (input.taskKind && input.taskKind !== 'auto')
|
|
117
|
+
return input.taskKind;
|
|
118
|
+
if (/\bjson\b/i.test(input.task) && /^[\s]*[[{]/.test(input.output.trim()))
|
|
119
|
+
return 'json';
|
|
120
|
+
if (extractCodeBlocks(input.output).length > 0)
|
|
121
|
+
return 'code';
|
|
122
|
+
if (CODE_TASK_HINT.test(input.task) && CODE_OUTPUT_HINT.test(input.output))
|
|
123
|
+
return 'code';
|
|
124
|
+
return 'text';
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Syntax-check a JS/TS snippet. Uses the TypeScript compiler when available
|
|
128
|
+
* (transpileModule with reportDiagnostics catches syntactic errors without
|
|
129
|
+
* type-checking — cheap, no program construction). Falls back to bracket
|
|
130
|
+
* balance when typescript is not installed.
|
|
131
|
+
*/
|
|
132
|
+
async function checkCodeParses(code, lang) {
|
|
133
|
+
if (lang === 'json') {
|
|
134
|
+
try {
|
|
135
|
+
JSON.parse(code);
|
|
136
|
+
return { ok: true };
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return { ok: false, detail: `JSON.parse failed: ${e instanceof Error ? e.message : String(e)}` };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const jsLike = ['', 'js', 'jsx', 'ts', 'tsx', 'javascript', 'typescript', 'mjs', 'cjs'].includes(lang);
|
|
143
|
+
if (!jsLike) {
|
|
144
|
+
// Non-JS languages: bracket balance is the best free proxy we have.
|
|
145
|
+
return bracketsBalanced(code)
|
|
146
|
+
? { ok: true, detail: `no parser for lang="${lang}"; delimiter check only` }
|
|
147
|
+
: { ok: false, detail: `unbalanced delimiters in ${lang} block` };
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const ts = (await import('typescript')).default;
|
|
151
|
+
const result = ts.transpileModule(code, {
|
|
152
|
+
reportDiagnostics: true,
|
|
153
|
+
compilerOptions: { jsx: ts.JsxEmit.Preserve, allowJs: true },
|
|
154
|
+
});
|
|
155
|
+
const syntaxErrors = (result.diagnostics ?? []).filter(d => d.category === ts.DiagnosticCategory.Error);
|
|
156
|
+
if (syntaxErrors.length > 0) {
|
|
157
|
+
const first = syntaxErrors[0];
|
|
158
|
+
const msg = ts.flattenDiagnosticMessageText(first.messageText, ' ');
|
|
159
|
+
return { ok: false, detail: `syntax error: ${msg}` };
|
|
160
|
+
}
|
|
161
|
+
return { ok: true };
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// typescript not installed — graceful degradation, delimiter check only.
|
|
165
|
+
return bracketsBalanced(code)
|
|
166
|
+
? { ok: true, detail: 'typescript unavailable; delimiter check only' }
|
|
167
|
+
: { ok: false, detail: 'typescript unavailable; unbalanced delimiters' };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/** Detect degenerate repetition (same non-trivial line repeated many times in a row). */
|
|
171
|
+
function isDegenerate(output) {
|
|
172
|
+
const lines = output.split('\n').map(l => l.trim()).filter(l => l.length > 8);
|
|
173
|
+
let run = 1;
|
|
174
|
+
for (let i = 1; i < lines.length; i++) {
|
|
175
|
+
if (lines[i] === lines[i - 1]) {
|
|
176
|
+
run++;
|
|
177
|
+
if (run >= 5)
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
run = 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Compute a confidence verdict for `output` from cheap structural signals,
|
|
188
|
+
* and suggest an escalation target when not confident.
|
|
189
|
+
*/
|
|
190
|
+
export async function verifyAndEscalate(input) {
|
|
191
|
+
const output = input.output ?? '';
|
|
192
|
+
const trimmed = output.trim();
|
|
193
|
+
const minLength = input.minLength ?? 20;
|
|
194
|
+
const taskKind = detectTaskKind(input);
|
|
195
|
+
const model = input.model ?? 'haiku';
|
|
196
|
+
const tierUsed = input.tierUsed ?? MODEL_TIER[model] ?? 2;
|
|
197
|
+
const signals = [];
|
|
198
|
+
const reasons = [];
|
|
199
|
+
const fail = (name, detail) => {
|
|
200
|
+
signals.push({ name, ok: false, detail });
|
|
201
|
+
reasons.push(`${name}: ${detail}`);
|
|
202
|
+
};
|
|
203
|
+
const pass = (name, detail) => signals.push({ name, ok: true, detail });
|
|
204
|
+
// 1. Emptiness
|
|
205
|
+
if (trimmed.length === 0)
|
|
206
|
+
fail('empty-output', 'output is empty or whitespace-only');
|
|
207
|
+
else
|
|
208
|
+
pass('empty-output');
|
|
209
|
+
// 2. Plausible length (skip when already flagged empty)
|
|
210
|
+
if (trimmed.length > 0 && trimmed.length < minLength) {
|
|
211
|
+
fail('too-short', `output is ${trimmed.length} chars (< ${minLength})`);
|
|
212
|
+
}
|
|
213
|
+
else if (trimmed.length > 0) {
|
|
214
|
+
pass('too-short');
|
|
215
|
+
}
|
|
216
|
+
// 3. Refusal patterns near the head
|
|
217
|
+
const head = trimmed.slice(0, REFUSAL_HEAD_CHARS);
|
|
218
|
+
const refusal = REFUSAL_PATTERNS.find(p => p.test(head));
|
|
219
|
+
if (refusal)
|
|
220
|
+
fail('refusal', `refusal pattern near start of output (${refusal.source.slice(0, 40)}…)`);
|
|
221
|
+
else
|
|
222
|
+
pass('refusal');
|
|
223
|
+
// 4. Truncation: unclosed code fence, or dangling operator/opener at the tail
|
|
224
|
+
const fenceCount = (output.match(/```/g) ?? []).length;
|
|
225
|
+
if (fenceCount % 2 !== 0) {
|
|
226
|
+
fail('truncation', 'unclosed code fence (odd number of ``` markers)');
|
|
227
|
+
}
|
|
228
|
+
else if (trimmed.length > 0 && TRUNCATION_TAIL.test(trimmed)) {
|
|
229
|
+
fail('truncation', `output ends mid-expression ("…${trimmed.slice(-24).replace(/\n/g, '\\n')}")`);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
pass('truncation');
|
|
233
|
+
}
|
|
234
|
+
// 5. Degenerate repetition
|
|
235
|
+
if (isDegenerate(trimmed))
|
|
236
|
+
fail('degenerate-repetition', 'same line repeated 5+ times consecutively');
|
|
237
|
+
else
|
|
238
|
+
pass('degenerate-repetition');
|
|
239
|
+
// 6. Code / JSON parse checks
|
|
240
|
+
if (taskKind === 'code' || taskKind === 'json') {
|
|
241
|
+
const blocks = extractCodeBlocks(output);
|
|
242
|
+
const targets = blocks.length > 0
|
|
243
|
+
? blocks
|
|
244
|
+
: [{ lang: taskKind === 'json' ? 'json' : '', code: output }];
|
|
245
|
+
let allOk = true;
|
|
246
|
+
const details = [];
|
|
247
|
+
for (const block of targets) {
|
|
248
|
+
const check = await checkCodeParses(block.code, taskKind === 'json' ? 'json' : block.lang);
|
|
249
|
+
if (!check.ok) {
|
|
250
|
+
allOk = false;
|
|
251
|
+
details.push(check.detail ?? 'parse failed');
|
|
252
|
+
}
|
|
253
|
+
else if (check.detail) {
|
|
254
|
+
details.push(check.detail);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (allOk)
|
|
258
|
+
pass('code-parses', details.join('; ') || undefined);
|
|
259
|
+
else
|
|
260
|
+
fail('code-parses', details.join('; '));
|
|
261
|
+
}
|
|
262
|
+
const passed = signals.filter(s => s.ok).length;
|
|
263
|
+
const score = signals.length > 0 ? passed / signals.length : 0;
|
|
264
|
+
const confident = reasons.length === 0;
|
|
265
|
+
const nextModel = NEXT_MODEL[model] ?? null;
|
|
266
|
+
const suggestedModel = confident ? null : nextModel;
|
|
267
|
+
const suggestedTier = confident
|
|
268
|
+
? tierUsed
|
|
269
|
+
: (nextModel !== null ? Math.min(3, tierUsed + 1) : tierUsed);
|
|
270
|
+
const escalate = !confident && nextModel !== null;
|
|
271
|
+
if (!confident && nextModel === null) {
|
|
272
|
+
reasons.push('already-at-top-tier: no higher tier to escalate to — retry or surface to the user');
|
|
273
|
+
}
|
|
274
|
+
return { confident, score, reasons, signals, suggestedTier, suggestedModel, escalate, taskKind };
|
|
275
|
+
}
|
|
276
|
+
export default verifyAndEscalate;
|
|
277
|
+
//# sourceMappingURL=output-verifier.js.map
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q-Learning Router for Task Routing
|
|
3
|
+
*
|
|
4
|
+
* Uses reinforcement learning to optimize task routing decisions
|
|
5
|
+
* based on historical performance and context.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Caching for repeated task patterns (LRU cache)
|
|
9
|
+
* - Optimized state space with feature hashing
|
|
10
|
+
* - Epsilon decay with exponential annealing
|
|
11
|
+
* - Experience replay buffer for stable learning
|
|
12
|
+
* - Model persistence to .swarm/q-learning-model.json
|
|
13
|
+
*
|
|
14
|
+
* @module q-learning-router
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Q-Learning Router Configuration
|
|
18
|
+
*/
|
|
19
|
+
export interface QLearningRouterConfig {
|
|
20
|
+
/** Learning rate (default: 0.1) */
|
|
21
|
+
learningRate: number;
|
|
22
|
+
/** Discount factor (default: 0.99) */
|
|
23
|
+
gamma: number;
|
|
24
|
+
/** Initial exploration rate (default: 1.0) */
|
|
25
|
+
explorationInitial: number;
|
|
26
|
+
/** Final exploration rate (default: 0.01) */
|
|
27
|
+
explorationFinal: number;
|
|
28
|
+
/** Exploration decay steps (default: 10000) */
|
|
29
|
+
explorationDecay: number;
|
|
30
|
+
/** Exploration decay type (default: 'exponential') */
|
|
31
|
+
explorationDecayType: 'linear' | 'exponential' | 'cosine';
|
|
32
|
+
/** Maximum states in Q-table (default: 10000) */
|
|
33
|
+
maxStates: number;
|
|
34
|
+
/** Number of actions/routes (default: 8) */
|
|
35
|
+
numActions: number;
|
|
36
|
+
/** Experience replay buffer size (default: 1000) */
|
|
37
|
+
replayBufferSize: number;
|
|
38
|
+
/** Mini-batch size for replay (default: 32) */
|
|
39
|
+
replayBatchSize: number;
|
|
40
|
+
/** Enable experience replay (default: true) */
|
|
41
|
+
enableReplay: boolean;
|
|
42
|
+
/** Route cache size (default: 256) */
|
|
43
|
+
cacheSize: number;
|
|
44
|
+
/** Cache TTL in milliseconds (default: 300000 = 5 minutes) */
|
|
45
|
+
cacheTTL: number;
|
|
46
|
+
/** Model persistence path (default: '.swarm/q-learning-model.json') */
|
|
47
|
+
modelPath: string;
|
|
48
|
+
/** Auto-save interval in updates (default: 100) */
|
|
49
|
+
autoSaveInterval: number;
|
|
50
|
+
/** State space dimensionality for feature hashing (default: 64) */
|
|
51
|
+
stateSpaceDim: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Route decision result
|
|
55
|
+
*/
|
|
56
|
+
export interface RouteDecision {
|
|
57
|
+
/** Selected route/action */
|
|
58
|
+
route: string;
|
|
59
|
+
/** Confidence score (0-1) */
|
|
60
|
+
confidence: number;
|
|
61
|
+
/** Q-values for all routes */
|
|
62
|
+
qValues: number[];
|
|
63
|
+
/** Was exploration used */
|
|
64
|
+
explored: boolean;
|
|
65
|
+
/** Route alternatives */
|
|
66
|
+
alternatives: Array<{
|
|
67
|
+
route: string;
|
|
68
|
+
score: number;
|
|
69
|
+
}>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Q-Learning Router for intelligent task routing
|
|
73
|
+
*
|
|
74
|
+
* Optimized with:
|
|
75
|
+
* - LRU cache for repeated task patterns
|
|
76
|
+
* - Feature hashing for efficient state space
|
|
77
|
+
* - Exponential epsilon decay
|
|
78
|
+
* - Prioritized experience replay
|
|
79
|
+
* - Model persistence
|
|
80
|
+
*/
|
|
81
|
+
export declare class QLearningRouter {
|
|
82
|
+
private config;
|
|
83
|
+
private qTable;
|
|
84
|
+
private epsilon;
|
|
85
|
+
private stepCount;
|
|
86
|
+
private updateCount;
|
|
87
|
+
private avgTDError;
|
|
88
|
+
private ruvectorEngine;
|
|
89
|
+
private useNative;
|
|
90
|
+
private replayBuffer;
|
|
91
|
+
private replayBufferIdx;
|
|
92
|
+
private totalExperiences;
|
|
93
|
+
private routeCache;
|
|
94
|
+
private cacheOrder;
|
|
95
|
+
private cacheHits;
|
|
96
|
+
private cacheMisses;
|
|
97
|
+
private featureHashCache;
|
|
98
|
+
constructor(config?: Partial<QLearningRouterConfig>);
|
|
99
|
+
/**
|
|
100
|
+
* Initialize the router, attempting to load ruvector native module
|
|
101
|
+
* and restore persisted model if available
|
|
102
|
+
*/
|
|
103
|
+
initialize(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Load model from persistence file
|
|
106
|
+
*/
|
|
107
|
+
loadModel(path?: string): Promise<boolean>;
|
|
108
|
+
/**
|
|
109
|
+
* Save model to persistence file
|
|
110
|
+
*/
|
|
111
|
+
saveModel(path?: string): Promise<boolean>;
|
|
112
|
+
/**
|
|
113
|
+
* Route a task based on its context
|
|
114
|
+
* Uses LRU cache for repeated task patterns
|
|
115
|
+
*/
|
|
116
|
+
route(taskContext: string, explore?: boolean): RouteDecision;
|
|
117
|
+
/**
|
|
118
|
+
* Get cached route decision (LRU cache)
|
|
119
|
+
*/
|
|
120
|
+
private getCachedRoute;
|
|
121
|
+
/**
|
|
122
|
+
* Cache a route decision (LRU eviction)
|
|
123
|
+
*/
|
|
124
|
+
private cacheRoute;
|
|
125
|
+
/**
|
|
126
|
+
* Invalidate cache (call after significant Q-table updates)
|
|
127
|
+
*/
|
|
128
|
+
invalidateCache(): void;
|
|
129
|
+
/** Invalidate a single state's cached route (called after its Q-values change
|
|
130
|
+
* so the next route() reflects the update immediately). */
|
|
131
|
+
private invalidateCacheEntry;
|
|
132
|
+
/**
|
|
133
|
+
* Update Q-values based on feedback
|
|
134
|
+
* Includes experience replay for stable learning
|
|
135
|
+
*/
|
|
136
|
+
update(taskContext: string, action: string, reward: number, nextContext?: string): number;
|
|
137
|
+
/**
|
|
138
|
+
* Internal Q-value update
|
|
139
|
+
*/
|
|
140
|
+
private updateQValue;
|
|
141
|
+
/**
|
|
142
|
+
* Add experience to circular replay buffer
|
|
143
|
+
*/
|
|
144
|
+
private addToReplayBuffer;
|
|
145
|
+
/**
|
|
146
|
+
* Perform prioritized experience replay
|
|
147
|
+
* Samples mini-batch from buffer and updates Q-values
|
|
148
|
+
*/
|
|
149
|
+
private experienceReplay;
|
|
150
|
+
/**
|
|
151
|
+
* Sample a prioritized batch from replay buffer
|
|
152
|
+
* Uses proportional prioritization
|
|
153
|
+
*/
|
|
154
|
+
private samplePrioritizedBatch;
|
|
155
|
+
/**
|
|
156
|
+
* Calculate epsilon using configured decay strategy
|
|
157
|
+
*/
|
|
158
|
+
private calculateEpsilon;
|
|
159
|
+
/**
|
|
160
|
+
* Get statistics including cache and replay buffer metrics
|
|
161
|
+
*/
|
|
162
|
+
getStats(): Record<string, number>;
|
|
163
|
+
/**
|
|
164
|
+
* Reset the router (clears all learned data)
|
|
165
|
+
*/
|
|
166
|
+
reset(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Export Q-table for persistence
|
|
169
|
+
*/
|
|
170
|
+
export(): Record<string, {
|
|
171
|
+
qValues: number[];
|
|
172
|
+
visits: number;
|
|
173
|
+
}>;
|
|
174
|
+
/**
|
|
175
|
+
* Import Q-table from persistence
|
|
176
|
+
*/
|
|
177
|
+
import(data: Record<string, {
|
|
178
|
+
qValues: number[];
|
|
179
|
+
visits: number;
|
|
180
|
+
}>): void;
|
|
181
|
+
/**
|
|
182
|
+
* Legacy hash function (kept for backward compatibility)
|
|
183
|
+
*/
|
|
184
|
+
private hashState;
|
|
185
|
+
/**
|
|
186
|
+
* Public state-key encoder (#2239). This is exactly what `route()` uses
|
|
187
|
+
* to look up Q-values, so testing it directly is testing the binding the
|
|
188
|
+
* Q-learner actually sees.
|
|
189
|
+
*/
|
|
190
|
+
getStateKey(context: string): string;
|
|
191
|
+
/**
|
|
192
|
+
* Optimized state hashing using feature extraction
|
|
193
|
+
* Creates a more semantic representation of the task context
|
|
194
|
+
*/
|
|
195
|
+
private hashStateOptimized;
|
|
196
|
+
/**
|
|
197
|
+
* Extract feature vector from task context
|
|
198
|
+
* Uses keyword matching and n-gram hashing
|
|
199
|
+
*/
|
|
200
|
+
private extractFeatures;
|
|
201
|
+
/**
|
|
202
|
+
* Convert feature vector to state key
|
|
203
|
+
* Uses locality-sensitive hashing for similar contexts.
|
|
204
|
+
*
|
|
205
|
+
* #2239 — the previous fold was `((hash << 4) ^ q[i]) & 0x7fffffff` over 16
|
|
206
|
+
* 4-bit groups: each group i landed at bit 4·(15−i), so groups 0–7 (= the
|
|
207
|
+
* entire keyword block, features 0–31) shifted past the 31-bit mask and were
|
|
208
|
+
* discarded. Keyword-distinct tasks collapsed to one Q-state. We now use a
|
|
209
|
+
* 32-bit FNV-1a hash, which mixes every quantized group losslessly into the
|
|
210
|
+
* state key. Encoder version bumped to 2; see PersistedModel.encoderVersion.
|
|
211
|
+
*/
|
|
212
|
+
private featureVectorToKey;
|
|
213
|
+
/**
|
|
214
|
+
* MurmurHash3 32-bit implementation for n-gram hashing
|
|
215
|
+
*/
|
|
216
|
+
private murmurhash3;
|
|
217
|
+
private getQValues;
|
|
218
|
+
private getOrCreateEntry;
|
|
219
|
+
private argmax;
|
|
220
|
+
private softmaxConfidence;
|
|
221
|
+
private pruneQTable;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Factory function
|
|
225
|
+
*/
|
|
226
|
+
export declare function createQLearningRouter(config?: Partial<QLearningRouterConfig>): QLearningRouter;
|
|
227
|
+
//# sourceMappingURL=q-learning-router.d.ts.map
|