botmancers 0.3.0 → 0.4.2

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 (357) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +162 -21
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +20 -1
  5. package/app/.next/build-manifest.json +3 -3
  6. package/app/.next/prerender-manifest.json +32 -4
  7. package/app/.next/required-server-files.json +2 -2
  8. package/app/.next/routes-manifest.json +143 -0
  9. package/app/.next/server/app/_global-error/page.js +1 -1
  10. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  11. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/_global-error.html +1 -1
  13. package/app/.next/server/app/_global-error.rsc +1 -1
  14. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  15. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/app/.next/server/app/_not-found/page.js +1 -1
  18. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/_not-found.html +1 -1
  21. package/app/.next/server/app/_not-found.rsc +2 -2
  22. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/app/.next/server/app/api/agent-deck/decks/route.js +2 -2
  26. package/app/.next/server/app/api/agent-deck/decks/route.js.nft.json +1 -1
  27. package/app/.next/server/app/api/agent-deck/settings/route.js +2 -2
  28. package/app/.next/server/app/api/agent-deck/settings/route.js.nft.json +1 -1
  29. package/app/.next/server/app/api/bots/[id]/config/route.js +2 -2
  30. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  31. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route/app-paths-manifest.json +3 -0
  32. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route/build-manifest.json +12 -0
  33. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route/server-reference-manifest.json +4 -0
  34. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js +9 -0
  35. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -0
  36. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route_client-reference-manifest.js +3 -0
  37. package/app/.next/server/app/api/bots/[id]/sessions/route/app-paths-manifest.json +3 -0
  38. package/app/.next/server/app/api/bots/[id]/sessions/route/build-manifest.json +12 -0
  39. package/app/.next/server/app/api/bots/[id]/sessions/route/server-reference-manifest.json +4 -0
  40. package/app/.next/server/app/api/bots/[id]/sessions/route.js +9 -0
  41. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -0
  42. package/app/.next/server/app/api/bots/[id]/sessions/route_client-reference-manifest.js +3 -0
  43. package/app/.next/server/app/api/bots/[id]/skill/route.js +2 -2
  44. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/bots/availability/route.js +1 -1
  46. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/bots/delete-preview/route.js +3 -3
  48. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/bots/import/route.js +2 -2
  50. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/bots/manage/route.js +2 -2
  52. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/bots/name-migrations/route.js +2 -2
  54. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/bots/route.js +6 -6
  56. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/conversations/[id]/approve/route.js +2 -2
  58. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/conversations/[id]/deny/route.js +2 -2
  60. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/conversations/[id]/draft/route.js +2 -2
  62. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js +2 -2
  64. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/conversations/[id]/messages/route.js +6 -6
  66. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/conversations/[id]/route.js +2 -2
  68. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/conversations/[id]/stop/route.js +3 -3
  70. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  71. package/app/.next/server/app/api/conversations/route.js +2 -2
  72. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  73. package/app/.next/server/app/api/exchanges/[id]/cancel/route/app-paths-manifest.json +3 -0
  74. package/app/.next/server/app/api/exchanges/[id]/cancel/route/build-manifest.json +12 -0
  75. package/app/.next/server/app/api/exchanges/[id]/cancel/route/server-reference-manifest.json +4 -0
  76. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js +11 -0
  77. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -0
  78. package/app/.next/server/app/api/exchanges/[id]/cancel/route_client-reference-manifest.js +3 -0
  79. package/app/.next/server/app/api/exchanges/[id]/route/app-paths-manifest.json +3 -0
  80. package/app/.next/server/app/api/exchanges/[id]/route/build-manifest.json +12 -0
  81. package/app/.next/server/app/api/exchanges/[id]/route/server-reference-manifest.json +4 -0
  82. package/app/.next/server/app/api/exchanges/[id]/route.js +11 -0
  83. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -0
  84. package/app/.next/server/app/api/exchanges/[id]/route_client-reference-manifest.js +3 -0
  85. package/app/.next/server/app/api/exchanges/route/app-paths-manifest.json +3 -0
  86. package/app/.next/server/app/api/exchanges/route/build-manifest.json +12 -0
  87. package/app/.next/server/app/api/exchanges/route/server-reference-manifest.json +4 -0
  88. package/app/.next/server/app/api/exchanges/route.js +12 -0
  89. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -0
  90. package/app/.next/server/app/api/exchanges/route_client-reference-manifest.js +3 -0
  91. package/app/.next/server/app/api/files/[name]/route.js +1 -1
  92. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/groups/route.js +2 -2
  94. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/import-capabilities/route.js +1 -1
  97. package/app/.next/server/app/api/import-capabilities/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/marketplace-handoff/route.js +1 -1
  99. package/app/.next/server/app/api/marketplace-handoff/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/marketplace-handoff/status/route.js +1 -1
  101. package/app/.next/server/app/api/marketplace-handoff/status/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/mcp/route.js +2 -2
  103. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/messages/[id]/between/route.js +2 -2
  105. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/service-grants/route/app-paths-manifest.json +3 -0
  107. package/app/.next/server/app/api/service-grants/route/build-manifest.json +12 -0
  108. package/app/.next/server/app/api/service-grants/route/server-reference-manifest.json +4 -0
  109. package/app/.next/server/app/api/service-grants/route.js +9 -0
  110. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -0
  111. package/app/.next/server/app/api/service-grants/route_client-reference-manifest.js +3 -0
  112. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route/app-paths-manifest.json +3 -0
  113. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route/build-manifest.json +12 -0
  114. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route/server-reference-manifest.json +4 -0
  115. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js +11 -0
  116. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -0
  117. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route_client-reference-manifest.js +3 -0
  118. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route/app-paths-manifest.json +3 -0
  119. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route/build-manifest.json +12 -0
  120. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route/server-reference-manifest.json +4 -0
  121. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js +11 -0
  122. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -0
  123. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route_client-reference-manifest.js +3 -0
  124. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js +4 -3
  125. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/v0/agents/[agentId]/route/app-paths-manifest.json +3 -0
  127. package/app/.next/server/app/api/v0/agents/[agentId]/route/build-manifest.json +12 -0
  128. package/app/.next/server/app/api/v0/agents/[agentId]/route/server-reference-manifest.json +4 -0
  129. package/app/.next/server/app/api/v0/agents/[agentId]/route.js +11 -0
  130. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -0
  131. package/app/.next/server/app/api/v0/agents/[agentId]/route_client-reference-manifest.js +3 -0
  132. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route/app-paths-manifest.json +3 -0
  133. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route/build-manifest.json +12 -0
  134. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route/server-reference-manifest.json +4 -0
  135. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js +11 -0
  136. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -0
  137. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route_client-reference-manifest.js +3 -0
  138. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route/app-paths-manifest.json +3 -0
  139. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route/build-manifest.json +12 -0
  140. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route/server-reference-manifest.json +4 -0
  141. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js +11 -0
  142. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js.nft.json +1 -0
  143. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route_client-reference-manifest.js +3 -0
  144. package/app/.next/server/app/api/v0/agents/route/app-paths-manifest.json +3 -0
  145. package/app/.next/server/app/api/v0/agents/route/build-manifest.json +12 -0
  146. package/app/.next/server/app/api/v0/agents/route/server-reference-manifest.json +4 -0
  147. package/app/.next/server/app/api/v0/agents/route.js +11 -0
  148. package/app/.next/server/app/api/v0/agents/route.js.nft.json +1 -0
  149. package/app/.next/server/app/api/v0/agents/route_client-reference-manifest.js +3 -0
  150. package/app/.next/server/app/api/v0/capabilities/route/app-paths-manifest.json +3 -0
  151. package/app/.next/server/app/api/v0/capabilities/route/build-manifest.json +12 -0
  152. package/app/.next/server/app/api/v0/capabilities/route/server-reference-manifest.json +4 -0
  153. package/app/.next/server/app/api/v0/capabilities/route.js +11 -0
  154. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -0
  155. package/app/.next/server/app/api/v0/capabilities/route_client-reference-manifest.js +3 -0
  156. package/app/.next/server/app/api/v0/conversations/[id]/route.js +4 -3
  157. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route/app-paths-manifest.json +3 -0
  159. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route/build-manifest.json +12 -0
  160. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route/server-reference-manifest.json +4 -0
  161. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js +11 -0
  162. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -0
  163. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route_client-reference-manifest.js +3 -0
  164. package/app/.next/server/app/api/v0/exchanges/[id]/route/app-paths-manifest.json +3 -0
  165. package/app/.next/server/app/api/v0/exchanges/[id]/route/build-manifest.json +12 -0
  166. package/app/.next/server/app/api/v0/exchanges/[id]/route/server-reference-manifest.json +4 -0
  167. package/app/.next/server/app/api/v0/exchanges/[id]/route.js +11 -0
  168. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -0
  169. package/app/.next/server/app/api/v0/exchanges/[id]/route_client-reference-manifest.js +3 -0
  170. package/app/.next/server/app/api/v0/exchanges/route/app-paths-manifest.json +3 -0
  171. package/app/.next/server/app/api/v0/exchanges/route/build-manifest.json +12 -0
  172. package/app/.next/server/app/api/v0/exchanges/route/server-reference-manifest.json +4 -0
  173. package/app/.next/server/app/api/v0/exchanges/route.js +11 -0
  174. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -0
  175. package/app/.next/server/app/api/v0/exchanges/route_client-reference-manifest.js +3 -0
  176. package/app/.next/server/app/api/v0/mcp/route.js +5 -3
  177. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/v0/requests/[id]/route.js +4 -3
  179. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route/app-paths-manifest.json +3 -0
  181. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route/build-manifest.json +12 -0
  182. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route/server-reference-manifest.json +4 -0
  183. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js +11 -0
  184. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -0
  185. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route_client-reference-manifest.js +3 -0
  186. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js +5 -5
  187. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/wakes/[id]/decision/route.js +5 -5
  189. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/wakes/[id]/retry/route.js +5 -5
  191. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  192. package/app/.next/server/app/bots/[id]/config/page.js +1 -1
  193. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  194. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/exchanges/page/app-paths-manifest.json +3 -0
  196. package/app/.next/server/app/exchanges/page/build-manifest.json +20 -0
  197. package/app/.next/server/app/exchanges/page/next-font-manifest.json +11 -0
  198. package/app/.next/server/app/exchanges/page/react-loadable-manifest.json +1 -0
  199. package/app/.next/server/app/exchanges/page/server-reference-manifest.json +4 -0
  200. package/app/.next/server/app/exchanges/page.js +13 -0
  201. package/app/.next/server/app/exchanges/page.js.nft.json +1 -0
  202. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +3 -0
  203. package/app/.next/server/app/exchanges.html +1 -0
  204. package/app/.next/server/app/exchanges.meta +34 -0
  205. package/app/.next/server/app/exchanges.rsc +22 -0
  206. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +22 -0
  207. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +4 -0
  208. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +26 -0
  209. package/app/.next/server/app/index.html +1 -1
  210. package/app/.next/server/app/index.rsc +3 -3
  211. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  212. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  213. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  214. package/app/.next/server/app/page.js +1 -1
  215. package/app/.next/server/app/page.js.nft.json +1 -1
  216. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/settings/page.js +1 -1
  218. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  219. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/settings.html +1 -1
  221. package/app/.next/server/app/settings.rsc +2 -2
  222. package/app/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  223. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  224. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  225. package/app/.next/server/app/threads/[id]/page/app-paths-manifest.json +3 -0
  226. package/app/.next/server/app/threads/[id]/page/build-manifest.json +20 -0
  227. package/app/.next/server/app/threads/[id]/page/next-font-manifest.json +11 -0
  228. package/app/.next/server/app/threads/[id]/page/react-loadable-manifest.json +1 -0
  229. package/app/.next/server/app/threads/[id]/page/server-reference-manifest.json +4 -0
  230. package/app/.next/server/app/threads/[id]/page.js +13 -0
  231. package/app/.next/server/app/threads/[id]/page.js.nft.json +1 -0
  232. package/app/.next/server/app/threads/[id]/page_client-reference-manifest.js +3 -0
  233. package/app/.next/server/app-paths-manifest.json +20 -1
  234. package/app/.next/server/chunks/0ivl_api_v0_agents_[agentId]_conversations_[conversationId]_route_actions_0lvijtu.js +3 -0
  235. package/app/.next/server/chunks/1oeh_server_app_api_v0_agents_[agentId]_conversations_route_actions_0ko3117.js +3 -0
  236. package/app/.next/server/chunks/1oeh_server_app_api_v0_agents_[agentId]_sessions_[ref]_route_actions_0o7q3vt.js +3 -0
  237. package/app/.next/server/chunks/{[externals]__18bqksw._.js → [externals]__06lqs5i._.js} +1 -1
  238. package/app/.next/server/chunks/{[root-of-the-server]__1vxmbdl._.js → [root-of-the-server]__0-45blq._.js} +1 -1
  239. package/app/.next/server/chunks/[root-of-the-server]__0ab4e_k._.js +1 -1
  240. package/app/.next/server/chunks/[root-of-the-server]__0izjfmr._.js +285 -53
  241. package/app/.next/server/chunks/{[root-of-the-server]__07l_rgn._.js → [root-of-the-server]__0j0i8xz._.js} +1 -1
  242. package/app/.next/server/chunks/[root-of-the-server]__0wtzcge._.js +3 -0
  243. package/app/.next/server/chunks/{[root-of-the-server]__19hjzs0._.js → [root-of-the-server]__15hknun._.js} +1 -1
  244. package/app/.next/server/chunks/{[root-of-the-server]__08i4wq6._.js → [root-of-the-server]__16ikszu._.js} +1 -1
  245. package/app/.next/server/chunks/{[root-of-the-server]__1khwkvb._.js → [root-of-the-server]__1c3e2ds._.js} +1 -1
  246. package/app/.next/server/chunks/[root-of-the-server]__1kvvdpx._.js +2 -2
  247. package/app/.next/server/chunks/[root-of-the-server]__1qoa704._.js +2 -2
  248. package/app/.next/server/chunks/[root-of-the-server]__1slu7d7._.js +7 -0
  249. package/app/.next/server/chunks/_06rti77._.js +30 -0
  250. package/app/.next/server/chunks/_09k38l1._.js +3 -0
  251. package/app/.next/server/chunks/_0dlg5kj._.js +30 -0
  252. package/app/.next/server/chunks/_0dyculb._.js +30 -0
  253. package/app/.next/server/chunks/_0eig2jc._.js +30 -0
  254. package/app/.next/server/chunks/_0ggf7vy._.js +1 -1
  255. package/app/.next/server/chunks/_0kghtb6._.js +3 -0
  256. package/app/.next/server/chunks/_0th2j4w._.js +1 -1
  257. package/app/.next/server/chunks/_0uz7r06._.js +30 -0
  258. package/app/.next/server/chunks/_0x05ts4._.js +3 -0
  259. package/app/.next/server/chunks/_0y3geoj._.js +30 -0
  260. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  261. package/app/.next/server/chunks/_12tq5uv._.js +30 -0
  262. package/app/.next/server/chunks/_147-4gl._.js +3 -0
  263. package/app/.next/server/chunks/_14ky6a2._.js +30 -0
  264. package/app/.next/server/chunks/_16kbxdt._.js +30 -0
  265. package/app/.next/server/chunks/_1963m2f._.js +30 -0
  266. package/app/.next/server/chunks/_1_34_h3._.js +30 -0
  267. package/app/.next/server/chunks/_1cc-2mx._.js +3 -0
  268. package/app/.next/server/chunks/_1inyx08._.js +1 -1
  269. package/app/.next/server/chunks/_1nurj3f._.js +30 -0
  270. package/app/.next/server/chunks/_1p2rf_n._.js +30 -0
  271. package/app/.next/server/chunks/_1u6tw78._.js +30 -0
  272. package/app/.next/server/chunks/_20azcus._.js +3 -0
  273. package/app/.next/server/chunks/_next-internal_server_app_api_bots_[id]_sessions_[ref]_route_actions_02gp9-5.js +3 -0
  274. package/app/.next/server/chunks/_next-internal_server_app_api_bots_[id]_sessions_route_actions_1s_wxg4.js +3 -0
  275. package/app/.next/server/chunks/_next-internal_server_app_api_exchanges_[id]_cancel_route_actions_0lh0fl4.js +3 -0
  276. package/app/.next/server/chunks/_next-internal_server_app_api_exchanges_[id]_route_actions_1w4jhin.js +3 -0
  277. package/app/.next/server/chunks/_next-internal_server_app_api_exchanges_route_actions_028wchg.js +3 -0
  278. package/app/.next/server/chunks/_next-internal_server_app_api_service-grants_route_actions_1459xk1.js +3 -0
  279. package/app/.next/server/chunks/_next-internal_server_app_api_v0_agents_[agentId]_route_actions_127sxvv.js +3 -0
  280. package/app/.next/server/chunks/_next-internal_server_app_api_v0_agents_[agentId]_sessions_route_actions_0pm6tcu.js +3 -0
  281. package/app/.next/server/chunks/_next-internal_server_app_api_v0_agents_route_actions_00azkhd.js +3 -0
  282. package/app/.next/server/chunks/_next-internal_server_app_api_v0_capabilities_route_actions_0d-eefd.js +3 -0
  283. package/app/.next/server/chunks/_next-internal_server_app_api_v0_exchanges_[id]_cancel_route_actions_1hb2q7i.js +3 -0
  284. package/app/.next/server/chunks/_next-internal_server_app_api_v0_exchanges_[id]_route_actions_098f50-.js +3 -0
  285. package/app/.next/server/chunks/_next-internal_server_app_api_v0_exchanges_route_actions_1ftmhhm.js +3 -0
  286. package/app/.next/server/chunks/_next-internal_server_app_api_v0_sessions_[ref]_messages_route_actions_1-rgf_k.js +3 -0
  287. package/app/.next/server/chunks/lib_0kik6bx._.js +1 -1
  288. package/app/.next/server/chunks/lib_0pe3tiv._.js +1 -1
  289. package/app/.next/server/chunks/lib_0t3s3rj._.js +30 -0
  290. package/app/.next/server/chunks/lib_0zxi6rx._.js +148 -0
  291. package/app/.next/server/chunks/lib_12udr7g._.js +148 -0
  292. package/app/.next/server/chunks/lib_service-api-http_ts_0xzqhny._.js +25 -0
  293. package/app/.next/server/chunks/lib_session-catalog_ts_1i7f38f._.js +30 -0
  294. package/app/.next/server/chunks/ssr/{[root-of-the-server]__0sq4frf._.js → [root-of-the-server]__03186rx._.js} +1 -1
  295. package/app/.next/server/chunks/ssr/[root-of-the-server]__03xw2d9._.js +3 -0
  296. package/app/.next/server/chunks/ssr/{[root-of-the-server]__1x7o-fe._.js → [root-of-the-server]__0zzcbqg._.js} +1 -1
  297. package/app/.next/server/chunks/ssr/{[root-of-the-server]__029oxo_._.js → [root-of-the-server]__1feicqq._.js} +1 -1
  298. package/app/.next/server/chunks/ssr/[root-of-the-server]__1t063pe._.js +3 -0
  299. package/app/.next/server/chunks/ssr/_00ysoah._.js +3 -0
  300. package/app/.next/server/chunks/ssr/_157wnb_._.js +3 -0
  301. package/app/.next/server/chunks/ssr/_1o94bnv._.js +1 -1
  302. package/app/.next/server/chunks/ssr/_next-internal_server_app_exchanges_page_actions_0hcso2x.js +3 -0
  303. package/app/.next/server/chunks/ssr/_next-internal_server_app_threads_[id]_page_actions_1fte2n3.js +3 -0
  304. package/app/.next/server/chunks/ssr/app_1-nwnha._.js +3 -0
  305. package/app/.next/server/chunks/ssr/app_bots_[id]_config_page_tsx_1e0uue9._.js +3 -0
  306. package/app/.next/server/chunks/ssr/app_components_AgentDeckRuntime_tsx_024janf._.js +3 -0
  307. package/app/.next/server/chunks/ssr/node_modules_1nkgb45._.js +23 -0
  308. package/app/.next/server/chunks/ssr/node_modules_next_0x3i8za._.js +131 -0
  309. package/app/.next/server/middleware-build-manifest.js +3 -3
  310. package/app/.next/server/middleware.js +1 -1
  311. package/app/.next/server/next-font-manifest.js +1 -1
  312. package/app/.next/server/next-font-manifest.json +8 -0
  313. package/app/.next/server/pages/404.html +1 -1
  314. package/app/.next/server/pages/500.html +1 -1
  315. package/app/.next/server/prefetch-hints.json +14 -0
  316. package/app/.next/server/server-reference-manifest.js +1 -1
  317. package/app/.next/server/server-reference-manifest.json +1 -1
  318. package/app/.next/static/chunks/1i5xroz391zkb.js +1 -0
  319. package/app/.next/static/chunks/{3zqbpbm93yqzh.css → 1vz50l951sr9e.css} +1 -1
  320. package/app/.next/static/chunks/24ggj819yt3y6.js +1 -0
  321. package/app/.next/static/chunks/2_8lcalraul5s.js +3 -0
  322. package/app/.next/static/chunks/30i0-l04mmdvk.js +1 -0
  323. package/app/BUILD_INFO.json +2 -2
  324. package/app/package.json +1 -1
  325. package/app/server.js +1 -1
  326. package/dist/cli.d.ts +1 -1
  327. package/dist/cli.js +33 -5
  328. package/dist/clients.d.ts +86 -0
  329. package/dist/clients.js +635 -0
  330. package/dist/config.js +2 -2
  331. package/dist/contract.d.ts +6 -1
  332. package/dist/contract.js +28 -8
  333. package/dist/index.d.ts +1 -1
  334. package/dist/index.js +3 -3
  335. package/dist/managed.js +7 -0
  336. package/dist/product.d.ts +2 -0
  337. package/dist/product.js +6 -0
  338. package/dist/server.js +5 -4
  339. package/dist/upstream.js +21 -7
  340. package/package.json +7 -6
  341. package/schemas/botmancers.mcp.v2.tools.json +2981 -0
  342. package/skills/botmancers-collaboration/SKILL.md +99 -0
  343. package/skills/botmancers-collaboration/references/workflows.md +209 -0
  344. package/app/.next/server/chunks/[root-of-the-server]__09d-yrq._.js +0 -3
  345. package/app/.next/server/chunks/[root-of-the-server]__0za34e1._.js +0 -7
  346. package/app/.next/server/chunks/[root-of-the-server]__1fjpie4._.js +0 -3
  347. package/app/.next/server/chunks/[root-of-the-server]__1qanlbg._.js +0 -3
  348. package/app/.next/server/chunks/[root-of-the-server]__20wve4_._.js +0 -3
  349. package/app/.next/server/chunks/lib_051fv4x._.js +0 -111
  350. package/app/.next/server/chunks/lib_07adeq3._.js +0 -111
  351. package/app/.next/server/chunks/ssr/_0k_7i66._.js +0 -131
  352. package/app/.next/server/chunks/ssr/_1flnty7._.js +0 -23
  353. package/app/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js +0 -3
  354. package/app/.next/static/chunks/0qbtymorcz-l9.js +0 -3
  355. /package/app/.next/static/{u4r8RPgEfpxk-DGXeKV6g → ewp56HqU5-d9bpFog3bli}/_buildManifest.js +0 -0
  356. /package/app/.next/static/{u4r8RPgEfpxk-DGXeKV6g → ewp56HqU5-d9bpFog3bli}/_clientMiddlewareManifest.js +0 -0
  357. /package/app/.next/static/{u4r8RPgEfpxk-DGXeKV6g → ewp56HqU5-d9bpFog3bli}/_ssgManifest.js +0 -0
