kynjal-cli 3.1.3 → 4.0.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 (566) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/core/planner.md +2 -2
  3. package/.claude/agents/core/researcher.md +1 -1
  4. package/.claude/agents/core/reviewer.md +1 -1
  5. package/.claude/agents/core/tester.md +1 -1
  6. package/.claude/agents/data/data-ml-model.md +4 -4
  7. package/.claude/agents/development/dev-backend-api.md +4 -4
  8. package/.claude/agents/documentation/docs-api-openapi.md +4 -4
  9. package/.claude/agents/github/code-review-swarm.md +2 -2
  10. package/.claude/agents/github/issue-tracker.md +2 -2
  11. package/.claude/agents/github/pr-manager.md +2 -2
  12. package/.claude/agents/github/release-manager.md +2 -2
  13. package/.claude/agents/github/workflow-automation.md +2 -2
  14. package/.claude/agents/sparc/architecture.md +3 -3
  15. package/.claude/agents/sparc/pseudocode.md +2 -2
  16. package/.claude/agents/sparc/refinement.md +3 -3
  17. package/.claude/agents/sparc/specification.md +2 -2
  18. package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
  19. package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
  20. package/.claude/agents/swarm/mesh-coordinator.md +1 -1
  21. package/.claude/agents/templates/base-template-generator.md +25 -4
  22. package/.claude/agents/templates/sparc-coordinator.md +3 -3
  23. package/.claude/helpers/auto-commit.sh +1 -1
  24. package/.claude/helpers/auto-memory-hook.mjs +27 -9
  25. package/.claude/helpers/hook-handler.cjs +58 -18
  26. package/.claude/helpers/statusline.cjs +14 -33
  27. package/.claude/helpers/statusline.js +3 -3
  28. package/.claude/settings.json +9 -9
  29. package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
  30. package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
  31. package/README.md +383 -170
  32. package/bin/cli.js +6 -6
  33. package/bin/mcp-server.js +1 -1
  34. package/bin/preinstall.cjs +2 -0
  35. package/dist/src/appliance/gguf-engine.js +664 -0
  36. package/dist/src/appliance/gguf-engine.js.map +1 -0
  37. package/dist/src/appliance/ruvllm-bridge.js +492 -0
  38. package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
  39. package/dist/src/appliance/rvfa-builder.js +383 -0
  40. package/dist/src/appliance/rvfa-builder.js.map +1 -0
  41. package/dist/src/appliance/rvfa-distribution.js +533 -0
  42. package/dist/src/appliance/rvfa-distribution.js.map +1 -0
  43. package/dist/src/appliance/rvfa-format.js +465 -0
  44. package/dist/src/appliance/rvfa-format.js.map +1 -0
  45. package/dist/src/appliance/rvfa-runner.js +373 -0
  46. package/dist/src/appliance/rvfa-runner.js.map +1 -0
  47. package/dist/src/appliance/rvfa-signing.js +469 -0
  48. package/dist/src/appliance/rvfa-signing.js.map +1 -0
  49. package/dist/src/benchmarks/pretrain/index.js +542 -331
  50. package/dist/src/benchmarks/pretrain/index.js.map +1 -1
  51. package/dist/src/commands/agent.d.ts.map +1 -1
  52. package/dist/src/commands/agent.js +725 -502
  53. package/dist/src/commands/agent.js.map +1 -1
  54. package/dist/src/commands/analyze.js +1548 -1218
  55. package/dist/src/commands/analyze.js.map +1 -1
  56. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  57. package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
  58. package/dist/src/commands/appliance-advanced.js +324 -0
  59. package/dist/src/commands/appliance-advanced.js.map +1 -0
  60. package/dist/src/commands/appliance.d.ts +8 -0
  61. package/dist/src/commands/appliance.d.ts.map +1 -0
  62. package/dist/src/commands/appliance.js +581 -0
  63. package/dist/src/commands/appliance.js.map +1 -0
  64. package/dist/src/commands/benchmark.js +523 -372
  65. package/dist/src/commands/benchmark.js.map +1 -1
  66. package/dist/src/commands/claims.js +364 -274
  67. package/dist/src/commands/claims.js.map +1 -1
  68. package/dist/src/commands/cleanup.d.ts +13 -0
  69. package/dist/src/commands/cleanup.d.ts.map +1 -0
  70. package/dist/src/commands/cleanup.js +262 -0
  71. package/dist/src/commands/cleanup.js.map +1 -0
  72. package/dist/src/commands/completions.js +118 -477
  73. package/dist/src/commands/completions.js.map +1 -1
  74. package/dist/src/commands/config.js +303 -237
  75. package/dist/src/commands/config.js.map +1 -1
  76. package/dist/src/commands/daemon.d.ts.map +1 -1
  77. package/dist/src/commands/daemon.js +597 -425
  78. package/dist/src/commands/daemon.js.map +1 -1
  79. package/dist/src/commands/deployment.js +275 -194
  80. package/dist/src/commands/deployment.js.map +1 -1
  81. package/dist/src/commands/doctor.d.ts.map +1 -1
  82. package/dist/src/commands/doctor.js +690 -460
  83. package/dist/src/commands/doctor.js.map +1 -1
  84. package/dist/src/commands/embeddings.js +1543 -1293
  85. package/dist/src/commands/embeddings.js.map +1 -1
  86. package/dist/src/commands/guidance.js +596 -449
  87. package/dist/src/commands/guidance.js.map +1 -1
  88. package/dist/src/commands/hive-mind.js +938 -854
  89. package/dist/src/commands/hive-mind.js.map +1 -1
  90. package/dist/src/commands/hooks.d.ts.map +1 -1
  91. package/dist/src/commands/hooks.js +3677 -2570
  92. package/dist/src/commands/hooks.js.map +1 -1
  93. package/dist/src/commands/index.js +322 -122
  94. package/dist/src/commands/index.js.map +1 -1
  95. package/dist/src/commands/init.d.ts +1 -1
  96. package/dist/src/commands/init.d.ts.map +1 -1
  97. package/dist/src/commands/init.js +943 -787
  98. package/dist/src/commands/init.js.map +1 -1
  99. package/dist/src/commands/issues.js +558 -383
  100. package/dist/src/commands/issues.js.map +1 -1
  101. package/dist/src/commands/mcp.d.ts.map +1 -1
  102. package/dist/src/commands/mcp.js +605 -475
  103. package/dist/src/commands/mcp.js.map +1 -1
  104. package/dist/src/commands/memory.d.ts.map +1 -1
  105. package/dist/src/commands/memory.js +1031 -814
  106. package/dist/src/commands/memory.js.map +1 -1
  107. package/dist/src/commands/migrate.js +347 -282
  108. package/dist/src/commands/migrate.js.map +1 -1
  109. package/dist/src/commands/neural.d.ts.map +1 -1
  110. package/dist/src/commands/neural.js +1563 -1283
  111. package/dist/src/commands/neural.js.map +1 -1
  112. package/dist/src/commands/performance.js +643 -497
  113. package/dist/src/commands/performance.js.map +1 -1
  114. package/dist/src/commands/plugins.js +841 -668
  115. package/dist/src/commands/plugins.js.map +1 -1
  116. package/dist/src/commands/process.js +447 -392
  117. package/dist/src/commands/process.js.map +1 -1
  118. package/dist/src/commands/progress.js +256 -162
  119. package/dist/src/commands/progress.js.map +1 -1
  120. package/dist/src/commands/providers.js +220 -150
  121. package/dist/src/commands/providers.js.map +1 -1
  122. package/dist/src/commands/route.js +665 -520
  123. package/dist/src/commands/route.js.map +1 -1
  124. package/dist/src/commands/ruvector/backup.js +651 -505
  125. package/dist/src/commands/ruvector/backup.js.map +1 -1
  126. package/dist/src/commands/ruvector/benchmark.js +401 -349
  127. package/dist/src/commands/ruvector/benchmark.js.map +1 -1
  128. package/dist/src/commands/ruvector/import.js +267 -225
  129. package/dist/src/commands/ruvector/import.js.map +1 -1
  130. package/dist/src/commands/ruvector/index.js +75 -37
  131. package/dist/src/commands/ruvector/index.js.map +1 -1
  132. package/dist/src/commands/ruvector/init.js +359 -336
  133. package/dist/src/commands/ruvector/init.js.map +1 -1
  134. package/dist/src/commands/ruvector/migrate.js +322 -335
  135. package/dist/src/commands/ruvector/migrate.js.map +1 -1
  136. package/dist/src/commands/ruvector/optimize.js +431 -375
  137. package/dist/src/commands/ruvector/optimize.js.map +1 -1
  138. package/dist/src/commands/ruvector/setup.js +117 -703
  139. package/dist/src/commands/ruvector/setup.js.map +1 -1
  140. package/dist/src/commands/ruvector/status.js +419 -364
  141. package/dist/src/commands/ruvector/status.js.map +1 -1
  142. package/dist/src/commands/security.d.ts.map +1 -1
  143. package/dist/src/commands/security.js +610 -456
  144. package/dist/src/commands/security.js.map +1 -1
  145. package/dist/src/commands/session.d.ts +1 -1
  146. package/dist/src/commands/session.js +627 -505
  147. package/dist/src/commands/session.js.map +1 -1
  148. package/dist/src/commands/start.d.ts +1 -1
  149. package/dist/src/commands/start.js +368 -271
  150. package/dist/src/commands/start.js.map +1 -1
  151. package/dist/src/commands/status.d.ts +1 -1
  152. package/dist/src/commands/status.d.ts.map +1 -1
  153. package/dist/src/commands/status.js +492 -379
  154. package/dist/src/commands/status.js.map +1 -1
  155. package/dist/src/commands/swarm.js +488 -408
  156. package/dist/src/commands/swarm.js.map +1 -1
  157. package/dist/src/commands/task.d.ts +1 -1
  158. package/dist/src/commands/task.js +539 -424
  159. package/dist/src/commands/task.js.map +1 -1
  160. package/dist/src/commands/transfer-store.js +412 -322
  161. package/dist/src/commands/transfer-store.js.map +1 -1
  162. package/dist/src/commands/update.js +291 -196
  163. package/dist/src/commands/update.js.map +1 -1
  164. package/dist/src/commands/workflow.js +486 -386
  165. package/dist/src/commands/workflow.js.map +1 -1
  166. package/dist/src/config-adapter.js +40 -39
  167. package/dist/src/config-adapter.js.map +1 -1
  168. package/dist/src/index.js +416 -312
  169. package/dist/src/index.js.map +1 -1
  170. package/dist/src/infrastructure/in-memory-repositories.js +507 -246
  171. package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
  172. package/dist/src/init/claudemd-generator.js +78 -368
  173. package/dist/src/init/claudemd-generator.js.map +1 -1
  174. package/dist/src/init/executor.js +1019 -1345
  175. package/dist/src/init/executor.js.map +1 -1
  176. package/dist/src/init/helpers-generator.js +60 -635
  177. package/dist/src/init/helpers-generator.js.map +1 -1
  178. package/dist/src/init/index.d.ts +1 -1
  179. package/dist/src/init/index.d.ts.map +1 -1
  180. package/dist/src/init/index.js +1 -1
  181. package/dist/src/init/index.js.map +1 -1
  182. package/dist/src/init/mcp-generator.d.ts +0 -1
  183. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  184. package/dist/src/init/mcp-generator.js +62 -42
  185. package/dist/src/init/mcp-generator.js.map +1 -1
  186. package/dist/src/init/settings-generator.d.ts.map +1 -1
  187. package/dist/src/init/settings-generator.js +167 -100
  188. package/dist/src/init/settings-generator.js.map +1 -1
  189. package/dist/src/init/statusline-generator.d.ts +16 -8
  190. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  191. package/dist/src/init/statusline-generator.js +20 -1300
  192. package/dist/src/init/statusline-generator.js.map +1 -1
  193. package/dist/src/init/types.d.ts +15 -5
  194. package/dist/src/init/types.d.ts.map +1 -1
  195. package/dist/src/init/types.js +66 -76
  196. package/dist/src/init/types.js.map +1 -1
  197. package/dist/src/mcp-client.js +130 -76
  198. package/dist/src/mcp-client.js.map +1 -1
  199. package/dist/src/mcp-server.js +758 -445
  200. package/dist/src/mcp-server.js.map +1 -1
  201. package/dist/src/mcp-tools/agent-tools.js +492 -391
  202. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  203. package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  204. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
  205. package/dist/src/mcp-tools/agentdb-tools.js +758 -0
  206. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
  207. package/dist/src/mcp-tools/analyze-tools.js +236 -172
  208. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  209. package/dist/src/mcp-tools/auto-install.js +142 -80
  210. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  211. package/dist/src/mcp-tools/browser-tools.js +375 -252
  212. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  213. package/dist/src/mcp-tools/claims-tools.js +565 -473
  214. package/dist/src/mcp-tools/claims-tools.js.map +1 -1
  215. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  216. package/dist/src/mcp-tools/config-tools.js +284 -190
  217. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  218. package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
  219. package/dist/src/mcp-tools/coordination-tools.js +600 -349
  220. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  221. package/dist/src/mcp-tools/daa-tools.js +367 -289
  222. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  223. package/dist/src/mcp-tools/embeddings-tools.js +693 -582
  224. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  225. package/dist/src/mcp-tools/github-tools.js +312 -261
  226. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  227. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  228. package/dist/src/mcp-tools/hive-mind-tools.js +718 -423
  229. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  230. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  231. package/dist/src/mcp-tools/hooks-tools.js +2726 -1978
  232. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  233. package/dist/src/mcp-tools/index.d.ts +2 -0
  234. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  235. package/dist/src/mcp-tools/index.js +2 -0
  236. package/dist/src/mcp-tools/index.js.map +1 -1
  237. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  238. package/dist/src/mcp-tools/memory-tools.js +514 -329
  239. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  240. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  241. package/dist/src/mcp-tools/neural-tools.js +428 -326
  242. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  243. package/dist/src/mcp-tools/performance-tools.js +480 -420
  244. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  245. package/dist/src/mcp-tools/progress-tools.js +278 -204
  246. package/dist/src/mcp-tools/progress-tools.js.map +1 -1
  247. package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  248. package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -0
  249. package/dist/src/mcp-tools/ruvllm-tools.js +399 -0
  250. package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -0
  251. package/dist/src/mcp-tools/security-tools.js +429 -297
  252. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  253. package/dist/src/mcp-tools/session-tools.js +234 -185
  254. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  255. package/dist/src/mcp-tools/swarm-tools.d.ts +2 -1
  256. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  257. package/dist/src/mcp-tools/swarm-tools.js +303 -64
  258. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  259. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  260. package/dist/src/mcp-tools/system-tools.js +352 -200
  261. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  262. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  263. package/dist/src/mcp-tools/task-tools.js +357 -189
  264. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  265. package/dist/src/mcp-tools/terminal-tools.js +196 -148
  266. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  267. package/dist/src/mcp-tools/transfer-tools.js +333 -186
  268. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  269. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
  270. package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -0
  271. package/dist/src/mcp-tools/wasm-agent-tools.js +377 -0
  272. package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -0
  273. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  274. package/dist/src/mcp-tools/workflow-tools.js +471 -335
  275. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  276. package/dist/src/memory/ewc-consolidation.js +345 -173
  277. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  278. package/dist/src/memory/intelligence.js +841 -359
  279. package/dist/src/memory/intelligence.js.map +1 -1
  280. package/dist/src/memory/memory-bridge.js +1964 -0
  281. package/dist/src/memory/memory-bridge.js.map +1 -0
  282. package/dist/src/memory/memory-initializer.js +1895 -1602
  283. package/dist/src/memory/memory-initializer.js.map +1 -1
  284. package/dist/src/memory/sona-optimizer.js +329 -199
  285. package/dist/src/memory/sona-optimizer.js.map +1 -1
  286. package/dist/src/output.d.ts +2 -2
  287. package/dist/src/output.d.ts.map +1 -1
  288. package/dist/src/output.js +273 -242
  289. package/dist/src/output.js.map +1 -1
  290. package/dist/src/parser.js +217 -124
  291. package/dist/src/parser.js.map +1 -1
  292. package/dist/src/plugins/manager.js +531 -278
  293. package/dist/src/plugins/manager.js.map +1 -1
  294. package/dist/src/plugins/store/discovery.js +362 -275
  295. package/dist/src/plugins/store/discovery.js.map +1 -1
  296. package/dist/src/plugins/store/index.js +105 -48
  297. package/dist/src/plugins/store/index.js.map +1 -1
  298. package/dist/src/plugins/store/search.js +107 -69
  299. package/dist/src/plugins/store/search.js.map +1 -1
  300. package/dist/src/plugins/tests/demo-plugin-store.js +160 -113
  301. package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
  302. package/dist/src/plugins/tests/standalone-test.js +223 -172
  303. package/dist/src/plugins/tests/standalone-test.js.map +1 -1
  304. package/dist/src/plugins/tests/test-plugin-store.js +228 -190
  305. package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
  306. package/dist/src/production/circuit-breaker.js +126 -62
  307. package/dist/src/production/circuit-breaker.js.map +1 -1
  308. package/dist/src/production/error-handler.js +156 -86
  309. package/dist/src/production/error-handler.js.map +1 -1
  310. package/dist/src/production/monitoring.js +220 -139
  311. package/dist/src/production/monitoring.js.map +1 -1
  312. package/dist/src/production/rate-limiter.js +93 -74
  313. package/dist/src/production/rate-limiter.js.map +1 -1
  314. package/dist/src/production/retry.js +167 -75
  315. package/dist/src/production/retry.js.map +1 -1
  316. package/dist/src/prompt.js +560 -436
  317. package/dist/src/prompt.js.map +1 -1
  318. package/dist/src/runtime/headless.js +289 -200
  319. package/dist/src/runtime/headless.js.map +1 -1
  320. package/dist/src/ruvector/agent-wasm.js +511 -0
  321. package/dist/src/ruvector/agent-wasm.js.map +1 -0
  322. package/dist/src/ruvector/ast-analyzer.js +232 -145
  323. package/dist/src/ruvector/ast-analyzer.js.map +1 -1
  324. package/dist/src/ruvector/coverage-router.js +419 -287
  325. package/dist/src/ruvector/coverage-router.js.map +1 -1
  326. package/dist/src/ruvector/coverage-tools.js +101 -56
  327. package/dist/src/ruvector/coverage-tools.js.map +1 -1
  328. package/dist/src/ruvector/diff-classifier.js +451 -324
  329. package/dist/src/ruvector/diff-classifier.js.map +1 -1
  330. package/dist/src/ruvector/enhanced-model-router.js +337 -251
  331. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  332. package/dist/src/ruvector/flash-attention.js +254 -223
  333. package/dist/src/ruvector/flash-attention.js.map +1 -1
  334. package/dist/src/ruvector/graph-analyzer.js +680 -486
  335. package/dist/src/ruvector/graph-analyzer.js.map +1 -1
  336. package/dist/src/ruvector/index.js +113 -27
  337. package/dist/src/ruvector/index.js.map +1 -1
  338. package/dist/src/ruvector/lora-adapter.js +248 -155
  339. package/dist/src/ruvector/lora-adapter.js.map +1 -1
  340. package/dist/src/ruvector/model-router.js +248 -175
  341. package/dist/src/ruvector/model-router.js.map +1 -1
  342. package/dist/src/ruvector/moe-router.js +286 -228
  343. package/dist/src/ruvector/moe-router.js.map +1 -1
  344. package/dist/src/ruvector/q-learning-router.js +338 -257
  345. package/dist/src/ruvector/q-learning-router.js.map +1 -1
  346. package/dist/src/ruvector/ruvllm-wasm.js +527 -0
  347. package/dist/src/ruvector/ruvllm-wasm.js.map +1 -0
  348. package/dist/src/ruvector/semantic-router.js +67 -60
  349. package/dist/src/ruvector/semantic-router.js.map +1 -1
  350. package/dist/src/ruvector/vector-db.js +205 -119
  351. package/dist/src/ruvector/vector-db.js.map +1 -1
  352. package/dist/src/services/agentic-flow-bridge.js +168 -0
  353. package/dist/src/services/agentic-flow-bridge.js.map +1 -0
  354. package/dist/src/services/claim-service.js +940 -615
  355. package/dist/src/services/claim-service.js.map +1 -1
  356. package/dist/src/services/container-worker-pool.js +669 -399
  357. package/dist/src/services/container-worker-pool.js.map +1 -1
  358. package/dist/src/services/headless-worker-executor.js +467 -441
  359. package/dist/src/services/headless-worker-executor.js.map +1 -1
  360. package/dist/src/services/index.d.ts +5 -5
  361. package/dist/src/services/index.d.ts.map +1 -1
  362. package/dist/src/services/index.js +4 -4
  363. package/dist/src/services/index.js.map +1 -1
  364. package/dist/src/services/registry-api.js +201 -93
  365. package/dist/src/services/registry-api.js.map +1 -1
  366. package/dist/src/services/ruvector-training.js +414 -144
  367. package/dist/src/services/ruvector-training.js.map +1 -1
  368. package/dist/src/services/worker-daemon.js +928 -531
  369. package/dist/src/services/worker-daemon.js.map +1 -1
  370. package/dist/src/services/worker-queue.js +550 -331
  371. package/dist/src/services/worker-queue.js.map +1 -1
  372. package/dist/src/suggest.js +55 -45
  373. package/dist/src/suggest.js.map +1 -1
  374. package/dist/src/transfer/anonymization/index.js +37 -29
  375. package/dist/src/transfer/anonymization/index.js.map +1 -1
  376. package/dist/src/transfer/deploy-seraphine.d.ts +1 -1
  377. package/dist/src/transfer/deploy-seraphine.js +156 -129
  378. package/dist/src/transfer/deploy-seraphine.js.map +1 -1
  379. package/dist/src/transfer/export.js +142 -84
  380. package/dist/src/transfer/export.js.map +1 -1
  381. package/dist/src/transfer/index.d.ts +1 -1
  382. package/dist/src/transfer/index.d.ts.map +1 -1
  383. package/dist/src/transfer/index.js +2 -0
  384. package/dist/src/transfer/index.js.map +1 -1
  385. package/dist/src/transfer/ipfs/client.js +337 -179
  386. package/dist/src/transfer/ipfs/client.js.map +1 -1
  387. package/dist/src/transfer/ipfs/upload.js +434 -290
  388. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  389. package/dist/src/transfer/models/seraphine.js +58 -58
  390. package/dist/src/transfer/models/seraphine.js.map +1 -1
  391. package/dist/src/transfer/serialization/cfp.js +37 -33
  392. package/dist/src/transfer/serialization/cfp.js.map +1 -1
  393. package/dist/src/transfer/storage/gcs.js +248 -139
  394. package/dist/src/transfer/storage/gcs.js.map +1 -1
  395. package/dist/src/transfer/store/discovery.js +353 -243
  396. package/dist/src/transfer/store/discovery.js.map +1 -1
  397. package/dist/src/transfer/store/download.js +365 -243
  398. package/dist/src/transfer/store/download.js.map +1 -1
  399. package/dist/src/transfer/store/index.js +130 -63
  400. package/dist/src/transfer/store/index.js.map +1 -1
  401. package/dist/src/transfer/store/publish.js +258 -184
  402. package/dist/src/transfer/store/publish.js.map +1 -1
  403. package/dist/src/transfer/store/registry.js +73 -51
  404. package/dist/src/transfer/store/registry.js.map +1 -1
  405. package/dist/src/transfer/store/search.js +96 -64
  406. package/dist/src/transfer/store/search.js.map +1 -1
  407. package/dist/src/transfer/store/tests/standalone-test.js +231 -174
  408. package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
  409. package/dist/src/transfer/test-seraphine.js +130 -95
  410. package/dist/src/transfer/test-seraphine.js.map +1 -1
  411. package/dist/src/transfer/tests/test-store.js +239 -194
  412. package/dist/src/transfer/tests/test-store.js.map +1 -1
  413. package/dist/src/types.js +56 -27
  414. package/dist/src/types.js.map +1 -1
  415. package/dist/src/update/checker.js +183 -106
  416. package/dist/src/update/checker.js.map +1 -1
  417. package/dist/src/update/executor.js +198 -135
  418. package/dist/src/update/executor.js.map +1 -1
  419. package/dist/src/update/index.js +85 -38
  420. package/dist/src/update/index.js.map +1 -1
  421. package/dist/src/update/rate-limiter.js +31 -19
  422. package/dist/src/update/rate-limiter.js.map +1 -1
  423. package/dist/src/update/validator.js +64 -38
  424. package/dist/src/update/validator.js.map +1 -1
  425. package/dist/tsconfig.tsbuildinfo +1 -1
  426. package/package.json +13 -10
  427. package/.claude/agents/custom/accessibility-auditor.yaml +0 -56
  428. package/.claude/agents/custom/design-architect.yaml +0 -48
  429. package/.claude/agents/custom/ui-developer.yaml +0 -46
  430. package/.claude/agents/custom/ux-researcher.yaml +0 -60
  431. package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  432. package/dist/src/benchmarks/pretrain/index.d.ts.map +0 -1
  433. package/dist/src/commands/index.d.ts +0 -108
  434. package/dist/src/commands/index.d.ts.map +0 -1
  435. package/dist/src/config-adapter.d.ts +0 -15
  436. package/dist/src/config-adapter.d.ts.map +0 -1
  437. package/dist/src/index.d.ts +0 -76
  438. package/dist/src/index.d.ts.map +0 -1
  439. package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  440. package/dist/src/infrastructure/in-memory-repositories.d.ts.map +0 -1
  441. package/dist/src/init/claudemd-generator.d.ts +0 -25
  442. package/dist/src/init/claudemd-generator.d.ts.map +0 -1
  443. package/dist/src/init/executor.d.ts +0 -41
  444. package/dist/src/init/executor.d.ts.map +0 -1
  445. package/dist/src/init/helpers-generator.d.ts +0 -60
  446. package/dist/src/init/helpers-generator.d.ts.map +0 -1
  447. package/dist/src/mcp-client.d.ts +0 -92
  448. package/dist/src/mcp-client.d.ts.map +0 -1
  449. package/dist/src/mcp-server.d.ts +0 -161
  450. package/dist/src/mcp-server.d.ts.map +0 -1
  451. package/dist/src/mcp-tools/auto-install.d.ts +0 -83
  452. package/dist/src/mcp-tools/auto-install.d.ts.map +0 -1
  453. package/dist/src/mcp-tools/types.d.ts +0 -31
  454. package/dist/src/mcp-tools/types.d.ts.map +0 -1
  455. package/dist/src/memory/ewc-consolidation.d.ts +0 -271
  456. package/dist/src/memory/ewc-consolidation.d.ts.map +0 -1
  457. package/dist/src/memory/intelligence.d.ts +0 -285
  458. package/dist/src/memory/intelligence.d.ts.map +0 -1
  459. package/dist/src/memory/memory-initializer.d.ts +0 -396
  460. package/dist/src/memory/memory-initializer.d.ts.map +0 -1
  461. package/dist/src/memory/sona-optimizer.d.ts +0 -227
  462. package/dist/src/memory/sona-optimizer.d.ts.map +0 -1
  463. package/dist/src/parser.d.ts +0 -41
  464. package/dist/src/parser.d.ts.map +0 -1
  465. package/dist/src/plugins/manager.d.ts +0 -133
  466. package/dist/src/plugins/manager.d.ts.map +0 -1
  467. package/dist/src/plugins/store/discovery.d.ts +0 -88
  468. package/dist/src/plugins/store/discovery.d.ts.map +0 -1
  469. package/dist/src/plugins/store/index.d.ts +0 -76
  470. package/dist/src/plugins/store/index.d.ts.map +0 -1
  471. package/dist/src/plugins/store/search.d.ts +0 -46
  472. package/dist/src/plugins/store/search.d.ts.map +0 -1
  473. package/dist/src/plugins/store/types.d.ts +0 -274
  474. package/dist/src/plugins/store/types.d.ts.map +0 -1
  475. package/dist/src/production/circuit-breaker.d.ts +0 -101
  476. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  477. package/dist/src/production/error-handler.d.ts +0 -92
  478. package/dist/src/production/error-handler.d.ts.map +0 -1
  479. package/dist/src/production/monitoring.d.ts +0 -161
  480. package/dist/src/production/monitoring.d.ts.map +0 -1
  481. package/dist/src/production/rate-limiter.d.ts +0 -80
  482. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  483. package/dist/src/production/retry.d.ts +0 -48
  484. package/dist/src/production/retry.d.ts.map +0 -1
  485. package/dist/src/prompt.d.ts +0 -44
  486. package/dist/src/prompt.d.ts.map +0 -1
  487. package/dist/src/runtime/headless.d.ts +0 -60
  488. package/dist/src/runtime/headless.d.ts.map +0 -1
  489. package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  490. package/dist/src/ruvector/ast-analyzer.d.ts.map +0 -1
  491. package/dist/src/ruvector/coverage-router.d.ts +0 -160
  492. package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
  493. package/dist/src/ruvector/diff-classifier.d.ts +0 -175
  494. package/dist/src/ruvector/diff-classifier.d.ts.map +0 -1
  495. package/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
  496. package/dist/src/ruvector/enhanced-model-router.d.ts.map +0 -1
  497. package/dist/src/ruvector/flash-attention.d.ts +0 -195
  498. package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
  499. package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  500. package/dist/src/ruvector/graph-analyzer.d.ts.map +0 -1
  501. package/dist/src/ruvector/index.d.ts +0 -34
  502. package/dist/src/ruvector/index.d.ts.map +0 -1
  503. package/dist/src/ruvector/lora-adapter.d.ts +0 -218
  504. package/dist/src/ruvector/lora-adapter.d.ts.map +0 -1
  505. package/dist/src/ruvector/model-router.d.ts +0 -220
  506. package/dist/src/ruvector/model-router.d.ts.map +0 -1
  507. package/dist/src/ruvector/moe-router.d.ts +0 -206
  508. package/dist/src/ruvector/moe-router.d.ts.map +0 -1
  509. package/dist/src/ruvector/q-learning-router.d.ts +0 -211
  510. package/dist/src/ruvector/q-learning-router.d.ts.map +0 -1
  511. package/dist/src/ruvector/semantic-router.d.ts +0 -77
  512. package/dist/src/ruvector/semantic-router.d.ts.map +0 -1
  513. package/dist/src/ruvector/vector-db.d.ts +0 -69
  514. package/dist/src/ruvector/vector-db.d.ts.map +0 -1
  515. package/dist/src/services/claim-service.d.ts +0 -204
  516. package/dist/src/services/claim-service.d.ts.map +0 -1
  517. package/dist/src/services/container-worker-pool.d.ts +0 -197
  518. package/dist/src/services/container-worker-pool.d.ts.map +0 -1
  519. package/dist/src/services/headless-worker-executor.d.ts +0 -304
  520. package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
  521. package/dist/src/services/registry-api.d.ts +0 -58
  522. package/dist/src/services/registry-api.d.ts.map +0 -1
  523. package/dist/src/services/ruvector-training.d.ts +0 -213
  524. package/dist/src/services/ruvector-training.d.ts.map +0 -1
  525. package/dist/src/services/worker-daemon.d.ts +0 -203
  526. package/dist/src/services/worker-daemon.d.ts.map +0 -1
  527. package/dist/src/services/worker-queue.d.ts +0 -194
  528. package/dist/src/services/worker-queue.d.ts.map +0 -1
  529. package/dist/src/suggest.d.ts +0 -53
  530. package/dist/src/suggest.d.ts.map +0 -1
  531. package/dist/src/transfer/export.d.ts +0 -25
  532. package/dist/src/transfer/export.d.ts.map +0 -1
  533. package/dist/src/transfer/ipfs/client.d.ts +0 -109
  534. package/dist/src/transfer/ipfs/client.d.ts.map +0 -1
  535. package/dist/src/transfer/ipfs/upload.d.ts +0 -95
  536. package/dist/src/transfer/ipfs/upload.d.ts.map +0 -1
  537. package/dist/src/transfer/models/seraphine.d.ts +0 -72
  538. package/dist/src/transfer/models/seraphine.d.ts.map +0 -1
  539. package/dist/src/transfer/serialization/cfp.d.ts +0 -49
  540. package/dist/src/transfer/serialization/cfp.d.ts.map +0 -1
  541. package/dist/src/transfer/storage/gcs.d.ts +0 -82
  542. package/dist/src/transfer/storage/gcs.d.ts.map +0 -1
  543. package/dist/src/transfer/store/discovery.d.ts +0 -84
  544. package/dist/src/transfer/store/discovery.d.ts.map +0 -1
  545. package/dist/src/transfer/store/download.d.ts +0 -70
  546. package/dist/src/transfer/store/download.d.ts.map +0 -1
  547. package/dist/src/transfer/store/index.d.ts +0 -84
  548. package/dist/src/transfer/store/index.d.ts.map +0 -1
  549. package/dist/src/transfer/store/publish.d.ts +0 -76
  550. package/dist/src/transfer/store/publish.d.ts.map +0 -1
  551. package/dist/src/transfer/store/search.d.ts +0 -54
  552. package/dist/src/transfer/store/search.d.ts.map +0 -1
  553. package/dist/src/transfer/types.d.ts +0 -245
  554. package/dist/src/transfer/types.d.ts.map +0 -1
  555. package/dist/src/types.d.ts +0 -198
  556. package/dist/src/types.d.ts.map +0 -1
  557. package/dist/src/update/checker.d.ts +0 -34
  558. package/dist/src/update/checker.d.ts.map +0 -1
  559. package/dist/src/update/executor.d.ts +0 -32
  560. package/dist/src/update/executor.d.ts.map +0 -1
  561. package/dist/src/update/index.d.ts +0 -33
  562. package/dist/src/update/index.d.ts.map +0 -1
  563. package/dist/src/update/rate-limiter.d.ts +0 -20
  564. package/dist/src/update/rate-limiter.d.ts.map +0 -1
  565. package/dist/src/update/validator.d.ts +0 -17
  566. package/dist/src/update/validator.d.ts.map +0 -1
