moflo 4.8.49 → 4.8.51

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 (439) hide show
  1. package/.claude/guidance/shipped/moflo-core-guidance.md +646 -646
  2. package/bin/cli.js +1 -1
  3. package/bin/hooks.mjs +607 -607
  4. package/bin/index-all.mjs +2 -2
  5. package/bin/session-start-launcher.mjs +272 -272
  6. package/package.json +22 -23
  7. package/src/{@claude-flow → packages}/cli/dist/src/init/claudemd-generator.js +45 -45
  8. package/src/{@claude-flow → packages}/cli/dist/src/init/executor.js +0 -4
  9. package/src/{@claude-flow → packages}/cli/dist/src/init/moflo-init.js +764 -764
  10. package/src/{@claude-flow → packages}/cli/dist/src/version.js +1 -1
  11. package/src/{@claude-flow → packages}/cli/package.json +1 -1
  12. package/.claude/agents/dual-mode/codex-coordinator.md +0 -224
  13. package/.claude/agents/dual-mode/codex-worker.md +0 -211
  14. package/.claude/agents/dual-mode/dual-orchestrator.md +0 -291
  15. package/.claude/agents/payments/agentic-payments.md +0 -126
  16. package/.claude/agents/sublinear/consensus-coordinator.md +0 -338
  17. package/.claude/agents/sublinear/matrix-optimizer.md +0 -185
  18. package/.claude/agents/sublinear/pagerank-analyzer.md +0 -299
  19. package/.claude/agents/sublinear/performance-optimizer.md +0 -368
  20. package/.claude/agents/sublinear/trading-predictor.md +0 -246
  21. package/.claude/agents/templates/automation-smart-agent.md +0 -205
  22. package/.claude/agents/templates/coordinator-swarm-init.md +0 -105
  23. package/.claude/agents/templates/github-pr-manager.md +0 -177
  24. package/.claude/agents/templates/implementer-sparc-coder.md +0 -259
  25. package/.claude/agents/templates/memory-coordinator.md +0 -187
  26. package/.claude/agents/templates/migration-plan.md +0 -746
  27. package/.claude/agents/templates/orchestrator-task.md +0 -139
  28. package/.claude/agents/templates/performance-analyzer.md +0 -199
  29. package/.claude/agents/templates/sparc-coordinator.md +0 -183
  30. package/.claude/commands/agents/README.md +0 -10
  31. package/.claude/commands/agents/agent-capabilities.md +0 -21
  32. package/.claude/commands/agents/agent-coordination.md +0 -28
  33. package/.claude/commands/agents/agent-spawning.md +0 -28
  34. package/.claude/commands/agents/agent-types.md +0 -26
  35. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  36. package/.claude/commands/analysis/README.md +0 -9
  37. package/.claude/commands/analysis/bottleneck-detect.md +0 -162
  38. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  39. package/.claude/commands/analysis/performance-report.md +0 -25
  40. package/.claude/commands/analysis/token-efficiency.md +0 -45
  41. package/.claude/commands/analysis/token-usage.md +0 -25
  42. package/.claude/commands/automation/README.md +0 -9
  43. package/.claude/commands/automation/auto-agent.md +0 -122
  44. package/.claude/commands/automation/self-healing.md +0 -106
  45. package/.claude/commands/automation/session-memory.md +0 -90
  46. package/.claude/commands/automation/smart-agents.md +0 -73
  47. package/.claude/commands/automation/smart-spawn.md +0 -25
  48. package/.claude/commands/automation/workflow-select.md +0 -25
  49. package/.claude/commands/monitoring/README.md +0 -9
  50. package/.claude/commands/monitoring/agent-metrics.md +0 -25
  51. package/.claude/commands/monitoring/agents.md +0 -44
  52. package/.claude/commands/monitoring/real-time-view.md +0 -25
  53. package/.claude/commands/monitoring/status.md +0 -46
  54. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  55. package/.claude/commands/optimization/README.md +0 -9
  56. package/.claude/commands/optimization/auto-topology.md +0 -62
  57. package/.claude/commands/optimization/cache-manage.md +0 -25
  58. package/.claude/commands/optimization/parallel-execute.md +0 -25
  59. package/.claude/commands/optimization/parallel-execution.md +0 -50
  60. package/.claude/commands/optimization/topology-optimize.md +0 -25
  61. package/.claude/scripts/build-embeddings.mjs +0 -549
  62. package/.claude/scripts/generate-code-map.mjs +0 -956
  63. package/.claude/scripts/hooks.mjs +0 -607
  64. package/.claude/scripts/index-all.mjs +0 -193
  65. package/.claude/scripts/index-guidance.mjs +0 -917
  66. package/.claude/scripts/index-tests.mjs +0 -729
  67. package/.claude/scripts/lib/moflo-resolve.mjs +0 -14
  68. package/.claude/scripts/lib/process-manager.mjs +0 -256
  69. package/.claude/scripts/lib/registry-cleanup.cjs +0 -41
  70. package/.claude/scripts/semantic-search.mjs +0 -473
  71. package/.claude/scripts/session-start-launcher.mjs +0 -272
  72. package/src/@claude-flow/cli/dist/src/commands/orc.js +0 -767
  73. package/src/@claude-flow/cli/dist/src/services/container-worker-pool.js +0 -584
  74. package/src/@claude-flow/memory/dist/hybrid-backend.js +0 -569
  75. package/src/@claude-flow/memory/dist/hybrid-backend.test.js +0 -320
  76. package/src/@claude-flow/memory/dist/sqlite-backend.js +0 -572
  77. /package/src/{@claude-flow → packages}/cli/README.md +0 -0
  78. /package/src/{@claude-flow → packages}/cli/bin/cli.js +0 -0
  79. /package/src/{@claude-flow → packages}/cli/bin/mcp-server.js +0 -0
  80. /package/src/{@claude-flow → packages}/cli/bin/preinstall.cjs +0 -0
  81. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/gguf-engine.js +0 -0
  82. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/ruvllm-bridge.js +0 -0
  83. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/rvfa-builder.js +0 -0
  84. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/rvfa-distribution.js +0 -0
  85. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/rvfa-format.js +0 -0
  86. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/rvfa-runner.js +0 -0
  87. /package/src/{@claude-flow → packages}/cli/dist/src/appliance/rvfa-signing.js +0 -0
  88. /package/src/{@claude-flow → packages}/cli/dist/src/benchmarks/pretrain/index.js +0 -0
  89. /package/src/{@claude-flow → packages}/cli/dist/src/commands/agent.js +0 -0
  90. /package/src/{@claude-flow → packages}/cli/dist/src/commands/analyze.js +0 -0
  91. /package/src/{@claude-flow → packages}/cli/dist/src/commands/appliance-advanced.js +0 -0
  92. /package/src/{@claude-flow → packages}/cli/dist/src/commands/appliance.js +0 -0
  93. /package/src/{@claude-flow → packages}/cli/dist/src/commands/benchmark.js +0 -0
  94. /package/src/{@claude-flow → packages}/cli/dist/src/commands/claims.js +0 -0
  95. /package/src/{@claude-flow → packages}/cli/dist/src/commands/completions.js +0 -0
  96. /package/src/{@claude-flow → packages}/cli/dist/src/commands/config.js +0 -0
  97. /package/src/{@claude-flow → packages}/cli/dist/src/commands/daemon.js +0 -0
  98. /package/src/{@claude-flow → packages}/cli/dist/src/commands/deployment.js +0 -0
  99. /package/src/{@claude-flow → packages}/cli/dist/src/commands/diagnose.js +0 -0
  100. /package/src/{@claude-flow → packages}/cli/dist/src/commands/doctor.js +0 -0
  101. /package/src/{@claude-flow → packages}/cli/dist/src/commands/embeddings.js +0 -0
  102. /package/src/{@claude-flow → packages}/cli/dist/src/commands/epic.js +0 -0
  103. /package/src/{@claude-flow → packages}/cli/dist/src/commands/gate.js +0 -0
  104. /package/src/{@claude-flow → packages}/cli/dist/src/commands/github.js +0 -0
  105. /package/src/{@claude-flow → packages}/cli/dist/src/commands/guidance.js +0 -0
  106. /package/src/{@claude-flow → packages}/cli/dist/src/commands/hive-mind.js +0 -0
  107. /package/src/{@claude-flow → packages}/cli/dist/src/commands/hooks.js +0 -0
  108. /package/src/{@claude-flow → packages}/cli/dist/src/commands/index.js +0 -0
  109. /package/src/{@claude-flow → packages}/cli/dist/src/commands/init.js +0 -0
  110. /package/src/{@claude-flow → packages}/cli/dist/src/commands/issues.js +0 -0
  111. /package/src/{@claude-flow → packages}/cli/dist/src/commands/mcp.js +0 -0
  112. /package/src/{@claude-flow → packages}/cli/dist/src/commands/memory.js +0 -0
  113. /package/src/{@claude-flow → packages}/cli/dist/src/commands/migrate.js +0 -0
  114. /package/src/{@claude-flow → packages}/cli/dist/src/commands/neural.js +0 -0
  115. /package/src/{@claude-flow → packages}/cli/dist/src/commands/performance.js +0 -0
  116. /package/src/{@claude-flow → packages}/cli/dist/src/commands/plugins.js +0 -0
  117. /package/src/{@claude-flow → packages}/cli/dist/src/commands/process.js +0 -0
  118. /package/src/{@claude-flow → packages}/cli/dist/src/commands/progress.js +0 -0
  119. /package/src/{@claude-flow → packages}/cli/dist/src/commands/providers.js +0 -0
  120. /package/src/{@claude-flow → packages}/cli/dist/src/commands/route.js +0 -0
  121. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/backup.js +0 -0
  122. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/benchmark.js +0 -0
  123. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/import.js +0 -0
  124. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/index.js +0 -0
  125. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/init.js +0 -0
  126. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/migrate.js +0 -0
  127. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/optimize.js +0 -0
  128. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/setup.js +0 -0
  129. /package/src/{@claude-flow → packages}/cli/dist/src/commands/ruvector/status.js +0 -0
  130. /package/src/{@claude-flow → packages}/cli/dist/src/commands/security.js +0 -0
  131. /package/src/{@claude-flow → packages}/cli/dist/src/commands/session.js +0 -0
  132. /package/src/{@claude-flow → packages}/cli/dist/src/commands/start.js +0 -0
  133. /package/src/{@claude-flow → packages}/cli/dist/src/commands/status.js +0 -0
  134. /package/src/{@claude-flow → packages}/cli/dist/src/commands/swarm.js +0 -0
  135. /package/src/{@claude-flow → packages}/cli/dist/src/commands/task.js +0 -0
  136. /package/src/{@claude-flow → packages}/cli/dist/src/commands/transfer-store.js +0 -0
  137. /package/src/{@claude-flow → packages}/cli/dist/src/commands/update.js +0 -0
  138. /package/src/{@claude-flow → packages}/cli/dist/src/commands/workflow.js +0 -0
  139. /package/src/{@claude-flow → packages}/cli/dist/src/config/moflo-config.js +0 -0
  140. /package/src/{@claude-flow → packages}/cli/dist/src/config-adapter.js +0 -0
  141. /package/src/{@claude-flow → packages}/cli/dist/src/index.js +0 -0
  142. /package/src/{@claude-flow → packages}/cli/dist/src/infrastructure/in-memory-repositories.js +0 -0
  143. /package/src/{@claude-flow → packages}/cli/dist/src/init/helpers-generator.js +0 -0
  144. /package/src/{@claude-flow → packages}/cli/dist/src/init/index.js +0 -0
  145. /package/src/{@claude-flow → packages}/cli/dist/src/init/mcp-generator.js +0 -0
  146. /package/src/{@claude-flow → packages}/cli/dist/src/init/settings-generator.js +0 -0
  147. /package/src/{@claude-flow → packages}/cli/dist/src/init/statusline-generator.js +0 -0
  148. /package/src/{@claude-flow → packages}/cli/dist/src/init/types.js +0 -0
  149. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-client.js +0 -0
  150. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-server.js +0 -0
  151. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/agent-tools.js +0 -0
  152. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/agentdb-tools.js +0 -0
  153. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/analyze-tools.js +0 -0
  154. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/auto-install.js +0 -0
  155. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/browser-tools.js +0 -0
  156. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/claims-tools.js +0 -0
  157. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/config-tools.js +0 -0
  158. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/coordination-tools.js +0 -0
  159. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/daa-tools.js +0 -0
  160. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/embeddings-tools.js +0 -0
  161. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/github-tools.js +0 -0
  162. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/hive-mind-tools.js +0 -0
  163. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/hooks-tools.js +0 -0
  164. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/index.js +0 -0
  165. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/memory-tools.js +0 -0
  166. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/neural-tools.js +0 -0
  167. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/performance-tools.js +0 -0
  168. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/progress-tools.js +0 -0
  169. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/security-tools.js +0 -0
  170. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/session-tools.js +0 -0
  171. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/swarm-tools.js +0 -0
  172. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/system-tools.js +0 -0
  173. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/task-tools.js +0 -0
  174. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/terminal-tools.js +0 -0
  175. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/transfer-tools.js +0 -0
  176. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/types.js +0 -0
  177. /package/src/{@claude-flow → packages}/cli/dist/src/mcp-tools/workflow-tools.js +0 -0
  178. /package/src/{@claude-flow → packages}/cli/dist/src/memory/ewc-consolidation.js +0 -0
  179. /package/src/{@claude-flow → packages}/cli/dist/src/memory/intelligence.js +0 -0
  180. /package/src/{@claude-flow → packages}/cli/dist/src/memory/memory-bridge.js +0 -0
  181. /package/src/{@claude-flow → packages}/cli/dist/src/memory/memory-initializer.js +0 -0
  182. /package/src/{@claude-flow → packages}/cli/dist/src/memory/sona-optimizer.js +0 -0
  183. /package/src/{@claude-flow → packages}/cli/dist/src/output.js +0 -0
  184. /package/src/{@claude-flow → packages}/cli/dist/src/parser.js +0 -0
  185. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/manager.js +0 -0
  186. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/store/discovery.js +0 -0
  187. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/store/index.js +0 -0
  188. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/store/search.js +0 -0
  189. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/store/types.js +0 -0
  190. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/tests/demo-plugin-store.js +0 -0
  191. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/tests/standalone-test.js +0 -0
  192. /package/src/{@claude-flow → packages}/cli/dist/src/plugins/tests/test-plugin-store.js +0 -0
  193. /package/src/{@claude-flow → packages}/cli/dist/src/production/circuit-breaker.js +0 -0
  194. /package/src/{@claude-flow → packages}/cli/dist/src/production/error-handler.js +0 -0
  195. /package/src/{@claude-flow → packages}/cli/dist/src/production/index.js +0 -0
  196. /package/src/{@claude-flow → packages}/cli/dist/src/production/monitoring.js +0 -0
  197. /package/src/{@claude-flow → packages}/cli/dist/src/production/rate-limiter.js +0 -0
  198. /package/src/{@claude-flow → packages}/cli/dist/src/production/retry.js +0 -0
  199. /package/src/{@claude-flow → packages}/cli/dist/src/prompt.js +0 -0
  200. /package/src/{@claude-flow → packages}/cli/dist/src/runtime/headless.js +0 -0
  201. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/ast-analyzer.js +0 -0
  202. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/coverage-router.js +0 -0
  203. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/coverage-tools.js +0 -0
  204. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/diff-classifier.js +0 -0
  205. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/enhanced-model-router.js +0 -0
  206. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/flash-attention.js +0 -0
  207. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/graph-analyzer.js +0 -0
  208. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/index.js +0 -0
  209. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/lora-adapter.js +0 -0
  210. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/model-router.js +0 -0
  211. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/moe-router.js +0 -0
  212. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/q-learning-router.js +0 -0
  213. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/semantic-router.js +0 -0
  214. /package/src/{@claude-flow → packages}/cli/dist/src/ruvector/vector-db.js +0 -0
  215. /package/src/{@claude-flow → packages}/cli/dist/src/services/agent-router.js +0 -0
  216. /package/src/{@claude-flow → packages}/cli/dist/src/services/agentic-flow-bridge.js +0 -0
  217. /package/src/{@claude-flow → packages}/cli/dist/src/services/claim-service.js +0 -0
  218. /package/src/{@claude-flow → packages}/cli/dist/src/services/daemon-lock.js +0 -0
  219. /package/src/{@claude-flow → packages}/cli/dist/src/services/headless-worker-executor.js +0 -0
  220. /package/src/{@claude-flow → packages}/cli/dist/src/services/index.js +0 -0
  221. /package/src/{@claude-flow → packages}/cli/dist/src/services/learning-service.js +0 -0
  222. /package/src/{@claude-flow → packages}/cli/dist/src/services/moflo-require.js +0 -0
  223. /package/src/{@claude-flow → packages}/cli/dist/src/services/registry-api.js +0 -0
  224. /package/src/{@claude-flow → packages}/cli/dist/src/services/ruvector-training.js +0 -0
  225. /package/src/{@claude-flow → packages}/cli/dist/src/services/worker-daemon.js +0 -0
  226. /package/src/{@claude-flow → packages}/cli/dist/src/services/worker-queue.js +0 -0
  227. /package/src/{@claude-flow → packages}/cli/dist/src/services/workflow-gate.js +0 -0
  228. /package/src/{@claude-flow → packages}/cli/dist/src/suggest.js +0 -0
  229. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/anonymization/index.js +0 -0
  230. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/deploy-seraphine.js +0 -0
  231. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/export.js +0 -0
  232. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/index.js +0 -0
  233. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/ipfs/client.js +0 -0
  234. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/ipfs/upload.js +0 -0
  235. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/models/seraphine.js +0 -0
  236. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/serialization/cfp.js +0 -0
  237. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/storage/gcs.js +0 -0
  238. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/storage/index.js +0 -0
  239. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/discovery.js +0 -0
  240. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/download.js +0 -0
  241. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/index.js +0 -0
  242. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/publish.js +0 -0
  243. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/registry.js +0 -0
  244. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/search.js +0 -0
  245. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/tests/standalone-test.js +0 -0
  246. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/store/types.js +0 -0
  247. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/test-seraphine.js +0 -0
  248. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/tests/test-store.js +0 -0
  249. /package/src/{@claude-flow → packages}/cli/dist/src/transfer/types.js +0 -0
  250. /package/src/{@claude-flow → packages}/cli/dist/src/types.js +0 -0
  251. /package/src/{@claude-flow → packages}/cli/dist/src/update/checker.js +0 -0
  252. /package/src/{@claude-flow → packages}/cli/dist/src/update/executor.js +0 -0
  253. /package/src/{@claude-flow → packages}/cli/dist/src/update/index.js +0 -0
  254. /package/src/{@claude-flow → packages}/cli/dist/src/update/rate-limiter.js +0 -0
  255. /package/src/{@claude-flow → packages}/cli/dist/src/update/validator.js +0 -0
  256. /package/src/{@claude-flow → packages}/guidance/README.md +0 -0
  257. /package/src/{@claude-flow → packages}/guidance/dist/adversarial.js +0 -0
  258. /package/src/{@claude-flow → packages}/guidance/dist/analyzer.js +0 -0
  259. /package/src/{@claude-flow → packages}/guidance/dist/artifacts.js +0 -0
  260. /package/src/{@claude-flow → packages}/guidance/dist/authority.js +0 -0
  261. /package/src/{@claude-flow → packages}/guidance/dist/capabilities.js +0 -0
  262. /package/src/{@claude-flow → packages}/guidance/dist/coherence.js +0 -0
  263. /package/src/{@claude-flow → packages}/guidance/dist/compiler.js +0 -0
  264. /package/src/{@claude-flow → packages}/guidance/dist/conformance-kit.js +0 -0
  265. /package/src/{@claude-flow → packages}/guidance/dist/continue-gate.js +0 -0
  266. /package/src/{@claude-flow → packages}/guidance/dist/crypto-utils.js +0 -0
  267. /package/src/{@claude-flow → packages}/guidance/dist/evolution.js +0 -0
  268. /package/src/{@claude-flow → packages}/guidance/dist/gates.js +0 -0
  269. /package/src/{@claude-flow → packages}/guidance/dist/gateway.js +0 -0
  270. /package/src/{@claude-flow → packages}/guidance/dist/generators.js +0 -0
  271. /package/src/{@claude-flow → packages}/guidance/dist/headless.js +0 -0
  272. /package/src/{@claude-flow → packages}/guidance/dist/hooks.js +0 -0
  273. /package/src/{@claude-flow → packages}/guidance/dist/index.js +0 -0
  274. /package/src/{@claude-flow → packages}/guidance/dist/ledger.js +0 -0
  275. /package/src/{@claude-flow → packages}/guidance/dist/manifest-validator.js +0 -0
  276. /package/src/{@claude-flow → packages}/guidance/dist/memory-gate.js +0 -0
  277. /package/src/{@claude-flow → packages}/guidance/dist/meta-governance.js +0 -0
  278. /package/src/{@claude-flow → packages}/guidance/dist/optimizer.js +0 -0
  279. /package/src/{@claude-flow → packages}/guidance/dist/persistence.js +0 -0
  280. /package/src/{@claude-flow → packages}/guidance/dist/proof.js +0 -0
  281. /package/src/{@claude-flow → packages}/guidance/dist/retriever.js +0 -0
  282. /package/src/{@claude-flow → packages}/guidance/dist/ruvbot-integration.js +0 -0
  283. /package/src/{@claude-flow → packages}/guidance/dist/temporal.js +0 -0
  284. /package/src/{@claude-flow → packages}/guidance/dist/trust.js +0 -0
  285. /package/src/{@claude-flow → packages}/guidance/dist/truth-anchors.js +0 -0
  286. /package/src/{@claude-flow → packages}/guidance/dist/types.js +0 -0
  287. /package/src/{@claude-flow → packages}/guidance/dist/uncertainty.js +0 -0
  288. /package/src/{@claude-flow → packages}/guidance/dist/wasm-kernel.js +0 -0
  289. /package/src/{@claude-flow → packages}/guidance/package.json +0 -0
  290. /package/src/{@claude-flow → packages}/memory/README.md +0 -0
  291. /package/src/{@claude-flow → packages}/memory/dist/agent-memory-scope.js +0 -0
  292. /package/src/{@claude-flow → packages}/memory/dist/agent-memory-scope.test.js +0 -0
  293. /package/src/{@claude-flow → packages}/memory/dist/agentdb-adapter.js +0 -0
  294. /package/src/{@claude-flow → packages}/memory/dist/agentdb-backend.js +0 -0
  295. /package/src/{@claude-flow → packages}/memory/dist/agentdb-backend.test.js +0 -0
  296. /package/src/{@claude-flow → packages}/memory/dist/application/commands/delete-memory.command.js +0 -0
  297. /package/src/{@claude-flow → packages}/memory/dist/application/commands/store-memory.command.js +0 -0
  298. /package/src/{@claude-flow → packages}/memory/dist/application/index.js +0 -0
  299. /package/src/{@claude-flow → packages}/memory/dist/application/queries/search-memory.query.js +0 -0
  300. /package/src/{@claude-flow → packages}/memory/dist/application/services/memory-application-service.js +0 -0
  301. /package/src/{@claude-flow → packages}/memory/dist/auto-memory-bridge.js +0 -0
  302. /package/src/{@claude-flow → packages}/memory/dist/auto-memory-bridge.test.js +0 -0
  303. /package/src/{@claude-flow → packages}/memory/dist/benchmark.test.js +0 -0
  304. /package/src/{@claude-flow → packages}/memory/dist/cache-manager.js +0 -0
  305. /package/src/{@claude-flow → packages}/memory/dist/controller-registry.js +0 -0
  306. /package/src/{@claude-flow → packages}/memory/dist/controller-registry.test.js +0 -0
  307. /package/src/{@claude-flow → packages}/memory/dist/database-provider.js +0 -0
  308. /package/src/{@claude-flow → packages}/memory/dist/database-provider.test.js +0 -0
  309. /package/src/{@claude-flow → packages}/memory/dist/domain/entities/memory-entry.js +0 -0
  310. /package/src/{@claude-flow → packages}/memory/dist/domain/index.js +0 -0
  311. /package/src/{@claude-flow → packages}/memory/dist/domain/repositories/memory-repository.interface.js +0 -0
  312. /package/src/{@claude-flow → packages}/memory/dist/domain/services/memory-domain-service.js +0 -0
  313. /package/src/{@claude-flow → packages}/memory/dist/hnsw-index.js +0 -0
  314. /package/src/{@claude-flow → packages}/memory/dist/hnsw-lite.js +0 -0
  315. /package/src/{@claude-flow → packages}/memory/dist/index.js +0 -0
  316. /package/src/{@claude-flow → packages}/memory/dist/infrastructure/index.js +0 -0
  317. /package/src/{@claude-flow → packages}/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +0 -0
  318. /package/src/{@claude-flow → packages}/memory/dist/learning-bridge.js +0 -0
  319. /package/src/{@claude-flow → packages}/memory/dist/learning-bridge.test.js +0 -0
  320. /package/src/{@claude-flow → packages}/memory/dist/memory-graph.js +0 -0
  321. /package/src/{@claude-flow → packages}/memory/dist/memory-graph.test.js +0 -0
  322. /package/src/{@claude-flow → packages}/memory/dist/migration.js +0 -0
  323. /package/src/{@claude-flow → packages}/memory/dist/persistent-sona.js +0 -0
  324. /package/src/{@claude-flow → packages}/memory/dist/query-builder.js +0 -0
  325. /package/src/{@claude-flow → packages}/memory/dist/rvf-backend.js +0 -0
  326. /package/src/{@claude-flow → packages}/memory/dist/rvf-learning-store.js +0 -0
  327. /package/src/{@claude-flow → packages}/memory/dist/rvf-migration.js +0 -0
  328. /package/src/{@claude-flow → packages}/memory/dist/sqljs-backend.js +0 -0
  329. /package/src/{@claude-flow → packages}/memory/dist/types.js +0 -0
  330. /package/src/{@claude-flow → packages}/memory/package.json +0 -0
  331. /package/src/{@claude-flow → packages}/neural/README.md +0 -0
  332. /package/src/{@claude-flow → packages}/neural/dist/algorithms/a2c.js +0 -0
  333. /package/src/{@claude-flow → packages}/neural/dist/algorithms/curiosity.js +0 -0
  334. /package/src/{@claude-flow → packages}/neural/dist/algorithms/decision-transformer.js +0 -0
  335. /package/src/{@claude-flow → packages}/neural/dist/algorithms/dqn.js +0 -0
  336. /package/src/{@claude-flow → packages}/neural/dist/algorithms/index.js +0 -0
  337. /package/src/{@claude-flow → packages}/neural/dist/algorithms/ppo.js +0 -0
  338. /package/src/{@claude-flow → packages}/neural/dist/algorithms/q-learning.js +0 -0
  339. /package/src/{@claude-flow → packages}/neural/dist/algorithms/sarsa.js +0 -0
  340. /package/src/{@claude-flow → packages}/neural/dist/application/index.js +0 -0
  341. /package/src/{@claude-flow → packages}/neural/dist/application/services/neural-application-service.js +0 -0
  342. /package/src/{@claude-flow → packages}/neural/dist/domain/entities/pattern.js +0 -0
  343. /package/src/{@claude-flow → packages}/neural/dist/domain/index.js +0 -0
  344. /package/src/{@claude-flow → packages}/neural/dist/domain/services/learning-service.js +0 -0
  345. /package/src/{@claude-flow → packages}/neural/dist/index.js +0 -0
  346. /package/src/{@claude-flow → packages}/neural/dist/modes/balanced.js +0 -0
  347. /package/src/{@claude-flow → packages}/neural/dist/modes/base.js +0 -0
  348. /package/src/{@claude-flow → packages}/neural/dist/modes/batch.js +0 -0
  349. /package/src/{@claude-flow → packages}/neural/dist/modes/edge.js +0 -0
  350. /package/src/{@claude-flow → packages}/neural/dist/modes/index.js +0 -0
  351. /package/src/{@claude-flow → packages}/neural/dist/modes/real-time.js +0 -0
  352. /package/src/{@claude-flow → packages}/neural/dist/modes/research.js +0 -0
  353. /package/src/{@claude-flow → packages}/neural/dist/pattern-learner.js +0 -0
  354. /package/src/{@claude-flow → packages}/neural/dist/reasoning-bank.js +0 -0
  355. /package/src/{@claude-flow → packages}/neural/dist/reasoningbank-adapter.js +0 -0
  356. /package/src/{@claude-flow → packages}/neural/dist/sona-integration.js +0 -0
  357. /package/src/{@claude-flow → packages}/neural/dist/sona-manager.js +0 -0
  358. /package/src/{@claude-flow → packages}/neural/dist/types.js +0 -0
  359. /package/src/{@claude-flow → packages}/neural/package.json +0 -0
  360. /package/src/{@claude-flow → packages}/shared/README.md +0 -0
  361. /package/src/{@claude-flow → packages}/shared/dist/core/config/defaults.js +0 -0
  362. /package/src/{@claude-flow → packages}/shared/dist/core/config/index.js +0 -0
  363. /package/src/{@claude-flow → packages}/shared/dist/core/config/loader.js +0 -0
  364. /package/src/{@claude-flow → packages}/shared/dist/core/config/schema.js +0 -0
  365. /package/src/{@claude-flow → packages}/shared/dist/core/config/validator.js +0 -0
  366. /package/src/{@claude-flow → packages}/shared/dist/core/event-bus.js +0 -0
  367. /package/src/{@claude-flow → packages}/shared/dist/core/index.js +0 -0
  368. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/agent.interface.js +0 -0
  369. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/coordinator.interface.js +0 -0
  370. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/event.interface.js +0 -0
  371. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/index.js +0 -0
  372. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/memory.interface.js +0 -0
  373. /package/src/{@claude-flow → packages}/shared/dist/core/interfaces/task.interface.js +0 -0
  374. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/event-coordinator.js +0 -0
  375. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/health-monitor.js +0 -0
  376. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/index.js +0 -0
  377. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/lifecycle-manager.js +0 -0
  378. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/session-manager.js +0 -0
  379. /package/src/{@claude-flow → packages}/shared/dist/core/orchestrator/task-manager.js +0 -0
  380. /package/src/{@claude-flow → packages}/shared/dist/events/domain-events.js +0 -0
  381. /package/src/{@claude-flow → packages}/shared/dist/events/event-store.js +0 -0
  382. /package/src/{@claude-flow → packages}/shared/dist/events/event-store.test.js +0 -0
  383. /package/src/{@claude-flow → packages}/shared/dist/events/example-usage.js +0 -0
  384. /package/src/{@claude-flow → packages}/shared/dist/events/index.js +0 -0
  385. /package/src/{@claude-flow → packages}/shared/dist/events/projections.js +0 -0
  386. /package/src/{@claude-flow → packages}/shared/dist/events/rvf-event-log.js +0 -0
  387. /package/src/{@claude-flow → packages}/shared/dist/events/state-reconstructor.js +0 -0
  388. /package/src/{@claude-flow → packages}/shared/dist/events.js +0 -0
  389. /package/src/{@claude-flow → packages}/shared/dist/hooks/example-usage.js +0 -0
  390. /package/src/{@claude-flow → packages}/shared/dist/hooks/executor.js +0 -0
  391. /package/src/{@claude-flow → packages}/shared/dist/hooks/hooks.test.js +0 -0
  392. /package/src/{@claude-flow → packages}/shared/dist/hooks/index.js +0 -0
  393. /package/src/{@claude-flow → packages}/shared/dist/hooks/registry.js +0 -0
  394. /package/src/{@claude-flow → packages}/shared/dist/hooks/safety/bash-safety.js +0 -0
  395. /package/src/{@claude-flow → packages}/shared/dist/hooks/safety/file-organization.js +0 -0
  396. /package/src/{@claude-flow → packages}/shared/dist/hooks/safety/git-commit.js +0 -0
  397. /package/src/{@claude-flow → packages}/shared/dist/hooks/safety/index.js +0 -0
  398. /package/src/{@claude-flow → packages}/shared/dist/hooks/session-hooks.js +0 -0
  399. /package/src/{@claude-flow → packages}/shared/dist/hooks/task-hooks.js +0 -0
  400. /package/src/{@claude-flow → packages}/shared/dist/hooks/types.js +0 -0
  401. /package/src/{@claude-flow → packages}/shared/dist/hooks/verify-exports.test.js +0 -0
  402. /package/src/{@claude-flow → packages}/shared/dist/index.js +0 -0
  403. /package/src/{@claude-flow → packages}/shared/dist/mcp/connection-pool.js +0 -0
  404. /package/src/{@claude-flow → packages}/shared/dist/mcp/index.js +0 -0
  405. /package/src/{@claude-flow → packages}/shared/dist/mcp/server.js +0 -0
  406. /package/src/{@claude-flow → packages}/shared/dist/mcp/session-manager.js +0 -0
  407. /package/src/{@claude-flow → packages}/shared/dist/mcp/tool-registry.js +0 -0
  408. /package/src/{@claude-flow → packages}/shared/dist/mcp/transport/http.js +0 -0
  409. /package/src/{@claude-flow → packages}/shared/dist/mcp/transport/index.js +0 -0
  410. /package/src/{@claude-flow → packages}/shared/dist/mcp/transport/stdio.js +0 -0
  411. /package/src/{@claude-flow → packages}/shared/dist/mcp/transport/websocket.js +0 -0
  412. /package/src/{@claude-flow → packages}/shared/dist/mcp/types.js +0 -0
  413. /package/src/{@claude-flow → packages}/shared/dist/plugin-interface.js +0 -0
  414. /package/src/{@claude-flow → packages}/shared/dist/plugin-loader.js +0 -0
  415. /package/src/{@claude-flow → packages}/shared/dist/plugin-registry.js +0 -0
  416. /package/src/{@claude-flow → packages}/shared/dist/plugins/index.js +0 -0
  417. /package/src/{@claude-flow → packages}/shared/dist/plugins/official/hive-mind-plugin.js +0 -0
  418. /package/src/{@claude-flow → packages}/shared/dist/plugins/official/index.js +0 -0
  419. /package/src/{@claude-flow → packages}/shared/dist/plugins/official/maestro-plugin.js +0 -0
  420. /package/src/{@claude-flow → packages}/shared/dist/plugins/types.js +0 -0
  421. /package/src/{@claude-flow → packages}/shared/dist/resilience/bulkhead.js +0 -0
  422. /package/src/{@claude-flow → packages}/shared/dist/resilience/circuit-breaker.js +0 -0
  423. /package/src/{@claude-flow → packages}/shared/dist/resilience/index.js +0 -0
  424. /package/src/{@claude-flow → packages}/shared/dist/resilience/rate-limiter.js +0 -0
  425. /package/src/{@claude-flow → packages}/shared/dist/resilience/retry.js +0 -0
  426. /package/src/{@claude-flow → packages}/shared/dist/security/index.js +0 -0
  427. /package/src/{@claude-flow → packages}/shared/dist/security/input-validation.js +0 -0
  428. /package/src/{@claude-flow → packages}/shared/dist/security/secure-random.js +0 -0
  429. /package/src/{@claude-flow → packages}/shared/dist/services/index.js +0 -0
  430. /package/src/{@claude-flow → packages}/shared/dist/services/v3-progress.service.js +0 -0
  431. /package/src/{@claude-flow → packages}/shared/dist/types/agent.types.js +0 -0
  432. /package/src/{@claude-flow → packages}/shared/dist/types/index.js +0 -0
  433. /package/src/{@claude-flow → packages}/shared/dist/types/mcp.types.js +0 -0
  434. /package/src/{@claude-flow → packages}/shared/dist/types/memory.types.js +0 -0
  435. /package/src/{@claude-flow → packages}/shared/dist/types/swarm.types.js +0 -0
  436. /package/src/{@claude-flow → packages}/shared/dist/types/task.types.js +0 -0
  437. /package/src/{@claude-flow → packages}/shared/dist/types.js +0 -0
  438. /package/src/{@claude-flow → packages}/shared/dist/utils/secure-logger.js +0 -0
  439. /package/src/{@claude-flow → packages}/shared/package.json +0 -0