package/CHANGELOG.md CHANGED
@@ -3,7 +3,85 @@
3
3
  All notable changes to the `botmancers` npm package. It uses
4
4
  [Semantic Versioning](https://semver.org): while the package is `0.x`, a
5
5
  minor version may change the CLI or configuration. The MCP tool contract is
6
- versioned separately, as `botmancers.mcp.v1`.
6
+ versioned separately: `botmancers.mcp.v1` (frozen) and `botmancers.mcp.v2`.
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.4.2] - 2026-10-17
11
+
12
+ ### Changed
13
+
14
+ - Releases are published once, straight to `latest`, by the maintainer
15
+ (`npm run release:publish`). The `canary` dist-tag, the CI publish, npm
16
+ trusted publishing, and the bootstrap token are gone;
17
+ `release-botmancers.yml` now only runs the release check on the tag. The
18
+ package contents are unchanged from 0.4.1.
19
+ - 0.4.1 was tagged but never published, so 0.4.2 carries its contents
20
+ (below) and the 0.4.0 contents.
21
+
22
+ ## [0.4.1] - 2026-10-17
23
+
24
+ Not published; see 0.4.2.
25
+
26
+ ### Fixed
27
+
28
+ - 0.4.0 was never published: its release check failed on the Linux release
29
+ runner. `npm test` passed a directory to `node --test`, which Node 24 treats
30
+ as a module path; it now passes a glob. The clean-install smoke signalled
31
+ `npx`, which on npm 11.19 does not forward `SIGTERM` to the bridge; it now
32
+ signals the process group and checks that the bridge port closes.
33
+ - `release:check` shows the failing test and smoke output, drains stdout
34
+ before exiting, and writes its `--out` transcript as it goes.
35
+
36
+ ### Changed
37
+
38
+ - A `ci-botmancers` workflow runs the same release check on pull requests that
39
+ touch the app or the package, so release failures show up before a tag.
40
+ - 0.4.1 carries everything 0.4.0 would have shipped (below).
41
+
42
+ ## [0.4.0] - 2026-10-17
43
+
44
+ Not published; see 0.4.1.
45
+
46
+ ### Added
47
+
48
+ - The Botmancers app bundled in the package adds the durable Agent session
49
+ catalog and Sessions UI, session-targeted Ask and Continue exchanges with
50
+ inline exchange cards, and an Agent Exchanges ledger.
51
+ - Service grants let the owner give another Agent narrow, audited access to
52
+ sessions, conversations, and exchanges (`docs/service-grants.md`). Grants
53
+ are re-checked at read time, and an unregistered Agent invalidates the
54
+ document.
55
+
56
+ - `botmancers setup --client codex|cursor|claude [--remove]`: connects the
57
+ client to the local MCP bridge and installs the optional
58
+ `botmancers-collaboration` Agent Skill (shipped in `skills/`). An
59
+ ownership record in `config/clients/<client>.json` (versions and SHA-256
60
+ hashes, no token) lets re-runs, upgrades, and rollbacks refresh only
61
+ unmodified Botmancers files. Edited or foreign files are never overwritten
62
+ (exit 12), a missing client writes nothing (exit 11), and a failed write is
63
+ rolled back. Plain `botmancers setup` refreshes the clients already set up.
64
+ `botmancers doctor` reports each client as connected, missing, stale, or
65
+ conflicted, with the repair command.
66
+
67
+ - MCP contract `botmancers.mcp.v2`: `botmancers_capabilities`,
68
+ `botmancers_list_agents`, `botmancers_list_sessions`,
69
+ `botmancers_list_conversations`, `botmancers_send_to_session`,
70
+ `botmancers_create_exchange`, `botmancers_get_exchange`, and
71
+ `botmancers_list_exchanges`, plus a v2 (`agent_id`) path of
72
+ `botmancers_get_conversation`, over the owner's service grants. The bundled
73
+ schema is `schemas/botmancers.mcp.v2.tools.json`; every v2 call is forwarded
74
+ unchanged. `GET /healthz` adds `contracts`. Library exports add
75
+ `MCP_CONTRACT_V1`, `MCP_CONTRACTS`, `TOOL_SCHEMA_V1_URL`, and
76
+ `toolContractOf`.
77
+
78
+ ### Changed
79
+
80
+ - `MCP_CONTRACT` and `/healthz` `contract` are now `botmancers.mcp.v2`;
81
+ `tools/list` returns the v1 tools unchanged, then the v2 tools.
82
+ - Startup preflight refuses (exit 4) a Botmancers that lacks any bundled v1 or
83
+ v2 tool, or the v2 path of `botmancers_get_conversation`, and names what is
84
+ missing. It still sends only `initialize` and `tools/list`.
7
85
 