@@ -3,12 +3,133 @@
3
3
  *
4
4
  * Tool definitions for collective intelligence and swarm coordination.
5
5
  */
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
6
53
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
7
54
  import { join } from 'node:path';
8
55
  // Storage paths
9
- const STORAGE_DIR = '.claude-flow';
10
- const HIVE_DIR = 'hive-mind';
11
- const HIVE_FILE = 'state.json';
56
+ var STORAGE_DIR = '.claude-flow';
57
+ var HIVE_DIR = 'hive-mind';
58
+ var HIVE_FILE = 'state.json';
59
+ /**
60
+ * Calculate required votes for a given strategy and total node count.
61
+ */
62
+ function calculateRequiredVotes(strategy, totalNodes, quorumPreset) {
63
+ if (quorumPreset === void 0) { quorumPreset = 'majority'; }
64
+ if (totalNodes <= 0)
65
+ return 1;
66
+ switch (strategy) {
67
+ case 'bft':
68
+ // BFT: requires 2/3 + 1 of total nodes
69
+ return Math.floor((totalNodes * 2) / 3) + 1;
70
+ case 'raft':
71
+ // Raft: simple majority
72
+ return Math.floor(totalNodes / 2) + 1;
73
+ case 'quorum':
74
+ switch (quorumPreset) {
75
+ case 'unanimous':
76
+ return totalNodes;
77
+ case 'supermajority':
78
+ return Math.floor((totalNodes * 2) / 3) + 1;
79
+ case 'majority':
80
+ default:
81
+ return Math.floor(totalNodes / 2) + 1;
82
+ }
83
+ default:
84
+ return Math.floor(totalNodes / 2) + 1;
85
+ }
86
+ }
87
+ /**
88
+ * Detect Byzantine behavior: a voter who has cast conflicting votes
89
+ * across proposals in the same round (same type, overlapping time).
90
+ * Here we check if the voter already voted differently on this proposal
91
+ * (which shouldn't happen if we block double-votes, so this checks
92
+ * cross-proposal conflicting votes for same type within the pending set).
93
+ */
94
+ function detectByzantineVoters(pending, currentProposal, voterId, newVote) {
95
+ // Check if voter cast opposite votes on proposals of the same type
96
+ for (var _i = 0, pending_1 = pending; _i < pending_1.length; _i++) {
97
+ var p = pending_1[_i];
98
+ if (p.proposalId === currentProposal.proposalId)
99
+ continue;
100
+ if (p.type !== currentProposal.type)
101
+ continue;
102
+ if (voterId in p.votes && p.votes[voterId] !== newVote) {
103
+ return true; // Conflicting vote detected
104
+ }
105
+ }
106
+ return false;
107
+ }
108
+ /**
109
+ * Try to resolve a proposal based on its strategy.
110
+ * Returns 'approved', 'rejected', or null if still pending.
111
+ */
112
+ function tryResolveProposal(proposal, totalNodes) {
113
+ var votesFor = Object.values(proposal.votes).filter(function (v) { return v; }).length;
114
+ var votesAgainst = Object.values(proposal.votes).filter(function (v) { return !v; }).length;
115
+ var required = calculateRequiredVotes(proposal.strategy, totalNodes, proposal.quorumPreset);
116
+ if (votesFor >= required)
117
+ return 'approved';
118
+ if (votesAgainst >= required)
119
+ return 'rejected';
120
+ // For quorum with 'unanimous', also reject if any vote is against
121
+ if (proposal.strategy === 'quorum' && proposal.quorumPreset === 'unanimous' && votesAgainst > 0) {
122
+ return 'rejected';
123
+ }
124
+ // Check if it's impossible to reach quorum (remaining potential votes can't tip it)
125
+ var totalVotes = Object.keys(proposal.votes).length;
126
+ var remaining = totalNodes - totalVotes;
127
+ if (votesFor + remaining < required && votesAgainst + remaining < required) {
128
+ // Deadlock: neither side can win -- reject
129
+ return 'rejected';
130
+ }
131
+ return null;
132
+ }
12
133
  function getHiveDir() {
13
134
  return join(process.cwd(), STORAGE_DIR, HIVE_DIR);
14
135
  }
