@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,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ruflo auth` — Cognitum identity (ADR-306).
|
|
3
|
+
*
|
|
4
|
+
* `login` obtains OAuth tokens via the loopback PKCE flow (default,
|
|
5
|
+
* interactive desktop), the OOB manual-paste flow (`--no-browser`, or
|
|
6
|
+
* auto-detected headless environments), or `--token-stdin` (CI/enterprise
|
|
7
|
+
* automation — refuses interactively otherwise, per ADR-306). The refresh
|
|
8
|
+
* token goes to the OS keychain when reachable, or nowhere (session-only —
|
|
9
|
+
* a deliberate usability cost, not a bug) when it isn't. The access token
|
|
10
|
+
* itself is NEVER written to disk; see src/auth/session.ts.
|
|
11
|
+
*/
|
|
12
|
+
import { output } from '../output.js';
|
|
13
|
+
import { isCI, isInteractive, hasConsent, recordConsent, revokeConsent } from '../funnel/index.js';
|
|
14
|
+
import { browserLogin, manualLogin, tokenStdinLogin, isProbablyHeadless, LoginCancelledError, LoginDeniedError, StateMismatchError, } from '../auth/client.js';
|
|
15
|
+
import { loadSecurityOAuth, SecurityPackageMissingError } from '../auth/security-bridge.js';
|
|
16
|
+
import { setProfile, removeProfile, listProfiles, clearAllProfiles, DEFAULT_PROFILE } from '../auth/state.js';
|
|
17
|
+
import { setSessionToken, clearSessionToken } from '../auth/session.js';
|
|
18
|
+
import { INITIAL_SCOPE, domainForScope } from '../auth/scopes.js';
|
|
19
|
+
import { KEYCHAIN_SERVICE } from '../auth/constants.js';
|
|
20
|
+
import { getValidAccessToken, NotLoggedInError, SessionOnlyExpiredError } from '../auth/client.js';
|
|
21
|
+
import { removeInjectedToken } from '../proxy/token-bridge.js';
|
|
22
|
+
function nowIso() {
|
|
23
|
+
return new Date().toISOString();
|
|
24
|
+
}
|
|
25
|
+
async function persistLogin(profileName, tokens, method) {
|
|
26
|
+
const expiresInSec = tokens.expires_in ?? 0;
|
|
27
|
+
const expiresAtMs = Date.now() + expiresInSec * 1000;
|
|
28
|
+
setSessionToken(profileName, tokens.access_token, expiresAtMs);
|
|
29
|
+
let keychainRef = null;
|
|
30
|
+
if (tokens.refresh_token) {
|
|
31
|
+
const sec = await loadSecurityOAuth();
|
|
32
|
+
const keychain = await sec.createKeychainAdapter();
|
|
33
|
+
if (await keychain.isAvailable()) {
|
|
34
|
+
await keychain.setSecret(KEYCHAIN_SERVICE, profileName, tokens.refresh_token);
|
|
35
|
+
keychainRef = profileName;
|
|
36
|
+
}
|
|
37
|
+
// else: session-only — the refresh token is simply not persisted anywhere.
|
|
38
|
+
}
|
|
39
|
+
const state = {
|
|
40
|
+
accountId: tokens.account_email ?? 'unknown',
|
|
41
|
+
scopes: [INITIAL_SCOPE],
|
|
42
|
+
accessTokenExpiresAt: new Date(expiresAtMs).toISOString(),
|
|
43
|
+
keychainRef,
|
|
44
|
+
profile: profileName,
|
|
45
|
+
loginMethod: method,
|
|
46
|
+
linkedAt: nowIso(),
|
|
47
|
+
};
|
|
48
|
+
setProfile(profileName, state);
|
|
49
|
+
recordConsent('account', true, 'auth-login');
|
|
50
|
+
return state;
|
|
51
|
+
}
|
|
52
|
+
function refuseNonInteractive(hasTokenStdin) {
|
|
53
|
+
if (hasTokenStdin)
|
|
54
|
+
return null;
|
|
55
|
+
if (isInteractive() && !isCI())
|
|
56
|
+
return null;
|
|
57
|
+
// The CLI harness only acts on exitCode — it never auto-prints
|
|
58
|
+
// CommandResult.message, so this path must print for itself.
|
|
59
|
+
const message = 'ruflo auth login refuses to run interactively in a non-TTY/CI environment. ' +
|
|
60
|
+
'Use --token-stdin for automation (reads {"access_token",...} JSON from stdin).';
|
|
61
|
+
output.printError(message);
|
|
62
|
+
return { success: false, message, exitCode: 1 };
|
|
63
|
+
}
|
|
64
|
+
const loginCommand = {
|
|
65
|
+
name: 'login',
|
|
66
|
+
description: 'Sign in to Cognitum (PKCE browser flow, OOB manual flow, or --token-stdin)',
|
|
67
|
+
options: [
|
|
68
|
+
{ name: 'profile', description: 'Named profile to store this login under', type: 'string', default: DEFAULT_PROFILE },
|
|
69
|
+
{ name: 'no-browser', description: 'Force the headless OOB copy-paste flow', type: 'boolean', default: false },
|
|
70
|
+
{ name: 'token-stdin', description: 'Read a pre-obtained token as JSON from stdin (CI/automation)', type: 'boolean', default: false },
|
|
71
|
+
],
|
|
72
|
+
action: async (ctx) => {
|
|
73
|
+
const profileName = typeof ctx.flags.profile === 'string' ? ctx.flags.profile : DEFAULT_PROFILE;
|
|
74
|
+
// Parser camelCases kebab-case flag names — read via tokenStdin/noBrowser,
|
|
75
|
+
// not ['token-stdin']/['no-browser'] (see doctor.ts's fixHandles comment).
|
|
76
|
+
const tokenStdin = Boolean(ctx.flags.tokenStdin ?? ctx.flags['token-stdin']);
|
|
77
|
+
const noBrowser = Boolean(ctx.flags.noBrowser ?? ctx.flags['no-browser']);
|
|
78
|
+
const refusal = refuseNonInteractive(tokenStdin);
|
|
79
|
+
if (refusal)
|
|
80
|
+
return refusal;
|
|
81
|
+
try {
|
|
82
|
+
const result = tokenStdin
|
|
83
|
+
? await tokenStdinLogin()
|
|
84
|
+
: noBrowser || isProbablyHeadless()
|
|
85
|
+
? await manualLogin((line) => output.writeln(line))
|
|
86
|
+
: await browserLogin((line) => output.writeln(line));
|
|
87
|
+
const state = await persistLogin(profileName, result.tokens, result.method);
|
|
88
|
+
output.printSuccess(`Logged in as ${state.accountId} (profile: ${profileName})`);
|
|
89
|
+
output.writeln(state.keychainRef
|
|
90
|
+
? ' refresh token: stored in the OS keychain'
|
|
91
|
+
: ' refresh token: NOT stored (no keychain backend reachable) — session-only, you will need to log in again next time');
|
|
92
|
+
return { success: true, data: { profile: profileName, accountId: state.accountId } };
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
if (e instanceof SecurityPackageMissingError || e instanceof LoginCancelledError || e instanceof LoginDeniedError || e instanceof StateMismatchError) {
|
|
96
|
+
output.printError(e.message);
|
|
97
|
+
return { success: false, message: e.message, exitCode: 1 };
|
|
98
|
+
}
|
|
99
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
100
|
+
output.printError('Sign-in failed', message);
|
|
101
|
+
return { success: false, message, exitCode: 1 };
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const logoutCommand = {
|
|
106
|
+
name: 'logout',
|
|
107
|
+
description: 'Sign out — clears the local session, keychain entry, and account consent',
|
|
108
|
+
options: [
|
|
109
|
+
{ name: 'profile', description: 'Profile to log out of', type: 'string', default: DEFAULT_PROFILE },
|
|
110
|
+
{ name: 'all', description: 'Log out of every profile', type: 'boolean', default: false },
|
|
111
|
+
],
|
|
112
|
+
action: async (ctx) => {
|
|
113
|
+
removeInjectedToken();
|
|
114
|
+
const all = ctx.flags.all === true;
|
|
115
|
+
const profileName = typeof ctx.flags.profile === 'string' ? ctx.flags.profile : DEFAULT_PROFILE;
|
|
116
|
+
const { profiles } = listProfiles();
|
|
117
|
+
if (profiles.length === 0) {
|
|
118
|
+
output.writeln('Nothing to log out of — no profile is signed in.');
|
|
119
|
+
return { success: true, data: { hadSession: false } };
|
|
120
|
+
}
|
|
121
|
+
const toClear = all ? profiles : profiles.filter((p) => p.profile === profileName);
|
|
122
|
+
if (toClear.length === 0) {
|
|
123
|
+
output.writeln(`No such profile: ${profileName}`);
|
|
124
|
+
return { success: false, exitCode: 1 };
|
|
125
|
+
}
|
|
126
|
+
let sec;
|
|
127
|
+
try {
|
|
128
|
+
sec = await loadSecurityOAuth();
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
sec = null; // best-effort keychain cleanup — logout must still succeed locally
|
|
132
|
+
}
|
|
133
|
+
for (const p of toClear) {
|
|
134
|
+
clearSessionToken(p.profile);
|
|
135
|
+
if (p.keychainRef && sec) {
|
|
136
|
+
const keychain = await sec.createKeychainAdapter();
|
|
137
|
+
await keychain.deleteSecret(KEYCHAIN_SERVICE, p.keychainRef).catch(() => { });
|
|
138
|
+
}
|
|
139
|
+
removeProfile(p.profile);
|
|
140
|
+
}
|
|
141
|
+
if (all) {
|
|
142
|
+
clearAllProfiles();
|
|
143
|
+
revokeConsent('account', 'auth-logout');
|
|
144
|
+
}
|
|
145
|
+
else if (listProfiles().profiles.length === 0) {
|
|
146
|
+
revokeConsent('account', 'auth-logout');
|
|
147
|
+
}
|
|
148
|
+
output.printSuccess(all ? 'Logged out of all profiles.' : `Logged out of profile "${profileName}".`);
|
|
149
|
+
output.writeln(' Note: this only forgets the local copy. Cognitum does not currently expose a token ' +
|
|
150
|
+
'revocation endpoint for this flow, matching the same known limitation meta-proxy documents ' +
|
|
151
|
+
'for its own logout — revoke server-side access from the Cognitum dashboard if needed.');
|
|
152
|
+
return { success: true, data: { hadSession: true } };
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
const statusCommand = {
|
|
156
|
+
name: 'status',
|
|
157
|
+
description: 'Show signed-in profile(s), scopes, and expiry',
|
|
158
|
+
options: [
|
|
159
|
+
{ name: 'profile', description: 'Show only this profile', type: 'string' },
|
|
160
|
+
{ name: 'json', description: 'Machine-readable output', type: 'boolean', default: false },
|
|
161
|
+
{
|
|
162
|
+
name: 'check',
|
|
163
|
+
description: 'Validate credentials now; silently refresh from the OS keychain when needed',
|
|
164
|
+
type: 'boolean',
|
|
165
|
+
default: false,
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
action: async (ctx) => {
|
|
169
|
+
const { defaultProfile, profiles } = listProfiles();
|
|
170
|
+
const filterName = typeof ctx.flags.profile === 'string' ? ctx.flags.profile : undefined;
|
|
171
|
+
const shown = filterName ? profiles.filter((p) => p.profile === filterName) : profiles;
|
|
172
|
+
if (shown.length === 0) {
|
|
173
|
+
const message = filterName ? `No such profile: ${filterName}` : 'Not logged in. Run: ruflo auth login';
|
|
174
|
+
if (ctx.flags.json) {
|
|
175
|
+
output.printJson({ profiles: [] });
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
output.writeln(message);
|
|
179
|
+
}
|
|
180
|
+
return { success: true, data: { profiles: [] } };
|
|
181
|
+
}
|
|
182
|
+
const withConsistency = shown.map((p) => {
|
|
183
|
+
const missingConsent = p.scopes.filter((scope) => {
|
|
184
|
+
const domain = domainForScope(scope);
|
|
185
|
+
return domain !== undefined && !hasConsent(domain);
|
|
186
|
+
});
|
|
187
|
+
return { ...p, isDefault: p.profile === defaultProfile, missingConsent };
|
|
188
|
+
});
|
|
189
|
+
const checked = await Promise.all(withConsistency.map(async (p) => {
|
|
190
|
+
if (!ctx.flags.check)
|
|
191
|
+
return { ...p, credentialStatus: 'not-checked' };
|
|
192
|
+
try {
|
|
193
|
+
await getValidAccessToken(p.profile);
|
|
194
|
+
return { ...p, credentialStatus: 'valid' };
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
198
|
+
return {
|
|
199
|
+
...p,
|
|
200
|
+
credentialStatus: e instanceof NotLoggedInError || e instanceof SessionOnlyExpiredError
|
|
201
|
+
? 'login-required'
|
|
202
|
+
: 'unavailable',
|
|
203
|
+
credentialError: message,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}));
|
|
207
|
+
if (ctx.flags.json) {
|
|
208
|
+
output.printJson({ profiles: checked });
|
|
209
|
+
return { success: true, data: { profiles: checked } };
|
|
210
|
+
}
|
|
211
|
+
for (const p of checked) {
|
|
212
|
+
output.writeln(`Profile: ${p.profile}${p.isDefault ? ' (default)' : ''}`);
|
|
213
|
+
output.writeln(` account: ${p.accountId}`);
|
|
214
|
+
output.writeln(` scopes: ${p.scopes.join(', ')}`);
|
|
215
|
+
output.writeln(` access token expires: ${p.accessTokenExpiresAt}`);
|
|
216
|
+
output.writeln(` refresh token: ${p.keychainRef ? 'in OS keychain' : 'session-only (not persisted)'}`);
|
|
217
|
+
if (ctx.flags.check) {
|
|
218
|
+
output.writeln(` credential check: ${p.credentialStatus}`);
|
|
219
|
+
if ('credentialError' in p && p.credentialError)
|
|
220
|
+
output.writeln(` ${p.credentialError}`);
|
|
221
|
+
}
|
|
222
|
+
if (p.missingConsent.length > 0) {
|
|
223
|
+
output.printError(` scope-vs-consent mismatch: ${p.missingConsent.join(', ')} granted without a matching consent receipt`);
|
|
224
|
+
}
|
|
225
|
+
output.writeln('');
|
|
226
|
+
}
|
|
227
|
+
return { success: true, data: { profiles: checked } };
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
export const authCommand = {
|
|
231
|
+
name: 'auth',
|
|
232
|
+
description: 'Cognitum identity — login, logout, status (ADR-306)',
|
|
233
|
+
subcommands: [loginCommand, logoutCommand, statusCommand],
|
|
234
|
+
examples: [
|
|
235
|
+
{ command: 'ruflo auth login', description: 'Sign in via the browser PKCE flow' },
|
|
236
|
+
{ command: 'ruflo auth login --no-browser', description: 'Sign in via the headless OOB copy-paste flow' },
|
|
237
|
+
{ command: 'ruflo auth status', description: 'Show signed-in profile(s)' },
|
|
238
|
+
{ command: 'ruflo auth status --check', description: 'Validate or silently refresh credentials now' },
|
|
239
|
+
{ command: 'ruflo auth logout', description: 'Sign out of the default profile' },
|
|
240
|
+
],
|
|
241
|
+
action: statusCommand.action,
|
|
242
|
+
};
|
|
243
|
+
export default authCommand;
|
|
244
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Autopilot Command
|
|
3
|
+
* Persistent swarm completion — keeps agents working until ALL tasks are done.
|
|
4
|
+
*
|
|
5
|
+
* ADR-072: Autopilot Integration
|
|
6
|
+
*/
|
|
7
|
+
import type { Command } from '../types.js';
|
|
8
|
+
export declare function autopilotCheck(): Promise<{
|
|
9
|
+
allowStop: boolean;
|
|
10
|
+
reason: string;
|
|
11
|
+
continueWith?: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const autopilotCommand: Command;
|
|
14
|
+
export default autopilotCommand;
|
|
15
|
+
//# sourceMappingURL=autopilot.d.ts.map
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Autopilot Command
|
|
3
|
+
* Persistent swarm completion — keeps agents working until ALL tasks are done.
|
|
4
|
+
*
|
|
5
|
+
* ADR-072: Autopilot Integration
|
|
6
|
+
*/
|
|
7
|
+
import { output } from '../output.js';
|
|
8
|
+
import { loadState, saveState, appendLog, loadLog, discoverTasks, getProgress, calculateReward, tryLoadLearning, validateNumber, validateTaskSources, LOG_FILE, } from '../autopilot-state.js';
|
|
9
|
+
import { getCheckpointGate, CheckpointGate } from '../services/checkpoint-gate.js';
|
|
10
|
+
/**
|
|
11
|
+
* Opt-in checkpoint/rollback gate for the autopilot tick (agenticow step 3).
|
|
12
|
+
*
|
|
13
|
+
* The autopilot loop's memory mutation happens OUT OF PROCESS — a re-engaged
|
|
14
|
+
* tick returns a continuation prompt, and the spawned agent (plus agentic-flow
|
|
15
|
+
* learning) mutates `.rvf` memory. So there is no in-process fn to wrap with
|
|
16
|
+
* CheckpointGate.guard() here; instead we bracket the loop across ticks:
|
|
17
|
+
* - checkpoint the configured `.rvf` right before handing off a risky tick
|
|
18
|
+
* (re-engage), and
|
|
19
|
+
* - roll it back when the loop's own regression signal fires (stall auto-disable).
|
|
20
|
+
*
|
|
21
|
+
* Entirely opt-in: it does nothing unless CLAUDE_FLOW_AUTOPILOT_CHECKPOINT_MEM
|
|
22
|
+
* points at an `.rvf` file the loop mutates, agenticow is installed, and the
|
|
23
|
+
* CLAUDE_FLOW_AGENTICOW_DISABLE kill switch is unset. Every call is non-fatal —
|
|
24
|
+
* a checkpoint/rollback failure never breaks the loop.
|
|
25
|
+
*/
|
|
26
|
+
async function checkpointTick(label) {
|
|
27
|
+
const memPath = CheckpointGate.configuredMemPath();
|
|
28
|
+
if (!memPath)
|
|
29
|
+
return;
|
|
30
|
+
try {
|
|
31
|
+
const r = await getCheckpointGate().checkpoint(memPath, label);
|
|
32
|
+
if (r.ok)
|
|
33
|
+
appendLog({ ts: Date.now(), event: 'checkpoint', label, memPath });
|
|
34
|
+
}
|
|
35
|
+
catch { /* non-fatal: memory branching is best-effort */ }
|
|
36
|
+
}
|
|
37
|
+
async function rollbackTick(reason) {
|
|
38
|
+
const memPath = CheckpointGate.configuredMemPath();
|
|
39
|
+
if (!memPath)
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
const r = await getCheckpointGate().rollback(memPath);
|
|
43
|
+
if (r.ok)
|
|
44
|
+
appendLog({ ts: Date.now(), event: 'rollback', reason, memPath });
|
|
45
|
+
}
|
|
46
|
+
catch { /* non-fatal */ }
|
|
47
|
+
}
|
|
48
|
+
// ── Check Handler (for Stop hook) ─────────────────────────────
|
|
49
|
+
export async function autopilotCheck() {
|
|
50
|
+
const state = loadState();
|
|
51
|
+
if (!state.enabled) {
|
|
52
|
+
return { allowStop: true, reason: 'Autopilot disabled' };
|
|
53
|
+
}
|
|
54
|
+
// Safety: max iterations
|
|
55
|
+
if (state.iterations >= state.maxIterations) {
|
|
56
|
+
state.enabled = false;
|
|
57
|
+
saveState(state);
|
|
58
|
+
appendLog({ ts: Date.now(), event: 'max-iterations-reached', iterations: state.iterations });
|
|
59
|
+
return { allowStop: true, reason: `Max iterations (${state.maxIterations}) reached` };
|
|
60
|
+
}
|
|
61
|
+
// Safety: timeout
|
|
62
|
+
const elapsed = Date.now() - state.startTime;
|
|
63
|
+
if (elapsed > state.timeoutMinutes * 60000) {
|
|
64
|
+
state.enabled = false;
|
|
65
|
+
saveState(state);
|
|
66
|
+
appendLog({ ts: Date.now(), event: 'timeout-reached', elapsed: Math.round(elapsed / 60000) });
|
|
67
|
+
return { allowStop: true, reason: `Timeout (${state.timeoutMinutes} min) reached` };
|
|
68
|
+
}
|
|
69
|
+
// Discover tasks
|
|
70
|
+
const tasks = discoverTasks(state.taskSources);
|
|
71
|
+
if (tasks.length === 0) {
|
|
72
|
+
return { allowStop: true, reason: 'No tasks discovered from any source' };
|
|
73
|
+
}
|
|
74
|
+
const progress = getProgress(tasks);
|
|
75
|
+
if (progress.incomplete.length === 0) {
|
|
76
|
+
const reward = calculateReward(state.iterations, elapsed);
|
|
77
|
+
state.enabled = false;
|
|
78
|
+
saveState(state);
|
|
79
|
+
appendLog({ ts: Date.now(), event: 'all-tasks-complete', total: progress.total, iterations: state.iterations, durationMs: elapsed, reward });
|
|
80
|
+
return { allowStop: true, reason: `All ${progress.total} tasks complete (${state.iterations} iterations, reward: ${reward})` };
|
|
81
|
+
}
|
|
82
|
+
// Stall detection
|
|
83
|
+
const recentHistory = state.history.slice(-5);
|
|
84
|
+
const isStalled = recentHistory.length >= 5 && recentHistory.every(h => h.completed === progress.completed);
|
|
85
|
+
if (isStalled && state.history.length >= 10) {
|
|
86
|
+
state.enabled = false;
|
|
87
|
+
saveState(state);
|
|
88
|
+
appendLog({ ts: Date.now(), event: 'stall-auto-disable', iterations: state.iterations, completed: progress.completed });
|
|
89
|
+
// Regression signal: the loop stalled. Roll `.rvf` memory back to the last
|
|
90
|
+
// good per-tick checkpoint (opt-in via CLAUDE_FLOW_AUTOPILOT_CHECKPOINT_MEM).
|
|
91
|
+
await rollbackTick('stall-auto-disable');
|
|
92
|
+
return { allowStop: true, reason: `Stalled: no progress in 10 iterations (${progress.completed}/${progress.total} complete)` };
|
|
93
|
+
}
|
|
94
|
+
// Re-engage
|
|
95
|
+
state.iterations++;
|
|
96
|
+
state.lastCheck = Date.now();
|
|
97
|
+
state.history.push({ ts: Date.now(), iteration: state.iterations, completed: progress.completed, total: progress.total });
|
|
98
|
+
saveState(state);
|
|
99
|
+
// Checkpoint `.rvf` memory before the risky tick runs (opt-in). The next
|
|
100
|
+
// check() rolls back to here if this tick regresses (stall detection above).
|
|
101
|
+
await checkpointTick(`autopilot-iter-${state.iterations}`);
|
|
102
|
+
const stallWarning = isStalled
|
|
103
|
+
? '\nWARNING: No progress in 5 iterations. Consider breaking tasks into smaller subtasks or trying a different approach.'
|
|
104
|
+
: '';
|
|
105
|
+
const taskList = progress.incomplete.slice(0, 5).map(t => `- ${t.subject} (${t.status})`).join('\n');
|
|
106
|
+
const moreCount = progress.incomplete.length > 5 ? `\n... and ${progress.incomplete.length - 5} more` : '';
|
|
107
|
+
const continuePrompt = [
|
|
108
|
+
`AUTOPILOT: ${progress.completed}/${progress.total} tasks complete (${progress.percent}%).`,
|
|
109
|
+
`Iteration ${state.iterations}/${state.maxIterations}.`,
|
|
110
|
+
`Remaining tasks:\n${taskList}${moreCount}`,
|
|
111
|
+
stallWarning,
|
|
112
|
+
`Continue working on the remaining tasks. Do not stop until all are complete.`,
|
|
113
|
+
].join('\n');
|
|
114
|
+
appendLog({ ts: Date.now(), event: 're-engaging', iteration: state.iterations, completed: progress.completed, remaining: progress.incomplete.length });
|
|
115
|
+
return { allowStop: false, reason: `${progress.incomplete.length}/${progress.total} tasks remaining (iteration ${state.iterations}/${state.maxIterations})`, continueWith: continuePrompt };
|
|
116
|
+
}
|
|
117
|
+
// ── Subcommands ───────────────────────────────────────────────
|
|
118
|
+
const statusCommand = {
|
|
119
|
+
name: 'status',
|
|
120
|
+
description: 'Show autopilot state, iterations, and task progress',
|
|
121
|
+
options: [{ name: 'json', type: 'boolean', description: 'Output as JSON' }],
|
|
122
|
+
action: async (ctx) => {
|
|
123
|
+
const state = loadState();
|
|
124
|
+
const tasks = discoverTasks(state.taskSources);
|
|
125
|
+
const progress = getProgress(tasks);
|
|
126
|
+
const elapsed = state.enabled ? Date.now() - state.startTime : 0;
|
|
127
|
+
if (ctx.flags?.json) {
|
|
128
|
+
output.printJson({
|
|
129
|
+
enabled: state.enabled, sessionId: state.sessionId, iterations: state.iterations,
|
|
130
|
+
maxIterations: state.maxIterations, timeoutMinutes: state.timeoutMinutes, elapsedMs: elapsed,
|
|
131
|
+
tasks: { completed: progress.completed, total: progress.total, percent: progress.percent },
|
|
132
|
+
taskSources: state.taskSources,
|
|
133
|
+
});
|
|
134
|
+
return { success: true };
|
|
135
|
+
}
|
|
136
|
+
output.writeln(`Autopilot: ${state.enabled ? '✓ ENABLED' : '✗ DISABLED'}`);
|
|
137
|
+
output.writeln(`Session: ${state.sessionId.slice(0, 8)}...`);
|
|
138
|
+
output.writeln(`Iterations: ${state.iterations}/${state.maxIterations}`);
|
|
139
|
+
output.writeln(`Timeout: ${state.timeoutMinutes} min`);
|
|
140
|
+
output.writeln(`Elapsed: ${Math.round(elapsed / 60000)} min`);
|
|
141
|
+
output.writeln(`Tasks: ${progress.completed}/${progress.total} (${progress.percent}%)`);
|
|
142
|
+
output.writeln(`Sources: ${state.taskSources.join(', ')}`);
|
|
143
|
+
if (progress.incomplete.length > 0 && progress.incomplete.length <= 10) {
|
|
144
|
+
output.writeln('\nRemaining tasks:');
|
|
145
|
+
for (const t of progress.incomplete) {
|
|
146
|
+
output.writeln(` - [${t.source}] ${t.subject} (${t.status})`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return { success: true };
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
const enableCommand = {
|
|
153
|
+
name: 'enable',
|
|
154
|
+
description: 'Enable persistent completion',
|
|
155
|
+
action: async () => {
|
|
156
|
+
const state = loadState();
|
|
157
|
+
state.enabled = true;
|
|
158
|
+
state.startTime = Date.now();
|
|
159
|
+
state.iterations = 0;
|
|
160
|
+
saveState(state);
|
|
161
|
+
appendLog({ ts: Date.now(), event: 'enabled', sessionId: state.sessionId, maxIterations: state.maxIterations });
|
|
162
|
+
output.writeln(output.success(`Autopilot enabled (max ${state.maxIterations} iterations, ${state.timeoutMinutes} min timeout)`));
|
|
163
|
+
return { success: true };
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
const disableCommand = {
|
|
167
|
+
name: 'disable',
|
|
168
|
+
description: 'Disable re-engagement loop',
|
|
169
|
+
action: async () => {
|
|
170
|
+
const state = loadState();
|
|
171
|
+
const wasEnabled = state.enabled;
|
|
172
|
+
state.enabled = false;
|
|
173
|
+
saveState(state);
|
|
174
|
+
if (wasEnabled)
|
|
175
|
+
appendLog({ ts: Date.now(), event: 'disabled', iterations: state.iterations });
|
|
176
|
+
output.writeln('Autopilot disabled');
|
|
177
|
+
return { success: true };
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
const configCommand = {
|
|
181
|
+
name: 'config',
|
|
182
|
+
description: 'Configure max iterations, timeout, and task sources',
|
|
183
|
+
options: [
|
|
184
|
+
{ name: 'max-iterations', type: 'string', description: 'Max re-engagement iterations (1-1000)' },
|
|
185
|
+
{ name: 'timeout', type: 'string', description: 'Timeout in minutes (1-1440)' },
|
|
186
|
+
{ name: 'task-sources', type: 'string', description: 'Comma-separated task sources' },
|
|
187
|
+
],
|
|
188
|
+
action: async (ctx) => {
|
|
189
|
+
const state = loadState();
|
|
190
|
+
const maxIter = ctx.flags?.['max-iterations'];
|
|
191
|
+
const timeout = ctx.flags?.timeout;
|
|
192
|
+
const sources = ctx.flags?.['task-sources'];
|
|
193
|
+
if (maxIter)
|
|
194
|
+
state.maxIterations = validateNumber(maxIter, 1, 1000, state.maxIterations);
|
|
195
|
+
if (timeout)
|
|
196
|
+
state.timeoutMinutes = validateNumber(timeout, 1, 1440, state.timeoutMinutes);
|
|
197
|
+
if (sources)
|
|
198
|
+
state.taskSources = validateTaskSources(sources.split(',').map(s => s.trim()).filter(Boolean));
|
|
199
|
+
saveState(state);
|
|
200
|
+
appendLog({ ts: Date.now(), event: 'config-updated', maxIterations: state.maxIterations, timeoutMinutes: state.timeoutMinutes, taskSources: state.taskSources });
|
|
201
|
+
output.writeln(`Config updated: maxIterations=${state.maxIterations}, timeout=${state.timeoutMinutes}min, sources=${state.taskSources.join(',')}`);
|
|
202
|
+
return { success: true };
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
const resetCommand = {
|
|
206
|
+
name: 'reset',
|
|
207
|
+
description: 'Reset iteration counter and timer',
|
|
208
|
+
action: async () => {
|
|
209
|
+
const state = loadState();
|
|
210
|
+
state.iterations = 0;
|
|
211
|
+
state.startTime = Date.now();
|
|
212
|
+
state.history = [];
|
|
213
|
+
state.lastCheck = null;
|
|
214
|
+
saveState(state);
|
|
215
|
+
appendLog({ ts: Date.now(), event: 'reset' });
|
|
216
|
+
output.writeln('Autopilot state reset (iterations=0, timer restarted)');
|
|
217
|
+
return { success: true };
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
const logCommand = {
|
|
221
|
+
name: 'log',
|
|
222
|
+
description: 'View autopilot event log',
|
|
223
|
+
options: [
|
|
224
|
+
{ name: 'last', type: 'string', description: 'Show last N entries' },
|
|
225
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON' },
|
|
226
|
+
{ name: 'clear', type: 'boolean', description: 'Clear the log' },
|
|
227
|
+
],
|
|
228
|
+
action: async (ctx) => {
|
|
229
|
+
if (ctx.flags?.clear) {
|
|
230
|
+
const { writeFileSync } = await import('node:fs');
|
|
231
|
+
const { resolve } = await import('node:path');
|
|
232
|
+
try {
|
|
233
|
+
writeFileSync(resolve(LOG_FILE), '[]');
|
|
234
|
+
}
|
|
235
|
+
catch { /* ignore */ }
|
|
236
|
+
output.writeln('Autopilot log cleared');
|
|
237
|
+
return { success: true };
|
|
238
|
+
}
|
|
239
|
+
const log = loadLog();
|
|
240
|
+
const lastRaw = ctx.flags?.last;
|
|
241
|
+
const last = lastRaw ? validateNumber(lastRaw, 1, 10000, 50) : undefined;
|
|
242
|
+
const entries = last ? log.slice(-last) : log;
|
|
243
|
+
if (ctx.flags?.json) {
|
|
244
|
+
output.printJson(entries);
|
|
245
|
+
return { success: true };
|
|
246
|
+
}
|
|
247
|
+
if (entries.length === 0) {
|
|
248
|
+
output.writeln('No autopilot events logged');
|
|
249
|
+
return { success: true };
|
|
250
|
+
}
|
|
251
|
+
for (const e of entries) {
|
|
252
|
+
const time = new Date(e.ts).toISOString().slice(11, 19);
|
|
253
|
+
const details = Object.entries(e).filter(([k]) => k !== 'ts' && k !== 'event').map(([k, v]) => `${k}=${v}`).join(' ');
|
|
254
|
+
output.writeln(`[${time}] ${e.event} ${details}`);
|
|
255
|
+
}
|
|
256
|
+
return { success: true };
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
const learnCommand = {
|
|
260
|
+
name: 'learn',
|
|
261
|
+
description: 'Discover success patterns from past completions',
|
|
262
|
+
options: [{ name: 'json', type: 'boolean', description: 'Output as JSON' }],
|
|
263
|
+
action: async (ctx) => {
|
|
264
|
+
const learning = await tryLoadLearning();
|
|
265
|
+
if (!learning) {
|
|
266
|
+
output.writeln('Learning not available (AgentDB not initialized). Autopilot still works for task completion tracking.');
|
|
267
|
+
return { success: true };
|
|
268
|
+
}
|
|
269
|
+
const metrics = await learning.getMetrics();
|
|
270
|
+
const patterns = await learning.discoverSuccessPatterns();
|
|
271
|
+
if (ctx.flags?.json) {
|
|
272
|
+
output.printJson({ metrics, patterns });
|
|
273
|
+
return { success: true };
|
|
274
|
+
}
|
|
275
|
+
output.writeln(`Episodes: ${metrics.episodes}`);
|
|
276
|
+
output.writeln(`Patterns: ${metrics.patterns}`);
|
|
277
|
+
output.writeln(`Trajectories: ${metrics.trajectories}`);
|
|
278
|
+
if (patterns.length > 0) {
|
|
279
|
+
output.writeln('\nDiscovered patterns:');
|
|
280
|
+
for (const p of patterns) {
|
|
281
|
+
output.writeln(` - ${p.pattern} (freq: ${p.frequency}, reward: ${p.avgReward.toFixed(2)})`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return { success: true };
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
const historyCommand = {
|
|
288
|
+
name: 'history',
|
|
289
|
+
description: 'Search past completion episodes',
|
|
290
|
+
options: [
|
|
291
|
+
{ name: 'query', type: 'string', description: 'Search query', required: true },
|
|
292
|
+
{ name: 'limit', type: 'string', description: 'Max results (default 10)' },
|
|
293
|
+
{ name: 'json', type: 'boolean', description: 'Output as JSON' },
|
|
294
|
+
],
|
|
295
|
+
action: async (ctx) => {
|
|
296
|
+
const query = (ctx.flags?.query || '');
|
|
297
|
+
const limit = validateNumber(ctx.flags?.limit, 1, 100, 10);
|
|
298
|
+
if (!query) {
|
|
299
|
+
output.writeln('Usage: autopilot history --query "search terms" [--limit N]');
|
|
300
|
+
return { success: false, message: 'Missing --query' };
|
|
301
|
+
}
|
|
302
|
+
const learning = await tryLoadLearning();
|
|
303
|
+
if (!learning) {
|
|
304
|
+
output.writeln('Learning not available. No history to search.');
|
|
305
|
+
return { success: true };
|
|
306
|
+
}
|
|
307
|
+
const results = await learning.recallSimilarTasks(query, limit);
|
|
308
|
+
if (ctx.flags?.json) {
|
|
309
|
+
output.printJson(results);
|
|
310
|
+
}
|
|
311
|
+
else if (results.length === 0) {
|
|
312
|
+
output.writeln(`No matching episodes for: "${query}"`);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
output.printJson(results);
|
|
316
|
+
}
|
|
317
|
+
return { success: true };
|
|
318
|
+
},
|
|
319
|
+
};
|
|
320
|
+
const predictCommand = {
|
|
321
|
+
name: 'predict',
|
|
322
|
+
description: 'Predict optimal next action',
|
|
323
|
+
options: [{ name: 'json', type: 'boolean', description: 'Output as JSON' }],
|
|
324
|
+
action: async (ctx) => {
|
|
325
|
+
const state = loadState();
|
|
326
|
+
const learning = await tryLoadLearning();
|
|
327
|
+
if (learning) {
|
|
328
|
+
const prediction = await learning.predictNextAction(state);
|
|
329
|
+
if (ctx.flags?.json) {
|
|
330
|
+
output.printJson(prediction);
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
output.writeln(`Action: ${prediction?.action || 'unknown'}`);
|
|
334
|
+
output.writeln(`Confidence: ${prediction?.confidence || 0}`);
|
|
335
|
+
if (prediction?.alternatives && prediction.alternatives.length > 0)
|
|
336
|
+
output.writeln(`Alternatives: ${prediction.alternatives.join(', ')}`);
|
|
337
|
+
}
|
|
338
|
+
return { success: true };
|
|
339
|
+
}
|
|
340
|
+
// Heuristic fallback
|
|
341
|
+
const tasks = discoverTasks(state.taskSources);
|
|
342
|
+
const progress = getProgress(tasks);
|
|
343
|
+
if (progress.incomplete.length === 0) {
|
|
344
|
+
output.writeln('All tasks complete. No action needed.');
|
|
345
|
+
return { success: true };
|
|
346
|
+
}
|
|
347
|
+
const next = progress.incomplete[0];
|
|
348
|
+
const result = { action: `Work on: ${next.subject}`, confidence: 0.5, remaining: progress.incomplete.length };
|
|
349
|
+
if (ctx.flags?.json) {
|
|
350
|
+
output.printJson(result);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
output.writeln(`Action: ${result.action}`);
|
|
354
|
+
output.writeln(`Confidence: ${result.confidence} (heuristic — learning not available)`);
|
|
355
|
+
output.writeln(`Remaining: ${result.remaining} tasks`);
|
|
356
|
+
}
|
|
357
|
+
return { success: true };
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
const checkCommand = {
|
|
361
|
+
name: 'check',
|
|
362
|
+
description: 'Run completion check (used by stop hook)',
|
|
363
|
+
options: [{ name: 'json', type: 'boolean', description: 'Output as JSON' }],
|
|
364
|
+
action: async (ctx) => {
|
|
365
|
+
const result = await autopilotCheck();
|
|
366
|
+
if (ctx.flags?.json) {
|
|
367
|
+
output.printJson(result);
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
output.writeln(`${result.allowStop ? 'ALLOW STOP' : 'CONTINUE'}: ${result.reason}`);
|
|
371
|
+
}
|
|
372
|
+
return { success: true };
|
|
373
|
+
},
|
|
374
|
+
};
|
|
375
|
+
// ── Main Command ──────────────────────────────────────────────
|
|
376
|
+
export const autopilotCommand = {
|
|
377
|
+
name: 'autopilot',
|
|
378
|
+
description: 'Persistent swarm completion — keeps agents working until ALL tasks are done',
|
|
379
|
+
aliases: ['ap'],
|
|
380
|
+
subcommands: [statusCommand, enableCommand, disableCommand, configCommand, resetCommand, logCommand, learnCommand, historyCommand, predictCommand, checkCommand],
|
|
381
|
+
examples: [
|
|
382
|
+
{ command: 'claude-flow autopilot status', description: 'Show current state and progress' },
|
|
383
|
+
{ command: 'claude-flow autopilot enable', description: 'Enable persistent completion' },
|
|
384
|
+
{ command: 'claude-flow autopilot config --max-iterations 100 --timeout 180', description: 'Configure limits' },
|
|
385
|
+
{ command: 'claude-flow autopilot predict', description: 'Get recommended next action' },
|
|
386
|
+
],
|
|
387
|
+
action: async () => {
|
|
388
|
+
output.writeln(output.bold('Autopilot — Persistent Swarm Completion'));
|
|
389
|
+
output.writeln(output.dim('Keeps agents working until ALL tasks are done'));
|
|
390
|
+
output.writeln();
|
|
391
|
+
output.printList([
|
|
392
|
+
'status — Show state, iterations, and task progress',
|
|
393
|
+
'enable — Enable persistent completion',
|
|
394
|
+
'disable — Disable re-engagement loop',
|
|
395
|
+
'config — Configure max iterations, timeout, sources',
|
|
396
|
+
'reset — Reset iteration counter and timer',
|
|
397
|
+
'log — View autopilot event log',
|
|
398
|
+
'learn — Discover success patterns',
|
|
399
|
+
'history — Search past completion episodes',
|
|
400
|
+
'predict — Predict optimal next action',
|
|
401
|
+
'check — Run completion check (stop hook)',
|
|
402
|
+
]);
|
|
403
|
+
return { success: true };
|
|
404
|
+
},
|
|
405
|
+
};
|
|
406
|
+
export default autopilotCommand;
|
|
407
|
+
//# sourceMappingURL=autopilot.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Benchmark Command
|
|
3
|
+
* Comprehensive benchmarking for self-learning, pre-training, and neural systems
|
|
4
|
+
*
|
|
5
|
+
* @module v3/cli/commands/benchmark
|
|
6
|
+
*/
|
|
7
|
+
import type { Command } from '../types.js';
|
|
8
|
+
export declare const benchmarkCommand: Command;
|
|
9
|
+
export default benchmarkCommand;
|
|
10
|
+
//# sourceMappingURL=benchmark.d.ts.map
|