claude-flow 3.7.0-alpha.11 → 3.7.0-alpha.13
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/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 +201 -201
- package/.claude/agents/dual-mode/codex-worker.md +183 -183
- 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 +335 -335
- 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 +547 -547
- package/.claude/agents/github/swarm-pr.md +398 -398
- package/.claude/agents/github/sync-coordinator.md +422 -422
- 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/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 +564 -564
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/context-persistence-hook.mjs +1979 -1979
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +106 -106
- package/.claude/helpers/github-setup.sh +28 -28
- 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/hook-handler.cjs +263 -263
- package/.claude/helpers/intelligence.cjs +230 -230
- 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 +488 -488
- 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 +819 -819
- 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/scheduled_tasks.lock +1 -1
- package/.claude/settings.json +285 -283
- package/.claude/settings.json.bak +526 -526
- package/.claude/settings.local.json +1 -0
- 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 -0
- 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 +1263 -1263
- 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 +647 -647
- 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-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 +74 -74
- package/.claude-plugin/marketplace.json +170 -170
- package/.claude-plugin/plugin.json +71 -71
- package/.claude-plugin/scripts/install.sh +234 -234
- package/.claude-plugin/scripts/uninstall.sh +36 -36
- package/.claude-plugin/scripts/verify.sh +108 -108
- package/LICENSE +21 -21
- package/README.md +393 -393
- package/bin/cli.js +11 -11
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +1 -1
- package/v3/@claude-flow/cli/README.md +393 -393
- package/v3/@claude-flow/cli/bin/cli.js +220 -220
- 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/dist/src/commands/completions.js +409 -409
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +57 -17
- 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 +9 -9
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +22 -3
- 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-adapter.js +1 -1
- package/v3/@claude-flow/cli/dist/src/index.js +14 -12
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +226 -226
- package/v3/@claude-flow/cli/dist/src/init/executor.js +490 -456
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +645 -645
- package/v3/@claude-flow/cli/dist/src/init/mcp-generator.js +4 -4
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +858 -858
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +44 -5
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +71 -46
- package/v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.js +36 -11
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +84 -84
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +360 -360
- package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
- package/v3/@claude-flow/cli/dist/src/memory/sona-optimizer.js +0 -1
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +25 -2
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +186 -10
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +3 -2
- package/v3/@claude-flow/guidance/README.md +1195 -1195
- package/v3/@claude-flow/guidance/dist/analyzer.js +9 -0
- package/v3/@claude-flow/guidance/package.json +198 -198
- package/v3/@claude-flow/shared/README.md +323 -323
- package/v3/@claude-flow/shared/package.json +43 -43
- package/v3/README.md +493 -493
|
@@ -81,11 +81,11 @@ export async function buildRabitqIndex(options) {
|
|
|
81
81
|
const SQL = await initSqlJs();
|
|
82
82
|
const fileBuffer = fs.readFileSync(dbPath);
|
|
83
83
|
const db = new SQL.Database(fileBuffer);
|
|
84
|
-
const result = db.exec(`
|
|
85
|
-
SELECT id, key, namespace, embedding
|
|
86
|
-
FROM memory_entries
|
|
87
|
-
WHERE status = 'active' AND embedding IS NOT NULL
|
|
88
|
-
LIMIT 50000
|
|
84
|
+
const result = db.exec(`
|
|
85
|
+
SELECT id, key, namespace, embedding
|
|
86
|
+
FROM memory_entries
|
|
87
|
+
WHERE status = 'active' AND embedding IS NOT NULL
|
|
88
|
+
LIMIT 50000
|
|
89
89
|
`);
|
|
90
90
|
if (result[0]?.values) {
|
|
91
91
|
for (const row of result[0].values) {
|
|
@@ -137,7 +137,6 @@ export class SONAOptimizer {
|
|
|
137
137
|
if (this.sonaEngine !== undefined)
|
|
138
138
|
return; // already attempted
|
|
139
139
|
try {
|
|
140
|
-
// @ts-ignore — optional peer dep; types resolve only when installed.
|
|
141
140
|
const sona = await import('@ruvector/sona');
|
|
142
141
|
const EngineCtor = sona.SonaEngine || sona.default?.SonaEngine;
|
|
143
142
|
if (EngineCtor) {
|
|
@@ -62,34 +62,34 @@ function parseArgs() {
|
|
|
62
62
|
* Show help message
|
|
63
63
|
*/
|
|
64
64
|
function showHelp() {
|
|
65
|
-
console.log(`
|
|
66
|
-
Headless Runtime for RuFlo V3
|
|
67
|
-
|
|
68
|
-
Usage:
|
|
69
|
-
headless --worker <type> Run a specific worker
|
|
70
|
-
headless --daemon Start background daemon
|
|
71
|
-
headless --benchmark Run performance benchmarks
|
|
72
|
-
headless --status Show system status
|
|
73
|
-
|
|
74
|
-
Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
|
|
75
|
-
|
|
76
|
-
Options:
|
|
77
|
-
-w, --worker <type> Worker type to run
|
|
78
|
-
-d, --daemon Run as daemon
|
|
79
|
-
-b, --benchmark Run benchmarks
|
|
80
|
-
-s, --status Show status
|
|
81
|
-
-t, --timeout <ms> Execution timeout (default: 60000)
|
|
82
|
-
-v, --verbose Verbose output
|
|
83
|
-
-h, --help Show help
|
|
84
|
-
|
|
85
|
-
Environment:
|
|
86
|
-
CLAUDE_FLOW_HEADLESS=true Enable headless mode
|
|
87
|
-
CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
|
|
88
|
-
|
|
89
|
-
Examples:
|
|
90
|
-
headless --worker audit --timeout 120000
|
|
91
|
-
headless --daemon
|
|
92
|
-
headless --benchmark
|
|
65
|
+
console.log(`
|
|
66
|
+
Headless Runtime for RuFlo V3
|
|
67
|
+
|
|
68
|
+
Usage:
|
|
69
|
+
headless --worker <type> Run a specific worker
|
|
70
|
+
headless --daemon Start background daemon
|
|
71
|
+
headless --benchmark Run performance benchmarks
|
|
72
|
+
headless --status Show system status
|
|
73
|
+
|
|
74
|
+
Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
|
|
75
|
+
|
|
76
|
+
Options:
|
|
77
|
+
-w, --worker <type> Worker type to run
|
|
78
|
+
-d, --daemon Run as daemon
|
|
79
|
+
-b, --benchmark Run benchmarks
|
|
80
|
+
-s, --status Show status
|
|
81
|
+
-t, --timeout <ms> Execution timeout (default: 60000)
|
|
82
|
+
-v, --verbose Verbose output
|
|
83
|
+
-h, --help Show help
|
|
84
|
+
|
|
85
|
+
Environment:
|
|
86
|
+
CLAUDE_FLOW_HEADLESS=true Enable headless mode
|
|
87
|
+
CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
headless --worker audit --timeout 120000
|
|
91
|
+
headless --daemon
|
|
92
|
+
headless --benchmark
|
|
93
93
|
`);
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
@@ -75,18 +75,18 @@ export const HEADLESS_WORKER_CONFIGS = {
|
|
|
75
75
|
description: 'AI-powered security analysis',
|
|
76
76
|
enabled: true,
|
|
77
77
|
headless: {
|
|
78
|
-
promptTemplate: `Analyze this codebase for security vulnerabilities:
|
|
79
|
-
- Check for hardcoded secrets (API keys, passwords)
|
|
80
|
-
- Identify SQL injection risks
|
|
81
|
-
- Find XSS vulnerabilities
|
|
82
|
-
- Check for insecure dependencies
|
|
83
|
-
- Identify authentication/authorization issues
|
|
84
|
-
|
|
85
|
-
Provide a JSON report with:
|
|
86
|
-
{
|
|
87
|
-
"vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
|
|
88
|
-
"riskScore": 0-100,
|
|
89
|
-
"recommendations": ["..."]
|
|
78
|
+
promptTemplate: `Analyze this codebase for security vulnerabilities:
|
|
79
|
+
- Check for hardcoded secrets (API keys, passwords)
|
|
80
|
+
- Identify SQL injection risks
|
|
81
|
+
- Find XSS vulnerabilities
|
|
82
|
+
- Check for insecure dependencies
|
|
83
|
+
- Identify authentication/authorization issues
|
|
84
|
+
|
|
85
|
+
Provide a JSON report with:
|
|
86
|
+
{
|
|
87
|
+
"vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
|
|
88
|
+
"riskScore": 0-100,
|
|
89
|
+
"recommendations": ["..."]
|
|
90
90
|
}`,
|
|
91
91
|
sandbox: 'strict',
|
|
92
92
|
model: 'haiku',
|
|
@@ -103,13 +103,13 @@ Provide a JSON report with:
|
|
|
103
103
|
description: 'AI optimization suggestions',
|
|
104
104
|
enabled: true,
|
|
105
105
|
headless: {
|
|
106
|
-
promptTemplate: `Analyze this codebase for performance optimizations:
|
|
107
|
-
- Identify N+1 query patterns
|
|
108
|
-
- Find unnecessary re-renders in React
|
|
109
|
-
- Suggest caching opportunities
|
|
110
|
-
- Identify memory leaks
|
|
111
|
-
- Find redundant computations
|
|
112
|
-
|
|
106
|
+
promptTemplate: `Analyze this codebase for performance optimizations:
|
|
107
|
+
- Identify N+1 query patterns
|
|
108
|
+
- Find unnecessary re-renders in React
|
|
109
|
+
- Suggest caching opportunities
|
|
110
|
+
- Identify memory leaks
|
|
111
|
+
- Find redundant computations
|
|
112
|
+
|
|
113
113
|
Provide actionable suggestions with code examples.`,
|
|
114
114
|
sandbox: 'permissive',
|
|
115
115
|
model: 'sonnet',
|
|
@@ -126,13 +126,13 @@ Provide actionable suggestions with code examples.`,
|
|
|
126
126
|
description: 'AI test gap analysis',
|
|
127
127
|
enabled: true,
|
|
128
128
|
headless: {
|
|
129
|
-
promptTemplate: `Analyze test coverage and identify gaps:
|
|
130
|
-
- Find untested functions and classes
|
|
131
|
-
- Identify edge cases not covered
|
|
132
|
-
- Suggest new test scenarios
|
|
133
|
-
- Check for missing error handling tests
|
|
134
|
-
- Identify integration test gaps
|
|
135
|
-
|
|
129
|
+
promptTemplate: `Analyze test coverage and identify gaps:
|
|
130
|
+
- Find untested functions and classes
|
|
131
|
+
- Identify edge cases not covered
|
|
132
|
+
- Suggest new test scenarios
|
|
133
|
+
- Check for missing error handling tests
|
|
134
|
+
- Identify integration test gaps
|
|
135
|
+
|
|
136
136
|
For each gap, provide a test skeleton.`,
|
|
137
137
|
sandbox: 'permissive',
|
|
138
138
|
model: 'sonnet',
|
|
@@ -149,13 +149,13 @@ For each gap, provide a test skeleton.`,
|
|
|
149
149
|
description: 'AI documentation generation',
|
|
150
150
|
enabled: false,
|
|
151
151
|
headless: {
|
|
152
|
-
promptTemplate: `Generate documentation for undocumented code:
|
|
153
|
-
- Add JSDoc comments to functions
|
|
154
|
-
- Create README sections for modules
|
|
155
|
-
- Document API endpoints
|
|
156
|
-
- Add inline comments for complex logic
|
|
157
|
-
- Generate usage examples
|
|
158
|
-
|
|
152
|
+
promptTemplate: `Generate documentation for undocumented code:
|
|
153
|
+
- Add JSDoc comments to functions
|
|
154
|
+
- Create README sections for modules
|
|
155
|
+
- Document API endpoints
|
|
156
|
+
- Add inline comments for complex logic
|
|
157
|
+
- Generate usage examples
|
|
158
|
+
|
|
159
159
|
Focus on public APIs and exported functions.`,
|
|
160
160
|
sandbox: 'permissive',
|
|
161
161
|
model: 'haiku',
|
|
@@ -172,19 +172,19 @@ Focus on public APIs and exported functions.`,
|
|
|
172
172
|
description: 'Deep knowledge acquisition',
|
|
173
173
|
enabled: false,
|
|
174
174
|
headless: {
|
|
175
|
-
promptTemplate: `Deeply analyze this codebase to learn:
|
|
176
|
-
- Architectural patterns used
|
|
177
|
-
- Coding conventions
|
|
178
|
-
- Domain-specific terminology
|
|
179
|
-
- Common patterns and idioms
|
|
180
|
-
- Team preferences
|
|
181
|
-
|
|
182
|
-
Provide insights as JSON:
|
|
183
|
-
{
|
|
184
|
-
"architecture": { "patterns": [...], "style": "..." },
|
|
185
|
-
"conventions": { "naming": "...", "formatting": "..." },
|
|
186
|
-
"domains": ["..."],
|
|
187
|
-
"insights": ["..."]
|
|
175
|
+
promptTemplate: `Deeply analyze this codebase to learn:
|
|
176
|
+
- Architectural patterns used
|
|
177
|
+
- Coding conventions
|
|
178
|
+
- Domain-specific terminology
|
|
179
|
+
- Common patterns and idioms
|
|
180
|
+
- Team preferences
|
|
181
|
+
|
|
182
|
+
Provide insights as JSON:
|
|
183
|
+
{
|
|
184
|
+
"architecture": { "patterns": [...], "style": "..." },
|
|
185
|
+
"conventions": { "naming": "...", "formatting": "..." },
|
|
186
|
+
"domains": ["..."],
|
|
187
|
+
"insights": ["..."]
|
|
188
188
|
}`,
|
|
189
189
|
sandbox: 'strict',
|
|
190
190
|
model: 'opus',
|
|
@@ -201,13 +201,13 @@ Provide insights as JSON:
|
|
|
201
201
|
description: 'AI refactoring suggestions',
|
|
202
202
|
enabled: false,
|
|
203
203
|
headless: {
|
|
204
|
-
promptTemplate: `Suggest refactoring opportunities:
|
|
205
|
-
- Identify code duplication
|
|
206
|
-
- Suggest better abstractions
|
|
207
|
-
- Find opportunities for design patterns
|
|
208
|
-
- Identify overly complex functions
|
|
209
|
-
- Suggest module reorganization
|
|
210
|
-
|
|
204
|
+
promptTemplate: `Suggest refactoring opportunities:
|
|
205
|
+
- Identify code duplication
|
|
206
|
+
- Suggest better abstractions
|
|
207
|
+
- Find opportunities for design patterns
|
|
208
|
+
- Identify overly complex functions
|
|
209
|
+
- Suggest module reorganization
|
|
210
|
+
|
|
211
211
|
Provide before/after code examples.`,
|
|
212
212
|
sandbox: 'permissive',
|
|
213
213
|
model: 'sonnet',
|
|
@@ -224,13 +224,13 @@ Provide before/after code examples.`,
|
|
|
224
224
|
description: 'Deep code analysis',
|
|
225
225
|
enabled: false,
|
|
226
226
|
headless: {
|
|
227
|
-
promptTemplate: `Perform deep analysis of this codebase:
|
|
228
|
-
- Understand data flow
|
|
229
|
-
- Map dependencies
|
|
230
|
-
- Identify architectural issues
|
|
231
|
-
- Find potential bugs
|
|
232
|
-
- Analyze error handling
|
|
233
|
-
|
|
227
|
+
promptTemplate: `Perform deep analysis of this codebase:
|
|
228
|
+
- Understand data flow
|
|
229
|
+
- Map dependencies
|
|
230
|
+
- Identify architectural issues
|
|
231
|
+
- Find potential bugs
|
|
232
|
+
- Analyze error handling
|
|
233
|
+
|
|
234
234
|
Provide comprehensive report.`,
|
|
235
235
|
sandbox: 'strict',
|
|
236
236
|
model: 'opus',
|
|
@@ -247,18 +247,18 @@ Provide comprehensive report.`,
|
|
|
247
247
|
description: 'Predictive preloading',
|
|
248
248
|
enabled: false,
|
|
249
249
|
headless: {
|
|
250
|
-
promptTemplate: `Based on recent activity, predict what the developer needs:
|
|
251
|
-
- Files likely to be edited next
|
|
252
|
-
- Tests that should be run
|
|
253
|
-
- Documentation to reference
|
|
254
|
-
- Dependencies to check
|
|
255
|
-
|
|
256
|
-
Provide preload suggestions as JSON:
|
|
257
|
-
{
|
|
258
|
-
"filesToPreload": ["..."],
|
|
259
|
-
"testsToRun": ["..."],
|
|
260
|
-
"docsToReference": ["..."],
|
|
261
|
-
"confidence": 0.0-1.0
|
|
250
|
+
promptTemplate: `Based on recent activity, predict what the developer needs:
|
|
251
|
+
- Files likely to be edited next
|
|
252
|
+
- Tests that should be run
|
|
253
|
+
- Documentation to reference
|
|
254
|
+
- Dependencies to check
|
|
255
|
+
|
|
256
|
+
Provide preload suggestions as JSON:
|
|
257
|
+
{
|
|
258
|
+
"filesToPreload": ["..."],
|
|
259
|
+
"testsToRun": ["..."],
|
|
260
|
+
"docsToReference": ["..."],
|
|
261
|
+
"confidence": 0.0-1.0
|
|
262
262
|
}`,
|
|
263
263
|
sandbox: 'strict',
|
|
264
264
|
model: 'haiku',
|
|
@@ -794,20 +794,20 @@ export class HeadlessWorkerExecutor extends EventEmitter {
|
|
|
794
794
|
*/
|
|
795
795
|
buildPrompt(template, context) {
|
|
796
796
|
if (!context) {
|
|
797
|
-
return `${template}
|
|
798
|
-
|
|
799
|
-
## Instructions
|
|
800
|
-
|
|
797
|
+
return `${template}
|
|
798
|
+
|
|
799
|
+
## Instructions
|
|
800
|
+
|
|
801
801
|
Analyze the codebase and provide your response following the format specified in the task.`;
|
|
802
802
|
}
|
|
803
|
-
return `${template}
|
|
804
|
-
|
|
805
|
-
## Codebase Context
|
|
806
|
-
|
|
807
|
-
${context}
|
|
808
|
-
|
|
809
|
-
## Instructions
|
|
810
|
-
|
|
803
|
+
return `${template}
|
|
804
|
+
|
|
805
|
+
## Codebase Context
|
|
806
|
+
|
|
807
|
+
${context}
|
|
808
|
+
|
|
809
|
+
## Instructions
|
|
810
|
+
|
|
811
811
|
Analyze the above codebase context and provide your response following the format specified in the task.`;
|
|
812
812
|
}
|
|
813
813
|
/**
|
|
@@ -63,6 +63,7 @@ export declare class WorkerDaemon extends EventEmitter {
|
|
|
63
63
|
private config;
|
|
64
64
|
private workers;
|
|
65
65
|
private timers;
|
|
66
|
+
private queuePollTimer?;
|
|
66
67
|
private running;
|
|
67
68
|
private startedAt?;
|
|
68
69
|
private projectRoot;
|
|
@@ -94,8 +95,11 @@ export declare class WorkerDaemon extends EventEmitter {
|
|
|
94
95
|
*/
|
|
95
96
|
static getEffectiveCpuCount(): number;
|
|
96
97
|
/**
|
|
97
|
-
* Read daemon-specific config from .claude-flow/config.json
|
|
98
|
-
* Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'
|
|
98
|
+
* Read daemon-specific config from .claude-flow/config.{json,yaml,yml}.
|
|
99
|
+
* Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'.
|
|
100
|
+
* #1844: prefer JSON when both exist (existing behavior) but fall back
|
|
101
|
+
* to YAML so operators using the v3 canonical YAML format aren't silently
|
|
102
|
+
* ignored. The chosen path is logged at info level.
|
|
99
103
|
*/
|
|
100
104
|
private readDaemonConfigFromFile;
|
|
101
105
|
/**
|
|
@@ -138,6 +142,14 @@ export declare class WorkerDaemon extends EventEmitter {
|
|
|
138
142
|
* Start the daemon and all enabled workers
|
|
139
143
|
*/
|
|
140
144
|
start(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* #1845: ingest queue entries written by mcp__hooks_worker-dispatch.
|
|
147
|
+
* Each entry is a JSON file at `.claude-flow/daemon-queue/<id>.json`
|
|
148
|
+
* with `{ workerId, trigger, context, enqueuedAt }`. We move processed
|
|
149
|
+
* files to `.claude-flow/daemon-queue/.processed/` so the daemon never
|
|
150
|
+
* re-runs the same dispatch and operators can inspect history.
|
|
151
|
+
*/
|
|
152
|
+
private processDispatchQueue;
|
|
141
153
|
/**
|
|
142
154
|
* Stop the daemon and all workers
|
|
143
155
|
*/
|
|
@@ -170,6 +182,17 @@ export declare class WorkerDaemon extends EventEmitter {
|
|
|
170
182
|
* Run the actual worker logic
|
|
171
183
|
*/
|
|
172
184
|
private runWorkerLogic;
|
|
185
|
+
/**
|
|
186
|
+
* #1793: persist a headless worker result to the same metrics file the
|
|
187
|
+
* local fallback writes to. Without this, AI-mode workers produced rich
|
|
188
|
+
* structured output (audit findings, perf signals, test-gap analysis)
|
|
189
|
+
* that lived only in `.claude-flow/logs/headless/*_result.log` and was
|
|
190
|
+
* invisible to `npx ruflo memory stats` or the metrics consumers.
|
|
191
|
+
*
|
|
192
|
+
* The mapping mirrors the `*Local` worker implementations below so a
|
|
193
|
+
* single consumer path works regardless of execution mode.
|
|
194
|
+
*/
|
|
195
|
+
private persistHeadlessResult;
|
|
173
196
|
private runMapWorker;
|
|
174
197
|
/**
|
|
175
198
|
* Local audit worker (fallback when headless unavailable)
|
|
@@ -34,6 +34,9 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
34
34
|
config;
|
|
35
35
|
workers = new Map();
|
|
36
36
|
timers = new Map();
|
|
37
|
+
// #1845: separate timer for the MCP-dispatch queue poller. Kept off
|
|
38
|
+
// the per-worker map so stop() clears both kinds without confusion.
|
|
39
|
+
queuePollTimer;
|
|
37
40
|
running = false;
|
|
38
41
|
startedAt;
|
|
39
42
|
projectRoot;
|
|
@@ -169,22 +172,52 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
169
172
|
return cpus().length || 1;
|
|
170
173
|
}
|
|
171
174
|
/**
|
|
172
|
-
* Read daemon-specific config from .claude-flow/config.json
|
|
173
|
-
* Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'
|
|
175
|
+
* Read daemon-specific config from .claude-flow/config.{json,yaml,yml}.
|
|
176
|
+
* Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'.
|
|
177
|
+
* #1844: prefer JSON when both exist (existing behavior) but fall back
|
|
178
|
+
* to YAML so operators using the v3 canonical YAML format aren't silently
|
|
179
|
+
* ignored. The chosen path is logged at info level.
|
|
174
180
|
*/
|
|
175
181
|
readDaemonConfigFromFile(claudeFlowDir) {
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
const jsonPath = join(claudeFlowDir, 'config.json');
|
|
183
|
+
const yamlPath = join(claudeFlowDir, 'config.yaml');
|
|
184
|
+
const ymlPath = join(claudeFlowDir, 'config.yml');
|
|
185
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
186
|
+
let raw;
|
|
187
|
+
let chosenPath;
|
|
188
|
+
if (existsSync(jsonPath)) {
|
|
189
|
+
try {
|
|
190
|
+
raw = JSON.parse(readFileSync(jsonPath, 'utf-8'));
|
|
191
|
+
chosenPath = jsonPath;
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return {};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else if (existsSync(yamlPath) || existsSync(ymlPath)) {
|
|
198
|
+
const yPath = existsSync(yamlPath) ? yamlPath : ymlPath;
|
|
199
|
+
try {
|
|
200
|
+
// Lazy-load yaml so the daemon doesn't hard-require it; if the
|
|
201
|
+
// dep isn't installed, fall back to the previous warn-only path.
|
|
202
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
203
|
+
const yamlMod = require('yaml');
|
|
204
|
+
const parsed = yamlMod.parse(readFileSync(yPath, 'utf-8'));
|
|
205
|
+
if (parsed && typeof parsed === 'object') {
|
|
206
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
207
|
+
raw = parsed;
|
|
208
|
+
chosenPath = yPath;
|
|
209
|
+
}
|
|
183
210
|
}
|
|
211
|
+
catch {
|
|
212
|
+
this.log('warn', `Found ${yPath} but yaml parser unavailable. Install \`yaml\` or convert to JSON. Falling back to defaults.`);
|
|
213
|
+
return {};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!raw || !chosenPath) {
|
|
184
217
|
return {};
|
|
185
218
|
}
|
|
219
|
+
this.log('info', `Daemon config loaded from ${chosenPath}`);
|
|
186
220
|
try {
|
|
187
|
-
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
188
221
|
// Support both flat keys at root and nested under scopes.project
|
|
189
222
|
const cfg = raw?.scopes?.project ?? raw;
|
|
190
223
|
const rawCpuLoad = cfg['daemon.resourceThresholds.maxCpuLoad'] ?? raw['daemon.resourceThresholds.maxCpuLoad'];
|
|
@@ -401,10 +434,90 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
401
434
|
this.scheduleWorker(workerConfig);
|
|
402
435
|
}
|
|
403
436
|
}
|
|
437
|
+
// #1845: poll the MCP-dispatch queue directory so workers requested
|
|
438
|
+
// via mcp__hooks_worker-dispatch (in a separate process) actually
|
|
439
|
+
// execute here. Previously the dispatch wrote to a process-local Map
|
|
440
|
+
// that the daemon could never see.
|
|
441
|
+
this.queuePollTimer = setInterval(() => {
|
|
442
|
+
void this.processDispatchQueue();
|
|
443
|
+
}, 5_000);
|
|
444
|
+
if (typeof this.queuePollTimer.unref === 'function') {
|
|
445
|
+
this.queuePollTimer.unref();
|
|
446
|
+
}
|
|
404
447
|
// Save state
|
|
405
448
|
this.saveState();
|
|
406
449
|
this.log('info', `Daemon started (PID: ${process.pid}, CPUs: ${cpus().length}, workers: ${this.config.workers.filter(w => w.enabled).length}, maxCpuLoad: ${this.config.resourceThresholds.maxCpuLoad}, minFreeMemoryPercent: ${this.config.resourceThresholds.minFreeMemoryPercent}%)`);
|
|
407
450
|
}
|
|
451
|
+
/**
|
|
452
|
+
* #1845: ingest queue entries written by mcp__hooks_worker-dispatch.
|
|
453
|
+
* Each entry is a JSON file at `.claude-flow/daemon-queue/<id>.json`
|
|
454
|
+
* with `{ workerId, trigger, context, enqueuedAt }`. We move processed
|
|
455
|
+
* files to `.claude-flow/daemon-queue/.processed/` so the daemon never
|
|
456
|
+
* re-runs the same dispatch and operators can inspect history.
|
|
457
|
+
*/
|
|
458
|
+
async processDispatchQueue() {
|
|
459
|
+
if (!this.running)
|
|
460
|
+
return;
|
|
461
|
+
const queueDir = join(this.projectRoot, '.claude-flow', 'daemon-queue');
|
|
462
|
+
if (!existsSync(queueDir))
|
|
463
|
+
return;
|
|
464
|
+
let entries;
|
|
465
|
+
try {
|
|
466
|
+
const fs = await import('fs');
|
|
467
|
+
entries = fs.readdirSync(queueDir).filter((n) => n.endsWith('.json'));
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (entries.length === 0)
|
|
473
|
+
return;
|
|
474
|
+
const fs = await import('fs');
|
|
475
|
+
const processedDir = join(queueDir, '.processed');
|
|
476
|
+
if (!existsSync(processedDir)) {
|
|
477
|
+
try {
|
|
478
|
+
fs.mkdirSync(processedDir, { recursive: true });
|
|
479
|
+
}
|
|
480
|
+
catch { /* race ok */ }
|
|
481
|
+
}
|
|
482
|
+
for (const entry of entries) {
|
|
483
|
+
const src = join(queueDir, entry);
|
|
484
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
485
|
+
let payload;
|
|
486
|
+
try {
|
|
487
|
+
payload = JSON.parse(fs.readFileSync(src, 'utf-8'));
|
|
488
|
+
}
|
|
489
|
+
catch {
|
|
490
|
+
// Malformed entry — quarantine so we don't loop on it
|
|
491
|
+
try {
|
|
492
|
+
fs.renameSync(src, join(processedDir, `bad-${entry}`));
|
|
493
|
+
}
|
|
494
|
+
catch { /* nothing more we can do */ }
|
|
495
|
+
continue;
|
|
496
|
+
}
|
|
497
|
+
const trigger = payload?.trigger;
|
|
498
|
+
const workerId = payload?.workerId;
|
|
499
|
+
if (!trigger || !this.config.workers.some((w) => w.type === trigger)) {
|
|
500
|
+
try {
|
|
501
|
+
fs.renameSync(src, join(processedDir, `unknown-${entry}`));
|
|
502
|
+
}
|
|
503
|
+
catch { /* ok */ }
|
|
504
|
+
continue;
|
|
505
|
+
}
|
|
506
|
+
try {
|
|
507
|
+
this.log('info', `Dequeued ${trigger}${workerId ? ` (id=${workerId})` : ''} from MCP dispatch queue`);
|
|
508
|
+
await this.triggerWorker(trigger);
|
|
509
|
+
}
|
|
510
|
+
catch (err) {
|
|
511
|
+
this.log('warn', `Queued worker ${trigger} failed: ${err.message}`);
|
|
512
|
+
}
|
|
513
|
+
finally {
|
|
514
|
+
try {
|
|
515
|
+
fs.renameSync(src, join(processedDir, entry));
|
|
516
|
+
}
|
|
517
|
+
catch { /* ignore */ }
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
408
521
|
/**
|
|
409
522
|
* Stop the daemon and all workers
|
|
410
523
|
*/
|
|
@@ -420,6 +533,11 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
420
533
|
this.log('info', `Stopped worker: ${type}`);
|
|
421
534
|
}
|
|
422
535
|
this.timers.clear();
|
|
536
|
+
// #1845: stop the MCP-dispatch queue poller too.
|
|
537
|
+
if (this.queuePollTimer) {
|
|
538
|
+
clearInterval(this.queuePollTimer);
|
|
539
|
+
this.queuePollTimer = undefined;
|
|
540
|
+
}
|
|
423
541
|
this.running = false;
|
|
424
542
|
this.removePidFile();
|
|
425
543
|
this.saveState();
|
|
@@ -607,6 +725,17 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
607
725
|
try {
|
|
608
726
|
this.log('info', `Running ${workerConfig.type} in headless mode (Claude Code AI)`);
|
|
609
727
|
const result = await this.headlessExecutor.execute(workerConfig.type);
|
|
728
|
+
// #1793: persist the headless result to the same metrics files the
|
|
729
|
+
// local workers write to. Without this, AI-mode runs produced rich
|
|
730
|
+
// parsedOutput that lived only in `.claude-flow/logs/headless/*` and
|
|
731
|
+
// never reached `.claude-flow/metrics/<name>.json` — `memory stats`
|
|
732
|
+
// and downstream consumers saw nothing despite successful runs.
|
|
733
|
+
try {
|
|
734
|
+
this.persistHeadlessResult(workerConfig.type, result);
|
|
735
|
+
}
|
|
736
|
+
catch (persistError) {
|
|
737
|
+
this.log('warn', `Failed to persist headless result for ${workerConfig.type}: ${persistError.message}`);
|
|
738
|
+
}
|
|
610
739
|
return {
|
|
611
740
|
mode: 'headless',
|
|
612
741
|
...result,
|
|
@@ -651,6 +780,53 @@ export class WorkerDaemon extends EventEmitter {
|
|
|
651
780
|
return { status: 'unknown worker type', mode: 'local' };
|
|
652
781
|
}
|
|
653
782
|
}
|
|
783
|
+
/**
|
|
784
|
+
* #1793: persist a headless worker result to the same metrics file the
|
|
785
|
+
* local fallback writes to. Without this, AI-mode workers produced rich
|
|
786
|
+
* structured output (audit findings, perf signals, test-gap analysis)
|
|
787
|
+
* that lived only in `.claude-flow/logs/headless/*_result.log` and was
|
|
788
|
+
* invisible to `npx ruflo memory stats` or the metrics consumers.
|
|
789
|
+
*
|
|
790
|
+
* The mapping mirrors the `*Local` worker implementations below so a
|
|
791
|
+
* single consumer path works regardless of execution mode.
|
|
792
|
+
*/
|
|
793
|
+
persistHeadlessResult(workerType, result) {
|
|
794
|
+
const metricsDir = join(this.projectRoot, '.claude-flow', 'metrics');
|
|
795
|
+
if (!existsSync(metricsDir))
|
|
796
|
+
mkdirSync(metricsDir, { recursive: true });
|
|
797
|
+
// Filename mirrors the local-mode worker writes (security-audit.json,
|
|
798
|
+
// performance.json, test-gaps.json) so a downstream reader doesn't
|
|
799
|
+
// care which mode produced the data.
|
|
800
|
+
const filenameMap = {
|
|
801
|
+
audit: 'security-audit.json',
|
|
802
|
+
optimize: 'performance.json',
|
|
803
|
+
testgaps: 'test-gaps.json',
|
|
804
|
+
document: 'documentation.json',
|
|
805
|
+
refactor: 'refactor.json',
|
|
806
|
+
deepdive: 'deepdive.json',
|
|
807
|
+
ultralearn: 'ultralearn.json',
|
|
808
|
+
predict: 'predictions.json',
|
|
809
|
+
};
|
|
810
|
+
const filename = filenameMap[workerType] ?? `${workerType}.json`;
|
|
811
|
+
const metricsFile = join(metricsDir, filename);
|
|
812
|
+
const persisted = {
|
|
813
|
+
timestamp: result.timestamp instanceof Date ? result.timestamp.toISOString() : new Date().toISOString(),
|
|
814
|
+
mode: 'headless',
|
|
815
|
+
workerType,
|
|
816
|
+
model: result.model,
|
|
817
|
+
durationMs: result.durationMs,
|
|
818
|
+
tokensUsed: result.tokensUsed,
|
|
819
|
+
executionId: result.executionId,
|
|
820
|
+
success: result.success,
|
|
821
|
+
// Structured findings live here when the worker emits JSON (e.g. the
|
|
822
|
+
// audit worker's vulnerability list). Fall back to a raw-output
|
|
823
|
+
// pointer so consumers can still locate the full log.
|
|
824
|
+
findings: result.parsedOutput ?? null,
|
|
825
|
+
rawOutputPreview: typeof result.output === 'string' ? result.output.slice(0, 2000) : undefined,
|
|
826
|
+
rawOutputLength: typeof result.output === 'string' ? result.output.length : 0,
|
|
827
|
+
};
|
|
828
|
+
writeFileSync(metricsFile, JSON.stringify(persisted, null, 2));
|
|
829
|
+
}
|
|
654
830
|
// Worker implementations
|
|
655
831
|
async runMapWorker() {
|
|
656
832
|
// Scan project structure and update metrics
|
|
@@ -71,29 +71,29 @@ function parseArgs() {
|
|
|
71
71
|
* Print help message
|
|
72
72
|
*/
|
|
73
73
|
function printHelp() {
|
|
74
|
-
console.log(`
|
|
75
|
-
Seraphine Genesis Deployer
|
|
76
|
-
==========================
|
|
77
|
-
|
|
78
|
-
Deploy the foundational Claude Flow pattern model.
|
|
79
|
-
|
|
80
|
-
Usage:
|
|
81
|
-
npx ts-node deploy-seraphine.ts [options]
|
|
82
|
-
|
|
83
|
-
Options:
|
|
84
|
-
--output, -o <path> Output file path
|
|
85
|
-
--to-ipfs, --ipfs Upload to IPFS
|
|
86
|
-
--anonymize, -a <level> Anonymization level (minimal|standard|strict|paranoid)
|
|
87
|
-
--gateway, -g <url> IPFS gateway URL
|
|
88
|
-
--no-pin Don't pin to pinning service
|
|
89
|
-
--no-validate Skip validation
|
|
90
|
-
--verbose, -v Verbose output
|
|
91
|
-
--help, -h Show this help
|
|
92
|
-
|
|
93
|
-
Examples:
|
|
94
|
-
npx ts-node deploy-seraphine.ts --output ./seraphine-genesis.cfp.json
|
|
95
|
-
npx ts-node deploy-seraphine.ts --to-ipfs --anonymize strict
|
|
96
|
-
npx ts-node deploy-seraphine.ts --to-ipfs --gateway https://dweb.link
|
|
74
|
+
console.log(`
|
|
75
|
+
Seraphine Genesis Deployer
|
|
76
|
+
==========================
|
|
77
|
+
|
|
78
|
+
Deploy the foundational Claude Flow pattern model.
|
|
79
|
+
|
|
80
|
+
Usage:
|
|
81
|
+
npx ts-node deploy-seraphine.ts [options]
|
|
82
|
+
|
|
83
|
+
Options:
|
|
84
|
+
--output, -o <path> Output file path
|
|
85
|
+
--to-ipfs, --ipfs Upload to IPFS
|
|
86
|
+
--anonymize, -a <level> Anonymization level (minimal|standard|strict|paranoid)
|
|
87
|
+
--gateway, -g <url> IPFS gateway URL
|
|
88
|
+
--no-pin Don't pin to pinning service
|
|
89
|
+
--no-validate Skip validation
|
|
90
|
+
--verbose, -v Verbose output
|
|
91
|
+
--help, -h Show this help
|
|
92
|
+
|
|
93
|
+
Examples:
|
|
94
|
+
npx ts-node deploy-seraphine.ts --output ./seraphine-genesis.cfp.json
|
|
95
|
+
npx ts-node deploy-seraphine.ts --to-ipfs --anonymize strict
|
|
96
|
+
npx ts-node deploy-seraphine.ts --to-ipfs --gateway https://dweb.link
|
|
97
97
|
`);
|
|
98
98
|
}
|
|
99
99
|
/**
|