@@ -16,20 +137,20 @@ function getHivePath() {
16
137
  return join(getHiveDir(), HIVE_FILE);
17
138
  }
18
139
  function ensureHiveDir() {
19
- const dir = getHiveDir();
140
+ var dir = getHiveDir();
20
141
  if (!existsSync(dir)) {
21
142
  mkdirSync(dir, { recursive: true });
22
143
  }
23
144
  }
24
145
  function loadHiveState() {
25
146
  try {
26
- const path = getHivePath();
147
+ var path = getHivePath();
27
148
  if (existsSync(path)) {
28
- const data = readFileSync(path, 'utf-8');
149
+ var data = readFileSync(path, 'utf-8');
29
150
  return JSON.parse(data);
30
151
  }
31
152
  }
32
- catch {
153
+ catch (_a) {
33
154
  // Return default state on error
34
155
  }
35
156
  return {
@@ -39,7 +160,7 @@ function loadHiveState() {
39
160
  consensus: { pending: [], history: [] },
40
161
  sharedMemory: {},
41
162
  createdAt: new Date().toISOString(),
42
- updatedAt: new Date().toISOString(),
163
+ updatedAt: new Date().toISOString()
43
164
  };
44
165
  }
45
166
  function saveHiveState(state) {
@@ -50,23 +171,23 @@ function saveHiveState(state) {
50
171
  // Import agent store helpers for spawn functionality
51
172
  import { existsSync as agentStoreExists, readFileSync as readAgentStore, writeFileSync as writeAgentStore, mkdirSync as mkdirAgentStore } from 'node:fs';
52
173
  function loadAgentStore() {
53
- const storePath = join(process.cwd(), '.claude-flow', 'agents.json');
174
+ var storePath = join(process.cwd(), '.claude-flow', 'agents.json');
54
175
  try {
55
176
  if (agentStoreExists(storePath)) {
56
177
  return JSON.parse(readAgentStore(storePath, 'utf-8'));
57
178
  }
58
179
  }
59
- catch { /* ignore */ }
180
+ catch ( /* ignore */_a) { /* ignore */ }
60
181
  return { agents: {} };
61
182
  }
62
183
  function saveAgentStore(store) {
63
- const storeDir = join(process.cwd(), '.claude-flow');
184
+ var storeDir = join(process.cwd(), '.claude-flow');
64
185
  if (!agentStoreExists(storeDir)) {
65
186
  mkdirAgentStore(storeDir, { recursive: true });
66
187
  }
67
188
  writeAgentStore(join(storeDir, 'agents.json'), JSON.stringify(store, null, 2), 'utf-8');
68
189
  }
69
- export const hiveMindTools = [
190
+ export var hiveMindTools = [
70
191
  {
71
192
  name: 'hive-mind_spawn',
72
193
  description: 'Spawn workers and automatically join them to the hive-mind (combines agent/spawn + hive-mind/join)',
@@ -74,57 +195,60 @@ export const hiveMindTools = [
74
195
  inputSchema: {
75
196
  type: 'object',
76
197
  properties: {
77
- count: { type: 'number', description: 'Number of workers to spawn (default: 1)', default: 1 },
78
- role: { type: 'string', enum: ['worker', 'specialist', 'scout'], description: 'Worker role in hive', default: 'worker' },
79
- agentType: { type: 'string', description: 'Agent type for spawned workers', default: 'worker' },
80
- prefix: { type: 'string', description: 'Prefix for worker IDs', default: 'hive-worker' },
81
- },
82
- },
83
- handler: async (input) => {
84
- const state = loadHiveState();
85
- if (!state.initialized) {
86
- return { success: false, error: 'Hive-mind not initialized. Run hive-mind/init first.' };
198
+ count: { type: 'number', description: 'Number of workers to spawn (default: 1)', "default": 1 },
199
+ role: { type: 'string', "enum": ['worker', 'specialist', 'scout'], description: 'Worker role in hive', "default": 'worker' },
200
+ agentType: { type: 'string', description: 'Agent type for spawned workers', "default": 'worker' },
201
+ prefix: { type: 'string', description: 'Prefix for worker IDs', "default": 'hive-worker' }
87
202
  }
88
- const count = Math.min(Math.max(1, input.count || 1), 20); // Cap at 20
89
- const role = input.role || 'worker';
90
- const agentType = input.agentType || 'worker';
91
- const prefix = input.prefix || 'hive-worker';
92
- const agentStore = loadAgentStore();
93
- const spawnedWorkers = [];
94
- for (let i = 0; i < count; i++) {
95
- const agentId = `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
96
- // Create agent record (like agent/spawn)
97
- agentStore.agents[agentId] = {
98
- agentId,
99
- agentType,
100
- status: 'idle',
101
- health: 1.0,
102
- taskCount: 0,
103
- config: { role, hiveRole: role },
104
- createdAt: new Date().toISOString(),
105
- domain: 'hive-mind',
106
- };
107
- // Join to hive-mind (like hive-mind/join)
108
- if (!state.workers.includes(agentId)) {
109
- state.workers.push(agentId);
110
- }
111
- spawnedWorkers.push({
112
- agentId,
113
- role,
114
- joinedAt: new Date().toISOString(),
115
- });
116
- }
117
- saveAgentStore(agentStore);
118
- saveHiveState(state);
119
- return {
120
- success: true,
121
- spawned: count,
122
- workers: spawnedWorkers,
123
- totalWorkers: state.workers.length,
124
- hiveStatus: 'active',
125
- message: `Spawned ${count} worker(s) and joined them to the hive-mind`,
126
- };
127
203
  },
204
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
205
+ var state, count, role, agentType, prefix, agentStore, spawnedWorkers, i, agentId;
206
+ return __generator(this, function (_a) {
207
+ state = loadHiveState();
208
+ if (!state.initialized) {
209
+ return [2 /*return*/, { success: false, error: 'Hive-mind not initialized. Run hive-mind/init first.' }];
210
+ }
211
+ count = Math.min(Math.max(1, input.count || 1), 20);
212
+ role = input.role || 'worker';
213
+ agentType = input.agentType || 'worker';
214
+ prefix = input.prefix || 'hive-worker';
215
+ agentStore = loadAgentStore();
216
+ spawnedWorkers = [];
217
+ for (i = 0; i < count; i++) {
218
+ agentId = prefix + "-" + Date.now() + "-" + Math.random().toString(36).slice(2, 6);
219
+ // Create agent record (like agent/spawn)
220
+ agentStore.agents[agentId] = {
221
+ agentId: agentId,
222
+ agentType: agentType,
223
+ status: 'idle',
224
+ health: 1.0,
225
+ taskCount: 0,
226
+ config: { role: role, hiveRole: role },
227
+ createdAt: new Date().toISOString(),
228
+ domain: 'hive-mind'
229
+ };
230
+ // Join to hive-mind (like hive-mind/join)
231
+ if (!state.workers.includes(agentId)) {
232
+ state.workers.push(agentId);
233
+ }
234
+ spawnedWorkers.push({
235
+ agentId: agentId,
236
+ role: role,
237
+ joinedAt: new Date().toISOString()
238
+ });
239
+ }
240
+ saveAgentStore(agentStore);
241
+ saveHiveState(state);
242
+ return [2 /*return*/, {
243
+ success: true,
244
+ spawned: count,
245
+ workers: spawnedWorkers,
246
+ totalWorkers: state.workers.length,
247
+ hiveStatus: 'active',
248
+ message: "Spawned " + count + " worker(s) and joined them to the hive-mind"
249
+ }];
250
+ });
251
+ }); }
128
252
  },
129
253
  {
130
254
  name: 'hive-mind_init',
@@ -133,40 +257,43 @@ export const hiveMindTools = [
133
257
  inputSchema: {
134
258
  type: 'object',
135
259
  properties: {
136
- topology: { type: 'string', enum: ['mesh', 'hierarchical', 'ring', 'star'], description: 'Network topology' },
137
- queenId: { type: 'string', description: 'Initial queen agent ID' },
138
- },
139
- },
140
- handler: async (input) => {
141
- const state = loadHiveState();
142
- const hiveId = `hive-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
143
- const queenId = input.queenId || `queen-${Date.now()}`;
144
- state.initialized = true;
145
- state.topology = input.topology || 'mesh';
146
- state.createdAt = new Date().toISOString();
147
- state.queen = {
148
- agentId: queenId,
149
- electedAt: new Date().toISOString(),
150
- term: 1,
151
- };
152
- saveHiveState(state);
153
- return {
154
- success: true,
155
- hiveId,
156
- topology: state.topology,
157
- consensus: input.consensus || 'byzantine',
158
- queenId,
159
- status: 'initialized',
160
- config: {
161
- topology: state.topology,
162
- consensus: input.consensus || 'byzantine',
163
- maxAgents: input.maxAgents || 15,
164
- persist: input.persist !== false,
165
- memoryBackend: input.memoryBackend || 'hybrid',
166
- },
167
- createdAt: state.createdAt,
168
- };
260
+ topology: { type: 'string', "enum": ['mesh', 'hierarchical', 'ring', 'star'], description: 'Network topology' },
261
+ queenId: { type: 'string', description: 'Initial queen agent ID' }
262
+ }
169
263
  },
264
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
265
+ var state, hiveId, queenId;
266
+ return __generator(this, function (_a) {
267
+ state = loadHiveState();
268
+ hiveId = "hive-" + Date.now() + "-" + Math.random().toString(36).slice(2, 8);
269
+ queenId = input.queenId || "queen-" + Date.now();
270
+ state.initialized = true;
271
+ state.topology = input.topology || 'mesh';
272
+ state.createdAt = new Date().toISOString();
273
+ state.queen = {
274
+ agentId: queenId,
275
+ electedAt: new Date().toISOString(),
276
+ term: 1
277
+ };
278
+ saveHiveState(state);
279
+ return [2 /*return*/, {
280
+ success: true,
281
+ hiveId: hiveId,
282
+ topology: state.topology,
283
+ consensus: input.consensus || 'byzantine',
284
+ queenId: queenId,
285
+ status: 'initialized',
286
+ config: {
287
+ topology: state.topology,
288
+ consensus: input.consensus || 'byzantine',
289
+ maxAgents: input.maxAgents || 15,
290
+ persist: input.persist !== false,
291
+ memoryBackend: input.memoryBackend || 'hybrid'
292
+ },
293
+ createdAt: state.createdAt
294
+ }];
295
+ });
296
+ }); }
170
297
  },
171
298
  {
172
299
  name: 'hive-mind_status',
@@ -175,69 +302,93 @@ export const hiveMindTools = [
175
302
  inputSchema: {
176
303
  type: 'object',
177
304
  properties: {
178
- verbose: { type: 'boolean', description: 'Include detailed information' },
179
- },
180
- },
181
- handler: async (input) => {
182
- const state = loadHiveState();
183
- const uptime = state.createdAt ? Date.now() - new Date(state.createdAt).getTime() : 0;
184
- const status = {
185
- // CLI expected fields
186
- hiveId: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
187
- status: state.initialized ? 'active' : 'offline',
188
- topology: state.topology,
189
- consensus: 'byzantine', // Default consensus type
190
- queen: state.queen ? {
191
- id: state.queen.agentId,
192
- agentId: state.queen.agentId,
193
- status: 'active',
194
- load: 0.3 + Math.random() * 0.4, // Simulated load
195
- tasksQueued: state.consensus.pending.length,
196
- electedAt: state.queen.electedAt,
197
- term: state.queen.term,
198
- } : { id: 'N/A', status: 'offline', load: 0, tasksQueued: 0 },
199
- workers: state.workers.map(w => ({
200
- id: w,
201
- type: 'worker',
202
- status: 'idle',
203
- currentTask: null,
204
- tasksCompleted: 0,
205
- })),
206
- metrics: {
207
- totalTasks: state.consensus.history.length + state.consensus.pending.length,
208
- completedTasks: state.consensus.history.length,
209
- failedTasks: 0,
210
- avgTaskTime: 150,
211
- consensusRounds: state.consensus.history.length,
212
- memoryUsage: `${Object.keys(state.sharedMemory).length * 2} KB`,
213
- },
214
- health: {
215
- overall: 'healthy',
216
- queen: state.queen ? 'healthy' : 'unhealthy',
217
- workers: state.workers.length > 0 ? 'healthy' : 'degraded',
218
- consensus: 'healthy',
219
- memory: 'healthy',
220
- },
221
- // Additional fields
222
- id: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
223
- initialized: state.initialized,
224
- workerCount: state.workers.length,
225
- pendingConsensus: state.consensus.pending.length,
226
- sharedMemoryKeys: Object.keys(state.sharedMemory).length,
227
- uptime,
228
- createdAt: state.createdAt,
229
- updatedAt: state.updatedAt,
230
- };
231
- if (input.verbose) {
232
- return {
233
- ...status,
234
- workerDetails: state.workers,
235
- consensusHistory: state.consensus.history.slice(-10),
236
- sharedMemory: state.sharedMemory,
237
- };
305
+ verbose: { type: 'boolean', description: 'Include detailed information' }
238
306
  }
239
- return status;
240
307
  },
308
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
309
+ var state, uptime, agentStore, taskStorePath, pendingTaskCount, activeTaskCount, completedTaskCount, taskStore, _i, _a, task, workerCount, realLoad, status;
310
+ return __generator(this, function (_b) {
311
+ state = loadHiveState();
312
+ uptime = state.createdAt ? Date.now() - new Date(state.createdAt).getTime() : 0;
313
+ agentStore = loadAgentStore();
314
+ taskStorePath = join(process.cwd(), '.claude-flow', 'tasks', 'store.json');
315
+ pendingTaskCount = 0;
316
+ activeTaskCount = 0;
317
+ completedTaskCount = 0;
318
+ try {
319
+ if (existsSync(taskStorePath)) {
320
+ taskStore = JSON.parse(readFileSync(taskStorePath, 'utf-8'));
321
+ for (_i = 0, _a = Object.values(taskStore.tasks || {}); _i < _a.length; _i++) {
322
+ task = _a[_i];
323
+ if (task.status === 'pending')
324
+ pendingTaskCount++;
325
+ else if (task.status === 'in_progress')
326
+ activeTaskCount++;
327
+ else if (task.status === 'completed')
328
+ completedTaskCount++;
329
+ }
330
+ }
331
+ }
332
+ catch ( /* ignore */_c) { /* ignore */ }
333
+ workerCount = Math.max(1, state.workers.length);
334
+ realLoad = activeTaskCount / workerCount;
335
+ status = {
336
+ // CLI expected fields
337
+ hiveId: "hive-" + (state.createdAt ? new Date(state.createdAt).getTime() : Date.now()),
338
+ status: state.initialized ? 'active' : 'offline',
339
+ topology: state.topology,
340
+ consensus: 'byzantine',
341
+ queen: state.queen ? {
342
+ id: state.queen.agentId,
343
+ agentId: state.queen.agentId,
344
+ status: 'active',
345
+ load: Math.round(realLoad * 1000) / 1000,
346
+ tasksQueued: pendingTaskCount,
347
+ electedAt: state.queen.electedAt,
348
+ term: state.queen.term
349
+ } : { id: 'N/A', status: 'offline', load: 0, tasksQueued: 0 },
350
+ workers: state.workers.map(function (w) {
351
+ var agent = agentStore.agents[w];
352
+ return {
353
+ id: w,
354
+ type: (agent === null || agent === void 0 ? void 0 : agent.agentType) || 'worker',
355
+ status: (agent === null || agent === void 0 ? void 0 : agent.status) || 'unknown',
356
+ currentTask: (agent === null || agent === void 0 ? void 0 : agent.currentTask) || null,
357
+ tasksCompleted: (agent === null || agent === void 0 ? void 0 : agent.taskCount) || 0
358
+ };
359
+ }),
360
+ metrics: {
361
+ totalTasks: pendingTaskCount + activeTaskCount + completedTaskCount,
362
+ completedTasks: completedTaskCount,
363
+ activeTasks: activeTaskCount,
364
+ pendingTasks: pendingTaskCount,
365
+ failedTasks: 0,
366
+ consensusRounds: state.consensus.history.length,
367
+ memoryUsage: Object.keys(state.sharedMemory).length * 2 + " KB"
368
+ },
369
+ health: {
370
+ overall: 'healthy',
371
+ queen: state.queen ? 'healthy' : 'unhealthy',
372
+ workers: state.workers.length > 0 ? 'healthy' : 'degraded',
373
+ consensus: 'healthy',
374
+ memory: 'healthy'
375
+ },
376
+ // Additional fields
377
+ id: "hive-" + (state.createdAt ? new Date(state.createdAt).getTime() : Date.now()),
378
+ initialized: state.initialized,
379
+ workerCount: state.workers.length,
380
+ pendingConsensus: state.consensus.pending.length,
381
+ sharedMemoryKeys: Object.keys(state.sharedMemory).length,
382
+ uptime: uptime,
383
+ createdAt: state.createdAt,
384
+ updatedAt: state.updatedAt
385
+ };
386
+ if (input.verbose) {
387
+ return [2 /*return*/, __assign(__assign({}, status), { workerDetails: state.workers, consensusHistory: state.consensus.history.slice(-10), sharedMemory: state.sharedMemory })];
388
+ }
389
+ return [2 /*return*/, status];
390
+ });
391
+ }); }
241
392
  },
242
393
  {
243
394
  name: 'hive-mind_join',
@@ -247,28 +398,31 @@ export const hiveMindTools = [
247
398
  type: 'object',
248
399
  properties: {
249
400
  agentId: { type: 'string', description: 'Agent ID to join' },
250
- role: { type: 'string', enum: ['worker', 'specialist', 'scout'], description: 'Agent role in hive' },
401
+ role: { type: 'string', "enum": ['worker', 'specialist', 'scout'], description: 'Agent role in hive' }
251
402
  },
252
- required: ['agentId'],
253
- },
254
- handler: async (input) => {
255
- const state = loadHiveState();
256
- const agentId = input.agentId;
257
- if (!state.initialized) {
258
- return { success: false, error: 'Hive-mind not initialized' };
259
- }
260
- if (!state.workers.includes(agentId)) {
261
- state.workers.push(agentId);
262
- saveHiveState(state);
263
- }
264
- return {
265
- success: true,
266
- agentId,
267
- role: input.role || 'worker',
268
- totalWorkers: state.workers.length,
269
- joinedAt: new Date().toISOString(),
270
- };
403
+ required: ['agentId']
271
404
  },
405
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
406
+ var state, agentId;
407
+ return __generator(this, function (_a) {
408
+ state = loadHiveState();
409
+ agentId = input.agentId;
410
+ if (!state.initialized) {
411
+ return [2 /*return*/, { success: false, error: 'Hive-mind not initialized' }];
412
+ }
413
+ if (!state.workers.includes(agentId)) {
414
+ state.workers.push(agentId);
415
+ saveHiveState(state);
416
+ }
417
+ return [2 /*return*/, {
418
+ success: true,
419
+ agentId: agentId,
420
+ role: input.role || 'worker',
421
+ totalWorkers: state.workers.length,
422
+ joinedAt: new Date().toISOString()
423
+ }];
424
+ });
425
+ }); }
272
426
  },
