moflo 4.0.4 → 4.1.0

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.
Files changed (422) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
  2. package/.claude/agents/analysis/analyze-code-quality.md +178 -178
  3. package/.claude/agents/analysis/code-analyzer.md +209 -209
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
  6. package/.claude/agents/base-template-generator.md +42 -42
  7. package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
  8. package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
  9. package/.claude/agents/consensus/gossip-coordinator.md +62 -62
  10. package/.claude/agents/consensus/performance-benchmarker.md +850 -850
  11. package/.claude/agents/consensus/quorum-manager.md +822 -822
  12. package/.claude/agents/consensus/raft-manager.md +62 -62
  13. package/.claude/agents/consensus/security-manager.md +621 -621
  14. package/.claude/agents/core/coder.md +265 -265
  15. package/.claude/agents/core/planner.md +167 -167
  16. package/.claude/agents/core/researcher.md +189 -189
  17. package/.claude/agents/core/reviewer.md +325 -325
  18. package/.claude/agents/core/tester.md +318 -318
  19. package/.claude/agents/custom/test-long-runner.md +44 -44
  20. package/.claude/agents/data/ml/data-ml-model.md +192 -192
  21. package/.claude/agents/development/backend/dev-backend-api.md +141 -141
  22. package/.claude/agents/development/dev-backend-api.md +344 -344
  23. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
  24. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
  25. package/.claude/agents/dual-mode/codex-coordinator.md +224 -224
  26. package/.claude/agents/dual-mode/codex-worker.md +211 -211
  27. package/.claude/agents/dual-mode/dual-orchestrator.md +291 -291
  28. package/.claude/agents/flow-nexus/app-store.md +87 -87
  29. package/.claude/agents/flow-nexus/authentication.md +68 -68
  30. package/.claude/agents/flow-nexus/challenges.md +80 -80
  31. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  32. package/.claude/agents/flow-nexus/payments.md +82 -82
  33. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  34. package/.claude/agents/flow-nexus/swarm.md +75 -75
  35. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  36. package/.claude/agents/flow-nexus/workflow.md +83 -83
  37. package/.claude/agents/github/code-review-swarm.md +537 -537
  38. package/.claude/agents/github/github-modes.md +172 -172
  39. package/.claude/agents/github/issue-tracker.md +318 -318
  40. package/.claude/agents/github/multi-repo-swarm.md +552 -552
  41. package/.claude/agents/github/pr-manager.md +190 -190
  42. package/.claude/agents/github/project-board-sync.md +508 -508
  43. package/.claude/agents/github/release-manager.md +366 -366
  44. package/.claude/agents/github/release-swarm.md +582 -582
  45. package/.claude/agents/github/repo-architect.md +397 -397
  46. package/.claude/agents/github/swarm-issue.md +572 -572
  47. package/.claude/agents/github/swarm-pr.md +427 -427
  48. package/.claude/agents/github/sync-coordinator.md +451 -451
  49. package/.claude/agents/github/workflow-automation.md +634 -634
  50. package/.claude/agents/goal/agent.md +815 -815
  51. package/.claude/agents/goal/code-goal-planner.md +445 -445
  52. package/.claude/agents/goal/goal-planner.md +167 -167
  53. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -129
  54. package/.claude/agents/hive-mind/queen-coordinator.md +202 -202
  55. package/.claude/agents/hive-mind/scout-explorer.md +241 -241
  56. package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -192
  57. package/.claude/agents/hive-mind/worker-specialist.md +216 -216
  58. package/.claude/agents/neural/safla-neural.md +73 -73
  59. package/.claude/agents/optimization/benchmark-suite.md +664 -664
  60. package/.claude/agents/optimization/load-balancer.md +430 -430
  61. package/.claude/agents/optimization/performance-monitor.md +671 -671
  62. package/.claude/agents/optimization/resource-allocator.md +673 -673
  63. package/.claude/agents/optimization/topology-optimizer.md +807 -807
  64. package/.claude/agents/payments/agentic-payments.md +126 -126
  65. package/.claude/agents/reasoning/agent.md +815 -815
  66. package/.claude/agents/reasoning/goal-planner.md +72 -72
  67. package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
  68. package/.claude/agents/sparc/architecture.md +471 -471
  69. package/.claude/agents/sparc/pseudocode.md +317 -317
  70. package/.claude/agents/sparc/refinement.md +524 -524
  71. package/.claude/agents/sparc/specification.md +275 -275
  72. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
  73. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  74. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  75. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  76. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  77. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  78. package/.claude/agents/swarm/adaptive-coordinator.md +395 -395
  79. package/.claude/agents/swarm/hierarchical-coordinator.md +326 -326
  80. package/.claude/agents/swarm/mesh-coordinator.md +391 -391
  81. package/.claude/agents/templates/automation-smart-agent.md +204 -204
  82. package/.claude/agents/templates/coordinator-swarm-init.md +104 -104
  83. package/.claude/agents/templates/github-pr-manager.md +176 -176
  84. package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
  85. package/.claude/agents/templates/memory-coordinator.md +186 -186
  86. package/.claude/agents/templates/migration-plan.md +745 -745
  87. package/.claude/agents/templates/orchestrator-task.md +138 -138
  88. package/.claude/agents/templates/performance-analyzer.md +198 -198
  89. package/.claude/agents/templates/sparc-coordinator.md +182 -182
  90. package/.claude/agents/testing/production-validator.md +394 -394
  91. package/.claude/agents/testing/tdd-london-swarm.md +243 -243
  92. package/.claude/agents/testing/unit/tdd-london-swarm.md +243 -243
  93. package/.claude/agents/testing/validation/production-validator.md +394 -394
  94. package/.claude/agents/v3/v3-integration-architect.md +345 -345
  95. package/.claude/agents/v3/v3-memory-specialist.md +317 -317
  96. package/.claude/agents/v3/v3-performance-engineer.md +396 -396
  97. package/.claude/agents/v3/v3-queen-coordinator.md +97 -97
  98. package/.claude/agents/v3/v3-security-architect.md +173 -173
  99. package/.claude/commands/agents/README.md +10 -10
  100. package/.claude/commands/agents/agent-capabilities.md +21 -21
  101. package/.claude/commands/agents/agent-coordination.md +28 -28
  102. package/.claude/commands/agents/agent-spawning.md +28 -28
  103. package/.claude/commands/agents/agent-types.md +26 -26
  104. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  105. package/.claude/commands/analysis/README.md +9 -9
  106. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  107. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  108. package/.claude/commands/analysis/performance-report.md +25 -25
  109. package/.claude/commands/analysis/token-efficiency.md +44 -44
  110. package/.claude/commands/analysis/token-usage.md +25 -25
  111. package/.claude/commands/automation/README.md +9 -9
  112. package/.claude/commands/automation/auto-agent.md +122 -122
  113. package/.claude/commands/automation/self-healing.md +105 -105
  114. package/.claude/commands/automation/session-memory.md +89 -89
  115. package/.claude/commands/automation/smart-agents.md +72 -72
  116. package/.claude/commands/automation/smart-spawn.md +25 -25
  117. package/.claude/commands/automation/workflow-select.md +25 -25
  118. package/.claude/commands/claude-flow-help.md +103 -103
  119. package/.claude/commands/claude-flow-memory.md +107 -107
  120. package/.claude/commands/claude-flow-swarm.md +205 -205
  121. package/.claude/commands/coordination/README.md +9 -9
  122. package/.claude/commands/coordination/agent-spawn.md +25 -25
  123. package/.claude/commands/coordination/init.md +44 -44
  124. package/.claude/commands/coordination/orchestrate.md +43 -43
  125. package/.claude/commands/coordination/spawn.md +45 -45
  126. package/.claude/commands/coordination/swarm-init.md +85 -85
  127. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  128. package/.claude/commands/flow-nexus/app-store.md +123 -123
  129. package/.claude/commands/flow-nexus/challenges.md +119 -119
  130. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  131. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  132. package/.claude/commands/flow-nexus/payments.md +115 -115
  133. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  134. package/.claude/commands/flow-nexus/swarm.md +86 -86
  135. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  136. package/.claude/commands/flow-nexus/workflow.md +114 -114
  137. package/.claude/commands/github/README.md +11 -11
  138. package/.claude/commands/github/code-review-swarm.md +513 -513
  139. package/.claude/commands/github/code-review.md +25 -25
  140. package/.claude/commands/github/github-modes.md +146 -146
  141. package/.claude/commands/github/github-swarm.md +121 -121
  142. package/.claude/commands/github/issue-tracker.md +291 -291
  143. package/.claude/commands/github/issue-triage.md +25 -25
  144. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  145. package/.claude/commands/github/pr-enhance.md +26 -26
  146. package/.claude/commands/github/pr-manager.md +169 -169
  147. package/.claude/commands/github/project-board-sync.md +470 -470
  148. package/.claude/commands/github/release-manager.md +337 -337
  149. package/.claude/commands/github/release-swarm.md +543 -543
  150. package/.claude/commands/github/repo-analyze.md +25 -25
  151. package/.claude/commands/github/repo-architect.md +366 -366
  152. package/.claude/commands/github/swarm-issue.md +481 -481
  153. package/.claude/commands/github/swarm-pr.md +284 -284
  154. package/.claude/commands/github/sync-coordinator.md +300 -300
  155. package/.claude/commands/github/workflow-automation.md +441 -441
  156. package/.claude/commands/hive-mind/README.md +17 -17
  157. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  158. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  159. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  160. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  161. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  162. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  163. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  164. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  165. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  166. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  167. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  168. package/.claude/commands/hooks/README.md +11 -11
  169. package/.claude/commands/hooks/overview.md +57 -57
  170. package/.claude/commands/hooks/post-edit.md +117 -117
  171. package/.claude/commands/hooks/post-task.md +112 -112
  172. package/.claude/commands/hooks/pre-edit.md +113 -113
  173. package/.claude/commands/hooks/pre-task.md +111 -111
  174. package/.claude/commands/hooks/session-end.md +118 -118
  175. package/.claude/commands/hooks/setup.md +102 -102
  176. package/.claude/commands/memory/README.md +9 -9
  177. package/.claude/commands/memory/memory-persist.md +25 -25
  178. package/.claude/commands/memory/memory-search.md +25 -25
  179. package/.claude/commands/memory/memory-usage.md +25 -25
  180. package/.claude/commands/memory/neural.md +47 -47
  181. package/.claude/commands/monitoring/README.md +9 -9
  182. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  183. package/.claude/commands/monitoring/agents.md +44 -44
  184. package/.claude/commands/monitoring/real-time-view.md +25 -25
  185. package/.claude/commands/monitoring/status.md +46 -46
  186. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  187. package/.claude/commands/optimization/README.md +9 -9
  188. package/.claude/commands/optimization/auto-topology.md +61 -61
  189. package/.claude/commands/optimization/cache-manage.md +25 -25
  190. package/.claude/commands/optimization/parallel-execute.md +25 -25
  191. package/.claude/commands/optimization/parallel-execution.md +49 -49
  192. package/.claude/commands/optimization/topology-optimize.md +25 -25
  193. package/.claude/commands/pair/README.md +260 -260
  194. package/.claude/commands/pair/commands.md +545 -545
  195. package/.claude/commands/pair/config.md +509 -509
  196. package/.claude/commands/pair/examples.md +511 -511
  197. package/.claude/commands/pair/modes.md +347 -347
  198. package/.claude/commands/pair/session.md +406 -406
  199. package/.claude/commands/pair/start.md +208 -208
  200. package/.claude/commands/sparc/analyzer.md +51 -51
  201. package/.claude/commands/sparc/architect.md +53 -53
  202. package/.claude/commands/sparc/ask.md +97 -97
  203. package/.claude/commands/sparc/batch-executor.md +54 -54
  204. package/.claude/commands/sparc/code.md +89 -89
  205. package/.claude/commands/sparc/coder.md +54 -54
  206. package/.claude/commands/sparc/debug.md +83 -83
  207. package/.claude/commands/sparc/debugger.md +54 -54
  208. package/.claude/commands/sparc/designer.md +53 -53
  209. package/.claude/commands/sparc/devops.md +109 -109
  210. package/.claude/commands/sparc/docs-writer.md +80 -80
  211. package/.claude/commands/sparc/documenter.md +54 -54
  212. package/.claude/commands/sparc/innovator.md +54 -54
  213. package/.claude/commands/sparc/integration.md +83 -83
  214. package/.claude/commands/sparc/mcp.md +117 -117
  215. package/.claude/commands/sparc/memory-manager.md +54 -54
  216. package/.claude/commands/sparc/optimizer.md +54 -54
  217. package/.claude/commands/sparc/orchestrator.md +131 -131
  218. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  219. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  220. package/.claude/commands/sparc/researcher.md +54 -54
  221. package/.claude/commands/sparc/reviewer.md +54 -54
  222. package/.claude/commands/sparc/security-review.md +80 -80
  223. package/.claude/commands/sparc/sparc-modes.md +174 -174
  224. package/.claude/commands/sparc/sparc.md +111 -111
  225. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  226. package/.claude/commands/sparc/supabase-admin.md +348 -348
  227. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  228. package/.claude/commands/sparc/tdd.md +54 -54
  229. package/.claude/commands/sparc/tester.md +54 -54
  230. package/.claude/commands/sparc/tutorial.md +79 -79
  231. package/.claude/commands/sparc/workflow-manager.md +54 -54
  232. package/.claude/commands/sparc.md +166 -166
  233. package/.claude/commands/stream-chain/pipeline.md +120 -120
  234. package/.claude/commands/stream-chain/run.md +69 -69
  235. package/.claude/commands/swarm/README.md +15 -15
  236. package/.claude/commands/swarm/analysis.md +95 -95
  237. package/.claude/commands/swarm/development.md +96 -96
  238. package/.claude/commands/swarm/examples.md +168 -168
  239. package/.claude/commands/swarm/maintenance.md +102 -102
  240. package/.claude/commands/swarm/optimization.md +117 -117
  241. package/.claude/commands/swarm/research.md +136 -136
  242. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  243. package/.claude/commands/swarm/swarm-background.md +8 -8
  244. package/.claude/commands/swarm/swarm-init.md +19 -19
  245. package/.claude/commands/swarm/swarm-modes.md +8 -8
  246. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  247. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  248. package/.claude/commands/swarm/swarm-status.md +8 -8
  249. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  250. package/.claude/commands/swarm/swarm.md +27 -27
  251. package/.claude/commands/swarm/testing.md +131 -131
  252. package/.claude/commands/training/README.md +9 -9
  253. package/.claude/commands/training/model-update.md +25 -25
  254. package/.claude/commands/training/neural-patterns.md +73 -73
  255. package/.claude/commands/training/neural-train.md +25 -25
  256. package/.claude/commands/training/pattern-learn.md +25 -25
  257. package/.claude/commands/training/specialization.md +62 -62
  258. package/.claude/commands/truth/start.md +142 -142
  259. package/.claude/commands/verify/check.md +49 -49
  260. package/.claude/commands/verify/start.md +127 -127
  261. package/.claude/commands/workflows/README.md +9 -9
  262. package/.claude/commands/workflows/development.md +77 -77
  263. package/.claude/commands/workflows/research.md +62 -62
  264. package/.claude/commands/workflows/workflow-create.md +25 -25
  265. package/.claude/commands/workflows/workflow-execute.md +25 -25
  266. package/.claude/commands/workflows/workflow-export.md +25 -25
  267. package/.claude/config/v3-dependency-optimization.json +265 -265
  268. package/.claude/config/v3-performance-targets.json +250 -250
  269. package/.claude/helpers/README.md +96 -96
  270. package/.claude/helpers/aggressive-microcompact.mjs +36 -36
  271. package/.claude/helpers/auto-memory-hook.mjs +363 -363
  272. package/.claude/helpers/context-persistence-hook.mjs +1979 -1979
  273. package/.claude/helpers/github-safe.js +106 -106
  274. package/.claude/helpers/learning-service.mjs +1144 -1144
  275. package/.claude/helpers/metrics-db.mjs +488 -488
  276. package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
  277. package/.claude/mcp.json +12 -12
  278. package/.claude/settings.json +2 -2
  279. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  280. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  281. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  282. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  283. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  284. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  285. package/.claude/skills/dual-mode/README.md +71 -71
  286. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  287. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  288. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  289. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -738
  290. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -1157
  291. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -610
  292. package/.claude/skills/github-code-review/SKILL.md +1 -1
  293. package/.claude/skills/github-multi-repo/SKILL.md +2 -2
  294. package/.claude/skills/github-project-management/SKILL.md +1 -1
  295. package/.claude/skills/github-release-management/SKILL.md +2 -2
  296. package/.claude/skills/github-workflow-automation/SKILL.md +1 -1
  297. package/.claude/skills/hive-mind-advanced/SKILL.md +4 -4
  298. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  299. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  300. package/.claude/skills/performance-analysis/SKILL.md +563 -563
  301. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  302. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  303. package/.claude/skills/skill-builder/SKILL.md +910 -910
  304. package/.claude/skills/sparc-methodology/SKILL.md +2 -2
  305. package/.claude/skills/stream-chain/SKILL.md +563 -563
  306. package/.claude/skills/swarm-advanced/SKILL.md +4 -4
  307. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  308. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  309. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  310. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  311. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  312. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  313. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  314. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  315. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  316. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  317. package/.claude/skills/verification-quality/SKILL.md +649 -649
  318. package/.claude/skills/worker-benchmarks/skill.md +135 -135
  319. package/.claude/skills/worker-integration/skill.md +154 -154
  320. package/.claude/statusline.mjs +109 -109
  321. package/.claude-plugin/README.md +6 -6
  322. package/.claude-plugin/docs/INSTALLATION.md +4 -4
  323. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +5 -5
  324. package/.claude-plugin/docs/QUICKSTART.md +1 -1
  325. package/.claude-plugin/docs/STRUCTURE.md +128 -128
  326. package/.claude-plugin/hooks/hooks.json +74 -74
  327. package/.claude-plugin/marketplace.json +5 -5
  328. package/.claude-plugin/plugin.json +4 -4
  329. package/README.md +148 -148
  330. package/bin/cli.js +12 -12
  331. package/bin/npx-repair.js +7 -7
  332. package/bin/npx-safe-launch.js +9 -9
  333. package/package.json +115 -114
  334. package/v3/@claude-flow/cli/README.md +5 -5
  335. package/v3/@claude-flow/cli/bin/cli.js +156 -156
  336. package/v3/@claude-flow/cli/bin/mcp-server.js +189 -189
  337. package/v3/@claude-flow/cli/dist/src/commands/analyze.d.ts +1 -1
  338. package/v3/@claude-flow/cli/dist/src/commands/analyze.js +1 -1
  339. package/v3/@claude-flow/cli/dist/src/commands/claims.d.ts +1 -1
  340. package/v3/@claude-flow/cli/dist/src/commands/claims.js +2 -2
  341. package/v3/@claude-flow/cli/dist/src/commands/completions.d.ts +1 -1
  342. package/v3/@claude-flow/cli/dist/src/commands/completions.js +1 -1
  343. package/v3/@claude-flow/cli/dist/src/commands/config.js +36 -2
  344. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +54 -7
  345. package/v3/@claude-flow/cli/dist/src/commands/deployment.d.ts +1 -1
  346. package/v3/@claude-flow/cli/dist/src/commands/deployment.js +2 -2
  347. package/v3/@claude-flow/cli/dist/src/commands/doctor.d.ts +1 -1
  348. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +1 -1
  349. package/v3/@claude-flow/cli/dist/src/commands/embeddings.d.ts +1 -1
  350. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +2 -2
  351. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +90 -90
  352. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +30 -112
  353. package/v3/@claude-flow/cli/dist/src/commands/init.js +6 -1
  354. package/v3/@claude-flow/cli/dist/src/commands/memory.js +30 -30
  355. package/v3/@claude-flow/cli/dist/src/commands/neural.d.ts +1 -1
  356. package/v3/@claude-flow/cli/dist/src/commands/neural.js +2 -2
  357. package/v3/@claude-flow/cli/dist/src/commands/orc.js +1 -0
  358. package/v3/@claude-flow/cli/dist/src/commands/performance.d.ts +1 -1
  359. package/v3/@claude-flow/cli/dist/src/commands/performance.js +2 -2
  360. package/v3/@claude-flow/cli/dist/src/commands/plugins.d.ts +1 -1
  361. package/v3/@claude-flow/cli/dist/src/commands/plugins.js +2 -2
  362. package/v3/@claude-flow/cli/dist/src/commands/providers.d.ts +1 -1
  363. package/v3/@claude-flow/cli/dist/src/commands/providers.js +2 -2
  364. package/v3/@claude-flow/cli/dist/src/commands/route.d.ts +1 -1
  365. package/v3/@claude-flow/cli/dist/src/commands/route.js +1 -1
  366. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  367. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +29 -29
  368. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.d.ts +1 -1
  369. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +1 -1
  370. package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.d.ts +1 -1
  371. package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.js +1 -1
  372. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +113 -113
  373. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +97 -97
  374. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  375. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.d.ts +1 -1
  376. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +2 -2
  377. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +36 -36
  378. package/v3/@claude-flow/cli/dist/src/commands/security.d.ts +1 -1
  379. package/v3/@claude-flow/cli/dist/src/commands/security.js +2 -2
  380. package/v3/@claude-flow/cli/dist/src/config/moflo-config.d.ts +13 -1
  381. package/v3/@claude-flow/cli/dist/src/config/moflo-config.js +93 -41
  382. package/v3/@claude-flow/cli/dist/src/index.d.ts +1 -1
  383. package/v3/@claude-flow/cli/dist/src/index.js +2 -2
  384. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +2 -2
  385. package/v3/@claude-flow/cli/dist/src/init/executor.js +3 -3
  386. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +640 -640
  387. package/v3/@claude-flow/cli/dist/src/init/moflo-init.d.ts +10 -0
  388. package/v3/@claude-flow/cli/dist/src/init/moflo-init.js +101 -20
  389. package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +2 -2
  390. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +783 -783
  391. package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +30 -13
  392. package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.d.ts +1 -1
  393. package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js +1 -1
  394. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +61 -61
  395. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2212 -2263
  396. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  397. package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +1 -1
  398. package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +1 -1
  399. package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.d.ts +1 -1
  400. package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.js +1 -1
  401. package/v3/@claude-flow/cli/dist/src/services/agent-router.d.ts +14 -0
  402. package/v3/@claude-flow/cli/dist/src/services/agent-router.js +86 -7
  403. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
  404. package/v3/@claude-flow/cli/dist/src/services/index.d.ts +1 -3
  405. package/v3/@claude-flow/cli/dist/src/services/index.js +1 -2
  406. package/v3/@claude-flow/cli/dist/src/services/learning-service.js +54 -54
  407. package/v3/@claude-flow/cli/dist/src/services/ruvector-training.d.ts +1 -1
  408. package/v3/@claude-flow/cli/dist/src/services/ruvector-training.js +1 -1
  409. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +24 -3
  410. package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +123 -12
  411. package/v3/@claude-flow/cli/dist/src/services/workflow-gate.d.ts +1 -0
  412. package/v3/@claude-flow/cli/dist/src/services/workflow-gate.js +20 -5
  413. package/v3/@claude-flow/cli/dist/src/suggest.d.ts +1 -1
  414. package/v3/@claude-flow/cli/dist/src/suggest.js +1 -1
  415. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  416. package/v3/@claude-flow/cli/package.json +6 -6
  417. package/v3/@claude-flow/guidance/README.md +6 -6
  418. package/v3/@claude-flow/guidance/package.json +1 -1
  419. package/v3/@claude-flow/memory/README.md +1 -1
  420. package/v3/@claude-flow/shared/README.md +1 -1
  421. package/v3/@claude-flow/shared/package.json +42 -42
  422. package/v3/README.md +3 -3