8
86
  ## [0.3.0] - 2026-10-16
9
87
 
package/README.md CHANGED
@@ -13,16 +13,42 @@ No source checkout or separately started app is needed.
13
13
  a Botmancers app you run yourself, exactly as in 0.1.0, so existing MCP
14
14
  configurations keep working.
15
15
 
16
- The tool contract is `botmancers.mcp.v1`, and its JSON schema ships in this
17
- package at `schemas/botmancers.mcp.v1.tools.json`.
16
+ The tool contract is `botmancers.mcp.v2`, which serves every
17
+ `botmancers.mcp.v1` tool unchanged and adds granted access to Agents,
18
+ sessions, conversations, and exchanges. Its JSON schema ships in this
19
+ package at `schemas/botmancers.mcp.v2.tools.json`, next to the frozen
20
+ `schemas/botmancers.mcp.v1.tools.json`; both are byte-identical to the
21
+ captures in the Botmancers repository
22
+ ([`docs/contracts`](../../docs/contracts/mcp-bridge-v2.tools.json)).
23
+
24
+ v1 tools (no grants needed):
18
25
 
19
26
  | Tool | What it does |
20
27
  | --- | --- |
21
28
  | `botmancers_start_task` | Sends one objective to an allowlisted coordinator. Returns `request_id` and `conversation_id`. |
