@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,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meta-proxy release verification (ADR-307) — mirrors src/init/helper-signing.ts's
|
|
3
|
+
* raw-EdDSA `crypto.verify(null, ...)` pattern almost exactly, and matches the
|
|
4
|
+
* exact scheme confirmed live 2026-07-16 against a real v0.1.0 release: ONE
|
|
5
|
+
* combined `SHA256SUMS.sig` (raw Ed25519 over the `SHA256SUMS` file's bytes,
|
|
6
|
+
* base64-encoded — not a per-binary signature), then a per-asset SHA-256
|
|
7
|
+
* check against the matching `SHA256SUMS` line. Refuse-all-or-nothing on any
|
|
8
|
+
* mismatch, same discipline as `writeCriticalHelpers()`.
|
|
9
|
+
*
|
|
10
|
+
* @module proxy/verify
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* meta-proxy's committed release-signing public key (SPKI PEM), confirmed
|
|
14
|
+
* live 2026-07-16 by verifying a real `SHA256SUMS.sig` from the v0.1.0
|
|
15
|
+
* release against it (crypto.verify -> true).
|
|
16
|
+
*/
|
|
17
|
+
export declare const PROXY_RELEASE_PUBKEY_PEM = "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAjhLDomjIGdcltYC7j+aiESQFD4LWoHaULietG1PuDjw=\n-----END PUBLIC KEY-----";
|
|
18
|
+
export declare class ReleaseVerificationError extends Error {
|
|
19
|
+
constructor(message: string);
|
|
20
|
+
}
|
|
21
|
+
/** Raw EdDSA verify of `SHA256SUMS.sig` (base64) over `SHA256SUMS`'s exact bytes. */
|
|
22
|
+
export declare function verifySha256SumsSignature(sumsBytes: Buffer, sigBase64: string, pubkeyPem?: string): boolean;
|
|
23
|
+
export type ParsedChecksums = Record<string, string>;
|
|
24
|
+
/** Parses `<sha256> <filename>` lines (sha256sum's own output format). */
|
|
25
|
+
export declare function parseSha256Sums(sumsText: string): ParsedChecksums;
|
|
26
|
+
export declare function sha256Hex(bytes: Buffer): string;
|
|
27
|
+
export interface VerifyReleaseInput {
|
|
28
|
+
sumsBytes: Buffer;
|
|
29
|
+
sigBase64: string;
|
|
30
|
+
assetBytes: Buffer;
|
|
31
|
+
assetFilename: string;
|
|
32
|
+
pubkeyPem?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface VerifyReleaseResult {
|
|
35
|
+
sha256: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Full verification: signature over SHA256SUMS, then the asset's own hash
|
|
39
|
+
* against the matching line. Throws `ReleaseVerificationError` on ANY
|
|
40
|
+
* failure — there is no partial-trust outcome, matching ADR-307's "refuses
|
|
41
|
+
* on any mismatch" requirement.
|
|
42
|
+
*/
|
|
43
|
+
export declare function verifyRelease(input: VerifyReleaseInput): VerifyReleaseResult;
|
|
44
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meta-proxy release verification (ADR-307) — mirrors src/init/helper-signing.ts's
|
|
3
|
+
* raw-EdDSA `crypto.verify(null, ...)` pattern almost exactly, and matches the
|
|
4
|
+
* exact scheme confirmed live 2026-07-16 against a real v0.1.0 release: ONE
|
|
5
|
+
* combined `SHA256SUMS.sig` (raw Ed25519 over the `SHA256SUMS` file's bytes,
|
|
6
|
+
* base64-encoded — not a per-binary signature), then a per-asset SHA-256
|
|
7
|
+
* check against the matching `SHA256SUMS` line. Refuse-all-or-nothing on any
|
|
8
|
+
* mismatch, same discipline as `writeCriticalHelpers()`.
|
|
9
|
+
*
|
|
10
|
+
* @module proxy/verify
|
|
11
|
+
*/
|
|
12
|
+
import { createHash, createPublicKey, verify as cryptoVerify } from 'node:crypto';
|
|
13
|
+
/**
|
|
14
|
+
* meta-proxy's committed release-signing public key (SPKI PEM), confirmed
|
|
15
|
+
* live 2026-07-16 by verifying a real `SHA256SUMS.sig` from the v0.1.0
|
|
16
|
+
* release against it (crypto.verify -> true).
|
|
17
|
+
*/
|
|
18
|
+
export const PROXY_RELEASE_PUBKEY_PEM = `-----BEGIN PUBLIC KEY-----
|
|
19
|
+
MCowBQYDK2VwAyEAjhLDomjIGdcltYC7j+aiESQFD4LWoHaULietG1PuDjw=
|
|
20
|
+
-----END PUBLIC KEY-----`;
|
|
21
|
+
export class ReleaseVerificationError extends Error {
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'ReleaseVerificationError';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Raw EdDSA verify of `SHA256SUMS.sig` (base64) over `SHA256SUMS`'s exact bytes. */
|
|
28
|
+
export function verifySha256SumsSignature(sumsBytes, sigBase64, pubkeyPem = PROXY_RELEASE_PUBKEY_PEM) {
|
|
29
|
+
const pubkey = createPublicKey(pubkeyPem);
|
|
30
|
+
const sig = Buffer.from(sigBase64.trim(), 'base64');
|
|
31
|
+
return cryptoVerify(null, sumsBytes, pubkey, sig);
|
|
32
|
+
}
|
|
33
|
+
/** Parses `<sha256> <filename>` lines (sha256sum's own output format). */
|
|
34
|
+
export function parseSha256Sums(sumsText) {
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const line of sumsText.split(/\r?\n/)) {
|
|
37
|
+
const match = line.match(/^([0-9a-f]{64})\s+(.+)$/i);
|
|
38
|
+
if (!match)
|
|
39
|
+
continue;
|
|
40
|
+
result[match[2]] = match[1].toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
export function sha256Hex(bytes) {
|
|
45
|
+
return createHash('sha256').update(bytes).digest('hex');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Full verification: signature over SHA256SUMS, then the asset's own hash
|
|
49
|
+
* against the matching line. Throws `ReleaseVerificationError` on ANY
|
|
50
|
+
* failure — there is no partial-trust outcome, matching ADR-307's "refuses
|
|
51
|
+
* on any mismatch" requirement.
|
|
52
|
+
*/
|
|
53
|
+
export function verifyRelease(input) {
|
|
54
|
+
if (!verifySha256SumsSignature(input.sumsBytes, input.sigBase64, input.pubkeyPem)) {
|
|
55
|
+
throw new ReleaseVerificationError('SHA256SUMS.sig failed Ed25519 verification — refusing to install');
|
|
56
|
+
}
|
|
57
|
+
const sums = parseSha256Sums(input.sumsBytes.toString('utf-8'));
|
|
58
|
+
const expected = sums[input.assetFilename];
|
|
59
|
+
if (!expected) {
|
|
60
|
+
throw new ReleaseVerificationError(`SHA256SUMS has no entry for ${input.assetFilename}`);
|
|
61
|
+
}
|
|
62
|
+
const actual = sha256Hex(input.assetBytes);
|
|
63
|
+
if (actual !== expected) {
|
|
64
|
+
throw new ReleaseVerificationError(`sha256 mismatch for ${input.assetFilename}: expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…`);
|
|
65
|
+
}
|
|
66
|
+
return { sha256: actual };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Headless Runtime for Background Workers
|
|
4
|
+
* Runs without TTY for daemon processes and scheduled tasks
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx @claude-flow/cli headless --worker <type>
|
|
8
|
+
* npx @claude-flow/cli headless --daemon
|
|
9
|
+
* npx @claude-flow/cli headless --benchmark
|
|
10
|
+
*
|
|
11
|
+
* Environment:
|
|
12
|
+
* CLAUDE_FLOW_HEADLESS=true
|
|
13
|
+
* CLAUDE_CODE_HEADLESS=true
|
|
14
|
+
*
|
|
15
|
+
* @module v3/cli/runtime/headless
|
|
16
|
+
*/
|
|
17
|
+
import { type HeadlessWorkerType } from '../services/headless-worker-executor.js';
|
|
18
|
+
interface HeadlessConfig {
|
|
19
|
+
mode: 'worker' | 'daemon' | 'benchmark' | 'status';
|
|
20
|
+
workerType?: HeadlessWorkerType;
|
|
21
|
+
timeout?: number;
|
|
22
|
+
verbose?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface BenchmarkResults {
|
|
25
|
+
sona: {
|
|
26
|
+
avgMs: number;
|
|
27
|
+
targetMet: boolean;
|
|
28
|
+
};
|
|
29
|
+
flashAttention: {
|
|
30
|
+
throughputPerMs: number;
|
|
31
|
+
speedup: number;
|
|
32
|
+
};
|
|
33
|
+
hnsw: {
|
|
34
|
+
entriesIndexed: number;
|
|
35
|
+
searchTime: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run a specific worker
|
|
40
|
+
*/
|
|
41
|
+
declare function runWorker(workerType: HeadlessWorkerType, timeout: number): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Run daemon mode
|
|
44
|
+
*/
|
|
45
|
+
declare function runDaemon(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Run benchmarks
|
|
48
|
+
*/
|
|
49
|
+
declare function runBenchmarks(): Promise<BenchmarkResults>;
|
|
50
|
+
/**
|
|
51
|
+
* Show system status
|
|
52
|
+
*/
|
|
53
|
+
declare function showStatus(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Main entry point
|
|
56
|
+
*/
|
|
57
|
+
declare function main(): Promise<void>;
|
|
58
|
+
export { main, runWorker, runDaemon, runBenchmarks, showStatus };
|
|
59
|
+
export type { HeadlessConfig, BenchmarkResults };
|
|
60
|
+
//# sourceMappingURL=headless.d.ts.map
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Headless Runtime for Background Workers
|
|
4
|
+
* Runs without TTY for daemon processes and scheduled tasks
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx @claude-flow/cli headless --worker <type>
|
|
8
|
+
* npx @claude-flow/cli headless --daemon
|
|
9
|
+
* npx @claude-flow/cli headless --benchmark
|
|
10
|
+
*
|
|
11
|
+
* Environment:
|
|
12
|
+
* CLAUDE_FLOW_HEADLESS=true
|
|
13
|
+
* CLAUDE_CODE_HEADLESS=true
|
|
14
|
+
*
|
|
15
|
+
* @module v3/cli/runtime/headless
|
|
16
|
+
*/
|
|
17
|
+
import { HeadlessWorkerExecutor, HEADLESS_WORKER_TYPES } from '../services/headless-worker-executor.js';
|
|
18
|
+
import { getDaemon, startDaemon, stopDaemon } from '../services/worker-daemon.js';
|
|
19
|
+
import { initializeIntelligence, benchmarkAdaptation, getIntelligenceStats } from '../memory/intelligence.js';
|
|
20
|
+
import { getHNSWStatus, batchCosineSim, flashAttentionSearch } from '../memory/memory-initializer.js';
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Main Runtime
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Parse command line arguments
|
|
26
|
+
*/
|
|
27
|
+
function parseArgs() {
|
|
28
|
+
const args = process.argv.slice(2);
|
|
29
|
+
const config = {
|
|
30
|
+
mode: 'status',
|
|
31
|
+
verbose: false
|
|
32
|
+
};
|
|
33
|
+
for (let i = 0; i < args.length; i++) {
|
|
34
|
+
const arg = args[i];
|
|
35
|
+
if (arg === '--worker' || arg === '-w') {
|
|
36
|
+
config.mode = 'worker';
|
|
37
|
+
config.workerType = args[++i];
|
|
38
|
+
}
|
|
39
|
+
else if (arg === '--daemon' || arg === '-d') {
|
|
40
|
+
config.mode = 'daemon';
|
|
41
|
+
}
|
|
42
|
+
else if (arg === '--benchmark' || arg === '-b') {
|
|
43
|
+
config.mode = 'benchmark';
|
|
44
|
+
}
|
|
45
|
+
else if (arg === '--status' || arg === '-s') {
|
|
46
|
+
config.mode = 'status';
|
|
47
|
+
}
|
|
48
|
+
else if (arg === '--timeout' || arg === '-t') {
|
|
49
|
+
config.timeout = parseInt(args[++i], 10) || 60000;
|
|
50
|
+
}
|
|
51
|
+
else if (arg === '--verbose' || arg === '-v') {
|
|
52
|
+
config.verbose = true;
|
|
53
|
+
}
|
|
54
|
+
else if (arg === '--help' || arg === '-h') {
|
|
55
|
+
showHelp();
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return config;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Show help message
|
|
63
|
+
*/
|
|
64
|
+
function showHelp() {
|
|
65
|
+
console.log(`
|
|
66
|
+
Headless Runtime for RuFlo V3
|
|
67
|
+
|
|
68
|
+
Usage:
|
|
69
|
+
headless --worker <type> Run a specific worker
|
|
70
|
+
headless --daemon Start background daemon
|
|
71
|
+
headless --benchmark Run performance benchmarks
|
|
72
|
+
headless --status Show system status
|
|
73
|
+
|
|
74
|
+
Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
|
|
75
|
+
|
|
76
|
+
Options:
|
|
77
|
+
-w, --worker <type> Worker type to run
|
|
78
|
+
-d, --daemon Run as daemon
|
|
79
|
+
-b, --benchmark Run benchmarks
|
|
80
|
+
-s, --status Show status
|
|
81
|
+
-t, --timeout <ms> Execution timeout (default: 60000)
|
|
82
|
+
-v, --verbose Verbose output
|
|
83
|
+
-h, --help Show help
|
|
84
|
+
|
|
85
|
+
Environment:
|
|
86
|
+
CLAUDE_FLOW_HEADLESS=true Enable headless mode
|
|
87
|
+
CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
headless --worker audit --timeout 120000
|
|
91
|
+
headless --daemon
|
|
92
|
+
headless --benchmark
|
|
93
|
+
`);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Run a specific worker
|
|
97
|
+
*/
|
|
98
|
+
async function runWorker(workerType, timeout) {
|
|
99
|
+
console.log(`[Headless] Starting worker: ${workerType}`);
|
|
100
|
+
const executor = new HeadlessWorkerExecutor(process.cwd(), {
|
|
101
|
+
maxConcurrent: 1,
|
|
102
|
+
defaultTimeoutMs: timeout
|
|
103
|
+
});
|
|
104
|
+
try {
|
|
105
|
+
const result = await executor.execute(workerType, {
|
|
106
|
+
timeoutMs: timeout,
|
|
107
|
+
model: 'sonnet',
|
|
108
|
+
sandbox: 'permissive'
|
|
109
|
+
});
|
|
110
|
+
if (result.success) {
|
|
111
|
+
console.log(`[Headless] Worker ${workerType} completed successfully`);
|
|
112
|
+
console.log(`[Headless] Duration: ${result.durationMs}ms`);
|
|
113
|
+
if (result.output) {
|
|
114
|
+
console.log(`[Headless] Output: ${JSON.stringify(result.output).slice(0, 500)}...`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.error(`[Headless] Worker ${workerType} failed: ${result.error}`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
// executor doesn't have shutdown, just let it be garbage collected
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Run daemon mode
|
|
128
|
+
*/
|
|
129
|
+
async function runDaemon() {
|
|
130
|
+
console.log('[Headless] Starting daemon mode...');
|
|
131
|
+
// Start the daemon
|
|
132
|
+
const daemon = await startDaemon(process.cwd());
|
|
133
|
+
console.log('[Headless] Daemon started');
|
|
134
|
+
console.log('[Headless] Press Ctrl+C to stop');
|
|
135
|
+
// Handle shutdown
|
|
136
|
+
process.on('SIGINT', async () => {
|
|
137
|
+
console.log('\n[Headless] Shutting down daemon...');
|
|
138
|
+
await stopDaemon();
|
|
139
|
+
process.exit(0);
|
|
140
|
+
});
|
|
141
|
+
process.on('SIGTERM', async () => {
|
|
142
|
+
console.log('\n[Headless] Received SIGTERM, shutting down...');
|
|
143
|
+
await stopDaemon();
|
|
144
|
+
process.exit(0);
|
|
145
|
+
});
|
|
146
|
+
// Keep process running
|
|
147
|
+
await new Promise(() => { });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Run benchmarks
|
|
151
|
+
*/
|
|
152
|
+
async function runBenchmarks() {
|
|
153
|
+
console.log('=== RuFlo V3 Performance Benchmarks ===\n');
|
|
154
|
+
// Initialize intelligence
|
|
155
|
+
await initializeIntelligence();
|
|
156
|
+
// SONA Benchmark
|
|
157
|
+
console.log('1. SONA Adaptation Benchmark (10,000 iterations)...');
|
|
158
|
+
const sonaResult = benchmarkAdaptation(10000);
|
|
159
|
+
console.log(` Average: ${sonaResult.avgMs.toFixed(4)}ms`);
|
|
160
|
+
console.log(` Target (<0.05ms): ${sonaResult.targetMet ? '✅ ACHIEVED' : '❌ NOT MET'}`);
|
|
161
|
+
// Flash Attention Benchmark
|
|
162
|
+
console.log('\n2. Flash Attention Search Benchmark...');
|
|
163
|
+
const dim = 384;
|
|
164
|
+
const count = 10000;
|
|
165
|
+
const query = new Float32Array(dim).map(() => Math.random() - 0.5);
|
|
166
|
+
const vectors = Array.from({ length: count }, () => new Float32Array(dim).map(() => Math.random() - 0.5));
|
|
167
|
+
// Warmup
|
|
168
|
+
flashAttentionSearch(query, vectors, { k: 10 });
|
|
169
|
+
const flashStart = performance.now();
|
|
170
|
+
for (let i = 0; i < 10; i++) {
|
|
171
|
+
flashAttentionSearch(query, vectors, { k: 10 });
|
|
172
|
+
}
|
|
173
|
+
const flashTime = (performance.now() - flashStart) / 10;
|
|
174
|
+
const throughput = count / flashTime;
|
|
175
|
+
// Brute force comparison
|
|
176
|
+
const bruteStart = performance.now();
|
|
177
|
+
for (let i = 0; i < 10; i++) {
|
|
178
|
+
const scores = batchCosineSim(query, vectors);
|
|
179
|
+
Array.from({ length: count }, (_, i) => i)
|
|
180
|
+
.sort((a, b) => scores[b] - scores[a])
|
|
181
|
+
.slice(0, 10);
|
|
182
|
+
}
|
|
183
|
+
const bruteTime = (performance.now() - bruteStart) / 10;
|
|
184
|
+
const speedup = bruteTime / flashTime;
|
|
185
|
+
console.log(` Throughput: ${throughput.toFixed(0)} vectors/ms`);
|
|
186
|
+
console.log(` Time for 10k vectors: ${flashTime.toFixed(2)}ms`);
|
|
187
|
+
console.log(` Speedup vs brute force: ${speedup.toFixed(2)}x`);
|
|
188
|
+
// HNSW Status
|
|
189
|
+
console.log('\n3. HNSW Index Status...');
|
|
190
|
+
const hnswStatus = getHNSWStatus();
|
|
191
|
+
console.log(` Entries indexed: ${hnswStatus.entryCount}`);
|
|
192
|
+
console.log(` Initialized: ${hnswStatus.initialized}`);
|
|
193
|
+
// Intelligence Stats
|
|
194
|
+
console.log('\n4. Intelligence System Stats...');
|
|
195
|
+
const stats = getIntelligenceStats();
|
|
196
|
+
console.log(` SONA enabled: ${stats.sonaEnabled}`);
|
|
197
|
+
console.log(` Patterns learned: ${stats.patternsLearned}`);
|
|
198
|
+
console.log(` Avg adaptation time: ${stats.avgAdaptationTime.toFixed(4)}ms`);
|
|
199
|
+
console.log('\n=== Benchmark Complete ===');
|
|
200
|
+
return {
|
|
201
|
+
sona: {
|
|
202
|
+
avgMs: sonaResult.avgMs,
|
|
203
|
+
targetMet: sonaResult.targetMet
|
|
204
|
+
},
|
|
205
|
+
flashAttention: {
|
|
206
|
+
throughputPerMs: throughput,
|
|
207
|
+
speedup
|
|
208
|
+
},
|
|
209
|
+
hnsw: {
|
|
210
|
+
entriesIndexed: hnswStatus.entryCount,
|
|
211
|
+
searchTime: flashTime
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Show system status
|
|
217
|
+
*/
|
|
218
|
+
async function showStatus() {
|
|
219
|
+
console.log('=== RuFlo V3 System Status ===\n');
|
|
220
|
+
// Check daemon
|
|
221
|
+
const daemon = getDaemon();
|
|
222
|
+
console.log('Daemon:');
|
|
223
|
+
if (daemon) {
|
|
224
|
+
const status = daemon.getStatus();
|
|
225
|
+
console.log(` Running: ${status.running}`);
|
|
226
|
+
console.log(` PID: ${status.pid}`);
|
|
227
|
+
console.log(` Workers: ${status.workers.size}`);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
console.log(' Not initialized');
|
|
231
|
+
}
|
|
232
|
+
// Intelligence
|
|
233
|
+
const stats = getIntelligenceStats();
|
|
234
|
+
console.log('\nIntelligence:');
|
|
235
|
+
console.log(` SONA enabled: ${stats.sonaEnabled}`);
|
|
236
|
+
console.log(` ReasoningBank size: ${stats.reasoningBankSize}`);
|
|
237
|
+
console.log(` Patterns learned: ${stats.patternsLearned}`);
|
|
238
|
+
// HNSW
|
|
239
|
+
const hnsw = getHNSWStatus();
|
|
240
|
+
console.log('\nHNSW Index:');
|
|
241
|
+
console.log(` Initialized: ${hnsw.initialized}`);
|
|
242
|
+
console.log(` Entries: ${hnsw.entryCount}`);
|
|
243
|
+
console.log('\nEnvironment:');
|
|
244
|
+
console.log(` CLAUDE_FLOW_HEADLESS: ${process.env.CLAUDE_FLOW_HEADLESS || 'not set'}`);
|
|
245
|
+
console.log(` CLAUDE_CODE_HEADLESS: ${process.env.CLAUDE_CODE_HEADLESS || 'not set'}`);
|
|
246
|
+
console.log(` NODE_ENV: ${process.env.NODE_ENV || 'development'}`);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Main entry point
|
|
250
|
+
*/
|
|
251
|
+
async function main() {
|
|
252
|
+
// Set headless environment
|
|
253
|
+
process.env.CLAUDE_FLOW_HEADLESS = 'true';
|
|
254
|
+
const config = parseArgs();
|
|
255
|
+
try {
|
|
256
|
+
switch (config.mode) {
|
|
257
|
+
case 'worker':
|
|
258
|
+
if (!config.workerType || !HEADLESS_WORKER_TYPES.includes(config.workerType)) {
|
|
259
|
+
console.error(`Invalid worker type. Available: ${HEADLESS_WORKER_TYPES.join(', ')}`);
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
await runWorker(config.workerType, config.timeout || 60000);
|
|
263
|
+
break;
|
|
264
|
+
case 'daemon':
|
|
265
|
+
await runDaemon();
|
|
266
|
+
break;
|
|
267
|
+
case 'benchmark':
|
|
268
|
+
await runBenchmarks();
|
|
269
|
+
break;
|
|
270
|
+
case 'status':
|
|
271
|
+
default:
|
|
272
|
+
await showStatus();
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
console.error('[Headless] Error:', error instanceof Error ? error.message : String(error));
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Run if executed directly
|
|
282
|
+
main().catch(console.error);
|
|
283
|
+
export { main, runWorker, runDaemon, runBenchmarks, showStatus };
|
|
284
|
+
//# sourceMappingURL=headless.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parent-death watchdog (#2234).
|
|
3
|
+
*
|
|
4
|
+
* `ruflo mcp start` runs as a double-forked grandchild of Claude Code (`npx -y
|
|
5
|
+
* ruflo … mcp start` → `npm exec …` → `node … mcp start`). When Claude Code
|
|
6
|
+
* exits, only the `npm exec` shim is terminated; the `node` server reparents to
|
|
7
|
+
* `launchd`/`init` (`ppid === 1`) and silently lingers — leaving ~50 MB and an
|
|
8
|
+
* open database handle per restart. Over a week this accumulates to ~20
|
|
9
|
+
* orphaned servers (~1 GB), and an arbitrary stale one can win the next stdio
|
|
10
|
+
* handshake, transparently serving superseded code.
|
|
11
|
+
*
|
|
12
|
+
* Cheap, robust fix: poll `process.ppid`. When it becomes 1 (and didn't start
|
|
13
|
+
* there), our original parent has exited — we're orphaned. Run the cleanup
|
|
14
|
+
* hook and exit cleanly.
|
|
15
|
+
*
|
|
16
|
+
* @module runtime/parent-death-watchdog
|
|
17
|
+
*/
|
|
18
|
+
export interface ParentDeathWatchdogOptions {
|
|
19
|
+
/** Poll interval in ms. Default 2000. */
|
|
20
|
+
intervalMs?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Cleanup hook fired when orphaning is detected. May be async. After it
|
|
23
|
+
* resolves (or throws), the process exits with code 0 (success) / 1 (error).
|
|
24
|
+
* Defaults to `process.exit(0)` directly.
|
|
25
|
+
*/
|
|
26
|
+
onOrphaned?: () => void | Promise<void>;
|
|
27
|
+
/** Override `process.ppid` getter (tests). */
|
|
28
|
+
ppidGetter?: () => number;
|
|
29
|
+
/** Override `process.exit` (tests). */
|
|
30
|
+
exit?: (code: number) => void;
|
|
31
|
+
}
|
|
32
|
+
export interface ParentDeathWatchdog {
|
|
33
|
+
stop(): void;
|
|
34
|
+
/** Manually trigger the orphan check (used by tests). */
|
|
35
|
+
checkOnce(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Install a parent-death watchdog. Safe to call once per process; calling
|
|
39
|
+
* twice replaces the previous interval.
|
|
40
|
+
*/
|
|
41
|
+
export declare function installParentDeathWatchdog(opts?: ParentDeathWatchdogOptions): ParentDeathWatchdog;
|
|
42
|
+
//# sourceMappingURL=parent-death-watchdog.d.ts.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parent-death watchdog (#2234).
|
|
3
|
+
*
|
|
4
|
+
* `ruflo mcp start` runs as a double-forked grandchild of Claude Code (`npx -y
|
|
5
|
+
* ruflo … mcp start` → `npm exec …` → `node … mcp start`). When Claude Code
|
|
6
|
+
* exits, only the `npm exec` shim is terminated; the `node` server reparents to
|
|
7
|
+
* `launchd`/`init` (`ppid === 1`) and silently lingers — leaving ~50 MB and an
|
|
8
|
+
* open database handle per restart. Over a week this accumulates to ~20
|
|
9
|
+
* orphaned servers (~1 GB), and an arbitrary stale one can win the next stdio
|
|
10
|
+
* handshake, transparently serving superseded code.
|
|
11
|
+
*
|
|
12
|
+
* Cheap, robust fix: poll `process.ppid`. When it becomes 1 (and didn't start
|
|
13
|
+
* there), our original parent has exited — we're orphaned. Run the cleanup
|
|
14
|
+
* hook and exit cleanly.
|
|
15
|
+
*
|
|
16
|
+
* @module runtime/parent-death-watchdog
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Install a parent-death watchdog. Safe to call once per process; calling
|
|
20
|
+
* twice replaces the previous interval.
|
|
21
|
+
*/
|
|
22
|
+
export function installParentDeathWatchdog(opts = {}) {
|
|
23
|
+
const intervalMs = opts.intervalMs ?? 2000;
|
|
24
|
+
const get = opts.ppidGetter ?? (() => process.ppid);
|
|
25
|
+
const exit = opts.exit ?? ((code) => process.exit(code));
|
|
26
|
+
const onOrphaned = opts.onOrphaned;
|
|
27
|
+
const initialPpid = get();
|
|
28
|
+
let triggered = false;
|
|
29
|
+
let timer;
|
|
30
|
+
const triggerOrphaned = async () => {
|
|
31
|
+
if (triggered)
|
|
32
|
+
return;
|
|
33
|
+
triggered = true;
|
|
34
|
+
if (timer) {
|
|
35
|
+
clearInterval(timer);
|
|
36
|
+
timer = undefined;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
if (onOrphaned)
|
|
40
|
+
await onOrphaned();
|
|
41
|
+
exit(0);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
exit(1);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const checkOnce = async () => {
|
|
48
|
+
// Only trigger when we *transition* to ppid=1; if we already started there
|
|
49
|
+
// (process launched directly under launchd/init) it isn't an orphan event.
|
|
50
|
+
const ppid = get();
|
|
51
|
+
if (ppid === 1 && initialPpid !== 1)
|
|
52
|
+
await triggerOrphaned();
|
|
53
|
+
};
|
|
54
|
+
timer = setInterval(() => {
|
|
55
|
+
void checkOnce();
|
|
56
|
+
}, intervalMs);
|
|
57
|
+
// Don't keep the event loop alive on the watchdog alone.
|
|
58
|
+
if (typeof timer.unref === 'function')
|
|
59
|
+
timer.unref();
|
|
60
|
+
return {
|
|
61
|
+
stop() {
|
|
62
|
+
if (timer) {
|
|
63
|
+
clearInterval(timer);
|
|
64
|
+
timer = undefined;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
checkOnce,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=parent-death-watchdog.js.map
|