@@ -1,584 +0,0 @@
1
- /**
2
- * Container Worker Pool
3
- * Docker-based worker pool for high-throughput headless execution.
4
- *
5
- * ADR-020: Headless Worker Integration Architecture - Phase 3
6
- * - Manages pool of Docker containers for isolated worker execution
7
- * - Supports dynamic scaling based on workload
8
- * - Provides container lifecycle management
9
- * - Integrates with WorkerQueue for task distribution
10
- *
11
- * Key Features:
12
- * - Container pooling with configurable size
13
- * - Health checking and auto-recovery
14
- * - Resource limits (CPU, memory)
15
- * - Volume mounting for workspace access
16
- * - Network isolation per worker type
17
- */
18
- import { EventEmitter } from 'events';
19
- import { spawn, exec } from 'child_process';
20
- import { promisify } from 'util';
21
- import { existsSync, mkdirSync } from 'fs';
22
- import { join } from 'path';
23
- const execAsync = promisify(exec);
24
- // ============================================
25
- // Constants
26
- // ============================================
27
- const DEFAULT_CONFIG = {
28
- maxContainers: 3,
29
- minContainers: 1,
30
- image: 'ghcr.io/ruvnet/claude-flow-headless:latest',
31
- resources: {
32
- cpus: '2',
33
- memory: '4g',
34
- },
35
- healthCheckIntervalMs: 30000,
36
- idleTimeoutMs: 300000, // 5 minutes
37
- workspacePath: '/workspace',
38
- statePath: '.claude-flow/container-pool',
39
- defaultSandbox: 'strict',
40
- };
41
- // ============================================
42
- // ContainerWorkerPool Class
43
- // ============================================
44
- /**
45
- * ContainerWorkerPool - Manages Docker containers for headless worker execution
46
- */
47
- export class ContainerWorkerPool extends EventEmitter {
48
- config;
49
- projectRoot;
50
- containers = new Map();
51
- taskQueue = [];
52
- healthCheckTimer;
53
- idleCheckTimer;
54
- dockerAvailable = null;
55
- initialized = false;
56
- isShuttingDown = false;
57
- exitHandlersRegistered = false;
58
- constructor(projectRoot, config) {
59
- super();
60
- this.projectRoot = projectRoot;
61
- this.config = { ...DEFAULT_CONFIG, ...config };
62
- // Ensure state directory exists
63
- const stateDir = join(projectRoot, this.config.statePath);
64
- if (!existsSync(stateDir)) {
65
- mkdirSync(stateDir, { recursive: true });
66
- }
67
- }
68
- // ============================================
69
- // Public API
70
- // ============================================
71
- /**
72
- * Initialize the container pool
73
- */
74
- async initialize() {
75
- if (this.initialized) {
76
- return true;
77
- }
78
- // Check Docker availability
79
- this.dockerAvailable = await this.checkDockerAvailable();
80
- if (!this.dockerAvailable) {
81
- this.emit('warning', { message: 'Docker not available - container pool disabled' });
82
- return false;
83
- }
84
- // Pull image if needed
85
- await this.ensureImage();
86
- // Create minimum containers
87
- await this.scaleToMinimum();
88
- // Start health check timer
89
- this.startHealthChecks();
90
- // Start idle check timer
91
- this.startIdleChecks();
92
- // Register exit handlers for cleanup
93
- this.registerExitHandlers();
94
- this.initialized = true;
95
- this.emit('initialized', { containers: this.containers.size });
96
- return true;
97
- }
98
- /**
99
- * Register process exit handlers to clean up containers
100
- */
101
- registerExitHandlers() {
102
- if (this.exitHandlersRegistered)
103
- return;
104
- const cleanup = async () => {
105
- if (!this.isShuttingDown) {
106
- await this.shutdown();
107
- }
108
- };
109
- process.once('SIGTERM', cleanup);
110
- process.once('SIGINT', cleanup);
111
- process.once('beforeExit', cleanup);
112
- this.exitHandlersRegistered = true;
113
- }
114
- /**
115
- * Execute a worker in a container
116
- */
117
- async execute(options) {
118
- if (!this.initialized) {
119
- await this.initialize();
120
- }
121
- if (!this.dockerAvailable) {
122
- return this.createErrorResult(options.workerType, 'Docker not available');
123
- }
124
- // Try to get a ready container
125
- const container = this.getReadyContainer();
126
- if (container) {
127
- return this.executeInContainer(container, options);
128
- }
129
- // No ready containers - check if we can create more
130
- if (this.containers.size < this.config.maxContainers) {
131
- const newContainer = await this.createContainer();
132
- if (newContainer) {
133
- return this.executeInContainer(newContainer, options);
134
- }
135
- }
136
- // Queue the task
137
- return new Promise((resolve, reject) => {
138
- this.taskQueue.push({
139
- options,
140
- resolve,
141
- reject,
142
- queuedAt: new Date(),
143
- });
144
- this.emit('taskQueued', {
145
- workerType: options.workerType,
146
- queuePosition: this.taskQueue.length,
147
- });
148
- });
149
- }
150
- /**
151
- * Scale pool for batch execution
152
- */
153
- async scaleForBatch(workerCount) {
154
- const targetSize = Math.min(workerCount, this.config.maxContainers);
155
- const currentSize = this.containers.size;
156
- if (targetSize > currentSize) {
157
- const toCreate = targetSize - currentSize;
158
- const createPromises = [];
159
- for (let i = 0; i < toCreate; i++) {
160
- createPromises.push(this.createContainer());
161
- }
162
- await Promise.all(createPromises);
163
- this.emit('scaled', { from: currentSize, to: this.containers.size });
164
- }
165
- }
166
- /**
167
- * Get pool status
168
- */
169
- getStatus() {
170
- const containers = Array.from(this.containers.values());
171
- return {
172
- totalContainers: containers.length,
173
- readyContainers: containers.filter(c => c.state === 'ready').length,
174
- busyContainers: containers.filter(c => c.state === 'busy').length,
175
- unhealthyContainers: containers.filter(c => c.state === 'unhealthy').length,
176
- queuedTasks: this.taskQueue.length,
177
- containers,
178
- dockerAvailable: this.dockerAvailable ?? false,
179
- lastHealthCheck: undefined, // Will be set by health check
180
- };
181
- }
182
- /**
183
- * Shutdown the pool
184
- */
185
- async shutdown() {
186
- if (this.isShuttingDown)
187
- return;
188
- this.isShuttingDown = true;
189
- // Stop timers
190
- if (this.healthCheckTimer) {
191
- clearInterval(this.healthCheckTimer);
192
- this.healthCheckTimer = undefined;
193
- }
194
- if (this.idleCheckTimer) {
195
- clearInterval(this.idleCheckTimer);
196
- this.idleCheckTimer = undefined;
197
- }
198
- // Reject queued tasks
199
- for (const task of this.taskQueue) {
200
- task.reject(new Error('Pool shutting down'));
201
- }
202
- this.taskQueue = [];
203
- // Terminate all containers with timeout
204
- const terminatePromises = [];
205
- for (const [id] of this.containers) {
206
- terminatePromises.push(this.terminateContainer(id).catch(() => {
207
- // Ignore errors during shutdown
208
- }));
209
- }
210
- // Wait for all containers with 30s timeout
211
- await Promise.race([
212
- Promise.all(terminatePromises),
213
- new Promise(resolve => setTimeout(resolve, 30000)),
214
- ]);
215
- this.initialized = false;
216
- this.emit('shutdown', {});
217
- }
218
- // ============================================
219
- // Private Methods - Container Lifecycle
220
- // ============================================
221
- /**
222
- * Check if Docker is available (async)
223
- */
224
- async checkDockerAvailable() {
225
- try {
226
- await execAsync('docker --version', { timeout: 5000 });
227
- await execAsync('docker info', { timeout: 10000 });
228
- return true;
229
- }
230
- catch {
231
- return false;
232
- }
233
- }
234
- /**
235
- * Ensure the container image exists (async)
236
- */
237
- async ensureImage() {
238
- try {
239
- await execAsync(`docker image inspect ${this.config.image}`, { timeout: 10000 });
240
- }
241
- catch {
242
- // Image not found, try to pull
243
- this.emit('imagePull', { image: this.config.image });
244
- try {
245
- await execAsync(`docker pull ${this.config.image}`, { timeout: 300000 });
246
- }
247
- catch (error) {
248
- this.emit('warning', { message: `Failed to pull image: ${error}` });
249
- // Continue anyway - might work with local image
250
- }
251
- }
252
- }
253
- /**
254
- * Create a new container
255
- */
256
- async createContainer() {
257
- const id = `cf-worker-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
258
- const name = `claude-flow-worker-${id}`;
259
- const containerInfo = {
260
- id,
261
- name,
262
- state: 'creating',
263
- createdAt: new Date(),
264
- executionCount: 0,
265
- healthCheckFailures: 0,
266
- };
267
- this.containers.set(id, containerInfo);
268
- this.emit('containerCreating', { id, name });
269
- try {
270
- // Build docker run command
271
- const args = [
272
- 'run', '-d',
273
- '--name', name,
274
- '--cpus', this.config.resources.cpus,
275
- '--memory', this.config.resources.memory,
276
- '-v', `${this.projectRoot}:${this.config.workspacePath}:ro`,
277
- '-v', `${join(this.projectRoot, this.config.statePath)}:/root/.claude-flow`,
278
- '-w', this.config.workspacePath,
279
- ];
280
- // Add environment variables
281
- const env = {
282
- ...this.config.env,
283
- ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY || '',
284
- CLAUDE_CODE_HEADLESS: 'true',
285
- CLAUDE_CODE_SANDBOX_MODE: this.config.defaultSandbox,
286
- };
287
- for (const [key, value] of Object.entries(env)) {
288
- if (value) {
289
- args.push('-e', `${key}=${value}`);
290
- }
291
- }
292
- // Add network if specified
293
- if (this.config.network) {
294
- args.push('--network', this.config.network);
295
- }
296
- // Add image and entrypoint to keep container running
297
- args.push(this.config.image, 'tail', '-f', '/dev/null');
298
- // Create the container (async)
299
- const { stdout } = await execAsync(`docker ${args.join(' ')}`, { timeout: 60000 });
300
- const containerId = stdout.trim();
301
- containerInfo.state = 'ready';
302
- this.emit('containerCreated', { id, name, containerId });
303
- return containerInfo;
304
- }
305
- catch (error) {
306
- this.containers.delete(id);
307
- this.emit('containerError', { id, error: String(error) });
308
- return null;
309
- }
310
- }
311
- /**
312
- * Terminate a container (async)
313
- */
314
- async terminateContainer(id) {
315
- const container = this.containers.get(id);
316
- if (!container)
317
- return;
318
- container.state = 'terminated';
319
- try {
320
- await execAsync(`docker rm -f ${container.name}`, { timeout: 30000 });
321
- }
322
- catch {
323
- // Ignore removal errors
324
- }
325
- this.containers.delete(id);
326
- this.emit('containerTerminated', { id, name: container.name });
327
- }
328
- /**
329
- * Get a ready container
330
- */
331
- getReadyContainer() {
332
- for (const container of this.containers.values()) {
333
- if (container.state === 'ready') {
334
- return container;
335
- }
336
- }
337
- return null;
338
- }
339
- /**
340
- * Scale to minimum containers
341
- */
342
- async scaleToMinimum() {
343
- const current = this.containers.size;
344
- const needed = this.config.minContainers - current;
345
- if (needed > 0) {
346
- const createPromises = [];
347
- for (let i = 0; i < needed; i++) {
348
- createPromises.push(this.createContainer());
349
- }
350
- await Promise.all(createPromises);
351
- }
352
- }
353
- // ============================================
354
- // Private Methods - Execution
355
- // ============================================
356
- /**
357
- * Execute worker in a specific container
358
- */
359
- async executeInContainer(container, options) {
360
- const startTime = Date.now();
361
- const executionId = `${options.workerType}_${startTime}_${Math.random().toString(36).slice(2, 8)}`;
362
- container.state = 'busy';
363
- container.workerType = options.workerType;
364
- container.lastUsedAt = new Date();
365
- this.emit('executionStart', { executionId, containerId: container.id, workerType: options.workerType });
366
- try {
367
- // Build the command to run inside container
368
- const command = this.buildWorkerCommand(options);
369
- // Execute in container with timeout
370
- const timeoutMs = options.timeoutMs || 300000;
371
- const output = await this.execInContainer(container.name, command, timeoutMs);
372
- container.state = 'ready';
373
- container.executionCount++;
374
- const result = {
375
- success: true,
376
- output: output,
377
- parsedOutput: this.tryParseJson(output),
378
- durationMs: Date.now() - startTime,
379
- model: options.model || 'sonnet',
380
- sandboxMode: options.sandbox || this.config.defaultSandbox,
381
- workerType: options.workerType,
382
- timestamp: new Date(),
383
- executionId,
384
- };
385
- this.emit('executionComplete', result);
386
- // Process queue
387
- this.processQueue();
388
- return result;
389
- }
390
- catch (error) {
391
- container.state = 'ready';
392
- const result = this.createErrorResult(options.workerType, error instanceof Error ? error.message : String(error));
393
- result.executionId = executionId;
394
- result.durationMs = Date.now() - startTime;
395
- this.emit('executionError', result);
396
- // Process queue
397
- this.processQueue();
398
- return result;
399
- }
400
- }
401
- /**
402
- * Execute command in container
403
- */
404
- async execInContainer(containerName, command, timeoutMs) {
405
- return new Promise((resolve, reject) => {
406
- const args = ['exec', containerName, ...command];
407
- const child = spawn('docker', args, {
408
- stdio: ['pipe', 'pipe', 'pipe'],
409
- windowsHide: true,
410
- });
411
- let stdout = '';
412
- let stderr = '';
413
- let timedOut = false;
414
- const timeout = setTimeout(() => {
415
- timedOut = true;
416
- child.kill('SIGTERM');
417
- setTimeout(() => {
418
- if (!child.killed) {
419
- child.kill('SIGKILL');
420
- }
421
- }, 5000);
422
- }, timeoutMs);
423
- child.stdout?.on('data', (data) => {
424
- stdout += data.toString();
425
- });
426
- child.stderr?.on('data', (data) => {
427
- stderr += data.toString();
428
- });
429
- child.on('close', (code) => {
430
- clearTimeout(timeout);
431
- if (timedOut) {
432
- reject(new Error(`Execution timed out after ${timeoutMs}ms`));
433
- return;
434
- }
435
- if (code !== 0) {
436
- reject(new Error(stderr || `Process exited with code ${code}`));
437
- return;
438
- }
439
- resolve(stdout);
440
- });
441
- child.on('error', (error) => {
442
- clearTimeout(timeout);
443
- reject(error);
444
- });
445
- });
446
- }
447
- /**
448
- * Build worker command for container execution
449
- */
450
- buildWorkerCommand(options) {
451
- // Use npx to run claude-flow daemon trigger
452
- return [
453
- 'npx', 'claude-flow@v3alpha',
454
- 'daemon', 'trigger',
455
- '-w', options.workerType,
456
- '--headless',
457
- ];
458
- }
459
- /**
460
- * Process queued tasks
461
- */
462
- processQueue() {
463
- while (this.taskQueue.length > 0) {
464
- const container = this.getReadyContainer();
465
- if (!container)
466
- break;
467
- const task = this.taskQueue.shift();
468
- if (task) {
469
- this.executeInContainer(container, task.options)
470
- .then(task.resolve)
471
- .catch(task.reject);
472
- }
473
- }
474
- }
475
- // ============================================
476
- // Private Methods - Health & Maintenance
477
- // ============================================
478
- /**
479
- * Start health check timer
480
- */
481
- startHealthChecks() {
482
- this.healthCheckTimer = setInterval(async () => {
483
- await this.runHealthChecks();
484
- }, this.config.healthCheckIntervalMs);
485
- this.healthCheckTimer.unref();
486
- }
487
- /**
488
- * Run health checks on all containers
489
- */
490
- async runHealthChecks() {
491
- for (const [id, container] of this.containers) {
492
- if (container.state === 'terminated')
493
- continue;
494
- try {
495
- // Check if container is running (async)
496
- const { stdout } = await execAsync(`docker inspect -f '{{.State.Running}}' ${container.name}`, { timeout: 10000 });
497
- const output = stdout.trim();
498
- if (output !== 'true') {
499
- container.healthCheckFailures++;
500
- if (container.healthCheckFailures >= 3) {
501
- container.state = 'unhealthy';
502
- this.emit('containerUnhealthy', { id, name: container.name });
503
- // Remove and replace
504
- await this.terminateContainer(id);
505
- if (this.containers.size < this.config.minContainers) {
506
- await this.createContainer();
507
- }
508
- }
509
- }
510
- else {
511
- container.healthCheckFailures = 0;
512
- }
513
- }
514
- catch {
515
- container.healthCheckFailures++;
516
- }
517
- }
518
- this.emit('healthCheckComplete', { containers: this.containers.size });
519
- }
520
- /**
521
- * Start idle check timer
522
- */
523
- startIdleChecks() {
524
- this.idleCheckTimer = setInterval(async () => {
525
- await this.runIdleChecks();
526
- }, 60000); // Check every minute
527
- this.idleCheckTimer.unref();
528
- }
529
- /**
530
- * Terminate idle containers above minimum
531
- */
532
- async runIdleChecks() {
533
- const now = Date.now();
534
- const readyContainers = Array.from(this.containers.values())
535
- .filter(c => c.state === 'ready')
536
- .sort((a, b) => (a.lastUsedAt?.getTime() || 0) - (b.lastUsedAt?.getTime() || 0));
537
- // Keep minimum containers
538
- const toTerminate = readyContainers.slice(this.config.minContainers);
539
- for (const container of toTerminate) {
540
- const lastUsed = container.lastUsedAt?.getTime() || container.createdAt.getTime();
541
- if (now - lastUsed > this.config.idleTimeoutMs) {
542
- await this.terminateContainer(container.id);
543
- this.emit('containerIdleTerminated', { id: container.id, name: container.name });
544
- }
545
- }
546
- }
547
- // ============================================
548
- // Private Methods - Utilities
549
- // ============================================
550
- /**
551
- * Try to parse JSON from output
552
- */
553
- tryParseJson(output) {
554
- try {
555
- const jsonMatch = output.match(/\{[\s\S]*\}/);
556
- if (jsonMatch) {
557
- return JSON.parse(jsonMatch[0]);
558
- }
559
- return JSON.parse(output.trim());
560
- }
561
- catch {
562
- return undefined;
563
- }
564
- }
565
- /**
566
- * Create an error result
567
- */
568
- createErrorResult(workerType, error) {
569
- return {
570
- success: false,
571
- output: '',
572
- durationMs: 0,
573
- model: 'unknown',
574
- sandboxMode: this.config.defaultSandbox,
575
- workerType,
576
- timestamp: new Date(),
577
- executionId: `error_${Date.now()}`,
578
- error,
579
- };
580
- }
581
- }
582
- // Export default
583
- export default ContainerWorkerPool;
584
- //# sourceMappingURL=container-worker-pool.js.map