22
29
  | `botmancers_get_request` | Polls a request until `terminal`. Returns its `result` or `failure`. |
23
- | `botmancers_get_conversation` | Reads the conversation the task opened. |
30
+ | `botmancers_get_conversation` | Reads the conversation the task opened. With `agent_id` (v2 path), reads any granted conversation of that Agent, paginated. |
24
31
  | `botmancers_health` | Shows the caller's identity and the available coordinators. |
25
32
 
33
+ v2 tools (each needs the owner's grant on the Agents involved,
34
+ [`docs/service-grants.md`](../../docs/service-grants.md)), in workflow order:
35
+
36
+ | Tool | What it does |
37
+ | --- | --- |
38
+ | `botmancers_capabilities` | Discover: supported contracts, the granted Agents, and the operations this caller may use. |
39
+ | `botmancers_list_agents` | Discover: the granted Agents by name, paginated. |
40
+ | `botmancers_list_sessions` | Select: an Agent's sessions by stable Botmancers reference and recognizable title. |
41
+ | `botmancers_list_conversations` | History: an Agent's conversations, paginated. |
42
+ | `botmancers_send_to_session` | Act: one message to the exact same session of the same Agent (idempotency key required). |
43
+ | `botmancers_create_exchange` | Act: an `Ask` to a session, or a `Continue` to another Agent (idempotency key required). |
44
+ | `botmancers_get_exchange` | Observe: poll until `terminal`; the answer or handoff packet. |
45
+ | `botmancers_list_exchanges` | Observe: this caller's exchanges, paginated. |
46
+
47
+ Returned conversation, answer, and packet text is untrusted data. The full
48
+ contract, polling and backoff, error recovery, and a same-session plus
49
+ cross-Agent example are in
50
+ [`docs/mcp-bridge.md`](../../docs/mcp-bridge.md).
51
+
26
52
  Requirements: Node.js 20 or newer for the bridge; the full product needs