273
427
  {
274
428
  name: 'hive-mind_leave',
@@ -277,148 +431,281 @@ export const hiveMindTools = [
277
431
  inputSchema: {
278
432
  type: 'object',
279
433
  properties: {
280
- agentId: { type: 'string', description: 'Agent ID to remove' },
434
+ agentId: { type: 'string', description: 'Agent ID to remove' }
281
435
  },
282
- required: ['agentId'],
283
- },
284
- handler: async (input) => {
285
- const state = loadHiveState();
286
- const agentId = input.agentId;
287
- const index = state.workers.indexOf(agentId);
288
- if (index > -1) {
289
- state.workers.splice(index, 1);
290
- saveHiveState(state);
291
- return {
292
- success: true,
293
- agentId,
294
- leftAt: new Date().toISOString(),
295
- remainingWorkers: state.workers.length,
296
- };
297
- }
298
- return { success: false, agentId, error: 'Agent not in hive' };
436
+ required: ['agentId']
299
437
  },
438
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
439
+ var state, agentId, index;
440
+ return __generator(this, function (_a) {
441
+ state = loadHiveState();
442
+ agentId = input.agentId;
443
+ index = state.workers.indexOf(agentId);
444
+ if (index > -1) {
445
+ state.workers.splice(index, 1);
446
+ saveHiveState(state);
447
+ return [2 /*return*/, {
448
+ success: true,
449
+ agentId: agentId,
450
+ leftAt: new Date().toISOString(),
451
+ remainingWorkers: state.workers.length
452
+ }];
453
+ }
454
+ return [2 /*return*/, { success: false, agentId: agentId, error: 'Agent not in hive' }];
455
+ });
456
+ }); }
300
457
  },
