@claude-flow/cli 3.32.3 → 3.32.4

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 (683) hide show
  1. package/.claude/helpers/helpers.manifest.json +2 -2
  2. package/catalog-manifest.json +2 -2
  3. package/dist/src/agenticow/speculative-exploration.d.ts +148 -0
  4. package/dist/src/agenticow/speculative-exploration.js +218 -0
  5. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  6. package/dist/src/appliance/gguf-engine.js +425 -0
  7. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  8. package/dist/src/appliance/ruvllm-bridge.js +292 -0
  9. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  10. package/dist/src/appliance/rvfa-builder.js +329 -0
  11. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  12. package/dist/src/appliance/rvfa-distribution.js +370 -0
  13. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  14. package/dist/src/appliance/rvfa-format.js +393 -0
  15. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  16. package/dist/src/appliance/rvfa-runner.js +237 -0
  17. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  18. package/dist/src/appliance/rvfa-signing.js +347 -0
  19. package/dist/src/auth/client.d.ts +89 -0
  20. package/dist/src/auth/client.js +242 -0
  21. package/dist/src/auth/constants.d.ts +7 -0
  22. package/dist/src/auth/constants.js +7 -0
  23. package/dist/src/auth/scopes.d.ts +14 -0
  24. package/dist/src/auth/scopes.js +21 -0
  25. package/dist/src/auth/security-bridge.d.ts +36 -0
  26. package/dist/src/auth/security-bridge.js +42 -0
  27. package/dist/src/auth/session.d.ts +20 -0
  28. package/dist/src/auth/session.js +32 -0
  29. package/dist/src/auth/state.d.ts +19 -0
  30. package/dist/src/auth/state.js +53 -0
  31. package/dist/src/auth/types.d.ts +27 -0
  32. package/dist/src/auth/types.js +11 -0
  33. package/dist/src/autopilot-state.d.ts +77 -0
  34. package/dist/src/autopilot-state.js +271 -0
  35. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +18 -0
  36. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +253 -0
  37. package/dist/src/benchmarks/gaia-agent.d.ts +198 -0
  38. package/dist/src/benchmarks/gaia-agent.js +651 -0
  39. package/dist/src/benchmarks/gaia-causal-memory.d.ts +133 -0
  40. package/dist/src/benchmarks/gaia-causal-memory.js +281 -0
  41. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +22 -0
  42. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +300 -0
  43. package/dist/src/benchmarks/gaia-convergence.d.ts +138 -0
  44. package/dist/src/benchmarks/gaia-convergence.js +260 -0
  45. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +19 -0
  46. package/dist/src/benchmarks/gaia-convergence.smoke.js +246 -0
  47. package/dist/src/benchmarks/gaia-critic.d.ts +123 -0
  48. package/dist/src/benchmarks/gaia-critic.js +312 -0
  49. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +21 -0
  50. package/dist/src/benchmarks/gaia-critic.smoke.js +327 -0
  51. package/dist/src/benchmarks/gaia-decomposer.d.ts +125 -0
  52. package/dist/src/benchmarks/gaia-decomposer.js +350 -0
  53. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +21 -0
  54. package/dist/src/benchmarks/gaia-decomposer.smoke.js +228 -0
  55. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +27 -0
  56. package/dist/src/benchmarks/gaia-e2e-smoke.js +136 -0
  57. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +45 -0
  58. package/dist/src/benchmarks/gaia-extract.smoke.js +242 -0
  59. package/dist/src/benchmarks/gaia-hardness/features.d.ts +46 -0
  60. package/dist/src/benchmarks/gaia-hardness/features.js +170 -0
  61. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +105 -0
  62. package/dist/src/benchmarks/gaia-hardness/predictor.js +260 -0
  63. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +20 -0
  64. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +235 -0
  65. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +51 -0
  66. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +179 -0
  67. package/dist/src/benchmarks/gaia-judge.d.ts +88 -0
  68. package/dist/src/benchmarks/gaia-judge.js +437 -0
  69. package/dist/src/benchmarks/gaia-loader.d.ts +87 -0
  70. package/dist/src/benchmarks/gaia-loader.js +326 -0
  71. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +35 -0
  72. package/dist/src/benchmarks/gaia-tools/file_read.js +403 -0
  73. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +126 -0
  74. package/dist/src/benchmarks/gaia-tools/grounded_query.js +225 -0
  75. package/dist/src/benchmarks/gaia-tools/index.d.ts +32 -0
  76. package/dist/src/benchmarks/gaia-tools/index.js +36 -0
  77. package/dist/src/benchmarks/gaia-tools/types.d.ts +62 -0
  78. package/dist/src/benchmarks/gaia-tools/types.js +12 -0
  79. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +30 -0
  80. package/dist/src/benchmarks/gaia-tools/web_search.js +210 -0
  81. package/dist/src/benchmarks/gaia-voting.d.ts +88 -0
  82. package/dist/src/benchmarks/gaia-voting.js +297 -0
  83. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +20 -0
  84. package/dist/src/benchmarks/gaia-voting.smoke.js +332 -0
  85. package/dist/src/benchmarks/pretrain/index.d.ts +58 -0
  86. package/dist/src/benchmarks/pretrain/index.js +404 -0
  87. package/dist/src/business-pods/bbs-budget-tracker.d.ts +139 -0
  88. package/dist/src/business-pods/bbs-budget-tracker.js +358 -0
  89. package/dist/src/business-pods/domain-affinity-policy.d.ts +47 -0
  90. package/dist/src/business-pods/domain-affinity-policy.js +65 -0
  91. package/dist/src/business-pods/pod-schema.d.ts +96 -0
  92. package/dist/src/business-pods/pod-schema.js +225 -0
  93. package/dist/src/commands/advisor.d.ts +15 -0
  94. package/dist/src/commands/advisor.js +94 -0
  95. package/dist/src/commands/agent-wasm.d.ts +14 -0
  96. package/dist/src/commands/agent-wasm.js +333 -0
  97. package/dist/src/commands/agent.d.ts +8 -0
  98. package/dist/src/commands/agent.js +927 -0
  99. package/dist/src/commands/analyze.d.ts +19 -0
  100. package/dist/src/commands/analyze.js +2047 -0
  101. package/dist/src/commands/announcements.d.ts +17 -0
  102. package/dist/src/commands/announcements.js +0 -0
  103. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  104. package/dist/src/commands/appliance-advanced.js +215 -0
  105. package/dist/src/commands/appliance.d.ts +8 -0
  106. package/dist/src/commands/appliance.js +404 -0
  107. package/dist/src/commands/auth.d.ts +15 -0
  108. package/dist/src/commands/auth.js +244 -0
  109. package/dist/src/commands/autopilot.d.ts +15 -0
  110. package/dist/src/commands/autopilot.js +407 -0
  111. package/dist/src/commands/benchmark.d.ts +10 -0
  112. package/dist/src/commands/benchmark.js +460 -0
  113. package/dist/src/commands/claims.d.ts +10 -0
  114. package/dist/src/commands/claims.js +620 -0
  115. package/dist/src/commands/cleanup.d.ts +13 -0
  116. package/dist/src/commands/cleanup.js +250 -0
  117. package/dist/src/commands/completions.d.ts +10 -0
  118. package/dist/src/commands/completions.js +539 -0
  119. package/dist/src/commands/config.d.ts +8 -0
  120. package/dist/src/commands/config.js +428 -0
  121. package/dist/src/commands/daemon.d.ts +59 -0
  122. package/dist/src/commands/daemon.js +1733 -0
  123. package/dist/src/commands/deployment.d.ts +10 -0
  124. package/dist/src/commands/deployment.js +672 -0
  125. package/dist/src/commands/doctor.d.ts +10 -0
  126. package/dist/src/commands/doctor.js +1902 -0
  127. package/dist/src/commands/eject.d.ts +33 -0
  128. package/dist/src/commands/eject.js +195 -0
  129. package/dist/src/commands/embeddings.d.ts +18 -0
  130. package/dist/src/commands/embeddings.js +1623 -0
  131. package/dist/src/commands/funnel.d.ts +18 -0
  132. package/dist/src/commands/funnel.js +302 -0
  133. package/dist/src/commands/gaia-bench.d.ts +40 -0
  134. package/dist/src/commands/gaia-bench.js +597 -0
  135. package/dist/src/commands/guidance.d.ts +8 -0
  136. package/dist/src/commands/guidance.js +556 -0
  137. package/dist/src/commands/hive-mind.d.ts +11 -0
  138. package/dist/src/commands/hive-mind.js +1319 -0
  139. package/dist/src/commands/hooks.d.ts +8 -0
  140. package/dist/src/commands/hooks.js +4606 -0
  141. package/dist/src/commands/index.d.ts +118 -0
  142. package/dist/src/commands/index.js +366 -0
  143. package/dist/src/commands/init.d.ts +13 -0
  144. package/dist/src/commands/init.js +1297 -0
  145. package/dist/src/commands/issues.d.ts +21 -0
  146. package/dist/src/commands/issues.js +567 -0
  147. package/dist/src/commands/mcp.d.ts +11 -0
  148. package/dist/src/commands/mcp.js +732 -0
  149. package/dist/src/commands/memory-backup.d.ts +11 -0
  150. package/dist/src/commands/memory-backup.js +46 -0
  151. package/dist/src/commands/memory-distill.d.ts +27 -0
  152. package/dist/src/commands/memory-distill.js +374 -0
  153. package/dist/src/commands/memory.d.ts +8 -0
  154. package/dist/src/commands/memory.js +1596 -0
  155. package/dist/src/commands/metaharness.d.ts +39 -0
  156. package/dist/src/commands/metaharness.js +215 -0
  157. package/dist/src/commands/migrate.d.ts +8 -0
  158. package/dist/src/commands/migrate.js +742 -0
  159. package/dist/src/commands/neural.d.ts +10 -0
  160. package/dist/src/commands/neural.js +4331 -0
  161. package/dist/src/commands/performance.d.ts +10 -0
  162. package/dist/src/commands/performance.js +583 -0
  163. package/dist/src/commands/plugins.d.ts +11 -0
  164. package/dist/src/commands/plugins.js +826 -0
  165. package/dist/src/commands/process.d.ts +10 -0
  166. package/dist/src/commands/process.js +694 -0
  167. package/dist/src/commands/progress.d.ts +11 -0
  168. package/dist/src/commands/progress.js +259 -0
  169. package/dist/src/commands/providers.d.ts +10 -0
  170. package/dist/src/commands/providers.js +502 -0
  171. package/dist/src/commands/proxy-lifecycle.d.ts +12 -0
  172. package/dist/src/commands/proxy-lifecycle.js +232 -0
  173. package/dist/src/commands/proxy.d.ts +21 -0
  174. package/dist/src/commands/proxy.js +398 -0
  175. package/dist/src/commands/route.d.ts +16 -0
  176. package/dist/src/commands/route.js +822 -0
  177. package/dist/src/commands/ruvector/backup.d.ts +11 -0
  178. package/dist/src/commands/ruvector/backup.js +747 -0
  179. package/dist/src/commands/ruvector/benchmark.d.ts +11 -0
  180. package/dist/src/commands/ruvector/benchmark.js +490 -0
  181. package/dist/src/commands/ruvector/import.d.ts +18 -0
  182. package/dist/src/commands/ruvector/import.js +373 -0
  183. package/dist/src/commands/ruvector/index.d.ts +29 -0
  184. package/dist/src/commands/ruvector/index.js +129 -0
  185. package/dist/src/commands/ruvector/init.d.ts +11 -0
  186. package/dist/src/commands/ruvector/init.js +467 -0
  187. package/dist/src/commands/ruvector/migrate.d.ts +11 -0
  188. package/dist/src/commands/ruvector/migrate.js +498 -0
  189. package/dist/src/commands/ruvector/optimize.d.ts +11 -0
  190. package/dist/src/commands/ruvector/optimize.js +505 -0
  191. package/dist/src/commands/ruvector/pg-utils.d.ts +14 -0
  192. package/dist/src/commands/ruvector/pg-utils.js +41 -0
  193. package/dist/src/commands/ruvector/setup.d.ts +18 -0
  194. package/dist/src/commands/ruvector/setup.js +765 -0
  195. package/dist/src/commands/ruvector/status.d.ts +11 -0
  196. package/dist/src/commands/ruvector/status.js +479 -0
  197. package/dist/src/commands/security.d.ts +10 -0
  198. package/dist/src/commands/security.js +1012 -0
  199. package/dist/src/commands/session.d.ts +8 -0
  200. package/dist/src/commands/session.js +757 -0
  201. package/dist/src/commands/settings.d.ts +19 -0
  202. package/dist/src/commands/settings.js +180 -0
  203. package/dist/src/commands/spinner.d.ts +16 -0
  204. package/dist/src/commands/spinner.js +329 -0
  205. package/dist/src/commands/start.d.ts +8 -0
  206. package/dist/src/commands/start.js +418 -0
  207. package/dist/src/commands/status.d.ts +8 -0
  208. package/dist/src/commands/status.js +608 -0
  209. package/dist/src/commands/swarm.d.ts +8 -0
  210. package/dist/src/commands/swarm.js +891 -0
  211. package/dist/src/commands/task.d.ts +8 -0
  212. package/dist/src/commands/task.js +675 -0
  213. package/dist/src/commands/transfer-store.d.ts +13 -0
  214. package/dist/src/commands/transfer-store.js +428 -0
  215. package/dist/src/commands/update.d.ts +8 -0
  216. package/dist/src/commands/update.js +276 -0
  217. package/dist/src/commands/verify.d.ts +19 -0
  218. package/dist/src/commands/verify.js +261 -0
  219. package/dist/src/commands/version.d.ts +42 -0
  220. package/dist/src/commands/version.js +106 -0
  221. package/dist/src/commands/workflow.d.ts +8 -0
  222. package/dist/src/commands/workflow.js +617 -0
  223. package/dist/src/config/harness-feedback-applier.d.ts +50 -0
  224. package/dist/src/config/harness-feedback-applier.js +122 -0
  225. package/dist/src/config/proven-config-refresh.d.ts +39 -0
  226. package/dist/src/config/proven-config-refresh.js +154 -0
  227. package/dist/src/config/proven-config-rvfa.d.ts +23 -0
  228. package/dist/src/config/proven-config-rvfa.js +73 -0
  229. package/dist/src/config/proven-config.d.ts +86 -0
  230. package/dist/src/config/proven-config.js +176 -0
  231. package/dist/src/config-adapter.d.ts +15 -0
  232. package/dist/src/config-adapter.js +186 -0
  233. package/dist/src/encryption/vault.d.ts +94 -0
  234. package/dist/src/encryption/vault.js +172 -0
  235. package/dist/src/fs-secure.d.ts +86 -0
  236. package/dist/src/fs-secure.js +133 -0
  237. package/dist/src/funnel/advisor-tip.d.ts +58 -0
  238. package/dist/src/funnel/advisor-tip.js +92 -0
  239. package/dist/src/funnel/attribution.d.ts +37 -0
  240. package/dist/src/funnel/attribution.js +101 -0
  241. package/dist/src/funnel/consent.d.ts +22 -0
  242. package/dist/src/funnel/consent.js +58 -0
  243. package/dist/src/funnel/credit-errors.d.ts +31 -0
  244. package/dist/src/funnel/credit-errors.js +88 -0
  245. package/dist/src/funnel/credit-notifier.d.ts +44 -0
  246. package/dist/src/funnel/credit-notifier.js +74 -0
  247. package/dist/src/funnel/disclosure.d.ts +47 -0
  248. package/dist/src/funnel/disclosure.js +109 -0
  249. package/dist/src/funnel/enrollment.d.ts +36 -0
  250. package/dist/src/funnel/enrollment.js +64 -0
  251. package/dist/src/funnel/environment.d.ts +17 -0
  252. package/dist/src/funnel/environment.js +39 -0
  253. package/dist/src/funnel/event-transport.d.ts +51 -0
  254. package/dist/src/funnel/event-transport.js +199 -0
  255. package/dist/src/funnel/events.d.ts +42 -0
  256. package/dist/src/funnel/events.js +150 -0
  257. package/dist/src/funnel/index.d.ts +21 -0
  258. package/dist/src/funnel/index.js +21 -0
  259. package/dist/src/funnel/insights.d.ts +50 -0
  260. package/dist/src/funnel/insights.js +120 -0
  261. package/dist/src/funnel/local-signals.d.ts +20 -0
  262. package/dist/src/funnel/local-signals.js +77 -0
  263. package/dist/src/funnel/message-transport.d.ts +51 -0
  264. package/dist/src/funnel/message-transport.js +149 -0
  265. package/dist/src/funnel/messages.d.ts +55 -0
  266. package/dist/src/funnel/messages.js +160 -0
  267. package/dist/src/funnel/payout.d.ts +40 -0
  268. package/dist/src/funnel/payout.js +60 -0
  269. package/dist/src/funnel/power-saver-notifier.d.ts +44 -0
  270. package/dist/src/funnel/power-saver-notifier.js +92 -0
  271. package/dist/src/funnel/precedence.d.ts +16 -0
  272. package/dist/src/funnel/precedence.js +85 -0
  273. package/dist/src/funnel/promo.d.ts +41 -0
  274. package/dist/src/funnel/promo.js +144 -0
  275. package/dist/src/funnel/rate-limit-notifier.d.ts +55 -0
  276. package/dist/src/funnel/rate-limit-notifier.js +102 -0
  277. package/dist/src/funnel/rotation.d.ts +19 -0
  278. package/dist/src/funnel/rotation.js +70 -0
  279. package/dist/src/funnel/state.d.ts +13 -0
  280. package/dist/src/funnel/state.js +52 -0
  281. package/dist/src/funnel/toggle-cooldown.d.ts +17 -0
  282. package/dist/src/funnel/toggle-cooldown.js +32 -0
  283. package/dist/src/funnel/types.d.ts +98 -0
  284. package/dist/src/funnel/types.js +26 -0
  285. package/dist/src/index.d.ts +81 -0
  286. package/dist/src/index.js +609 -0
  287. package/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  288. package/dist/src/infrastructure/in-memory-repositories.js +264 -0
  289. package/dist/src/init/claudemd-generator.d.ts +16 -0
  290. package/dist/src/init/claudemd-generator.js +368 -0
  291. package/dist/src/init/executor.d.ts +41 -0
  292. package/dist/src/init/executor.js +2142 -0
  293. package/dist/src/init/helper-refresh.d.ts +79 -0
  294. package/dist/src/init/helper-refresh.js +347 -0
  295. package/dist/src/init/helper-signing.d.ts +37 -0
  296. package/dist/src/init/helper-signing.js +67 -0
  297. package/dist/src/init/helpers-generator.d.ts +87 -0
  298. package/dist/src/init/helpers-generator.js +1456 -0
  299. package/dist/src/init/index.d.ts +13 -0
  300. package/dist/src/init/index.js +15 -0
  301. package/dist/src/init/mcp-generator.d.ts +26 -0
  302. package/dist/src/init/mcp-generator.js +126 -0
  303. package/dist/src/init/memory-package-resolver.d.ts +53 -0
  304. package/dist/src/init/memory-package-resolver.js +118 -0
  305. package/dist/src/init/settings-generator.d.ts +14 -0
  306. package/dist/src/init/settings-generator.js +462 -0
  307. package/dist/src/init/statusline-generator.d.ts +28 -0
  308. package/dist/src/init/statusline-generator.js +177 -0
  309. package/dist/src/init/types.d.ts +331 -0
  310. package/dist/src/init/types.js +276 -0
  311. package/dist/src/log-filters.d.ts +46 -0
  312. package/dist/src/log-filters.js +107 -0
  313. package/dist/src/mcp-client.d.ts +92 -0
  314. package/dist/src/mcp-client.js +397 -0
  315. package/dist/src/mcp-server.d.ts +163 -0
  316. package/dist/src/mcp-server.js +751 -0
  317. package/dist/src/mcp-tools/agent-execute-core.d.ts +115 -0
  318. package/dist/src/mcp-tools/agent-execute-core.js +587 -0
  319. package/dist/src/mcp-tools/agent-tools.d.ts +9 -0
  320. package/dist/src/mcp-tools/agent-tools.js +837 -0
  321. package/dist/src/mcp-tools/agentbbs-tools.d.ts +28 -0
  322. package/dist/src/mcp-tools/agentbbs-tools.js +394 -0
  323. package/dist/src/mcp-tools/agentdb-tools.d.ts +35 -0
  324. package/dist/src/mcp-tools/agentdb-tools.js +1473 -0
  325. package/dist/src/mcp-tools/agenticow-loader.d.ts +59 -0
  326. package/dist/src/mcp-tools/agenticow-loader.js +105 -0
  327. package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +24 -0
  328. package/dist/src/mcp-tools/agenticow-speculate-tools.js +209 -0
  329. package/dist/src/mcp-tools/agenticow-tools.d.ts +36 -0
  330. package/dist/src/mcp-tools/agenticow-tools.js +360 -0
  331. package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  332. package/dist/src/mcp-tools/analyze-tools.js +346 -0
  333. package/dist/src/mcp-tools/auto-install.d.ts +83 -0
  334. package/dist/src/mcp-tools/auto-install.js +131 -0
  335. package/dist/src/mcp-tools/autopilot-tools.d.ts +12 -0
  336. package/dist/src/mcp-tools/autopilot-tools.js +231 -0
  337. package/dist/src/mcp-tools/browser-intent-tools.d.ts +162 -0
  338. package/dist/src/mcp-tools/browser-intent-tools.js +548 -0
  339. package/dist/src/mcp-tools/browser-session-tools.d.ts +27 -0
  340. package/dist/src/mcp-tools/browser-session-tools.js +398 -0
  341. package/dist/src/mcp-tools/browser-tools.d.ts +21 -0
  342. package/dist/src/mcp-tools/browser-tools.js +760 -0
  343. package/dist/src/mcp-tools/business-pod-tools.d.ts +20 -0
  344. package/dist/src/mcp-tools/business-pod-tools.js +169 -0
  345. package/dist/src/mcp-tools/claims-tools.d.ts +12 -0
  346. package/dist/src/mcp-tools/claims-tools.js +863 -0
  347. package/dist/src/mcp-tools/config-tools.d.ts +8 -0
  348. package/dist/src/mcp-tools/config-tools.js +411 -0
  349. package/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
  350. package/dist/src/mcp-tools/coordination-tools.js +729 -0
  351. package/dist/src/mcp-tools/daa-tools.d.ts +13 -0
  352. package/dist/src/mcp-tools/daa-tools.js +534 -0
  353. package/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
  354. package/dist/src/mcp-tools/embeddings-tools.js +904 -0
  355. package/dist/src/mcp-tools/github-tools.d.ts +9 -0
  356. package/dist/src/mcp-tools/github-tools.js +659 -0
  357. package/dist/src/mcp-tools/guidance-tools.d.ts +15 -0
  358. package/dist/src/mcp-tools/guidance-tools.js +639 -0
  359. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  360. package/dist/src/mcp-tools/hive-mind-tools.js +953 -0
  361. package/dist/src/mcp-tools/hooks-tools.d.ts +65 -0
  362. package/dist/src/mcp-tools/hooks-tools.js +4836 -0
  363. package/dist/src/mcp-tools/http-fetch-tools.d.ts +55 -0
  364. package/dist/src/mcp-tools/http-fetch-tools.js +329 -0
  365. package/dist/src/mcp-tools/index.d.ts +34 -0
  366. package/dist/src/mcp-tools/index.js +40 -0
  367. package/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
  368. package/dist/src/mcp-tools/managed-agent-tools.js +357 -0
  369. package/dist/src/mcp-tools/memory-tools.d.ts +14 -0
  370. package/dist/src/mcp-tools/memory-tools.js +1330 -0
  371. package/dist/src/mcp-tools/metaharness-tools.d.ts +51 -0
  372. package/dist/src/mcp-tools/metaharness-tools.js +684 -0
  373. package/dist/src/mcp-tools/neural-tools.d.ts +54 -0
  374. package/dist/src/mcp-tools/neural-tools.js +1168 -0
  375. package/dist/src/mcp-tools/performance-tools.d.ts +16 -0
  376. package/dist/src/mcp-tools/performance-tools.js +675 -0
  377. package/dist/src/mcp-tools/progress-tools.d.ts +14 -0
  378. package/dist/src/mcp-tools/progress-tools.js +348 -0
  379. package/dist/src/mcp-tools/request-tracker.d.ts +17 -0
  380. package/dist/src/mcp-tools/request-tracker.js +27 -0
  381. package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  382. package/dist/src/mcp-tools/ruvllm-tools.js +355 -0
  383. package/dist/src/mcp-tools/security-tools.d.ts +18 -0
  384. package/dist/src/mcp-tools/security-tools.js +556 -0
  385. package/dist/src/mcp-tools/session-tools.d.ts +8 -0
  386. package/dist/src/mcp-tools/session-tools.js +517 -0
  387. package/dist/src/mcp-tools/swarm-tools.d.ts +37 -0
  388. package/dist/src/mcp-tools/swarm-tools.js +390 -0
  389. package/dist/src/mcp-tools/system-tools.d.ts +13 -0
  390. package/dist/src/mcp-tools/system-tools.js +688 -0
  391. package/dist/src/mcp-tools/task-tools.d.ts +8 -0
  392. package/dist/src/mcp-tools/task-tools.js +487 -0
  393. package/dist/src/mcp-tools/terminal-tools.d.ts +8 -0
  394. package/dist/src/mcp-tools/terminal-tools.js +306 -0
  395. package/dist/src/mcp-tools/testgen-tools.d.ts +26 -0
  396. package/dist/src/mcp-tools/testgen-tools.js +168 -0
  397. package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +31 -0
  398. package/dist/src/mcp-tools/tool-loop-guardrail.js +71 -0
  399. package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
  400. package/dist/src/mcp-tools/transfer-tools.js +447 -0
  401. package/dist/src/mcp-tools/types.d.ts +8 -0
  402. package/dist/src/mcp-tools/types.js +8 -0
  403. package/dist/src/mcp-tools/validate-input.d.ts +9 -0
  404. package/dist/src/mcp-tools/validate-input.js +9 -0
  405. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +13 -0
  406. package/dist/src/mcp-tools/wasm-agent-tools.js +840 -0
  407. package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  408. package/dist/src/mcp-tools/workflow-tools.js +884 -0
  409. package/dist/src/memory/bge-embedder.d.ts +25 -0
  410. package/dist/src/memory/bge-embedder.js +121 -0
  411. package/dist/src/memory/cross-encoder-rerank.d.ts +33 -0
  412. package/dist/src/memory/cross-encoder-rerank.js +123 -0
  413. package/dist/src/memory/embedding-policy.d.ts +21 -0
  414. package/dist/src/memory/embedding-policy.js +30 -0
  415. package/dist/src/memory/embedding-quantization.d.ts +62 -0
  416. package/dist/src/memory/embedding-quantization.js +156 -0
  417. package/dist/src/memory/ewc-consolidation.d.ts +305 -0
  418. package/dist/src/memory/ewc-consolidation.js +611 -0
  419. package/dist/src/memory/graph-edge-writer.d.ts +95 -0
  420. package/dist/src/memory/graph-edge-writer.js +217 -0
  421. package/dist/src/memory/hybrid-retrieval.d.ts +77 -0
  422. package/dist/src/memory/hybrid-retrieval.js +192 -0
  423. package/dist/src/memory/intelligence.d.ts +405 -0
  424. package/dist/src/memory/intelligence.js +1316 -0
  425. package/dist/src/memory/lucene-bm25.d.ts +19 -0
  426. package/dist/src/memory/lucene-bm25.js +308 -0
  427. package/dist/src/memory/memory-bridge.d.ts +537 -0
  428. package/dist/src/memory/memory-bridge.js +2460 -0
  429. package/dist/src/memory/memory-initializer.d.ts +556 -0
  430. package/dist/src/memory/memory-initializer.js +3021 -0
  431. package/dist/src/memory/neural-package-bridge.d.ts +48 -0
  432. package/dist/src/memory/neural-package-bridge.js +87 -0
  433. package/dist/src/memory/rabitq-index.d.ts +60 -0
  434. package/dist/src/memory/rabitq-index.js +242 -0
  435. package/dist/src/memory/sona-optimizer.d.ts +267 -0
  436. package/dist/src/memory/sona-optimizer.js +779 -0
  437. package/dist/src/memory/structured-distill.d.ts +48 -0
  438. package/dist/src/memory/structured-distill.js +125 -0
  439. package/dist/src/output.d.ts +9 -0
  440. package/dist/src/output.js +9 -0
  441. package/dist/src/parser.d.ts +89 -0
  442. package/dist/src/parser.js +516 -0
  443. package/dist/src/plugins/manager.d.ts +133 -0
  444. package/dist/src/plugins/manager.js +415 -0
  445. package/dist/src/plugins/store/discovery.d.ts +99 -0
  446. package/dist/src/plugins/store/discovery.js +1224 -0
  447. package/dist/src/plugins/store/index.d.ts +76 -0
  448. package/dist/src/plugins/store/index.js +141 -0
  449. package/dist/src/plugins/store/search.d.ts +46 -0
  450. package/dist/src/plugins/store/search.js +230 -0
  451. package/dist/src/plugins/store/types.d.ts +279 -0
  452. package/dist/src/plugins/store/types.js +7 -0
  453. package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  454. package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  455. package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  456. package/dist/src/plugins/tests/standalone-test.js +188 -0
  457. package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  458. package/dist/src/plugins/tests/test-plugin-store.js +206 -0
  459. package/dist/src/production/circuit-breaker.d.ts +101 -0
  460. package/dist/src/production/circuit-breaker.js +241 -0
  461. package/dist/src/production/error-handler.d.ts +92 -0
  462. package/dist/src/production/error-handler.js +299 -0
  463. package/dist/src/production/index.d.ts +23 -0
  464. package/dist/src/production/index.js +18 -0
  465. package/dist/src/production/monitoring.d.ts +161 -0
  466. package/dist/src/production/monitoring.js +356 -0
  467. package/dist/src/production/rate-limiter.d.ts +80 -0
  468. package/dist/src/production/rate-limiter.js +201 -0
  469. package/dist/src/production/retry.d.ts +48 -0
  470. package/dist/src/production/retry.js +179 -0
  471. package/dist/src/prompt.d.ts +44 -0
  472. package/dist/src/prompt.js +501 -0
  473. package/dist/src/proxy/install.d.ts +29 -0
  474. package/dist/src/proxy/install.js +135 -0
  475. package/dist/src/proxy/lifecycle.d.ts +61 -0
  476. package/dist/src/proxy/lifecycle.js +249 -0
  477. package/dist/src/proxy/paths.d.ts +34 -0
  478. package/dist/src/proxy/paths.js +70 -0
  479. package/dist/src/proxy/release.d.ts +47 -0
  480. package/dist/src/proxy/release.js +138 -0
  481. package/dist/src/proxy/token-bridge.d.ts +5 -0
  482. package/dist/src/proxy/token-bridge.js +61 -0
  483. package/dist/src/proxy/verify.d.ts +44 -0
  484. package/dist/src/proxy/verify.js +68 -0
  485. package/dist/src/runtime/headless.d.ts +60 -0
  486. package/dist/src/runtime/headless.js +284 -0
  487. package/dist/src/runtime/parent-death-watchdog.d.ts +42 -0
  488. package/dist/src/runtime/parent-death-watchdog.js +70 -0
  489. package/dist/src/ruvector/agent-wasm.d.ts +228 -0
  490. package/dist/src/ruvector/agent-wasm.js +463 -0
  491. package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  492. package/dist/src/ruvector/ast-analyzer.js +277 -0
  493. package/dist/src/ruvector/codemods/engine.d.ts +45 -0
  494. package/dist/src/ruvector/codemods/engine.js +291 -0
  495. package/dist/src/ruvector/codemods/scope-analysis.d.ts +29 -0
  496. package/dist/src/ruvector/codemods/scope-analysis.js +162 -0
  497. package/dist/src/ruvector/coverage-router.d.ts +160 -0
  498. package/dist/src/ruvector/coverage-router.js +531 -0
  499. package/dist/src/ruvector/coverage-tools.d.ts +33 -0
  500. package/dist/src/ruvector/coverage-tools.js +157 -0
  501. package/dist/src/ruvector/diff-classifier.d.ts +175 -0
  502. package/dist/src/ruvector/diff-classifier.js +699 -0
  503. package/dist/src/ruvector/diskann-backend.d.ts +78 -0
  504. package/dist/src/ruvector/diskann-backend.js +310 -0
  505. package/dist/src/ruvector/enhanced-model-router.d.ts +172 -0
  506. package/dist/src/ruvector/enhanced-model-router.js +577 -0
  507. package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
  508. package/dist/src/ruvector/graph-analyzer.js +929 -0
  509. package/dist/src/ruvector/graph-backend.d.ts +79 -0
  510. package/dist/src/ruvector/graph-backend.js +220 -0
  511. package/dist/src/ruvector/index.d.ts +38 -0
  512. package/dist/src/ruvector/index.js +86 -0
  513. package/dist/src/ruvector/lora-adapter.d.ts +292 -0
  514. package/dist/src/ruvector/lora-adapter.js +710 -0
  515. package/dist/src/ruvector/model-prices.d.ts +50 -0
  516. package/dist/src/ruvector/model-prices.js +72 -0
  517. package/dist/src/ruvector/model-router.d.ts +408 -0
  518. package/dist/src/ruvector/model-router.js +1162 -0
  519. package/dist/src/ruvector/neural-router.d.ts +182 -0
  520. package/dist/src/ruvector/neural-router.js +825 -0
  521. package/dist/src/ruvector/output-verifier.d.ts +83 -0
  522. package/dist/src/ruvector/output-verifier.js +277 -0
  523. package/dist/src/ruvector/q-learning-router.d.ts +227 -0
  524. package/dist/src/ruvector/q-learning-router.js +721 -0
  525. package/dist/src/ruvector/router-calibrator.d.ts +65 -0
  526. package/dist/src/ruvector/router-calibrator.js +120 -0
  527. package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
  528. package/dist/src/ruvector/router-parallel-recorder.js +183 -0
  529. package/dist/src/ruvector/router-trajectory.d.ts +194 -0
  530. package/dist/src/ruvector/router-trajectory.js +281 -0
  531. package/dist/src/ruvector/run-transcript-recorder.d.ts +154 -0
  532. package/dist/src/ruvector/run-transcript-recorder.js +209 -0
  533. package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
  534. package/dist/src/ruvector/ruvllm-wasm.js +379 -0
  535. package/dist/src/ruvector/semantic-router.d.ts +77 -0
  536. package/dist/src/ruvector/semantic-router.js +178 -0
  537. package/dist/src/ruvector/task-embedder.d.ts +56 -0
  538. package/dist/src/ruvector/task-embedder.js +237 -0
  539. package/dist/src/ruvector/trajectory-tree.d.ts +113 -0
  540. package/dist/src/ruvector/trajectory-tree.js +237 -0
  541. package/dist/src/ruvector/vector-db.d.ts +73 -0
  542. package/dist/src/ruvector/vector-db.js +301 -0
  543. package/dist/src/ruvector/wasm-embedder.d.ts +13 -0
  544. package/dist/src/ruvector/wasm-embedder.js +143 -0
  545. package/dist/src/security/builtin-aidefence.d.ts +34 -0
  546. package/dist/src/security/builtin-aidefence.js +86 -0
  547. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  548. package/dist/src/services/agentic-flow-bridge.js +95 -0
  549. package/dist/src/services/ai-job-dedup.d.ts +61 -0
  550. package/dist/src/services/ai-job-dedup.js +136 -0
  551. package/dist/src/services/checkpoint-gate.d.ts +140 -0
  552. package/dist/src/services/checkpoint-gate.js +223 -0
  553. package/dist/src/services/claim-service.d.ts +204 -0
  554. package/dist/src/services/claim-service.js +818 -0
  555. package/dist/src/services/config-file-manager.d.ts +37 -0
  556. package/dist/src/services/config-file-manager.js +224 -0
  557. package/dist/src/services/container-worker-pool.d.ts +204 -0
  558. package/dist/src/services/container-worker-pool.js +589 -0
  559. package/dist/src/services/daemon-autostart.d.ts +17 -0
  560. package/dist/src/services/daemon-autostart.js +102 -0
  561. package/dist/src/services/distill-oracle.d.ts +190 -0
  562. package/dist/src/services/distill-oracle.js +349 -0
  563. package/dist/src/services/distill-tuning.d.ts +111 -0
  564. package/dist/src/services/distill-tuning.js +510 -0
  565. package/dist/src/services/evolve-proof.d.ts +253 -0
  566. package/dist/src/services/evolve-proof.js +343 -0
  567. package/dist/src/services/fable-harness.d.ts +208 -0
  568. package/dist/src/services/fable-harness.js +388 -0
  569. package/dist/src/services/git-workspace-identity.d.ts +42 -0
  570. package/dist/src/services/git-workspace-identity.js +99 -0
  571. package/dist/src/services/global-ai-budget.d.ts +135 -0
  572. package/dist/src/services/global-ai-budget.js +415 -0
  573. package/dist/src/services/harness-benchmark.d.ts +68 -0
  574. package/dist/src/services/harness-benchmark.js +94 -0
  575. package/dist/src/services/harness-canary.d.ts +60 -0
  576. package/dist/src/services/harness-canary.js +69 -0
  577. package/dist/src/services/harness-corpus-harvester.d.ts +51 -0
  578. package/dist/src/services/harness-corpus-harvester.js +74 -0
  579. package/dist/src/services/harness-flywheel-generations.d.ts +115 -0
  580. package/dist/src/services/harness-flywheel-generations.js +360 -0
  581. package/dist/src/services/harness-flywheel-runtime.d.ts +25 -0
  582. package/dist/src/services/harness-flywheel-runtime.js +92 -0
  583. package/dist/src/services/harness-flywheel.d.ts +48 -0
  584. package/dist/src/services/harness-flywheel.js +207 -0
  585. package/dist/src/services/harness-frozen-eval.d.ts +22 -0
  586. package/dist/src/services/harness-frozen-eval.js +66 -0
  587. package/dist/src/services/harness-hosts.d.ts +40 -0
  588. package/dist/src/services/harness-hosts.js +88 -0
  589. package/dist/src/services/harness-improvement-ledger.d.ts +63 -0
  590. package/dist/src/services/harness-improvement-ledger.js +101 -0
  591. package/dist/src/services/harness-loop.d.ts +53 -0
  592. package/dist/src/services/harness-loop.js +85 -0
  593. package/dist/src/services/harness-qualification.d.ts +66 -0
  594. package/dist/src/services/harness-qualification.js +143 -0
  595. package/dist/src/services/harness-replay.d.ts +37 -0
  596. package/dist/src/services/harness-replay.js +92 -0
  597. package/dist/src/services/harness-verify.d.ts +33 -0
  598. package/dist/src/services/harness-verify.js +26 -0
  599. package/dist/src/services/harness-worker.d.ts +23 -0
  600. package/dist/src/services/harness-worker.js +66 -0
  601. package/dist/src/services/headless-worker-executor.d.ts +358 -0
  602. package/dist/src/services/headless-worker-executor.js +1269 -0
  603. package/dist/src/services/index.d.ts +13 -0
  604. package/dist/src/services/index.js +11 -0
  605. package/dist/src/services/memory-backup.d.ts +53 -0
  606. package/dist/src/services/memory-backup.js +198 -0
  607. package/dist/src/services/memory-distillation.d.ts +41 -0
  608. package/dist/src/services/memory-distillation.js +277 -0
  609. package/dist/src/services/native-training.d.ts +68 -0
  610. package/dist/src/services/native-training.js +141 -0
  611. package/dist/src/services/registry-api.d.ts +58 -0
  612. package/dist/src/services/registry-api.js +146 -0
  613. package/dist/src/services/repo-supervisor.d.ts +70 -0
  614. package/dist/src/services/repo-supervisor.js +228 -0
  615. package/dist/src/services/ruvector-training.d.ts +222 -0
  616. package/dist/src/services/ruvector-training.js +693 -0
  617. package/dist/src/services/swarm-memory-branches.d.ts +135 -0
  618. package/dist/src/services/swarm-memory-branches.js +213 -0
  619. package/dist/src/services/weight-eft.d.ts +305 -0
  620. package/dist/src/services/weight-eft.js +296 -0
  621. package/dist/src/services/worker-daemon.d.ts +439 -0
  622. package/dist/src/services/worker-daemon.js +1865 -0
  623. package/dist/src/services/worker-queue.d.ts +194 -0
  624. package/dist/src/services/worker-queue.js +513 -0
  625. package/dist/src/services/workspace-lease.d.ts +55 -0
  626. package/dist/src/services/workspace-lease.js +191 -0
  627. package/dist/src/suggest.d.ts +53 -0
  628. package/dist/src/suggest.js +200 -0
  629. package/dist/src/transfer/anonymization/index.d.ts +25 -0
  630. package/dist/src/transfer/anonymization/index.js +175 -0
  631. package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  632. package/dist/src/transfer/deploy-seraphine.js +205 -0
  633. package/dist/src/transfer/export.d.ts +25 -0
  634. package/dist/src/transfer/export.js +113 -0
  635. package/dist/src/transfer/index.d.ts +12 -0
  636. package/dist/src/transfer/index.js +31 -0
  637. package/dist/src/transfer/ipfs/client.d.ts +109 -0
  638. package/dist/src/transfer/ipfs/client.js +307 -0
  639. package/dist/src/transfer/ipfs/upload.d.ts +95 -0
  640. package/dist/src/transfer/ipfs/upload.js +413 -0
  641. package/dist/src/transfer/models/seraphine.d.ts +72 -0
  642. package/dist/src/transfer/models/seraphine.js +373 -0
  643. package/dist/src/transfer/serialization/cfp.d.ts +49 -0
  644. package/dist/src/transfer/serialization/cfp.js +183 -0
  645. package/dist/src/transfer/storage/gcs.d.ts +82 -0
  646. package/dist/src/transfer/storage/gcs.js +272 -0
  647. package/dist/src/transfer/storage/index.d.ts +6 -0
  648. package/dist/src/transfer/storage/index.js +6 -0
  649. package/dist/src/transfer/store/discovery.d.ts +84 -0
  650. package/dist/src/transfer/store/discovery.js +382 -0
  651. package/dist/src/transfer/store/download.d.ts +70 -0
  652. package/dist/src/transfer/store/download.js +334 -0
  653. package/dist/src/transfer/store/index.d.ts +84 -0
  654. package/dist/src/transfer/store/index.js +153 -0
  655. package/dist/src/transfer/store/publish.d.ts +76 -0
  656. package/dist/src/transfer/store/publish.js +294 -0
  657. package/dist/src/transfer/store/registry.d.ts +58 -0
  658. package/dist/src/transfer/store/registry.js +285 -0
  659. package/dist/src/transfer/store/search.d.ts +54 -0
  660. package/dist/src/transfer/store/search.js +232 -0
  661. package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  662. package/dist/src/transfer/store/tests/standalone-test.js +190 -0
  663. package/dist/src/transfer/store/types.d.ts +193 -0
  664. package/dist/src/transfer/store/types.js +6 -0
  665. package/dist/src/transfer/test-seraphine.d.ts +6 -0
  666. package/dist/src/transfer/test-seraphine.js +105 -0
  667. package/dist/src/transfer/tests/test-store.d.ts +7 -0
  668. package/dist/src/transfer/tests/test-store.js +214 -0
  669. package/dist/src/transfer/types.d.ts +245 -0
  670. package/dist/src/transfer/types.js +6 -0
  671. package/dist/src/types.d.ts +13 -0
  672. package/dist/src/types.js +13 -0
  673. package/dist/src/update/checker.d.ts +34 -0
  674. package/dist/src/update/checker.js +191 -0
  675. package/dist/src/update/executor.d.ts +33 -0
  676. package/dist/src/update/executor.js +217 -0
  677. package/dist/src/update/index.d.ts +33 -0
  678. package/dist/src/update/index.js +64 -0
  679. package/dist/src/update/rate-limiter.d.ts +20 -0
  680. package/dist/src/update/rate-limiter.js +96 -0
  681. package/dist/src/update/validator.d.ts +17 -0
  682. package/dist/src/update/validator.js +123 -0
  683. package/package.json +1 -1
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Terminal MCP Tools for CLI
3
+ *
4
+ * Terminal session management with real command execution.
5
+ */
6
+ import { getProjectCwd } from './types.js';
7
+ import { existsSync } from 'node:fs';
8
+ import { mkdirRestricted, readFileMaybeEncrypted, writeFileRestricted, } from '../fs-secure.js';
9
+ import { validateEnv, validateIdentifier, validatePath, validateText } from './validate-input.js';
10
+ import { join } from 'node:path';
11
+ import { execSync } from 'node:child_process';
12
+ // Storage paths
13
+ const STORAGE_DIR = '.claude-flow';
14
+ const TERMINAL_DIR = 'terminals';
15
+ const TERMINAL_FILE = 'store.json';
16
+ function getTerminalDir() {
17
+ return join(getProjectCwd(), STORAGE_DIR, TERMINAL_DIR);
18
+ }
19
+ function getTerminalPath() {
20
+ return join(getTerminalDir(), TERMINAL_FILE);
21
+ }
22
+ function ensureTerminalDir() {
23
+ const dir = getTerminalDir();
24
+ if (!existsSync(dir)) {
25
+ mkdirRestricted(dir);
26
+ }
27
+ }
28
+ function loadTerminalStore() {
29
+ try {
30
+ const path = getTerminalPath();
31
+ if (existsSync(path)) {
32
+ // ADR-096 Phase 3: readFileMaybeEncrypted handles both legacy
33
+ // plaintext stores and post-migration encrypted ones via the RFE1
34
+ // magic-byte sniff.
35
+ return JSON.parse(readFileMaybeEncrypted(path, 'utf-8'));
36
+ }
37
+ }
38
+ catch {
39
+ // Return empty store
40
+ }
41
+ return { sessions: {}, version: '3.0.0' };
42
+ }
43
+ function saveTerminalStore(store) {
44
+ ensureTerminalDir();
45
+ // audit_1776853149979: terminal command history can contain credentials
46
+ // pasted into commands; restrict to owner read/write (mode 0600).
47
+ // ADR-096 Phase 3: opt-in AES-256-GCM encrypt-at-rest. Honored only
48
+ // when CLAUDE_FLOW_ENCRYPT_AT_REST is set; otherwise legacy plaintext
49
+ // path runs unchanged.
50
+ writeFileRestricted(getTerminalPath(), JSON.stringify(store, null, 2), { encrypt: true });
51
+ }
52
+ export const terminalTools = [
53
+ {
54
+ name: 'terminal_create',
55
+ description: 'Create a new terminal session Use when native Bash is wrong because you need a persistent terminal session across turns/agents with output capture and replay. For one-shot shell commands, native Bash is fine.',
56
+ category: 'terminal',
57
+ inputSchema: {
58
+ type: 'object',
59
+ properties: {
60
+ name: { type: 'string', description: 'Session name' },
61
+ workingDir: { type: 'string', description: 'Working directory' },
62
+ env: { type: 'object', description: 'Environment variables' },
63
+ },
64
+ },
65
+ handler: async (input) => {
66
+ // Validate user-provided input (#1425, audit_1776853149979)
67
+ if (input.name) {
68
+ const v = validateText(input.name, 'name', 256);
69
+ if (!v.valid)
70
+ return { success: false, error: v.error };
71
+ }
72
+ if (input.workingDir) {
73
+ const v = validatePath(input.workingDir, 'workingDir');
74
+ if (!v.valid)
75
+ return { success: false, error: v.error };
76
+ }
77
+ // env is merged into execSync's process env on every command; reject
78
+ // loader/runtime hijack vars (LD_PRELOAD, NODE_OPTIONS, …) and enforce
79
+ // POSIX-shaped names + null-byte-free values.
80
+ const vEnv = validateEnv(input.env, 'env');
81
+ if (!vEnv.valid)
82
+ return { success: false, error: vEnv.error };
83
+ const store = loadTerminalStore();
84
+ const id = `term-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
85
+ const session = {
86
+ id,
87
+ name: input.name || `Terminal ${Object.keys(store.sessions).length + 1}`,
88
+ status: 'active',
89
+ createdAt: new Date().toISOString(),
90
+ lastActivity: new Date().toISOString(),
91
+ workingDir: input.workingDir || getProjectCwd(),
92
+ history: [],
93
+ env: vEnv.sanitized,
94
+ };
95
+ store.sessions[id] = session;
96
+ saveTerminalStore(store);
97
+ return {
98
+ success: true,
99
+ sessionId: id,
100
+ name: session.name,
101
+ status: session.status,
102
+ workingDir: session.workingDir,
103
+ createdAt: session.createdAt,
104
+ };
105
+ },
106
+ },
107
+ {
108
+ name: 'terminal_execute',
109
+ description: 'Execute a command in a terminal session Use when native Bash is wrong because you need a persistent terminal session across turns/agents with output capture and replay. For one-shot shell commands, native Bash is fine.',
110
+ category: 'terminal',
111
+ inputSchema: {
112
+ type: 'object',
113
+ properties: {
114
+ sessionId: { type: 'string', description: 'Terminal session ID' },
115
+ command: { type: 'string', description: 'Command to execute' },
116
+ timeout: { type: 'number', description: 'Command timeout in ms' },
117
+ captureOutput: { type: 'boolean', description: 'Capture command output' },
118
+ },
119
+ required: ['command'],
120
+ },
121
+ handler: async (input) => {
122
+ // Validate user-provided input (#1425)
123
+ const vCmd = validateText(input.command, 'command', 10_000);
124
+ if (!vCmd.valid)
125
+ return { success: false, error: vCmd.error };
126
+ if (input.sessionId) {
127
+ const v = validateIdentifier(input.sessionId, 'sessionId');
128
+ if (!v.valid)
129
+ return { success: false, error: v.error };
130
+ }
131
+ const store = loadTerminalStore();
132
+ const sessionId = input.sessionId;
133
+ const command = input.command;
134
+ // Find or create default session
135
+ let session = sessionId ? store.sessions[sessionId] : Object.values(store.sessions).find(s => s.status === 'active');
136
+ if (!session) {
137
+ // Create default session
138
+ const id = `term-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
139
+ session = {
140
+ id,
141
+ name: 'Default Terminal',
142
+ status: 'active',
143
+ createdAt: new Date().toISOString(),
144
+ lastActivity: new Date().toISOString(),
145
+ workingDir: getProjectCwd(),
146
+ history: [],
147
+ env: {},
148
+ };
149
+ store.sessions[id] = session;
150
+ }
151
+ const timeout = input.timeout || 30_000;
152
+ const cwd = session.workingDir || getProjectCwd();
153
+ const startTime = Date.now();
154
+ let output;
155
+ let exitCode;
156
+ try {
157
+ output = execSync(command, {
158
+ cwd,
159
+ encoding: 'utf-8',
160
+ timeout,
161
+ maxBuffer: 5 * 1024 * 1024,
162
+ stdio: ['pipe', 'pipe', 'pipe'],
163
+ env: { ...process.env, ...session.env },
164
+ });
165
+ exitCode = 0;
166
+ }
167
+ catch (err) {
168
+ output = (err.stdout || '') + (err.stderr ? `\n[stderr] ${err.stderr}` : '');
169
+ exitCode = err.status ?? 1;
170
+ }
171
+ const duration = Date.now() - startTime;
172
+ const timestamp = new Date().toISOString();
173
+ // Record in history
174
+ session.history.push({
175
+ command,
176
+ output,
177
+ timestamp,
178
+ exitCode,
179
+ });
180
+ session.lastActivity = timestamp;
181
+ session.status = 'active';
182
+ saveTerminalStore(store);
183
+ return {
184
+ success: exitCode === 0,
185
+ sessionId: session.id,
186
+ command,
187
+ output,
188
+ exitCode,
189
+ executedAt: timestamp,
190
+ duration,
191
+ };
192
+ },
193
+ },
194
+ {
195
+ name: 'terminal_list',
196
+ description: 'List all terminal sessions Use when native Bash is wrong because you need a persistent terminal session across turns/agents with output capture and replay. For one-shot shell commands, native Bash is fine.',
197
+ category: 'terminal',
198
+ inputSchema: {
199
+ type: 'object',
200
+ properties: {
201
+ status: { type: 'string', enum: ['all', 'active', 'idle', 'closed'], description: 'Filter by status' },
202
+ includeHistory: { type: 'boolean', description: 'Include command history' },
203
+ },
204
+ },
205
+ handler: async (input) => {
206
+ const store = loadTerminalStore();
207
+ let sessions = Object.values(store.sessions);
208
+ if (input.status && input.status !== 'all') {
209
+ sessions = sessions.filter(s => s.status === input.status);
210
+ }
211
+ return {
212
+ sessions: sessions.map(s => ({
213
+ id: s.id,
214
+ name: s.name,
215
+ status: s.status,
216
+ workingDir: s.workingDir,
217
+ createdAt: s.createdAt,
218
+ lastActivity: s.lastActivity,
219
+ historyLength: s.history.length,
220
+ ...(input.includeHistory ? { history: s.history.slice(-10) } : {}),
221
+ })),
222
+ total: sessions.length,
223
+ active: sessions.filter(s => s.status === 'active').length,
224
+ };
225
+ },
226
+ },
227
+ {
228
+ name: 'terminal_close',
229
+ description: 'Close a terminal session Use when native Bash is wrong because you need a persistent terminal session across turns/agents with output capture and replay. For one-shot shell commands, native Bash is fine.',
230
+ category: 'terminal',
231
+ inputSchema: {
232
+ type: 'object',
233
+ properties: {
234
+ sessionId: { type: 'string', description: 'Session ID to close' },
235
+ force: { type: 'boolean', description: 'Force close' },
236
+ },
237
+ required: ['sessionId'],
238
+ },
239
+ handler: async (input) => {
240
+ // Validate user-provided input (#1425)
241
+ const vId = validateIdentifier(input.sessionId, 'sessionId');
242
+ if (!vId.valid)
243
+ return { success: false, error: vId.error };
244
+ const store = loadTerminalStore();
245
+ const sessionId = input.sessionId;
246
+ const session = store.sessions[sessionId];
247
+ if (!session) {
248
+ return { success: false, error: 'Session not found' };
249
+ }
250
+ session.status = 'closed';
251
+ saveTerminalStore(store);
252
+ return {
253
+ success: true,
254
+ sessionId,
255
+ closedAt: new Date().toISOString(),
256
+ };
257
+ },
258
+ },
259
+ {
260
+ name: 'terminal_history',
261
+ description: 'Get command history for a terminal session Use when native Bash is wrong because you need a persistent terminal session across turns/agents with output capture and replay. For one-shot shell commands, native Bash is fine.',
262
+ category: 'terminal',
263
+ inputSchema: {
264
+ type: 'object',
265
+ properties: {
266
+ sessionId: { type: 'string', description: 'Session ID' },
267
+ limit: { type: 'number', description: 'Number of entries to return' },
268
+ offset: { type: 'number', description: 'Offset from latest' },
269
+ },
270
+ },
271
+ handler: async (input) => {
272
+ // Validate user-provided input (#1425)
273
+ if (input.sessionId) {
274
+ const v = validateIdentifier(input.sessionId, 'sessionId');
275
+ if (!v.valid)
276
+ return { success: false, error: v.error };
277
+ }
278
+ const store = loadTerminalStore();
279
+ const sessionId = input.sessionId;
280
+ const limit = input.limit || 50;
281
+ const offset = input.offset || 0;
282
+ if (sessionId) {
283
+ const session = store.sessions[sessionId];
284
+ if (!session) {
285
+ return { success: false, error: 'Session not found' };
286
+ }
287
+ const history = session.history.slice(-(limit + offset), offset ? -offset : undefined);
288
+ return {
289
+ sessionId,
290
+ history,
291
+ total: session.history.length,
292
+ };
293
+ }
294
+ // Return combined history from all sessions
295
+ const allHistory = Object.values(store.sessions)
296
+ .flatMap(s => s.history.map(h => ({ ...h, sessionId: s.id })))
297
+ .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
298
+ .slice(offset, offset + limit);
299
+ return {
300
+ history: allHistory,
301
+ total: allHistory.length,
302
+ };
303
+ },
304
+ },
305
+ ];
306
+ //# sourceMappingURL=terminal-tools.js.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Testgen MCP Tools — Test-Driven Repair surface.
3
+ *
4
+ * Exposes `ruflo-testgen` plugin scripts as first-class MCP tools so
5
+ * agents (Claude Code, Codex, etc.) can invoke them programmatically.
6
+ *
7
+ * Current surface (one tool, narrow on purpose — Conformant mode follows
8
+ * in a separate ADR):
9
+ *
10
+ * - testgen_tdd_repair Test-Driven Repair via headless `claude -p`
11
+ * (read failing test → fix source → verify)
12
+ *
13
+ * Inspired by agent-harness-generator/packages/darwin-mode ADR-175.
14
+ *
15
+ * ARCHITECTURAL CONSTRAINT (mirrors metaharness-tools.ts)
16
+ * Zero static `ruflo-testgen/*` imports. All script invocation stays
17
+ * behind a subprocess bridge. When the plugin isn't reachable at
18
+ * runtime, the tool returns `{success: true, degraded: true,
19
+ * reason: 'plugin-not-found'}` and exits 0 — same posture as
20
+ * metaharness-tools so callers see one contract.
21
+ *
22
+ * @module @claude-flow/cli/mcp-tools/testgen
23
+ */
24
+ import type { MCPTool } from './types.js';
25
+ export declare const testgenTools: MCPTool[];
26
+ //# sourceMappingURL=testgen-tools.d.ts.map
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Testgen MCP Tools — Test-Driven Repair surface.
3
+ *
4
+ * Exposes `ruflo-testgen` plugin scripts as first-class MCP tools so
5
+ * agents (Claude Code, Codex, etc.) can invoke them programmatically.
6
+ *
7
+ * Current surface (one tool, narrow on purpose — Conformant mode follows
8
+ * in a separate ADR):
9
+ *
10
+ * - testgen_tdd_repair Test-Driven Repair via headless `claude -p`
11
+ * (read failing test → fix source → verify)
12
+ *
13
+ * Inspired by agent-harness-generator/packages/darwin-mode ADR-175.
14
+ *
15
+ * ARCHITECTURAL CONSTRAINT (mirrors metaharness-tools.ts)
16
+ * Zero static `ruflo-testgen/*` imports. All script invocation stays
17
+ * behind a subprocess bridge. When the plugin isn't reachable at
18
+ * runtime, the tool returns `{success: true, degraded: true,
19
+ * reason: 'plugin-not-found'}` and exits 0 — same posture as
20
+ * metaharness-tools so callers see one contract.
21
+ *
22
+ * @module @claude-flow/cli/mcp-tools/testgen
23
+ */
24
+ import { spawn } from 'node:child_process';
25
+ import { existsSync } from 'node:fs';
26
+ import { dirname, join, resolve } from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
28
+ import { getProjectCwd } from './types.js';
29
+ const __filename = fileURLToPath(import.meta.url);
30
+ const __dirname = dirname(__filename);
31
+ /**
32
+ * Locate the ruflo-testgen plugin's scripts directory.
33
+ *
34
+ * Mirrors `metaharness-tools.ts::locatePluginScripts()` strategy but
35
+ * targets the testgen plugin. Walks up from this module's own location
36
+ * (covers npx + global install) then falls back to cwd-walks. We probe
37
+ * for `tdd-repair/tdd-repair.mjs` (the only script in this surface
38
+ * today) — when that lands at a candidate path, we've found the dir.
39
+ */
40
+ function locateTestgenScripts() {
41
+ const candidates = [];
42
+ let p = resolve(__dirname);
43
+ for (let i = 0; i < 8; i++) {
44
+ candidates.push(join(p, 'plugins', 'ruflo-testgen', 'scripts'));
45
+ candidates.push(join(p, '..', 'plugins', 'ruflo-testgen', 'scripts'));
46
+ p = dirname(p);
47
+ }
48
+ const cwd = getProjectCwd();
49
+ candidates.push(join(cwd, 'plugins', 'ruflo-testgen', 'scripts'));
50
+ candidates.push(join(cwd, 'node_modules', '@claude-flow', 'cli', 'plugins', 'ruflo-testgen', 'scripts'));
51
+ for (const c of candidates) {
52
+ if (existsSync(join(c, 'tdd-repair', 'tdd-repair.mjs')))
53
+ return c;
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * Run a testgen plugin script with the same success-semantics contract
59
+ * as metaharness-tools.ts (exit 0 ⇒ success: true even if degraded).
60
+ */
61
+ function runTestgenScript(scriptName, args) {
62
+ return new Promise((resolve) => {
63
+ const dir = locateTestgenScripts();
64
+ if (!dir) {
65
+ resolve({
66
+ exitCode: 0,
67
+ json: { degraded: true, reason: 'plugin-not-found' },
68
+ degraded: true,
69
+ success: true,
70
+ });
71
+ return;
72
+ }
73
+ const scriptPath = join(dir, scriptName);
74
+ const p = spawn('node', [scriptPath, ...args], {
75
+ stdio: ['ignore', 'pipe', 'pipe'],
76
+ env: process.env,
77
+ });
78
+ let stdout = '';
79
+ p.stdout?.on('data', (d) => { stdout += d.toString(); });
80
+ p.stderr?.on('data', () => { });
81
+ // 20 min hard ceiling (tdd-repair has its own 15 min cap; we add 5 min slack)
82
+ const timer = setTimeout(() => { try {
83
+ p.kill('SIGTERM');
84
+ }
85
+ catch { /* ignore */ } }, 20 * 60_000);
86
+ p.on('close', (code) => {
87
+ clearTimeout(timer);
88
+ let json = null;
89
+ const m = /\{[\s\S]*\}/.exec(stdout);
90
+ if (m) {
91
+ try {
92
+ json = JSON.parse(m[0]);
93
+ }
94
+ catch { /* leave null */ }
95
+ }
96
+ const looksDegraded = !!(json && typeof json === 'object' && json.data?.reason === 'plugin-not-found');
97
+ const exitCode = code ?? 0;
98
+ resolve({
99
+ exitCode,
100
+ json,
101
+ degraded: looksDegraded,
102
+ success: exitCode === 0,
103
+ });
104
+ });
105
+ p.on('error', () => {
106
+ clearTimeout(timer);
107
+ resolve({
108
+ exitCode: 127,
109
+ json: { degraded: true, reason: 'spawn-failed' },
110
+ degraded: true,
111
+ success: false,
112
+ });
113
+ });
114
+ });
115
+ }
116
+ const TESTGEN_SUCCESS_SEMANTIC = 'Returns `{success, data, degraded, exitCode}`. success=true when the script ran as designed (including graceful-degradation payloads); ' +
117
+ 'success=false when the test could not be repaired within --max-attempts (exit 1) or on config error (exit 2). ' +
118
+ 'Reads data.repaired for the actual outcome — true means the test now passes, false means it does not.';
119
+ export const testgenTools = [
120
+ {
121
+ name: 'testgen_tdd_repair',
122
+ description: 'ADR-175-inspired Test-Driven Repair. Use when you have a failing test and want a verified, bounded-cost fix. Spawns a bounded headless `claude -p` (Read/Edit/Bash only, --max-budget-usd capped) ' +
123
+ 'that makes the test pass without modifying it. The test\'s exit code IS the fitness function — no LLM-as-judge. ' +
124
+ 'Use when you have a failing test and want a verified fix. Skipping this and asking an agent to "fix the bug" is wrong because (a) you lose the bounded-cost guarantee, ' +
125
+ '(b) you lose the strict no-test-modification constraint, (c) you lose the verify-on-finish step. ' +
126
+ 'REQUIRES --confirm — without it returns a dry-run plan. Cost ladder: Haiku $0.02-0.20, Sonnet $0.30-2.00, Opus $1.50-8.00 per attempt. ' + TESTGEN_SUCCESS_SEMANTIC,
127
+ category: 'testgen',
128
+ inputSchema: {
129
+ type: 'object',
130
+ properties: {
131
+ repo: { type: 'string', description: 'Absolute path to the repo root (default: cwd)', default: '.' },
132
+ test: { type: 'string', description: 'Relative path (from repo root) to the failing test file. REQUIRED.' },
133
+ testCommand: { type: 'string', description: 'Shell command to run the test (e.g. `npx vitest run tests/auth.test.ts`). REQUIRED.' },
134
+ maxAttempts: { type: 'number', description: '1..5 (ruflo cap). Each attempt gets budgetUsd/maxAttempts of the total budget.', default: 1 },
135
+ budgetUsd: { type: 'number', description: 'Total cost ceiling across all attempts. Hard cap — claude exits when reached.', default: 5.0 },
136
+ model: { type: 'string', enum: ['haiku', 'sonnet', 'opus'], description: 'Claude model tier. Haiku for simple bugs (default); Sonnet for multi-file; Opus rarely worth it.', default: 'haiku' },
137
+ confirm: { type: 'boolean', description: 'REQUIRED to actually run. Without it returns a dry-run plan.', default: false },
138
+ noTestOracle: { type: 'boolean', description: 'Conformant mode (agent writes its own repro). NOT YET IMPLEMENTED — returns config error.', default: false },
139
+ timeoutMs: { type: 'number', description: 'Hard wall-clock cap. Default 15 min.', default: 900000 },
140
+ },
141
+ required: ['test', 'testCommand'],
142
+ },
143
+ handler: async (input) => {
144
+ const args = [];
145
+ if (input.repo)
146
+ args.push('--repo', String(input.repo));
147
+ if (input.test)
148
+ args.push('--test', String(input.test));
149
+ if (input.testCommand)
150
+ args.push('--test-command', String(input.testCommand));
151
+ if (input.maxAttempts !== undefined)
152
+ args.push('--max-attempts', String(input.maxAttempts));
153
+ if (input.budgetUsd !== undefined)
154
+ args.push('--budget', String(input.budgetUsd));
155
+ if (input.model)
156
+ args.push('--model', String(input.model));
157
+ if (input.confirm === true)
158
+ args.push('--confirm');
159
+ if (input.noTestOracle === true)
160
+ args.push('--no-test-oracle');
161
+ if (input.timeoutMs !== undefined)
162
+ args.push('--timeout-ms', String(input.timeoutMs));
163
+ const r = await runTestgenScript('tdd-repair/tdd-repair.mjs', args);
164
+ return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
165
+ },
166
+ },
167
+ ];
168
+ //# sourceMappingURL=testgen-tools.js.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Tool-loop circuit breaker (hermes-agent tool_guardrails pattern).
3
+ *
4
+ * Detects an agent stuck repeating the same failing command — a real silent
5
+ * failure mode where a loop burns turns with no signal. This is ORTHOGONAL to
6
+ * the security `tool-output-guardrail` (which detects indirect prompt injection
7
+ * in tool *output*); this one watches the agent's own *call* pattern.
8
+ *
9
+ * Design (deterministic, in-memory, bounded):
10
+ * - `recordCommandOutcome` (called by post-command) appends (command, success)
11
+ * to a small ring buffer.
12
+ * - `checkCommandLoop` (called by pre-command) returns a verdict for a command
13
+ * about to run, based on its recent consecutive-failure streak.
14
+ * - Verdict is advisory by default (`warn`); callers decide whether to block.
15
+ * An orchestration layer that doesn't own the UI should not hard-stop.
16
+ */
17
+ export type LoopVerdict = 'allow' | 'warn' | 'block';
18
+ /** Record a command's outcome. Called from the post-command hook. */
19
+ export declare function recordCommandOutcome(command: string, success: boolean): void;
20
+ /**
21
+ * Verdict for a command about to execute. Called from the pre-command hook.
22
+ * Returns the verdict, the failure streak, and a recovery hint when looping.
23
+ */
24
+ export declare function checkCommandLoop(command: string): {
25
+ verdict: LoopVerdict;
26
+ consecutiveFailures: number;
27
+ hint?: string;
28
+ };
29
+ /** Test/reset helper — clears the in-memory history. */
30
+ export declare function _resetLoopHistory(): void;
31
+ //# sourceMappingURL=tool-loop-guardrail.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Tool-loop circuit breaker (hermes-agent tool_guardrails pattern).
3
+ *
4
+ * Detects an agent stuck repeating the same failing command — a real silent
5
+ * failure mode where a loop burns turns with no signal. This is ORTHOGONAL to
6
+ * the security `tool-output-guardrail` (which detects indirect prompt injection
7
+ * in tool *output*); this one watches the agent's own *call* pattern.
8
+ *
9
+ * Design (deterministic, in-memory, bounded):
10
+ * - `recordCommandOutcome` (called by post-command) appends (command, success)
11
+ * to a small ring buffer.
12
+ * - `checkCommandLoop` (called by pre-command) returns a verdict for a command
13
+ * about to run, based on its recent consecutive-failure streak.
14
+ * - Verdict is advisory by default (`warn`); callers decide whether to block.
15
+ * An orchestration layer that doesn't own the UI should not hard-stop.
16
+ */
17
+ const MAX_HISTORY = 64;
18
+ const history = [];
19
+ /** Consecutive-failure thresholds for the same command (exact match). */
20
+ const WARN_AT = 3;
21
+ const BLOCK_AT = 5;
22
+ function normalize(command) {
23
+ return command.trim().replace(/\s+/g, ' ');
24
+ }
25
+ /** Record a command's outcome. Called from the post-command hook. */
26
+ export function recordCommandOutcome(command, success) {
27
+ history.push({ command: normalize(command), success, at: history.length });
28
+ if (history.length > MAX_HISTORY)
29
+ history.shift();
30
+ }
31
+ /** Count the trailing run of consecutive failures of `command` (exact match),
32
+ * stopping at the first success of that command or a gap. */
33
+ function consecutiveFailures(command) {
34
+ const norm = normalize(command);
35
+ let streak = 0;
36
+ for (let i = history.length - 1; i >= 0; i--) {
37
+ if (history[i].command !== norm)
38
+ continue; // ignore interleaved other commands
39
+ if (history[i].success)
40
+ break; // a success breaks the streak
41
+ streak++;
42
+ }
43
+ return streak;
44
+ }
45
+ /**
46
+ * Verdict for a command about to execute. Called from the pre-command hook.
47
+ * Returns the verdict, the failure streak, and a recovery hint when looping.
48
+ */
49
+ export function checkCommandLoop(command) {
50
+ const fails = consecutiveFailures(command);
51
+ if (fails >= BLOCK_AT) {
52
+ return {
53
+ verdict: 'block',
54
+ consecutiveFailures: fails,
55
+ hint: `This exact command has failed ${fails}× in a row. Stop repeating it — inspect state first (e.g. \`pwd && ls -la\`), change the approach, or ask for help.`,
56
+ };
57
+ }
58
+ if (fails >= WARN_AT) {
59
+ return {
60
+ verdict: 'warn',
61
+ consecutiveFailures: fails,
62
+ hint: `This command has failed ${fails}× in a row. Before retrying, verify preconditions (paths, args, prior step output) rather than re-running the same call.`,
63
+ };
64
+ }
65
+ return { verdict: 'allow', consecutiveFailures: fails };
66
+ }
67
+ /** Test/reset helper — clears the in-memory history. */
68
+ export function _resetLoopHistory() {
69
+ history.length = 0;
70
+ }
71
+ //# sourceMappingURL=tool-loop-guardrail.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Transfer MCP Tools
3
+ * Pattern and plugin sharing via IPFS-based decentralized registry
4
+ *
5
+ * @module @claude-flow/cli/mcp-tools/transfer-tools
6
+ * @version 3.0.0
7
+ */
8
+ import type { MCPTool } from './types.js';
9
+ /**
10
+ * Transfer MCP tools for pattern export, import, anonymization, and sharing
11
+ */
12
+ export declare const transferTools: MCPTool[];
13
+ export default transferTools;
14
+ //# sourceMappingURL=transfer-tools.d.ts.map