27
53
  Node.js 20.9 or newer, and Node.js 22 or newer is recommended (the bundled
28
54
  SQLite driver declares Node 22; `botmancers doctor` checks that it loads).
@@ -46,8 +72,8 @@ release into `~/.botmancers/versions/<version>`, points `~/.botmancers/current`
46
72
  at it, and writes the launcher `~/.local/bin/botmancers`. Add `~/.local/bin`
47
73
  to your `PATH` if the script asks you to. Managed installs
48
74
  [update themselves safely](#upgrade). To install a specific version, run
49
- `BOTMANCERS_VERSION=0.3.0 bash install.sh` or
50
- `npx botmancers@0.3.0 install --to 0.3.0`.
75
+ `BOTMANCERS_VERSION=0.4.2 bash install.sh` or
76
+ `npx botmancers@0.4.2 install --to 0.4.2`.
51
77
 
52
78
  npm-global installs and bare `npx` still work for compatibility:
53
79
 
@@ -76,24 +102,28 @@ Then:
76
102
  and add `AGENT_DECK_RUN_TOKEN=<token issued by Agent Deck>` to `core.env`.
77
103
  4. **Connect an MCP client** to `http://127.0.0.1:43124/mcp` with
78
104
  `Authorization: Bearer <BOTMANCERS_MCP_TOKEN>`, taking the token from
79
- `~/.botmancers/config/bridge.env`. To let `botmancers_start_task` reach a
80
- coordinator, list its Agent name in `core.env` as
81
- `BOTMANCERS_MCP_COORDINATORS=Tank` and restart.
105
+ `~/.botmancers/config/bridge.env`. For Codex, Cursor, or Claude Code,
106
+ `botmancers setup --client codex|cursor|claude` does this for you and adds
107
+ the optional collaboration skill
108
+ ([Client setup and the collaboration skill](#client-setup-and-the-collaboration-skill)).
109
+ To let `botmancers_start_task` reach a coordinator, list its Agent name in
110
+ `core.env` as `BOTMANCERS_MCP_COORDINATORS=Tank` and restart.
82
111
  5. **Check everything** with `botmancers doctor`.
83
112
 
84
113
  For anything long-running, use the managed install, or a pinned global
85
- release rather than `npx`: `npm install -g botmancers@0.3.0`, then run
114
+ release rather than `npx`: `npm install -g botmancers@0.4.2`, then run
86
115
  `botmancers setup` and `botmancers start --daemon`.
87
116
 
88
117
  ### Product commands
89
118
 
90
119
  | Command | What it does | Exit codes |
91
120
  | --- | --- | --- |
92
- | `botmancers setup` | Creates `BOTMANCERS_HOME` and its credentials; re-running keeps them and re-tightens permissions. | `0`; `9` home not writable |
121
+ | `botmancers setup` | Creates `BOTMANCERS_HOME` and its credentials; re-running keeps them and re-tightens permissions, and refreshes the clients set up with `--client`. | `0`; `9` home not writable |
122
+ | `botmancers setup --client codex\|cursor\|claude [--remove]` | Connects that MCP client to the bridge and installs the optional collaboration skill, or removes both. Files you edited are never overwritten. See [Client setup](#client-setup-and-the-collaboration-skill). | `0`; `2` usage or unsupported client; `11` client not installed; `12` conflicting files (nothing written) |
93
123
  | `botmancers start [--daemon] [--open]` | Starts the UI/core and the bridge. Without `--daemon` it stays in the foreground until Ctrl-C. Starting a healthy product again changes nothing. | `0` running; `1` a previous start is degraded; `6` a port is in use; `7` the core or bridge failed (both are stopped); `8` packaged app incomplete; `9` home not writable; `10` not set up |
94
124
  | `botmancers stop` | Stops the supervisor, the core, and the bridge. Safe to repeat. | `0`; `1` a process would not stop |
95
125
  | `botmancers status` | Reports `healthy`, `degraded`, or `stopped`, with the install kind, launcher, the CLI, current, and pending versions, the versions the live core and bridge report, both endpoints, process ids, and the restart action. | `0` healthy; `1` degraded; `3` stopped |
96
- | `botmancers doctor` | Checks the install kind, the launcher and `PATH` shadowing, the updater, Node, the packaged app, the home and its permissions, the credentials, the SQLite driver, ports, Hermes, and Agent Deck. Hermes and Agent Deck are optional and only warn. | `0` ok; `1` a check failed |
126
+ | `botmancers doctor` | Checks the install kind, the launcher and `PATH` shadowing, the updater, Node, the packaged app, the home and its permissions, the credentials, the SQLite driver, ports, Hermes, Agent Deck, and the MCP clients set up with `--client`. Hermes, Agent Deck, and clients are optional and only warn. | `0` ok; `1` a check failed |
97
127
  | `botmancers open` | Opens the UI in a browser (`BOTMANCERS_BROWSER` overrides the command). | `0`; `1` no browser; `3` not running |
98
128
  | `botmancers mcp [options]` | Runs only the bridge; identical to bare `botmancers`. | see [bridge exit codes](#startup-checks-and-exit-codes) |
99
129
  | `botmancers install [--to VERSION] [--migrate-cli] [--purge-global]` | Managed install or rollback: downloads the release into `~/.botmancers/versions/VERSION`, verifies it, makes it current, and writes the launcher. `--purge-global` also runs `npm uninstall -g botmancers`; nothing else uninstalls it. | `0`; `1` download or verification failed; `2` usage |
@@ -121,6 +151,7 @@ Everything the product writes lives under `BOTMANCERS_HOME` (default
121
151
  | --- | --- |
122
152
  | `config/core.env` | Core engine configuration: the bridge's service-token digest and anything you add (Hermes, Agent Deck, coordinators). Variables exported in your shell take precedence. |
123
153
  | `config/bridge.env` | The bridge's service token and MCP token. Keep private. |
154
+ | `config/clients/<client>.json` | What `setup --client` manages in that client: the version, and the SHA-256 of each skill file and of the MCP entry it wrote. No token. |
124
155
  | `data/` | The SQLite database and its WAL. |
125
156
  | `files/`, `skills/` | File artifacts and local Agent skills. |
126
157
  | `logs/` | `supervisor.log`, `core.log`, `bridge.log`, and the Hermes wait log. |
@@ -135,6 +166,102 @@ own `./botmancers.db`, `./files`, `./skills`, and `./.temporal`; nothing is
135
166
  moved. `BOTMANCERS_UI_PORT` (default `43123`) and `BOTMANCERS_MCP_PORT`
136
167
  (default `43124`) change the loopback ports.
137
168
 
169
+ ## Client setup and the collaboration skill
170
+
171
+ The package ships an optional [Agent Skill](https://agentskills.io),
172
+ `botmancers-collaboration`, in `skills/botmancers-collaboration/`. It teaches
173
+ an agent the procedure for working with other Botmancers Agents over MCP:
174
+
175
+ - discover the granted Agents and recognizable sessions instead of asking
176
+ you for IDs;
177
+ - choose between a fresh task, a same-session message, an `Ask`, and a
178
+ `Continue`;
179
+ - poll with bounded backoff and read the durable result;
180
+ - stop on grant, ended-session, conflict, failure, and cancellation states
181
+ without retry loops or silently switching targets;
182
+ - report where a result came from, and treat returned text as untrusted data.
183
+
184
+ **When it helps.** Use it when you ask your agent things like "ask Grok in
185
+ its uploader session what it decided" or "hand this session's work to
186
+ Codex". The skill is loaded only for requests like these.
187
+
188
+ **Why it is optional.** The skill holds no tools, credentials, IDs, or
189
+ permissions. The MCP server stays the only source of live data,
190
+ authorization, and actions, and its tool descriptions already describe the
191
+ whole workflow. Every MCP client works without the skill (see
192
+ [MCP-only](#mcp-only-clients)).
193
+
194
+ ### Supported clients
195
+
196
+ | Client | `--client` | MCP entry written | Skill installed in |
197
+ | --- | --- | --- | --- |
198
+ | Codex | `codex` | `$CODEX_HOME/config.toml` (default `~/.codex`), table `[mcp_servers.botmancers]` | `$CODEX_HOME/skills/botmancers-collaboration/` |
199
+ | Cursor | `cursor` | `~/.cursor/mcp.json`, `mcpServers.botmancers` | `~/.cursor/skills/botmancers-collaboration/` |
200
+ | Claude Code | `claude` | `~/.claude.json` (or `$CLAUDE_CONFIG_DIR/.claude.json`), `mcpServers.botmancers` | `~/.claude/skills/botmancers-collaboration/` (or `$CLAUDE_CONFIG_DIR/skills/`) |
201
+
202
+ The MCP entry points at `http://127.0.0.1:<BOTMANCERS_MCP_PORT>/mcp` and sends
203
+ `Authorization: Bearer <BOTMANCERS_MCP_TOKEN>`, as a hand-written entry
204
+ would. A configuration file that setup creates is owner-only (`0600`).
205
+ Neither setup nor doctor ever prints a token, and neither starts a task,
206
+ conversation, or exchange.
207
+
208
+ ### Install, update, and remove
209
+
210
+ ```sh
211
+ botmancers setup --client codex # or cursor, claude; --client codex,cursor for several
212
+ botmancers setup # refreshes every client set up with --client
213
+ botmancers doctor # connected / missing / stale / conflicted, with the repair command
214
+ botmancers setup --client codex --remove
215
+ ```
216
+
217
+ - **Install.** The client must already be installed for your user (its
218
+ directory exists). Otherwise setup exits 11, writes nothing, and prints the
219
+ MCP-only connection details. Restart the client, or reload its MCP
220
+ servers, afterwards.
221
+ - **Update.** Re-running is idempotent: unchanged files are not rewritten. A
222
+ new release ships the new skill version in the managed install. After
223
+ `botmancers upgrade`, or an automatic update, `botmancers doctor` reports the
224
+ client skill as `stale`, and `botmancers setup` refreshes it. After a
225
+ rotated MCP token or a changed `BOTMANCERS_MCP_PORT`, doctor reports the
226
+ MCP entry `stale` for the same repair. A rollback (`botmancers install
227
+ --to VERSION`) followed by `botmancers setup` puts that release's skill
228
+ back.
229
+ - **Remove.** `--remove` deletes the skill files and the MCP entry that are
230
+ still exactly as Botmancers wrote them, and the ownership record. Anything
231
+ you edited is kept and listed.
232
+
233
+ ### Managed-file ownership
234
+
235
+ Setup records each file and MCP entry it writes, with its SHA-256, in
236
+ `config/clients/<client>.json` under `BOTMANCERS_HOME`. It replaces only a file
237
+ or entry that still has the recorded hash, or that already has the wanted
238
+ content. Your own MCP servers, other keys in the configuration file, and
239
+ other skills are never touched. If the skill directory holds a file you
240
+ edited, or the configuration already has a `botmancers` server that setup
241
+ did not write, setup changes nothing for that client, exits 12, and lists
242
+ what conflicts. To hand it back to Botmancers, keep a copy of your
243
+ version, remove the listed files or entry, and re-run setup. If a write
244
+ fails part way, setup restores every file it had already changed for that
245
+ client. Credentials in `config/` are never rewritten by `--client`.
246
+
247
+ ### MCP-only clients
248
+
249
+ Any other MCP client needs no setup and no skill. Connect it to the URL and
250
+ header that `botmancers setup` prints:
251
+
252
+ ```text
253
+ URL http://127.0.0.1:43124/mcp
254
+ Header Authorization: Bearer <BOTMANCERS_MCP_TOKEN from ~/.botmancers/config/bridge.env>
255
+ ```
256
+
257
+ Then follow the tool descriptions in workflow order: `botmancers_capabilities`,
258
+ `botmancers_list_agents`, `botmancers_list_sessions`, an action, and
259
+ `botmancers_get_exchange` until `terminal`
260
+ ([`docs/mcp-bridge.md`](../../docs/mcp-bridge.md)). A client that supports
261
+ Agent Skills but is not listed above can also load the skill directly: copy
262
+ `skills/botmancers-collaboration/` from this package into that client's skills
263
+ directory. Setup does not manage that copy.
264
+
138
265
  ## Bridge only
139
266
 
140
267
  Use bare `botmancers` (or `botmancers mcp`) when you run the Botmancers app
@@ -177,7 +304,7 @@ newer and a running Botmancers app.
177
304
  To pin an exact release, which is recommended for anything long-running:
178
305
 
179
306
  ```sh
180
- BOTMANCERS_URL=http://127.0.0.1:43123 npx botmancers@0.3.0
307
+ BOTMANCERS_URL=http://127.0.0.1:43123 npx botmancers@0.4.2
181
308
  ```
182
309
 
183
310
  ## Bridge configuration
@@ -204,23 +331,33 @@ installed version.
204
331
  `2025-03-26`. Every request needs `Authorization: Bearer <BOTMANCERS_MCP_TOKEN>`.
205
332
  `GET` and `DELETE` return 405 because the bridge opens no SSE stream and
206
333
  issues no session. Bodies over 256 KiB are refused with 413.
207
- - `GET /healthz` returns `{"status":"ok","contract":"botmancers.mcp.v1","version":"<version>"}`.
334
+ - `GET /healthz` returns `{"status":"ok","contract":"botmancers.mcp.v2","contracts":["botmancers.mcp.v1","botmancers.mcp.v2"],"version":"<version>"}`.
208
335
  It needs no authentication and does not call Botmancers. Use the
209
336
  `botmancers_health` tool to check the end-to-end path.
210
337
 
211
338
  ### Startup checks and exit codes
212
339
 
213
- Before listening, the bridge validates its configuration. It then sends
214
- Botmancers an MCP `initialize` with the service token. That call writes
215
- nothing and does not count against the rate limit. No error message contains
216
- a token.
340
+ Before listening, the bridge validates its configuration. It then runs a
341
+ compatibility preflight: an MCP `initialize` and a `tools/list` with the
342
+ service token, never a tool call, so it writes nothing and does not count
343
+ against the rate limit. Botmancers must offer every bundled tool: all of
344
+ `botmancers.mcp.v1`, all of `botmancers.mcp.v2`, and the v2 `agent_id` path of
345
+ `botmancers_get_conversation`. Otherwise the bridge exits 4 naming exactly
346
+ what is missing, for example `it serves only botmancers.mcp.v1; this bridge
347
+ needs botmancers.mcp.v2 (missing botmancers_capabilities, ...)` or `missing
348
+ botmancers.mcp.v2 tools: botmancers_send_to_session`. Upgrade that Botmancers,
349
+ or pin a bridge release that predates v2. No error message contains a token.
350
+
351
+ Every v1 and v2 `tools/call` is forwarded to Botmancers unchanged, and its
352
+ result returned unchanged; Botmancers validates the arguments and applies
353
+ the grants.
217
354
 
218
355
  | Exit | Meaning | What to do |
219
356
  | --- | --- | --- |
220
357
  | `0` | Stopped by SIGINT or SIGTERM. | Nothing. |
221
358
  | `2` | Configuration error: a missing or invalid variable or flag. Every problem is listed. | Fix the listed settings. |
222
359
  | `3` | Cannot listen, for example because the port is already in use. | Stop the other process, or choose another `--port`. |
223
- | `4` | Botmancers is unreachable, or `BOTMANCERS_URL` is not a Botmancers MCP endpoint (the server is not named `botmancers` or lacks a `botmancers.mcp.v1` tool). | Start the app, or fix the URL. |
360
+ | `4` | Botmancers is unreachable, or `BOTMANCERS_URL` is not a compatible Botmancers MCP endpoint (the server is not named `botmancers`, or lacks a `botmancers.mcp.v1` or `botmancers.mcp.v2` tool). | Start or upgrade the app, or fix the URL. |
224
361
  | `5` | Botmancers rejected the service token, or the app has no service tokens configured. | Check `BOTMANCERS_SERVICE_TOKEN` against the app's `BOTMANCERS_SERVICE_TOKENS`. |
225
362
 
226
363
  If Botmancers becomes unavailable after startup, tool calls return a JSON-RPC
@@ -317,7 +454,7 @@ time. After that, npx may reuse its cached copy. To move deliberately, name
317
454
  the version:
318
455
 
319
456
  ```sh
320
- npx botmancers@0.3.0 --version
457
+ npx botmancers@0.4.2 --version
321
458
  ```
322
459
 
323
460
  For a global full product, stop it, upgrade, and start it again. Your state
@@ -337,8 +474,9 @@ npm install -g botmancers@latest # global
337
474
  ```
338
475
 
339
476
  Check the [changelog](CHANGELOG.md) before upgrading across a minor version
340
- while the package is `0.x`. The tool contract version, `botmancers.mcp.v1`,
341
- changes only with a major contract revision.
477
+ while the package is `0.x`. The tool contract is versioned separately: the
478
+ bundled `botmancers.mcp.v2` keeps `botmancers.mcp.v1` frozen, changes within v2
479
+ are additive, and a breaking change is a new contract version.
342
480
 
343
481
  ## Uninstall
344
482
 
@@ -352,6 +490,9 @@ npm cache clean --force # optional: drops npx's cached copy
352
490
  rm -rf ~/.botmancers/versions ~/.botmancers/current ~/.botmancers/update-state.json ~/.local/bin/botmancers # managed install
353
491
  ```
354
492
 
493
+ Before deleting the home, remove the client connections:
494
+ `botmancers setup --client codex --remove` (and `cursor`, `claude`).
495
+
355
496
  For the full product, delete `~/.botmancers` (or your `BOTMANCERS_HOME`)
356
497
  only if you also want to delete its database, files, and credentials.
357
498
 
@@ -1 +1 @@
1
- u4r8RPgEfpxk-DGXeKV6g
1
+ ewp56HqU5-d9bpFog3bli
@@ -4,6 +4,8 @@
4
4
  "/api/agent-deck/decks/route": "/api/agent-deck/decks",
5
5
  "/api/agent-deck/settings/route": "/api/agent-deck/settings",
6
6
  "/api/bots/[id]/config/route": "/api/bots/[id]/config",
7
+ "/api/bots/[id]/sessions/[ref]/route": "/api/bots/[id]/sessions/[ref]",
8
+ "/api/bots/[id]/sessions/route": "/api/bots/[id]/sessions",
7
9
  "/api/bots/[id]/skill/route": "/api/bots/[id]/skill",
8
10
  "/api/bots/availability/route": "/api/bots/availability",
9
11
  "/api/bots/delete-preview/route": "/api/bots/delete-preview",
@@ -19,6 +21,9 @@
19
21
  "/api/conversations/[id]/route": "/api/conversations/[id]",
20
22
  "/api/conversations/[id]/stop/route": "/api/conversations/[id]/stop",
21
23
  "/api/conversations/route": "/api/conversations",
24
+ "/api/exchanges/[id]/cancel/route": "/api/exchanges/[id]/cancel",
25
+ "/api/exchanges/[id]/route": "/api/exchanges/[id]",
26
+ "/api/exchanges/route": "/api/exchanges",
22
27
  "/api/files/[name]/route": "/api/files/[name]",
23
28
  "/api/groups/route": "/api/groups",
24
29
  "/api/health/route": "/api/health",
@@ -27,14 +32,28 @@
27
32
  "/api/marketplace-handoff/status/route": "/api/marketplace-handoff/status",
28
33
  "/api/mcp/route": "/api/mcp",
29
34
  "/api/messages/[id]/between/route": "/api/messages/[id]/between",
35
+ "/api/service-grants/route": "/api/service-grants",
36
+ "/api/v0/agents/[agentId]/conversations/[conversationId]/route": "/api/v0/agents/[agentId]/conversations/[conversationId]",
37
+ "/api/v0/agents/[agentId]/conversations/route": "/api/v0/agents/[agentId]/conversations",
30
38
  "/api/v0/agents/[agentId]/messages/route": "/api/v0/agents/[agentId]/messages",
39
+ "/api/v0/agents/[agentId]/route": "/api/v0/agents/[agentId]",
40
+ "/api/v0/agents/[agentId]/sessions/[ref]/route": "/api/v0/agents/[agentId]/sessions/[ref]",
41
+ "/api/v0/agents/[agentId]/sessions/route": "/api/v0/agents/[agentId]/sessions",
42
+ "/api/v0/agents/route": "/api/v0/agents",
43
+ "/api/v0/capabilities/route": "/api/v0/capabilities",
31
44
  "/api/v0/conversations/[id]/route": "/api/v0/conversations/[id]",
45
+ "/api/v0/exchanges/[id]/cancel/route": "/api/v0/exchanges/[id]/cancel",
46
+ "/api/v0/exchanges/[id]/route": "/api/v0/exchanges/[id]",
47
+ "/api/v0/exchanges/route": "/api/v0/exchanges",
32
48
  "/api/v0/mcp/route": "/api/v0/mcp",
33
49
  "/api/v0/requests/[id]/route": "/api/v0/requests/[id]",
50
+ "/api/v0/sessions/[ref]/messages/route": "/api/v0/sessions/[ref]/messages",
34
51
  "/api/wake-grants/[id]/revoke/route": "/api/wake-grants/[id]/revoke",
35
52
  "/api/wakes/[id]/decision/route": "/api/wakes/[id]/decision",
36
53
  "/api/wakes/[id]/retry/route": "/api/wakes/[id]/retry",
37
54
  "/bots/[id]/config/page": "/bots/[id]/config",
55
+ "/exchanges/page": "/exchanges",
38
56
  "/page": "/",
39
- "/settings/page": "/settings"
57
+ "/settings/page": "/settings",
58
+ "/threads/[id]/page": "/threads/[id]"
40
59
  }
@@ -7,9 +7,9 @@
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/u4r8RPgEfpxk-DGXeKV6g/_buildManifest.js",
11
- "static/u4r8RPgEfpxk-DGXeKV6g/_ssgManifest.js",
12
- "static/u4r8RPgEfpxk-DGXeKV6g/_clientMiddlewareManifest.js"
10
+ "static/ewp56HqU5-d9bpFog3bli/_buildManifest.js",
11
+ "static/ewp56HqU5-d9bpFog3bli/_ssgManifest.js",
12
+ "static/ewp56HqU5-d9bpFog3bli/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/3s6nzrbk-8mnv.js",
@@ -5,7 +5,7 @@
5
5
  "routeType": "page",
6
6
  "response": "complete",
7
7
  "compute": "static",
8
- "htmlSize": 8434,
8
+ "htmlSize": 8549,
9
9
  "experimentalBypassFor": [
10
10
  {
11
11
  "type": "header",
@@ -86,6 +86,34 @@
86
86
  "x-next-revalidate-tag-token"
87
87
  ]
88
88
  },
89
+ "/exchanges": {
90
+ "routeType": "page",
91
+ "response": "complete",
92
+ "compute": "static",
93
+ "htmlSize": 9850,
94
+ "experimentalBypassFor": [
95
+ {
96
+ "type": "header",
97
+ "key": "next-action"
98
+ },
99
+ {
100
+ "type": "header",
101
+ "key": "content-type",
102
+ "value": "multipart/form-data;.*"
103
+ }
104
+ ],
105
+ "initialRevalidateSeconds": false,
106
+ "srcRoute": "/exchanges",
107
+ "dataRoute": "/exchanges.rsc",
108
+ "allowHeader": [
109
+ "host",
110
+ "x-matched-path",
111
+ "x-prerender-revalidate",
112
+ "x-prerender-revalidate-if-generated",
113
+ "x-next-revalidated-tags",
114
+ "x-next-revalidate-tag-token"
115
+ ]
116
+ },
89
117
  "/settings": {
90
118
  "routeType": "page",
91
119
  "response": "complete",
@@ -118,8 +146,8 @@
118
146
  "dynamicRoutes": {},
119
147
  "notFoundRoutes": [],
120
148
  "preview": {
121
- "previewModeId": "2dafcdf4ba176137ac2fed825477055c",
122
- "previewModeSigningKey": "e7e86d5fa0a1417836f6f550b33f2c1a209a012ed7fdc48058a2739a537bb02e",
123
- "previewModeEncryptionKey": "fbc5f85fcf768d76d55e8363de7bb023ee40b8dac5219ad09afa91db80b775a5"
149
+ "previewModeId": "846aa4e09ce4f3faa5bf8717358d53a5",
150
+ "previewModeSigningKey": "c0fcf234bafb047e3cf9f0f35315a89f0d0e84da304b9b69a8360f1e7af997c9",
151
+ "previewModeEncryptionKey": "c23cedda26027a9233530595817c6c8d608d324ceae95c2aa140959f35f6d7af"
124
152
  }
125
153
  }
@@ -2,8 +2,8 @@
2
2
  "version": 1,
3
3
  "config": {
4
4
  "env": {
5
- "BOTMANCERS_BUILD_VERSION": "0.3.0",
6
- "BOTMANCERS_BUILD_COMMIT": "a08e532e759845e03310017398ab584ebc9d5b9e"
5
+ "BOTMANCERS_BUILD_VERSION": "0.4.2",
6
+ "BOTMANCERS_BUILD_COMMIT": "4f4ccf7d9ccd5e7ffa3f2fe12c724dafb8de31f4"
7
7
  },
8
8
  "webpack": null,
9
9
  "typescript": {