@claude-flow/cli 3.32.1 → 3.32.3

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 (657) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/helpers.manifest.json +3 -3
  3. package/.claude/helpers/statusline.cjs +24 -17
  4. package/.claude/helpers/statusline.js +19 -31
  5. package/catalog-manifest.json +2 -2
  6. package/package.json +1 -1
  7. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +1 -1
  8. package/plugins/ruflo-metaharness/scripts/smoke.sh +8 -5
  9. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +1 -1
  10. package/dist/src/agenticow/speculative-exploration.d.ts +0 -148
  11. package/dist/src/agenticow/speculative-exploration.js +0 -218
  12. package/dist/src/appliance/gguf-engine.d.ts +0 -91
  13. package/dist/src/appliance/gguf-engine.js +0 -425
  14. package/dist/src/appliance/ruvllm-bridge.d.ts +0 -102
  15. package/dist/src/appliance/ruvllm-bridge.js +0 -292
  16. package/dist/src/appliance/rvfa-builder.d.ts +0 -44
  17. package/dist/src/appliance/rvfa-builder.js +0 -329
  18. package/dist/src/appliance/rvfa-distribution.d.ts +0 -97
  19. package/dist/src/appliance/rvfa-distribution.js +0 -370
  20. package/dist/src/appliance/rvfa-format.d.ts +0 -111
  21. package/dist/src/appliance/rvfa-format.js +0 -393
  22. package/dist/src/appliance/rvfa-runner.d.ts +0 -69
  23. package/dist/src/appliance/rvfa-runner.js +0 -237
  24. package/dist/src/appliance/rvfa-signing.d.ts +0 -123
  25. package/dist/src/appliance/rvfa-signing.js +0 -347
  26. package/dist/src/autopilot-state.d.ts +0 -77
  27. package/dist/src/autopilot-state.js +0 -271
  28. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +0 -18
  29. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +0 -253
  30. package/dist/src/benchmarks/gaia-agent.d.ts +0 -198
  31. package/dist/src/benchmarks/gaia-agent.js +0 -651
  32. package/dist/src/benchmarks/gaia-causal-memory.d.ts +0 -133
  33. package/dist/src/benchmarks/gaia-causal-memory.js +0 -281
  34. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +0 -22
  35. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +0 -300
  36. package/dist/src/benchmarks/gaia-convergence.d.ts +0 -138
  37. package/dist/src/benchmarks/gaia-convergence.js +0 -260
  38. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +0 -19
  39. package/dist/src/benchmarks/gaia-convergence.smoke.js +0 -246
  40. package/dist/src/benchmarks/gaia-critic.d.ts +0 -123
  41. package/dist/src/benchmarks/gaia-critic.js +0 -312
  42. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +0 -21
  43. package/dist/src/benchmarks/gaia-critic.smoke.js +0 -327
  44. package/dist/src/benchmarks/gaia-decomposer.d.ts +0 -125
  45. package/dist/src/benchmarks/gaia-decomposer.js +0 -350
  46. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +0 -21
  47. package/dist/src/benchmarks/gaia-decomposer.smoke.js +0 -228
  48. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +0 -27
  49. package/dist/src/benchmarks/gaia-e2e-smoke.js +0 -136
  50. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +0 -45
  51. package/dist/src/benchmarks/gaia-extract.smoke.js +0 -242
  52. package/dist/src/benchmarks/gaia-hardness/features.d.ts +0 -46
  53. package/dist/src/benchmarks/gaia-hardness/features.js +0 -170
  54. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +0 -105
  55. package/dist/src/benchmarks/gaia-hardness/predictor.js +0 -260
  56. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +0 -20
  57. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +0 -235
  58. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +0 -51
  59. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +0 -179
  60. package/dist/src/benchmarks/gaia-judge.d.ts +0 -88
  61. package/dist/src/benchmarks/gaia-judge.js +0 -437
  62. package/dist/src/benchmarks/gaia-loader.d.ts +0 -87
  63. package/dist/src/benchmarks/gaia-loader.js +0 -326
  64. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +0 -35
  65. package/dist/src/benchmarks/gaia-tools/file_read.js +0 -403
  66. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +0 -126
  67. package/dist/src/benchmarks/gaia-tools/grounded_query.js +0 -225
  68. package/dist/src/benchmarks/gaia-tools/index.d.ts +0 -32
  69. package/dist/src/benchmarks/gaia-tools/index.js +0 -36
  70. package/dist/src/benchmarks/gaia-tools/types.d.ts +0 -62
  71. package/dist/src/benchmarks/gaia-tools/types.js +0 -12
  72. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +0 -30
  73. package/dist/src/benchmarks/gaia-tools/web_search.js +0 -210
  74. package/dist/src/benchmarks/gaia-voting.d.ts +0 -88
  75. package/dist/src/benchmarks/gaia-voting.js +0 -297
  76. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +0 -20
  77. package/dist/src/benchmarks/gaia-voting.smoke.js +0 -332
  78. package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
  79. package/dist/src/benchmarks/pretrain/index.js +0 -404
  80. package/dist/src/business-pods/bbs-budget-tracker.d.ts +0 -139
  81. package/dist/src/business-pods/bbs-budget-tracker.js +0 -358
  82. package/dist/src/business-pods/domain-affinity-policy.d.ts +0 -47
  83. package/dist/src/business-pods/domain-affinity-policy.js +0 -65
  84. package/dist/src/business-pods/pod-schema.d.ts +0 -96
  85. package/dist/src/business-pods/pod-schema.js +0 -225
  86. package/dist/src/commands/advisor.d.ts +0 -15
  87. package/dist/src/commands/advisor.js +0 -94
  88. package/dist/src/commands/agent-wasm.d.ts +0 -14
  89. package/dist/src/commands/agent-wasm.js +0 -333
  90. package/dist/src/commands/agent.d.ts +0 -8
  91. package/dist/src/commands/agent.js +0 -927
  92. package/dist/src/commands/analyze.d.ts +0 -19
  93. package/dist/src/commands/analyze.js +0 -2047
  94. package/dist/src/commands/announcements.d.ts +0 -17
  95. package/dist/src/commands/announcements.js +0 -0
  96. package/dist/src/commands/appliance-advanced.d.ts +0 -9
  97. package/dist/src/commands/appliance-advanced.js +0 -215
  98. package/dist/src/commands/appliance.d.ts +0 -8
  99. package/dist/src/commands/appliance.js +0 -404
  100. package/dist/src/commands/autopilot.d.ts +0 -15
  101. package/dist/src/commands/autopilot.js +0 -407
  102. package/dist/src/commands/benchmark.d.ts +0 -10
  103. package/dist/src/commands/benchmark.js +0 -460
  104. package/dist/src/commands/claims.d.ts +0 -10
  105. package/dist/src/commands/claims.js +0 -620
  106. package/dist/src/commands/cleanup.d.ts +0 -13
  107. package/dist/src/commands/cleanup.js +0 -250
  108. package/dist/src/commands/completions.d.ts +0 -10
  109. package/dist/src/commands/completions.js +0 -539
  110. package/dist/src/commands/config.d.ts +0 -8
  111. package/dist/src/commands/config.js +0 -428
  112. package/dist/src/commands/daemon.d.ts +0 -59
  113. package/dist/src/commands/daemon.js +0 -1733
  114. package/dist/src/commands/deployment.d.ts +0 -10
  115. package/dist/src/commands/deployment.js +0 -672
  116. package/dist/src/commands/doctor.d.ts +0 -10
  117. package/dist/src/commands/doctor.js +0 -1695
  118. package/dist/src/commands/eject.d.ts +0 -33
  119. package/dist/src/commands/eject.js +0 -195
  120. package/dist/src/commands/embeddings.d.ts +0 -18
  121. package/dist/src/commands/embeddings.js +0 -1623
  122. package/dist/src/commands/funnel.d.ts +0 -18
  123. package/dist/src/commands/funnel.js +0 -302
  124. package/dist/src/commands/gaia-bench.d.ts +0 -40
  125. package/dist/src/commands/gaia-bench.js +0 -597
  126. package/dist/src/commands/guidance.d.ts +0 -8
  127. package/dist/src/commands/guidance.js +0 -556
  128. package/dist/src/commands/hive-mind.d.ts +0 -11
  129. package/dist/src/commands/hive-mind.js +0 -1319
  130. package/dist/src/commands/hooks.d.ts +0 -8
  131. package/dist/src/commands/hooks.js +0 -4595
  132. package/dist/src/commands/index.d.ts +0 -118
  133. package/dist/src/commands/index.js +0 -364
  134. package/dist/src/commands/init.d.ts +0 -13
  135. package/dist/src/commands/init.js +0 -1297
  136. package/dist/src/commands/issues.d.ts +0 -21
  137. package/dist/src/commands/issues.js +0 -567
  138. package/dist/src/commands/mcp.d.ts +0 -11
  139. package/dist/src/commands/mcp.js +0 -732
  140. package/dist/src/commands/memory-backup.d.ts +0 -11
  141. package/dist/src/commands/memory-backup.js +0 -46
  142. package/dist/src/commands/memory-distill.d.ts +0 -27
  143. package/dist/src/commands/memory-distill.js +0 -374
  144. package/dist/src/commands/memory.d.ts +0 -8
  145. package/dist/src/commands/memory.js +0 -1596
  146. package/dist/src/commands/metaharness.d.ts +0 -39
  147. package/dist/src/commands/metaharness.js +0 -215
  148. package/dist/src/commands/migrate.d.ts +0 -8
  149. package/dist/src/commands/migrate.js +0 -742
  150. package/dist/src/commands/neural.d.ts +0 -10
  151. package/dist/src/commands/neural.js +0 -4331
  152. package/dist/src/commands/performance.d.ts +0 -10
  153. package/dist/src/commands/performance.js +0 -583
  154. package/dist/src/commands/plugins.d.ts +0 -11
  155. package/dist/src/commands/plugins.js +0 -826
  156. package/dist/src/commands/process.d.ts +0 -10
  157. package/dist/src/commands/process.js +0 -694
  158. package/dist/src/commands/progress.d.ts +0 -11
  159. package/dist/src/commands/progress.js +0 -259
  160. package/dist/src/commands/providers.d.ts +0 -10
  161. package/dist/src/commands/providers.js +0 -502
  162. package/dist/src/commands/proxy.d.ts +0 -21
  163. package/dist/src/commands/proxy.js +0 -310
  164. package/dist/src/commands/route.d.ts +0 -16
  165. package/dist/src/commands/route.js +0 -822
  166. package/dist/src/commands/ruvector/backup.d.ts +0 -11
  167. package/dist/src/commands/ruvector/backup.js +0 -747
  168. package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
  169. package/dist/src/commands/ruvector/benchmark.js +0 -490
  170. package/dist/src/commands/ruvector/import.d.ts +0 -18
  171. package/dist/src/commands/ruvector/import.js +0 -373
  172. package/dist/src/commands/ruvector/index.d.ts +0 -29
  173. package/dist/src/commands/ruvector/index.js +0 -129
  174. package/dist/src/commands/ruvector/init.d.ts +0 -11
  175. package/dist/src/commands/ruvector/init.js +0 -467
  176. package/dist/src/commands/ruvector/migrate.d.ts +0 -11
  177. package/dist/src/commands/ruvector/migrate.js +0 -498
  178. package/dist/src/commands/ruvector/optimize.d.ts +0 -11
  179. package/dist/src/commands/ruvector/optimize.js +0 -505
  180. package/dist/src/commands/ruvector/pg-utils.d.ts +0 -14
  181. package/dist/src/commands/ruvector/pg-utils.js +0 -41
  182. package/dist/src/commands/ruvector/setup.d.ts +0 -18
  183. package/dist/src/commands/ruvector/setup.js +0 -765
  184. package/dist/src/commands/ruvector/status.d.ts +0 -11
  185. package/dist/src/commands/ruvector/status.js +0 -479
  186. package/dist/src/commands/security.d.ts +0 -10
  187. package/dist/src/commands/security.js +0 -1007
  188. package/dist/src/commands/session.d.ts +0 -8
  189. package/dist/src/commands/session.js +0 -757
  190. package/dist/src/commands/settings.d.ts +0 -19
  191. package/dist/src/commands/settings.js +0 -180
  192. package/dist/src/commands/spinner.d.ts +0 -16
  193. package/dist/src/commands/spinner.js +0 -329
  194. package/dist/src/commands/start.d.ts +0 -8
  195. package/dist/src/commands/start.js +0 -418
  196. package/dist/src/commands/status.d.ts +0 -8
  197. package/dist/src/commands/status.js +0 -608
  198. package/dist/src/commands/swarm.d.ts +0 -8
  199. package/dist/src/commands/swarm.js +0 -891
  200. package/dist/src/commands/task.d.ts +0 -8
  201. package/dist/src/commands/task.js +0 -675
  202. package/dist/src/commands/transfer-store.d.ts +0 -13
  203. package/dist/src/commands/transfer-store.js +0 -428
  204. package/dist/src/commands/update.d.ts +0 -8
  205. package/dist/src/commands/update.js +0 -276
  206. package/dist/src/commands/verify.d.ts +0 -19
  207. package/dist/src/commands/verify.js +0 -261
  208. package/dist/src/commands/version.d.ts +0 -42
  209. package/dist/src/commands/version.js +0 -106
  210. package/dist/src/commands/workflow.d.ts +0 -8
  211. package/dist/src/commands/workflow.js +0 -617
  212. package/dist/src/config/harness-feedback-applier.d.ts +0 -50
  213. package/dist/src/config/harness-feedback-applier.js +0 -122
  214. package/dist/src/config/proven-config-refresh.d.ts +0 -39
  215. package/dist/src/config/proven-config-refresh.js +0 -154
  216. package/dist/src/config/proven-config-rvfa.d.ts +0 -23
  217. package/dist/src/config/proven-config-rvfa.js +0 -73
  218. package/dist/src/config/proven-config.d.ts +0 -86
  219. package/dist/src/config/proven-config.js +0 -176
  220. package/dist/src/config-adapter.d.ts +0 -15
  221. package/dist/src/config-adapter.js +0 -186
  222. package/dist/src/encryption/vault.d.ts +0 -94
  223. package/dist/src/encryption/vault.js +0 -172
  224. package/dist/src/fs-secure.d.ts +0 -86
  225. package/dist/src/fs-secure.js +0 -133
  226. package/dist/src/funnel/advisor-tip.d.ts +0 -58
  227. package/dist/src/funnel/advisor-tip.js +0 -92
  228. package/dist/src/funnel/attribution.d.ts +0 -37
  229. package/dist/src/funnel/attribution.js +0 -101
  230. package/dist/src/funnel/consent.d.ts +0 -22
  231. package/dist/src/funnel/consent.js +0 -58
  232. package/dist/src/funnel/credit-errors.d.ts +0 -31
  233. package/dist/src/funnel/credit-errors.js +0 -88
  234. package/dist/src/funnel/credit-notifier.d.ts +0 -44
  235. package/dist/src/funnel/credit-notifier.js +0 -74
  236. package/dist/src/funnel/disclosure.d.ts +0 -47
  237. package/dist/src/funnel/disclosure.js +0 -109
  238. package/dist/src/funnel/enrollment.d.ts +0 -36
  239. package/dist/src/funnel/enrollment.js +0 -64
  240. package/dist/src/funnel/environment.d.ts +0 -17
  241. package/dist/src/funnel/environment.js +0 -39
  242. package/dist/src/funnel/event-transport.d.ts +0 -51
  243. package/dist/src/funnel/event-transport.js +0 -199
  244. package/dist/src/funnel/events.d.ts +0 -42
  245. package/dist/src/funnel/events.js +0 -150
  246. package/dist/src/funnel/index.d.ts +0 -21
  247. package/dist/src/funnel/index.js +0 -21
  248. package/dist/src/funnel/insights.d.ts +0 -49
  249. package/dist/src/funnel/insights.js +0 -120
  250. package/dist/src/funnel/local-signals.d.ts +0 -15
  251. package/dist/src/funnel/local-signals.js +0 -68
  252. package/dist/src/funnel/message-transport.d.ts +0 -51
  253. package/dist/src/funnel/message-transport.js +0 -149
  254. package/dist/src/funnel/messages.d.ts +0 -55
  255. package/dist/src/funnel/messages.js +0 -160
  256. package/dist/src/funnel/payout.d.ts +0 -40
  257. package/dist/src/funnel/payout.js +0 -60
  258. package/dist/src/funnel/power-saver-notifier.d.ts +0 -44
  259. package/dist/src/funnel/power-saver-notifier.js +0 -92
  260. package/dist/src/funnel/precedence.d.ts +0 -16
  261. package/dist/src/funnel/precedence.js +0 -85
  262. package/dist/src/funnel/promo.d.ts +0 -41
  263. package/dist/src/funnel/promo.js +0 -144
  264. package/dist/src/funnel/rate-limit-notifier.d.ts +0 -55
  265. package/dist/src/funnel/rate-limit-notifier.js +0 -102
  266. package/dist/src/funnel/rotation.d.ts +0 -19
  267. package/dist/src/funnel/rotation.js +0 -70
  268. package/dist/src/funnel/state.d.ts +0 -13
  269. package/dist/src/funnel/state.js +0 -52
  270. package/dist/src/funnel/toggle-cooldown.d.ts +0 -17
  271. package/dist/src/funnel/toggle-cooldown.js +0 -32
  272. package/dist/src/funnel/types.d.ts +0 -98
  273. package/dist/src/funnel/types.js +0 -26
  274. package/dist/src/index.d.ts +0 -81
  275. package/dist/src/index.js +0 -609
  276. package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
  277. package/dist/src/infrastructure/in-memory-repositories.js +0 -264
  278. package/dist/src/init/claudemd-generator.d.ts +0 -16
  279. package/dist/src/init/claudemd-generator.js +0 -368
  280. package/dist/src/init/executor.d.ts +0 -41
  281. package/dist/src/init/executor.js +0 -2142
  282. package/dist/src/init/helper-refresh.d.ts +0 -79
  283. package/dist/src/init/helper-refresh.js +0 -347
  284. package/dist/src/init/helper-signing.d.ts +0 -37
  285. package/dist/src/init/helper-signing.js +0 -67
  286. package/dist/src/init/helpers-generator.d.ts +0 -87
  287. package/dist/src/init/helpers-generator.js +0 -1456
  288. package/dist/src/init/index.d.ts +0 -13
  289. package/dist/src/init/index.js +0 -15
  290. package/dist/src/init/mcp-generator.d.ts +0 -26
  291. package/dist/src/init/mcp-generator.js +0 -126
  292. package/dist/src/init/memory-package-resolver.d.ts +0 -53
  293. package/dist/src/init/memory-package-resolver.js +0 -118
  294. package/dist/src/init/settings-generator.d.ts +0 -14
  295. package/dist/src/init/settings-generator.js +0 -462
  296. package/dist/src/init/statusline-generator.d.ts +0 -28
  297. package/dist/src/init/statusline-generator.js +0 -177
  298. package/dist/src/init/types.d.ts +0 -331
  299. package/dist/src/init/types.js +0 -276
  300. package/dist/src/log-filters.d.ts +0 -46
  301. package/dist/src/log-filters.js +0 -107
  302. package/dist/src/mcp-client.d.ts +0 -92
  303. package/dist/src/mcp-client.js +0 -397
  304. package/dist/src/mcp-server.d.ts +0 -163
  305. package/dist/src/mcp-server.js +0 -751
  306. package/dist/src/mcp-tools/agent-execute-core.d.ts +0 -115
  307. package/dist/src/mcp-tools/agent-execute-core.js +0 -587
  308. package/dist/src/mcp-tools/agent-tools.d.ts +0 -9
  309. package/dist/src/mcp-tools/agent-tools.js +0 -837
  310. package/dist/src/mcp-tools/agentbbs-tools.d.ts +0 -28
  311. package/dist/src/mcp-tools/agentbbs-tools.js +0 -394
  312. package/dist/src/mcp-tools/agentdb-tools.d.ts +0 -35
  313. package/dist/src/mcp-tools/agentdb-tools.js +0 -1473
  314. package/dist/src/mcp-tools/agenticow-loader.d.ts +0 -59
  315. package/dist/src/mcp-tools/agenticow-loader.js +0 -105
  316. package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +0 -24
  317. package/dist/src/mcp-tools/agenticow-speculate-tools.js +0 -209
  318. package/dist/src/mcp-tools/agenticow-tools.d.ts +0 -36
  319. package/dist/src/mcp-tools/agenticow-tools.js +0 -360
  320. package/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
  321. package/dist/src/mcp-tools/analyze-tools.js +0 -346
  322. package/dist/src/mcp-tools/auto-install.d.ts +0 -83
  323. package/dist/src/mcp-tools/auto-install.js +0 -131
  324. package/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
  325. package/dist/src/mcp-tools/autopilot-tools.js +0 -231
  326. package/dist/src/mcp-tools/browser-intent-tools.d.ts +0 -162
  327. package/dist/src/mcp-tools/browser-intent-tools.js +0 -548
  328. package/dist/src/mcp-tools/browser-session-tools.d.ts +0 -27
  329. package/dist/src/mcp-tools/browser-session-tools.js +0 -398
  330. package/dist/src/mcp-tools/browser-tools.d.ts +0 -21
  331. package/dist/src/mcp-tools/browser-tools.js +0 -760
  332. package/dist/src/mcp-tools/business-pod-tools.d.ts +0 -20
  333. package/dist/src/mcp-tools/business-pod-tools.js +0 -169
  334. package/dist/src/mcp-tools/claims-tools.d.ts +0 -12
  335. package/dist/src/mcp-tools/claims-tools.js +0 -863
  336. package/dist/src/mcp-tools/config-tools.d.ts +0 -8
  337. package/dist/src/mcp-tools/config-tools.js +0 -411
  338. package/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
  339. package/dist/src/mcp-tools/coordination-tools.js +0 -729
  340. package/dist/src/mcp-tools/daa-tools.d.ts +0 -13
  341. package/dist/src/mcp-tools/daa-tools.js +0 -534
  342. package/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
  343. package/dist/src/mcp-tools/embeddings-tools.js +0 -904
  344. package/dist/src/mcp-tools/github-tools.d.ts +0 -9
  345. package/dist/src/mcp-tools/github-tools.js +0 -659
  346. package/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
  347. package/dist/src/mcp-tools/guidance-tools.js +0 -639
  348. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
  349. package/dist/src/mcp-tools/hive-mind-tools.js +0 -953
  350. package/dist/src/mcp-tools/hooks-tools.d.ts +0 -65
  351. package/dist/src/mcp-tools/hooks-tools.js +0 -4824
  352. package/dist/src/mcp-tools/http-fetch-tools.d.ts +0 -55
  353. package/dist/src/mcp-tools/http-fetch-tools.js +0 -329
  354. package/dist/src/mcp-tools/index.d.ts +0 -34
  355. package/dist/src/mcp-tools/index.js +0 -40
  356. package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
  357. package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
  358. package/dist/src/mcp-tools/memory-tools.d.ts +0 -14
  359. package/dist/src/mcp-tools/memory-tools.js +0 -1330
  360. package/dist/src/mcp-tools/metaharness-tools.d.ts +0 -51
  361. package/dist/src/mcp-tools/metaharness-tools.js +0 -684
  362. package/dist/src/mcp-tools/neural-tools.d.ts +0 -54
  363. package/dist/src/mcp-tools/neural-tools.js +0 -1168
  364. package/dist/src/mcp-tools/performance-tools.d.ts +0 -16
  365. package/dist/src/mcp-tools/performance-tools.js +0 -675
  366. package/dist/src/mcp-tools/progress-tools.d.ts +0 -14
  367. package/dist/src/mcp-tools/progress-tools.js +0 -348
  368. package/dist/src/mcp-tools/request-tracker.d.ts +0 -17
  369. package/dist/src/mcp-tools/request-tracker.js +0 -27
  370. package/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
  371. package/dist/src/mcp-tools/ruvllm-tools.js +0 -355
  372. package/dist/src/mcp-tools/security-tools.d.ts +0 -18
  373. package/dist/src/mcp-tools/security-tools.js +0 -556
  374. package/dist/src/mcp-tools/session-tools.d.ts +0 -8
  375. package/dist/src/mcp-tools/session-tools.js +0 -517
  376. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -37
  377. package/dist/src/mcp-tools/swarm-tools.js +0 -390
  378. package/dist/src/mcp-tools/system-tools.d.ts +0 -13
  379. package/dist/src/mcp-tools/system-tools.js +0 -688
  380. package/dist/src/mcp-tools/task-tools.d.ts +0 -8
  381. package/dist/src/mcp-tools/task-tools.js +0 -487
  382. package/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
  383. package/dist/src/mcp-tools/terminal-tools.js +0 -306
  384. package/dist/src/mcp-tools/testgen-tools.d.ts +0 -26
  385. package/dist/src/mcp-tools/testgen-tools.js +0 -168
  386. package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +0 -31
  387. package/dist/src/mcp-tools/tool-loop-guardrail.js +0 -71
  388. package/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
  389. package/dist/src/mcp-tools/transfer-tools.js +0 -447
  390. package/dist/src/mcp-tools/types.d.ts +0 -8
  391. package/dist/src/mcp-tools/types.js +0 -8
  392. package/dist/src/mcp-tools/validate-input.d.ts +0 -9
  393. package/dist/src/mcp-tools/validate-input.js +0 -9
  394. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -13
  395. package/dist/src/mcp-tools/wasm-agent-tools.js +0 -840
  396. package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  397. package/dist/src/mcp-tools/workflow-tools.js +0 -884
  398. package/dist/src/memory/bge-embedder.d.ts +0 -25
  399. package/dist/src/memory/bge-embedder.js +0 -121
  400. package/dist/src/memory/cross-encoder-rerank.d.ts +0 -33
  401. package/dist/src/memory/cross-encoder-rerank.js +0 -123
  402. package/dist/src/memory/embedding-policy.d.ts +0 -21
  403. package/dist/src/memory/embedding-policy.js +0 -30
  404. package/dist/src/memory/embedding-quantization.d.ts +0 -62
  405. package/dist/src/memory/embedding-quantization.js +0 -156
  406. package/dist/src/memory/ewc-consolidation.d.ts +0 -305
  407. package/dist/src/memory/ewc-consolidation.js +0 -611
  408. package/dist/src/memory/graph-edge-writer.d.ts +0 -95
  409. package/dist/src/memory/graph-edge-writer.js +0 -217
  410. package/dist/src/memory/hybrid-retrieval.d.ts +0 -77
  411. package/dist/src/memory/hybrid-retrieval.js +0 -192
  412. package/dist/src/memory/intelligence.d.ts +0 -405
  413. package/dist/src/memory/intelligence.js +0 -1316
  414. package/dist/src/memory/lucene-bm25.d.ts +0 -19
  415. package/dist/src/memory/lucene-bm25.js +0 -308
  416. package/dist/src/memory/memory-bridge.d.ts +0 -537
  417. package/dist/src/memory/memory-bridge.js +0 -2460
  418. package/dist/src/memory/memory-initializer.d.ts +0 -556
  419. package/dist/src/memory/memory-initializer.js +0 -3021
  420. package/dist/src/memory/neural-package-bridge.d.ts +0 -48
  421. package/dist/src/memory/neural-package-bridge.js +0 -87
  422. package/dist/src/memory/rabitq-index.d.ts +0 -60
  423. package/dist/src/memory/rabitq-index.js +0 -242
  424. package/dist/src/memory/sona-optimizer.d.ts +0 -267
  425. package/dist/src/memory/sona-optimizer.js +0 -779
  426. package/dist/src/memory/structured-distill.d.ts +0 -48
  427. package/dist/src/memory/structured-distill.js +0 -125
  428. package/dist/src/output.d.ts +0 -9
  429. package/dist/src/output.js +0 -9
  430. package/dist/src/parser.d.ts +0 -89
  431. package/dist/src/parser.js +0 -516
  432. package/dist/src/plugins/manager.d.ts +0 -133
  433. package/dist/src/plugins/manager.js +0 -415
  434. package/dist/src/plugins/store/discovery.d.ts +0 -99
  435. package/dist/src/plugins/store/discovery.js +0 -1224
  436. package/dist/src/plugins/store/index.d.ts +0 -76
  437. package/dist/src/plugins/store/index.js +0 -141
  438. package/dist/src/plugins/store/search.d.ts +0 -46
  439. package/dist/src/plugins/store/search.js +0 -230
  440. package/dist/src/plugins/store/types.d.ts +0 -279
  441. package/dist/src/plugins/store/types.js +0 -7
  442. package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
  443. package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
  444. package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
  445. package/dist/src/plugins/tests/standalone-test.js +0 -188
  446. package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
  447. package/dist/src/plugins/tests/test-plugin-store.js +0 -206
  448. package/dist/src/production/circuit-breaker.d.ts +0 -101
  449. package/dist/src/production/circuit-breaker.js +0 -241
  450. package/dist/src/production/error-handler.d.ts +0 -92
  451. package/dist/src/production/error-handler.js +0 -299
  452. package/dist/src/production/index.d.ts +0 -23
  453. package/dist/src/production/index.js +0 -18
  454. package/dist/src/production/monitoring.d.ts +0 -161
  455. package/dist/src/production/monitoring.js +0 -356
  456. package/dist/src/production/rate-limiter.d.ts +0 -80
  457. package/dist/src/production/rate-limiter.js +0 -201
  458. package/dist/src/production/retry.d.ts +0 -48
  459. package/dist/src/production/retry.js +0 -179
  460. package/dist/src/prompt.d.ts +0 -44
  461. package/dist/src/prompt.js +0 -501
  462. package/dist/src/runtime/headless.d.ts +0 -60
  463. package/dist/src/runtime/headless.js +0 -284
  464. package/dist/src/runtime/parent-death-watchdog.d.ts +0 -42
  465. package/dist/src/runtime/parent-death-watchdog.js +0 -70
  466. package/dist/src/ruvector/agent-wasm.d.ts +0 -228
  467. package/dist/src/ruvector/agent-wasm.js +0 -463
  468. package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
  469. package/dist/src/ruvector/ast-analyzer.js +0 -277
  470. package/dist/src/ruvector/codemods/engine.d.ts +0 -45
  471. package/dist/src/ruvector/codemods/engine.js +0 -291
  472. package/dist/src/ruvector/codemods/scope-analysis.d.ts +0 -29
  473. package/dist/src/ruvector/codemods/scope-analysis.js +0 -162
  474. package/dist/src/ruvector/coverage-router.d.ts +0 -160
  475. package/dist/src/ruvector/coverage-router.js +0 -531
  476. package/dist/src/ruvector/coverage-tools.d.ts +0 -33
  477. package/dist/src/ruvector/coverage-tools.js +0 -157
  478. package/dist/src/ruvector/diff-classifier.d.ts +0 -175
  479. package/dist/src/ruvector/diff-classifier.js +0 -699
  480. package/dist/src/ruvector/diskann-backend.d.ts +0 -78
  481. package/dist/src/ruvector/diskann-backend.js +0 -310
  482. package/dist/src/ruvector/enhanced-model-router.d.ts +0 -172
  483. package/dist/src/ruvector/enhanced-model-router.js +0 -577
  484. package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
  485. package/dist/src/ruvector/graph-analyzer.js +0 -929
  486. package/dist/src/ruvector/graph-backend.d.ts +0 -79
  487. package/dist/src/ruvector/graph-backend.js +0 -220
  488. package/dist/src/ruvector/index.d.ts +0 -38
  489. package/dist/src/ruvector/index.js +0 -86
  490. package/dist/src/ruvector/lora-adapter.d.ts +0 -292
  491. package/dist/src/ruvector/lora-adapter.js +0 -710
  492. package/dist/src/ruvector/model-prices.d.ts +0 -50
  493. package/dist/src/ruvector/model-prices.js +0 -72
  494. package/dist/src/ruvector/model-router.d.ts +0 -408
  495. package/dist/src/ruvector/model-router.js +0 -1162
  496. package/dist/src/ruvector/neural-router.d.ts +0 -182
  497. package/dist/src/ruvector/neural-router.js +0 -825
  498. package/dist/src/ruvector/output-verifier.d.ts +0 -83
  499. package/dist/src/ruvector/output-verifier.js +0 -277
  500. package/dist/src/ruvector/q-learning-router.d.ts +0 -227
  501. package/dist/src/ruvector/q-learning-router.js +0 -721
  502. package/dist/src/ruvector/router-calibrator.d.ts +0 -65
  503. package/dist/src/ruvector/router-calibrator.js +0 -120
  504. package/dist/src/ruvector/router-parallel-recorder.d.ts +0 -127
  505. package/dist/src/ruvector/router-parallel-recorder.js +0 -183
  506. package/dist/src/ruvector/router-trajectory.d.ts +0 -194
  507. package/dist/src/ruvector/router-trajectory.js +0 -281
  508. package/dist/src/ruvector/run-transcript-recorder.d.ts +0 -154
  509. package/dist/src/ruvector/run-transcript-recorder.js +0 -209
  510. package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
  511. package/dist/src/ruvector/ruvllm-wasm.js +0 -379
  512. package/dist/src/ruvector/semantic-router.d.ts +0 -77
  513. package/dist/src/ruvector/semantic-router.js +0 -178
  514. package/dist/src/ruvector/task-embedder.d.ts +0 -56
  515. package/dist/src/ruvector/task-embedder.js +0 -237
  516. package/dist/src/ruvector/trajectory-tree.d.ts +0 -113
  517. package/dist/src/ruvector/trajectory-tree.js +0 -237
  518. package/dist/src/ruvector/vector-db.d.ts +0 -73
  519. package/dist/src/ruvector/vector-db.js +0 -301
  520. package/dist/src/ruvector/wasm-embedder.d.ts +0 -13
  521. package/dist/src/ruvector/wasm-embedder.js +0 -143
  522. package/dist/src/services/agentic-flow-bridge.d.ts +0 -50
  523. package/dist/src/services/agentic-flow-bridge.js +0 -95
  524. package/dist/src/services/ai-job-dedup.d.ts +0 -61
  525. package/dist/src/services/ai-job-dedup.js +0 -136
  526. package/dist/src/services/checkpoint-gate.d.ts +0 -140
  527. package/dist/src/services/checkpoint-gate.js +0 -223
  528. package/dist/src/services/claim-service.d.ts +0 -204
  529. package/dist/src/services/claim-service.js +0 -818
  530. package/dist/src/services/config-file-manager.d.ts +0 -37
  531. package/dist/src/services/config-file-manager.js +0 -224
  532. package/dist/src/services/container-worker-pool.d.ts +0 -204
  533. package/dist/src/services/container-worker-pool.js +0 -589
  534. package/dist/src/services/daemon-autostart.d.ts +0 -17
  535. package/dist/src/services/daemon-autostart.js +0 -102
  536. package/dist/src/services/distill-oracle.d.ts +0 -190
  537. package/dist/src/services/distill-oracle.js +0 -349
  538. package/dist/src/services/distill-tuning.d.ts +0 -111
  539. package/dist/src/services/distill-tuning.js +0 -510
  540. package/dist/src/services/evolve-proof.d.ts +0 -253
  541. package/dist/src/services/evolve-proof.js +0 -343
  542. package/dist/src/services/fable-harness.d.ts +0 -207
  543. package/dist/src/services/fable-harness.js +0 -388
  544. package/dist/src/services/git-workspace-identity.d.ts +0 -42
  545. package/dist/src/services/git-workspace-identity.js +0 -99
  546. package/dist/src/services/global-ai-budget.d.ts +0 -135
  547. package/dist/src/services/global-ai-budget.js +0 -415
  548. package/dist/src/services/harness-benchmark.d.ts +0 -68
  549. package/dist/src/services/harness-benchmark.js +0 -94
  550. package/dist/src/services/harness-canary.d.ts +0 -60
  551. package/dist/src/services/harness-canary.js +0 -69
  552. package/dist/src/services/harness-corpus-harvester.d.ts +0 -51
  553. package/dist/src/services/harness-corpus-harvester.js +0 -74
  554. package/dist/src/services/harness-flywheel-generations.d.ts +0 -115
  555. package/dist/src/services/harness-flywheel-generations.js +0 -360
  556. package/dist/src/services/harness-flywheel-runtime.d.ts +0 -25
  557. package/dist/src/services/harness-flywheel-runtime.js +0 -92
  558. package/dist/src/services/harness-flywheel.d.ts +0 -48
  559. package/dist/src/services/harness-flywheel.js +0 -207
  560. package/dist/src/services/harness-frozen-eval.d.ts +0 -22
  561. package/dist/src/services/harness-frozen-eval.js +0 -66
  562. package/dist/src/services/harness-hosts.d.ts +0 -40
  563. package/dist/src/services/harness-hosts.js +0 -88
  564. package/dist/src/services/harness-improvement-ledger.d.ts +0 -63
  565. package/dist/src/services/harness-improvement-ledger.js +0 -101
  566. package/dist/src/services/harness-loop.d.ts +0 -53
  567. package/dist/src/services/harness-loop.js +0 -85
  568. package/dist/src/services/harness-qualification.d.ts +0 -66
  569. package/dist/src/services/harness-qualification.js +0 -143
  570. package/dist/src/services/harness-replay.d.ts +0 -37
  571. package/dist/src/services/harness-replay.js +0 -92
  572. package/dist/src/services/harness-verify.d.ts +0 -33
  573. package/dist/src/services/harness-verify.js +0 -26
  574. package/dist/src/services/harness-worker.d.ts +0 -23
  575. package/dist/src/services/harness-worker.js +0 -66
  576. package/dist/src/services/headless-worker-executor.d.ts +0 -358
  577. package/dist/src/services/headless-worker-executor.js +0 -1269
  578. package/dist/src/services/index.d.ts +0 -13
  579. package/dist/src/services/index.js +0 -11
  580. package/dist/src/services/memory-backup.d.ts +0 -53
  581. package/dist/src/services/memory-backup.js +0 -198
  582. package/dist/src/services/memory-distillation.d.ts +0 -41
  583. package/dist/src/services/memory-distillation.js +0 -277
  584. package/dist/src/services/native-training.d.ts +0 -68
  585. package/dist/src/services/native-training.js +0 -141
  586. package/dist/src/services/registry-api.d.ts +0 -58
  587. package/dist/src/services/registry-api.js +0 -146
  588. package/dist/src/services/repo-supervisor.d.ts +0 -70
  589. package/dist/src/services/repo-supervisor.js +0 -228
  590. package/dist/src/services/ruvector-training.d.ts +0 -222
  591. package/dist/src/services/ruvector-training.js +0 -693
  592. package/dist/src/services/swarm-memory-branches.d.ts +0 -135
  593. package/dist/src/services/swarm-memory-branches.js +0 -213
  594. package/dist/src/services/weight-eft.d.ts +0 -305
  595. package/dist/src/services/weight-eft.js +0 -296
  596. package/dist/src/services/worker-daemon.d.ts +0 -439
  597. package/dist/src/services/worker-daemon.js +0 -1865
  598. package/dist/src/services/worker-queue.d.ts +0 -194
  599. package/dist/src/services/worker-queue.js +0 -513
  600. package/dist/src/services/workspace-lease.d.ts +0 -55
  601. package/dist/src/services/workspace-lease.js +0 -191
  602. package/dist/src/suggest.d.ts +0 -53
  603. package/dist/src/suggest.js +0 -200
  604. package/dist/src/transfer/anonymization/index.d.ts +0 -25
  605. package/dist/src/transfer/anonymization/index.js +0 -175
  606. package/dist/src/transfer/deploy-seraphine.d.ts +0 -13
  607. package/dist/src/transfer/deploy-seraphine.js +0 -205
  608. package/dist/src/transfer/export.d.ts +0 -25
  609. package/dist/src/transfer/export.js +0 -113
  610. package/dist/src/transfer/index.d.ts +0 -12
  611. package/dist/src/transfer/index.js +0 -31
  612. package/dist/src/transfer/ipfs/client.d.ts +0 -109
  613. package/dist/src/transfer/ipfs/client.js +0 -307
  614. package/dist/src/transfer/ipfs/upload.d.ts +0 -95
  615. package/dist/src/transfer/ipfs/upload.js +0 -413
  616. package/dist/src/transfer/models/seraphine.d.ts +0 -72
  617. package/dist/src/transfer/models/seraphine.js +0 -373
  618. package/dist/src/transfer/serialization/cfp.d.ts +0 -49
  619. package/dist/src/transfer/serialization/cfp.js +0 -183
  620. package/dist/src/transfer/storage/gcs.d.ts +0 -82
  621. package/dist/src/transfer/storage/gcs.js +0 -272
  622. package/dist/src/transfer/storage/index.d.ts +0 -6
  623. package/dist/src/transfer/storage/index.js +0 -6
  624. package/dist/src/transfer/store/discovery.d.ts +0 -84
  625. package/dist/src/transfer/store/discovery.js +0 -382
  626. package/dist/src/transfer/store/download.d.ts +0 -70
  627. package/dist/src/transfer/store/download.js +0 -334
  628. package/dist/src/transfer/store/index.d.ts +0 -84
  629. package/dist/src/transfer/store/index.js +0 -153
  630. package/dist/src/transfer/store/publish.d.ts +0 -76
  631. package/dist/src/transfer/store/publish.js +0 -294
  632. package/dist/src/transfer/store/registry.d.ts +0 -58
  633. package/dist/src/transfer/store/registry.js +0 -285
  634. package/dist/src/transfer/store/search.d.ts +0 -54
  635. package/dist/src/transfer/store/search.js +0 -232
  636. package/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
  637. package/dist/src/transfer/store/tests/standalone-test.js +0 -190
  638. package/dist/src/transfer/store/types.d.ts +0 -193
  639. package/dist/src/transfer/store/types.js +0 -6
  640. package/dist/src/transfer/test-seraphine.d.ts +0 -6
  641. package/dist/src/transfer/test-seraphine.js +0 -105
  642. package/dist/src/transfer/tests/test-store.d.ts +0 -7
  643. package/dist/src/transfer/tests/test-store.js +0 -214
  644. package/dist/src/transfer/types.d.ts +0 -245
  645. package/dist/src/transfer/types.js +0 -6
  646. package/dist/src/types.d.ts +0 -13
  647. package/dist/src/types.js +0 -13
  648. package/dist/src/update/checker.d.ts +0 -34
  649. package/dist/src/update/checker.js +0 -191
  650. package/dist/src/update/executor.d.ts +0 -33
  651. package/dist/src/update/executor.js +0 -217
  652. package/dist/src/update/index.d.ts +0 -33
  653. package/dist/src/update/index.js +0 -64
  654. package/dist/src/update/rate-limiter.d.ts +0 -20
  655. package/dist/src/update/rate-limiter.js +0 -96
  656. package/dist/src/update/validator.d.ts +0 -17
  657. package/dist/src/update/validator.js +0 -123