301
458
  {
302
459
  name: 'hive-mind_consensus',
303
- description: 'Propose or vote on consensus',
460
+ description: 'Propose or vote on consensus with BFT, Raft, or Quorum strategies',
304
461
  category: 'hive-mind',
305
462
  inputSchema: {
306
463
  type: 'object',
307
464
  properties: {
308
- action: { type: 'string', enum: ['propose', 'vote', 'status', 'list'], description: 'Consensus action' },
465
+ action: { type: 'string', "enum": ['propose', 'vote', 'status', 'list'], description: 'Consensus action' },
309
466
  proposalId: { type: 'string', description: 'Proposal ID (for vote/status)' },
310
467
  type: { type: 'string', description: 'Proposal type (for propose)' },
311
468
  value: { description: 'Proposal value (for propose)' },
312
469
  vote: { type: 'boolean', description: 'Vote (true=for, false=against)' },
313
470
  voterId: { type: 'string', description: 'Voter agent ID' },
471
+ strategy: { type: 'string', "enum": ['bft', 'raft', 'quorum'], description: 'Consensus strategy (default: raft)' },
472
+ quorumPreset: { type: 'string', "enum": ['unanimous', 'majority', 'supermajority'], description: 'Quorum threshold preset (for quorum strategy, default: majority)' },
473
+ term: { type: 'number', description: 'Term number (for raft strategy)' },
474
+ timeoutMs: { type: 'number', description: 'Timeout in ms for raft re-proposal (default: 30000)' }
314
475
  },
315
- required: ['action'],
476
+ required: ['action']
316
477
  },
317
- handler: async (input) => {
318
- const state = loadHiveState();
319
- const action = input.action;
320
- if (action === 'propose') {
321
- const proposalId = `proposal-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
322
- const proposal = {
323
- proposalId,
324
- type: input.type || 'general',
325
- value: input.value,
326
- proposedBy: input.voterId || 'system',
327
- proposedAt: new Date().toISOString(),
328
- votes: {},
329
- status: 'pending',
330
- };
331
- state.consensus.pending.push(proposal);
332
- saveHiveState(state);
333
- return {
334
- action,
335
- proposalId,
336
- type: proposal.type,
337
- status: 'pending',
338
- requiredVotes: Math.ceil(state.workers.length / 2) + 1,
339
- };
340
- }
341
- if (action === 'vote') {
342
- const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
343
- if (!proposal) {
344
- return { action, error: 'Proposal not found' };
345
- }
346
- const voterId = input.voterId;
347
- proposal.votes[voterId] = input.vote;
348
- // Check if we have majority
349
- const votesFor = Object.values(proposal.votes).filter(v => v).length;
350
- const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
351
- const majority = Math.ceil(state.workers.length / 2) + 1;
352
- if (votesFor >= majority) {
353
- proposal.status = 'approved';
354
- state.consensus.history.push({
355
- proposalId: proposal.proposalId,
356
- type: proposal.type,
357
- result: 'approved',
358
- votes: { for: votesFor, against: votesAgainst },
359
- decidedAt: new Date().toISOString(),
360
- });
361
- state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
478
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
479
+ var state, action, strategy, totalNodes, proposalId, quorumPreset, term_1, timeoutMs, existingTermProposal, required, proposal, proposal_1, voterId, voteValue, proposalStrategy, required, previousVote, isByzantine, votesFor, votesAgainst, resolution, resolved, proposal, historical, votesFor, votesAgainst, proposalStrategy, required, timedOut;
480
+ var _a, _b, _c, _d, _e;
481
+ return __generator(this, function (_f) {
482
+ state = loadHiveState();
483
+ action = input.action;
484
+ strategy = input.strategy || 'raft';
485
+ totalNodes = state.workers.length || 1;
486
+ if (action === 'propose') {
487
+ proposalId = "proposal-" + Date.now() + "-" + Math.random().toString(36).slice(2, 8);
488
+ quorumPreset = input.quorumPreset || 'majority';
489
+ term_1 = input.term || ((_b = (_a = state.queen) === null || _a === void 0 ? void 0 : _a.term) !== null && _b !== void 0 ? _b : 1);
490
+ timeoutMs = input.timeoutMs || 30000;
491
+ // Raft: check if there's already a pending proposal for this term
492
+ if (strategy === 'raft') {
493
+ existingTermProposal = state.consensus.pending.find(function (p) { return p.strategy === 'raft' && p.term === term_1 && p.status === 'pending'; });
494
+ if (existingTermProposal) {
495
+ return [2 /*return*/, {
496
+ action: action,
497
+ error: "Raft term " + term_1 + " already has a pending proposal: " + existingTermProposal.proposalId + ". Wait for resolution or use a higher term.",
498
+ existingProposalId: existingTermProposal.proposalId,
499
+ term: term_1
500
+ }];
501
+ }
502
+ }
503
+ required = calculateRequiredVotes(strategy, totalNodes, quorumPreset);
504
+ proposal = {
505
+ proposalId: proposalId,
506
+ type: input.type || 'general',
507
+ value: input.value,
508
+ proposedBy: input.voterId || 'system',
509
+ proposedAt: new Date().toISOString(),
510
+ votes: {},
511
+ status: 'pending',
512
+ strategy: strategy,
513
+ term: strategy === 'raft' ? term_1 : undefined,
514
+ quorumPreset: strategy === 'quorum' ? quorumPreset : undefined,
515
+ byzantineVoters: strategy === 'bft' ? [] : undefined,
516
+ timeoutAt: strategy === 'raft' ? new Date(Date.now() + timeoutMs).toISOString() : undefined
517
+ };
518
+ state.consensus.pending.push(proposal);
519
+ saveHiveState(state);
520
+ return [2 /*return*/, {
521
+ action: action,
522
+ proposalId: proposalId,
523
+ type: proposal.type,
524
+ strategy: strategy,
525
+ status: 'pending',
526
+ required: required,
527
+ totalNodes: totalNodes,
528
+ term: proposal.term,
529
+ quorumPreset: proposal.quorumPreset,
530
+ timeoutAt: proposal.timeoutAt
531
+ }];
362
532
  }
363
- else if (votesAgainst >= majority) {
364
- proposal.status = 'rejected';
365
- state.consensus.history.push({
366
- proposalId: proposal.proposalId,
367
- type: proposal.type,
368
- result: 'rejected',
369
- votes: { for: votesFor, against: votesAgainst },
370
- decidedAt: new Date().toISOString(),
371
- });
372
- state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
533
+ if (action === 'vote') {
534
+ proposal_1 = state.consensus.pending.find(function (p) { return p.proposalId === input.proposalId; });
535
+ if (!proposal_1) {
536
+ return [2 /*return*/, { action: action, error: 'Proposal not found or already resolved' }];
537
+ }
538
+ voterId = input.voterId;
539
+ if (!voterId) {
540
+ return [2 /*return*/, { action: action, error: 'voterId is required for voting' }];
541
+ }
542
+ voteValue = input.vote;
543
+ proposalStrategy = proposal_1.strategy || 'raft';
544
+ required = calculateRequiredVotes(proposalStrategy, totalNodes, proposal_1.quorumPreset);
545
+ // Prevent double-voting
546
+ if (voterId in proposal_1.votes) {
547
+ previousVote = proposal_1.votes[voterId];
548
+ if (previousVote === voteValue) {
549
+ return [2 /*return*/, {
550
+ action: action,
551
+ error: "Voter " + voterId + " has already cast the same vote on this proposal",
552
+ proposalId: proposal_1.proposalId,
553
+ existingVote: previousVote
554
+ }];
555
+ }
556
+ // Conflicting vote from same voter
557
+ if (proposalStrategy === 'bft') {
558
+ // BFT: detect as Byzantine behavior
559
+ if (!proposal_1.byzantineVoters)
560
+ proposal_1.byzantineVoters = [];
561
+ if (!proposal_1.byzantineVoters.includes(voterId)) {
562
+ proposal_1.byzantineVoters.push(voterId);
563
+ }
564
+ // Remove their vote entirely -- Byzantine voter is excluded
565
+ delete proposal_1.votes[voterId];
566
+ saveHiveState(state);
567
+ return [2 /*return*/, {
568
+ action: action,
569
+ proposalId: proposal_1.proposalId,
570
+ voterId: voterId,
571
+ byzantineDetected: true,
572
+ message: "Byzantine behavior detected: voter " + voterId + " attempted conflicting vote. Vote invalidated.",
573
+ byzantineVoters: proposal_1.byzantineVoters,
574
+ status: proposal_1.status
575
+ }];
576
+ }
577
+ if (proposalStrategy === 'raft') {
578
+ // Raft: only one vote per node per term, reject the change
579
+ return [2 /*return*/, {
580
+ action: action,
581
+ error: "Raft: voter " + voterId + " already voted in term " + proposal_1.term + ". Cannot change vote.",
582
+ proposalId: proposal_1.proposalId,
583
+ term: proposal_1.term
584
+ }];
585
+ }
586
+ // Quorum: reject double-vote
587
+ return [2 /*return*/, {
588
+ action: action,
589
+ error: "Voter " + voterId + " has already voted on this proposal",
590
+ proposalId: proposal_1.proposalId
591
+ }];
592
+ }
593
+ // BFT: check for cross-proposal Byzantine behavior
594
+ if (proposalStrategy === 'bft') {
595
+ isByzantine = detectByzantineVoters(state.consensus.pending, proposal_1, voterId, voteValue);
596
+ if (isByzantine) {
597
+ if (!proposal_1.byzantineVoters)
598
+ proposal_1.byzantineVoters = [];
599
+ if (!proposal_1.byzantineVoters.includes(voterId)) {
600
+ proposal_1.byzantineVoters.push(voterId);
601
+ }
602
+ saveHiveState(state);
603
+ return [2 /*return*/, {
604
+ action: action,
605
+ proposalId: proposal_1.proposalId,
606
+ voterId: voterId,
607
+ byzantineDetected: true,
608
+ message: "Byzantine behavior detected: voter " + voterId + " cast conflicting votes across proposals of same type. Vote rejected.",
609
+ byzantineVoters: proposal_1.byzantineVoters,
610
+ status: proposal_1.status
611
+ }];
612
+ }
613
+ }
614
+ // Record the vote
615
+ proposal_1.votes[voterId] = voteValue;
616
+ votesFor = Object.values(proposal_1.votes).filter(function (v) { return v; }).length;
617
+ votesAgainst = Object.values(proposal_1.votes).filter(function (v) { return !v; }).length;
618
+ resolution = tryResolveProposal(proposal_1, totalNodes);
619
+ resolved = false;
620
+ if (resolution !== null) {
621
+ resolved = true;
622
+ proposal_1.status = resolution;
623
+ state.consensus.history.push({
624
+ proposalId: proposal_1.proposalId,
625
+ type: proposal_1.type,
626
+ result: resolution,
627
+ votes: { "for": votesFor, against: votesAgainst },
628
+ decidedAt: new Date().toISOString(),
629
+ strategy: proposalStrategy,
630
+ term: proposal_1.term,
631
+ byzantineDetected: ((_c = proposal_1.byzantineVoters) === null || _c === void 0 ? void 0 : _c.length) ? proposal_1.byzantineVoters : undefined
632
+ });
633
+ state.consensus.pending = state.consensus.pending.filter(function (p) { return p.proposalId !== proposal_1.proposalId; });
634
+ }
635
+ saveHiveState(state);
636
+ return [2 /*return*/, {
637
+ action: action,
638
+ proposalId: proposal_1.proposalId,
639
+ voterId: voterId,
640
+ vote: voteValue,
641
+ strategy: proposalStrategy,
642
+ votesFor: votesFor,
643
+ votesAgainst: votesAgainst,
644
+ required: required,
645
+ totalNodes: totalNodes,
646
+ resolved: resolved,
647
+ result: resolved ? resolution : undefined,
648
+ status: proposal_1.status,
649
+ term: proposal_1.term,
650
+ byzantineVoters: ((_d = proposal_1.byzantineVoters) === null || _d === void 0 ? void 0 : _d.length) ? proposal_1.byzantineVoters : undefined
651
+ }];
373
652
  }
374
- saveHiveState(state);
375
- return {
376
- action,
377
- proposalId: proposal.proposalId,
378
- voterId,
379
- vote: input.vote,
380
- votesFor,
381
- votesAgainst,
382
- status: proposal.status,
383
- };
384
- }
385
- if (action === 'status') {
386
- const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
387
- if (!proposal) {
388
- // Check history
389
- const historical = state.consensus.history.find(h => h.proposalId === input.proposalId);
390
- if (historical) {
391
- return { action, ...historical, historical: true };
653
+ if (action === 'status') {
654
+ proposal = state.consensus.pending.find(function (p) { return p.proposalId === input.proposalId; });
655
+ if (!proposal) {
656
+ historical = state.consensus.history.find(function (h) { return h.proposalId === input.proposalId; });
657
+ if (historical) {
658
+ return [2 /*return*/, __assign(__assign({ action: action }, historical), { historical: true, resolved: true })];
659
+ }
660
+ return [2 /*return*/, { action: action, error: 'Proposal not found' }];
392
661
  }
393
- return { action, error: 'Proposal not found' };
662
+ votesFor = Object.values(proposal.votes).filter(function (v) { return v; }).length;
663
+ votesAgainst = Object.values(proposal.votes).filter(function (v) { return !v; }).length;
664
+ proposalStrategy = proposal.strategy || 'raft';
665
+ required = calculateRequiredVotes(proposalStrategy, totalNodes, proposal.quorumPreset);
666
+ timedOut = false;
667
+ if (proposalStrategy === 'raft' && proposal.timeoutAt) {
668
+ timedOut = new Date().getTime() > new Date(proposal.timeoutAt).getTime();
669
+ }
670
+ return [2 /*return*/, {
671
+ action: action,
672
+ proposalId: proposal.proposalId,
673
+ type: proposal.type,
674
+ strategy: proposalStrategy,
675
+ status: proposal.status,
676
+ votesFor: votesFor,
677
+ votesAgainst: votesAgainst,
678
+ totalVotes: Object.keys(proposal.votes).length,
679
+ required: required,
680
+ totalNodes: totalNodes,
681
+ resolved: false,
682
+ term: proposal.term,
683
+ quorumPreset: proposal.quorumPreset,
684
+ byzantineVoters: ((_e = proposal.byzantineVoters) === null || _e === void 0 ? void 0 : _e.length) ? proposal.byzantineVoters : undefined,
685
+ timedOut: timedOut,
686
+ timeoutAt: proposal.timeoutAt,
687
+ hint: timedOut ? "Raft timeout reached. Re-propose with term " + ((proposal.term || 1) + 1) + "." : undefined
688
+ }];
394
689
  }
395
- const votesFor = Object.values(proposal.votes).filter(v => v).length;
396
- const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
397
- return {
398
- action,
399
- proposalId: proposal.proposalId,
400
- type: proposal.type,
401
- status: proposal.status,
402
- votesFor,
403
- votesAgainst,
404
- totalVotes: Object.keys(proposal.votes).length,
405
- requiredMajority: Math.ceil(state.workers.length / 2) + 1,
406
- };
407
- }
408
- if (action === 'list') {
409
- return {
410
- action,
411
- pending: state.consensus.pending.map(p => ({
412
- proposalId: p.proposalId,
413
- type: p.type,
414
- proposedAt: p.proposedAt,
415
- totalVotes: Object.keys(p.votes).length,
416
- })),
417
- recentHistory: state.consensus.history.slice(-5),
418
- };
419
- }
420
- return { action, error: 'Unknown action' };
421
- },
690
+ if (action === 'list') {
691
+ return [2 /*return*/, {
692
+ action: action,
693
+ pending: state.consensus.pending.map(function (p) { return ({
694
+ proposalId: p.proposalId,
695
+ type: p.type,
696
+ strategy: p.strategy || 'raft',
697
+ proposedAt: p.proposedAt,
698
+ totalVotes: Object.keys(p.votes).length,
699
+ required: calculateRequiredVotes(p.strategy || 'raft', totalNodes, p.quorumPreset),
700
+ term: p.term,
701
+ status: p.status
702
+ }); }),
703
+ recentHistory: state.consensus.history.slice(-5)
704
+ }];
705
+ }
706
+ return [2 /*return*/, { action: action, error: 'Unknown action' }];
707
+ });
708
+ }); }
422
709
  },
423
710
  {
424
711
  name: 'hive-mind_broadcast',
@@ -428,37 +715,39 @@ export const hiveMindTools = [
428
715
  type: 'object',
429
716
  properties: {
430
717
  message: { type: 'string', description: 'Message to broadcast' },
431
- priority: { type: 'string', enum: ['low', 'normal', 'high', 'critical'], description: 'Message priority' },
432
- fromId: { type: 'string', description: 'Sender agent ID' },
718
+ priority: { type: 'string', "enum": ['low', 'normal', 'high', 'critical'], description: 'Message priority' },
719
+ fromId: { type: 'string', description: 'Sender agent ID' }
433
720
  },
434
- required: ['message'],
721
+ required: ['message']
435
722
  },
436
- handler: async (input) => {
437
- const state = loadHiveState();
438
- if (!state.initialized) {
439
- return { success: false, error: 'Hive-mind not initialized' };
440
- }
441
- const messageId = `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
442
- // Store in shared memory
443
- const messages = state.sharedMemory.broadcasts || [];
444
- messages.push({
445
- messageId,
446
- message: input.message,
447
- priority: input.priority || 'normal',
448
- fromId: input.fromId || 'system',
449
- timestamp: new Date().toISOString(),
723
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
724
+ var state, messageId, messages;
725
+ return __generator(this, function (_a) {
726
+ state = loadHiveState();
727
+ if (!state.initialized) {
728
+ return [2 /*return*/, { success: false, error: 'Hive-mind not initialized' }];
729
+ }
730
+ messageId = "msg-" + Date.now() + "-" + Math.random().toString(36).slice(2, 8);
731
+ messages = state.sharedMemory.broadcasts || [];
732
+ messages.push({
733
+ messageId: messageId,
734
+ message: input.message,
735
+ priority: input.priority || 'normal',
736
+ fromId: input.fromId || 'system',
737
+ timestamp: new Date().toISOString()
738
+ });
739
+ // Keep only last 100 broadcasts
740
+ state.sharedMemory.broadcasts = messages.slice(-100);
741
+ saveHiveState(state);
742
+ return [2 /*return*/, {
743
+ success: true,
744
+ messageId: messageId,
745
+ recipients: state.workers.length,
746
+ priority: input.priority || 'normal',
747
+ broadcastAt: new Date().toISOString()
748
+ }];
450
749
  });
451
- // Keep only last 100 broadcasts
452
- state.sharedMemory.broadcasts = messages.slice(-100);
453
- saveHiveState(state);
454
- return {
455
- success: true,
456
- messageId,
457
- recipients: state.workers.length,
458
- priority: input.priority || 'normal',
459
- broadcastAt: new Date().toISOString(),
460
- };
461
- },
750
+ }); }
462
751
  },