@@ -323,10 +323,10 @@ export class LearningService {
323
323
  const { results } = this.shortTermIndex.search(embedding, 1);
324
324
  if (results.length > 0 && results[0].similarity > CONFIG.patterns.dedupThreshold) {
325
325
  const existingId = results[0].patternId;
326
- dbRun(this.db, `
327
- UPDATE learned_patterns
328
- SET uses = uses + 1, last_used_at = datetime('now'), quality = MAX(quality, ?)
329
- WHERE id = ?
326
+ dbRun(this.db, `
327
+ UPDATE learned_patterns
328
+ SET uses = uses + 1, last_used_at = datetime('now'), quality = MAX(quality, ?)
329
+ WHERE id = ?
330
330
  `, [quality, existingId]);
331
331
  this.dirty = true;
332
332
  this.checkPromotion(existingId);
@@ -336,19 +336,19 @@ export class LearningService {
336
336
  const { results: ltResults } = this.longTermIndex.search(embedding, 1);
337
337
  if (ltResults.length > 0 && ltResults[0].similarity > CONFIG.patterns.dedupThreshold) {
338
338
  const existingId = ltResults[0].patternId;
339
- dbRun(this.db, `
340
- UPDATE learned_patterns
341
- SET uses = uses + 1, last_used_at = datetime('now'), quality = MAX(quality, ?)
342
- WHERE id = ?
339
+ dbRun(this.db, `
340
+ UPDATE learned_patterns
341
+ SET uses = uses + 1, last_used_at = datetime('now'), quality = MAX(quality, ?)
342
+ WHERE id = ?
343
343
  `, [quality, existingId]);
344
344
  this.dirty = true;
345
345
  return { id: existingId, action: 'updated', similarity: ltResults[0].similarity };
346
346
  }
347
347
  const id = `pat_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
348
348
  const embeddingJson = JSON.stringify(Array.from(embedding));
349
- dbRun(this.db, `
350
- INSERT INTO learned_patterns (id, pattern, domain, quality, uses, tier, embedding, created_at)
351
- VALUES (?, ?, ?, ?, 1, 'short-term', ?, datetime('now'))
349
+ dbRun(this.db, `
350
+ INSERT INTO learned_patterns (id, pattern, domain, quality, uses, tier, embedding, created_at)
351
+ VALUES (?, ?, ?, ?, 1, 'short-term', ?, datetime('now'))
352
352
  `, [id, pattern, domain, quality, embeddingJson]);
353
353
  this.dirty = true;
354
354
  this.shortTermIndex.add(id, embedding);
@@ -396,11 +396,11 @@ export class LearningService {
396
396
  */
397
397
  async promotePatterns() {
398
398
  this.requireDb();
399
- const candidates = dbAll(this.db, `
400
- SELECT id FROM learned_patterns
401
- WHERE tier = 'short-term'
402
- AND uses >= ?
403
- AND quality >= ?
399
+ const candidates = dbAll(this.db, `
400
+ SELECT id FROM learned_patterns
401
+ WHERE tier = 'short-term'
402
+ AND uses >= ?
403
+ AND quality >= ?
404
404
  `, [CONFIG.patterns.promotionThreshold, CONFIG.patterns.qualityThreshold]);
405
405
  let promoted = 0;
406
406
  for (const { id } of candidates) {
@@ -422,19 +422,19 @@ export class LearningService {
422
422
  const promoted = await this.promotePatterns();
423
423
  // 2. Prune old short-term patterns (older than 30 days, low usage)
424
424
  const pruneDate = new Date(Date.now() - CONFIG.consolidation.pruneAge).toISOString();
425
- const pruned = dbRun(this.db, `
426
- DELETE FROM learned_patterns
427
- WHERE tier = 'short-term'
428
- AND created_at < ?
429
- AND uses < ?
425
+ const pruned = dbRun(this.db, `
426
+ DELETE FROM learned_patterns
427
+ WHERE tier = 'short-term'
428
+ AND created_at < ?
429
+ AND uses < ?
430
430
  `, [pruneDate, CONFIG.consolidation.minUsageForKeep]);
431
431
  // 3. Prune old long-term patterns
432
- const ltPruned = dbRun(this.db, `
433
- DELETE FROM learned_patterns
434
- WHERE tier = 'long-term'
435
- AND last_used_at IS NOT NULL
436
- AND last_used_at < ?
437
- AND uses < ?
432
+ const ltPruned = dbRun(this.db, `
433
+ DELETE FROM learned_patterns
434
+ WHERE tier = 'long-term'
435
+ AND last_used_at IS NOT NULL
436
+ AND last_used_at < ?
437
+ AND uses < ?
438
438
  `, [pruneDate, CONFIG.consolidation.minUsageForKeep]);
439
439
  // 4. Enforce max limits
440
440
  this.enforceMaxShortTerm();
@@ -517,19 +517,19 @@ export class LearningService {
517
517
  }
518
518
  }
519
519
  ensureSchema() {
520
- this.db.run(`
521
- CREATE TABLE IF NOT EXISTS learned_patterns (
522
- id TEXT PRIMARY KEY,
523
- pattern TEXT NOT NULL,
524
- domain TEXT DEFAULT 'general',
525
- quality REAL DEFAULT 0.5,
526
- uses INTEGER DEFAULT 0,
527
- tier TEXT DEFAULT 'short-term',
528
- embedding TEXT,
529
- created_at TEXT DEFAULT (datetime('now')),
530
- last_used_at TEXT,
531
- promoted_at TEXT
532
- )
520
+ this.db.run(`
521
+ CREATE TABLE IF NOT EXISTS learned_patterns (
522
+ id TEXT PRIMARY KEY,
523
+ pattern TEXT NOT NULL,
524
+ domain TEXT DEFAULT 'general',
525
+ quality REAL DEFAULT 0.5,
526
+ uses INTEGER DEFAULT 0,
527
+ tier TEXT DEFAULT 'short-term',
528
+ embedding TEXT,
529
+ created_at TEXT DEFAULT (datetime('now')),
530
+ last_used_at TEXT,
531
+ promoted_at TEXT
532
+ )
533
533
  `);
534
534
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_lp_domain ON learned_patterns(domain)`);
535
535
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_lp_tier ON learned_patterns(tier)`);
@@ -564,8 +564,8 @@ export class LearningService {
564
564
  const uses = row.uses;
565
565
  const quality = row.quality;
566
566
  if (uses >= CONFIG.patterns.promotionThreshold && quality >= CONFIG.patterns.qualityThreshold) {
567
- dbRun(this.db, `
568
- UPDATE learned_patterns SET tier = 'long-term', promoted_at = datetime('now') WHERE id = ?
567
+ dbRun(this.db, `
568
+ UPDATE learned_patterns SET tier = 'long-term', promoted_at = datetime('now') WHERE id = ?
569
569
  `, [patternId]);
570
570
  this.dirty = true;
571
571
  // Move between indexes
@@ -590,11 +590,11 @@ export class LearningService {
590
590
  if (count <= CONFIG.patterns.maxShortTerm)
591
591
  return;
592
592
  const toRemove = count - CONFIG.patterns.maxShortTerm;
593
- const ids = dbAll(this.db, `
594
- SELECT id FROM learned_patterns
595
- WHERE tier = 'short-term'
596
- ORDER BY quality ASC, uses ASC
597
- LIMIT ?
593
+ const ids = dbAll(this.db, `
594
+ SELECT id FROM learned_patterns
595
+ WHERE tier = 'short-term'
596
+ ORDER BY quality ASC, uses ASC
597
+ LIMIT ?
598
598
  `, [toRemove]);
599
599
  for (const { id } of ids) {
600
600
  dbRun(this.db, 'DELETE FROM learned_patterns WHERE id = ?', [id]);
@@ -611,11 +611,11 @@ export class LearningService {
611
611
  if (count <= CONFIG.patterns.maxLongTerm)
612
612
  return;
613
613
  const toRemove = count - CONFIG.patterns.maxLongTerm;
614
- const ids = dbAll(this.db, `
615
- SELECT id FROM learned_patterns
616
- WHERE tier = 'long-term'
617
- ORDER BY quality ASC, uses ASC
618
- LIMIT ?
614
+ const ids = dbAll(this.db, `
615
+ SELECT id FROM learned_patterns
616
+ WHERE tier = 'long-term'
617
+ ORDER BY quality ASC, uses ASC
618
+ LIMIT ?
619
619
  `, [toRemove]);
620
620
  for (const { id } of ids) {
621
621
  dbRun(this.db, 'DELETE FROM learned_patterns WHERE id = ?', [id]);
@@ -623,8 +623,8 @@ export class LearningService {
623
623
  this.dirty = true;
624
624
  }
625
625
  deduplicateLongTerm() {
626
- const patterns = dbAll(this.db, `
627
- SELECT id, embedding, quality FROM learned_patterns WHERE tier = 'long-term'
626
+ const patterns = dbAll(this.db, `
627
+ SELECT id, embedding, quality FROM learned_patterns WHERE tier = 'long-term'
628
628
  `);
629
629
  const toDelete = new Set();
630
630
  for (let i = 0; i < patterns.length; i++) {
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * Backward Compatible: All v1 APIs preserved, SONA adds new capabilities
13
13
  *
14
- * Created with ❤️ by ruv.io
14
+ * Created with ❤️ by motailz.com
15
15
  */
16
16
  type BenchmarkResult = any;
17
17
  export interface TrainingConfig {
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * Backward Compatible: All v1 APIs preserved, SONA adds new capabilities
13
13
  *
14
- * Created with ❤️ by ruv.io
14
+ * Created with ❤️ by motailz.com
15
15
  */
16
16
  // Lazy-loaded WASM modules
17
17
  let microLoRA = null;
@@ -44,7 +44,7 @@ interface DaemonStatus {
44
44
  workers: Map<WorkerType, WorkerState>;
45
45
  config: DaemonConfig;
46
46
  }
47
- interface DaemonConfig {
47
+ export interface DaemonConfig {
48
48
  autoStart: boolean;
49
49
  logDir: string;
50
50
  stateFile: string;
@@ -70,6 +70,7 @@ export declare class WorkerDaemon extends EventEmitter {
70
70
  private pendingWorkers;
71
71
  private headlessExecutor;
72
72
  private headlessAvailable;
73
+ private originalConfig?;
73
74
  constructor(projectRoot: string, config?: Partial<DaemonConfig>);
74
75
  /**
75
76
  * Initialize headless executor if Claude Code is available
@@ -83,6 +84,20 @@ export declare class WorkerDaemon extends EventEmitter {
83
84
  * Get headless executor instance
84
85
  */
85
86
  getHeadlessExecutor(): HeadlessWorkerExecutor | null;
87
+ /**
88
+ * Detect effective CPU count for the current environment.
89
+ *
90
+ * Inside Docker / K8s containers, os.cpus().length reports the HOST cpu
91
+ * count, not the container limit (Node.js #28762 — wontfix). We read
92
+ * cgroup v2 / v1 quota files first so the maxCpuLoad threshold stays
93
+ * meaningful under resource-limited containers.
94
+ */
95
+ static getEffectiveCpuCount(): number;
96
+ /**
97
+ * Read daemon-specific config from .claude-flow/config.json
98
+ * Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'
99
+ */
100
+ private readDaemonConfigFromFile;
86
101
  /**
87
102
  * Setup graceful shutdown handlers
88
103
  */
@@ -93,6 +108,12 @@ export declare class WorkerDaemon extends EventEmitter {
93
108
  private canRunWorker;
94
109
  /**
95
110
  * Process pending workers queue
111
+ *
112
+ * When executeWorkerWithConcurrencyControl defers a worker (returns null),
113
+ * we break immediately to avoid a busy-wait loop — the deferred worker is
114
+ * already back on the pendingWorkers queue by that point. If no workers are
115
+ * currently running when we break, we schedule a backoff retry so the queue
116
+ * does not get permanently stuck.
96
117
  */
97
118
  private processPendingWorkers;
98
119
  private initializeWorkerStates;
@@ -190,11 +211,11 @@ export declare class WorkerDaemon extends EventEmitter {
190
211
  /**
191
212
  * Get or create daemon instance
192
213
  */
193
- export declare function getDaemon(projectRoot?: string): WorkerDaemon;
214
+ export declare function getDaemon(projectRoot?: string, config?: Partial<DaemonConfig>): WorkerDaemon;
194
215
  /**
195
216
  * Start daemon (for use in session-start hook)
196
217
  */
197
- export declare function startDaemon(projectRoot: string): Promise<WorkerDaemon>;
218
+ export declare function startDaemon(projectRoot: string, config?: Partial<DaemonConfig>): Promise<WorkerDaemon>;
198
219
  /**
199
220
  * Stop daemon
200
221
  */
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { EventEmitter } from 'events';
13
13
  import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
14
+ import { cpus } from 'os';
14
15
  import { join } from 'path';
15
16
  import { HeadlessWorkerExecutor, isHeadlessWorker, } from './headless-worker-executor.js';
16
17
  // Default worker configurations with improved intervals (P0 fix: map 5min -> 15min)
@@ -40,19 +41,35 @@ export class WorkerDaemon extends EventEmitter {
40
41
  // Headless execution support
41
42
  headlessExecutor = null;
42
43
  headlessAvailable = false;
44
+ // Preserve the original constructor config so we can detect explicit overrides
45
+ // during state restoration (R1: constructor config takes priority over stale state)
46
+ originalConfig;
43
47
  constructor(projectRoot, config) {
44
48
  super();
45
49
  this.projectRoot = projectRoot;
50
+ this.originalConfig = config;
46
51
  const claudeFlowDir = join(projectRoot, '.claude-flow');
52
+ // Read daemon config from .claude-flow/config.json (Layer B)
53
+ const fileConfig = this.readDaemonConfigFromFile(claudeFlowDir);
54
+ // CPU-proportional smart default instead of hardcoded 2.0
55
+ const cpuCount = WorkerDaemon.getEffectiveCpuCount();
56
+ const smartMaxCpuLoad = Math.max(cpuCount * 0.8, 2.0); // Floor of 2.0 for single-CPU machines
57
+ // Platform-aware default: macOS os.freemem() excludes reclaimable file cache,
58
+ // so reported "free" is much lower than actually available memory.
59
+ // Linux reports available memory (including reclaimable cache) more accurately.
60
+ const defaultMinFreeMemory = process.platform === 'darwin' ? 5 : 10;
61
+ // Priority: constructor arg > config.json > smart default
62
+ // For resourceThresholds, merge field-by-field so partial overrides
63
+ // (e.g. only --max-cpu-load) still pick up defaults for other fields.
47
64
  this.config = {
48
- autoStart: config?.autoStart ?? false, // P1 fix: Default to false for explicit consent
65
+ autoStart: config?.autoStart ?? fileConfig.autoStart ?? false,
49
66
  logDir: config?.logDir ?? join(claudeFlowDir, 'logs'),
50
67
  stateFile: config?.stateFile ?? join(claudeFlowDir, 'daemon-state.json'),
51
- maxConcurrent: config?.maxConcurrent ?? 2, // P0 fix: Limit concurrent workers
52
- workerTimeoutMs: config?.workerTimeoutMs ?? DEFAULT_WORKER_TIMEOUT_MS,
53
- resourceThresholds: config?.resourceThresholds ?? {
54
- maxCpuLoad: 2.0,
55
- minFreeMemoryPercent: 20,
68
+ maxConcurrent: config?.maxConcurrent ?? fileConfig.maxConcurrent ?? 2,
69
+ workerTimeoutMs: config?.workerTimeoutMs ?? fileConfig.workerTimeoutMs ?? DEFAULT_WORKER_TIMEOUT_MS,
70
+ resourceThresholds: {
71
+ maxCpuLoad: config?.resourceThresholds?.maxCpuLoad ?? fileConfig.maxCpuLoad ?? smartMaxCpuLoad,
72
+ minFreeMemoryPercent: config?.resourceThresholds?.minFreeMemoryPercent ?? fileConfig.minFreeMemoryPercent ?? defaultMinFreeMemory,
56
73
  },
57
74
  workers: config?.workers ?? DEFAULT_WORKERS,
58
75
  };
@@ -118,6 +135,66 @@ export class WorkerDaemon extends EventEmitter {
118
135
  getHeadlessExecutor() {
119
136
  return this.headlessExecutor;
120
137
  }
138
+ /**
139
+ * Detect effective CPU count for the current environment.
140
+ *
141
+ * Inside Docker / K8s containers, os.cpus().length reports the HOST cpu
142
+ * count, not the container limit (Node.js #28762 — wontfix). We read
143
+ * cgroup v2 / v1 quota files first so the maxCpuLoad threshold stays
144
+ * meaningful under resource-limited containers.
145
+ */
146
+ static getEffectiveCpuCount() {
147
+ // 1. Try cgroup v2: /sys/fs/cgroup/cpu.max
148
+ try {
149
+ const cpuMax = readFileSync('/sys/fs/cgroup/cpu.max', 'utf8').trim();
150
+ const [quotaStr, periodStr] = cpuMax.split(' ');
151
+ if (quotaStr !== 'max') {
152
+ const quota = parseInt(quotaStr, 10);
153
+ const period = parseInt(periodStr, 10);
154
+ if (quota > 0 && period > 0)
155
+ return Math.ceil(quota / period);
156
+ }
157
+ }
158
+ catch { /* not in cgroup v2 */ }
159
+ // 2. Try cgroup v1: /sys/fs/cgroup/cpu/cpu.cfs_quota_us
160
+ try {
161
+ const quota = parseInt(readFileSync('/sys/fs/cgroup/cpu/cpu.cfs_quota_us', 'utf8').trim(), 10);
162
+ const period = parseInt(readFileSync('/sys/fs/cgroup/cpu/cpu.cfs_period_us', 'utf8').trim(), 10);
163
+ if (quota > 0 && period > 0)
164
+ return Math.ceil(quota / period);
165
+ }
166
+ catch { /* not in cgroup v1 */ }
167
+ // 3. Fallback to os.cpus().length
168
+ return cpus().length || 1;
169
+ }
170
+ /**
171
+ * Read daemon-specific config from .claude-flow/config.json
172
+ * Supports dot-notation keys like 'daemon.resourceThresholds.maxCpuLoad'
173
+ */
174
+ readDaemonConfigFromFile(claudeFlowDir) {
175
+ const configPath = join(claudeFlowDir, 'config.json');
176
+ if (!existsSync(configPath))
177
+ return {};
178
+ try {
179
+ const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
180
+ // Support both flat keys at root and nested under scopes.project
181
+ const cfg = raw?.scopes?.project ?? raw;
182
+ const rawCpuLoad = cfg['daemon.resourceThresholds.maxCpuLoad'] ?? raw['daemon.resourceThresholds.maxCpuLoad'];
183
+ const rawMinMem = cfg['daemon.resourceThresholds.minFreeMemoryPercent'] ?? raw['daemon.resourceThresholds.minFreeMemoryPercent'];
184
+ const rawMaxConcurrent = cfg['daemon.maxConcurrent'] ?? raw['daemon.maxConcurrent'];
185
+ const rawTimeout = cfg['daemon.workerTimeoutMs'] ?? raw['daemon.workerTimeoutMs'];
186
+ return {
187
+ autoStart: typeof raw['daemon.autoStart'] === 'boolean' ? raw['daemon.autoStart'] : undefined,
188
+ maxConcurrent: (typeof rawMaxConcurrent === 'number' && rawMaxConcurrent > 0) ? rawMaxConcurrent : undefined,
189
+ workerTimeoutMs: (typeof rawTimeout === 'number' && rawTimeout > 0) ? rawTimeout : undefined,
190
+ maxCpuLoad: (typeof rawCpuLoad === 'number' && rawCpuLoad > 0 && rawCpuLoad < 1000) ? rawCpuLoad : undefined,
191
+ minFreeMemoryPercent: (typeof rawMinMem === 'number' && rawMinMem >= 0 && rawMinMem <= 100) ? rawMinMem : undefined,
192
+ };
193
+ }
194
+ catch {
195
+ return {};
196
+ }
197
+ }
121
198
  /**
122
199
  * Setup graceful shutdown handlers
123
200
  */
@@ -150,13 +227,30 @@ export class WorkerDaemon extends EventEmitter {
150
227
  }
151
228
  /**
152
229
  * Process pending workers queue
230
+ *
231
+ * When executeWorkerWithConcurrencyControl defers a worker (returns null),
232
+ * we break immediately to avoid a busy-wait loop — the deferred worker is
233
+ * already back on the pendingWorkers queue by that point. If no workers are
234
+ * currently running when we break, we schedule a backoff retry so the queue
235
+ * does not get permanently stuck.
153
236
  */
154
237
  async processPendingWorkers() {
155
238
  while (this.pendingWorkers.length > 0 && this.runningWorkers.size < this.config.maxConcurrent) {
156
239
  const workerType = this.pendingWorkers.shift();
157
240
  const workerConfig = this.config.workers.find(w => w.type === workerType);
158
241
  if (workerConfig) {
159
- await this.executeWorkerWithConcurrencyControl(workerConfig);
242
+ const result = await this.executeWorkerWithConcurrencyControl(workerConfig);
243
+ if (result === null) {
244
+ // Worker was deferred (resource pressure or concurrency limit).
245
+ // Break to avoid tight-looping — the next executeWorker() completion
246
+ // will call processPendingWorkers() again via the finally block.
247
+ if (this.runningWorkers.size === 0) {
248
+ // No workers running means nobody will trigger the finally-block
249
+ // callback, so schedule a backoff retry to avoid a stuck queue.
250
+ setTimeout(() => this.processPendingWorkers(), 30_000).unref();
251
+ }
252
+ break;
253
+ }
160
254
  }
161
255
  }
162
256
  }
@@ -175,6 +269,23 @@ export class WorkerDaemon extends EventEmitter {
175
269
  }
176
270
  }
177
271
  }
272
+ // Restore resourceThresholds, maxConcurrent, workerTimeoutMs from saved state
273
+ // Only restore if valid numeric values within sane ranges
274
+ if (saved.config?.resourceThresholds && !this.originalConfig?.resourceThresholds) {
275
+ const rt = saved.config.resourceThresholds;
276
+ if (typeof rt.maxCpuLoad === 'number' && rt.maxCpuLoad > 0 && rt.maxCpuLoad < 1000) {
277
+ this.config.resourceThresholds.maxCpuLoad = rt.maxCpuLoad;
278
+ }
279
+ if (typeof rt.minFreeMemoryPercent === 'number' && rt.minFreeMemoryPercent >= 0 && rt.minFreeMemoryPercent <= 100) {
280
+ this.config.resourceThresholds.minFreeMemoryPercent = rt.minFreeMemoryPercent;
281
+ }
282
+ }
283
+ if (typeof saved.config?.maxConcurrent === 'number' && saved.config.maxConcurrent > 0) {
284
+ this.config.maxConcurrent = saved.config.maxConcurrent;
285
+ }
286
+ if (typeof saved.config?.workerTimeoutMs === 'number' && saved.config.workerTimeoutMs > 0) {
287
+ this.config.workerTimeoutMs = saved.config.workerTimeoutMs;
288
+ }
178
289
  // Restore worker runtime states (runCount, successCount, etc.)
179
290
  if (saved.workers) {
180
291
  for (const [type, state] of Object.entries(saved.workers)) {
@@ -228,7 +339,7 @@ export class WorkerDaemon extends EventEmitter {
228
339
  }
229
340
  // Save state
230
341
  this.saveState();
231
- this.log('info', `Daemon started with ${this.config.workers.filter(w => w.enabled).length} workers`);
342
+ 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}%)`);
232
343
  }
233
344
  /**
234
345
  * Stop the daemon and all workers
@@ -727,9 +838,9 @@ let daemonInstance = null;
727
838
  /**
728
839
  * Get or create daemon instance
729
840
  */
730
- export function getDaemon(projectRoot) {
841
+ export function getDaemon(projectRoot, config) {
731
842
  if (!daemonInstance && projectRoot) {
732
- daemonInstance = new WorkerDaemon(projectRoot);
843
+ daemonInstance = new WorkerDaemon(projectRoot, config);
733
844
  }
734
845
  if (!daemonInstance) {
735
846
  throw new Error('Daemon not initialized. Provide projectRoot on first call.');
@@ -739,8 +850,8 @@ export function getDaemon(projectRoot) {
739
850
  /**
740
851
  * Start daemon (for use in session-start hook)
741
852
  */
742
- export async function startDaemon(projectRoot) {
743
- const daemon = getDaemon(projectRoot);
853
+ export async function startDaemon(projectRoot, config) {
854
+ const daemon = getDaemon(projectRoot, config);
744
855
  await daemon.start();
745
856
  return daemon;
746
857
  }
@@ -30,6 +30,7 @@ export interface GateResult {
30
30
  }
31
31
  export declare class WorkflowGateService {
32
32
  private stateFilePath;
33
+ private config;
33
34
  constructor(projectRoot?: string);
34
35
  readState(): WorkflowState;
35
36
  writeState(state: WorkflowState): void;
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import * as fs from 'fs';
19
19
  import * as path from 'path';
20
+ import { loadMofloConfig } from '../config/moflo-config.js';
20
21
  // ============================================================================
21
22
  // Constants
22
23
  // ============================================================================
@@ -47,8 +48,11 @@ const EXEMPT_PATTERNS = [
47
48
  // ============================================================================
48
49
  export class WorkflowGateService {
49
50
  stateFilePath;
51
+ config;
50
52
  constructor(projectRoot = process.cwd()) {
51
53
  this.stateFilePath = path.resolve(projectRoot, '.claude/workflow-state.json');
54
+ const mofloConfig = loadMofloConfig(projectRoot);
55
+ this.config = mofloConfig.gates;
52
56
  }
53
57
  // --------------------------------------------------------------------------
54
58
  // State management
@@ -95,14 +99,17 @@ export class WorkflowGateService {
95
99
  * Requires both TaskCreate and memory search.
96
100
  */
97
101
  checkBeforeAgent() {
102
+ if (!this.config.task_create_first && !this.config.memory_first) {
103
+ return { allowed: true };
104
+ }
98
105
  const state = this.readState();
99
- if (!state.tasksCreated) {
106
+ if (this.config.task_create_first && !state.tasksCreated) {
100
107
  return {
101
108
  allowed: false,
102
109
  message: 'BLOCKED: Call TaskCreate before spawning agents.',
103
110
  };
104
111
  }
105
- if (!state.memorySearched) {
112
+ if (this.config.memory_first && !state.memorySearched) {
106
113
  return {
107
114
  allowed: false,
108
115
  message: 'BLOCKED: Search memory (mcp__claude-flow__memory_search) before spawning agents.',
@@ -115,6 +122,9 @@ export class WorkflowGateService {
115
122
  * Requires memory search (with exemptions for system paths).
116
123
  */
117
124
  checkBeforeScan(pattern, searchPath) {
125
+ if (!this.config.memory_first) {
126
+ return { allowed: true };
127
+ }
118
128
  const state = this.readState();
119
129
  if (state.memorySearched) {
120
130
  return { allowed: true };
@@ -140,6 +150,9 @@ export class WorkflowGateService {
140
150
  * Only gates reads targeting .claude/guidance/ files.
141
151
  */
142
152
  checkBeforeRead(filePath) {
153
+ if (!this.config.memory_first) {
154
+ return { allowed: true };
155
+ }
143
156
  const state = this.readState();
144
157
  if (state.memorySearched) {
145
158
  return { allowed: true };
@@ -198,9 +211,11 @@ export class WorkflowGateService {
198
211
  if (!state.tasksCreated) {
199
212
  result.reminder = 'REMINDER: Use TaskCreate before spawning agents. Task tool is blocked until then.';
200
213
  }
201
- const bracket = this.getContextBracket(state.interactionCount);
202
- if (bracket !== 'FRESH') {
203
- result.bracket = BRACKET_MESSAGES[bracket];
214
+ if (this.config.context_tracking) {
215
+ const bracket = this.getContextBracket(state.interactionCount);
216
+ if (bracket !== 'FRESH') {
217
+ result.bracket = BRACKET_MESSAGES[bracket];
218
+ }
204
219
  }
205
220
  return result;
206
221
  }
@@ -2,7 +2,7 @@
2
2
  * V3 CLI Smart Error Suggestions
3
3
  * Levenshtein distance and command suggestions
4
4
  *
5
- * Created with ruv.io
5
+ * Created with motailz.com
6
6
  */
7
7
  /**
8
8
  * Calculate Levenshtein distance between two strings
@@ -2,7 +2,7 @@
2
2
  * V3 CLI Smart Error Suggestions
3
3
  * Levenshtein distance and command suggestions
4
4
  *
5
- * Created with ruv.io
5
+ * Created with motailz.com
6
6
  */
7
7
  /**
8
8
  * Calculate Levenshtein distance between two strings
@@ -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
  /**
@@ -11,13 +11,13 @@
11
11
  "claude-flow": "./bin/cli.js",
12
12
  "claude-flow-mcp": "./bin/mcp-server.js"
13
13
  },
14
- "homepage": "https://github.com/ruvnet/claude-flow#readme",
14
+ "homepage": "https://github.com/eric-cielo/moflo#readme",
15
15
  "bugs": {
16
- "url": "https://github.com/ruvnet/claude-flow/issues"
16
+ "url": "https://github.com/eric-cielo/moflo/issues"
17
17
  },
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "https://github.com/ruvnet/claude-flow.git",
20
+ "url": "https://github.com/eric-cielo/moflo.git",
21
21
  "directory": "v3/@claude-flow/cli"
22
22
  },
23
23
  "keywords": [
@@ -41,9 +41,9 @@
41
41
  "enterprise"
42
42
  ],
43
43
  "author": {
44
- "name": "RuvNet",
45
- "email": "ruv@ruv.io",
46
- "url": "https://ruv.io"
44
+ "name": "Eric Cielo",
45
+ "email": "eric@motailz.com",
46
+ "url": "https://github.com/eric-cielo"
47
47
  },
48
48
  "license": "MIT",
49
49
  "exports": {