@claude-flow/cli 3.32.3 → 3.32.5
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 +20 -0
- package/dist/src/commands/proxy-lifecycle.js +277 -0
- package/dist/src/commands/proxy.d.ts +21 -0
- package/dist/src/commands/proxy.js +403 -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,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Services Index
|
|
3
|
+
* Central registry for all background services
|
|
4
|
+
*/
|
|
5
|
+
export { WorkerDaemon, getDaemon, startDaemon, stopDaemon, type WorkerType, } from './worker-daemon.js';
|
|
6
|
+
export { HeadlessWorkerExecutor, HEADLESS_WORKER_TYPES, HEADLESS_WORKER_CONFIGS, LOCAL_WORKER_TYPES, LOCAL_WORKER_CONFIGS, ALL_WORKER_CONFIGS, isHeadlessWorker, isLocalWorker, getModelId, getWorkerConfig, type HeadlessWorkerType, type LocalWorkerType, type HeadlessWorkerConfig, type HeadlessExecutionResult, type HeadlessExecutorConfig, type HeadlessOptions, type PoolStatus, type SandboxMode, type ModelType, type OutputFormat, type ExecutionMode, type WorkerPriority, type WorkerConfig, } from './headless-worker-executor.js';
|
|
7
|
+
export { ContainerWorkerPool, type ContainerInfo, type ContainerPoolConfig, type ContainerExecutionOptions, type ContainerPoolStatus, type ContainerState, } from './container-worker-pool.js';
|
|
8
|
+
export { WorkerQueue, type QueueTask, type WorkerQueueConfig, type QueueStats, type WorkerRegistration, type TaskStatus, } from './worker-queue.js';
|
|
9
|
+
export type { default as WorkerDaemonType, DaemonConfig } from './worker-daemon.js';
|
|
10
|
+
export type { default as HeadlessWorkerExecutorType } from './headless-worker-executor.js';
|
|
11
|
+
export type { default as ContainerWorkerPoolType } from './container-worker-pool.js';
|
|
12
|
+
export type { default as WorkerQueueType } from './worker-queue.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Services Index
|
|
3
|
+
* Central registry for all background services
|
|
4
|
+
*/
|
|
5
|
+
export { WorkerDaemon, getDaemon, startDaemon, stopDaemon, } from './worker-daemon.js';
|
|
6
|
+
export { HeadlessWorkerExecutor, HEADLESS_WORKER_TYPES, HEADLESS_WORKER_CONFIGS, LOCAL_WORKER_TYPES, LOCAL_WORKER_CONFIGS, ALL_WORKER_CONFIGS, isHeadlessWorker, isLocalWorker, getModelId, getWorkerConfig, } from './headless-worker-executor.js';
|
|
7
|
+
// Container Worker Pool (Phase 3)
|
|
8
|
+
export { ContainerWorkerPool, } from './container-worker-pool.js';
|
|
9
|
+
// Worker Queue (Phase 4)
|
|
10
|
+
export { WorkerQueue, } from './worker-queue.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface BackupOptions {
|
|
2
|
+
/** Source DB (default: <cwd>/.swarm/memory.db). */
|
|
3
|
+
dbPath?: string;
|
|
4
|
+
/** Destination dir (default: <db dir>/backups). */
|
|
5
|
+
destDir?: string;
|
|
6
|
+
/** Rotation: keep the newest N snapshots (default 7 = a week of nightlies). */
|
|
7
|
+
keep?: number;
|
|
8
|
+
/** Optional offsite: a gs://bucket/prefix to also upload the snapshot to. */
|
|
9
|
+
gcs?: string;
|
|
10
|
+
/** Injected epoch millis (tests pass a fixed value; avoids Date.now in logic). */
|
|
11
|
+
timestamp?: number;
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface BackupResult {
|
|
15
|
+
backedUp: boolean;
|
|
16
|
+
path?: string;
|
|
17
|
+
sizeBytes?: number;
|
|
18
|
+
rotatedAway?: string[];
|
|
19
|
+
gcsUri?: string;
|
|
20
|
+
skipped?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function defaultMemoryDbPath(cwd?: string): string;
|
|
23
|
+
export declare function backupMemoryDb(opts?: BackupOptions): Promise<BackupResult>;
|
|
24
|
+
export interface RestoreResult {
|
|
25
|
+
restored: boolean;
|
|
26
|
+
/** The backup file that was restored. */
|
|
27
|
+
from?: string;
|
|
28
|
+
/** memory_entries count in the restored DB (-1 if it couldn't be verified). */
|
|
29
|
+
rows?: number;
|
|
30
|
+
/** Where the corrupt live DB was parked before the swap. */
|
|
31
|
+
corruptBackupPath?: string;
|
|
32
|
+
skipped?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Restore the newest integrity-ok backup over a corrupt/malformed memory DB
|
|
36
|
+
* (issue #2584).
|
|
37
|
+
*
|
|
38
|
+
* The in-place rebuild path (`recoverMemoryDatabase`) rebuilds FROM the corrupt
|
|
39
|
+
* image, so when the damage is bad enough that `sqlite3 .recover` salvages
|
|
40
|
+
* nothing, that rebuild also salvages nothing and every `memory_store` keeps
|
|
41
|
+
* erroring. This is the missing fallback: scan `<db dir>/backups/` newest-first,
|
|
42
|
+
* pick the newest snapshot that passes `PRAGMA integrity_check` (and has rows),
|
|
43
|
+
* park the corrupt live DB at `<db>.corrupt-<ts>.bak`, then ATOMICALLY install
|
|
44
|
+
* the good backup (copy → fsync → rename, no full-image buffer in memory). Drops
|
|
45
|
+
* stale -wal/-shm. Non-destructive on failure: the live DB is only replaced once
|
|
46
|
+
* a verified backup is in hand.
|
|
47
|
+
*/
|
|
48
|
+
export declare function restoreMemoryDbFromBackup(dbPath: string, opts?: {
|
|
49
|
+
destDir?: string;
|
|
50
|
+
timestamp?: number;
|
|
51
|
+
verbose?: boolean;
|
|
52
|
+
}): Promise<RestoreResult>;
|
|
53
|
+
//# sourceMappingURL=memory-backup.d.ts.map
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector-memory DB backup.
|
|
3
|
+
*
|
|
4
|
+
* Snapshots `.swarm/memory.db` (the sqlite store holding memory_entries +
|
|
5
|
+
* embeddings + the distilled reasoning_patterns) to a timestamped file using
|
|
6
|
+
* better-sqlite3's ONLINE backup API — a consistent, WAL-safe copy that does not
|
|
7
|
+
* block or corrupt a concurrently-written DB (unlike a naive file copy of a
|
|
8
|
+
* WAL-mode DB). Rotates to keep the last N snapshots and, optionally, uploads
|
|
9
|
+
* offsite to Google Cloud Storage.
|
|
10
|
+
*
|
|
11
|
+
* Used by `memory backup` (manual) and the daemon's nightly `backup` worker.
|
|
12
|
+
* Best-effort + non-destructive: it only reads the source DB and writes new
|
|
13
|
+
* files; it never mutates or deletes the live memory DB.
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'fs';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
export function defaultMemoryDbPath(cwd = process.cwd()) {
|
|
18
|
+
return path.join(cwd, '.swarm', 'memory.db');
|
|
19
|
+
}
|
|
20
|
+
/** ISO timestamp safe for filenames (no ':' or '.'). */
|
|
21
|
+
function fileStamp(ms) {
|
|
22
|
+
return new Date(ms).toISOString().replace(/[:.]/g, '-');
|
|
23
|
+
}
|
|
24
|
+
export async function backupMemoryDb(opts = {}) {
|
|
25
|
+
const dbPath = opts.dbPath ?? defaultMemoryDbPath();
|
|
26
|
+
if (!dbPath || !fs.existsSync(dbPath))
|
|
27
|
+
return { backedUp: false, skipped: 'no-db' };
|
|
28
|
+
let Database;
|
|
29
|
+
try {
|
|
30
|
+
const mod = 'better-sqlite3';
|
|
31
|
+
Database = (await import(mod)).default;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return { backedUp: false, skipped: 'better-sqlite3 unavailable' };
|
|
35
|
+
}
|
|
36
|
+
const destDir = opts.destDir ?? path.join(path.dirname(dbPath), 'backups');
|
|
37
|
+
try {
|
|
38
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
catch { /* */ }
|
|
41
|
+
const destPath = path.join(destDir, `memory-${fileStamp(opts.timestamp ?? Date.now())}.db`);
|
|
42
|
+
// WAL-safe online backup: read-only source, consistent snapshot to destPath.
|
|
43
|
+
let db;
|
|
44
|
+
try {
|
|
45
|
+
db = new Database(dbPath, { readonly: true });
|
|
46
|
+
await db.backup(destPath);
|
|
47
|
+
db.close();
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
try {
|
|
51
|
+
db?.close();
|
|
52
|
+
}
|
|
53
|
+
catch { /* */ }
|
|
54
|
+
return { backedUp: false, skipped: `backup failed: ${e?.message ?? e}` };
|
|
55
|
+
}
|
|
56
|
+
let sizeBytes = 0;
|
|
57
|
+
try {
|
|
58
|
+
sizeBytes = fs.statSync(destPath).size;
|
|
59
|
+
}
|
|
60
|
+
catch { /* */ }
|
|
61
|
+
// Rotation — ISO-stamped names sort chronologically, so keep the tail.
|
|
62
|
+
const keep = typeof opts.keep === 'number' && opts.keep > 0 ? opts.keep : 7;
|
|
63
|
+
const rotatedAway = [];
|
|
64
|
+
try {
|
|
65
|
+
const snaps = fs.readdirSync(destDir).filter(f => /^memory-.*\.db$/.test(f)).sort();
|
|
66
|
+
while (snaps.length > keep) {
|
|
67
|
+
const old = snaps.shift();
|
|
68
|
+
try {
|
|
69
|
+
fs.rmSync(path.join(destDir, old), { force: true });
|
|
70
|
+
rotatedAway.push(old);
|
|
71
|
+
}
|
|
72
|
+
catch { /* */ }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch { /* */ }
|
|
76
|
+
// Optional offsite to GCS (best-effort; local backup already succeeded).
|
|
77
|
+
let gcsUri;
|
|
78
|
+
if (opts.gcs) {
|
|
79
|
+
try {
|
|
80
|
+
const { execFileSync } = await import('child_process');
|
|
81
|
+
const dest = opts.gcs.replace(/\/+$/, '') + '/' + path.basename(destPath);
|
|
82
|
+
execFileSync('gcloud', ['storage', 'cp', destPath, dest], { stdio: ['ignore', 'ignore', 'inherit'] });
|
|
83
|
+
gcsUri = dest;
|
|
84
|
+
}
|
|
85
|
+
catch { /* offsite failed — local snapshot stands */ }
|
|
86
|
+
}
|
|
87
|
+
if (opts.verbose) {
|
|
88
|
+
console.log(`memory DB backed up → ${destPath} (${Math.round(sizeBytes / 1024)} KB)` +
|
|
89
|
+
(rotatedAway.length ? `, rotated ${rotatedAway.length} old` : '') +
|
|
90
|
+
(gcsUri ? `, offsite ${gcsUri}` : ''));
|
|
91
|
+
}
|
|
92
|
+
return { backedUp: true, path: destPath, sizeBytes, rotatedAway, gcsUri };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Restore the newest integrity-ok backup over a corrupt/malformed memory DB
|
|
96
|
+
* (issue #2584).
|
|
97
|
+
*
|
|
98
|
+
* The in-place rebuild path (`recoverMemoryDatabase`) rebuilds FROM the corrupt
|
|
99
|
+
* image, so when the damage is bad enough that `sqlite3 .recover` salvages
|
|
100
|
+
* nothing, that rebuild also salvages nothing and every `memory_store` keeps
|
|
101
|
+
* erroring. This is the missing fallback: scan `<db dir>/backups/` newest-first,
|
|
102
|
+
* pick the newest snapshot that passes `PRAGMA integrity_check` (and has rows),
|
|
103
|
+
* park the corrupt live DB at `<db>.corrupt-<ts>.bak`, then ATOMICALLY install
|
|
104
|
+
* the good backup (copy → fsync → rename, no full-image buffer in memory). Drops
|
|
105
|
+
* stale -wal/-shm. Non-destructive on failure: the live DB is only replaced once
|
|
106
|
+
* a verified backup is in hand.
|
|
107
|
+
*/
|
|
108
|
+
export async function restoreMemoryDbFromBackup(dbPath, opts = {}) {
|
|
109
|
+
if (!dbPath)
|
|
110
|
+
return { restored: false, skipped: 'no-db-path' };
|
|
111
|
+
const destDir = opts.destDir ?? path.join(path.dirname(dbPath), 'backups');
|
|
112
|
+
let snaps;
|
|
113
|
+
try {
|
|
114
|
+
snaps = fs
|
|
115
|
+
.readdirSync(destDir)
|
|
116
|
+
.filter(f => /^memory-.*\.db$/.test(f))
|
|
117
|
+
.map(f => path.join(destDir, f))
|
|
118
|
+
.sort() // ISO-stamped names sort chronologically
|
|
119
|
+
.reverse(); // newest first
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return { restored: false, skipped: 'no-backups-dir' };
|
|
123
|
+
}
|
|
124
|
+
if (!snaps.length)
|
|
125
|
+
return { restored: false, skipped: 'no-backups' };
|
|
126
|
+
// better-sqlite3 verifies a candidate's integrity. Absent (WASM-only host) →
|
|
127
|
+
// accept the newest non-empty snapshot, flagged rows=-1 (unverified).
|
|
128
|
+
let Database = null;
|
|
129
|
+
try {
|
|
130
|
+
const mod = 'better-sqlite3';
|
|
131
|
+
Database = (await import(mod)).default;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
/* verifier unavailable — trust newest non-empty */
|
|
135
|
+
}
|
|
136
|
+
let chosen = null;
|
|
137
|
+
for (const file of snaps) {
|
|
138
|
+
try {
|
|
139
|
+
if (Database) {
|
|
140
|
+
const db = new Database(file, { readonly: true });
|
|
141
|
+
const integ = String(db.pragma('integrity_check', { simple: true }) ?? '');
|
|
142
|
+
let rows = 0;
|
|
143
|
+
try {
|
|
144
|
+
rows = db.prepare('SELECT COUNT(*) AS c FROM memory_entries').get()?.c ?? 0;
|
|
145
|
+
}
|
|
146
|
+
catch { /* no entries table — not a usable memory DB */ }
|
|
147
|
+
db.close();
|
|
148
|
+
if (integ.toLowerCase() === 'ok' && rows > 0) {
|
|
149
|
+
chosen = { file, rows };
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (fs.statSync(file).size > 0) {
|
|
154
|
+
chosen = { file, rows: -1 };
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch { /* unreadable snapshot — try the next-older one */ }
|
|
159
|
+
}
|
|
160
|
+
if (!chosen)
|
|
161
|
+
return { restored: false, skipped: 'no-integrity-ok-backup' };
|
|
162
|
+
const ts = opts.timestamp ?? Date.now();
|
|
163
|
+
const corruptBackupPath = `${dbPath}.corrupt-${ts}.bak`;
|
|
164
|
+
const tmp = `${dbPath}.restoring-${ts}`;
|
|
165
|
+
try {
|
|
166
|
+
if (fs.existsSync(dbPath))
|
|
167
|
+
fs.copyFileSync(dbPath, corruptBackupPath);
|
|
168
|
+
fs.copyFileSync(chosen.file, tmp); // stream copy — no 185MB buffer
|
|
169
|
+
const fd = fs.openSync(tmp, 'r+');
|
|
170
|
+
try {
|
|
171
|
+
fs.fsyncSync(fd);
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
fs.closeSync(fd);
|
|
175
|
+
} // durable before swap
|
|
176
|
+
fs.renameSync(tmp, dbPath); // atomic install
|
|
177
|
+
for (const s of ['-wal', '-shm']) {
|
|
178
|
+
try {
|
|
179
|
+
fs.rmSync(`${dbPath}${s}`, { force: true });
|
|
180
|
+
}
|
|
181
|
+
catch { /* */ }
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
try {
|
|
186
|
+
fs.rmSync(tmp, { force: true });
|
|
187
|
+
}
|
|
188
|
+
catch { /* */ }
|
|
189
|
+
return { restored: false, skipped: `install failed: ${e?.message ?? e}` };
|
|
190
|
+
}
|
|
191
|
+
if (opts.verbose) {
|
|
192
|
+
console.log(`memory DB restored from backup ${path.basename(chosen.file)}` +
|
|
193
|
+
(chosen.rows >= 0 ? ` (${chosen.rows} rows)` : ' (unverified)') +
|
|
194
|
+
`. Corrupt original saved to ${corruptBackupPath}`);
|
|
195
|
+
}
|
|
196
|
+
return { restored: true, from: chosen.file, rows: chosen.rows, corruptBackupPath };
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=memory-backup.js.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type DistillProvenance = 'oracle:test-exec' | 'judge:fable' | 'proxy:structural';
|
|
2
|
+
export interface DistillOptions {
|
|
3
|
+
dbPath: string;
|
|
4
|
+
/** Restrict to these namespaces (default: all namespaces with embeddings). */
|
|
5
|
+
namespaces?: string[];
|
|
6
|
+
/** Rows per transaction (default 200). */
|
|
7
|
+
batchSize?: number;
|
|
8
|
+
/** Hard cap on rows processed this invocation (default: unbounded within a run). */
|
|
9
|
+
maxEntries?: number;
|
|
10
|
+
/** Cosine distance below which two entries collapse into one pattern (default 0.2, the ADR-174 M4-tuned platform default: ~37% fewer patterns, retrieval-neutral). */
|
|
11
|
+
dedupDistance?: number;
|
|
12
|
+
/** Report counts, write nothing (default false). */
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
/** Judge tier. Only 'structural' ($0) is implemented here; 'fable' is reserved (ADR-172). */
|
|
15
|
+
judge?: 'structural' | 'fable';
|
|
16
|
+
/** Ignore the cursor and re-scan from this rowid (default: cursor-driven). */
|
|
17
|
+
sinceRowid?: number;
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface DistillReport {
|
|
21
|
+
processed: number;
|
|
22
|
+
episodes: number;
|
|
23
|
+
patterns: number;
|
|
24
|
+
patternEmbeddings: number;
|
|
25
|
+
causalEdges: number;
|
|
26
|
+
promoted: number;
|
|
27
|
+
byProvenance: Record<string, number>;
|
|
28
|
+
namespaces: string[];
|
|
29
|
+
dryRun: boolean;
|
|
30
|
+
spendUsd: number;
|
|
31
|
+
corrupt?: boolean;
|
|
32
|
+
skipped?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Distill accumulated memory into the structured intelligence tables.
|
|
36
|
+
* Incremental, $0, transactional, provenance-tagged.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runDistillation(options: DistillOptions): Promise<DistillReport>;
|
|
39
|
+
/** Where the memory DB lives, for daemon/CLI callers. */
|
|
40
|
+
export declare function defaultMemoryDbPath(cwd?: string): string;
|
|
41
|
+
//# sourceMappingURL=memory-distillation.d.ts.map
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Distillation Service (ADR-174)
|
|
3
|
+
*
|
|
4
|
+
* Turns raw `memory_entries` (what ruflo has been RECORDING for thousands of
|
|
5
|
+
* commits) into the structured intelligence substrate it has never populated:
|
|
6
|
+
* `episodes` → `reasoning_patterns` (+ `pattern_embeddings`) → `causal_edges`.
|
|
7
|
+
* This is the DISTILL/CONSOLIDATE half of the RETRIEVE→JUDGE→DISTILL→CONSOLIDATE
|
|
8
|
+
* pipeline; RETRIEVE (embeddings) was already populated, the rest was empty
|
|
9
|
+
* because the daemon's `consolidate` worker was a stub (see ADR-174 root cause).
|
|
10
|
+
*
|
|
11
|
+
* Design invariants (load-bearing):
|
|
12
|
+
* - $0 by default: reuses the deterministic structural extractor
|
|
13
|
+
* (structured-distill.ts) and the embeddings ALREADY on each row — no LLM
|
|
14
|
+
* call, no new embedding work, unless a caller explicitly opts into a judge.
|
|
15
|
+
* - Incremental: a `distill_state` cursor (per namespace, by monotonic rowid)
|
|
16
|
+
* means a run never rescans processed rows.
|
|
17
|
+
* - Non-destructive: NEVER mutates or deletes `memory_entries`; only inserts
|
|
18
|
+
* into the (previously empty) target tables. Writes are per-batch
|
|
19
|
+
* transactions — a failure rolls back the batch and advances no cursor.
|
|
20
|
+
* - Safe on a recovered DB: quick_check gate before any write; skips (not
|
|
21
|
+
* throws) on corruption; better-sqlite3 optional (silent no-op if absent).
|
|
22
|
+
* - Provenance discipline (ADR-171): `feedback` outcomes are execution-tier
|
|
23
|
+
* ground truth; everything else is proxy. Proxy-tier patterns are written
|
|
24
|
+
* but never `promoted` — visible for audit, excluded from promoted recall.
|
|
25
|
+
*/
|
|
26
|
+
import * as fs from 'fs';
|
|
27
|
+
import * as path from 'path';
|
|
28
|
+
import { distillTrajectoryContent, serialiseDistilled } from '../memory/structured-distill.js';
|
|
29
|
+
function emptyReport(dryRun, extra = {}) {
|
|
30
|
+
return {
|
|
31
|
+
processed: 0, episodes: 0, patterns: 0, patternEmbeddings: 0, causalEdges: 0,
|
|
32
|
+
promoted: 0, byProvenance: {}, namespaces: [], dryRun, spendUsd: 0, ...extra,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function parseEmbedding(raw) {
|
|
36
|
+
if (typeof raw !== 'string' || !raw)
|
|
37
|
+
return null;
|
|
38
|
+
try {
|
|
39
|
+
const v = JSON.parse(raw);
|
|
40
|
+
return Array.isArray(v) ? v : null;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function cosine(a, b) {
|
|
47
|
+
const len = Math.min(a.length, b.length);
|
|
48
|
+
let dot = 0, na = 0, nb = 0;
|
|
49
|
+
for (let i = 0; i < len; i++) {
|
|
50
|
+
dot += a[i] * b[i];
|
|
51
|
+
na += a[i] * a[i];
|
|
52
|
+
nb += b[i] * b[i];
|
|
53
|
+
}
|
|
54
|
+
const mag = Math.sqrt(na * nb);
|
|
55
|
+
return mag === 0 ? 0 : dot / mag;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Best-effort success/reward extraction for a `feedback` outcome record. These
|
|
59
|
+
* are recorded post-edit outcomes — execution-observed ground truth (ADR-171
|
|
60
|
+
* execution tier), not a proxy guess.
|
|
61
|
+
*/
|
|
62
|
+
function judgeFeedback(content) {
|
|
63
|
+
try {
|
|
64
|
+
const o = JSON.parse(content);
|
|
65
|
+
if (typeof o.success === 'boolean')
|
|
66
|
+
return { success: o.success, reward: o.success ? 1 : 0 };
|
|
67
|
+
if (typeof o.outcome === 'string') {
|
|
68
|
+
const ok = /success|pass|ok|true/i.test(o.outcome);
|
|
69
|
+
return { success: ok, reward: ok ? 1 : 0 };
|
|
70
|
+
}
|
|
71
|
+
if (typeof o.error === 'string' && o.error)
|
|
72
|
+
return { success: false, reward: 0 };
|
|
73
|
+
}
|
|
74
|
+
catch { /* not JSON — treat as neutral */ }
|
|
75
|
+
return { success: true, reward: 0.5 };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Distill accumulated memory into the structured intelligence tables.
|
|
79
|
+
* Incremental, $0, transactional, provenance-tagged.
|
|
80
|
+
*/
|
|
81
|
+
export async function runDistillation(options) {
|
|
82
|
+
const { dbPath, namespaces, batchSize = 200, maxEntries, dedupDistance = 0.2, dryRun = false, judge = 'structural', sinceRowid, verbose = false, } = options;
|
|
83
|
+
if (judge === 'fable') {
|
|
84
|
+
// ADR-172 cost gate: the LLM judge path is not enabled in this $0 service.
|
|
85
|
+
return emptyReport(dryRun, { skipped: 'judge:fable requires the cost-bounded advisor path (ADR-172), not enabled here' });
|
|
86
|
+
}
|
|
87
|
+
if (!dbPath || !fs.existsSync(dbPath))
|
|
88
|
+
return emptyReport(dryRun, { skipped: 'no-db' });
|
|
89
|
+
let Database;
|
|
90
|
+
try {
|
|
91
|
+
const mod = 'better-sqlite3';
|
|
92
|
+
Database = (await import(mod)).default;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return emptyReport(dryRun, { skipped: 'better-sqlite3 unavailable' });
|
|
96
|
+
}
|
|
97
|
+
const report = emptyReport(dryRun);
|
|
98
|
+
let db;
|
|
99
|
+
try {
|
|
100
|
+
db = new Database(dbPath, { timeout: 3000 });
|
|
101
|
+
const tableExists = (name) => (db.prepare("SELECT COUNT(*) AS c FROM sqlite_master WHERE type='table' AND name=?").get(name)?.c ?? 0) > 0;
|
|
102
|
+
if (!tableExists('memory_entries')) {
|
|
103
|
+
db.close();
|
|
104
|
+
return { ...report, skipped: 'no memory_entries' };
|
|
105
|
+
}
|
|
106
|
+
for (const t of ['episodes', 'reasoning_patterns', 'pattern_embeddings', 'causal_edges']) {
|
|
107
|
+
if (!tableExists(t)) {
|
|
108
|
+
db.close();
|
|
109
|
+
return { ...report, skipped: `target table ${t} missing (agentdb schema not initialised)` };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Safety gate: never distill into a structurally-corrupt DB.
|
|
113
|
+
const qc = db.prepare('PRAGMA quick_check(1)').get();
|
|
114
|
+
if (qc && String(Object.values(qc)[0] ?? '').toLowerCase() !== 'ok') {
|
|
115
|
+
db.close();
|
|
116
|
+
return { ...report, corrupt: true, skipped: 'memory DB reports corruption — run recoverMemoryDatabase first' };
|
|
117
|
+
}
|
|
118
|
+
// M0: incremental cursor table (per namespace, by monotonic rowid).
|
|
119
|
+
db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
|
|
120
|
+
namespace TEXT PRIMARY KEY,
|
|
121
|
+
last_rowid INTEGER NOT NULL DEFAULT 0,
|
|
122
|
+
last_run_at INTEGER
|
|
123
|
+
)`);
|
|
124
|
+
// Which namespaces to process.
|
|
125
|
+
const nsAll = db.prepare("SELECT DISTINCT COALESCE(namespace,'default') AS ns FROM memory_entries WHERE embedding IS NOT NULL").all().map(r => r.ns);
|
|
126
|
+
const nsList = namespaces && namespaces.length ? nsAll.filter(n => namespaces.includes(n)) : nsAll;
|
|
127
|
+
report.namespaces = nsList;
|
|
128
|
+
const getCursor = db.prepare('SELECT last_rowid FROM distill_state WHERE namespace = ?');
|
|
129
|
+
const setCursor = db.prepare('INSERT INTO distill_state (namespace, last_rowid, last_run_at) VALUES (?, ?, ?) ' +
|
|
130
|
+
'ON CONFLICT(namespace) DO UPDATE SET last_rowid = excluded.last_rowid, last_run_at = excluded.last_run_at');
|
|
131
|
+
const insEpisode = db.prepare('INSERT INTO episodes (session_id, task, input, output, reward, success, tags, metadata) VALUES (?,?,?,?,?,?,?,?)');
|
|
132
|
+
const insPattern = db.prepare('INSERT INTO reasoning_patterns (task_type, approach, success_rate, uses, avg_reward, tags, metadata) VALUES (?,?,?,?,?,?,?)');
|
|
133
|
+
const insPatEmb = db.prepare('INSERT OR REPLACE INTO pattern_embeddings (pattern_id, embedding) VALUES (?, ?)');
|
|
134
|
+
const insEdge = db.prepare('INSERT INTO causal_edges (from_memory_id, from_memory_type, to_memory_id, to_memory_type, similarity, confidence, mechanism, metadata) VALUES (?,?,?,?,?,?,?,?)');
|
|
135
|
+
let remaining = typeof maxEntries === 'number' ? maxEntries : Infinity;
|
|
136
|
+
for (const ns of nsList) {
|
|
137
|
+
if (remaining <= 0)
|
|
138
|
+
break;
|
|
139
|
+
let cursor = typeof sinceRowid === 'number' ? sinceRowid : (getCursor.get(ns)?.last_rowid ?? 0);
|
|
140
|
+
// Process this namespace in bounded batches until drained or cap hit.
|
|
141
|
+
// eslint-disable-next-line no-constant-condition
|
|
142
|
+
while (true) {
|
|
143
|
+
if (remaining <= 0)
|
|
144
|
+
break;
|
|
145
|
+
const lim = Math.min(batchSize, remaining);
|
|
146
|
+
const rows = db.prepare("SELECT rowid AS rowid, id, COALESCE(namespace,'default') AS namespace, content, embedding " +
|
|
147
|
+
'FROM memory_entries WHERE embedding IS NOT NULL AND COALESCE(namespace,' + "'default'" + ') = ? AND rowid > ? ' +
|
|
148
|
+
'ORDER BY rowid LIMIT ?').all(ns, cursor, lim);
|
|
149
|
+
if (rows.length === 0)
|
|
150
|
+
break;
|
|
151
|
+
const src = rows.map(r => ({
|
|
152
|
+
rowid: r.rowid, id: r.id, namespace: r.namespace,
|
|
153
|
+
content: String(r.content ?? ''), embedding: parseEmbedding(r.embedding),
|
|
154
|
+
}));
|
|
155
|
+
// Greedy cosine clustering within the batch (bounded n → O(n²) is fine).
|
|
156
|
+
const clusters = [];
|
|
157
|
+
for (const row of src) {
|
|
158
|
+
let placed = false;
|
|
159
|
+
if (row.embedding) {
|
|
160
|
+
for (const cl of clusters) {
|
|
161
|
+
if (cl.rep.embedding && cosine(row.embedding, cl.rep.embedding) >= 1 - dedupDistance) {
|
|
162
|
+
cl.members.push(row);
|
|
163
|
+
if (ns === 'feedback' && judgeFeedback(row.content).success)
|
|
164
|
+
cl.successCount++;
|
|
165
|
+
placed = true;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!placed) {
|
|
171
|
+
const success = ns === 'feedback' ? judgeFeedback(row.content).success : false;
|
|
172
|
+
clusters.push({
|
|
173
|
+
rep: row, members: [row], successCount: success ? 1 : 0,
|
|
174
|
+
provenance: ns === 'feedback' ? 'oracle:test-exec' : 'proxy:structural',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const maxRowid = Math.max(...src.map(r => r.rowid), cursor);
|
|
179
|
+
// Embedding-coverage invariant: a cluster is only written if it has an
|
|
180
|
+
// embeddable representative — reselect to any member with a valid
|
|
181
|
+
// (parseable) vector; skip the cluster if none (unretrievable anyway).
|
|
182
|
+
// Guarantees every reasoning_pattern has exactly one pattern_embedding.
|
|
183
|
+
const embVecOf = (cl) => cl.rep.embedding ?? cl.members.find(m => m.embedding)?.embedding ?? null;
|
|
184
|
+
if (!dryRun) {
|
|
185
|
+
const commit = db.transaction(() => {
|
|
186
|
+
let prevEpId = null;
|
|
187
|
+
for (const cl of clusters) {
|
|
188
|
+
const embVec = embVecOf(cl);
|
|
189
|
+
if (!embVec)
|
|
190
|
+
continue; // no embeddable member → skip (keeps 1:1)
|
|
191
|
+
const distilled = distillTrajectoryContent(cl.rep.content);
|
|
192
|
+
const taskType = distilled.labels[0] ?? ns;
|
|
193
|
+
const approach = distilled.summary || serialiseDistilled(distilled).slice(0, 200);
|
|
194
|
+
const uses = cl.members.length;
|
|
195
|
+
const successRate = cl.provenance === 'oracle:test-exec' ? cl.successCount / uses : 0;
|
|
196
|
+
const avgReward = successRate; // structural: reward == success fraction
|
|
197
|
+
const promoted = cl.provenance === 'oracle:test-exec'; // proxy NEVER promotes (ADR-171)
|
|
198
|
+
const provMeta = {
|
|
199
|
+
provenance: cl.provenance, provenance_tier: cl.provenance, promoted,
|
|
200
|
+
sourceIds: cl.members.map(m => m.id).slice(0, 25),
|
|
201
|
+
paths: distilled.paths.slice(0, 10), namespace: ns, distilledBy: 'structural',
|
|
202
|
+
};
|
|
203
|
+
const epInfo = insEpisode.run(`distill:${ns}`, approach, cl.rep.content.slice(0, 2000), '', avgReward, promoted && cl.successCount > 0 ? 1 : 0, JSON.stringify(distilled.labels), JSON.stringify(provMeta));
|
|
204
|
+
report.episodes++;
|
|
205
|
+
const patInfo = insPattern.run(taskType, approach, successRate, uses, avgReward, JSON.stringify(distilled.labels), JSON.stringify(provMeta));
|
|
206
|
+
const patternId = Number(patInfo.lastInsertRowid);
|
|
207
|
+
report.patterns++;
|
|
208
|
+
report.byProvenance[cl.provenance] = (report.byProvenance[cl.provenance] ?? 0) + 1;
|
|
209
|
+
if (promoted)
|
|
210
|
+
report.promoted++;
|
|
211
|
+
// pattern_embeddings: reuse the representative's existing 384-dim
|
|
212
|
+
// vector as a Float32 BLOB — $0, no re-embedding. Guaranteed 1:1.
|
|
213
|
+
insPatEmb.run(patternId, Buffer.from(Float32Array.from(embVec).buffer));
|
|
214
|
+
report.patternEmbeddings++;
|
|
215
|
+
// WEAK relational edge — NOT causal proof. Links to the actual
|
|
216
|
+
// previous episode (not epId-1, which wrongly assumed consecutive
|
|
217
|
+
// rowids). Explicitly typed co-occurrence / proxy-tier / non-
|
|
218
|
+
// promoted: may rank retrieval, must NOT justify autonomous action
|
|
219
|
+
// (ADR-174 edge contract).
|
|
220
|
+
const epId = Number(epInfo.lastInsertRowid);
|
|
221
|
+
if (prevEpId !== null) {
|
|
222
|
+
insEdge.run(prevEpId, 'episode', epId, 'episode', 0, 0.3, 'co-occurrence', JSON.stringify({
|
|
223
|
+
edge_type: 'cooccurrence',
|
|
224
|
+
provenance_tier: 'proxy:structural',
|
|
225
|
+
confidence: 0.3,
|
|
226
|
+
promoted: false,
|
|
227
|
+
namespace: ns,
|
|
228
|
+
note: 'weak co-occurrence; may rank retrieval, must not justify autonomous action',
|
|
229
|
+
}));
|
|
230
|
+
report.causalEdges++;
|
|
231
|
+
}
|
|
232
|
+
prevEpId = epId;
|
|
233
|
+
}
|
|
234
|
+
setCursor.run(ns, maxRowid, Date.now());
|
|
235
|
+
});
|
|
236
|
+
commit();
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
// dry-run accounting only — mirror the embeddable-cluster skip.
|
|
240
|
+
for (const cl of clusters) {
|
|
241
|
+
if (!embVecOf(cl))
|
|
242
|
+
continue;
|
|
243
|
+
report.patterns++;
|
|
244
|
+
report.episodes++;
|
|
245
|
+
report.byProvenance[cl.provenance] = (report.byProvenance[cl.provenance] ?? 0) + 1;
|
|
246
|
+
if (cl.provenance === 'oracle:test-exec')
|
|
247
|
+
report.promoted++;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
report.processed += rows.length;
|
|
251
|
+
remaining -= rows.length;
|
|
252
|
+
cursor = maxRowid;
|
|
253
|
+
if (rows.length < lim)
|
|
254
|
+
break; // namespace drained
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
db.close();
|
|
258
|
+
if (verbose) {
|
|
259
|
+
console.log(`distilled ${report.processed} entries → ${report.patterns} patterns ` +
|
|
260
|
+
`(${report.promoted} promoted), ${report.episodes} episodes, ${report.causalEdges} edges` +
|
|
261
|
+
(dryRun ? ' [dry-run]' : ''));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
try {
|
|
266
|
+
db?.close();
|
|
267
|
+
}
|
|
268
|
+
catch { /* */ }
|
|
269
|
+
return { ...report, skipped: `error: ${e?.message ?? e}` };
|
|
270
|
+
}
|
|
271
|
+
return report;
|
|
272
|
+
}
|
|
273
|
+
/** Where the memory DB lives, for daemon/CLI callers. */
|
|
274
|
+
export function defaultMemoryDbPath(cwd = process.cwd()) {
|
|
275
|
+
return path.join(cwd, '.swarm', 'memory.db');
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=memory-distillation.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native training via @ruvector/ruvllm's TrainingPipeline (#2549 follow-up).
|
|
3
|
+
*
|
|
4
|
+
* `neural train` historically trained only on the RuVector WASM path
|
|
5
|
+
* (MicroLoRA + InfoNCE) and its "checkpoint" was a freshly-constructed
|
|
6
|
+
* adapter's weights — the native TrainingPipeline (real epochs, loss
|
|
7
|
+
* history, early stopping, EWC registration, disk checkpoints since
|
|
8
|
+
* ruvllm 2.5.7) was never exercised. This service routes the LoRA
|
|
9
|
+
* training leg through it.
|
|
10
|
+
*
|
|
11
|
+
* Batch formulation: pattern-alignment pairs — input = embedding[i],
|
|
12
|
+
* target = embedding[i+1 mod n], quality 1.0 — the MSE analogue of the
|
|
13
|
+
* WASM path's anchor→positive contrastive objective (adjacent training
|
|
14
|
+
* items belong to the same pattern family by construction).
|
|
15
|
+
*
|
|
16
|
+
* Graceful: returns null when @ruvector/ruvllm is absent or anything
|
|
17
|
+
* throws — callers fall back to the WASM path.
|
|
18
|
+
*/
|
|
19
|
+
export interface NativeTrainingResult {
|
|
20
|
+
epochs: number;
|
|
21
|
+
steps: number;
|
|
22
|
+
finalLoss: number;
|
|
23
|
+
bestValLoss: number | null;
|
|
24
|
+
durationMs: number;
|
|
25
|
+
earlyStopped: boolean;
|
|
26
|
+
checkpointPath?: string;
|
|
27
|
+
checkpointBytes?: number;
|
|
28
|
+
/** True when training resumed from a --resume checkpoint. */
|
|
29
|
+
resumed?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* How the resume happened: 'resumeFrom' (ruvllm >=2.6.0 — restores epoch
|
|
32
|
+
* position + optimizer state) or 'loadCheckpoint' (2.5.7 fallback —
|
|
33
|
+
* weights only, training restarts from epoch 0).
|
|
34
|
+
*/
|
|
35
|
+
resumeMode?: 'resumeFrom' | 'loadCheckpoint';
|
|
36
|
+
}
|
|
37
|
+
export interface NativeTrainingOptions {
|
|
38
|
+
embeddings: Float32Array[];
|
|
39
|
+
epochs: number;
|
|
40
|
+
batchSize: number;
|
|
41
|
+
learningRate: number;
|
|
42
|
+
dim: number;
|
|
43
|
+
/**
|
|
44
|
+
* Validation holdout fraction (0..1). >0 makes the pipeline report
|
|
45
|
+
* bestValLoss + early-stopping; 0 (or omitted) disables validation.
|
|
46
|
+
* validationSplit exists in ruvllm 2.5.7 — no version gate needed.
|
|
47
|
+
*/
|
|
48
|
+
validationSplit?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Resume weights (and, on >=2.6.0, epoch position) from this checkpoint
|
|
51
|
+
* BEFORE training. A missing/invalid path throws ResumeFailedError — an
|
|
52
|
+
* explicit --resume must fail loudly, never silently fresh-train.
|
|
53
|
+
*/
|
|
54
|
+
resumeFrom?: string;
|
|
55
|
+
/** When set, the TRAINED pipeline checkpoints here (ruvllm >=2.5.7). */
|
|
56
|
+
checkpointPath?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Thrown when an explicit --resume checkpoint cannot be found or loaded.
|
|
60
|
+
* Distinct from the generic "native unavailable → null" degradation so the
|
|
61
|
+
* caller can surface a loud, exit-1 failure rather than fresh training.
|
|
62
|
+
*/
|
|
63
|
+
export declare class ResumeFailedError extends Error {
|
|
64
|
+
constructor(message: string);
|
|
65
|
+
}
|
|
66
|
+
export declare function nativeTrainingAvailable(): boolean;
|
|
67
|
+
export declare function runNativeTraining(opts: NativeTrainingOptions): Promise<NativeTrainingResult | null>;
|
|
68
|
+
//# sourceMappingURL=native-training.d.ts.map
|