claude-flow 3.32.8 → 3.32.10
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/.proven-config-version +1 -0
- package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
- package/.claude/agents/analysis/analyze-code-quality.md +57 -57
- package/.claude/agents/analysis/code-analyzer.md +188 -188
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
- package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
- package/.claude/agents/base-template-generator.md +41 -41
- package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
- package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
- package/.claude/agents/consensus/gossip-coordinator.md +42 -42
- package/.claude/agents/consensus/performance-benchmarker.md +830 -830
- package/.claude/agents/consensus/quorum-manager.md +802 -802
- package/.claude/agents/consensus/raft-manager.md +42 -42
- package/.claude/agents/consensus/security-manager.md +601 -601
- package/.claude/agents/core/coder.md +254 -254
- package/.claude/agents/core/planner.md +151 -151
- package/.claude/agents/core/researcher.md +173 -173
- package/.claude/agents/core/reviewer.md +308 -308
- package/.claude/agents/core/tester.md +299 -299
- package/.claude/agents/custom/test-long-runner.md +43 -43
- package/.claude/agents/data/ml/data-ml-model.md +75 -75
- package/.claude/agents/database-specialist.md +9 -9
- package/.claude/agents/development/backend/dev-backend-api.md +28 -28
- package/.claude/agents/development/dev-backend-api.md +177 -177
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
- package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
- package/.claude/agents/dual-mode/codex-worker.md +190 -190
- package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
- package/.claude/agents/flow-nexus/app-store.md +87 -87
- package/.claude/agents/flow-nexus/authentication.md +68 -68
- package/.claude/agents/flow-nexus/challenges.md +80 -80
- package/.claude/agents/flow-nexus/neural-network.md +87 -87
- package/.claude/agents/flow-nexus/payments.md +82 -82
- package/.claude/agents/flow-nexus/sandbox.md +75 -75
- package/.claude/agents/flow-nexus/swarm.md +75 -75
- package/.claude/agents/flow-nexus/user-tools.md +95 -95
- package/.claude/agents/flow-nexus/workflow.md +83 -83
- package/.claude/agents/github/code-review-swarm.md +520 -520
- package/.claude/agents/github/github-modes.md +153 -153
- package/.claude/agents/github/issue-tracker.md +298 -298
- package/.claude/agents/github/multi-repo-swarm.md +524 -524
- package/.claude/agents/github/pr-manager.md +162 -162
- package/.claude/agents/github/project-board-sync.md +477 -477
- package/.claude/agents/github/release-manager.md +337 -337
- package/.claude/agents/github/release-swarm.md +550 -550
- package/.claude/agents/github/repo-architect.md +364 -364
- package/.claude/agents/github/swarm-issue.md +550 -550
- package/.claude/agents/github/swarm-pr.md +401 -401
- package/.claude/agents/github/sync-coordinator.md +424 -424
- package/.claude/agents/github/workflow-automation.md +604 -604
- package/.claude/agents/goal/agent.md +816 -816
- package/.claude/agents/goal/code-goal-planner.md +444 -444
- package/.claude/agents/goal/goal-planner.md +167 -167
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
- package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
- package/.claude/agents/hive-mind/scout-explorer.md +240 -240
- package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
- package/.claude/agents/hive-mind/worker-specialist.md +215 -215
- package/.claude/agents/neural/safla-neural.md +73 -73
- package/.claude/agents/optimization/benchmark-suite.md +662 -662
- package/.claude/agents/optimization/load-balancer.md +428 -428
- package/.claude/agents/optimization/performance-monitor.md +669 -669
- package/.claude/agents/optimization/resource-allocator.md +671 -671
- package/.claude/agents/optimization/topology-optimizer.md +805 -805
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/project-coordinator.md +8 -8
- package/.claude/agents/python-specialist.md +9 -9
- package/.claude/agents/reasoning/agent.md +816 -816
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/security-auditor.md +9 -9
- package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
- package/.claude/agents/sparc/architecture.md +452 -452
- package/.claude/agents/sparc/pseudocode.md +298 -298
- package/.claude/agents/sparc/refinement.md +503 -503
- package/.claude/agents/sparc/specification.md +257 -257
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
- package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
- package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
- package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
- package/.claude/agents/sublinear/performance-optimizer.md +367 -367
- package/.claude/agents/sublinear/trading-predictor.md +245 -245
- package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
- package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
- package/.claude/agents/swarm/mesh-coordinator.md +362 -362
- package/.claude/agents/templates/automation-smart-agent.md +184 -184
- package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
- package/.claude/agents/templates/github-pr-manager.md +154 -154
- package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
- package/.claude/agents/templates/memory-coordinator.md +162 -162
- package/.claude/agents/templates/migration-plan.md +723 -723
- package/.claude/agents/templates/orchestrator-task.md +119 -119
- package/.claude/agents/templates/performance-analyzer.md +178 -178
- package/.claude/agents/templates/sparc-coordinator.md +162 -162
- package/.claude/agents/testing/production-validator.md +372 -372
- package/.claude/agents/testing/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/validation/production-validator.md +372 -372
- package/.claude/agents/typescript-specialist.md +9 -9
- package/.claude/agents/v3/database-specialist.md +9 -9
- package/.claude/agents/v3/project-coordinator.md +8 -8
- package/.claude/agents/v3/python-specialist.md +9 -9
- package/.claude/agents/v3/test-architect.md +9 -9
- package/.claude/agents/v3/typescript-specialist.md +9 -9
- package/.claude/agents/v3/v3-integration-architect.md +311 -311
- package/.claude/agents/v3/v3-memory-specialist.md +280 -280
- package/.claude/agents/v3/v3-performance-engineer.md +362 -362
- package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
- package/.claude/agents/v3/v3-security-architect.md +139 -139
- package/.claude/checkpoints/1767754460.json +8 -8
- package/.claude/commands/agents/README.md +10 -10
- package/.claude/commands/agents/agent-capabilities.md +21 -21
- package/.claude/commands/agents/agent-coordination.md +28 -28
- package/.claude/commands/agents/agent-spawning.md +28 -28
- package/.claude/commands/agents/agent-types.md +26 -26
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
- package/.claude/commands/analysis/README.md +9 -9
- package/.claude/commands/analysis/bottleneck-detect.md +162 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
- package/.claude/commands/analysis/performance-report.md +25 -25
- package/.claude/commands/analysis/token-efficiency.md +44 -44
- package/.claude/commands/analysis/token-usage.md +25 -25
- package/.claude/commands/automation/README.md +9 -9
- package/.claude/commands/automation/auto-agent.md +122 -122
- package/.claude/commands/automation/self-healing.md +105 -105
- package/.claude/commands/automation/session-memory.md +89 -89
- package/.claude/commands/automation/smart-agents.md +72 -72
- package/.claude/commands/automation/smart-spawn.md +25 -25
- package/.claude/commands/automation/workflow-select.md +25 -25
- package/.claude/commands/claude-flow-help.md +103 -103
- package/.claude/commands/claude-flow-memory.md +107 -107
- package/.claude/commands/claude-flow-swarm.md +205 -205
- package/.claude/commands/coordination/README.md +9 -9
- package/.claude/commands/coordination/agent-spawn.md +25 -25
- package/.claude/commands/coordination/init.md +44 -44
- package/.claude/commands/coordination/orchestrate.md +43 -43
- package/.claude/commands/coordination/spawn.md +45 -45
- package/.claude/commands/coordination/swarm-init.md +85 -85
- package/.claude/commands/coordination/task-orchestrate.md +25 -25
- package/.claude/commands/flow-nexus/app-store.md +123 -123
- package/.claude/commands/flow-nexus/challenges.md +119 -119
- package/.claude/commands/flow-nexus/login-registration.md +64 -64
- package/.claude/commands/flow-nexus/neural-network.md +133 -133
- package/.claude/commands/flow-nexus/payments.md +115 -115
- package/.claude/commands/flow-nexus/sandbox.md +82 -82
- package/.claude/commands/flow-nexus/swarm.md +86 -86
- package/.claude/commands/flow-nexus/user-tools.md +151 -151
- package/.claude/commands/flow-nexus/workflow.md +114 -114
- package/.claude/commands/github/README.md +11 -11
- package/.claude/commands/github/code-review-swarm.md +513 -513
- package/.claude/commands/github/code-review.md +25 -25
- package/.claude/commands/github/github-modes.md +146 -146
- package/.claude/commands/github/github-swarm.md +121 -121
- package/.claude/commands/github/issue-tracker.md +291 -291
- package/.claude/commands/github/issue-triage.md +25 -25
- package/.claude/commands/github/multi-repo-swarm.md +518 -518
- package/.claude/commands/github/pr-enhance.md +26 -26
- package/.claude/commands/github/pr-manager.md +169 -169
- package/.claude/commands/github/project-board-sync.md +470 -470
- package/.claude/commands/github/release-manager.md +337 -337
- package/.claude/commands/github/release-swarm.md +543 -543
- package/.claude/commands/github/repo-analyze.md +25 -25
- package/.claude/commands/github/repo-architect.md +366 -366
- package/.claude/commands/github/swarm-issue.md +481 -481
- package/.claude/commands/github/swarm-pr.md +284 -284
- package/.claude/commands/github/sync-coordinator.md +300 -300
- package/.claude/commands/github/workflow-automation.md +441 -441
- package/.claude/commands/hive-mind/README.md +17 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
- package/.claude/commands/hive-mind/hive-mind.md +27 -27
- package/.claude/commands/hooks/README.md +11 -11
- package/.claude/commands/hooks/overview.md +57 -57
- package/.claude/commands/hooks/post-edit.md +117 -117
- package/.claude/commands/hooks/post-task.md +112 -112
- package/.claude/commands/hooks/pre-edit.md +113 -113
- package/.claude/commands/hooks/pre-task.md +111 -111
- package/.claude/commands/hooks/session-end.md +118 -118
- package/.claude/commands/hooks/setup.md +102 -102
- package/.claude/commands/memory/README.md +9 -9
- package/.claude/commands/memory/memory-persist.md +25 -25
- package/.claude/commands/memory/memory-search.md +25 -25
- package/.claude/commands/memory/memory-usage.md +25 -25
- package/.claude/commands/memory/neural.md +47 -47
- package/.claude/commands/monitoring/README.md +9 -9
- package/.claude/commands/monitoring/agent-metrics.md +25 -25
- package/.claude/commands/monitoring/agents.md +44 -44
- package/.claude/commands/monitoring/real-time-view.md +25 -25
- package/.claude/commands/monitoring/status.md +46 -46
- package/.claude/commands/monitoring/swarm-monitor.md +25 -25
- package/.claude/commands/optimization/README.md +9 -9
- package/.claude/commands/optimization/auto-topology.md +61 -61
- package/.claude/commands/optimization/cache-manage.md +25 -25
- package/.claude/commands/optimization/parallel-execute.md +25 -25
- package/.claude/commands/optimization/parallel-execution.md +49 -49
- package/.claude/commands/optimization/topology-optimize.md +25 -25
- package/.claude/commands/pair/README.md +260 -260
- package/.claude/commands/pair/commands.md +545 -545
- package/.claude/commands/pair/config.md +509 -509
- package/.claude/commands/pair/examples.md +511 -511
- package/.claude/commands/pair/modes.md +347 -347
- package/.claude/commands/pair/session.md +406 -406
- package/.claude/commands/pair/start.md +208 -208
- package/.claude/commands/sparc/analyzer.md +51 -51
- package/.claude/commands/sparc/architect.md +53 -53
- package/.claude/commands/sparc/ask.md +97 -97
- package/.claude/commands/sparc/batch-executor.md +54 -54
- package/.claude/commands/sparc/code.md +89 -89
- package/.claude/commands/sparc/coder.md +54 -54
- package/.claude/commands/sparc/debug.md +83 -83
- package/.claude/commands/sparc/debugger.md +54 -54
- package/.claude/commands/sparc/designer.md +53 -53
- package/.claude/commands/sparc/devops.md +109 -109
- package/.claude/commands/sparc/docs-writer.md +80 -80
- package/.claude/commands/sparc/documenter.md +54 -54
- package/.claude/commands/sparc/innovator.md +54 -54
- package/.claude/commands/sparc/integration.md +83 -83
- package/.claude/commands/sparc/mcp.md +117 -117
- package/.claude/commands/sparc/memory-manager.md +54 -54
- package/.claude/commands/sparc/optimizer.md +54 -54
- package/.claude/commands/sparc/orchestrator.md +131 -131
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
- package/.claude/commands/sparc/researcher.md +54 -54
- package/.claude/commands/sparc/reviewer.md +54 -54
- package/.claude/commands/sparc/security-review.md +80 -80
- package/.claude/commands/sparc/sparc-modes.md +174 -174
- package/.claude/commands/sparc/sparc.md +111 -111
- package/.claude/commands/sparc/spec-pseudocode.md +80 -80
- package/.claude/commands/sparc/supabase-admin.md +348 -348
- package/.claude/commands/sparc/swarm-coordinator.md +54 -54
- package/.claude/commands/sparc/tdd.md +54 -54
- package/.claude/commands/sparc/tester.md +54 -54
- package/.claude/commands/sparc/tutorial.md +79 -79
- package/.claude/commands/sparc/workflow-manager.md +54 -54
- package/.claude/commands/sparc.md +166 -166
- package/.claude/commands/stream-chain/pipeline.md +120 -120
- package/.claude/commands/stream-chain/run.md +69 -69
- package/.claude/commands/swarm/README.md +15 -15
- package/.claude/commands/swarm/analysis.md +95 -95
- package/.claude/commands/swarm/development.md +96 -96
- package/.claude/commands/swarm/examples.md +168 -168
- package/.claude/commands/swarm/maintenance.md +102 -102
- package/.claude/commands/swarm/optimization.md +117 -117
- package/.claude/commands/swarm/research.md +136 -136
- package/.claude/commands/swarm/swarm-analysis.md +8 -8
- package/.claude/commands/swarm/swarm-background.md +8 -8
- package/.claude/commands/swarm/swarm-init.md +19 -19
- package/.claude/commands/swarm/swarm-modes.md +8 -8
- package/.claude/commands/swarm/swarm-monitor.md +8 -8
- package/.claude/commands/swarm/swarm-spawn.md +19 -19
- package/.claude/commands/swarm/swarm-status.md +8 -8
- package/.claude/commands/swarm/swarm-strategies.md +8 -8
- package/.claude/commands/swarm/swarm.md +27 -27
- package/.claude/commands/swarm/testing.md +131 -131
- package/.claude/commands/training/README.md +9 -9
- package/.claude/commands/training/model-update.md +25 -25
- package/.claude/commands/training/neural-patterns.md +73 -73
- package/.claude/commands/training/neural-train.md +25 -25
- package/.claude/commands/training/pattern-learn.md +25 -25
- package/.claude/commands/training/specialization.md +62 -62
- package/.claude/commands/truth/start.md +142 -142
- package/.claude/commands/verify/check.md +49 -49
- package/.claude/commands/verify/start.md +127 -127
- package/.claude/commands/workflows/README.md +9 -9
- package/.claude/commands/workflows/development.md +77 -77
- package/.claude/commands/workflows/research.md +62 -62
- package/.claude/commands/workflows/workflow-create.md +25 -25
- package/.claude/commands/workflows/workflow-execute.md +25 -25
- package/.claude/commands/workflows/workflow-export.md +25 -25
- package/.claude/config/v3-dependency-optimization.json +265 -265
- package/.claude/config/v3-performance-targets.json +250 -250
- package/.claude/helpers/.LOCKED +2 -2
- package/.claude/helpers/.helpers-version +1 -0
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- package/.claude/helpers/aggressive-microcompact.mjs +36 -36
- package/.claude/helpers/auto-commit.sh +178 -178
- package/.claude/helpers/auto-memory-hook.mjs +430 -430
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +156 -156
- package/.claude/helpers/github-setup.sh +45 -45
- package/.claude/helpers/guidance-hook.sh +13 -13
- package/.claude/helpers/guidance-hooks.sh +102 -102
- package/.claude/helpers/health-monitor.sh +108 -108
- package/.claude/helpers/helpers.manifest.json +13 -0
- package/.claude/helpers/hook-handler.cjs +464 -464
- package/.claude/helpers/intelligence.cjs +1058 -1058
- package/.claude/helpers/learning-hooks.sh +329 -329
- package/.claude/helpers/learning-optimizer.sh +127 -127
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/memory.cjs +84 -84
- package/.claude/helpers/metrics-db.mjs +503 -503
- package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.cjs +62 -62
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.cjs +125 -125
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline.cjs +211 -2
- package/.claude/helpers/swarm-comms.sh +353 -353
- package/.claude/helpers/swarm-hooks.sh +761 -761
- package/.claude/helpers/swarm-monitor.sh +210 -210
- package/.claude/helpers/sync-v3-metrics.sh +245 -245
- package/.claude/helpers/update-v3-progress.sh +165 -165
- package/.claude/helpers/v3-quick-status.sh +57 -57
- package/.claude/helpers/v3.sh +110 -110
- package/.claude/helpers/validate-v3-config.sh +215 -215
- package/.claude/helpers/worker-manager.sh +170 -170
- package/.claude/mcp.json +12 -12
- package/.claude/proven-config.json +42 -0
- package/.claude/settings.json +284 -284
- package/.claude/settings.json.bak +526 -526
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
- package/.claude/skills/agentdb-learning/SKILL.md +545 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
- package/.claude/skills/browser/SKILL.md +204 -204
- package/.claude/skills/dual-mode/README.md +71 -71
- package/.claude/skills/dual-mode/dual-collect.md +103 -103
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
- package/.claude/skills/dual-mode/dual-spawn.md +81 -81
- package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
- package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
- package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
- package/.claude/skills/github-code-review/SKILL.md +1125 -1125
- package/.claude/skills/github-multi-repo/SKILL.md +862 -862
- package/.claude/skills/github-project-management/SKILL.md +1262 -1262
- package/.claude/skills/github-release-management/SKILL.md +1064 -1064
- package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
- package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- package/.claude/skills/performance-analysis/SKILL.md +560 -560
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
- package/.claude/skills/skill-builder/SKILL.md +910 -910
- package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
- package/.claude/skills/stream-chain/SKILL.md +560 -560
- package/.claude/skills/swarm-advanced/SKILL.md +970 -970
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
- package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
- package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
- package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
- package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
- package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
- package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
- package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
- package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
- package/.claude/skills/verification-quality/SKILL.md +691 -691
- package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
- package/.claude/skills/worker-integration/SKILL.md +147 -147
- package/.claude/statusline-command.sh +176 -176
- package/.claude/statusline.mjs +109 -109
- package/.claude/statusline.sh +431 -431
- package/.claude/workflows/full-system-test.js +65 -65
- package/.claude/workflows/intelligence-system-hardening.js +120 -120
- package/.claude/workflows/plugin-contract-audit.js +91 -91
- package/.claude-plugin/README.md +720 -720
- package/.claude-plugin/docs/INSTALLATION.md +261 -261
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
- package/.claude-plugin/docs/QUICKSTART.md +361 -361
- package/.claude-plugin/docs/STRUCTURE.md +128 -128
- package/.claude-plugin/hooks/hooks.json +79 -77
- package/.claude-plugin/marketplace.json +185 -185
- package/.claude-plugin/plugin.json +71 -71
- package/.claude-plugin/scripts/install.sh +234 -234
- package/.claude-plugin/scripts/ruflo-hook.cjs +166 -166
- package/.claude-plugin/scripts/ruflo-hook.sh +52 -52
- package/.claude-plugin/scripts/uninstall.sh +36 -36
- package/.claude-plugin/scripts/verify.sh +108 -108
- package/LICENSE +21 -21
- package/README.md +419 -419
- package/bin/cli.js +11 -11
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +192 -186
- package/v3/@claude-flow/cli/README.md +419 -419
- package/v3/@claude-flow/cli/bin/cli.js +314 -314
- package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
- package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
- package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
- package/v3/@claude-flow/cli/dist/src/autopilot-state.js +24 -7
- package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
- package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +44 -44
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +267 -20
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +74 -11
- package/v3/@claude-flow/cli/dist/src/commands/init.js +202 -34
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +12 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
- package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
- package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +13 -2
- package/v3/@claude-flow/cli/dist/src/funnel/message-transport.d.ts +11 -4
- package/v3/@claude-flow/cli/dist/src/funnel/message-transport.js +11 -4
- package/v3/@claude-flow/cli/dist/src/funnel/messages.d.ts +12 -10
- package/v3/@claude-flow/cli/dist/src/funnel/messages.js +83 -11
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
- package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
- package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
- package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
- package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +21 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +4 -3
- package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +35 -22
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +189 -93
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +479 -407
- package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
- package/v3/@claude-flow/cli/dist/src/parser.js +25 -9
- package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +7 -4
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +137 -135
- package/v3/@claude-flow/guidance/README.md +1195 -1195
- package/v3/@claude-flow/guidance/package.json +198 -198
- package/v3/@claude-flow/shared/README.md +323 -323
- package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
- package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
- package/v3/@claude-flow/shared/package.json +43 -43
- package/v3/README.md +493 -493
|
@@ -51,103 +51,103 @@ function generateHiveMindPrompt(swarmId, swarmName, objective, workers, workerGr
|
|
|
51
51
|
const queenType = flags.queenType || 'strategic';
|
|
52
52
|
const consensusAlgorithm = flags.consensus || 'byzantine';
|
|
53
53
|
const topology = flags.topology || 'hierarchical-mesh';
|
|
54
|
-
return `🧠 HIVE MIND COLLECTIVE INTELLIGENCE SYSTEM
|
|
55
|
-
═══════════════════════════════════════════════
|
|
56
|
-
|
|
57
|
-
You are the Queen coordinator of a Hive Mind swarm with collective intelligence capabilities.
|
|
58
|
-
|
|
59
|
-
HIVE MIND CONFIGURATION:
|
|
60
|
-
📌 Swarm ID: ${swarmId}
|
|
61
|
-
📌 Swarm Name: ${swarmName}
|
|
62
|
-
🎯 Objective: ${objective}
|
|
63
|
-
👑 Queen Type: ${queenType}
|
|
64
|
-
🐝 Worker Count: ${workers.length}
|
|
65
|
-
🔗 Topology: ${topology}
|
|
66
|
-
🤝 Consensus Algorithm: ${consensusAlgorithm}
|
|
67
|
-
⏰ Initialized: ${currentTime}
|
|
68
|
-
|
|
69
|
-
WORKER DISTRIBUTION:
|
|
70
|
-
${workerTypes.map(type => `• ${type}: ${workerGroups[type].length} agents`).join('\n')}
|
|
71
|
-
|
|
72
|
-
🔧 AVAILABLE MCP TOOLS FOR HIVE MIND COORDINATION:
|
|
73
|
-
|
|
74
|
-
1️⃣ **COLLECTIVE INTELLIGENCE**
|
|
75
|
-
mcp__ruflo__hive-mind_consensus - Democratic decision making
|
|
76
|
-
mcp__ruflo__hive-mind_memory - Share knowledge across the hive
|
|
77
|
-
mcp__ruflo__hive-mind_broadcast - Broadcast to all workers
|
|
78
|
-
mcp__ruflo__neural_patterns - Neural pattern recognition
|
|
79
|
-
|
|
80
|
-
2️⃣ **QUEEN COORDINATION**
|
|
81
|
-
mcp__ruflo__hive-mind_status - Monitor swarm health
|
|
82
|
-
mcp__ruflo__task_create - Create and delegate tasks
|
|
83
|
-
mcp__ruflo__coordination_orchestrate - Orchestrate task distribution
|
|
84
|
-
mcp__ruflo__agent_spawn - Spawn additional workers
|
|
85
|
-
|
|
86
|
-
3️⃣ **WORKER MANAGEMENT**
|
|
87
|
-
mcp__ruflo__agent_list - List all active agents
|
|
88
|
-
mcp__ruflo__agent_status - Check agent status
|
|
89
|
-
mcp__ruflo__agent_health - Check worker health
|
|
90
|
-
mcp__ruflo__hive-mind_join - Add agent to hive
|
|
91
|
-
mcp__ruflo__hive-mind_leave - Remove agent from hive
|
|
92
|
-
|
|
93
|
-
4️⃣ **TASK ORCHESTRATION**
|
|
94
|
-
mcp__ruflo__task_assign - Assign tasks to workers
|
|
95
|
-
mcp__ruflo__task_status - Track task progress
|
|
96
|
-
mcp__ruflo__task_complete - Mark tasks complete
|
|
97
|
-
mcp__ruflo__workflow_create - Create workflows
|
|
98
|
-
|
|
99
|
-
5️⃣ **MEMORY & LEARNING**
|
|
100
|
-
mcp__ruflo__memory_store - Store collective knowledge
|
|
101
|
-
mcp__ruflo__memory_retrieve - Access shared memory
|
|
102
|
-
mcp__ruflo__memory_search - Search memory patterns
|
|
103
|
-
mcp__ruflo__neural_train - Learn from experiences
|
|
104
|
-
mcp__ruflo__hooks_intelligence_pattern-store - Store patterns
|
|
105
|
-
|
|
106
|
-
📋 HIVE MIND EXECUTION PROTOCOL:
|
|
107
|
-
|
|
108
|
-
1. **INITIALIZATION PHASE**
|
|
109
|
-
- Verify all workers are online and responsive
|
|
110
|
-
- Establish communication channels
|
|
111
|
-
- Load previous session state if available
|
|
112
|
-
- Initialize shared memory space
|
|
113
|
-
|
|
114
|
-
2. **TASK DISTRIBUTION PHASE**
|
|
115
|
-
- Analyze the objective and decompose into subtasks
|
|
116
|
-
- Assign tasks based on worker specializations
|
|
117
|
-
- Set up task dependencies and ordering
|
|
118
|
-
- Monitor parallel execution
|
|
119
|
-
|
|
120
|
-
3. **COORDINATION PHASE**
|
|
121
|
-
- Use consensus for critical decisions
|
|
122
|
-
- Aggregate results from workers
|
|
123
|
-
- Resolve conflicts using ${consensusAlgorithm} consensus
|
|
124
|
-
- Share learnings across the hive
|
|
125
|
-
|
|
126
|
-
4. **COMPLETION PHASE**
|
|
127
|
-
- Verify all subtasks are complete
|
|
128
|
-
- Consolidate results
|
|
129
|
-
- Store learnings in collective memory
|
|
130
|
-
- Report final status
|
|
131
|
-
|
|
132
|
-
🎯 YOUR OBJECTIVE:
|
|
133
|
-
${objective}
|
|
134
|
-
|
|
135
|
-
⚠️ CRITICAL — TOOL PREFERENCE RULES (#1422):
|
|
136
|
-
• You MUST use Ruflo MCP tools (mcp__ruflo__*) for ALL orchestration tasks
|
|
137
|
-
• Do NOT use Claude native Task/Agent tools for swarm coordination — use mcp__ruflo__agent_spawn, mcp__ruflo__task_assign, etc.
|
|
138
|
-
• Native Claude tools (Read, Write, Edit, Bash, Grep, Glob) should ONLY be used for file operations and shell commands
|
|
139
|
-
• All agent spawning, task assignment, memory, and coordination MUST go through mcp__ruflo__* tools
|
|
140
|
-
• If a Ruflo MCP tool exists for an operation, always prefer it over any native equivalent
|
|
141
|
-
|
|
142
|
-
💡 COORDINATION TIPS:
|
|
143
|
-
• Use mcp__ruflo__hive-mind_broadcast for swarm-wide announcements
|
|
144
|
-
• Check worker status regularly with mcp__ruflo__hive-mind_status
|
|
145
|
-
• Store important decisions in shared memory for persistence
|
|
146
|
-
• Use consensus for any decisions affecting multiple workers
|
|
147
|
-
• Use mcp__ruflo__task_assign to assign tasks to workers, then mcp__ruflo__task_complete when done
|
|
148
|
-
|
|
149
|
-
🚀 BEGIN HIVE MIND COORDINATION NOW!
|
|
150
|
-
Start by checking the current hive status and then proceed with the objective.
|
|
54
|
+
return `🧠 HIVE MIND COLLECTIVE INTELLIGENCE SYSTEM
|
|
55
|
+
═══════════════════════════════════════════════
|
|
56
|
+
|
|
57
|
+
You are the Queen coordinator of a Hive Mind swarm with collective intelligence capabilities.
|
|
58
|
+
|
|
59
|
+
HIVE MIND CONFIGURATION:
|
|
60
|
+
📌 Swarm ID: ${swarmId}
|
|
61
|
+
📌 Swarm Name: ${swarmName}
|
|
62
|
+
🎯 Objective: ${objective}
|
|
63
|
+
👑 Queen Type: ${queenType}
|
|
64
|
+
🐝 Worker Count: ${workers.length}
|
|
65
|
+
🔗 Topology: ${topology}
|
|
66
|
+
🤝 Consensus Algorithm: ${consensusAlgorithm}
|
|
67
|
+
⏰ Initialized: ${currentTime}
|
|
68
|
+
|
|
69
|
+
WORKER DISTRIBUTION:
|
|
70
|
+
${workerTypes.map(type => `• ${type}: ${workerGroups[type].length} agents`).join('\n')}
|
|
71
|
+
|
|
72
|
+
🔧 AVAILABLE MCP TOOLS FOR HIVE MIND COORDINATION:
|
|
73
|
+
|
|
74
|
+
1️⃣ **COLLECTIVE INTELLIGENCE**
|
|
75
|
+
mcp__ruflo__hive-mind_consensus - Democratic decision making
|
|
76
|
+
mcp__ruflo__hive-mind_memory - Share knowledge across the hive
|
|
77
|
+
mcp__ruflo__hive-mind_broadcast - Broadcast to all workers
|
|
78
|
+
mcp__ruflo__neural_patterns - Neural pattern recognition
|
|
79
|
+
|
|
80
|
+
2️⃣ **QUEEN COORDINATION**
|
|
81
|
+
mcp__ruflo__hive-mind_status - Monitor swarm health
|
|
82
|
+
mcp__ruflo__task_create - Create and delegate tasks
|
|
83
|
+
mcp__ruflo__coordination_orchestrate - Orchestrate task distribution
|
|
84
|
+
mcp__ruflo__agent_spawn - Spawn additional workers
|
|
85
|
+
|
|
86
|
+
3️⃣ **WORKER MANAGEMENT**
|
|
87
|
+
mcp__ruflo__agent_list - List all active agents
|
|
88
|
+
mcp__ruflo__agent_status - Check agent status
|
|
89
|
+
mcp__ruflo__agent_health - Check worker health
|
|
90
|
+
mcp__ruflo__hive-mind_join - Add agent to hive
|
|
91
|
+
mcp__ruflo__hive-mind_leave - Remove agent from hive
|
|
92
|
+
|
|
93
|
+
4️⃣ **TASK ORCHESTRATION**
|
|
94
|
+
mcp__ruflo__task_assign - Assign tasks to workers
|
|
95
|
+
mcp__ruflo__task_status - Track task progress
|
|
96
|
+
mcp__ruflo__task_complete - Mark tasks complete
|
|
97
|
+
mcp__ruflo__workflow_create - Create workflows
|
|
98
|
+
|
|
99
|
+
5️⃣ **MEMORY & LEARNING**
|
|
100
|
+
mcp__ruflo__memory_store - Store collective knowledge
|
|
101
|
+
mcp__ruflo__memory_retrieve - Access shared memory
|
|
102
|
+
mcp__ruflo__memory_search - Search memory patterns
|
|
103
|
+
mcp__ruflo__neural_train - Learn from experiences
|
|
104
|
+
mcp__ruflo__hooks_intelligence_pattern-store - Store patterns
|
|
105
|
+
|
|
106
|
+
📋 HIVE MIND EXECUTION PROTOCOL:
|
|
107
|
+
|
|
108
|
+
1. **INITIALIZATION PHASE**
|
|
109
|
+
- Verify all workers are online and responsive
|
|
110
|
+
- Establish communication channels
|
|
111
|
+
- Load previous session state if available
|
|
112
|
+
- Initialize shared memory space
|
|
113
|
+
|
|
114
|
+
2. **TASK DISTRIBUTION PHASE**
|
|
115
|
+
- Analyze the objective and decompose into subtasks
|
|
116
|
+
- Assign tasks based on worker specializations
|
|
117
|
+
- Set up task dependencies and ordering
|
|
118
|
+
- Monitor parallel execution
|
|
119
|
+
|
|
120
|
+
3. **COORDINATION PHASE**
|
|
121
|
+
- Use consensus for critical decisions
|
|
122
|
+
- Aggregate results from workers
|
|
123
|
+
- Resolve conflicts using ${consensusAlgorithm} consensus
|
|
124
|
+
- Share learnings across the hive
|
|
125
|
+
|
|
126
|
+
4. **COMPLETION PHASE**
|
|
127
|
+
- Verify all subtasks are complete
|
|
128
|
+
- Consolidate results
|
|
129
|
+
- Store learnings in collective memory
|
|
130
|
+
- Report final status
|
|
131
|
+
|
|
132
|
+
🎯 YOUR OBJECTIVE:
|
|
133
|
+
${objective}
|
|
134
|
+
|
|
135
|
+
⚠️ CRITICAL — TOOL PREFERENCE RULES (#1422):
|
|
136
|
+
• You MUST use Ruflo MCP tools (mcp__ruflo__*) for ALL orchestration tasks
|
|
137
|
+
• Do NOT use Claude native Task/Agent tools for swarm coordination — use mcp__ruflo__agent_spawn, mcp__ruflo__task_assign, etc.
|
|
138
|
+
• Native Claude tools (Read, Write, Edit, Bash, Grep, Glob) should ONLY be used for file operations and shell commands
|
|
139
|
+
• All agent spawning, task assignment, memory, and coordination MUST go through mcp__ruflo__* tools
|
|
140
|
+
• If a Ruflo MCP tool exists for an operation, always prefer it over any native equivalent
|
|
141
|
+
|
|
142
|
+
💡 COORDINATION TIPS:
|
|
143
|
+
• Use mcp__ruflo__hive-mind_broadcast for swarm-wide announcements
|
|
144
|
+
• Check worker status regularly with mcp__ruflo__hive-mind_status
|
|
145
|
+
• Store important decisions in shared memory for persistence
|
|
146
|
+
• Use consensus for any decisions affecting multiple workers
|
|
147
|
+
• Use mcp__ruflo__task_assign to assign tasks to workers, then mcp__ruflo__task_complete when done
|
|
148
|
+
|
|
149
|
+
🚀 BEGIN HIVE MIND COORDINATION NOW!
|
|
150
|
+
Start by checking the current hive status and then proceed with the objective.
|
|
151
151
|
`;
|
|
152
152
|
}
|
|
153
153
|
/**
|
|
@@ -1573,6 +1573,19 @@ const postTaskCommand = {
|
|
|
1573
1573
|
description: 'Agent that executed the task',
|
|
1574
1574
|
type: 'string'
|
|
1575
1575
|
},
|
|
1576
|
+
{
|
|
1577
|
+
name: 'task',
|
|
1578
|
+
short: 't',
|
|
1579
|
+
description: 'Task description text (used for routing-outcome persistence and keyword extraction so hooks_metrics can surface Pattern Learning / Agent Routing counts). Without this + --agent, no routing outcome is recorded (#2785).',
|
|
1580
|
+
type: 'string',
|
|
1581
|
+
required: false
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
name: 'store-results',
|
|
1585
|
+
description: 'Also persist the routing decision to the memory DB (maps to hooks_post-task storeDecisions) so hooks_metrics can cross-reference it. Requires --task and --agent.',
|
|
1586
|
+
type: 'boolean',
|
|
1587
|
+
required: false
|
|
1588
|
+
},
|
|
1576
1589
|
{
|
|
1577
1590
|
// ADR-147 P2: nested-subagent spawn-tree capture
|
|
1578
1591
|
name: 'parent-agent-id',
|
|
@@ -1589,7 +1602,8 @@ const postTaskCommand = {
|
|
|
1589
1602
|
],
|
|
1590
1603
|
examples: [
|
|
1591
1604
|
{ command: 'claude-flow hooks post-task -i task-123 --success true', description: 'Record successful completion' },
|
|
1592
|
-
{ command: 'claude-flow hooks post-task -i task-456 --success false -q 0.3', description: 'Record failed task' }
|
|
1605
|
+
{ command: 'claude-flow hooks post-task -i task-456 --success false -q 0.3', description: 'Record failed task' },
|
|
1606
|
+
{ command: 'claude-flow hooks post-task -i task-789 --success true --task "add JWT auth" --agent coder --store-results', description: 'Record with routing-outcome persistence for hooks_metrics' }
|
|
1593
1607
|
],
|
|
1594
1608
|
action: async (ctx) => {
|
|
1595
1609
|
// Auto-generate task ID if not provided
|
|
@@ -1603,6 +1617,13 @@ const postTaskCommand = {
|
|
|
1603
1617
|
success,
|
|
1604
1618
|
quality: ctx.flags.quality,
|
|
1605
1619
|
agent: ctx.flags.agent,
|
|
1620
|
+
// #2785: forward the task description so routing outcomes actually persist
|
|
1621
|
+
// (hooks_post-task requires taskText + agent to write the outcome row that
|
|
1622
|
+
// hooks_metrics reads via getIntelligenceStatsFromMemory)
|
|
1623
|
+
task: ctx.flags.task,
|
|
1624
|
+
// Maps to storeDecisions on the MCP tool — persist routing decision in
|
|
1625
|
+
// memory DB for cross-session vector retrieval + metrics attribution
|
|
1626
|
+
storeDecisions: ctx.flags.storeResults,
|
|
1606
1627
|
timestamp: Date.now(),
|
|
1607
1628
|
// ADR-147 P2: forward spawn-tree lineage if caller supplied it
|
|
1608
1629
|
parentAgentId: ctx.flags.parentAgentId,
|
|
@@ -3485,12 +3506,54 @@ const statuslineCommand = {
|
|
|
3485
3506
|
const contextPct = Math.min(100, Math.floor(learning.sessions * 5));
|
|
3486
3507
|
return { memoryMB, contextPct, intelligencePct, subAgents };
|
|
3487
3508
|
}
|
|
3509
|
+
// #2733: Claude Code pipes session JSON (incl. the real active model) on
|
|
3510
|
+
// stdin to statusline commands. Read it synchronously the same way
|
|
3511
|
+
// .claude/helpers/statusline.cjs's getModelFromStdin() does, so this CLI
|
|
3512
|
+
// subcommand is correct standalone — not just when the generated helper
|
|
3513
|
+
// happens to override its output. Read once, memoized per invocation
|
|
3514
|
+
// (mirrors statusline.cjs's _stdinData cache).
|
|
3515
|
+
let _stdinData;
|
|
3516
|
+
let _stdinRead = false;
|
|
3517
|
+
function getStdinData() {
|
|
3518
|
+
if (_stdinRead)
|
|
3519
|
+
return _stdinData;
|
|
3520
|
+
_stdinRead = true;
|
|
3521
|
+
try {
|
|
3522
|
+
if (process.stdin.isTTY) {
|
|
3523
|
+
_stdinData = null;
|
|
3524
|
+
return null;
|
|
3525
|
+
}
|
|
3526
|
+
const chunks = [];
|
|
3527
|
+
const buf = Buffer.alloc(4096);
|
|
3528
|
+
let bytesRead;
|
|
3529
|
+
try {
|
|
3530
|
+
while ((bytesRead = fs.readSync(0, buf, 0, buf.length, null)) > 0) {
|
|
3531
|
+
chunks.push(Buffer.from(buf.subarray(0, bytesRead)));
|
|
3532
|
+
}
|
|
3533
|
+
}
|
|
3534
|
+
catch { /* EOF or read error */ }
|
|
3535
|
+
const raw = Buffer.concat(chunks).toString('utf-8').trim();
|
|
3536
|
+
_stdinData = (raw && raw.startsWith('{')) ? JSON.parse(raw) : null;
|
|
3537
|
+
}
|
|
3538
|
+
catch {
|
|
3539
|
+
_stdinData = null;
|
|
3540
|
+
}
|
|
3541
|
+
return _stdinData;
|
|
3542
|
+
}
|
|
3543
|
+
function getModelFromStdin() {
|
|
3544
|
+
const data = getStdinData();
|
|
3545
|
+
return (data && data.model && typeof data.model.display_name === 'string') ? data.model.display_name : null;
|
|
3546
|
+
}
|
|
3488
3547
|
// Get user info
|
|
3489
3548
|
function getUserInfo() {
|
|
3490
3549
|
const identityMode = (process.env.RUFLO_STATUSLINE_IDENTITY || 'project').toLowerCase();
|
|
3491
3550
|
let name = path.basename(process.cwd()) || 'project';
|
|
3492
3551
|
let gitBranch = '';
|
|
3493
|
-
|
|
3552
|
+
// Real active model from Claude Code's stdin payload when available;
|
|
3553
|
+
// this string is only a last-resort label for direct/manual CLI
|
|
3554
|
+
// invocation with no stdin (e.g. a bare terminal run) — never shown
|
|
3555
|
+
// when Claude Code itself is the caller.
|
|
3556
|
+
const modelName = getModelFromStdin() || 'Claude Code';
|
|
3494
3557
|
const isWindows = process.platform === 'win32';
|
|
3495
3558
|
try {
|
|
3496
3559
|
const rootCmd = isWindows
|
|
@@ -3953,15 +4016,15 @@ const tokenOptimizeCommand = {
|
|
|
3953
4016
|
const total = stats.cacheHits + stats.cacheMisses;
|
|
3954
4017
|
const hitRate = total > 0 ? (stats.cacheHits / total * 100).toFixed(1) : '0';
|
|
3955
4018
|
const savings = (stats.totalTokensSaved / 1000 * 0.01).toFixed(2);
|
|
3956
|
-
output.writeln(`## Token Optimization Report
|
|
3957
|
-
|
|
3958
|
-
| Metric | Value |
|
|
3959
|
-
|--------|-------|
|
|
3960
|
-
| Tokens Saved | ${stats.totalTokensSaved.toLocaleString()} |
|
|
3961
|
-
| Edits Optimized | ${stats.editsOptimized} |
|
|
3962
|
-
| Cache Hit Rate | ${hitRate}% |
|
|
3963
|
-
| Memories Retrieved | ${stats.memoriesRetrieved} |
|
|
3964
|
-
| Est. Monthly Savings | $${savings} |
|
|
4019
|
+
output.writeln(`## Token Optimization Report
|
|
4020
|
+
|
|
4021
|
+
| Metric | Value |
|
|
4022
|
+
|--------|-------|
|
|
4023
|
+
| Tokens Saved | ${stats.totalTokensSaved.toLocaleString()} |
|
|
4024
|
+
| Edits Optimized | ${stats.editsOptimized} |
|
|
4025
|
+
| Cache Hit Rate | ${hitRate}% |
|
|
4026
|
+
| Memories Retrieved | ${stats.memoriesRetrieved} |
|
|
4027
|
+
| Est. Monthly Savings | $${savings} |
|
|
3965
4028
|
| Agentic-Flow Active | ${agenticFlowAvailable ? '✓' : '✗'} |`);
|
|
3966
4029
|
}
|
|
3967
4030
|
return { success: true, data: { config, stats: { ...stats, agenticFlowAvailable } } };
|
|
@@ -146,18 +146,153 @@ async function maybeAutoDetectCodex(ctx, options) {
|
|
|
146
146
|
// Codex auto-detect is a bonus, never a requirement — swallow everything.
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
// Cross-agent skill registration
|
|
150
|
-
//
|
|
151
|
-
// (
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
// can run `npx skills add ruvnet/ruflo --all` themselves. Best-effort — never
|
|
155
|
-
// fails init. Opt-out: --no-skills-sh flag OR RUFLO_NO_SKILLS_SH=1. Skipped
|
|
156
|
-
// under --skip-claude and scripted `--format json` output.
|
|
149
|
+
// Cross-agent skill registration. Materializes the *single* canonical ruflo
|
|
150
|
+
// platform skill at `.agents/skills/ruflo/SKILL.md` so any agent in the
|
|
151
|
+
// project (Claude Code, Cursor, Copilot, Gemini, Cline, …) that reads
|
|
152
|
+
// `.agents/skills/` picks it up. Users who want the full plugin skill catalog
|
|
153
|
+
// can run `npx skills add ruvnet/ruflo --all` themselves.
|
|
157
154
|
//
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
155
|
+
// #2777 — earlier versions shelled out to `npx --yes skills add ruvnet/ruflo
|
|
156
|
+
// --skill ruflo --yes`, but the skills CLI implements its `--skill` filter by
|
|
157
|
+
// cloning the entire target repo and copying `dirname(SKILL.md)` recursively.
|
|
158
|
+
// Because ruflo's canonical SKILL.md sits at the ruvnet/ruflo repo root, that
|
|
159
|
+
// dirname *is* the whole repository — the "one file" install pulled in ~97MB
|
|
160
|
+
// of Cargo.toml, crates/, docs/, agentdb.rvf, and 384 unrelated plugin
|
|
161
|
+
// SKILL.md descriptors. We now write the single ~2KB SKILL.md directly, no
|
|
162
|
+
// repo clone at all.
|
|
163
|
+
//
|
|
164
|
+
// Best-effort — never fails init. Opt-out: --no-skills-sh flag OR
|
|
165
|
+
// RUFLO_NO_SKILLS_SH=1. Skipped under --skip-claude and scripted
|
|
166
|
+
// `--format json` output.
|
|
167
|
+
const RUFLO_PLATFORM_SKILL_MD = `---
|
|
168
|
+
name: ruflo
|
|
169
|
+
description: Ruflo is a multi-agent orchestration platform for AI coding agents (Claude Code, Cursor, Codex, Copilot, Gemini, Amp, +12 more). Use this skill when the user wants to (1) install/init ruflo in a project, (2) run multi-agent swarms with hierarchical coordination, (3) use ruflo's 314+ MCP tools for memory, routing, hooks, sub-agents, or workflows, (4) check ruflo status/version/doctor health, or (5) discover which of ruflo's 30+ plugins fits their task.
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
# Ruflo
|
|
173
|
+
|
|
174
|
+
Ruflo is a cross-agent orchestration layer that ships as three npm packages: \`ruflo\` (thin wrapper), \`claude-flow\` (umbrella), and \`@claude-flow/cli\` (implementation). Users invoke it as \`npx ruflo <command>\`.
|
|
175
|
+
|
|
176
|
+
## When to invoke ruflo
|
|
177
|
+
|
|
178
|
+
Suggest ruflo when the task involves any of:
|
|
179
|
+
|
|
180
|
+
- **Multi-agent work**: coordinated swarms, sub-agents, cross-agent handoffs, or parallel task execution
|
|
181
|
+
- **Persistent memory across sessions**: HNSW vector search, hybrid SQLite+AgentDB backend, semantic retrieval
|
|
182
|
+
- **Learning routing decisions**: 3-tier model routing (deterministic codemod → Haiku → Sonnet/Opus), pattern-based agent selection
|
|
183
|
+
- **Hooks + observability**: pre/post edit hooks, session lifecycle, background workers (12 built-in), tracing
|
|
184
|
+
- **Workflows + benchmarks**: SPARC methodology, GAIA benchmark runs, custom multi-step pipelines
|
|
185
|
+
- **Plugin ecosystem**: 30+ plugins covering ADR, DDD, security audit, cost tracking, browser automation, IoT device fleets, market data, neural training, and more
|
|
186
|
+
|
|
187
|
+
Do NOT suggest ruflo for one-shot edits, simple bug fixes, or tasks a single agent can complete in one turn — the orchestration overhead isn't worth it.
|
|
188
|
+
|
|
189
|
+
## Getting started (three commands)
|
|
190
|
+
|
|
191
|
+
\`\`\`bash
|
|
192
|
+
# 1. Initialize ruflo in the current project (creates .claude/, MCP config, hooks)
|
|
193
|
+
npx ruflo init
|
|
194
|
+
|
|
195
|
+
# 2. Check health — verifies Node 20+, npm 9+, MCP servers, memory DB, API keys
|
|
196
|
+
npx ruflo doctor --fix
|
|
197
|
+
|
|
198
|
+
# 3. Discover which plugins match the current work
|
|
199
|
+
npx ruflo discover-plugins
|
|
200
|
+
\`\`\`
|
|
201
|
+
|
|
202
|
+
## MCP tools (314 available)
|
|
203
|
+
|
|
204
|
+
After \`ruflo init\`, Claude Code (or any MCP-compatible agent) auto-loads ruflo's MCP servers. Key namespaces:
|
|
205
|
+
|
|
206
|
+
- \`mcp__claude-flow__memory_*\` — store/search/list/retrieve with HNSW-indexed semantic search
|
|
207
|
+
- \`mcp__claude-flow__swarm_*\` — init hierarchical/mesh swarms with anti-drift topology
|
|
208
|
+
- \`mcp__claude-flow__agent_spawn\` — spawn specialized agents (coder, reviewer, tester, security-architect, +55 more)
|
|
209
|
+
- \`mcp__claude-flow__hooks_*\` — routing, pattern learning, background worker dispatch
|
|
210
|
+
- \`mcp__claude-flow__task_*\` — task lifecycle (create/assign/complete/summary)
|
|
211
|
+
- \`mcp__claude-flow__intelligence_*\` — 4-step pipeline (RETRIEVE → JUDGE → DISTILL → CONSOLIDATE)
|
|
212
|
+
|
|
213
|
+
Full catalog: \`npx ruflo mcp list\`.
|
|
214
|
+
|
|
215
|
+
## Plugin discovery
|
|
216
|
+
|
|
217
|
+
Ruflo ships 30+ optional plugins. Some highlights:
|
|
218
|
+
|
|
219
|
+
- \`ruflo-goals\` — deep research + goal-oriented action planning
|
|
220
|
+
- \`ruflo-cost-tracker\` — session cost telemetry, budgets, burn tracking
|
|
221
|
+
- \`ruflo-metaharness\` — harness scoring, MCP security scans, red/blue adversarial testing
|
|
222
|
+
- \`ruflo-browser\` — session-recorded browser automation with RVF-backed replay
|
|
223
|
+
- \`ruflo-jujutsu\` — git diff risk analysis + PR lifecycle
|
|
224
|
+
- \`ruflo-security-audit\` — codebase scans + CVE checks
|
|
225
|
+
|
|
226
|
+
Full plugin list + descriptions: \`npx ruflo plugins list\`.
|
|
227
|
+
|
|
228
|
+
## Cross-agent installation
|
|
229
|
+
|
|
230
|
+
Ruflo installs into whatever agent the project uses. To pull the full plugin
|
|
231
|
+
skill catalog (30+ plugins, ~267 skills), run:
|
|
232
|
+
|
|
233
|
+
\`\`\`bash
|
|
234
|
+
npx skills add ruvnet/ruflo --all
|
|
235
|
+
\`\`\`
|
|
236
|
+
|
|
237
|
+
## Documentation
|
|
238
|
+
|
|
239
|
+
- Repository: https://github.com/ruvnet/ruflo
|
|
240
|
+
- Issues: https://github.com/ruvnet/ruflo/issues
|
|
241
|
+
- Sponsor: https://github.com/sponsors/ruvnet
|
|
242
|
+
`;
|
|
243
|
+
// #2777 — detect the "bloated" install left behind by earlier versions that
|
|
244
|
+
// shelled out to `npx skills add`. If the .agents/skills/ruflo directory
|
|
245
|
+
// contains any of Cargo.toml, crates/, package.json, .git, or its recursive
|
|
246
|
+
// on-disk size exceeds a small budget (~1MB), it was almost certainly created
|
|
247
|
+
// by the full-repo clone bug — return true so the caller can wipe + rewrite
|
|
248
|
+
// just the single SKILL.md. Any recursive-stat or read errors are swallowed
|
|
249
|
+
// and reported as "not bloated" to avoid false-positive deletions.
|
|
250
|
+
function isBloatedRufloSkillDir(dir) {
|
|
251
|
+
try {
|
|
252
|
+
const bloatMarkers = ['Cargo.toml', 'crates', 'package.json', '.git', 'agentdb.rvf', 'docs', 'plugins'];
|
|
253
|
+
for (const marker of bloatMarkers) {
|
|
254
|
+
if (fs.existsSync(path.join(dir, marker)))
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
const BLOAT_BYTES_THRESHOLD = 1_048_576; // 1 MB — a canonical SKILL.md is ~2KB
|
|
258
|
+
let bytes = 0;
|
|
259
|
+
const walk = (p) => {
|
|
260
|
+
const entries = fs.readdirSync(p, { withFileTypes: true });
|
|
261
|
+
for (const entry of entries) {
|
|
262
|
+
const child = path.join(p, entry.name);
|
|
263
|
+
if (entry.isDirectory()) {
|
|
264
|
+
walk(child);
|
|
265
|
+
}
|
|
266
|
+
else if (entry.isFile()) {
|
|
267
|
+
try {
|
|
268
|
+
bytes += fs.statSync(child).size;
|
|
269
|
+
if (bytes > BLOAT_BYTES_THRESHOLD)
|
|
270
|
+
throw new Error('__bloat_threshold__');
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
if (err instanceof Error && err.message === '__bloat_threshold__')
|
|
274
|
+
throw err;
|
|
275
|
+
// Ignore stat errors for individual files.
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (bytes > BLOAT_BYTES_THRESHOLD)
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
try {
|
|
283
|
+
walk(dir);
|
|
284
|
+
}
|
|
285
|
+
catch (err) {
|
|
286
|
+
if (err instanceof Error && err.message === '__bloat_threshold__')
|
|
287
|
+
return true;
|
|
288
|
+
// Any other walk error → don't declare bloat.
|
|
289
|
+
}
|
|
290
|
+
return bytes > BLOAT_BYTES_THRESHOLD;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
161
296
|
async function maybeInstallSkillsSh(ctx) {
|
|
162
297
|
try {
|
|
163
298
|
if (ctx.flags['no-skills-sh'] === true)
|
|
@@ -166,37 +301,52 @@ async function maybeInstallSkillsSh(ctx) {
|
|
|
166
301
|
return;
|
|
167
302
|
if (/^(1|true|on|yes)$/i.test(String(process.env.RUFLO_NO_SKILLS_SH || '')))
|
|
168
303
|
return;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (
|
|
304
|
+
const skillDir = path.join(ctx.cwd, '.agents', 'skills', 'ruflo');
|
|
305
|
+
const skillFile = path.join(skillDir, 'SKILL.md');
|
|
306
|
+
// Idempotency gate. Three cases:
|
|
307
|
+
// 1. Directory absent → materialize.
|
|
308
|
+
// 2. Directory present but "bloated" (Cargo.toml/crates/ or >1MB) →
|
|
309
|
+
// previous `npx skills add` full-repo clone left junk behind
|
|
310
|
+
// (#2777). Wipe and re-materialize so `rm -rf .agents/skills/ruflo`
|
|
311
|
+
// + re-init is a valid recovery path.
|
|
312
|
+
// 3. Directory present and healthy (just our SKILL.md) → skip.
|
|
313
|
+
let mode = 'create';
|
|
314
|
+
if (fs.existsSync(skillDir)) {
|
|
315
|
+
if (isBloatedRufloSkillDir(skillDir)) {
|
|
316
|
+
mode = 'rewrite';
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
mode = 'skip';
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (mode === 'skip') {
|
|
180
323
|
output.writeln();
|
|
181
324
|
output.writeln(output.dim(' skills.sh registration already present at .agents/skills/ruflo — skipping'));
|
|
182
325
|
return;
|
|
183
326
|
}
|
|
184
|
-
const npxCmd = process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
|
185
|
-
if (!commandExists('npx'))
|
|
186
|
-
return;
|
|
187
327
|
output.writeln();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
328
|
+
if (mode === 'rewrite') {
|
|
329
|
+
output.printInfo('Cleaning up bloated .agents/skills/ruflo/ from a prior init (#2777) and re-materializing the single platform SKILL.md…');
|
|
330
|
+
try {
|
|
331
|
+
fs.rmSync(skillDir, { recursive: true, force: true });
|
|
332
|
+
}
|
|
333
|
+
catch (err) {
|
|
334
|
+
output.writeln(output.dim(` Could not remove ${skillDir}: ${err instanceof Error ? err.message : String(err)}`));
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
output.printInfo('Registering the core `ruflo` skill for cross-agent discovery (.agents/skills/ruflo/SKILL.md)…');
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
343
|
+
fs.writeFileSync(skillFile, RUFLO_PLATFORM_SKILL_MD, 'utf-8');
|
|
344
|
+
output.writeln(output.success(' ✓ ruflo skill materialized at .agents/skills/ruflo/SKILL.md — available to any agent in this project'));
|
|
193
345
|
output.writeln(output.dim(' Want all 267 plugin skills? npx skills add ruvnet/ruflo --all'));
|
|
194
346
|
output.writeln(output.dim(' Opt out next time: --no-skills-sh or RUFLO_NO_SKILLS_SH=1'));
|
|
195
347
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
// mismatch, unknown package. Log a soft note; users can retry manually.
|
|
199
|
-
output.writeln(output.dim(' skills.sh registration skipped (network or npx cache) — retry with: npx skills add ruvnet/ruflo --skill ruflo --yes'));
|
|
348
|
+
catch (err) {
|
|
349
|
+
output.writeln(output.dim(` skills.sh registration skipped (write failed: ${err instanceof Error ? err.message : String(err)})`));
|
|
200
350
|
}
|
|
201
351
|
}
|
|
202
352
|
catch {
|
|
@@ -583,6 +733,13 @@ const initAction = async (ctx) => {
|
|
|
583
733
|
try {
|
|
584
734
|
output.writeln(output.dim(` Model: ${embeddingModel}`));
|
|
585
735
|
output.writeln(output.dim(' Hyperbolic: Enabled (Poincaré ball)'));
|
|
736
|
+
// #2770: On Windows, `npx` ships as `npx.cmd`; execFileSync cannot spawn
|
|
737
|
+
// a .cmd file without going through cmd.exe. Enable shell on win32 so
|
|
738
|
+
// cmd.exe resolves the .cmd extension. POSIX keeps shell:false.
|
|
739
|
+
// NOTE: shell:true joins args by spaces and passes to cmd.exe — the args
|
|
740
|
+
// here are hard-coded flags + an npm package name pre-validated against
|
|
741
|
+
// /^[a-zA-Z0-9_-]+\/[a-zA-Z0-9._-]+$/, so no injection risk. If
|
|
742
|
+
// user-controlled args are ever added, escape them before spawn.
|
|
586
743
|
execFileInit('npx', [
|
|
587
744
|
'@claude-flow/cli@latest', 'embeddings', 'init',
|
|
588
745
|
'--model', embeddingModel,
|
|
@@ -591,6 +748,8 @@ const initAction = async (ctx) => {
|
|
|
591
748
|
stdio: 'pipe',
|
|
592
749
|
cwd: ctx.cwd,
|
|
593
750
|
timeout: 30000,
|
|
751
|
+
shell: process.platform === 'win32',
|
|
752
|
+
windowsHide: true,
|
|
594
753
|
});
|
|
595
754
|
output.writeln(output.success(' ✓ Embeddings initialized'));
|
|
596
755
|
output.writeln(output.dim(' Run "embeddings init --download" to download model'));
|
|
@@ -822,6 +981,13 @@ const wizardCommand = {
|
|
|
822
981
|
throw new Error(`Invalid embedding model name: ${embeddingModel}`);
|
|
823
982
|
}
|
|
824
983
|
try {
|
|
984
|
+
// #2770: On Windows, `npx` ships as `npx.cmd`; execFileSync cannot spawn
|
|
985
|
+
// a .cmd file without going through cmd.exe. Enable shell on win32 so
|
|
986
|
+
// cmd.exe resolves the .cmd extension. POSIX keeps shell:false.
|
|
987
|
+
// NOTE: shell:true joins args by spaces and passes to cmd.exe — the args
|
|
988
|
+
// here are hard-coded flags + an npm package name pre-validated against
|
|
989
|
+
// /^[a-zA-Z0-9_-]+\/[a-zA-Z0-9._-]+$/, so no injection risk. If
|
|
990
|
+
// user-controlled args are ever added, escape them before spawn.
|
|
825
991
|
execFileSync('npx', [
|
|
826
992
|
'@claude-flow/cli@latest', 'embeddings', 'init',
|
|
827
993
|
'--model', embeddingModel,
|
|
@@ -830,6 +996,8 @@ const wizardCommand = {
|
|
|
830
996
|
stdio: 'pipe',
|
|
831
997
|
cwd: ctx.cwd,
|
|
832
998
|
timeout: 30000,
|
|
999
|
+
shell: process.platform === 'win32',
|
|
1000
|
+
windowsHide: true,
|
|
833
1001
|
});
|
|
834
1002
|
output.writeln(output.success(' ✓ Embeddings configured'));
|
|
835
1003
|
embeddingsInitialized = true;
|
|
@@ -89,7 +89,18 @@ const storeCommand = {
|
|
|
89
89
|
const ttl = ctx.flags.ttl;
|
|
90
90
|
const tags = ctx.flags.tags ? ctx.flags.tags.split(',') : [];
|
|
91
91
|
const asVector = ctx.flags.vector;
|
|
92
|
-
|
|
92
|
+
// #2775: the parser's `applyDefaults` only materializes global-option
|
|
93
|
+
// defaults, not per-subcommand ones — so despite the `default: true`
|
|
94
|
+
// above, `ctx.flags.upsert` arrives as `undefined` unless the user
|
|
95
|
+
// passes `--upsert` explicitly. That is exactly the trap #2594 tried
|
|
96
|
+
// to close: `store → delete → store` and even plain `store → store`
|
|
97
|
+
// (against an active row) both fall through to the bridge's strict
|
|
98
|
+
// insert, and before #2775's ON-CONFLICT-DO-UPDATE-WHERE-status-
|
|
99
|
+
// 'deleted' fix, both dead-ended with the misleading #2735 guard.
|
|
100
|
+
// Materialize the declared default locally so it takes effect
|
|
101
|
+
// regardless of the parser gap: only an explicit `--no-upsert` (which
|
|
102
|
+
// arrives as `false`) turns it off.
|
|
103
|
+
const upsert = ctx.flags.upsert !== false;
|
|
93
104
|
if (!key) {
|
|
94
105
|
output.printError('Key is required. Use --key or -k');
|
|
95
106
|
return { success: false, exitCode: 1 };
|