463
752
  {
464
753
  name: 'hive-mind_shutdown',
@@ -467,56 +756,59 @@ export const hiveMindTools = [
467
756
  inputSchema: {
468
757
  type: 'object',
469
758
  properties: {
470
- graceful: { type: 'boolean', description: 'Graceful shutdown (wait for pending tasks)', default: true },
471
- force: { type: 'boolean', description: 'Force immediate shutdown', default: false },
472
- },
473
- },
474
- handler: async (input) => {
475
- const state = loadHiveState();
476
- if (!state.initialized) {
477
- return { success: false, error: 'Hive-mind not initialized or already shut down' };
478
- }
479
- const graceful = input.graceful !== false;
480
- const force = input.force === true;
481
- const workerCount = state.workers.length;
482
- const pendingConsensus = state.consensus.pending.length;
483
- // If graceful and there are pending consensus items, warn (unless forced)
484
- if (graceful && pendingConsensus > 0 && !force) {
485
- return {
486
- success: false,
487
- error: `Cannot gracefully shutdown with ${pendingConsensus} pending consensus items. Use force: true to override.`,
488
- pendingConsensus,
489
- workerCount,
490
- };
491
- }
492
- // Clear workers from agent store
493
- const agentStore = loadAgentStore();
494
- for (const workerId of state.workers) {
495
- if (agentStore.agents[workerId]) {
496
- delete agentStore.agents[workerId];
497
- }
759
+ graceful: { type: 'boolean', description: 'Graceful shutdown (wait for pending tasks)', "default": true },
760
+ force: { type: 'boolean', description: 'Force immediate shutdown', "default": false }
498
761
  }
499
- saveAgentStore(agentStore);
500
- // Reset hive state
501
- const shutdownTime = new Date().toISOString();
502
- const previousQueen = state.queen?.agentId;
503
- state.initialized = false;
504
- state.queen = undefined;
505
- state.workers = [];
506
- state.consensus.pending = [];
507
- // Keep history for reference
508
- state.sharedMemory = {};
509
- saveHiveState(state);
510
- return {
511
- success: true,
512
- shutdownAt: shutdownTime,
513
- graceful,
514
- workersTerminated: workerCount,
515
- previousQueen,
516
- consensusCleared: pendingConsensus,
517
- message: `Hive-mind shutdown complete. ${workerCount} workers terminated.`,
518
- };
519
762
  },
763
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
764
+ var state, graceful, force, workerCount, pendingConsensus, agentStore, _i, _a, workerId, shutdownTime, previousQueen;
765
+ var _b;
766
+ return __generator(this, function (_c) {
767
+ state = loadHiveState();
768
+ if (!state.initialized) {
769
+ return [2 /*return*/, { success: false, error: 'Hive-mind not initialized or already shut down' }];
770
+ }
771
+ graceful = input.graceful !== false;
772
+ force = input.force === true;
773
+ workerCount = state.workers.length;
774
+ pendingConsensus = state.consensus.pending.length;
775
+ // If graceful and there are pending consensus items, warn (unless forced)
776
+ if (graceful && pendingConsensus > 0 && !force) {
777
+ return [2 /*return*/, {
778
+ success: false,
779
+ error: "Cannot gracefully shutdown with " + pendingConsensus + " pending consensus items. Use force: true to override.",
780
+ pendingConsensus: pendingConsensus,
781
+ workerCount: workerCount
782
+ }];
783
+ }
784
+ agentStore = loadAgentStore();
785
+ for (_i = 0, _a = state.workers; _i < _a.length; _i++) {
786
+ workerId = _a[_i];
787
+ if (agentStore.agents[workerId]) {
788
+ delete agentStore.agents[workerId];
789
+ }
790
+ }
791
+ saveAgentStore(agentStore);
792
+ shutdownTime = new Date().toISOString();
793
+ previousQueen = (_b = state.queen) === null || _b === void 0 ? void 0 : _b.agentId;
794
+ state.initialized = false;
795
+ state.queen = undefined;
796
+ state.workers = [];
797
+ state.consensus.pending = [];
798
+ // Keep history for reference
799
+ state.sharedMemory = {};
800
+ saveHiveState(state);
801
+ return [2 /*return*/, {
802
+ success: true,
803
+ shutdownAt: shutdownTime,
804
+ graceful: graceful,
805
+ workersTerminated: workerCount,
806
+ previousQueen: previousQueen,
807
+ consensusCleared: pendingConsensus,
808
+ message: "Hive-mind shutdown complete. " + workerCount + " workers terminated."
809
+ }];
810
+ });
811
+ }); }
520
812
  },
