kynjal-cli 4.0.0 → 4.0.1

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