@@ -1,837 +0,0 @@
1
- /**
2
- * Agent MCP Tools for CLI
3
- *
4
- * Tool definitions for agent lifecycle management with file persistence.
5
- * Includes model routing integration for intelligent model selection.
6
- */
7
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
8
- import { join } from 'node:path';
9
- import { getProjectCwd } from './types.js';
10
- import { validateIdentifier, validateText, validateAgentSpawn } from './validate-input.js';
11
- import { executeAgentTask } from './agent-execute-core.js';
12
- // Storage paths
13
- const STORAGE_DIR = '.claude-flow';
14
- const AGENT_DIR = 'agents';
15
- const AGENT_FILE = 'store.json';
16
- // #1916: hive-mind_spawn writes its workers to `.claude-flow/agents.json`
17
- // (a *different* file from the canonical `.claude-flow/agents/store.json`
18
- // used here). agent_status / agent_list / agent_logs merge that store so a
19
- // hive-spawned worker is resolvable instead of returning `not_found`.
20
- const HIVE_AGENT_FILE = 'agents.json';
21
- function getAgentDir() {
22
- return join(getProjectCwd(), STORAGE_DIR, AGENT_DIR);
23
- }
24
- function getAgentPath() {
25
- return join(getAgentDir(), AGENT_FILE);
26
- }
27
- function ensureAgentDir() {
28
- const dir = getAgentDir();
29
- if (!existsSync(dir)) {
30
- mkdirSync(dir, { recursive: true });
31
- }
32
- }
33
- function loadAgentStore() {
34
- try {
35
- const path = getAgentPath();
36
- if (existsSync(path)) {
37
- const data = readFileSync(path, 'utf-8');
38
- return JSON.parse(data);
39
- }
40
- }
41
- catch {
42
- // Return empty store on error
43
- }
44
- return { agents: {}, version: '3.0.0' };
45
- }
46
- function saveAgentStore(store) {
47
- ensureAgentDir();
48
- writeFileSync(getAgentPath(), JSON.stringify(store, null, 2), 'utf-8');
49
- }
50
- // #1916: read hive-mind-spawned workers from `.claude-flow/agents.json`.
51
- function getHiveAgentPath() {
52
- return join(getProjectCwd(), STORAGE_DIR, HIVE_AGENT_FILE);
53
- }
54
- function loadHiveAgents() {
55
- try {
56
- const path = getHiveAgentPath();
57
- if (existsSync(path)) {
58
- const data = JSON.parse(readFileSync(path, 'utf-8'));
59
- if (data && typeof data.agents === 'object' && data.agents) {
60
- return data.agents;
61
- }
62
- }
63
- }
64
- catch {
65
- // Ignore — hive store is optional/best-effort.
66
- }
67
- return {};
68
- }
69
- /**
70
- * #1916: merged view of every tracked agent — the canonical agent store
71
- * plus hive-mind-spawned workers. On an id collision the canonical record
72
- * wins (it carries model-routing + lastResult that the hive store omits).
73
- */
74
- function loadAllAgents() {
75
- return { ...loadHiveAgents(), ...loadAgentStore().agents };
76
- }
77
- // Default model mappings for agent types (can be overridden)
78
- const AGENT_TYPE_MODEL_DEFAULTS = {
79
- // Complex agents → opus
80
- 'architect': 'opus',
81
- 'security-architect': 'opus',
82
- 'system-architect': 'opus',
83
- 'core-architect': 'opus',
84
- // Medium complexity → sonnet
85
- 'coder': 'sonnet',
86
- 'reviewer': 'sonnet',
87
- 'researcher': 'sonnet',
88
- 'tester': 'sonnet',
89
- 'analyst': 'sonnet',
90
- // Simple/fast agents → haiku
91
- 'formatter': 'haiku',
92
- 'linter': 'haiku',
93
- 'documenter': 'haiku',
94
- };
95
- // Lazy-loaded model router
96
- let modelRouterInstance = null;
97
- async function getModelRouter() {
98
- if (!modelRouterInstance) {
99
- try {
100
- const { getModelRouter } = await import('../ruvector/model-router.js');
101
- modelRouterInstance = getModelRouter();
102
- }
103
- catch (e) {
104
- // Log but don't fail - model router is optional
105
- console.error('[agent-tools] Model router load failed:', e.message);
106
- }
107
- }
108
- return modelRouterInstance;
109
- }
110
- // ADR-149 — the cost-optimal neural router fires only when
111
- // `routeToModelFull(task, embedding)` is called with a real embedding. We
112
- // delegate to the shared task-embedder module (ADR-149 iter 9) so the
113
- // @xenova/transformers MiniLM pipeline + LRU cache are shared across
114
- // agent-tools and the agent-execute-core fallback path.
115
- async function embedTaskSafe(task) {
116
- const { embedTaskWithCache } = await import('../ruvector/task-embedder.js');
117
- return embedTaskWithCache(task);
118
- }
119
- /**
120
- * Determine model for agent based on (ADR-026 3-tier routing):
121
- * 1. Explicit model in config
122
- * 2. Enhanced task-based routing with deterministic Tier-1 codemods (if task provided)
123
- * 3. Agent type defaults
124
- * 4. Fallback to sonnet
125
- */
126
- async function determineAgentModel(agentType, config, task) {
127
- // 1. Explicit model in config
128
- if (config.model && ['haiku', 'sonnet', 'opus', 'opus-4.7', 'inherit'].includes(config.model)) {
129
- return { model: config.model, routedBy: 'explicit' };
130
- }
131
- // 2. Enhanced task-based routing with deterministic Tier-1 codemods
132
- if (task) {
133
- try {
134
- // Try enhanced router first (includes codemod-intent detection)
135
- const { getEnhancedModelRouter } = await import('../ruvector/enhanced-model-router.js');
136
- const enhancedRouter = getEnhancedModelRouter();
137
- // ADR-149 — embed the task so the cost-optimal neural backend fires.
138
- // We probe the embedder lazily; if it can't load (no @xenova/transformers
139
- // available), the enhanced router falls back to heuristic+bandit and
140
- // the existing behaviour is preserved.
141
- const embedding = await embedTaskSafe(task);
142
- const routeResult = await enhancedRouter.route(task, { filePath: config.filePath, embedding });
143
- if (routeResult.tier === 1 && routeResult.canSkipLLM) {
144
- // Deterministic codemod can apply this edit ($0, no LLM)
145
- return {
146
- model: 'haiku', // fallback model if the codemod can't apply
147
- routedBy: 'codemod',
148
- canSkipLLM: true,
149
- codemodIntent: (routeResult.codemodIntent ?? routeResult.agentBoosterIntent)?.type,
150
- tier: 1,
151
- };
152
- }
153
- // ADR-149 — forward the per-model fields. When the neural backend
154
- // fired, modelId carries the cost-optimal pick (e.g. Ling); when
155
- // it didn't, these are undefined and downstream behaviour is unchanged.
156
- const routedBy = routeResult.routedBy === 'hybrid' ? 'hybrid' : 'router';
157
- return {
158
- model: routeResult.model,
159
- routedBy,
160
- tier: routeResult.tier,
161
- modelId: routeResult.modelId,
162
- provider: routeResult.provider,
163
- openrouterModel: routeResult.openrouterModel,
164
- };
165
- }
166
- catch {
167
- // Enhanced router not available, try basic router
168
- const router = await getModelRouter();
169
- if (router) {
170
- try {
171
- // ADR-149 — embed the task so the cost-optimal neural backend
172
- // fires (it's gated on `embedding && embedding.length > 0`).
173
- // Without the embedding, route() falls back to heuristic+bandit
174
- // and every per-model Pareto win the v2 measurement landed is
175
- // invisible. embedTaskSafe returns undefined on any failure;
176
- // route(task, undefined) behaves exactly as the prior code.
177
- const embedding = await embedTaskSafe(task);
178
- const result = await router.route(task, embedding);
179
- // Map the routing mechanism to the broader agent-record taxonomy.
180
- // 'hybrid' = neural prior + bandit blended (ADR-149); fold the rest
181
- // into 'router' for back-compat with consumers reading modelRoutedBy.
182
- const routedBy = result.routedBy === 'hybrid' ? 'hybrid' : 'router';
183
- return {
184
- model: result.model,
185
- routedBy,
186
- modelId: result.modelId,
187
- provider: result.provider,
188
- openrouterModel: result.openrouterModel,
189
- };
190
- }
191
- catch {
192
- // Fall through to defaults on router error
193
- }
194
- }
195
- }
196
- }
197
- // 3. Agent type defaults
198
- const defaultModel = AGENT_TYPE_MODEL_DEFAULTS[agentType];
199
- if (defaultModel) {
200
- return { model: defaultModel, routedBy: 'default' };
201
- }
202
- // 4. Fallback to sonnet (balanced)
203
- return { model: 'sonnet', routedBy: 'default' };
204
- }
205
- export const agentTools = [
206
- {
207
- name: 'agent_spawn',
208
- description: 'Spawn a Ruflo-tracked agent with cost attribution + memory persistence + swarm coordination. Use when native Task tool is wrong because you need (a) cost tracking per agent in the cost-tracking namespace, (b) cross-session learning via the patterns namespace, or (c) coordination with other agents in a swarm topology (hierarchical / mesh / consensus). For one-shot subtasks with no learning loop, native Task is fine. Pair with hooks_route to pick the right model first.',
209
- category: 'agent',
210
- inputSchema: {
211
- type: 'object',
212
- properties: {
213
- agentType: { type: 'string', description: 'Type of agent to spawn' },
214
- agentId: { type: 'string', description: 'Optional custom agent ID' },
215
- // #2085 — accept swarmId so spawned agents register in the
216
- // swarm.agents array that swarm_status reports. Omit to register
217
- // with the most-recently-created swarm.
218
- swarmId: { type: 'string', description: 'Optional swarm to register the agent with (defaults to most-recent swarm)' },
219
- config: { type: 'object', description: 'Agent configuration' },
220
- domain: { type: 'string', description: 'Agent domain' },
221
- model: {
222
- type: 'string',
223
- enum: ['haiku', 'sonnet', 'opus', 'opus-4.7', 'inherit'],
224
- description: 'Claude model alias (haiku=fast/cheap, sonnet=balanced, opus=current Opus 4.8, opus-4.7=prior Opus pin)'
225
- },
226
- task: { type: 'string', description: 'Task description for intelligent model routing' },
227
- memoryBase: { type: 'string', description: 'Opt-in: base .rvf memory file to fork a per-agent Copy-On-Write branch from (agenticow). When set, the agent gets an isolated ~162-byte COW branch instead of a full copy — promote on success, discard on terminate. Requires the optional `agenticow` dep; degrades to a no-op when absent or when CLAUDE_FLOW_NO_COW_MEMORY=1.' },
228
- memoryDimension: { type: 'integer', description: 'Vector dimension for the COW base (required only when memoryBase does not exist yet)' },
229
- },
230
- required: ['agentType'],
231
- },
232
- handler: async (input) => {
233
- // Validate user-provided input (#1425: wire security validators to runtime)
234
- const validation = await validateAgentSpawn(input);
235
- if (!validation.valid) {
236
- return { success: false, error: `Input validation failed: ${validation.errors.join('; ')}` };
237
- }
238
- const store = loadAgentStore();
239
- const agentId = input.agentId || `agent-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
240
- const agentType = input.agentType;
241
- const config = input.config || {};
242
- // Add explicit model to config if provided
243
- if (input.model) {
244
- config.model = input.model;
245
- }
246
- // Get task from either top-level or config (CLI passes it in config.task)
247
- const task = input.task || config.task || undefined;
248
- // Determine model using ADR-026 3-tier routing logic
249
- const routingResult = await determineAgentModel(agentType, config, task);
250
- const agent = {
251
- agentId,
252
- agentType,
253
- status: 'idle',
254
- health: 1.0,
255
- taskCount: 0,
256
- config,
257
- createdAt: new Date().toISOString(),
258
- domain: input.domain,
259
- model: routingResult.model,
260
- modelRoutedBy: routingResult.routedBy,
261
- ...(routingResult.modelId ? { modelId: routingResult.modelId } : {}),
262
- ...(routingResult.provider ? { provider: routingResult.provider } : {}),
263
- ...(routingResult.openrouterModel ? { openrouterModel: routingResult.openrouterModel } : {}),
264
- };
265
- store.agents[agentId] = agent;
266
- saveAgentStore(store);
267
- // #2085 — also push to the swarm store's agents array so that
268
- // swarm_status reports the new agent. Without this, agent_spawn
269
- // and swarm_status read/write separate stores and agents added
270
- // post-init never show up in swarm_status.agents — confirmed for
271
- // all topologies (hierarchical, mesh, etc.).
272
- try {
273
- const { loadSwarmStore: _loadSwarmStore, saveSwarmStore: _saveSwarmStore } = await import('./swarm-tools.js');
274
- const swarmStore = _loadSwarmStore();
275
- let targetSwarmId = input.swarmId || '';
276
- if (!targetSwarmId) {
277
- // Default to the most-recently-created swarm.
278
- const all = Object.values(swarmStore.swarms);
279
- const latest = all.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0];
280
- targetSwarmId = latest?.swarmId || '';
281
- }
282
- if (targetSwarmId && swarmStore.swarms[targetSwarmId]) {
283
- const swarm = swarmStore.swarms[targetSwarmId];
284
- if (!Array.isArray(swarm.agents))
285
- swarm.agents = [];
286
- // Idempotent — don't duplicate if agent_spawn is retried.
287
- if (!swarm.agents.includes(agentId)) {
288
- swarm.agents.push(agentId);
289
- _saveSwarmStore(swarmStore);
290
- }
291
- }
292
- }
293
- catch { /* swarm store unavailable — agent still registered globally */ }
294
- // Record agent in graph database (ADR-087, best-effort)
295
- try {
296
- const { addNode } = await import('../ruvector/graph-backend.js');
297
- await addNode({ id: agentId, type: 'agent', name: agentType });
298
- }
299
- catch { /* graph-node not available */ }
300
- // ACOW — opt-in per-agent COW memory branch. Only when the caller
301
- // supplies `memoryBase` does the agent get an isolated 162-byte branch
302
- // (vs a full .rvf copy). Lazy-imported so agenticow stays off the
303
- // startup path. Non-fatal: a branch failure never blocks the spawn —
304
- // the agent is already registered above.
305
- let memoryBranch;
306
- if (input.memoryBase) {
307
- try {
308
- const { SwarmMemoryBranches } = await import('../services/swarm-memory-branches.js');
309
- const svc = new SwarmMemoryBranches();
310
- const br = await svc.branchForAgent(String(input.memoryBase), agentId, {
311
- dimension: typeof input.memoryDimension === 'number' ? input.memoryDimension : undefined,
312
- });
313
- if (br.branchPath) {
314
- memoryBranch = br.branchPath;
315
- agent.memoryBranch = br.branchPath;
316
- agent.memoryBase = br.basePath;
317
- store.agents[agentId] = agent;
318
- saveAgentStore(store);
319
- }
320
- // else: degraded (agenticow missing / kill-switched) — agent stands
321
- // without an isolated branch; callers see no memoryBranch field.
322
- }
323
- catch { /* COW branch is best-effort; agent already registered */ }
324
- }
325
- // Include deterministic codemod routing info if applicable
326
- const response = {
327
- success: true,
328
- agentId,
329
- agentType: agent.agentType,
330
- model: agent.model,
331
- modelRoutedBy: routingResult.routedBy,
332
- ...(routingResult.modelId ? { modelId: routingResult.modelId } : {}),
333
- ...(routingResult.provider ? { provider: routingResult.provider } : {}),
334
- ...(routingResult.openrouterModel ? { openrouterModel: routingResult.openrouterModel } : {}),
335
- status: 'registered',
336
- createdAt: agent.createdAt,
337
- ...(memoryBranch ? { memoryBranch, memoryBase: agent.memoryBase } : {}),
338
- note: 'Agent registered for coordination. Three execution paths: ' +
339
- '(1) call agent_execute(agentId, prompt) — direct LLM call via Anthropic Messages API (requires ANTHROPIC_API_KEY); ' +
340
- '(2) Claude Code Task tool — spawns a real subagent; ' +
341
- '(3) claude -p — headless background instance.',
342
- };
343
- // Add codemod info if task can skip LLM (deterministic Tier-1, ADR-143)
344
- if (routingResult.canSkipLLM) {
345
- response.canSkipLLM = true;
346
- response.codemodIntent = routingResult.codemodIntent;
347
- response.tier = routingResult.tier;
348
- response.note = `Deterministic codemod can apply "${routingResult.codemodIntent}" — call the hooks_codemod MCP tool (intent="${routingResult.codemodIntent}"), $0, no LLM`;
349
- }
350
- else if (routingResult.tier) {
351
- response.tier = routingResult.tier;
352
- }
353
- return response;
354
- },
355
- },
356
- {
357
- // ADR-095 G1: real LLM execution via the agent registry. Previously
358
- // agent_spawn registered metadata but nothing dispatched work to a
359
- // provider — the wire between AnthropicProvider and the agent
360
- // registry was missing, as the April audit (@roman-rr) called out.
361
- // agent_execute closes that wire by reading the agent's configured
362
- // model, calling the Anthropic Messages API directly via fetch, and
363
- // updating the agent record with lastResult / taskCount / status.
364
- // No mock — actual HTTP request to api.anthropic.com.
365
- name: 'agent_execute',
366
- description: 'Run a task on a previously-spawned agent_spawn record via the Anthropic Messages API with that agent\'s configured model. Use when native Task tool is wrong because (a) you need the spawned agent\'s persistent config (model, instructions, cost-tracking attribution) to apply to this turn, (b) the result needs to feed back into the agent\'s lifecycle (taskCount, lastResult, swarm-coordinated state), or (c) you want explicit model routing via the spawn record\'s `model` field instead of inheriting. For one-shot Claude prompts without a tracked agent, native Task is fine. Requires ANTHROPIC_API_KEY in env.',
367
- category: 'agent',
368
- inputSchema: {
369
- type: 'object',
370
- properties: {
371
- agentId: { type: 'string', description: 'ID of the spawned agent' },
372
- prompt: { type: 'string', description: 'Task / prompt for the agent to execute' },
373
- systemPrompt: { type: 'string', description: 'Optional system prompt (overrides agent default)' },
374
- maxTokens: { type: 'number', description: 'Max output tokens (default 1024)' },
375
- temperature: { type: 'number', description: 'Sampling temperature 0..1 (default 0.7)' },
376
- },
377
- required: ['agentId', 'prompt'],
378
- },
379
- handler: async (input) => {
380
- const vId = validateIdentifier(input.agentId, 'agentId');
381
- if (!vId.valid)
382
- return { success: false, error: `Input validation failed: ${vId.error}` };
383
- const vP = validateText(input.prompt, 'prompt');
384
- if (!vP.valid)
385
- return { success: false, error: `Input validation failed: ${vP.error}` };
386
- // Delegate to the shared core (also used by the workflow runtime).
387
- return executeAgentTask({
388
- agentId: input.agentId,
389
- prompt: input.prompt,
390
- systemPrompt: input.systemPrompt,
391
- maxTokens: input.maxTokens,
392
- temperature: input.temperature,
393
- timeoutMs: input.timeoutMs,
394
- });
395
- },
396
- },
397
- {
398
- name: 'agent_terminate',
399
- description: 'Remove a Ruflo-tracked agent from the registry and free its swarm slot. Use when you need to (a) clean up a spawned agent so its cost-tracking row finalizes, (b) reclaim a swarm-topology slot for another agent, or (c) end a stuck agent without restarting the whole swarm. For one-shot Task tool invocations that already self-terminate, this tool is not needed. Pair with agent_list first to confirm the agentId.',
400
- category: 'agent',
401
- inputSchema: {
402
- type: 'object',
403
- properties: {
404
- agentId: { type: 'string', description: 'ID of agent to terminate' },
405
- force: { type: 'boolean', description: 'Force immediate termination' },
406
- promoteMemory: { type: 'boolean', description: 'When the agent has a per-agent COW memory branch (spawned with memoryBase), promote (merge) its edits into the shared base on terminate. Default false → discard the branch (throw its edits away). No-op when the agent has no branch.' },
407
- },
408
- required: ['agentId'],
409
- },
410
- handler: async (input) => {
411
- const v = validateIdentifier(input.agentId, 'agentId');
412
- if (!v.valid)
413
- return { success: false, error: `Input validation failed: ${v.error}` };
414
- const store = loadAgentStore();
415
- const agentId = input.agentId;
416
- if (store.agents[agentId]) {
417
- const rec = store.agents[agentId];
418
- rec.status = 'terminated';
419
- saveAgentStore(store);
420
- // ACOW — resolve the agent's COW memory branch on teardown: promote
421
- // (merge into base) when asked, else discard. Non-fatal — a failure
422
- // here never blocks termination. Discard needs no agenticow (pure fs),
423
- // so cleanup still works in the degraded path.
424
- let memory;
425
- if (rec.memoryBranch) {
426
- try {
427
- const { SwarmMemoryBranches } = await import('../services/swarm-memory-branches.js');
428
- const svc = new SwarmMemoryBranches();
429
- memory = input.promoteMemory
430
- ? (await svc.promoteAgent(agentId))
431
- : (await svc.discardAgent(agentId));
432
- }
433
- catch { /* best-effort teardown */ }
434
- }
435
- return {
436
- success: true,
437
- agentId,
438
- terminated: true,
439
- terminatedAt: new Date().toISOString(),
440
- ...(memory ? { memory } : {}),
441
- };
442
- }
443
- return {
444
- success: false,
445
- agentId,
446
- error: 'Agent not found',
447
- };
448
- },
449
- },
450
- {
451
- name: 'agent_status',
452
- description: 'Read the lifecycle state of a single tracked agent: idle/running/stopped, current taskCount, lastResult, model, health score. Use when native Task tool is wrong because you need agent-level state (status across turns, accumulated taskCount, last error, swarm coordination) rather than a one-shot response. For inspecting a Task you just ran, native Task output is fine. Pair with agent_list to find the agentId first.',
453
- category: 'agent',
454
- inputSchema: {
455
- type: 'object',
456
- properties: {
457
- agentId: { type: 'string', description: 'ID of agent' },
458
- },
459
- required: ['agentId'],
460
- },
461
- handler: async (input) => {
462
- const v = validateIdentifier(input.agentId, 'agentId');
463
- if (!v.valid)
464
- return { agentId: input.agentId, status: 'not_found', error: `Input validation failed: ${v.error}` };
465
- const agentId = input.agentId;
466
- const agent = loadAllAgents()[agentId]; // #1916: includes hive-mind-spawned workers
467
- if (agent) {
468
- return {
469
- agentId: agent.agentId,
470
- agentType: agent.agentType,
471
- status: agent.status,
472
- health: agent.health,
473
- taskCount: agent.taskCount,
474
- createdAt: agent.createdAt,
475
- domain: agent.domain,
476
- lastResult: agent.lastResult || null,
477
- };
478
- }
479
- return {
480
- agentId,
481
- status: 'not_found',
482
- error: 'Agent not found',
483
- };
484
- },
485
- },
486
- {
487
- name: 'agent_list',
488
- description: 'List every Ruflo-tracked agent in the registry with its type, model, status, and taskCount. Use when native Task tool is wrong because you need to see the swarm-wide agent inventory across turns (which agents exist, their roles, their cost-tracking handles) rather than spawn a new one-shot Task. Filter by status/domain/agentType if needed. For starting a fresh single-shot subagent, native Task is fine.',
489
- category: 'agent',
490
- inputSchema: {
491
- type: 'object',
492
- properties: {
493
- status: { type: 'string', description: 'Filter by status' },
494
- domain: { type: 'string', description: 'Filter by domain' },
495
- includeTerminated: { type: 'boolean', description: 'Include terminated agents' },
496
- },
497
- },
498
- handler: async (input) => {
499
- if (input.status) {
500
- const v = validateIdentifier(input.status, 'status');
501
- if (!v.valid)
502
- return { agents: [], total: 0, error: `Input validation failed: ${v.error}` };
503
- }
504
- if (input.domain) {
505
- const v = validateIdentifier(input.domain, 'domain');
506
- if (!v.valid)
507
- return { agents: [], total: 0, error: `Input validation failed: ${v.error}` };
508
- }
509
- let agents = Object.values(loadAllAgents()); // #1916: includes hive-mind-spawned workers
510
- // Filter by status
511
- if (input.status) {
512
- agents = agents.filter(a => a.status === input.status);
513
- }
514
- else if (!input.includeTerminated) {
515
- agents = agents.filter(a => a.status !== 'terminated');
516
- }
517
- // Filter by domain
518
- if (input.domain) {
519
- agents = agents.filter(a => a.domain === input.domain);
520
- }
521
- return {
522
- agents: agents.map(a => ({
523
- agentId: a.agentId,
524
- agentType: a.agentType,
525
- status: a.status,
526
- health: a.health,
527
- taskCount: a.taskCount,
528
- createdAt: a.createdAt,
529
- domain: a.domain,
530
- })),
531
- total: agents.length,
532
- filters: {
533
- status: input.status,
534
- domain: input.domain,
535
- includeTerminated: input.includeTerminated,
536
- },
537
- };
538
- },
539
- },
540
- {
541
- name: 'agent_pool',
542
- description: 'Manage a fixed-size warm pool of pre-spawned agents to skip cold-start cost on bursty workloads. Use when native Task is wrong because (a) you have a queue of similar tasks and want to amortize spawn latency, (b) cost-tracking wants stable agentIds across requests, or (c) swarm topology requires a known agent count at all times. For one-shot work, just call agent_spawn or native Task. Pool sizes and warm/idle thresholds are set per-pool.',
543
- category: 'agent',
544
- inputSchema: {
545
- type: 'object',
546
- properties: {
547
- action: { type: 'string', enum: ['status', 'scale', 'drain', 'fill'], description: 'Pool action' },
548
- targetSize: { type: 'number', description: 'Target pool size (for scale action)' },
549
- agentType: { type: 'string', description: 'Agent type filter' },
550
- },
551
- required: ['action'],
552
- },
553
- handler: async (input) => {
554
- if (input.agentType) {
555
- const v = validateIdentifier(input.agentType, 'agentType');
556
- if (!v.valid)
557
- return { action: input.action, error: `Input validation failed: ${v.error}` };
558
- }
559
- const store = loadAgentStore();
560
- const agents = Object.values(store.agents).filter(a => a.status !== 'terminated');
561
- const action = input.action || 'status'; // Default to status
562
- if (action === 'status') {
563
- const byType = {};
564
- const byStatus = {};
565
- for (const agent of agents) {
566
- byType[agent.agentType] = (byType[agent.agentType] || 0) + 1;
567
- byStatus[agent.status] = (byStatus[agent.status] || 0) + 1;
568
- }
569
- const idleAgents = agents.filter(a => a.status === 'idle').length;
570
- const busyAgents = agents.filter(a => a.status === 'busy').length;
571
- const utilization = agents.length > 0 ? busyAgents / agents.length : 0;
572
- return {
573
- action,
574
- // CLI expected fields
575
- poolId: 'agent-pool-default',
576
- currentSize: agents.length,
577
- minSize: input.min || 0,
578
- maxSize: input.max || 100,
579
- autoScale: input.autoScale ?? false,
580
- utilization,
581
- agents: agents.map(a => ({
582
- id: a.agentId,
583
- type: a.agentType,
584
- status: a.status,
585
- })),
586
- // Additional fields
587
- id: 'agent-pool-default',
588
- size: agents.length,
589
- totalAgents: agents.length,
590
- byType,
591
- byStatus,
592
- avgHealth: agents.length > 0 ? agents.reduce((sum, a) => sum + a.health, 0) / agents.length : 0,
593
- };
594
- }
595
- if (action === 'scale') {
596
- const targetSize = input.targetSize || 5;
597
- const agentType = input.agentType || 'worker';
598
- const currentSize = agents.filter(a => a.agentType === agentType).length;
599
- const delta = targetSize - currentSize;
600
- const added = [];
601
- const removed = [];
602
- if (delta > 0) {
603
- for (let i = 0; i < delta; i++) {
604
- const agentId = `agent-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
605
- store.agents[agentId] = {
606
- agentId,
607
- agentType,
608
- status: 'idle',
609
- health: 1.0,
610
- taskCount: 0,
611
- config: {},
612
- createdAt: new Date().toISOString(),
613
- };
614
- added.push(agentId);
615
- }
616
- }
617
- else if (delta < 0) {
618
- const toRemove = agents.filter(a => a.agentType === agentType && a.status === 'idle').slice(0, -delta);
619
- for (const agent of toRemove) {
620
- store.agents[agent.agentId].status = 'terminated';
621
- removed.push(agent.agentId);
622
- }
623
- }
624
- saveAgentStore(store);
625
- return {
626
- action,
627
- agentType,
628
- previousSize: currentSize,
629
- targetSize,
630
- newSize: currentSize + delta,
631
- added,
632
- removed,
633
- };
634
- }
635
- if (action === 'drain') {
636
- const agentType = input.agentType;
637
- let drained = 0;
638
- for (const agent of agents) {
639
- if (!agentType || agent.agentType === agentType) {
640
- if (agent.status === 'idle') {
641
- store.agents[agent.agentId].status = 'terminated';
642
- drained++;
643
- }
644
- }
645
- }
646
- saveAgentStore(store);
647
- return {
648
- action,
649
- agentType: agentType || 'all',
650
- drained,
651
- remaining: agents.length - drained,
652
- };
653
- }
654
- return { action, error: 'Unknown action' };
655
- },
656
- },
657
- {
658
- name: 'agent_health',
659
- description: 'Compute an agent\'s rolling health score (0-1) from recent task success ratio + response-latency p50/p95 + error rate. Use when native Task tool is wrong because you\'re running a long-lived agent (autonomous loop / hive-mind worker / federation peer) and need to detect degradation before the breaker trips it. For one-shot Task invocations there is no history to score. Pair with hooks_post-task so the scores stay current.',
660
- category: 'agent',
661
- inputSchema: {
662
- type: 'object',
663
- properties: {
664
- agentId: { type: 'string', description: 'Specific agent ID (optional)' },
665
- threshold: { type: 'number', description: 'Health threshold (0-1)' },
666
- },
667
- },
668
- handler: async (input) => {
669
- if (input.agentId) {
670
- const v = validateIdentifier(input.agentId, 'agentId');
671
- if (!v.valid)
672
- return { agentId: input.agentId, error: `Input validation failed: ${v.error}` };
673
- }
674
- const store = loadAgentStore();
675
- const agents = Object.values(store.agents).filter(a => a.status !== 'terminated');
676
- const threshold = input.threshold || 0.5;
677
- if (input.agentId) {
678
- const agent = store.agents[input.agentId];
679
- if (agent) {
680
- return {
681
- agentId: agent.agentId,
682
- health: agent.health,
683
- status: agent.status,
684
- healthy: agent.health >= threshold,
685
- taskCount: agent.taskCount,
686
- uptime: Date.now() - new Date(agent.createdAt).getTime(),
687
- };
688
- }
689
- return { agentId: input.agentId, error: 'Agent not found' };
690
- }
691
- const healthyAgents = agents.filter(a => a.health >= threshold);
692
- const degradedAgents = agents.filter(a => a.health >= 0.3 && a.health < threshold);
693
- const unhealthyAgents = agents.filter(a => a.health < 0.3);
694
- const avgHealth = agents.length > 0 ? agents.reduce((sum, a) => sum + a.health, 0) / agents.length : 1;
695
- return {
696
- // CLI expected fields
697
- agents: agents.map(a => {
698
- const uptime = Date.now() - new Date(a.createdAt).getTime();
699
- return {
700
- id: a.agentId,
701
- type: a.agentType,
702
- health: a.health >= threshold ? 'healthy' : (a.health >= 0.3 ? 'degraded' : 'unhealthy'),
703
- uptime,
704
- tasks: { active: a.taskCount > 0 ? 1 : 0, queued: 0, completed: a.taskCount, failed: 0 },
705
- _note: 'Per-agent OS metrics not available — use system_metrics for real CPU/memory',
706
- };
707
- }),
708
- overall: {
709
- healthy: healthyAgents.length,
710
- degraded: degradedAgents.length,
711
- unhealthy: unhealthyAgents.length,
712
- cpu: null,
713
- memory: null,
714
- _note: 'Per-agent CPU/memory not available — use system_metrics for real OS-level stats',
715
- score: Math.round(avgHealth * 100),
716
- issues: unhealthyAgents.length,
717
- },
718
- // Additional fields
719
- total: agents.length,
720
- healthyCount: healthyAgents.length,
721
- unhealthyCount: unhealthyAgents.length,
722
- threshold,
723
- avgHealth,
724
- unhealthyAgents: unhealthyAgents.map(a => ({
725
- agentId: a.agentId,
726
- health: a.health,
727
- status: a.status,
728
- })),
729
- };
730
- },
731
- },
732
- {
733
- name: 'agent_update',
734
- description: 'Mutate a tracked agent\'s config (model, instructions, status, health) without re-spawning. Use when native Task tool is wrong because the agent already has accumulated state (taskCount, swarm membership, cost-tracking attribution) and you only need to tweak one field — for example, promoting an idle agent to running on a new task, or rotating its model from haiku to sonnet mid-loop. For a brand-new subagent, agent_spawn (or native Task) is the right call.',
735
- category: 'agent',
736
- inputSchema: {
737
- type: 'object',
738
- properties: {
739
- agentId: { type: 'string', description: 'ID of agent' },
740
- status: { type: 'string', description: 'New status' },
741
- health: { type: 'number', description: 'Health value (0-1)' },
742
- taskCount: { type: 'number', description: 'Task count' },
743
- config: { type: 'object', description: 'Config updates' },
744
- },
745
- required: ['agentId'],
746
- },
747
- handler: async (input) => {
748
- const v = validateIdentifier(input.agentId, 'agentId');
749
- if (!v.valid)
750
- return { success: false, agentId: input.agentId, error: `Input validation failed: ${v.error}` };
751
- if (input.status) {
752
- const vs = validateIdentifier(input.status, 'status');
753
- if (!vs.valid)
754
- return { success: false, agentId: input.agentId, error: `Input validation failed: ${vs.error}` };
755
- }
756
- const store = loadAgentStore();
757
- const agentId = input.agentId;
758
- const agent = store.agents[agentId];
759
- if (agent) {
760
- if (input.status)
761
- agent.status = input.status;
762
- if (typeof input.health === 'number')
763
- agent.health = input.health;
764
- if (typeof input.taskCount === 'number')
765
- agent.taskCount = input.taskCount;
766
- if (input.config) {
767
- agent.config = { ...agent.config, ...input.config };
768
- }
769
- saveAgentStore(store);
770
- return {
771
- success: true,
772
- agentId,
773
- updated: true,
774
- agent: {
775
- agentId: agent.agentId,
776
- status: agent.status,
777
- health: agent.health,
778
- taskCount: agent.taskCount,
779
- },
780
- };
781
- }
782
- return {
783
- success: false,
784
- agentId,
785
- error: 'Agent not found',
786
- };
787
- },
788
- },
789
- {
790
- // #1916 — the `ruflo agent logs <id>` CLI subcommand and the guidance
791
- // surface both reference an `agent_logs` MCP tool that was never
792
- // registered, so it errored with `MCP tool not found: agent_logs`.
793
- // This is the registered handler. Note: agents don't yet keep a
794
- // structured per-agent activity log (that lands with hive worker
795
- // execution wiring — see #1916), so for now we surface the agent's
796
- // last task result as a single synthetic entry, or an explicit empty
797
- // response. The shape matches what the CLI `logs` subcommand expects:
798
- // `{ agentId, entries: [{timestamp,level,message,context?}], total }`.
799
- name: 'agent_logs',
800
- description: 'Return recorded activity-log entries for a tracked agent (idle/running history, last task result). Use when native Task tool is wrong because you need the agent\'s log across turns (what it did, last error/result, swarm context) rather than a one-shot Task transcript. For a Task you just ran, native Task output is fine. Pair with agent_list to find the agentId. (Hive-mind-spawned workers are resolved here too.) Today this returns the last task result as a synthetic entry — full per-agent activity logs land with hive worker execution wiring (ruvnet/ruflo#1916).',
801
- category: 'agent',
802
- inputSchema: {
803
- type: 'object',
804
- properties: {
805
- agentId: { type: 'string', description: 'ID of agent' },
806
- tail: { type: 'number', description: 'Max recent entries to return (default 50)' },
807
- level: { type: 'string', enum: ['debug', 'info', 'warn', 'error'], description: 'Minimum log level (currently advisory — entries are synthetic)' },
808
- since: { type: 'string', description: 'Show logs since, e.g. "1h" / "30m" (currently advisory)' },
809
- },
810
- required: ['agentId'],
811
- },
812
- handler: async (input) => {
813
- const v = validateIdentifier(input.agentId, 'agentId');
814
- if (!v.valid)
815
- return { agentId: input.agentId, entries: [], total: 0, error: `Input validation failed: ${v.error}` };
816
- const agentId = input.agentId;
817
- const agent = loadAllAgents()[agentId]; // #1916: includes hive-mind-spawned workers
818
- if (!agent) {
819
- return { agentId, entries: [], total: 0, error: 'Agent not found' };
820
- }
821
- const entries = [];
822
- entries.push({ timestamp: agent.createdAt, level: 'info', message: `agent created (type=${agent.agentType}, status=${agent.status})` });
823
- if (agent.lastResult) {
824
- entries.push({ timestamp: agent.createdAt, level: 'info', message: 'last task result', context: agent.lastResult });
825
- }
826
- const tail = typeof input.tail === 'number' && input.tail > 0 ? Math.floor(input.tail) : 50;
827
- const sliced = entries.slice(-tail);
828
- return {
829
- agentId: agent.agentId,
830
- entries: sliced,
831
- total: entries.length,
832
- note: 'per-agent activity logging is not yet wired; entries are synthetic (ruvnet/ruflo#1916)',
833
- };
834
- },
835
- },
836
- ];
837
- //# sourceMappingURL=agent-tools.js.map