521
813
  {
522
814
  name: 'hive-mind_memory',
@@ -525,59 +817,62 @@ export const hiveMindTools = [
525
817
  inputSchema: {
526
818
  type: 'object',
527
819
  properties: {
528
- action: { type: 'string', enum: ['get', 'set', 'delete', 'list'], description: 'Memory action' },
820
+ action: { type: 'string', "enum": ['get', 'set', 'delete', 'list'], description: 'Memory action' },
529
821
  key: { type: 'string', description: 'Memory key' },
530
- value: { description: 'Value to store (for set)' },
822
+ value: { description: 'Value to store (for set)' }
531
823
  },
532
- required: ['action'],
533
- },
534
- handler: async (input) => {
535
- const state = loadHiveState();
536
- const action = input.action;
537
- const key = input.key;
538
- if (action === 'get') {
539
- if (!key)
540
- return { action, error: 'Key required' };
541
- return {
542
- action,
543
- key,
544
- value: state.sharedMemory[key],
545
- exists: key in state.sharedMemory,
546
- };
547
- }
548
- if (action === 'set') {
549
- if (!key)
550
- return { action, error: 'Key required' };
551
- state.sharedMemory[key] = input.value;
552
- saveHiveState(state);
553
- return {
554
- action,
555
- key,
556
- success: true,
557
- updatedAt: new Date().toISOString(),
558
- };
559
- }
560
- if (action === 'delete') {
561
- if (!key)
562
- return { action, error: 'Key required' };
563
- const existed = key in state.sharedMemory;
564
- delete state.sharedMemory[key];
565
- saveHiveState(state);
566
- return {
567
- action,
568
- key,
569
- deleted: existed,
570
- };
571
- }
572
- if (action === 'list') {
573
- return {
574
- action,
575
- keys: Object.keys(state.sharedMemory),
576
- count: Object.keys(state.sharedMemory).length,
577
- };
578
- }
579
- return { action, error: 'Unknown action' };
824
+ required: ['action']
580
825
  },
826
+ handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
827
+ var state, action, key, existed;
828
+ return __generator(this, function (_a) {
829
+ state = loadHiveState();
830
+ action = input.action;
831
+ key = input.key;
832
+ if (action === 'get') {
833
+ if (!key)
834
+ return [2 /*return*/, { action: action, error: 'Key required' }];
835
+ return [2 /*return*/, {
836
+ action: action,
837
+ key: key,
838
+ value: state.sharedMemory[key],
839
+ exists: key in state.sharedMemory
840
+ }];
841
+ }
842
+ if (action === 'set') {
843
+ if (!key)
844
+ return [2 /*return*/, { action: action, error: 'Key required' }];
845
+ state.sharedMemory[key] = input.value;
846
+ saveHiveState(state);
847
+ return [2 /*return*/, {
848
+ action: action,
849
+ key: key,
850
+ success: true,
851
+ updatedAt: new Date().toISOString()
852
+ }];
853
+ }
854
+ if (action === 'delete') {
855
+ if (!key)
856
+ return [2 /*return*/, { action: action, error: 'Key required' }];
857
+ existed = key in state.sharedMemory;
858
+ delete state.sharedMemory[key];
859
+ saveHiveState(state);
860
+ return [2 /*return*/, {
861
+ action: action,
862
+ key: key,
863
+ deleted: existed
864
+ }];
865
+ }
866
+ if (action === 'list') {
867
+ return [2 /*return*/, {
868
+ action: action,
869
+ keys: Object.keys(state.sharedMemory),
870
+ count: Object.keys(state.sharedMemory).length
871
+ }];
872
+ }
873
+ return [2 /*return*/, { action: action, error: 'Unknown action' }];
874
+ });
875
+ }); }
581
876
  },
582
877
  ];
583
878
  //# sourceMappingURL=hive-mind-tools.js.map