@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,863 @@
1
+ /**
2
+ * Claims MCP Tools for CLI
3
+ *
4
+ * Implements MCP tools for ADR-016: Collaborative Issue Claims
5
+ * Provides programmatic access to claim operations for MCP clients.
6
+ *
7
+ * @module @claude-flow/cli/mcp-tools/claims
8
+ */
9
+ import { validateIdentifier, validateText } from './validate-input.js';
10
+ // File-based persistence
11
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
12
+ import { join, resolve } from 'path';
13
+ const CLAIMS_DIR = '.claude-flow/claims';
14
+ const CLAIMS_FILE = 'claims.json';
15
+ function getClaimsPath() {
16
+ return resolve(join(CLAIMS_DIR, CLAIMS_FILE));
17
+ }
18
+ function ensureClaimsDir() {
19
+ const dir = resolve(CLAIMS_DIR);
20
+ if (!existsSync(dir)) {
21
+ mkdirSync(dir, { recursive: true });
22
+ }
23
+ }
24
+ function loadClaims() {
25
+ try {
26
+ const path = getClaimsPath();
27
+ if (existsSync(path)) {
28
+ return JSON.parse(readFileSync(path, 'utf-8'));
29
+ }
30
+ }
31
+ catch {
32
+ // Return empty store on error
33
+ }
34
+ return { claims: {}, stealable: {}, contests: {} };
35
+ }
36
+ function saveClaims(store) {
37
+ ensureClaimsDir();
38
+ writeFileSync(getClaimsPath(), JSON.stringify(store, null, 2), 'utf-8');
39
+ }
40
+ function formatClaimant(claimant) {
41
+ return claimant.type === 'human'
42
+ ? `human:${claimant.userId}:${claimant.name}`
43
+ : `agent:${claimant.agentId}:${claimant.agentType}`;
44
+ }
45
+ function parseClaimant(str) {
46
+ const parts = str.split(':');
47
+ if (parts[0] === 'human' && parts.length >= 3) {
48
+ return { type: 'human', userId: parts[1], name: parts.slice(2).join(':') };
49
+ }
50
+ else if (parts[0] === 'agent' && parts.length >= 3) {
51
+ return { type: 'agent', agentId: parts[1], agentType: parts[2] };
52
+ }
53
+ return null;
54
+ }
55
+ export const claimsTools = [
56
+ {
57
+ name: 'claims_claim',
58
+ description: 'Claim an issue for work (human or agent) Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
59
+ category: 'claims',
60
+ inputSchema: {
61
+ type: 'object',
62
+ properties: {
63
+ issueId: {
64
+ type: 'string',
65
+ description: 'Issue ID or GitHub issue number',
66
+ },
67
+ claimant: {
68
+ type: 'string',
69
+ description: 'Claimant identifier (e.g., "human:user-1:Alice" or "agent:coder-1:coder")',
70
+ },
71
+ context: {
72
+ type: 'string',
73
+ description: 'Optional context about the work approach',
74
+ },
75
+ },
76
+ required: ['issueId', 'claimant'],
77
+ },
78
+ handler: async (input) => {
79
+ const issueId = input.issueId;
80
+ const claimantStr = input.claimant;
81
+ const context = input.context;
82
+ {
83
+ const v = validateIdentifier(issueId, 'issueId');
84
+ if (!v.valid)
85
+ return { success: false, error: v.error };
86
+ }
87
+ {
88
+ const v = validateText(claimantStr, 'claimant');
89
+ if (!v.valid)
90
+ return { success: false, error: v.error };
91
+ }
92
+ if (context) {
93
+ const v = validateText(context, 'context');
94
+ if (!v.valid)
95
+ return { success: false, error: v.error };
96
+ }
97
+ const claimant = parseClaimant(claimantStr);
98
+ if (!claimant) {
99
+ return { success: false, error: 'Invalid claimant format. Use "human:userId:name" or "agent:agentId:agentType"' };
100
+ }
101
+ const store = loadClaims();
102
+ // Check if already claimed
103
+ if (store.claims[issueId]) {
104
+ const existing = store.claims[issueId];
105
+ return {
106
+ success: false,
107
+ error: `Issue already claimed by ${formatClaimant(existing.claimant)}`,
108
+ existingClaim: existing,
109
+ };
110
+ }
111
+ const now = new Date().toISOString();
112
+ const claim = {
113
+ issueId,
114
+ claimant,
115
+ claimedAt: now,
116
+ status: 'active',
117
+ statusChangedAt: now,
118
+ progress: 0,
119
+ context,
120
+ };
121
+ store.claims[issueId] = claim;
122
+ saveClaims(store);
123
+ return {
124
+ success: true,
125
+ claim,
126
+ message: `Issue ${issueId} claimed by ${formatClaimant(claimant)}`,
127
+ };
128
+ },
129
+ },
130
+ {
131
+ name: 'claims_release',
132
+ description: 'Release a claim on an issue Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
133
+ category: 'claims',
134
+ inputSchema: {
135
+ type: 'object',
136
+ properties: {
137
+ issueId: {
138
+ type: 'string',
139
+ description: 'Issue ID to release',
140
+ },
141
+ claimant: {
142
+ type: 'string',
143
+ description: 'Claimant identifier (must match current owner)',
144
+ },
145
+ reason: {
146
+ type: 'string',
147
+ description: 'Reason for releasing',
148
+ },
149
+ },
150
+ required: ['issueId', 'claimant'],
151
+ },
152
+ handler: async (input) => {
153
+ const issueId = input.issueId;
154
+ const claimantStr = input.claimant;
155
+ const reason = input.reason;
156
+ {
157
+ const v = validateIdentifier(issueId, 'issueId');
158
+ if (!v.valid)
159
+ return { success: false, error: v.error };
160
+ }
161
+ {
162
+ const v = validateText(claimantStr, 'claimant');
163
+ if (!v.valid)
164
+ return { success: false, error: v.error };
165
+ }
166
+ if (reason) {
167
+ const v = validateText(reason, 'reason');
168
+ if (!v.valid)
169
+ return { success: false, error: v.error };
170
+ }
171
+ const claimant = parseClaimant(claimantStr);
172
+ if (!claimant) {
173
+ return { success: false, error: 'Invalid claimant format' };
174
+ }
175
+ const store = loadClaims();
176
+ const claim = store.claims[issueId];
177
+ if (!claim) {
178
+ return { success: false, error: 'Issue is not claimed' };
179
+ }
180
+ // Verify ownership
181
+ if (formatClaimant(claim.claimant) !== formatClaimant(claimant)) {
182
+ return { success: false, error: 'Only the current claimant can release' };
183
+ }
184
+ delete store.claims[issueId];
185
+ delete store.stealable[issueId];
186
+ saveClaims(store);
187
+ return {
188
+ success: true,
189
+ message: `Issue ${issueId} released`,
190
+ reason,
191
+ previousClaim: claim,
192
+ };
193
+ },
194
+ },
195
+ {
196
+ name: 'claims_handoff',
197
+ description: 'Request handoff of an issue to another claimant Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
198
+ category: 'claims',
199
+ inputSchema: {
200
+ type: 'object',
201
+ properties: {
202
+ issueId: {
203
+ type: 'string',
204
+ description: 'Issue ID to handoff',
205
+ },
206
+ from: {
207
+ type: 'string',
208
+ description: 'Current claimant identifier',
209
+ },
210
+ to: {
211
+ type: 'string',
212
+ description: 'Target claimant identifier',
213
+ },
214
+ reason: {
215
+ type: 'string',
216
+ description: 'Reason for handoff',
217
+ },
218
+ progress: {
219
+ type: 'number',
220
+ description: 'Current progress percentage (0-100)',
221
+ },
222
+ },
223
+ required: ['issueId', 'from', 'to'],
224
+ },
225
+ handler: async (input) => {
226
+ const issueId = input.issueId;
227
+ const fromStr = input.from;
228
+ const toStr = input.to;
229
+ const reason = input.reason;
230
+ const progress = input.progress || 0;
231
+ {
232
+ const v = validateIdentifier(issueId, 'issueId');
233
+ if (!v.valid)
234
+ return { success: false, error: v.error };
235
+ }
236
+ {
237
+ const v = validateText(fromStr, 'from');
238
+ if (!v.valid)
239
+ return { success: false, error: v.error };
240
+ }
241
+ {
242
+ const v = validateText(toStr, 'to');
243
+ if (!v.valid)
244
+ return { success: false, error: v.error };
245
+ }
246
+ if (reason) {
247
+ const v = validateText(reason, 'reason');
248
+ if (!v.valid)
249
+ return { success: false, error: v.error };
250
+ }
251
+ const from = parseClaimant(fromStr);
252
+ const to = parseClaimant(toStr);
253
+ if (!from || !to) {
254
+ return { success: false, error: 'Invalid claimant format' };
255
+ }
256
+ const store = loadClaims();
257
+ const claim = store.claims[issueId];
258
+ if (!claim) {
259
+ return { success: false, error: 'Issue is not claimed' };
260
+ }
261
+ if (formatClaimant(claim.claimant) !== formatClaimant(from)) {
262
+ return { success: false, error: 'Only the current claimant can request handoff' };
263
+ }
264
+ const now = new Date().toISOString();
265
+ claim.status = 'handoff-pending';
266
+ claim.statusChangedAt = now;
267
+ claim.handoffTo = to;
268
+ claim.handoffReason = reason;
269
+ claim.progress = progress;
270
+ store.claims[issueId] = claim;
271
+ saveClaims(store);
272
+ return {
273
+ success: true,
274
+ claim,
275
+ message: `Handoff requested from ${formatClaimant(from)} to ${formatClaimant(to)}`,
276
+ };
277
+ },
278
+ },
279
+ {
280
+ name: 'claims_accept-handoff',
281
+ description: 'Accept a pending handoff Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
282
+ category: 'claims',
283
+ inputSchema: {
284
+ type: 'object',
285
+ properties: {
286
+ issueId: {
287
+ type: 'string',
288
+ description: 'Issue ID with pending handoff',
289
+ },
290
+ claimant: {
291
+ type: 'string',
292
+ description: 'Claimant accepting the handoff',
293
+ },
294
+ },
295
+ required: ['issueId', 'claimant'],
296
+ },
297
+ handler: async (input) => {
298
+ const issueId = input.issueId;
299
+ const claimantStr = input.claimant;
300
+ {
301
+ const v = validateIdentifier(issueId, 'issueId');
302
+ if (!v.valid)
303
+ return { success: false, error: v.error };
304
+ }
305
+ {
306
+ const v = validateText(claimantStr, 'claimant');
307
+ if (!v.valid)
308
+ return { success: false, error: v.error };
309
+ }
310
+ const claimant = parseClaimant(claimantStr);
311
+ if (!claimant) {
312
+ return { success: false, error: 'Invalid claimant format' };
313
+ }
314
+ const store = loadClaims();
315
+ const claim = store.claims[issueId];
316
+ if (!claim) {
317
+ return { success: false, error: 'Issue is not claimed' };
318
+ }
319
+ if (claim.status !== 'handoff-pending') {
320
+ return { success: false, error: 'No pending handoff for this issue' };
321
+ }
322
+ if (!claim.handoffTo || formatClaimant(claim.handoffTo) !== formatClaimant(claimant)) {
323
+ return { success: false, error: 'You are not the target of this handoff' };
324
+ }
325
+ const previousOwner = claim.claimant;
326
+ const now = new Date().toISOString();
327
+ claim.claimant = claimant;
328
+ claim.status = 'active';
329
+ claim.statusChangedAt = now;
330
+ claim.handoffTo = undefined;
331
+ claim.handoffReason = undefined;
332
+ store.claims[issueId] = claim;
333
+ saveClaims(store);
334
+ return {
335
+ success: true,
336
+ claim,
337
+ previousOwner,
338
+ message: `Handoff accepted. ${formatClaimant(claimant)} now owns issue ${issueId}`,
339
+ };
340
+ },
341
+ },
342
+ {
343
+ name: 'claims_status',
344
+ description: 'Update claim status Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
345
+ category: 'claims',
346
+ inputSchema: {
347
+ type: 'object',
348
+ properties: {
349
+ issueId: {
350
+ type: 'string',
351
+ description: 'Issue ID',
352
+ },
353
+ status: {
354
+ type: 'string',
355
+ description: 'New status',
356
+ enum: ['active', 'paused', 'blocked', 'review-requested', 'completed'],
357
+ },
358
+ note: {
359
+ type: 'string',
360
+ description: 'Status note or reason',
361
+ },
362
+ progress: {
363
+ type: 'number',
364
+ description: 'Current progress percentage',
365
+ },
366
+ },
367
+ required: ['issueId', 'status'],
368
+ },
369
+ handler: async (input) => {
370
+ const issueId = input.issueId;
371
+ const status = input.status;
372
+ const note = input.note;
373
+ const progress = input.progress;
374
+ {
375
+ const v = validateIdentifier(issueId, 'issueId');
376
+ if (!v.valid)
377
+ return { success: false, error: v.error };
378
+ }
379
+ if (note) {
380
+ const v = validateText(note, 'note');
381
+ if (!v.valid)
382
+ return { success: false, error: v.error };
383
+ }
384
+ const store = loadClaims();
385
+ const claim = store.claims[issueId];
386
+ if (!claim) {
387
+ return { success: false, error: 'Issue is not claimed' };
388
+ }
389
+ const now = new Date().toISOString();
390
+ claim.status = status;
391
+ claim.statusChangedAt = now;
392
+ if (status === 'blocked') {
393
+ claim.blockReason = note;
394
+ }
395
+ if (progress !== undefined) {
396
+ claim.progress = Math.min(100, Math.max(0, progress));
397
+ }
398
+ store.claims[issueId] = claim;
399
+ saveClaims(store);
400
+ return {
401
+ success: true,
402
+ claim,
403
+ message: `Issue ${issueId} status updated to ${status}`,
404
+ };
405
+ },
406
+ },
407
+ {
408
+ name: 'claims_list',
409
+ description: 'List all claims or filter by criteria Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
410
+ category: 'claims',
411
+ inputSchema: {
412
+ type: 'object',
413
+ properties: {
414
+ status: {
415
+ type: 'string',
416
+ description: 'Filter by status',
417
+ enum: ['active', 'paused', 'blocked', 'stealable', 'completed', 'all'],
418
+ },
419
+ claimant: {
420
+ type: 'string',
421
+ description: 'Filter by claimant',
422
+ },
423
+ agentType: {
424
+ type: 'string',
425
+ description: 'Filter by agent type',
426
+ },
427
+ },
428
+ },
429
+ handler: async (input) => {
430
+ const status = input.status;
431
+ const claimantFilter = input.claimant;
432
+ const agentType = input.agentType;
433
+ if (claimantFilter) {
434
+ const v = validateText(claimantFilter, 'claimant');
435
+ if (!v.valid)
436
+ return { success: false, error: v.error };
437
+ }
438
+ if (agentType) {
439
+ const v = validateIdentifier(agentType, 'agentType');
440
+ if (!v.valid)
441
+ return { success: false, error: v.error };
442
+ }
443
+ const store = loadClaims();
444
+ let claims = Object.values(store.claims);
445
+ if (status && status !== 'all') {
446
+ claims = claims.filter(c => c.status === status);
447
+ }
448
+ if (claimantFilter) {
449
+ claims = claims.filter(c => formatClaimant(c.claimant).includes(claimantFilter));
450
+ }
451
+ if (agentType) {
452
+ claims = claims.filter(c => c.claimant.type === 'agent' && c.claimant.agentType === agentType);
453
+ }
454
+ return {
455
+ success: true,
456
+ claims,
457
+ count: claims.length,
458
+ stealableCount: Object.keys(store.stealable).length,
459
+ };
460
+ },
461
+ },
462
+ {
463
+ name: 'claims_mark-stealable',
464
+ description: 'Mark an issue as stealable by other agents Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
465
+ category: 'claims',
466
+ inputSchema: {
467
+ type: 'object',
468
+ properties: {
469
+ issueId: {
470
+ type: 'string',
471
+ description: 'Issue ID to mark stealable',
472
+ },
473
+ reason: {
474
+ type: 'string',
475
+ description: 'Reason for marking stealable',
476
+ enum: ['overloaded', 'stale', 'blocked-timeout', 'voluntary'],
477
+ },
478
+ preferredTypes: {
479
+ type: 'array',
480
+ description: 'Preferred agent types to steal',
481
+ items: { type: 'string' },
482
+ },
483
+ context: {
484
+ type: 'string',
485
+ description: 'Handoff context for the stealer',
486
+ },
487
+ },
488
+ required: ['issueId', 'reason'],
489
+ },
490
+ handler: async (input) => {
491
+ const issueId = input.issueId;
492
+ const reason = input.reason;
493
+ const preferredTypes = input.preferredTypes;
494
+ const context = input.context;
495
+ {
496
+ const v = validateIdentifier(issueId, 'issueId');
497
+ if (!v.valid)
498
+ return { success: false, error: v.error };
499
+ }
500
+ if (context) {
501
+ const v = validateText(context, 'context');
502
+ if (!v.valid)
503
+ return { success: false, error: v.error };
504
+ }
505
+ const store = loadClaims();
506
+ const claim = store.claims[issueId];
507
+ if (!claim) {
508
+ return { success: false, error: 'Issue is not claimed' };
509
+ }
510
+ const now = new Date().toISOString();
511
+ claim.status = 'stealable';
512
+ claim.statusChangedAt = now;
513
+ store.stealable[issueId] = {
514
+ reason,
515
+ stealableAt: now,
516
+ preferredTypes,
517
+ progress: claim.progress,
518
+ context,
519
+ };
520
+ store.claims[issueId] = claim;
521
+ saveClaims(store);
522
+ return {
523
+ success: true,
524
+ claim,
525
+ stealableInfo: store.stealable[issueId],
526
+ message: `Issue ${issueId} marked as stealable (${reason})`,
527
+ };
528
+ },
529
+ },
530
+ {
531
+ name: 'claims_steal',
532
+ description: 'Steal a stealable issue Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
533
+ category: 'claims',
534
+ inputSchema: {
535
+ type: 'object',
536
+ properties: {
537
+ issueId: {
538
+ type: 'string',
539
+ description: 'Issue ID to steal',
540
+ },
541
+ stealer: {
542
+ type: 'string',
543
+ description: 'Claimant stealing the issue',
544
+ },
545
+ },
546
+ required: ['issueId', 'stealer'],
547
+ },
548
+ handler: async (input) => {
549
+ const issueId = input.issueId;
550
+ const stealerStr = input.stealer;
551
+ {
552
+ const v = validateIdentifier(issueId, 'issueId');
553
+ if (!v.valid)
554
+ return { success: false, error: v.error };
555
+ }
556
+ {
557
+ const v = validateText(stealerStr, 'stealer');
558
+ if (!v.valid)
559
+ return { success: false, error: v.error };
560
+ }
561
+ const stealer = parseClaimant(stealerStr);
562
+ if (!stealer) {
563
+ return { success: false, error: 'Invalid claimant format' };
564
+ }
565
+ const store = loadClaims();
566
+ const claim = store.claims[issueId];
567
+ const stealableInfo = store.stealable[issueId];
568
+ if (!claim) {
569
+ return { success: false, error: 'Issue is not claimed' };
570
+ }
571
+ if (!stealableInfo) {
572
+ return { success: false, error: 'Issue is not stealable' };
573
+ }
574
+ // Check preferred types
575
+ if (stealableInfo.preferredTypes && stealableInfo.preferredTypes.length > 0) {
576
+ if (stealer.type === 'agent' && !stealableInfo.preferredTypes.includes(stealer.agentType)) {
577
+ return {
578
+ success: false,
579
+ error: `Issue prefers agent types: ${stealableInfo.preferredTypes.join(', ')}`,
580
+ };
581
+ }
582
+ }
583
+ const previousOwner = claim.claimant;
584
+ const now = new Date().toISOString();
585
+ claim.claimant = stealer;
586
+ claim.status = 'active';
587
+ claim.statusChangedAt = now;
588
+ claim.context = stealableInfo.context;
589
+ delete store.stealable[issueId];
590
+ store.claims[issueId] = claim;
591
+ saveClaims(store);
592
+ return {
593
+ success: true,
594
+ claim,
595
+ previousOwner,
596
+ stealableInfo,
597
+ message: `Issue ${issueId} stolen by ${formatClaimant(stealer)}`,
598
+ };
599
+ },
600
+ },
601
+ {
602
+ name: 'claims_stealable',
603
+ description: 'List all stealable issues Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
604
+ category: 'claims',
605
+ inputSchema: {
606
+ type: 'object',
607
+ properties: {
608
+ agentType: {
609
+ type: 'string',
610
+ description: 'Filter by preferred agent type',
611
+ },
612
+ },
613
+ },
614
+ handler: async (input) => {
615
+ const agentType = input.agentType;
616
+ if (agentType) {
617
+ const v = validateIdentifier(agentType, 'agentType');
618
+ if (!v.valid)
619
+ return { success: false, error: v.error };
620
+ }
621
+ const store = loadClaims();
622
+ let stealableIssues = Object.entries(store.stealable).map(([issueId, info]) => ({
623
+ issueId,
624
+ ...info,
625
+ claim: store.claims[issueId],
626
+ }));
627
+ if (agentType) {
628
+ stealableIssues = stealableIssues.filter(s => !s.preferredTypes || s.preferredTypes.length === 0 || s.preferredTypes.includes(agentType));
629
+ }
630
+ return {
631
+ success: true,
632
+ stealable: stealableIssues,
633
+ count: stealableIssues.length,
634
+ };
635
+ },
636
+ },
637
+ {
638
+ name: 'claims_load',
639
+ description: 'Get agent load information Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
640
+ category: 'claims',
641
+ inputSchema: {
642
+ type: 'object',
643
+ properties: {
644
+ agentId: {
645
+ type: 'string',
646
+ description: 'Specific agent ID (optional)',
647
+ },
648
+ agentType: {
649
+ type: 'string',
650
+ description: 'Filter by agent type',
651
+ },
652
+ },
653
+ },
654
+ handler: async (input) => {
655
+ const agentId = input.agentId;
656
+ const agentType = input.agentType;
657
+ if (agentId) {
658
+ const v = validateIdentifier(agentId, 'agentId');
659
+ if (!v.valid)
660
+ return { success: false, error: v.error };
661
+ }
662
+ if (agentType) {
663
+ const v = validateIdentifier(agentType, 'agentType');
664
+ if (!v.valid)
665
+ return { success: false, error: v.error };
666
+ }
667
+ const store = loadClaims();
668
+ const claims = Object.values(store.claims);
669
+ // Group claims by agent
670
+ const agentLoads = new Map();
671
+ for (const claim of claims) {
672
+ if (claim.claimant.type !== 'agent')
673
+ continue;
674
+ const key = claim.claimant.agentId;
675
+ if (!agentLoads.has(key)) {
676
+ agentLoads.set(key, {
677
+ agentId: key,
678
+ agentType: claim.claimant.agentType,
679
+ claims: [],
680
+ blockedCount: 0,
681
+ });
682
+ }
683
+ const load = agentLoads.get(key);
684
+ load.claims.push(claim);
685
+ if (claim.status === 'blocked') {
686
+ load.blockedCount++;
687
+ }
688
+ }
689
+ let loads = Array.from(agentLoads.values());
690
+ if (agentId) {
691
+ loads = loads.filter(l => l.agentId === agentId);
692
+ }
693
+ if (agentType) {
694
+ loads = loads.filter(l => l.agentType === agentType);
695
+ }
696
+ const result = loads.map(l => ({
697
+ agentId: l.agentId,
698
+ agentType: l.agentType,
699
+ claimCount: l.claims.length,
700
+ maxClaims: 5, // Default max
701
+ utilization: l.claims.length / 5,
702
+ blockedCount: l.blockedCount,
703
+ claims: l.claims.map(c => ({
704
+ issueId: c.issueId,
705
+ status: c.status,
706
+ progress: c.progress,
707
+ })),
708
+ }));
709
+ return {
710
+ success: true,
711
+ loads: result,
712
+ totalAgents: result.length,
713
+ totalClaims: claims.filter(c => c.claimant.type === 'agent').length,
714
+ avgUtilization: result.length > 0
715
+ ? result.reduce((sum, l) => sum + l.utilization, 0) / result.length
716
+ : 0,
717
+ };
718
+ },
719
+ },
720
+ {
721
+ name: 'claims_board',
722
+ description: 'Get a visual board view of all claims Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
723
+ category: 'claims',
724
+ inputSchema: {
725
+ type: 'object',
726
+ properties: {},
727
+ },
728
+ handler: async () => {
729
+ const store = loadClaims();
730
+ const claims = Object.values(store.claims);
731
+ const byStatus = {
732
+ active: [],
733
+ paused: [],
734
+ blocked: [],
735
+ 'handoff-pending': [],
736
+ 'review-requested': [],
737
+ stealable: [],
738
+ completed: [],
739
+ };
740
+ for (const claim of claims) {
741
+ if (byStatus[claim.status]) {
742
+ byStatus[claim.status].push(claim);
743
+ }
744
+ }
745
+ const humanClaims = claims.filter(c => c.claimant.type === 'human');
746
+ const agentClaims = claims.filter(c => c.claimant.type === 'agent');
747
+ return {
748
+ success: true,
749
+ board: {
750
+ active: byStatus.active.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant), progress: c.progress })),
751
+ paused: byStatus.paused.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
752
+ blocked: byStatus.blocked.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant), reason: c.blockReason })),
753
+ 'handoff-pending': byStatus['handoff-pending'].map(c => ({ issueId: c.issueId, from: formatClaimant(c.claimant), to: c.handoffTo ? formatClaimant(c.handoffTo) : null })),
754
+ 'review-requested': byStatus['review-requested'].map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
755
+ stealable: byStatus.stealable.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
756
+ completed: byStatus.completed.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
757
+ },
758
+ summary: {
759
+ total: claims.length,
760
+ active: byStatus.active.length,
761
+ blocked: byStatus.blocked.length,
762
+ stealable: byStatus.stealable.length,
763
+ humanClaims: humanClaims.length,
764
+ agentClaims: agentClaims.length,
765
+ },
766
+ };
767
+ },
768
+ },
769
+ {
770
+ name: 'claims_rebalance',
771
+ description: 'Suggest or apply load rebalancing across agents Use when nothing native covers per-agent capability gating — Claude Code agents have file-system access by default. Pair claims_grant + claims_check before letting an agent run privileged ops. For trusted in-session work, no claims call is needed.',
772
+ category: 'claims',
773
+ inputSchema: {
774
+ type: 'object',
775
+ properties: {
776
+ dryRun: {
777
+ type: 'boolean',
778
+ description: 'Preview rebalancing without applying',
779
+ default: true,
780
+ },
781
+ targetUtilization: {
782
+ type: 'number',
783
+ description: 'Target utilization (0-1)',
784
+ default: 0.7,
785
+ },
786
+ },
787
+ },
788
+ handler: async (input) => {
789
+ const dryRun = input.dryRun !== false;
790
+ const targetUtilization = input.targetUtilization || 0.7;
791
+ const store = loadClaims();
792
+ const claims = Object.values(store.claims);
793
+ // Group by agent
794
+ const agentLoads = new Map();
795
+ for (const claim of claims) {
796
+ if (claim.claimant.type !== 'agent')
797
+ continue;
798
+ const key = claim.claimant.agentId;
799
+ if (!agentLoads.has(key)) {
800
+ agentLoads.set(key, { agentId: key, agentType: claim.claimant.agentType, claims: [] });
801
+ }
802
+ agentLoads.get(key).claims.push(claim);
803
+ }
804
+ const loads = Array.from(agentLoads.values());
805
+ const maxClaims = 5;
806
+ const avgLoad = loads.length > 0
807
+ ? loads.reduce((sum, l) => sum + l.claims.length, 0) / loads.length
808
+ : 0;
809
+ const overloaded = loads.filter(l => l.claims.length > maxClaims * targetUtilization * 1.5);
810
+ const underloaded = loads.filter(l => l.claims.length < maxClaims * targetUtilization * 0.5);
811
+ const suggestions = [];
812
+ for (const over of overloaded) {
813
+ // Find low-progress claims to redistribute
814
+ const movable = over.claims
815
+ .filter(c => c.progress < 25 && c.status === 'active')
816
+ .slice(0, over.claims.length - Math.ceil(maxClaims * targetUtilization));
817
+ for (const claim of movable) {
818
+ const target = underloaded.find(u => u.agentType === over.agentType && u.claims.length < maxClaims);
819
+ if (target) {
820
+ suggestions.push({
821
+ issueId: claim.issueId,
822
+ from: `agent:${over.agentId}:${over.agentType}`,
823
+ to: `agent:${target.agentId}:${target.agentType}`,
824
+ reason: 'Load balancing',
825
+ });
826
+ }
827
+ }
828
+ }
829
+ // When not a dry run, execute the suggested moves
830
+ if (!dryRun) {
831
+ for (const suggestion of suggestions) {
832
+ const claim = store.claims[suggestion.issueId];
833
+ if (claim) {
834
+ const newOwner = parseClaimant(suggestion.to);
835
+ if (newOwner) {
836
+ claim.claimant = newOwner;
837
+ claim.statusChangedAt = new Date().toISOString();
838
+ store.claims[suggestion.issueId] = claim;
839
+ }
840
+ }
841
+ }
842
+ saveClaims(store);
843
+ }
844
+ return {
845
+ success: true,
846
+ dryRun,
847
+ suggestions,
848
+ metrics: {
849
+ totalAgents: loads.length,
850
+ avgLoad,
851
+ overloadedCount: overloaded.length,
852
+ underloadedCount: underloaded.length,
853
+ targetUtilization,
854
+ },
855
+ message: dryRun
856
+ ? `Found ${suggestions.length} rebalancing opportunities (dry run)`
857
+ : `Applied ${suggestions.length} rebalancing moves`,
858
+ };
859
+ },
860
+ },
861
+ ];
862
+ export default claimsTools;
863
+ //# sourceMappingURL=claims-tools.js.map