botmancers 0.4.2 → 0.5.0

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 (360) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +22 -17
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +7 -0
  5. package/app/.next/build-manifest.json +3 -3
  6. package/app/.next/prerender-manifest.json +5 -5
  7. package/app/.next/required-server-files.json +2 -2
  8. package/app/.next/routes-manifest.json +55 -0
  9. package/app/.next/server/app/_global-error.html +1 -1
  10. package/app/.next/server/app/_global-error.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/_not-found.html +1 -1
  17. package/app/.next/server/app/_not-found.rsc +2 -2
  18. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/app/.next/server/app/api/agent-deck/decks/route.js +2 -2
  22. package/app/.next/server/app/api/agent-deck/decks/route.js.nft.json +1 -1
  23. package/app/.next/server/app/api/agent-deck/settings/route.js +2 -2
  24. package/app/.next/server/app/api/agent-deck/settings/route.js.nft.json +1 -1
  25. package/app/.next/server/app/api/bots/[id]/config/route.js +2 -2
  26. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  27. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route/app-paths-manifest.json +3 -0
  28. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route/build-manifest.json +12 -0
  29. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route/server-reference-manifest.json +4 -0
  30. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js +12 -0
  31. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js.nft.json +1 -0
  32. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route_client-reference-manifest.js +3 -0
  33. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js +2 -2
  34. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -1
  35. package/app/.next/server/app/api/bots/[id]/sessions/route.js +6 -3
  36. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -1
  37. package/app/.next/server/app/api/bots/[id]/skill/route.js +2 -2
  38. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  39. package/app/.next/server/app/api/bots/availability/route.js +2 -2
  40. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  41. package/app/.next/server/app/api/bots/delete-preview/route.js +2 -2
  42. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  43. package/app/.next/server/app/api/bots/import/route.js +2 -2
  44. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/bots/manage/route.js +2 -2
  46. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/bots/name-migrations/route.js +2 -2
  48. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/bots/route.js +3 -3
  50. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/conversations/[id]/approve/route.js +4 -4
  52. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/conversations/[id]/deny/route.js +4 -4
  54. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/conversations/[id]/draft/route.js +4 -4
  56. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js +2 -2
  58. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/conversations/[id]/messages/route.js +5 -5
  60. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/conversations/[id]/route.js +2 -2
  62. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/conversations/[id]/stop/route.js +3 -3
  64. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/conversations/route.js +2 -2
  66. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js +4 -4
  68. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/exchanges/[id]/route.js +3 -3
  70. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -1
  71. package/app/.next/server/app/api/exchanges/route.js +3 -3
  72. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -1
  73. package/app/.next/server/app/api/files/[name]/route.js +3 -2
  74. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  75. package/app/.next/server/app/api/groups/route.js +2 -2
  76. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  77. package/app/.next/server/app/api/health/route.js +3 -2
  78. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/mcp/route.js +2 -2
  80. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/messages/[id]/between/route.js +2 -2
  82. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/runtime-connections/route/app-paths-manifest.json +3 -0
  84. package/app/.next/server/app/api/runtime-connections/route/build-manifest.json +12 -0
  85. package/app/.next/server/app/api/runtime-connections/route/server-reference-manifest.json +4 -0
  86. package/app/.next/server/app/api/runtime-connections/route.js +9 -0
  87. package/app/.next/server/app/api/runtime-connections/route.js.nft.json +1 -0
  88. package/app/.next/server/app/api/runtime-connections/route_client-reference-manifest.js +3 -0
  89. package/app/.next/server/app/api/service-grants/route.js +2 -2
  90. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js +7 -6
  92. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js +7 -6
  94. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js +4 -4
  96. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route/app-paths-manifest.json +3 -0
  98. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route/build-manifest.json +12 -0
  99. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route/server-reference-manifest.json +4 -0
  100. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js +12 -0
  101. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js.nft.json +1 -0
  102. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route_client-reference-manifest.js +3 -0
  103. package/app/.next/server/app/api/v0/agents/[agentId]/route.js +7 -6
  104. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js +7 -6
  106. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js +7 -6
  108. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/v0/agents/route.js +7 -6
  110. package/app/.next/server/app/api/v0/agents/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/v0/capabilities/route.js +7 -6
  112. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/v0/conversations/[id]/route.js +4 -4
  114. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js +7 -6
  116. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/v0/exchanges/[id]/route.js +7 -6
  118. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/v0/exchanges/route.js +7 -6
  120. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/v0/mcp/route.js +8 -7
  122. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route/app-paths-manifest.json +3 -0
  124. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route/build-manifest.json +12 -0
  125. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route/server-reference-manifest.json +4 -0
  126. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js +12 -0
  127. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js.nft.json +1 -0
  128. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route_client-reference-manifest.js +3 -0
  129. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route/app-paths-manifest.json +3 -0
  130. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route/build-manifest.json +12 -0
  131. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route/server-reference-manifest.json +4 -0
  132. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js +12 -0
  133. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js.nft.json +1 -0
  134. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route_client-reference-manifest.js +3 -0
  135. package/app/.next/server/app/api/v0/pins/[pinRef]/route/app-paths-manifest.json +3 -0
  136. package/app/.next/server/app/api/v0/pins/[pinRef]/route/build-manifest.json +12 -0
  137. package/app/.next/server/app/api/v0/pins/[pinRef]/route/server-reference-manifest.json +4 -0
  138. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js +12 -0
  139. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js.nft.json +1 -0
  140. package/app/.next/server/app/api/v0/pins/[pinRef]/route_client-reference-manifest.js +3 -0
  141. package/app/.next/server/app/api/v0/requests/[id]/route.js +4 -4
  142. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js +7 -6
  144. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route/app-paths-manifest.json +3 -0
  146. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route/build-manifest.json +12 -0
  147. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route/server-reference-manifest.json +4 -0
  148. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js +12 -0
  149. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js.nft.json +1 -0
  150. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route_client-reference-manifest.js +3 -0
  151. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js +4 -4
  152. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/wakes/[id]/decision/route.js +4 -4
  154. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/wakes/[id]/retry/route.js +4 -4
  156. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  157. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  158. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/exchanges/page.js.nft.json +1 -1
  160. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/exchanges.html +1 -1
  162. package/app/.next/server/app/exchanges.rsc +3 -3
  163. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +3 -3
  164. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +2 -2
  165. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +3 -3
  166. package/app/.next/server/app/index.html +1 -1
  167. package/app/.next/server/app/index.rsc +3 -3
  168. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  169. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  170. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  171. package/app/.next/server/app/page.js.nft.json +1 -1
  172. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  174. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/settings.html +1 -1
  176. package/app/.next/server/app/settings.rsc +3 -3
  177. package/app/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  178. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  179. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  180. package/app/.next/server/app/threads/[id]/page.js.nft.json +1 -1
  181. package/app/.next/server/app/threads/[id]/page_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app-paths-manifest.json +7 -0
  183. package/app/.next/server/chunks/1oeh_server_app_api_bots_[id]_sessions_[ref]_pins_route_actions_0e1st6o.js +3 -0
  184. package/app/.next/server/chunks/[root-of-the-server]__02kssr-._.js +3 -0
  185. package/app/.next/server/chunks/[root-of-the-server]__06qkt0f._.js +3 -0
  186. package/app/.next/server/chunks/[root-of-the-server]__08qhrch._.js +3 -0
  187. package/app/.next/server/chunks/[root-of-the-server]__097ptn_._.js +3 -0
  188. package/app/.next/server/chunks/[root-of-the-server]__09m9-pe._.js +3 -0
  189. package/app/.next/server/chunks/[root-of-the-server]__0b7w1z3._.js +3 -0
  190. package/app/.next/server/chunks/[root-of-the-server]__0f5yqjs._.js +3 -0
  191. package/app/.next/server/chunks/[root-of-the-server]__0g4um3-._.js +44 -0
  192. package/app/.next/server/chunks/[root-of-the-server]__0hro5ey._.js +3 -0
  193. package/app/.next/server/chunks/[root-of-the-server]__0hwpgxq._.js +3 -0
  194. package/app/.next/server/chunks/[root-of-the-server]__0izjfmr._.js +355 -60
  195. package/app/.next/server/chunks/[root-of-the-server]__0lwsto-._.js +5 -0
  196. package/app/.next/server/chunks/[root-of-the-server]__0s1enbp._.js +3 -0
  197. package/app/.next/server/chunks/[root-of-the-server]__0uq7sci._.js +3 -0
  198. package/app/.next/server/chunks/[root-of-the-server]__0wg992i._.js +3 -0
  199. package/app/.next/server/chunks/[root-of-the-server]__13cd2fb._.js +44 -0
  200. package/app/.next/server/chunks/[root-of-the-server]__17mum5-._.js +3 -0
  201. package/app/.next/server/chunks/[root-of-the-server]__1879cge._.js +3 -0
  202. package/app/.next/server/chunks/{[root-of-the-server]__17oz13o._.js → [root-of-the-server]__1_01-13._.js} +3 -3
  203. package/app/.next/server/chunks/[root-of-the-server]__1a2dh11._.js +3 -0
  204. package/app/.next/server/chunks/[root-of-the-server]__1bhzfu_._.js +7 -0
  205. package/app/.next/server/chunks/[root-of-the-server]__1co3sok._.js +44 -0
  206. package/app/.next/server/chunks/[root-of-the-server]__1eh30sp._.js +3 -0
  207. package/app/.next/server/chunks/[root-of-the-server]__1fmsid0._.js +44 -0
  208. package/app/.next/server/chunks/[root-of-the-server]__1i388e2._.js +3 -0
  209. package/app/.next/server/chunks/[root-of-the-server]__1kvvs4u._.js +3 -0
  210. package/app/.next/server/chunks/[root-of-the-server]__1qbgs3m._.js +3 -0
  211. package/app/.next/server/chunks/[root-of-the-server]__1s6h1sj._.js +3 -0
  212. package/app/.next/server/chunks/[root-of-the-server]__1slu7d7._.js +2 -2
  213. package/app/.next/server/chunks/[root-of-the-server]__1tuqc5v._.js +3 -0
  214. package/app/.next/server/chunks/[root-of-the-server]__1v609eq._.js +44 -0
  215. package/app/.next/server/chunks/[root-of-the-server]__1y_j43n._.js +3 -0
  216. package/app/.next/server/chunks/[root-of-the-server]__1zdv-vb._.js +3 -0
  217. package/app/.next/server/chunks/[root-of-the-server]__1zjs2tr._.js +3 -0
  218. package/app/.next/server/chunks/_0061c2q._.js +3 -0
  219. package/app/.next/server/chunks/_023se5j._.js +44 -0
  220. package/app/.next/server/chunks/_02pb_qv._.js +44 -0
  221. package/app/.next/server/chunks/_05ro-21._.js +44 -0
  222. package/app/.next/server/chunks/_07on0dc._.js +44 -0
  223. package/app/.next/server/chunks/_08208nz._.js +44 -0
  224. package/app/.next/server/chunks/_0a2do3x._.js +1 -1
  225. package/app/.next/server/chunks/_0fe5qz5._.js +44 -0
  226. package/app/.next/server/chunks/_0i8_xso._.js +3 -0
  227. package/app/.next/server/chunks/_0qoji5a._.js +44 -0
  228. package/app/.next/server/chunks/_0uv2pi5._.js +44 -0
  229. package/app/.next/server/chunks/_0wdl90-._.js +44 -0
  230. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  231. package/app/.next/server/chunks/_11-q8k1._.js +3 -0
  232. package/app/.next/server/chunks/_11ijk9k._.js +44 -0
  233. package/app/.next/server/chunks/_198sn69._.js +44 -0
  234. package/app/.next/server/chunks/_1ba_5hd._.js +44 -0
  235. package/app/.next/server/chunks/_1ess5if._.js +3 -0
  236. package/app/.next/server/chunks/_1i0zod4._.js +3 -0
  237. package/app/.next/server/chunks/_1m89jq5._.js +44 -0
  238. package/app/.next/server/chunks/_1n39wr_._.js +44 -0
  239. package/app/.next/server/chunks/_1ryxqo1._.js +44 -0
  240. package/app/.next/server/chunks/_1vemgly._.js +44 -0
  241. package/app/.next/server/chunks/_next-internal_server_app_api_runtime-connections_route_actions_06rulng.js +3 -0
  242. package/app/.next/server/chunks/_next-internal_server_app_api_v0_agents_[agentId]_pins_route_actions_08uftk9.js +3 -0
  243. package/app/.next/server/chunks/_next-internal_server_app_api_v0_pins_[pinRef]_detach_route_actions_0nk3268.js +3 -0
  244. package/app/.next/server/chunks/_next-internal_server_app_api_v0_pins_[pinRef]_messages_route_actions_1wenu96.js +3 -0
  245. package/app/.next/server/chunks/_next-internal_server_app_api_v0_pins_[pinRef]_route_actions_0z7fu_c.js +3 -0
  246. package/app/.next/server/chunks/_next-internal_server_app_api_v0_sessions_[ref]_pins_route_actions_0y3ere3.js +3 -0
  247. package/app/.next/server/chunks/lib_0kik6bx._.js +1 -1
  248. package/app/.next/server/chunks/lib_0lqoyb4._.js +217 -0
  249. package/app/.next/server/chunks/lib_0pe3tiv._.js +1 -1
  250. package/app/.next/server/chunks/lib_0riiofz._.js +44 -0
  251. package/app/.next/server/chunks/lib_16j2293._.js +217 -0
  252. package/app/.next/server/chunks/lib_1nb_61e._.js +217 -0
  253. package/app/.next/server/chunks/lib_service-api-http_ts_0xzqhny._.js +5 -5
  254. package/app/.next/server/chunks/lib_session-pins_ts_0lmxnwj._.js +20 -0
  255. package/app/.next/server/chunks/ssr/_0epgorw._.js +3 -0
  256. package/app/.next/server/chunks/ssr/_1cvuhjt._.js +3 -0
  257. package/app/.next/server/chunks/ssr/_1n5mvo5._.js +3 -0
  258. package/app/.next/server/chunks/ssr/_1o94bnv._.js +1 -1
  259. package/app/.next/server/chunks/ssr/app_bots_[id]_config_page_tsx_1e0uue9._.js +1 -1
  260. package/app/.next/server/chunks/ssr/app_components_AgentDeckRuntime_tsx_024janf._.js +1 -1
  261. package/app/.next/server/chunks/ssr/app_components_ExchangeCard_tsx_1shfcgn._.js +3 -0
  262. package/app/.next/server/chunks/ssr/app_exchanges_page_tsx_0j-n2a1._.js +3 -0
  263. package/app/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js +3 -0
  264. package/app/.next/server/middleware-build-manifest.js +3 -3
  265. package/app/.next/server/pages/404.html +1 -1
  266. package/app/.next/server/pages/500.html +1 -1
  267. package/app/.next/server/server-reference-manifest.js +1 -1
  268. package/app/.next/server/server-reference-manifest.json +1 -1
  269. package/app/.next/static/chunks/0bhd8eso48g27.js +1 -0
  270. package/app/.next/static/chunks/1ku9himlsx-hn.js +1 -0
  271. package/app/.next/static/chunks/21aqekm5z0j47.js +1 -0
  272. package/app/.next/static/chunks/2a8bomryx66oj.css +3 -0
  273. package/app/.next/static/chunks/3230ywnpii0s6.js +3 -0
  274. package/app/.next/static/chunks/35l2c95bd-jud.js +1 -0
  275. package/app/.next/static/chunks/3cijpn6vx3yzv.js +1 -0
  276. package/app/.next/static/chunks/3ue9194j59kem.js +1 -0
  277. package/app/.next/static/chunks/44ese2s4gzze_.js +1 -0
  278. package/app/BUILD_INFO.json +2 -2
  279. package/app/package.json +1 -1
  280. package/app/server.js +1 -1
  281. package/dist/cli.d.ts +1 -1
  282. package/dist/cli.js +2 -2
  283. package/dist/clients.js +7 -3
  284. package/dist/config.d.ts +2 -1
  285. package/dist/config.js +5 -4
  286. package/dist/contract.d.ts +1 -0
  287. package/dist/contract.js +5 -0
  288. package/dist/home.d.ts +1 -1
  289. package/dist/home.js +1 -1
  290. package/dist/index.d.ts +1 -1
  291. package/dist/index.js +1 -1
  292. package/dist/product.js +1 -1
  293. package/dist/upstream.js +2 -2
  294. package/package.json +1 -1
  295. package/schemas/botmancers.mcp.v2.tools.json +1588 -4
  296. package/skills/botmancers-collaboration/SKILL.md +21 -6
  297. package/skills/botmancers-collaboration/references/workflows.md +72 -0
  298. package/app/.next/server/chunks/[root-of-the-server]__0ab4e_k._.js +0 -3
  299. package/app/.next/server/chunks/[root-of-the-server]__0qozubc._.js +0 -3
  300. package/app/.next/server/chunks/[root-of-the-server]__0wtzcge._.js +0 -3
  301. package/app/.next/server/chunks/[root-of-the-server]__10m3szc._.js +0 -3
  302. package/app/.next/server/chunks/[root-of-the-server]__15hknun._.js +0 -3
  303. package/app/.next/server/chunks/[root-of-the-server]__16ikszu._.js +0 -3
  304. package/app/.next/server/chunks/[root-of-the-server]__1afl75n._.js +0 -3
  305. package/app/.next/server/chunks/[root-of-the-server]__1kvvdpx._.js +0 -7
  306. package/app/.next/server/chunks/[root-of-the-server]__1qoa704._.js +0 -7
  307. package/app/.next/server/chunks/_06rti77._.js +0 -30
  308. package/app/.next/server/chunks/_09k38l1._.js +0 -3
  309. package/app/.next/server/chunks/_0dlg5kj._.js +0 -30
  310. package/app/.next/server/chunks/_0dyculb._.js +0 -30
  311. package/app/.next/server/chunks/_0eig2jc._.js +0 -30
  312. package/app/.next/server/chunks/_0ggf7vy._.js +0 -3
  313. package/app/.next/server/chunks/_0gtqbub._.js +0 -3
  314. package/app/.next/server/chunks/_0i7ga8c._.js +0 -3
  315. package/app/.next/server/chunks/_0kghtb6._.js +0 -3
  316. package/app/.next/server/chunks/_0orubev._.js +0 -3
  317. package/app/.next/server/chunks/_0sfpe9z._.js +0 -3
  318. package/app/.next/server/chunks/_0th2j4w._.js +0 -3
  319. package/app/.next/server/chunks/_0uz7r06._.js +0 -30
  320. package/app/.next/server/chunks/_0x05ts4._.js +0 -3
  321. package/app/.next/server/chunks/_0y3geoj._.js +0 -30
  322. package/app/.next/server/chunks/_12tq5uv._.js +0 -30
  323. package/app/.next/server/chunks/_147-4gl._.js +0 -3
  324. package/app/.next/server/chunks/_14ky6a2._.js +0 -30
  325. package/app/.next/server/chunks/_16kbxdt._.js +0 -30
  326. package/app/.next/server/chunks/_1963m2f._.js +0 -30
  327. package/app/.next/server/chunks/_1_34_h3._.js +0 -30
  328. package/app/.next/server/chunks/_1cc-2mx._.js +0 -3
  329. package/app/.next/server/chunks/_1ee4ej2._.js +0 -3
  330. package/app/.next/server/chunks/_1esxu1s._.js +0 -3
  331. package/app/.next/server/chunks/_1gn7eh7._.js +0 -3
  332. package/app/.next/server/chunks/_1gw7qwf._.js +0 -3
  333. package/app/.next/server/chunks/_1inyx08._.js +0 -3
  334. package/app/.next/server/chunks/_1kjsnlr._.js +0 -3
  335. package/app/.next/server/chunks/_1nurj3f._.js +0 -30
  336. package/app/.next/server/chunks/_1p2rf_n._.js +0 -30
  337. package/app/.next/server/chunks/_1p8rola._.js +0 -3
  338. package/app/.next/server/chunks/_1u6tw78._.js +0 -30
  339. package/app/.next/server/chunks/app_api_import-capabilities_route_ts_013w1kt._.js +0 -3
  340. package/app/.next/server/chunks/lib_0t3s3rj._.js +0 -30
  341. package/app/.next/server/chunks/lib_0zxi6rx._.js +0 -148
  342. package/app/.next/server/chunks/lib_12udr7g._.js +0 -148
  343. package/app/.next/server/chunks/lib_draft_ts_1atoius._.js +0 -3
  344. package/app/.next/server/chunks/lib_session-catalog_ts_1i7f38f._.js +0 -30
  345. package/app/.next/server/chunks/ssr/_00ysoah._.js +0 -3
  346. package/app/.next/server/chunks/ssr/_157wnb_._.js +0 -3
  347. package/app/.next/server/chunks/ssr/app_1-nwnha._.js +0 -3
  348. package/app/.next/server/chunks/ssr/app_components_0bhuhd-._.js +0 -3
  349. package/app/.next/server/chunks/ssr/app_components_0w2_b3t._.js +0 -3
  350. package/app/.next/static/chunks/0774d7ob6aze_.js +0 -1
  351. package/app/.next/static/chunks/0d3ein53nlgja.js +0 -1
  352. package/app/.next/static/chunks/1i5xroz391zkb.js +0 -1
  353. package/app/.next/static/chunks/1vz50l951sr9e.css +0 -3
  354. package/app/.next/static/chunks/24ggj819yt3y6.js +0 -1
  355. package/app/.next/static/chunks/2_8lcalraul5s.js +0 -3
  356. package/app/.next/static/chunks/30i0-l04mmdvk.js +0 -1
  357. package/app/.next/static/chunks/3wdlh25l1vww9.js +0 -1
  358. /package/app/.next/static/{ewp56HqU5-d9bpFog3bli → gh3shm8hnVqXLr75rmvsL}/_buildManifest.js +0 -0
  359. /package/app/.next/static/{ewp56HqU5-d9bpFog3bli → gh3shm8hnVqXLr75rmvsL}/_clientMiddlewareManifest.js +0 -0
  360. /package/app/.next/static/{ewp56HqU5-d9bpFog3bli → gh3shm8hnVqXLr75rmvsL}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: botmancers-collaboration
3
- description: Work with other Botmancers Agents and their sessions through the Botmancers MCP server (botmancers_* tools). Use when the user asks to message, ask, or hand work to a Botmancers Agent (for example Codex or Grok), continue an Agent's session, hand off a task between Agents, or check an exchange or conversation result.
3
+ description: Work with other Botmancers Agents and their sessions through the Botmancers MCP server (botmancers_* tools). Use when the user asks to message, ask, or hand work to a Botmancers Agent (for example Codex or Grok), ask several questions in or resume one of an Agent's past sessions, hand off a task between Agents, or check an exchange, pin, or conversation result.
4
4
  license: MIT
5
5
  compatibility: Needs an MCP connection to the Botmancers bridge (contract botmancers.mcp.v2). The MCP tools work without this skill.
6
6
  ---
@@ -24,7 +24,9 @@ every flow and the recovery for every error.
24
24
  `botmancers_list_sessions` for that Agent. Match on the session `title`
25
25
  and `status`. Messages, `Ask`, and `Continue` all run in the source
26
26
  session, so it must be `active` and `resumable`. If the history matters,
27
- call `botmancers_list_conversations`. If only one session title
27
+ call `botmancers_list_conversations`. Each session's `actions` says
28
+ whether Ask from this context, Resume work here, and Hand off to… are
29
+ available now. If only one session title
28
30
  contains the user's words, use that session. If the words fit more than
29
31
  one title (for example "pricing research" fits both "Pricing research"
30
32
  and "Pricing research follow-up"), show the user those titles and ask
@@ -39,7 +41,10 @@ Check the rows in order and use the first one that fits:
39
41
  | New work for a coordinator, with no existing session | Fresh task | `botmancers_health`, `botmancers_start_task`, `botmancers_get_request`, `botmancers_get_conversation` |
40
42
  | A new instruction or further work for the Agent that owns an `active`, `resumable` session, in that same session | Same-session message | `botmancers_send_to_session`, `botmancers_get_exchange` |
41
43
  | An answer to a question about what a session already did, decided, or knows | `Ask` | `botmancers_create_exchange` (`mode: "ask"`), `botmancers_get_exchange` |
42
- | Another Agent should carry the work on in a fresh session of its own | `Continue` | `botmancers_create_exchange` (`mode: "continue"`, `destination.agent_id`), `botmancers_get_exchange` |
44
+ | Another Agent should carry the work on in a fresh session of its own (Hand off to…) | `Continue` | `botmancers_create_exchange` (`mode: "continue"`, `destination.agent_id`), `botmancers_get_exchange` |
45
+ | Several questions, one after another, in one past session (Ask from this context) | Pinned ask | `botmancers_pin_session` (`action: "ask"`), `botmancers_send_to_pin`, `botmancers_get_pin`, `botmancers_detach_pin` |
46
+ | Edits in that exact session, approved by the user (Resume work here) | Resume work here | `botmancers_pin_session` (`action: "resume"`, `approve_write: true`), `botmancers_send_to_pin`, `botmancers_get_pin`, `botmancers_detach_pin` |
47
+ | A message to a named Agent, with no session named | Message an Agent | `botmancers_message_agent`, `botmancers_get_pin`, `botmancers_send_to_pin` |
43
48
 
44
49
  - A question about a session's earlier work is an `Ask`, even when the user
45
50
  names that session ("ask Grok in the uploader review whether the cap is
@@ -54,10 +59,17 @@ Check the rows in order and use the first one that fits:
54
59
  runtime, model, tool profile, and destination session. Never pass them.
55
60
  - Pick a new `idempotency_key` for each new action, and reuse it only to
56
61
  retry that same action with the same arguments.
62
+ - A pin (from `botmancers_pin_session` or `botmancers_message_agent`) keeps
63
+ every `botmancers_send_to_pin` on that exact session. Keep using its
64
+ `pin_ref` for follow-ups; switch only with `replace_pin_ref`, and call
65
+ `botmancers_detach_pin` when done. Set `approve_write` only after the
66
+ user explicitly approved edits. See
67
+ [pinned sessions](references/workflows.md#pinned-session).
57
68
 
58
69
  ## 3. Observe
59
70
 
60
- Poll `botmancers_get_request` (fresh task) or `botmancers_get_exchange`
71
+ Poll `botmancers_get_request` (fresh task), `botmancers_get_pin` (a pin,
72
+ until the turn is not `running`), or `botmancers_get_exchange`
61
73
  (everything else) until `terminal` is true. Wait 2 seconds first, then
62
74
  double the wait up to 30 seconds, or use `polling` from
63
75
  `botmancers_capabilities`. Stop after about 10 minutes and report the
@@ -83,8 +95,11 @@ stop.
83
95
  - `grant_required`, `agent_not_found`, `session_not_found`: tell the user the
84
96
  Agent or session does not exist or is not granted to you. Only the
85
97
  Botmancers owner can grant access. You cannot.
86
- - `session_ended`, `session_not_resumable`: tell the user, list that Agent's
87
- `active` sessions, and let the user choose.
98
+ - `session_ended`, `session_not_resumable`, `session_missing`: tell the
99
+ user, list that Agent's sessions, and let the user choose.
100
+ - Any error with `recovery`: follow it (`ask_owner`, `approve_write`,
101
+ `choose_session`, `pin_again`). `workspace_required` and
102
+ `no_eligible_session` need the owner; a pin never moves on its own.
88
103
  - `idempotency_conflict`, `exchange_terminal`, `conflict`: read the existing
89
104
  exchange first, then decide.
90
105
  - A terminal `failed` or `cancelled` exchange: report `failure.code` and its
@@ -14,6 +14,10 @@ up. Codex and Grok are example Agent names.
14
14
  - [Same-session message](#same-session-message)
15
15
  - [Ask](#ask)
16
16
  - [Continue](#continue)
17
+ - [Message a registered Agent](#message-a-registered-agent)
18
+ - [Pinned session](#pinned-session)
19
+ - [Resume work here](#resume-work-here)
20
+ - [Detach or switch](#detach-or-switch)
17
21
  - [Polling and backoff](#polling-and-backoff)
18
22
  - [Permission and grants](#permission-and-grants)
19
23
  - [Ended session](#ended-session)
@@ -78,6 +82,9 @@ session?"
78
82
 
79
83
  ## Continue
80
84
 
85
+ Continue is the Hand off to… action: a bounded handoff packet to a
86
+ different Agent, which starts a fresh session of its own.
87
+
81
88
  Codex hands work to Grok: "Hand the uploader work in Codex's retry session
82
89
  to Grok so it can add the tests."
83
90
 
@@ -98,6 +105,71 @@ to Grok so it can add the tests."
98
105
  The destination Agent always starts a fresh session of its own. You never
99
106
  choose the destination session, Deck, runtime, model, or tool profile.
100
107
 
108
+ ## Message a registered Agent
109
+
110
+ "Ask Grok how the release is going." No session is named.
111
+
112
+ 1. `botmancers_capabilities {}`: `botmancers_message_agent` is listed for
113
+ `<agent_id of Grok>`.
114
+ 2. `botmancers_message_agent { "agent_id": "<agent_id of Grok>", "content": "How is the release going?", "idempotency_key": "<new key>" }`.
115
+ Botmancers picks the session: Grok's home session, else its newest
116
+ session that can take a message, else a new read-only session only when
117
+ Grok's owner allows it. `resolution` says which (`home`, `newest`,
118
+ `started`), and `pin.session.title` names it.
119
+ 3. Poll `botmancers_get_pin { "pin_ref": "<pin_ref>" }` until the turn is not
120
+ `running`; the reply is the turn's `answer`.
121
+ 4. Follow-ups go to the same session with
122
+ `botmancers_send_to_pin { "pin_ref": "<pin_ref>", "content": "And the blockers?", "idempotency_key": "<new key>" }`.
123
+
124
+ `workspace_required` means Grok has no session that can take a message and
125
+ no default workspace for a new one; `no_eligible_session` means its policy
126
+ does not allow a new one. Both are for the owner (`recovery: ask_owner`).
127
+ Tell the user; do not try another Agent.
128
+
129
+ ## Pinned session
130
+
131
+ Ask from this context, several times: "In Codex's uploader session, ask
132
+ what it decided about leases, then what it would test next."
133
+
134
+ 1. `botmancers_list_sessions { "agent_id": "<agent_id of Codex>" }`: match
135
+ the title, and check that the item's `actions.ask.available` is true.
136
+ 2. `botmancers_pin_session { "session_ref": "<ref>", "action": "ask", "idempotency_key": "<new key>" }`
137
+ returns `pin.pin_ref`.
138
+ 3. `botmancers_send_to_pin { "pin_ref": "<pin_ref>", "content": "What did you decide about leases?", "idempotency_key": "<new key>" }`,
139
+ then poll `botmancers_get_pin` until the turn's `state` is not `running`.
140
+ 4. Repeat step 3 for the next question with a new key. Every turn goes to
141
+ the same `pin.session.ref`, also after a Botmancers restart.
142
+ 5. `botmancers_detach_pin { "pin_ref": "<pin_ref>" }` when done.
143
+
144
+ If a turn fails (`source_session_busy`, `provider_failed`,
145
+ `session_missing`), the pin stays on that session. Retry later with the
146
+ same key, or tell the user and let them choose another session. Never
147
+ move the conversation to another session on your own.
148
+
149
+ ## Resume work here
150
+
151
+ "Have Codex finish the uploader fix in that same session. I approve
152
+ edits." The same Agent, the same exact session, with workspace-write
153
+ authority.
154
+
155
+ 1. Check the session's `actions.resume.available`. If not, report its
156
+ `reason` (for example a read-only policy the owner must change).
157
+ 2. Only after the user explicitly approved edits:
158
+ `botmancers_pin_session { "session_ref": "<ref>", "action": "resume", "approve_write": true, "idempotency_key": "<new key>" }`.
159
+ Without `approve_write` the answer is `approval_required`: ask the user.
160
+ 3. Send the work with `botmancers_send_to_pin` and poll `botmancers_get_pin`
161
+ as in [Pinned session](#pinned-session).
162
+
163
+ To give the work to a different Agent instead, use
164
+ [Continue](#continue) (Hand off to…).
165
+
166
+ ## Detach or switch
167
+
168
+ - Switch: `botmancers_pin_session { "session_ref": "<other ref>", "action": "ask", "replace_pin_ref": "<pin_ref>", "idempotency_key": "<new key>" }`
169
+ detaches the old pin and creates the new one in one step.
170
+ - Detach: `botmancers_detach_pin { "pin_ref": "<pin_ref>" }`. A detached pin
171
+ answers `pin_detached` (`recovery: pin_again`).
172
+
101
173
  ## Polling and backoff
102
174
 
103
175
  - Wait 2 seconds after creating a request or exchange, then 4, 8, 16, and
@@ -1,3 +0,0 @@
1
- module.exports=[54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},57007,e=>{"use strict";var t=e.i(62294),r=e.i(52036);async function n(){let e="ok";try{t.default.prepare("SELECT 1").get()}catch{e="error"}return Response.json({status:"ok"===e?"ok":"degraded",service:"botmancers-core",version:"0.4.2",commit:"4f4ccf7d9ccd5e7ffa3f2fe12c724dafb8de31f4",engine:e,home:(0,r.botmancersHome)()},{status:"ok"===e?200:503,headers:{"cache-control":"no-store"}})}e.s(["GET",0,n,"dynamic",0,"force-dynamic"])},61370,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),d=e.i(87718),c=e.i(95169),u=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),g=e.i(10372),v=e.i(93695),m=e.i(9580);e.i(52474);var _=e.i(220);let y=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/health/route",pathname:"/api/health",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/health/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(57007),...{}}),{workAsyncStorage:x,workUnitAsyncStorage:k,serverHooks:w}=y;async function E(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),y.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/health/route";x=x.replace(/\/index$/,"")||"/";let k=await y.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,deploymentId:E,params:R,nextConfig:b,parsedUrl:S,isDraftMode:A,prerenderManifest:C,routerServerContext:T,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:P,clientReferenceManifest:j,serverActionsManifest:q}=k,I=(0,s.normalizeAppPath)(x),H=!!C.routes[P]&&(y.isDev||(0,m.isRouteCacheOwner)(P,y.cacheOwner,C.routes[P])),D=!!(C.dynamicRoutes[I]||H),M=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,S,!1):t.end("This page could not be found"),null);if(D&&!A){let e=C.dynamicRoutes[I];if(e&&!1===e.fallback&&!H){if(b.adapterPath)return await M();throw new v.NoFallbackError}}let U=null;!D||y.isDev||A||(U="/index"===(U=P)?"/":U);let $=!0===y.isDev||!D,B=D&&!$;q&&j&&(0,o.setManifestsSingleton)({page:x,clientReferenceManifest:j,serverActionsManifest:q});let L=e.method||"GET",F=(0,i.getTracer)(),G=F.getActiveScopeSpan(),K=!!(null==T?void 0:T.isWrappedByNextServer),J=!!(0,a.getRequestMeta)(e,"minimalMode"),W=(0,a.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,b,C,J);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let z={params:R,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts,useCacheTimeout:b.experimental.useCacheTimeout},cacheComponents:!!b.cacheComponents,validationLevel:b.experimental.instantInsights.validationLevel,isDraftMode:A,supportsDynamicResponse:$,incrementalCache:W,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:b.cacheLife,staticPageGenerationTimeout:b.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>y.onRequestError(e,t,n,a,T)},sharedContext:{buildId:w,deploymentId:E}},V=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),Z=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!J&&O&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await y.handle(Z,z);e.fetchMetrics=z.renderOpts.fetchMetrics;let i=z.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let o=z.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,X,a,i),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);o&&(t[g.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,n=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?b.expireTime:void 0:z.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:O})},!1,T),t}},Y=async(a,o)=>{try{var s,l;let a=await y.handleResponse({req:e,nextConfig:b,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:Q,waitUntil:n.waitUntil,isMinimalMode:J});if(!D)return;if((null==a||null==(s=a.value)?void 0:s.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(l=a.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});J||t.setHeader("x-nextjs-cache",O?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,f.fromNodeOutgoingHttpHeaders)(a.value.headers);J&&D||i.delete(g.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,h.getCacheControlHeader)(a.cacheControl)),await (0,p.sendResponse)(V,X,new Response(a.value.body,{headers:i,status:a.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:O})},!1,T),D)throw t;await (0,p.sendResponse)(V,X,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:i.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||I,s=`${L} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),a.updateName(s),o&&o!==a&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(K&&G)await Y(G,void 0);else{let t=F.getActiveScopeSpan();await F.withPropagatedContext(e.headers,()=>F.trace(c.BaseServerSpan.handleRequest,{spanName:`${L} ${x}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!K)}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:k})},"routeModule",0,y,"serverHooks",0,w,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,k])},62349,16979,e=>{"use strict";let t=[{id:"purple",label:"Purple",hex:"#7C3AED"},{id:"blue",label:"Blue",hex:"#2563EB"},{id:"teal",label:"Teal",hex:"#0D9488"},{id:"green",label:"Green",hex:"#16A34A"},{id:"amber",label:"Amber",hex:"#B45309"},{id:"orange",label:"Orange",hex:"#EA580C"},{id:"pink",label:"Pink",hex:"#DB2777"},{id:"slate",label:"Slate",hex:"#64748B"}],r=[{id:"dots",label:"Round dots"},{id:"sleepy",label:"Sleepy"},{id:"happy",label:"Happy arcs"},{id:"wide",label:"Wide ovals"}],n=[{id:"folded",label:"Folded arms"},{id:"reaching",label:"Reaching right"},{id:"waving",label:"Waving"}],a=[{id:"none",label:"None"},{id:"crown",label:"Crown"},{id:"glasses",label:"Glasses"},{id:"headset",label:"Headset"},{id:"hat",label:"Hat"},{id:"bow",label:"Bow"}],i={color:"purple",eyes:"dots",hands:"folded",accessory:"none"},o={...i,accessory:"crown"};function s(e){return"chief-of-staff"===String(e??"").trim().toLowerCase()}function l(e,t){return"string"==typeof t&&e.some(e=>e.id===t)}function d(e){let d=l(t,e.avatar_color)?e.avatar_color:i.color,c=l(r,e.avatar_eyes)?e.avatar_eyes:i.eyes;return{color:d,eyes:c,hands:l(n,e.avatar_hands)?e.avatar_hands:i.hands,accessory:l(a,e.avatar_accessory)?e.avatar_accessory:s(e.name)?o.accessory:i.accessory}}e.s(["isChiefOfStaffName",0,s,"resolveAvatar",0,d,"validateAvatarInput",0,function(e){let i=[],o={};if(null==e)return{errors:i,fields:o};if("object"!=typeof e||Array.isArray(e))return{errors:["Invalid avatar: expected an object with color, eyes, hands, and accessory."],fields:o};if(void 0!==e.color)try{o.avatar_color=function(e){if(l(t,e))return e;throw Error(`Invalid avatar color: ${JSON.stringify(String(e))}. Expected one of ${t.map(e=>e.id).join("|")}.`)}(e.color)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.eyes)try{o.avatar_eyes=function(e){if(l(r,e))return e;throw Error(`Invalid avatar eyes: ${JSON.stringify(String(e))}. Expected one of ${r.map(e=>e.id).join("|")}.`)}(e.eyes)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.hands)try{o.avatar_hands=function(e){if(l(n,e))return e;throw Error(`Invalid avatar hands: ${JSON.stringify(String(e))}. Expected one of ${n.map(e=>e.id).join("|")}.`)}(e.hands)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.accessory)try{o.avatar_accessory=function(e){if(l(a,e))return e;throw Error(`Invalid avatar accessory: ${JSON.stringify(String(e))}. Expected one of ${a.map(e=>e.id).join("|")}.`)}(e.accessory)}catch(e){i.push(e instanceof Error?e.message:String(e))}return{errors:i,fields:o}}],16979);let c=["hermes","cursor","claude","codex","muse"],u={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},p="hermes",f={hermes:"hermes-gateway",cursor:"agent-deck-run",claude:"agent-deck-run",codex:"agent-deck-run",muse:"agent-deck-run"};class h extends Error{code="invalid-agent";constructor(e){super(`Invalid agent: ${JSON.stringify(String(e))}. Expected one of ${c.join("|")}.`)}}class g extends Error{code="invalid-deck";constructor(e){super(`Invalid deck ID: ${JSON.stringify("string"==typeof e?e:String(e))}. Select a deck from the configured Agent Deck server.`)}}let v="Deck ID is required. Select an Agent Deck before saving this agent.",m=`Agent is required. Expected one of ${c.join("|")}.`;function _(e){if(null==e)return null;let t=String(e).trim();if(!t)return null;if(c.includes(t))return t;throw new h(e)}function y(e){return null==e?null:String(e).trim()||null}function x(e){if(null==e)return null;if("string"!=typeof e)throw new g(e);let t=e.trim();if(!t)return null;if(!function(e){if(e.length>200||/\s/.test(e))return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<32||127===r)return!1}return!0}(t))throw new g(e);return t}function k(e){if(!0===e||1===e)return!0;if("string"==typeof e){let t=e.trim().toLowerCase();return"1"===t||"true"===t}return!1}function w(e){let t=p,r=!0;try{t=_(e.agent)??p}catch{r=!1}let n=y(e.deck_id),a=y(e.deck_name),i=y(e.working_directory),o=null===n||k(e.needs_deck_selection),s=r&&!o;return{agent:t,deck_id:n,deck_name:a,working_directory:i,needs_deck_selection:o,launchable:s}}let E=["codex","claude","cursor","muse"];function R(e){let t=y(e);return t&&E.includes(t)?t:null}let b=["runtime","agent_client","persistent_runtime","coding_runtime","needs_deck_reselection"];function S(e,t){(void 0!==e.runtime||void 0!==e.agent_client)&&t.push("Fields runtime/agent_client are no longer accepted. Send agent (hermes|cursor|claude|codex|muse) and deck_id instead."),void 0!==e.deck_name&&t.push("deck_name is a read-only legacy reference. Select a deck_id from the configured Agent Deck server instead.")}e.s(["AGENTS",0,c,"DEFAULT_AGENT",0,p,"agentTransport",0,function(e){return f[e]},"applyAgentUpdate",0,function(e,t){let r=w(e),n=t.agent??r.agent,a=void 0!==t.working_directory?t.working_directory:r.working_directory;return void 0!==t.deck_id?{agent:n,deck_id:t.deck_id,deck_name:null,working_directory:a,needs_deck_selection:!1}:{agent:n,deck_id:r.deck_id,deck_name:r.deck_name,working_directory:a,needs_deck_selection:r.needs_deck_selection}},"buildAvailabilityPayload",0,function(e){let t=[];for(let r of c)e.includes(r)&&t.push({agent:r,label:u[r],launchable:!0});return{agents:t}},"hasAgentUpdate",0,function(e){return["agent","deck_id","working_directory","runtime","agent_client","deck_name"].some(t=>void 0!==e[t])},"migrateLegacyAgentFields",0,function(e){let t=y(e.deck_id),r=y(e.deck_name),n=y(e.working_directory);try{let i=_(e.agent);if(i){var a;return{agent:i,deck_id:t,deck_name:r,working_directory:n,needs_deck_selection:null===t||(a=e.needs_deck_selection,k(a)),migrated:!1}}}catch{}let i=y(e.runtime),o=p,s=k(e.needs_deck_reselection);if("agent-deck"===i){let t=R(e.agent_client);t?o=t:s=!0}else if("hermes"!==i){let t=R(e.coding_runtime);t&&r&&n&&(o=t,s=!0)}return{agent:o,deck_id:t,deck_name:r,working_directory:n,needs_deck_selection:null===t||s,migrated:!0}},"resolveAgent",0,w,"serializeBot",0,function(e){let t=w(e),r={...e};for(let e of b)delete r[e];return{...r,agent:t.agent,deck_id:t.deck_id,deck_name:t.deck_name,working_directory:t.working_directory,needs_deck_selection:t.needs_deck_selection,launchable:t.launchable,avatar_config:d(e)}},"validateCreateAgent",0,function(e){let t=[];S(e,t);let r=p;try{r=_(e.agent)??p}catch(e){t.push(e instanceof Error?e.message:String(e))}let n=null;try{(n=x(e.deck_id))||t.push(v)}catch(e){t.push(e instanceof Error?e.message:String(e))}return{errors:t,normalized:{agent:r,deck_id:n??"",working_directory:y(e.working_directory)}}},"validateUpdateAgent",0,function(e){let t=[],r={};if(S(e,t),void 0!==e.agent)try{let n=_(e.agent);n?r.agent=n:t.push(m)}catch(e){t.push(e instanceof Error?e.message:String(e))}if(void 0!==e.deck_id)try{let n=x(e.deck_id);n?r.deck_id=n:t.push(v)}catch(e){t.push(e instanceof Error?e.message:String(e))}return void 0!==e.working_directory&&(r.working_directory=y(e.working_directory)),{errors:t,fields:r}}],62349)},52036,e=>{"use strict";var t=e.i(14747);function r(e=process.env){let n=(e.BOTMANCERS_HOME||"").trim();return n?t.default.resolve(n):null}function n(e,t){return(e[t]||"").trim()||null}e.s(["botmancersHome",0,r,"dbPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_DB_PATH");if(a)return a;let i=r(e);return i?t.default.join(i,"data/botmancers.db"):"botmancers.db"},"filesRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_FILES_ROOT");if(a)return t.default.resolve(a);let i=r(e);return i?t.default.join(i,"files"):t.default.resolve(process.cwd(),"files")},"skillsRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_SKILLS_ROOT");if(a)return t.default.resolve(a);let i=r(e);return i?t.default.join(i,"skills"):t.default.resolve(process.cwd(),"skills")},"waitLogPath",0,function(e=process.env){let a=n(e,"HERMES_WAIT_LOG_PATH");if(a)return a;let i=r(e);return i?t.default.join(i,"logs/specialist-waits.jsonl"):t.default.join(process.cwd(),".temporal","specialist-waits.jsonl")}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0ab4e_k._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[33405,(t,e,n)=>{e.exports=t.x("child_process",()=>require("child_process"))},24836,(t,e,n)=>{e.exports=t.x("https",()=>require("https"))},51714,t=>{"use strict";let e=/^[A-Za-z0-9_-]+$/;function n(t){return"printf"===t}class s extends Error{}function o(t){throw new s(t)}function r(t){return"string"==typeof t&&e.test(t)||o("refused: command not allowlisted"),t.length>64&&o("refused: command not allowlisted"),t}let i=/^(?:please\s+)?(?:print|output|display|show|echo)\s+(?:the\s+)?word\s+([A-Za-z0-9_-]+)\s*(.*?)\s*[.?!]?\s*$/i,a=[/^$/,/^wait\s+(\d+)\s*seconds?$/,/^and\s+wait\s+(\d+)\s*seconds?$/,/^wait\s+for\s+(\d+)\s*seconds?$/,/^and\s+wait\s+for\s+(\d+)\s*seconds?$/,/^then\s+wait\s+(\d+)\s*seconds?$/];function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}t.s(["COMMAND_OUTPUT_MAX_BYTES",0,4096,"commandRunPage",0,function(t,e){let n=`printf %s ${t.args.word}`;return'<!doctype html><html><body style="margin:0;background:#0d1117;color:#c9d1d9;font:13px/1.5 ui-monospace,monospace;padding:12px">'+(null===e?`<div class="cmd">$ ${l(n)}</div><div class="dim">waiting ${t.waitSeconds}s…</div>`:`<div class="cmd">$ ${l(n)}</div><div class="out">${l(e)}</div>`)+"</body></html>"},"commandTimeoutMs",0,function(t){return 1e3*t+1e4},"parseCommandAsk",0,function(t){let n=(t||"").trim();if(!n||/^(?:please\s+)?(run|execute)\s+(?:a\s+)?command\b/i.test(n))return null;let s=n.match(i);if(!s)return null;let o=s[1];if(!e.test(o)||o.length>64)return null;let r=(s[2]||"").trim().replace(/^[,\s]+/,"").trim();for(let t of(r=r.replace(/\s+/g," "),a)){let e=r.match(t);if(!e)continue;if(!e[1])return{command:"printf",args:{word:o},waitSeconds:4};let n=Number(e[1]);if(!Number.isInteger(n)||n<1||n>30)break;return{command:"printf",args:{word:o},waitSeconds:n}}return null},"resolveCommand",0,function(t){n(t.command)||o("refused: command not allowlisted");let e=t.args??null,s=e?.format??t.format;void 0!==s&&"%s"!==s&&o("refused: command not allowlisted");let i=r(e?.word??t.word);return{bin:"/usr/bin/printf",argv:["%s",i],display:`printf %s ${i}`}},"validateCommandRequest",0,function(t){var e;n(t.command)||o("refused: command not allowlisted");let s=t.args,i=r(s?.word);return{command:t.command,args:{word:i},waitSeconds:(("number"!=typeof(e=t.waitSeconds)||!Number.isInteger(e)||e<1||e>30)&&o("refused: wait must be 1 to 30 seconds"),e)}}])},2803,77099,t=>{"use strict";var e=t.i(33405),n=t.i(14747),s=t.i(24836),o=t.i(62294);function r(t){try{let e=new URL(t);if("https:"!==e.protocol||e.username||e.password)return null;return t}catch{return null}}function i(t){let e,n=t.match(/^\s*\[run\]\s*([\s\S]*)$/);if(!n)return null;try{e=JSON.parse(n[1])}catch{return null}if(!e||"object"!=typeof e)return null;let s=e,o="string"==typeof s.page?s.page:"string"==typeof s.html?s.html:void 0,r=void 0===o?{}:{page:o,html:o};return"running"===s.state||"stopped"===s.state?{state:s.state,...r}:"done"===s.state&&"string"==typeof s.output?{state:"done",output:s.output,...r}:null}function a(t){let e={state:t.state};"done"===t.state&&"string"==typeof t.output&&(e.output=t.output);let n="string"==typeof t.page?t.page:"string"==typeof t.html?t.html:void 0;return void 0!==n&&(e.page=n),"[run]\n"+JSON.stringify(e)}t.s(["parseCodingLimbAsk",0,function(t){let e=t.trim();return(e.endsWith(".")&&(e=e.slice(0,-1).trim()),"Ask the coding limb which file holds parsePublicPageReadAsk and reply with that path"===e)?{seconds:4}:"Ask the coding limb which file holds parsePublicPageReadAsk and reply with that path wait 20 seconds"===e?{seconds:20}:null},"parseFileReadAsk",0,function(t){let e=t.trim();return(e.endsWith(".")&&(e=e.slice(0,-1).trim()),"Read the file filemint6.txt"===e)?{seconds:4}:"Read the file filemint6.txt wait 20 seconds"===e?{seconds:20}:null},"parsePublicPageReadAsk",0,function(t){let e=t.trim();if(e.endsWith(".")&&(e=e.slice(0,-1).trim()),"Open https://example.com and reply with one word from it"===e)return{seconds:4};let n=e.match(/^Open https:\/\/example\.com and reply with one word from it wait (\d+) seconds$/);if(n&&"20"===n[1])return{seconds:20};let s=e.match(/^Open (https:\/\/[^\s]+) and reply with the page title$/);if(s){let t=r(s[1]);return t?{seconds:4,url:t}:null}let o=e.match(/^Open (https:\/\/[^\s]+) and reply with the page title wait (\d+) seconds$/);if(o&&"20"===o[2]){let t=r(o[1]);return t?{seconds:20,url:t}:null}return null},"parseRun",0,i,"serializeRun",0,a],77099);var l=t.i(52036),d=t.i(51714);let u=globalThis;u.__botmancerFileRuns||(u.__botmancerFileRuns=new Map);let p=u.__botmancerFileRuns;function c(t,e){if(e.stopped)return!1;let n=o.messages.getById(t),s=n?i(n.content):null;return s?.state==="running"}function m(t){let e=o.messages.getById(t),n=e?i(e.content):null;n&&"running"===n.state&&o.messages.replaceContent(t,a({state:"stopped"}))}function f(t,e){let n=p.get(t);n?.child===e&&p.delete(t)}function g(){let t=(0,l.filesRootPath)(),e=n.default.resolve(t,"filemint6.txt");return"filemint6.txt"===n.default.relative(t,e)&&e.startsWith(t+n.default.sep)?e:null}let h=globalThis;h.__botmancerPageRuns||(h.__botmancerPageRuns=new Map);let w=h.__botmancerPageRuns;function b(t,e){let n=w.get(t);n?.child===e&&w.delete(t)}function R(t,e){return new Promise((n,o)=>{let r=s.default.get(t,{timeout:1e4},s=>{if(301===s.statusCode||302===s.statusCode||307===s.statusCode||308===s.statusCode){let n=s.headers.location;if(n)try{if(new URL(n,t).hostname!==e)return void o(Error("Redirect to different host not allowed"))}catch{o(Error("Invalid redirect location"));return}o(Error("Redirect detected"));return}if(200!==s.statusCode)return void o(Error(`HTTP ${s.statusCode}`));let r="";s.on("data",t=>{(r+=t.toString("utf8")).length>1e5&&(s.destroy(),o(Error("Response too large")))}),s.on("end",()=>n(r))});r.on("error",o),r.on("timeout",()=>{r.destroy(),o(Error("Timeout"))})})}let y=globalThis;y.__botmancerCodingLimbRuns||(y.__botmancerCodingLimbRuns=new Map);let C=y.__botmancerCodingLimbRuns;function v(t,e){let n=C.get(t);n?.child===e&&C.delete(t)}async function _(t,e){let n=process.env.CURSOR_API_KEY;if(n)try{await fetch(`https://api.cursor.com/v1/agents/${t}/runs/${e}/cancel`,{method:"POST",headers:{Authorization:`Bearer ${n}`}})}catch{}}let S=globalThis;S.__botmancerCommandRuns||(S.__botmancerCommandRuns=new Map);let P=S.__botmancerCommandRuns;function $(t,e){let n=P.get(t);n?.child===e&&(n.timer&&clearTimeout(n.timer),P.delete(t))}function I(t){try{t.child.kill("SIGTERM")}catch{}setTimeout(()=>{try{t.child.kill("SIGKILL")}catch{}},2e3).unref?.()}t.s(["beginCodingLimbRun",0,function(t,n){if(4!==n&&20!==n||C.has(t))return;let s=o.messages.getById(t),r=s?i(s.content):null;if(!r||"running"!==r.state)return;let l={child:void 0,stopped:!1,agentId:void 0,runId:void 0},d=(0,e.spawn)("/bin/sleep",[String(n)],{stdio:"ignore"});l.child=d,C.set(t,l),d.on("error",()=>{l.stopped=!0,v(t,d),m(t)}),d.on("exit",async(e,n)=>{if(v(t,d),l.stopped||!c(t,l)||n||0!==e||l.stopped||!c(t,l)){l.stopped&&m(t);return}try{let e=process.env.CURSOR_API_KEY;if(!e){!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:"Error: CURSOR_API_KEY not set"}));return}let n=await fetch("https://api.cursor.com/v1/agents",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:{text:"Which file holds parsePublicPageReadAsk in not-so-fat/botmancers? Reply with the path. Do not edit, commit, push, or open a pull request."},repos:[{url:"https://github.com/not-so-fat/botmancers",startingRef:"main"}],autoCreatePR:!1,mode:"plan"})});if(l.stopped||!c(t,l)){l.stopped&&m(t);return}if(!n.ok){!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:`Create failed: ${n.status}`}));return}let s=await n.json(),r=s.agent?.id,i=s.run?.id;if(!r||!i){!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:"Error: No agent or run ID returned"}));return}if(l.agentId=r,l.runId=i,l.stopped||!c(t,l)){await _(r,i),l.stopped&&m(t);return}let d=0;for(;d<120;){if(await new Promise(t=>setTimeout(t,2e3)),d++,l.stopped||!c(t,l)){await _(r,i),l.stopped&&m(t);return}let n=await fetch(`https://api.cursor.com/v1/agents/${r}/runs/${i}`,{headers:{Authorization:`Bearer ${e}`}});if(!n.ok){!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:`Poll failed: ${n.status}`}));return}let s=await n.json();if(l.stopped||!c(t,l)){await _(r,i),l.stopped&&m(t);return}if("FINISHED"===s.status){if("string"==typeof s.result&&c(t,l))return void o.messages.replaceContent(t,a({state:"done",output:s.result}));!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:"Error: No result in response"}));return}if("FAILED"===s.status||"CANCELLED"===s.status){!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:`Run ${s.status.toLowerCase()}`}));return}}!l.stopped&&c(t,l)&&o.messages.replaceContent(t,a({state:"done",output:"Timeout waiting for result"}))}catch(e){if(!l.stopped&&c(t,l)){let n=e instanceof Error?e.message.slice(0,40):"Unknown";o.messages.replaceContent(t,a({state:"done",output:`Network error: ${n}`}))}}})},"beginCommandRun",0,function(t,n,s={}){let r=(0,d.validateCommandRequest)({command:n.command,args:n.args,waitSeconds:n.waitSeconds}),l=(0,d.resolveCommand)({command:r.command,args:r.args});if(P.has(t))return;let u=o.messages.getById(t),p=u?i(u.content):null;if(!p||"running"!==p.state)return;let f=s.timeoutMs??(0,d.commandTimeoutMs)(r.waitSeconds),g=s.outputMaxBytes??d.COMMAND_OUTPUT_MAX_BYTES,h={child:void 0,stopped:!1},w=(0,e.spawn)("/bin/sleep",[String(r.waitSeconds)],{stdio:"ignore"});h.child=w,P.set(t,h);let b=()=>{h.stopped=!0,$(t,h.child),m(t)};h.timer=setTimeout(()=>{I(h),b()},f),h.timer.unref?.(),o.messages.replaceContent(t,a({state:"running",page:(0,d.commandRunPage)(r,null)})),w.on("error",()=>{I(h),b()}),w.on("exit",(n,s)=>{if(h.stopped||!c(t,h)||s||0!==n){h.stopped&&($(t,w),m(t));return}let i="",u=!1,p=(0,e.spawn)(l.bin,l.argv,{stdio:["ignore","pipe","ignore"]});h.child=p,P.set(t,h),p.stdout?.on("data",t=>{!u&&(i+=t.toString("utf8"),Buffer.byteLength(i,"utf8")>g&&(u=!0,i=Buffer.from(i,"utf8").subarray(0,g).toString("utf8"),I({child:p})))}),p.on("error",()=>{I(h),b()}),p.on("close",(e,n)=>{if($(t,p),h.stopped||!c(t,h)){h.stopped&&m(t);return}if((n||0!==e)&&!u)return void m(t);let s=(0,d.commandRunPage)(r,i);o.messages.replaceContent(t,a({state:"done",output:i,page:s}))}),(h.stopped||!c(t,h))&&I(h)})},"beginFileReadRun",0,function(t,n){if(4!==n&&20!==n||p.has(t))return;let s=o.messages.getById(t),r=s?i(s.content):null;if(!r||"running"!==r.state||!g())return;let l={child:void 0,stopped:!1},d=(0,e.spawn)("/bin/sleep",[String(n)],{stdio:"ignore"});l.child=d,p.set(t,l),d.on("error",()=>{l.stopped=!0,f(t,d),m(t)}),d.on("exit",(n,s)=>{if(f(t,d),l.stopped||!c(t,l)||s||0!==n){l.stopped&&m(t);return}let r=g();if(!r||l.stopped){l.stopped&&m(t);return}let i="",u=(0,e.spawn)("/bin/cat",[r],{stdio:["ignore","pipe","ignore"]});if(l.child=u,p.set(t,l),u.stdout?.on("data",t=>{i+=t.toString("utf8")}),u.on("error",()=>{l.stopped=!0,f(t,u),m(t)}),u.on("close",(e,n)=>{if(f(t,u),!c(t,l)||n||0!==e){l.stopped&&m(t);return}let s=i.endsWith("\n")?i.slice(0,-1):"";i===s+"\n"&&"filemint6"===s&&o.messages.replaceContent(t,a({state:"done",output:s}))}),l.stopped||!c(t,l))try{u.kill("SIGTERM")}catch{}})},"beginPublicPageReadRun",0,function(t,n,s){if(4!==n&&20!==n||w.has(t))return;let r=o.messages.getById(t),l=r?i(r.content):null;if(!l||"running"!==l.state)return;let d={child:void 0,stopped:!1},u=(0,e.spawn)("/bin/sleep",[String(n)],{stdio:"ignore"});d.child=u,w.set(t,d),u.on("error",()=>{d.stopped=!0,b(t,u),m(t)}),u.on("exit",async(e,n)=>{if(b(t,u),d.stopped||!c(t,d)||n||0!==e||d.stopped||!c(t,d)){d.stopped&&m(t);return}try{if(s){let e,n=new URL(s),r=await R(s,n.hostname);if(d.stopped||!c(t,d)||(o.messages.replaceContent(t,a({state:"running",page:r})),await new Promise(t=>setTimeout(t,3e3)),d.stopped||!c(t,d))){d.stopped&&m(t);return}let i=(e=r.match(/<title[^>]*>([\s\S]*?)<\/title>/i))&&e[1].replace(/<[^>]+>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&apos;/g,"'").replace(/\s+/g," ").trim()||null;i&&c(t,d)&&o.messages.replaceContent(t,a({state:"done",output:i,page:r}))}else{let e=await R("https://example.com","example.com");if(d.stopped||!c(t,d)){d.stopped&&m(t);return}let n=function(t){let e=t.match(/<title[^>]*>([^<]*)<\/title>/i);if(e&&e[1]){let t=e[1].trim().split(/\s+/)[0];if(t)return t}let n=t.match(/<h1[^>]*>([^<]*)<\/h1>/i);if(n&&n[1]){let t=n[1].trim().split(/\s+/)[0];if(t)return t}return null}(e);"Example"===n&&c(t,d)&&o.messages.replaceContent(t,a({state:"done",output:"Example"}))}}catch(t){console.error("Public page fetch failed:",t)}})},"stopCodingLimbRun",0,function(t){let e=C.get(t);if(e&&(e.stopped=!0,e.agentId&&e.runId&&_(e.agentId,e.runId).catch(()=>{})),m(t),e){try{e.child.kill("SIGTERM")}catch{}v(t,e.child)}},"stopCommandRun",0,function(t){let e=P.get(t);e&&(e.stopped=!0),m(t),e&&(I(e),$(t,e.child))},"stopFileReadRun",0,function(t){let e=p.get(t);if(e&&(e.stopped=!0),m(t),e){try{e.child.kill("SIGTERM")}catch{}f(t,e.child)}},"stopPublicPageReadRun",0,function(t){let e=w.get(t);if(e&&(e.stopped=!0),m(t),e){try{e.child.kill("SIGTERM")}catch{}b(t,e.child)}}],2803)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0qozubc._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},43345,e=>{"use strict";var t=e.i(62294),r=e.i(26571),n=e.i(45383);let i=["authentication_unavailable","unauthenticated","principal_mismatch","agent_not_found","conversation_not_found","request_not_found"];async function a(e,r){let a,s=null,o=!1,c=null;try{a=await e(e=>{s=e},()=>{let e=s;r&&e&&"service"===e.kind&&t.serviceAudit.append({principal:e,operation:r.operation,capability:"participant",targetKind:r.targetKind,targetRef:r.targetRef,outcome:"allowed",code:null}),o=!0})}catch(e){if(e instanceof n.AgentApiError)c=e.code,a=Response.json({error:{code:e.code,message:e.message}},{status:e.status});else console.error("Agent conversation API error:",e),c="internal_error",a=Response.json({error:{code:"internal_error",message:"The request could not be processed."}},{status:500})}let d=s;if(o&&null===c)return a;if(r&&d&&"service"===d.kind)try{t.serviceAudit.append({principal:d,operation:r.operation,capability:"participant",targetKind:r.targetKind,targetRef:r.targetRef,outcome:null===c?"allowed":"internal_error"===c?"error":i.includes(c)?"denied":"rejected",code:c})}catch(e){return console.error("Service audit append failed:",e instanceof Error?e.message:"unknown error"),Response.json({error:{code:"internal_error",message:"The request could not be processed."}},{status:500})}return a}async function s(e){let t,i=function(){try{return(0,r.serviceTokenAuthenticatorFromEnv)()}catch(e){if(e instanceof r.ServiceTokenConfigError)return console.error(`Agent API authentication disabled: ${e.message}`),null;throw e}}();if(!i)throw new n.AgentApiError("authentication_unavailable","No authenticator is configured for the agent conversation API.");try{t=await i(e)}catch{t=null}if(!t||!(0,n.isPrincipalKind)(t.kind)||"string"!=typeof t.id||!t.id.trim())throw new n.AgentApiError("unauthenticated","Authentication failed.");return{kind:t.kind,id:t.id}}async function o(e,t){return a(async(r,i)=>{var a;let o,c=await s(e);r(c);try{let t=await e.json();if(!t||"object"!=typeof t||Array.isArray(t))throw Error("not an object");o=t}catch{throw new n.AgentApiError("invalid_request","The request body must be a JSON object.")}let d=null==(a=o.principal)?null:{kind:a.kind,id:String(a.id??"")};if(d&&!(0,n.samePrincipal)(d,c))throw new n.AgentApiError("principal_mismatch","The declared principal does not match the authenticated principal.");let l=e.headers.get("idempotency-key"),u="string"==typeof o.idempotencyKey?o.idempotencyKey:null;if(l&&u&&l!==u)throw new n.AgentApiError("invalid_request","Idempotency-Key header and body idempotencyKey differ.");let f=l??u??"";if(f.toLowerCase().startsWith(n.MCP_IDEMPOTENCY_PREFIX))throw new n.AgentApiError("invalid_request",`Idempotency keys starting with "${n.MCP_IDEMPOTENCY_PREFIX}" are reserved for the MCP bridge.`);let{accepted:h,dispatched:p}=(0,n.acceptAgentMessage)(c,{agentId:t,content:"string"==typeof o.content?o.content:"",idempotencyKey:f,conversationId:"string"==typeof o.conversationId?o.conversationId:null==o.conversationId?null:""},i);return!0===o.wait?(await p,Response.json({...(0,n.getAgentRequest)(c,h.requestId),replayed:h.replayed})):Response.json(h,{status:h.replayed?200:202})},{operation:"agents.message",targetKind:"agent",targetRef:t})}async function c(e,t){return a(async r=>{let i=await s(e);return r(i),Response.json((0,n.getConversation)(i,t))},{operation:"conversations.read",targetKind:"conversation",targetRef:t})}async function d(e,t){return a(async r=>{let i=await s(e);return r(i),Response.json((0,n.getAgentRequest)(i,t))},{operation:"requests.read",targetKind:"request",targetRef:t})}e.s(["authenticate",0,s,"handleGetAgentRequest",0,d,"handleGetConversation",0,c,"handleSendAgentMessage",0,o])},67505,e=>{"use strict";var t=e.i(22734),r=e.i(46786),n=e.i(14747),i=e.i(62294);let a="http://127.0.0.1:1111",s="agent_deck_server_url";class o extends Error{code="invalid-agent-deck-server-url";constructor(e){super(`Invalid Agent Deck server URL: ${JSON.stringify(String(e??""))}. Expected an http(s) URL such as ${a}.`)}}function c(e){let t;if("string"!=typeof e)throw new o(e);let r=e.trim();if(!r)throw new o(e);try{t=new URL(r)}catch{throw new o(e)}if("http:"!==t.protocol&&"https:"!==t.protocol||!t.hostname)throw new o(e);return t.toString().replace(/\/+$/,"")}function d(){try{let e=i.workspaceSettings.get(s);if(null===e)return a;return c(e)}catch{return a}}function l(e){return`${c(e)}/api/launch/decks`}class u extends Error{code;attemptedUrls;constructor(e,t,r="agent-deck-discovery-failed"){super(e),this.code=r,this.attemptedUrls=t}}function f(e,t){let r=globalThis.fetch;if("function"!=typeof r)throw Error("fetch is not available in this runtime.");return r(e,t).then(e=>({json:()=>e.json()}))}function h(e){try{return JSON.stringify(e??"").includes("GRANT_REQUIRED")}catch{return!1}}async function p(e){let t,r=l(e?.serverUrl!==void 0?c(e.serverUrl):d()),n=e?.fetchImpl??f;try{let e=await n(r,{method:"GET"});t=await e.json()}catch(e){if(e instanceof u){if(0===e.attemptedUrls.length)throw new u(e.message,[r],e.code);throw e}throw new u(`Cannot reach the Agent Deck server at ${r}: ${e instanceof Error?e.message:String(e)}. Check the workspace Agent Deck URL and that the server is running.`,[r],"connection-failed")}if(h(t))throw new u("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[r],"grant-required");try{var i=t;if("object"!=typeof i||null===i)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');if(h(i))throw new u("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[],"grant-required");if(!0!==i.success)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let e=i.data,r=e?.decks;if(!Array.isArray(r))throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let n=r.map(e=>{if("object"!=typeof e||null===e)throw Error("Expected every deck to carry a string id and name.");let t="string"==typeof e.id?e.id.trim():"",r="string"==typeof e.name?e.name.trim():"";if(!t||!r)throw Error("Expected every deck to carry a string id and name.");return{id:t,name:r}});return n.sort((e,t)=>e.id<t.id?-1:+(e.id>t.id)),n}catch(e){if(e instanceof u)throw e;throw new u(`Agent Deck server at ${r} returned an unexpected deck payload: ${e instanceof Error?e.message:String(e)}`,[r],"invalid-payload")}}function g(e){if(e&&e.trim())return e;let t=(process.env.HOME??"").trim();return t||r.default.homedir()}e.s(["AgentDeckDiscoveryError",0,u,"DEFAULT_AGENT_DECK_SERVER_URL",0,a,"InvalidAgentDeckServerUrlError",0,o,"agentDeckDecksUrl",0,l,"getAgentDeckServerUrl",0,d,"isLocalAgentDeckUrl",0,function(e){let t;try{t=new URL("string"==typeof e?e.trim():"")}catch{return!1}let r=t.hostname.trim().toLowerCase().replace(/^\[|\]$/g,"");return!!("localhost"===r||"::1"===r||"::ffff:127.0.0.1"===r||/^127\.\d+\.\d+\.\d+$/.test(r))},"listAgentDecks",0,p,"remoteLaunchUnsupportedMessage",0,function(e){return`[Deck failed] Remote Agent Deck launch is not supported: the workspace Agent Deck server is non-local and remote \`agent-deck run\` targeting is unconfirmed. Point the workspace server URL at the local Agent Deck server to launch. (server_url=${e})`},"resolveAndEnsureBotWorkdir",0,function(e,r,i){let a=function(e,t,r){let i="string"==typeof t?t.trim():"";if(i)return"~"===i?g(r):i.startsWith("~/")||i.startsWith("~\\")?n.default.join(g(r),i.slice(2)):i;let a=String(e??"").trim();if(!a)throw Error("defaultBotWorkdir requires a bot id.");let s=g(r);return n.default.resolve(s,".botmancers",a)}(e,r,i);return t.default.mkdirSync(a,{recursive:!0}),a},"setAgentDeckServerUrl",0,function(e){let t=c(e);return i.workspaceSettings.set(s,t),t}])},35631,26571,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(54799),i=e.i(62294),a=e.i(52036);let s="BOTMANCERS_SERVICE_TOKENS",o=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,c=/^sha256:([0-9a-f]{64})$/;class d extends Error{constructor(e){super(e),this.name="ServiceTokenConfigError"}}function l(e){if(!e||!e.trim())return[];let t=[],r=new Set;for(let n of e.split(/[,\s]+/).filter(Boolean)){let e=n.indexOf("="),i=e>0?n.slice(0,e):"",a=c.exec(e>0?n.slice(e+1).toLowerCase():"");if(!o.test(i)||!a)throw new d(`${s} entries must be <service-id>=sha256:<64 hex digits>.`);if(r.has(i))throw new d(`${s} lists service ${i} twice.`);r.add(i),t.push({serviceId:i,digest:Buffer.from(a[1],"hex")})}return t}e.s(["SERVICE_TOKENS_ENV",0,s,"ServiceTokenConfigError",0,d,"parseServiceTokens",0,l,"serviceTokenAuthenticatorFromEnv",0,function(e=process.env){let t=l(e[s]);return t.length?e=>{let r,i,a=(i=(r=e.headers.get("authorization"))?/^Bearer[ \t]+(\S+)[ \t]*$/i.exec(r):null)?i[1]:null;if(!a||a.length>4096)return null;let s=(0,n.createHash)("sha256").update(a,"utf8").digest(),o=null;for(let e of t)(0,n.timingSafeEqual)(s,e.digest)&&null===o&&(o=e.serviceId);return o?{kind:"service",id:o}:null}:null}],26571);let u=["agents:read","sessions:read","conversations:read","sessions:message","exchanges:read","exchanges:create"],f=["botmancers-exchanges","botmancers-engine"],h=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,p=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;class g extends Error{constructor(e){super(e),this.name="ServiceGrantsError"}}function w(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function m(e,t,r){let n=Object.keys(e).find(e=>!t.includes(e));if(void 0!==n)throw new g(`${r} has an unknown field "${n}".`)}let v=null;e.s(["EXCHANGE_KEY_PREFIX",0,"exchange:","MESSAGE_KEY_PREFIX",0,"message:","SERVICE_CAPABILITIES",0,u,"loadServiceGrants",0,function(e=process.env){let o,c=function(e=process.env){let t=(e.BOTMANCERS_SERVICE_GRANTS_PATH||"").trim();if(t)return r.default.resolve(t);let n=(0,a.botmancersHome)(e);return n?r.default.join(n,"config/service-grants.json"):null}(e);if(!c)return{state:"absent",path:null};try{o=t.default.statSync(c)}catch(e){if("ENOENT"===e.code)return{state:"absent",path:c};return{state:"invalid",path:c,reason:"The document cannot be read."}}let y=(0,n.createHash)("sha256").update(e[s]??"","utf8").digest("hex"),E=new Set(i.default.prepare("SELECT id FROM bots").all().map(e=>e.id)),A=(0,n.createHash)("sha256").update([...E].sort().join("\n"),"utf8").digest("hex"),k=[c,o.ino,o.size,o.mode,o.uid,o.mtimeMs,y,A].join(":");if(v&&v.key===k)return v.state;let b=function(e,r,n,i){let a;if(!r.isFile())return{state:"invalid",path:e,reason:"The document is not a regular file."};if("function"==typeof process.getuid&&r.uid!==process.getuid())return{state:"invalid",path:e,reason:"The document must be owned by the user running Botmancers."};if((63&r.mode)!=0)return{state:"invalid",path:e,reason:"The document must not be readable or writable by group or others (chmod 600)."};if("string"==typeof n)return{state:"invalid",path:e,reason:n};if(r.size>65536)return{state:"invalid",path:e,reason:"The document exceeds 65536 bytes."};try{a=t.default.readFileSync(e,"utf8")}catch{return{state:"invalid",path:e,reason:"The document cannot be read."}}try{return{state:"loaded",path:e,grants:function(e,t,r){let n;try{n=JSON.parse(e)}catch{throw new g("The document is not valid JSON.")}if(!w(n))throw new g("The document must be a JSON object.");if(m(n,["version","grants"],"The document"),1!==n.version)throw new g("version must be 1.");if(!Array.isArray(n.grants))throw new g("grants must be a list.");if(n.grants.length>512)throw new g("grants has more than 512 entries.");let i=new Map;return n.grants.forEach((e,n)=>{let a=`grants[${n}]`;if(!w(e))throw new g(`${a} must be an object.`);m(e,["service","agent","capabilities"],a);let{service:o,agent:c,capabilities:d}=e;if("string"!=typeof o||!h.test(o))throw new g(`${a}.service must be a configured service id (letters, digits, ".", "_", "-").`);if(f.includes(o))throw new g(`${a}.service names a reserved engine principal.`);if(t&&!t.has(o))throw new g(`${a}.service is not a configured service principal (${s}).`);if("string"!=typeof c||!p.test(c))throw new g(`${a}.agent must be one Agent id; wildcards are not allowed.`);if(r&&!r.has(c))throw new g(`${a}.agent is not a registered Agent.`);if(!Array.isArray(d)||0===d.length)throw new g(`${a}.capabilities must list at least one capability.`);let l=new Set;for(let e of d){if(!("string"==typeof e&&u.includes(e)))throw new g(`${a}.capabilities has an unknown capability.`);if(l.has(e))throw new g(`${a}.capabilities lists ${e} twice.`);l.add(e)}let v=i.get(o)??new Map;if(v.has(c))throw new g(`${a} repeats the grant of service ${o} for that Agent.`);v.set(c,l),i.set(o,v)}),i}(a,n,i)}}catch(t){if(t instanceof g)return{state:"invalid",path:e,reason:t.message};throw t}}(c,o,function(e){try{return new Set(l(e[s]).map(e=>e.serviceId))}catch(e){if(e instanceof d)return`${s} is malformed, so no grant can name a configured service.`;throw e}}(e),E);return v={key:k,state:b},b}],35631)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0wtzcge._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},18934,e=>{"use strict";var t=e.i(89171),r=e.i(67505);async function n(){try{return t.NextResponse.json({server_url:(0,r.getAgentDeckServerUrl)(),default_server_url:r.DEFAULT_AGENT_DECK_SERVER_URL})}catch(e){return console.error("Error reading Agent Deck settings:",e),t.NextResponse.json({error:"Failed to read Agent Deck settings"},{status:500})}}async function a(e){try{let n=await e.json(),a=n.server_url??n.serverUrl??n.url;try{let e=(0,r.setAgentDeckServerUrl)(a);return t.NextResponse.json({server_url:e,default_server_url:r.DEFAULT_AGENT_DECK_SERVER_URL})}catch(n){let e=n instanceof r.InvalidAgentDeckServerUrlError?n.message:`Invalid Agent Deck server URL: ${JSON.stringify(String(a??""))}. Expected an http(s) URL such as ${r.DEFAULT_AGENT_DECK_SERVER_URL}.`;return t.NextResponse.json({error:e},{status:400})}}catch(e){return console.error("Error saving Agent Deck settings:",e),t.NextResponse.json({error:"Failed to save Agent Deck settings"},{status:500})}}e.s(["GET",0,n,"PUT",0,a])},40128,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),c=e.i(16795),l=e.i(87718),u=e.i(95169),d=e.i(47587),p=e.i(66012),h=e.i(70101),g=e.i(26937),f=e.i(10372),v=e.i(93695),R=e.i(9580);e.i(52474);var E=e.i(220);let m=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent-deck/settings/route",pathname:"/api/agent-deck/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/agent-deck/settings/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(18934),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:k,serverHooks:A}=m;async function y(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),m.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/agent-deck/settings/route";w=w.replace(/\/index$/,"")||"/";let k=await m.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:A,deploymentId:y,params:D,nextConfig:x,parsedUrl:_,isDraftMode:U,prerenderManifest:T,routerServerContext:C,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:P}=k,L=(0,o.normalizeAppPath)(w),I=!!T.routes[b]&&(m.isDev||(0,R.isRouteCacheOwner)(b,m.cacheOwner,T.routes[b])),q=!!(T.dynamicRoutes[L]||I),H=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,_,!1):t.end("This page could not be found"),null);if(q&&!U){let e=T.dynamicRoutes[L];if(e&&!1===e.fallback&&!I){if(x.adapterPath)return await H();throw new v.NoFallbackError}}let $=null;!q||m.isDev||U||($="/index"===($=b)?"/":$);let j=!0===m.isDev||!q,G=q&&!j;P&&O&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:O,serverActionsManifest:P});let M=e.method||"GET",F=(0,s.getTracer)(),K=F.getActiveScopeSpan(),B=!!(null==C?void 0:C.isWrappedByNextServer),V=!!(0,a.getRequestMeta)(e,"minimalMode"),W=(0,a.getRequestMeta)(e,"incrementalCache")||await m.getIncrementalCache(e,x,T,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let J={params:D,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,isDraftMode:U,supportsDynamicResponse:j,incrementalCache:W,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>m.onRequestError(e,t,n,a,C)},sharedContext:{buildId:A,deploymentId:y}},Q=new c.NodeNextRequest(e),X=new c.NodeNextResponse(t),z=l.NextRequestAdapter.fromNodeNextRequest(Q,(0,l.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:r})=>{try{if(!V&&S&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await m.handle(z,J);e.fetchMetrics=J.renderOpts.fetchMetrics;let s=J.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let i=J.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(Q,X,a,s),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);i&&(t[f.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==r&&r>0?x.expireTime:void 0:J.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await m.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:G,isOnDemandRevalidate:S})},!1,C),t}},Y=async(a,i)=>{try{var o,c;let a=await m.handleResponse({req:e,nextConfig:x,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:V});if(!q)return;if((null==a||null==(o=a.value)?void 0:o.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",S?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),U&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,h.fromNodeOutgoingHttpHeaders)(a.value.headers);V&&q||s.delete(f.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,g.getCacheControlHeader)(a.cacheControl)),await (0,p.sendResponse)(Q,X,new Response(a.value.body,{headers:s,status:a.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await m.onRequestError(e,t,{routerKind:"App Router",routePath:L,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:G,isOnDemandRevalidate:S})},!1,C),q)throw t;await (0,p.sendResponse)(Q,X,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:s.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||L,o=`${M} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),a.updateName(o),i&&i!==a&&(i.setAttribute("http.route",n),i.updateName(o))})()}};if(B&&K)await Y(K,void 0);else{let t=F.getActiveScopeSpan();await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},e=>Y(e,t)),void 0,!B)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:k})},"routeModule",0,m,"serverHooks",0,A,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,k])},67505,e=>{"use strict";var t=e.i(22734),r=e.i(46786),n=e.i(14747),a=e.i(62294);let s="http://127.0.0.1:1111",i="agent_deck_server_url";class o extends Error{code="invalid-agent-deck-server-url";constructor(e){super(`Invalid Agent Deck server URL: ${JSON.stringify(String(e??""))}. Expected an http(s) URL such as ${s}.`)}}function c(e){let t;if("string"!=typeof e)throw new o(e);let r=e.trim();if(!r)throw new o(e);try{t=new URL(r)}catch{throw new o(e)}if("http:"!==t.protocol&&"https:"!==t.protocol||!t.hostname)throw new o(e);return t.toString().replace(/\/+$/,"")}function l(){try{let e=a.workspaceSettings.get(i);if(null===e)return s;return c(e)}catch{return s}}function u(e){return`${c(e)}/api/launch/decks`}class d extends Error{code;attemptedUrls;constructor(e,t,r="agent-deck-discovery-failed"){super(e),this.code=r,this.attemptedUrls=t}}function p(e,t){let r=globalThis.fetch;if("function"!=typeof r)throw Error("fetch is not available in this runtime.");return r(e,t).then(e=>({json:()=>e.json()}))}function h(e){try{return JSON.stringify(e??"").includes("GRANT_REQUIRED")}catch{return!1}}async function g(e){let t,r=u(e?.serverUrl!==void 0?c(e.serverUrl):l()),n=e?.fetchImpl??p;try{let e=await n(r,{method:"GET"});t=await e.json()}catch(e){if(e instanceof d){if(0===e.attemptedUrls.length)throw new d(e.message,[r],e.code);throw e}throw new d(`Cannot reach the Agent Deck server at ${r}: ${e instanceof Error?e.message:String(e)}. Check the workspace Agent Deck URL and that the server is running.`,[r],"connection-failed")}if(h(t))throw new d("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[r],"grant-required");try{var a=t;if("object"!=typeof a||null===a)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');if(h(a))throw new d("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[],"grant-required");if(!0!==a.success)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let e=a.data,r=e?.decks;if(!Array.isArray(r))throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let n=r.map(e=>{if("object"!=typeof e||null===e)throw Error("Expected every deck to carry a string id and name.");let t="string"==typeof e.id?e.id.trim():"",r="string"==typeof e.name?e.name.trim():"";if(!t||!r)throw Error("Expected every deck to carry a string id and name.");return{id:t,name:r}});return n.sort((e,t)=>e.id<t.id?-1:+(e.id>t.id)),n}catch(e){if(e instanceof d)throw e;throw new d(`Agent Deck server at ${r} returned an unexpected deck payload: ${e instanceof Error?e.message:String(e)}`,[r],"invalid-payload")}}function f(e){if(e&&e.trim())return e;let t=(process.env.HOME??"").trim();return t||r.default.homedir()}e.s(["AgentDeckDiscoveryError",0,d,"DEFAULT_AGENT_DECK_SERVER_URL",0,s,"InvalidAgentDeckServerUrlError",0,o,"agentDeckDecksUrl",0,u,"getAgentDeckServerUrl",0,l,"isLocalAgentDeckUrl",0,function(e){let t;try{t=new URL("string"==typeof e?e.trim():"")}catch{return!1}let r=t.hostname.trim().toLowerCase().replace(/^\[|\]$/g,"");return!!("localhost"===r||"::1"===r||"::ffff:127.0.0.1"===r||/^127\.\d+\.\d+\.\d+$/.test(r))},"listAgentDecks",0,g,"remoteLaunchUnsupportedMessage",0,function(e){return`[Deck failed] Remote Agent Deck launch is not supported: the workspace Agent Deck server is non-local and remote \`agent-deck run\` targeting is unconfirmed. Point the workspace server URL at the local Agent Deck server to launch. (server_url=${e})`},"resolveAndEnsureBotWorkdir",0,function(e,r,a){let s=function(e,t,r){let a="string"==typeof t?t.trim():"";if(a)return"~"===a?f(r):a.startsWith("~/")||a.startsWith("~\\")?n.default.join(f(r),a.slice(2)):a;let s=String(e??"").trim();if(!s)throw Error("defaultBotWorkdir requires a bot id.");let i=f(r);return n.default.resolve(i,".botmancers",s)}(e,r,a);return t.default.mkdirSync(s,{recursive:!0}),s},"setAgentDeckServerUrl",0,function(e){let t=c(e);return a.workspaceSettings.set(i,t),t}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__10m3szc._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},62349,16979,e=>{"use strict";let r=[{id:"purple",label:"Purple",hex:"#7C3AED"},{id:"blue",label:"Blue",hex:"#2563EB"},{id:"teal",label:"Teal",hex:"#0D9488"},{id:"green",label:"Green",hex:"#16A34A"},{id:"amber",label:"Amber",hex:"#B45309"},{id:"orange",label:"Orange",hex:"#EA580C"},{id:"pink",label:"Pink",hex:"#DB2777"},{id:"slate",label:"Slate",hex:"#64748B"}],t=[{id:"dots",label:"Round dots"},{id:"sleepy",label:"Sleepy"},{id:"happy",label:"Happy arcs"},{id:"wide",label:"Wide ovals"}],n=[{id:"folded",label:"Folded arms"},{id:"reaching",label:"Reaching right"},{id:"waving",label:"Waving"}],a=[{id:"none",label:"None"},{id:"crown",label:"Crown"},{id:"glasses",label:"Glasses"},{id:"headset",label:"Headset"},{id:"hat",label:"Hat"},{id:"bow",label:"Bow"}],i={color:"purple",eyes:"dots",hands:"folded",accessory:"none"},s={...i,accessory:"crown"};function o(e){return"chief-of-staff"===String(e??"").trim().toLowerCase()}function l(e,r){return"string"==typeof r&&e.some(e=>e.id===r)}function c(e){let c=l(r,e.avatar_color)?e.avatar_color:i.color,d=l(t,e.avatar_eyes)?e.avatar_eyes:i.eyes;return{color:c,eyes:d,hands:l(n,e.avatar_hands)?e.avatar_hands:i.hands,accessory:l(a,e.avatar_accessory)?e.avatar_accessory:o(e.name)?s.accessory:i.accessory}}e.s(["isChiefOfStaffName",0,o,"resolveAvatar",0,c,"validateAvatarInput",0,function(e){let i=[],s={};if(null==e)return{errors:i,fields:s};if("object"!=typeof e||Array.isArray(e))return{errors:["Invalid avatar: expected an object with color, eyes, hands, and accessory."],fields:s};if(void 0!==e.color)try{s.avatar_color=function(e){if(l(r,e))return e;throw Error(`Invalid avatar color: ${JSON.stringify(String(e))}. Expected one of ${r.map(e=>e.id).join("|")}.`)}(e.color)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.eyes)try{s.avatar_eyes=function(e){if(l(t,e))return e;throw Error(`Invalid avatar eyes: ${JSON.stringify(String(e))}. Expected one of ${t.map(e=>e.id).join("|")}.`)}(e.eyes)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.hands)try{s.avatar_hands=function(e){if(l(n,e))return e;throw Error(`Invalid avatar hands: ${JSON.stringify(String(e))}. Expected one of ${n.map(e=>e.id).join("|")}.`)}(e.hands)}catch(e){i.push(e instanceof Error?e.message:String(e))}if(void 0!==e.accessory)try{s.avatar_accessory=function(e){if(l(a,e))return e;throw Error(`Invalid avatar accessory: ${JSON.stringify(String(e))}. Expected one of ${a.map(e=>e.id).join("|")}.`)}(e.accessory)}catch(e){i.push(e instanceof Error?e.message:String(e))}return{errors:i,fields:s}}],16979);let d=["hermes","cursor","claude","codex","muse"],u={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},f="hermes",g={hermes:"hermes-gateway",cursor:"agent-deck-run",claude:"agent-deck-run",codex:"agent-deck-run",muse:"agent-deck-run"};class p extends Error{code="invalid-agent";constructor(e){super(`Invalid agent: ${JSON.stringify(String(e))}. Expected one of ${d.join("|")}.`)}}class _ extends Error{code="invalid-deck";constructor(e){super(`Invalid deck ID: ${JSON.stringify("string"==typeof e?e:String(e))}. Select a deck from the configured Agent Deck server.`)}}let h="Deck ID is required. Select an Agent Deck before saving this agent.",m=`Agent is required. Expected one of ${d.join("|")}.`;function y(e){if(null==e)return null;let r=String(e).trim();if(!r)return null;if(d.includes(r))return r;throw new p(e)}function v(e){return null==e?null:String(e).trim()||null}function x(e){if(null==e)return null;if("string"!=typeof e)throw new _(e);let r=e.trim();if(!r)return null;if(!function(e){if(e.length>200||/\s/.test(e))return!1;for(let r=0;r<e.length;r++){let t=e.charCodeAt(r);if(t<32||127===t)return!1}return!0}(r))throw new _(e);return r}function k(e){if(!0===e||1===e)return!0;if("string"==typeof e){let r=e.trim().toLowerCase();return"1"===r||"true"===r}return!1}function b(e){let r=f,t=!0;try{r=y(e.agent)??f}catch{t=!1}let n=v(e.deck_id),a=v(e.deck_name),i=v(e.working_directory),s=null===n||k(e.needs_deck_selection),o=t&&!s;return{agent:r,deck_id:n,deck_name:a,working_directory:i,needs_deck_selection:s,launchable:o}}let w=["codex","claude","cursor","muse"];function S(e){let r=v(e);return r&&w.includes(r)?r:null}let E=["runtime","agent_client","persistent_runtime","coding_runtime","needs_deck_reselection"];function A(e,r){(void 0!==e.runtime||void 0!==e.agent_client)&&r.push("Fields runtime/agent_client are no longer accepted. Send agent (hermes|cursor|claude|codex|muse) and deck_id instead."),void 0!==e.deck_name&&r.push("deck_name is a read-only legacy reference. Select a deck_id from the configured Agent Deck server instead.")}e.s(["AGENTS",0,d,"DEFAULT_AGENT",0,f,"agentTransport",0,function(e){return g[e]},"applyAgentUpdate",0,function(e,r){let t=b(e),n=r.agent??t.agent,a=void 0!==r.working_directory?r.working_directory:t.working_directory;return void 0!==r.deck_id?{agent:n,deck_id:r.deck_id,deck_name:null,working_directory:a,needs_deck_selection:!1}:{agent:n,deck_id:t.deck_id,deck_name:t.deck_name,working_directory:a,needs_deck_selection:t.needs_deck_selection}},"buildAvailabilityPayload",0,function(e){let r=[];for(let t of d)e.includes(t)&&r.push({agent:t,label:u[t],launchable:!0});return{agents:r}},"hasAgentUpdate",0,function(e){return["agent","deck_id","working_directory","runtime","agent_client","deck_name"].some(r=>void 0!==e[r])},"migrateLegacyAgentFields",0,function(e){let r=v(e.deck_id),t=v(e.deck_name),n=v(e.working_directory);try{let i=y(e.agent);if(i){var a;return{agent:i,deck_id:r,deck_name:t,working_directory:n,needs_deck_selection:null===r||(a=e.needs_deck_selection,k(a)),migrated:!1}}}catch{}let i=v(e.runtime),s=f,o=k(e.needs_deck_reselection);if("agent-deck"===i){let r=S(e.agent_client);r?s=r:o=!0}else if("hermes"!==i){let r=S(e.coding_runtime);r&&t&&n&&(s=r,o=!0)}return{agent:s,deck_id:r,deck_name:t,working_directory:n,needs_deck_selection:null===r||o,migrated:!0}},"resolveAgent",0,b,"serializeBot",0,function(e){let r=b(e),t={...e};for(let e of E)delete t[e];return{...t,agent:r.agent,deck_id:r.deck_id,deck_name:r.deck_name,working_directory:r.working_directory,needs_deck_selection:r.needs_deck_selection,launchable:r.launchable,avatar_config:c(e)}},"validateCreateAgent",0,function(e){let r=[];A(e,r);let t=f;try{t=y(e.agent)??f}catch(e){r.push(e instanceof Error?e.message:String(e))}let n=null;try{(n=x(e.deck_id))||r.push(h)}catch(e){r.push(e instanceof Error?e.message:String(e))}return{errors:r,normalized:{agent:t,deck_id:n??"",working_directory:v(e.working_directory)}}},"validateUpdateAgent",0,function(e){let r=[],t={};if(A(e,r),void 0!==e.agent)try{let n=y(e.agent);n?t.agent=n:r.push(m)}catch(e){r.push(e instanceof Error?e.message:String(e))}if(void 0!==e.deck_id)try{let n=x(e.deck_id);n?t.deck_id=n:r.push(h)}catch(e){r.push(e instanceof Error?e.message:String(e))}return void 0!==e.working_directory&&(t.working_directory=v(e.working_directory)),{errors:r,fields:t}}],62349)},52036,e=>{"use strict";var r=e.i(14747);function t(e=process.env){let n=(e.BOTMANCERS_HOME||"").trim();return n?r.default.resolve(n):null}function n(e,r){return(e[r]||"").trim()||null}e.s(["botmancersHome",0,t,"dbPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_DB_PATH");if(a)return a;let i=t(e);return i?r.default.join(i,"data/botmancers.db"):"botmancers.db"},"filesRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_FILES_ROOT");if(a)return r.default.resolve(a);let i=t(e);return i?r.default.join(i,"files"):r.default.resolve(process.cwd(),"files")},"skillsRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_SKILLS_ROOT");if(a)return r.default.resolve(a);let i=t(e);return i?r.default.join(i,"skills"):r.default.resolve(process.cwd(),"skills")},"waitLogPath",0,function(e=process.env){let a=n(e,"HERMES_WAIT_LOG_PATH");if(a)return a;let i=t(e);return i?r.default.join(i,"logs/specialist-waits.jsonl"):r.default.join(process.cwd(),".temporal","specialist-waits.jsonl")}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__15hknun._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},28244,e=>{"use strict";var t=e.i(89171),r=e.i(22734),n=e.i(14747),a=e.i(25211),i=e.i(85072);async function s(e,{params:o}){try{let e,{name:s}=await o;if(!(0,a.isSafeFileName)(s))return t.NextResponse.json({error:"Invalid file name"},{status:400});let l=(0,i.filesRoot)(),u=n.default.join(l,s);if(!u.startsWith(l+n.default.sep))return t.NextResponse.json({error:"Invalid file name"},{status:400});try{e=r.default.statSync(u)}catch{return t.NextResponse.json({error:"File not found"},{status:404})}if(!e.isFile())return t.NextResponse.json({error:"File not found"},{status:404});let c=r.default.readFileSync(u),d=s.endsWith(".txt")?"text/plain; charset=utf-8":"application/octet-stream";return new t.NextResponse(new Uint8Array(c),{status:200,headers:{"Content-Type":d,"Content-Disposition":`attachment; filename="${s}"`,"Content-Length":String(c.length)}})}catch(e){return console.error("Error serving file:",e),t.NextResponse.json({error:"Failed to serve file"},{status:500})}}e.s(["GET",0,s])},36261,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),c=e.i(95169),d=e.i(47587),f=e.i(66012),p=e.i(70101),h=e.i(26937),m=e.i(10372),w=e.i(93695),y=e.i(9580);e.i(52474);var x=e.i(220);let g=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/files/[name]/route",pathname:"/api/files/[name]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/files/[name]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(28244),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:R,serverHooks:b}=g;async function A(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),g.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/files/[name]/route";v=v.replace(/\/index$/,"")||"/";let R=await g.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:b,deploymentId:A,params:S,nextConfig:C,parsedUrl:E,isDraftMode:N,prerenderManifest:O,routerServerContext:T,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,resolvedPathname:k,clientReferenceManifest:q,serverActionsManifest:P}=R,$=(0,o.normalizeAppPath)(v),H=!!O.routes[k]&&(g.isDev||(0,y.isRouteCacheOwner)(k,g.cacheOwner,O.routes[k])),F=!!(O.dynamicRoutes[$]||H),I=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,E,!1):t.end("This page could not be found"),null);if(F&&!N){let e=O.dynamicRoutes[$];if(e&&!1===e.fallback&&!H){if(C.adapterPath)return await I();throw new w.NoFallbackError}}let M=null;!F||g.isDev||N||(M="/index"===(M=k)?"/":M);let D=!0===g.isDev||!F,L=F&&!D;P&&q&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:q,serverActionsManifest:P});let U=e.method||"GET",B=(0,i.getTracer)(),z=B.getActiveScopeSpan(),Z=!!(null==T?void 0:T.isWrappedByNextServer),J=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,C,O,J);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:S,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:N,supportsDynamicResponse:D,incrementalCache:K,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>g.onRequestError(e,t,n,a,T)},sharedContext:{buildId:b,deploymentId:A}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!J&&_&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await g.handle(V,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let s=G.renderOpts.collectedTags;if(!F)return await (0,f.sendResponse)(W,X,a,i),null;{let e=await a.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(a.headers);s&&(t[m.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==r&&r>0?C.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:_})},!1,T),t}},Q=async(a,s)=>{try{var o,l;let a=await g.handleResponse({req:e,nextConfig:C,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,responseGenerator:Y,waitUntil:n.waitUntil,isMinimalMode:J});if(!F)return;if((null==a||null==(o=a.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(l=a.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});J||t.setHeader("x-nextjs-cache",_?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,p.fromNodeOutgoingHttpHeaders)(a.value.headers);J&&F||i.delete(m.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,h.getCacheControlHeader)(a.cacheControl)),await (0,f.sendResponse)(W,X,new Response(a.value.body,{headers:i,status:a.value.status||200}));return}catch(t){if(t instanceof w.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:$,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:_})},!1,T),F)throw t;await (0,f.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:i.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||$,o=`${U} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),a.updateName(o),s&&s!==a&&(s.setAttribute("http.route",n),s.updateName(o))})()}};if(Z&&z)await Q(z,void 0);else{let t=B.getActiveScopeSpan();await B.withPropagatedContext(e.headers,()=>B.trace(c.BaseServerSpan.handleRequest,{spanName:`${U} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},e=>Q(e,t)),void 0,!Z)}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:R})},"routeModule",0,g,"serverHooks",0,b,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,R])},85072,3620,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(25211);class a extends Error{}function i(e,t){return RegExp("\\b"+t+"\\b","i").test(e)}function s(e){return e.trim().replace(/^[@"'`]+|["'`]+$/g,"").replace(/[.?!;,:'"`]+$/g,"").trim()}function o(e){if(!e||"object"!=typeof e||Array.isArray(e))throw new a("draft needs {channel, recipient, body}");if("email"!==e.channel&&"slack"!==e.channel)throw new a("draft channel must be email or slack");if("string"!=typeof e.recipient)throw new a("draft needs a recipient string");if("string"!=typeof e.body)throw new a("draft needs a body string");let t=e.recipient.trim(),r=e.body.trim();if(t.length>256)throw new a("draft recipient is too long");if(!r)throw new a("draft needs a body");if(Buffer.byteLength(r,"utf8")>32768)throw new a("draft body is too large");return{channel:e.channel,recipient:t,body:r}}e.s(["createDraft",0,function(e){let t=o(e);return{channel:t.channel,recipient:t.recipient,body:t.body,state:"open"}},"parseDraftRequest",0,function(e){let t=(e||"").trim();if(!t||/^\s*(create a specialist|duplicate)\b/i.test(t))return null;let r=null;if(i(t,"email")?r="email":i(t,"slack")&&(r="slack"),!r)return null;let n=/\b(draft|write|compose|create|prepare|send)\b/i.test(t),a=/\bplease\b/i.test(t),l=/\b(can|could|would)\s+you\b/i.test(t),u=/^\s*(please\s+)?(email|slack)\b/i.test(t);if(!n&&!a&&!l&&!u)return null;let c=function(e){if(e.toLowerCase().includes("one-line note"))return"One-line note.";let t=e.toLowerCase(),r=-1,n="";for(let e of["that says","saying","note:"]){let a=t.indexOf(e);a>=0&&(r<0||a<r)&&(r=a,n=e)}return r<0?null:e.slice(r+n.length).trim()||null}(t);if(c){let e=function(e){let t=e.toLowerCase(),r=-1;for(let e of["that says","saying","note:"]){let n=t.indexOf(e);n>=0&&(r<0||n<r)&&(r=n)}return r<0?e:e.slice(0,r)}(t),n="",a=e.match(/\bto\s+@?([A-Za-z0-9_.-]+(?:@[A-Za-z0-9_.-]+\.[A-Za-z]+)?)/i);if(a)n=s(a[1]||"");else{let t=e.match(/\b(email|slack)\b\s+@?([A-Za-z0-9_.-]+)/i);if(t){let e=s(t[2]||"");e&&!["to","a","an","the","that","saying","note"].includes(e.toLowerCase())&&(n=e)}}try{return o({channel:r,recipient:n,body:c})}catch{return null}}if(!u)return null;let d=t.match(/^\s*(?:please\s+)?(?:email|slack)\s+@?([A-Za-z0-9_.-]+)\s+(.+?)\s*[.?!]?\s*$/i);if(!d)return null;let f=s(d[1]||""),p=(d[2]||"").trim();if(!f||["to","a","an","the","that","saying","note"].includes(f.toLowerCase())||!p||p.length<2)return null;try{return o({channel:r,recipient:f,body:p})}catch{return null}},"validateDraftRequest",0,o],3620);var l=e.i(52036);class u extends Error{}function c(){return(0,l.filesRootPath)()}function d(e){let t=f(e),n=c(),a=r.default.resolve(n,t);if(a!==n&&!a.startsWith(n+r.default.sep))throw new u(`refused: path traversal in ${JSON.stringify(e)}`);return a}function f(e){if("string"!=typeof e||!e)throw new u("file needs a name");if(e.length>128)throw new u(`refused: file name too long ${JSON.stringify(e)}`);if(!(0,n.isSafeFileName)(e))throw new u(`refused: unsafe file name ${JSON.stringify(e)}`);return e}function p(e){if(!e||"object"!=typeof e||Array.isArray(e))throw new u("file needs {name, content}");return{name:f(e.name),content:function(e){if("string"!=typeof e)throw new u("file needs string content");let t=Buffer.byteLength(e,"utf8");if(0===t)throw new u("file needs content");if(t>65536)throw new u("refused: file content exceeds 65536 bytes");return e}(e.content)}}e.s(["ARTIFACT_MAX_BYTES",0,65536,"artifactCardText",0,function(e){return`[file] ${e}`},"filesRoot",0,c,"parseFileWriteRequest",0,function(e){let t,r=(e||"").trim();if(!r||!/\b(write|create|make)\b/i.test(r)||!/\bfile\b/i.test(r)||!/\bfile\b\s+(named|called)\b/i.test(r))return null;let n=r.match(/\bfile\b\s+(?:named|called)\s+([`"'\u201c\u201d]?\S+?[`"'\u201c\u201d]?)(?:\s+|$)/i);if(!n)return null;let a=(t=(n[1]||"").trim().replace(/^["'`\u201c\u201d]+|["'`\u201c\u201d]+$/g,"").replace(/[?!;,:'"`]+$/,"").trim(),/^\.+$/.test(t)?t:t.replace(/[.]+$/,""));if(!a)return null;let i=r.match(/(?:whose\s+contents?\s+are\s+the\s+word|containing\s+the\s+word|with\s+the\s+word)\s+[`"'\u201c\u201d]?([A-Za-z0-9_-]+)[`"'\u201c\u201d]?/i);if(i)return{name:a,content:i[1]};let s=r.match(/(?:containing|with\s+contents?)\s+["\u201c](.+?)["\u201d]/i);if(s&&s[1].trim())return{name:a,content:s[1]};let o=r.match(/(?:containing|with\s+contents?)\s*:\s*(.+?)\s*$/i);if(o&&o[1].trim()){let e=o[1].trim().replace(/^["'`\u201c\u201d]+|["'`\u201c\u201d]+$/g,"").trim();if(e)return{name:a,content:e}}let l=r.match(/(?:containing|with\s+contents?)\s+(?!the\s+word\b)(.+?)\s*$/i);if(l&&l[1].trim()){let e=l[1].trim().replace(/^["'`\u201c\u201d]+|["'`\u201c\u201d]+$/g,"").trim();if(e=e.replace(/[.?!]+$/,"").trim())return{name:a,content:e}}return null},"parseTypedResult",0,function(e){for(let t of function(e){let t=[];for(let r of(e||"").split(/\r?\n/)){let e=r.match(/^\s*\[produce\]\s*(\{.*\})\s*$/i);if(e)try{t.push(JSON.parse(e[1]))}catch{}}return t}(e))if(!(!t||"object"!=typeof t||Array.isArray(t))){if("draft"===t.type)try{let e=o({channel:t.channel,recipient:t.recipient??"",body:t.body});return{kind:"draft",draft:e}}catch{break}if("file"===t.type)try{let e=p({name:t.name,content:t.content});return{kind:"file",file:e}}catch{}break}return null},"resolveArtifactPath",0,d,"validateArtifact",0,p,"writeArtifactFile",0,function(e,r,n){let a=p({name:e,content:r}),i=c();t.default.mkdirSync(i,{recursive:!0});let s=d(a.name);if(t.default.existsSync(s)){let e;try{e=t.default.statSync(s)}catch{throw new u(`refused: cannot stat ${JSON.stringify(a.name)}`)}if(!e.isFile())throw new u(`refused: not a file ${JSON.stringify(a.name)}`);if(!n?.allowOverwrite)throw new u(`refused: ${JSON.stringify(a.name)} already exists`)}return t.default.writeFileSync(s,a.content,"utf8"),s}],85072)},25211,e=>{"use strict";let t=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;e.s(["isSafeFileName",0,function(e){return t.test(e)},"parseApprovalCode",0,function(e){let t=e.match(/approve using the code ([A-Za-z0-9][A-Za-z0-9_-]*)/i);return t?t[1]:null},"parseDraft",0,function(e){let t,r=e.match(/^\s*\[draft\]\s*([\s\S]*)$/);if(!r)return null;try{t=JSON.parse(r[1])}catch{return null}if(!t||"object"!=typeof t)return null;let n=t;return"email"!==n.channel&&"slack"!==n.channel||"open"!==n.state&&"sent"!==n.state&&"discarded"!==n.state||"string"!=typeof n.recipient||"string"!=typeof n.body?null:{channel:n.channel,recipient:n.recipient,body:n.body,state:n.state}},"parseFileNames",0,function(e){let t=[];for(let r of e.split("\n")){let e=r.match(/^\s*\[file\]\s*(\S+)\s*$/i);e&&!t.includes(e[1])&&t.push(e[1])}return t},"serializeDraft",0,function(e){return"[draft]\n"+JSON.stringify({channel:e.channel,recipient:e.recipient,body:e.body,state:e.state})}])},52036,e=>{"use strict";var t=e.i(14747);function r(e=process.env){let n=(e.BOTMANCERS_HOME||"").trim();return n?t.default.resolve(n):null}function n(e,t){return(e[t]||"").trim()||null}e.s(["botmancersHome",0,r,"dbPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_DB_PATH");if(a)return a;let i=r(e);return i?t.default.join(i,"data/botmancers.db"):"botmancers.db"},"filesRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_FILES_ROOT");if(a)return t.default.resolve(a);let i=r(e);return i?t.default.join(i,"files"):t.default.resolve(process.cwd(),"files")},"skillsRootPath",0,function(e=process.env){let a=n(e,"BOTMANCERS_SKILLS_ROOT");if(a)return t.default.resolve(a);let i=r(e);return i?t.default.join(i,"skills"):t.default.resolve(process.cwd(),"skills")},"waitLogPath",0,function(e=process.env){let a=n(e,"HERMES_WAIT_LOG_PATH");if(a)return a;let i=r(e);return i?t.default.join(i,"logs/specialist-waits.jsonl"):t.default.join(process.cwd(),".temporal","specialist-waits.jsonl")}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__16ikszu._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},45746,e=>{"use strict";var t=e.i(89171),r=e.i(67505);async function n(){let e=(0,r.getAgentDeckServerUrl)();try{let n=await (0,r.listAgentDecks)({serverUrl:e});return t.NextResponse.json({server_url:e,decks:n})}catch(i){let n=i instanceof r.AgentDeckDiscoveryError&&i.attemptedUrls.length>0?i.attemptedUrls:[(0,r.agentDeckDecksUrl)(e)],a=i instanceof Error?i.message:String(i),s=i instanceof r.AgentDeckDiscoveryError?i.code:"agent-deck-discovery-failed";return console.error("Agent Deck deck discovery failed:",a),t.NextResponse.json({error:a,code:s,attemptedUrls:n,server_url:e},{status:502})}}e.s(["GET",0,n])},85581,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),c=e.i(16795),l=e.i(87718),d=e.i(95169),u=e.i(47587),p=e.i(66012),h=e.i(70101),f=e.i(26937),g=e.i(10372),v=e.i(93695),R=e.i(9580);e.i(52474);var m=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent-deck/decks/route",pathname:"/api/agent-deck/decks",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/agent-deck/decks/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(45746),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:k,serverHooks:y}=E;async function A(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/agent-deck/decks/route";w=w.replace(/\/index$/,"")||"/";let k=await E.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:y,deploymentId:A,params:x,nextConfig:D,parsedUrl:C,isDraftMode:S,prerenderManifest:T,routerServerContext:U,isOnDemandRevalidate:_,revalidateOnlyGenerated:b,resolvedPathname:N,clientReferenceManifest:O,serverActionsManifest:P}=k,q=(0,o.normalizeAppPath)(w),I=!!T.routes[N]&&(E.isDev||(0,R.isRouteCacheOwner)(N,E.cacheOwner,T.routes[N])),H=!!(T.dynamicRoutes[q]||I),L=async()=>((null==U?void 0:U.render404)?await U.render404(e,t,C,!1):t.end("This page could not be found"),null);if(H&&!S){let e=T.dynamicRoutes[q];if(e&&!1===e.fallback&&!I){if(D.adapterPath)return await L();throw new v.NoFallbackError}}let M=null;!H||E.isDev||S||(M="/index"===(M=N)?"/":M);let $=!0===E.isDev||!H,j=H&&!$;P&&O&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:O,serverActionsManifest:P});let G=e.method||"GET",F=(0,s.getTracer)(),K=F.getActiveScopeSpan(),B=!!(null==U?void 0:U.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),V=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,D,T,W);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let Q={params:x,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!D.experimental.authInterrupts,useCacheTimeout:D.experimental.useCacheTimeout},cacheComponents:!!D.cacheComponents,validationLevel:D.experimental.instantInsights.validationLevel,isDraftMode:S,supportsDynamicResponse:$,incrementalCache:V,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:D.cacheLife,staticPageGenerationTimeout:D.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>E.onRequestError(e,t,n,a,U)},sharedContext:{buildId:y,deploymentId:A}},X=new c.NodeNextRequest(e),J=new c.NodeNextResponse(t),z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:r})=>{try{if(!W&&_&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await E.handle(z,Q);e.fetchMetrics=Q.renderOpts.fetchMetrics;let s=Q.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let i=Q.renderOpts.collectedTags;if(!H)return await (0,p.sendResponse)(X,J,a,s),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);i&&(t[g.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Q.renderOpts.collectedRevalidate&&!(Q.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Q.renderOpts.collectedRevalidate,n=void 0===Q.renderOpts.collectedExpire||Q.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?D.expireTime:void 0:Q.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:_})},!1,U),t}},Y=async(a,i)=>{try{var o,c;let a=await E.handleResponse({req:e,nextConfig:D,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:b,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:W});if(!H)return;if((null==a||null==(o=a.value)?void 0:o.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",_?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,h.fromNodeOutgoingHttpHeaders)(a.value.headers);W&&H||s.delete(g.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,f.getCacheControlHeader)(a.cacheControl)),await (0,p.sendResponse)(X,J,new Response(a.value.body,{headers:s,status:a.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:_})},!1,U),H)throw t;await (0,p.sendResponse)(X,J,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:s.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||q,o=`${G} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),a.updateName(o),i&&i!==a&&(i.setAttribute("http.route",n),i.updateName(o))})()}};if(B&&K)await Y(K,void 0);else{let t=F.getActiveScopeSpan();await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${G} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":G,"http.target":e.url}},e=>Y(e,t)),void 0,!B)}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:k})},"routeModule",0,E,"serverHooks",0,y,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,k])},67505,e=>{"use strict";var t=e.i(22734),r=e.i(46786),n=e.i(14747),a=e.i(62294);let s="http://127.0.0.1:1111",i="agent_deck_server_url";class o extends Error{code="invalid-agent-deck-server-url";constructor(e){super(`Invalid Agent Deck server URL: ${JSON.stringify(String(e??""))}. Expected an http(s) URL such as ${s}.`)}}function c(e){let t;if("string"!=typeof e)throw new o(e);let r=e.trim();if(!r)throw new o(e);try{t=new URL(r)}catch{throw new o(e)}if("http:"!==t.protocol&&"https:"!==t.protocol||!t.hostname)throw new o(e);return t.toString().replace(/\/+$/,"")}function l(){try{let e=a.workspaceSettings.get(i);if(null===e)return s;return c(e)}catch{return s}}function d(e){return`${c(e)}/api/launch/decks`}class u extends Error{code;attemptedUrls;constructor(e,t,r="agent-deck-discovery-failed"){super(e),this.code=r,this.attemptedUrls=t}}function p(e,t){let r=globalThis.fetch;if("function"!=typeof r)throw Error("fetch is not available in this runtime.");return r(e,t).then(e=>({json:()=>e.json()}))}function h(e){try{return JSON.stringify(e??"").includes("GRANT_REQUIRED")}catch{return!1}}async function f(e){let t,r=d(e?.serverUrl!==void 0?c(e.serverUrl):l()),n=e?.fetchImpl??p;try{let e=await n(r,{method:"GET"});t=await e.json()}catch(e){if(e instanceof u){if(0===e.attemptedUrls.length)throw new u(e.message,[r],e.code);throw e}throw new u(`Cannot reach the Agent Deck server at ${r}: ${e instanceof Error?e.message:String(e)}. Check the workspace Agent Deck URL and that the server is running.`,[r],"connection-failed")}if(h(t))throw new u("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[r],"grant-required");try{var a=t;if("object"!=typeof a||null===a)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');if(h(a))throw new u("Agent Deck server refused deck discovery with GRANT_REQUIRED. Only GET /api/launch/decks is supported; GET /api/decks must not be used.",[],"grant-required");if(!0!==a.success)throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let e=a.data,r=e?.decks;if(!Array.isArray(r))throw Error('Expected {"success":true,"data":{"decks":[{"id","name"}]}}.');let n=r.map(e=>{if("object"!=typeof e||null===e)throw Error("Expected every deck to carry a string id and name.");let t="string"==typeof e.id?e.id.trim():"",r="string"==typeof e.name?e.name.trim():"";if(!t||!r)throw Error("Expected every deck to carry a string id and name.");return{id:t,name:r}});return n.sort((e,t)=>e.id<t.id?-1:+(e.id>t.id)),n}catch(e){if(e instanceof u)throw e;throw new u(`Agent Deck server at ${r} returned an unexpected deck payload: ${e instanceof Error?e.message:String(e)}`,[r],"invalid-payload")}}function g(e){if(e&&e.trim())return e;let t=(process.env.HOME??"").trim();return t||r.default.homedir()}e.s(["AgentDeckDiscoveryError",0,u,"DEFAULT_AGENT_DECK_SERVER_URL",0,s,"InvalidAgentDeckServerUrlError",0,o,"agentDeckDecksUrl",0,d,"getAgentDeckServerUrl",0,l,"isLocalAgentDeckUrl",0,function(e){let t;try{t=new URL("string"==typeof e?e.trim():"")}catch{return!1}let r=t.hostname.trim().toLowerCase().replace(/^\[|\]$/g,"");return!!("localhost"===r||"::1"===r||"::ffff:127.0.0.1"===r||/^127\.\d+\.\d+\.\d+$/.test(r))},"listAgentDecks",0,f,"remoteLaunchUnsupportedMessage",0,function(e){return`[Deck failed] Remote Agent Deck launch is not supported: the workspace Agent Deck server is non-local and remote \`agent-deck run\` targeting is unconfirmed. Point the workspace server URL at the local Agent Deck server to launch. (server_url=${e})`},"resolveAndEnsureBotWorkdir",0,function(e,r,a){let s=function(e,t,r){let a="string"==typeof t?t.trim():"";if(a)return"~"===a?g(r):a.startsWith("~/")||a.startsWith("~\\")?n.default.join(g(r),a.slice(2)):a;let s=String(e??"").trim();if(!s)throw Error("defaultBotWorkdir requires a bot id.");let i=g(r);return n.default.resolve(i,".botmancers",s)}(e,r,a);return t.default.mkdirSync(s,{recursive:!0}),s},"setAgentDeckServerUrl",0,function(e){let t=c(e);return a.workspaceSettings.set(i,t),t}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1afl75n._.js.map
@@ -1,7 +0,0 @@
1
- module.exports=[33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},39229,51749,29370,e=>{"use strict";var t=e.i(33405),r=e.i(62349),n=e.i(54799),i=e.i(22734),o=e.i(14747),s=e.i(52036);let a="/v1/chat/completions";class l extends Error{code;status;constructor(e,t,r){super(t),this.name="HermesError",this.code=e,this.status=r}}function d(e=process.env){var t;let r,n=(e.HERMES_API_SERVER_KEY||"").trim();if(!n)return null;let i=(e.HERMES_BASE_URL||"").trim()||"http://127.0.0.1:8642",o=(e.HERMES_SESSION_PREFIX||"").trim()||"botmancer-specialist-",s=(e.HERMES_MODEL||"").trim()||"hermes";return{baseUrl:i.replace(/\/+$/,""),apiKey:n,timeoutMs:(r=Number(t=e.HERMES_TIMEOUT_MS),void 0!==t&&""!==t&&Number.isFinite(r)&&r>0?Math.floor(r):24e4),sessionPrefix:o,model:s}}function c(e,t){return`${t.sessionPrefix}${e}`}function u(e,t){return new l("aborted","Hermes request aborted")}async function f(e){var t;let r,n,{config:i,profilePath:o,sessionId:s,messages:a,signal:d}=e,c=e.fetchImpl||((e,t)=>fetch(e,t)),f=(t=i.baseUrl,r=t.replace(/\/+$/,""),n=o.startsWith("/")?o:`/${o}`,`${r}${n}`),p=new AbortController,g=!1,m=setTimeout(()=>{g=!0,p.abort()},i.timeoutMs);m.unref&&m.unref();let h=()=>p.abort();if(d){if(d.aborted)throw clearTimeout(m),u(d,i.timeoutMs);d.addEventListener("abort",h,{once:!0})}try{let e,t;try{e=await c(f,{method:"POST",headers:{Authorization:`Bearer ${i.apiKey}`,"Content-Type":"application/json","X-Hermes-Session-Id":s},body:JSON.stringify({model:i.model,stream:!1,messages:a}),signal:p.signal})}catch(e){if(g)throw new l("timeout",`Hermes request timed out after ${i.timeoutMs} ms`);if(p.signal.aborted)throw u(d??p.signal,i.timeoutMs);throw new l("network",`Hermes request failed: ${String(e)}`)}let r="";try{r=await e.text()}catch{r=""}if(!e.ok){let t=`Hermes turn failed with status ${e.status}`;try{let e=JSON.parse(r);e?.error?.message&&(t=e.error.message)}catch{let e=r.trim().slice(0,120);e&&(t=`${t}: ${e}`)}throw new l("http",t,e.status)}try{t=JSON.parse(r)}catch{throw new l("protocol","Hermes reply was not JSON",e.status)}return t.choices?.[0]?.message?.content?.trim()||"No response"}finally{clearTimeout(m),d&&d.removeEventListener("abort",h)}}function p(e,t,r=null){return{category:e,code:r,message:t.slice(0,500)}}function g(e){let t=null,r=null;return{promise:new Promise(n=>{if(e.signal&&(r=()=>n(p("cancelled","The attempt was cancelled.")),e.signal.aborted?r():e.signal.addEventListener("abort",r,{once:!0})),"number"==typeof e.deadlineAt){let r=e.deadlineAt,i=()=>{let e=r-Date.now();e<=0?n(p("timed_out","The attempt passed its deadline.")):(t=setTimeout(i,Math.min(e,0x7fffffff))).unref&&t.unref()};i()}}),dispose:()=>{t&&clearTimeout(t),r&&e.signal&&e.signal.removeEventListener("abort",r)}}}function m(e){return e.signal?.aborted?p("cancelled","The attempt was cancelled before launch."):"number"==typeof e.deadlineAt&&Date.now()>=e.deadlineAt?p("timed_out","The attempt passed its deadline before launch."):null}e.s(["HERMES_DEFAULT_CHAT_PATH",0,a,"HermesError",0,l,"appendHermesWaitLog",0,function(e){try{let t=function(e=process.env){return(0,s.waitLogPath)(e)}();i.default.mkdirSync(o.default.dirname(t),{recursive:!0}),i.default.appendFileSync(t,JSON.stringify({at:new Date().toISOString(),...e})+"\n")}catch(e){console.error("wait log failed",e)}},"hermesChat",0,f,"hermesFreshSessionIdForBot",0,function(e,t){return`${c(e,t)}-x-${(0,n.randomUUID)()}`},"hermesProfilePathForBot",0,function(e){let t=(e.hermes_profile||"").trim();if(!t)return a;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return r?`/p/${r}${a}`:a},"hermesSessionIdForBot",0,c,"loadHermesConfig",0,d],51749),e.s(["attemptFailure",0,p,"freezeAttemptInput",0,function(e){return Object.freeze({...e,target:Object.freeze({...e.target}),prompt:Object.freeze("text"===e.prompt.kind?{...e.prompt}:{...e.prompt,history:Object.freeze(e.prompt.history.map(e=>Object.freeze({...e})))}),sessionBinding:e.sessionBinding?Object.freeze({...e.sessionBinding}):null,correlation:Object.freeze({...e.correlation})})},"interruption",0,g,"preLaunchInterruption",0,m],29370);let h=["codex","claude","cursor","muse"];class y extends Error{code="invalid-runtime";constructor(e){super(`Invalid agent-deck runtime: ${JSON.stringify(String(e))}. Expected one of ${h.join("|")}.`)}}function w(e){if("string"==typeof e&&h.includes(e))return e;throw new y(e)}let _=["running","ended","error","died"],k=function(e){let[r,...n]=e;return new Promise(e=>{(0,t.execFile)(r,n,{maxBuffer:4194304},(t,n,i)=>{t&&"ENOENT"===t.code?e({stdout:"",stderr:`Command not found: ${r}`,exitCode:127}):e({stdout:String(n??""),stderr:String(i??""),exitCode:t&&"number"==typeof t.code?t.code:+!!t})})})};async function x(e){let t=function(e){let t=w(e.client);if(!e.deck)throw Error("agent-deck run requires a deck.");if(!e.cwd)throw Error("agent-deck run requires --cwd.");let r="string"==typeof e.prompt&&e.prompt.length>0,n="string"==typeof e.promptFile&&e.promptFile.length>0;if(r===n)throw Error("agent-deck run requires exactly one of --prompt/--prompt-file.");let i=["agent-deck","run",e.deck,"--client",t,"--cwd",e.cwd];return r&&i.push("--prompt",e.prompt),n&&i.push("--prompt-file",e.promptFile),i.push("--tools",e.tools??"readonly"),e.logPath&&i.push("--log",e.logPath),e.resume&&i.push("--resume",e.resume),e.detach&&i.push("--detach"),i}(e),r=await k(t);if(0!==r.exitCode)throw Error(`agent-deck run failed to start (exit ${r.exitCode}): ${r.stderr.slice(0,300)||r.stdout.slice(0,300)}`);return{...function(e){let t=e.match(/run\s+(\S+)\s+detached:\s+pid\s+(\S+)\s+log\s+(\S+)/);if(!t)throw Error(`Unrecognized agent-deck detach output: ${JSON.stringify(e.slice(0,200))}.`);return{runId:t[1],pid:t[2],logPath:t[3]}}(r.stdout),argv:t}}async function v(e){let t=await k(function(e){if(!e)throw Error("agent-deck run status requires a runId.");return["agent-deck","run","status",e,"--json"]}(e));if(0!==t.exitCode)throw Error(`agent-deck run status failed for ${e} (exit ${t.exitCode}): ${t.stderr.slice(0,300)}`);return function(e){let t;try{t=JSON.parse(e)}catch{throw Error("agent-deck run status did not return JSON.")}let r=String(t.state??"");if(!_.includes(r))throw Error(`Unknown agent-deck run state: ${JSON.stringify(r)}.`);let n=t.sessionId;return{runId:String(t.runId??""),deck:String(t.deck??""),client:String(t.client??""),state:r,sessionId:"string"==typeof n&&n.length>0?n:null,logPath:"string"==typeof t.logPath?t.logPath:null}}(t.stdout)}async function S(e,t){let r=await k(function(e,t){if(!e)throw Error("agent-deck run log requires a runId.");let r=["agent-deck","run","log",e,"--json"];return t?.tail!==void 0&&r.push("--tail",String(t.tail)),t?.follow&&r.push("--follow"),r}(e,t));if(0!==r.exitCode)throw Error(`agent-deck run log failed for ${e} (exit ${r.exitCode}): ${r.stderr.slice(0,300)}`);let n=function(e){let t=null,r=null,n=!1,i=null;for(let o of e.split("\n")){let e,s=o.trim();if(s){try{e=JSON.parse(s)}catch{continue}if("result"===e.t){let n=e.sessionId??e.session_id;"string"==typeof e.result&&e.result.length>0?(t={result:e.result,sessionId:"string"==typeof n&&n.length>0?n:null},r=null):(t=null,r=function(e){if(!Object.prototype.hasOwnProperty.call(e,"result"))return"missing";let t=e.result;return null===t?"null":Array.isArray(t)?"array":""===t?"empty string":typeof t}(e))}else if("end"===e.t)n=!0;else if("error"===e.t){let t=e.message??e.error;i="string"==typeof t&&t.length>0?t:"unknown log error"}}}return{result:t,resultMismatch:r,ended:n,errorMessage:i}}(r.stdout);return{raw:r.stdout,...n}}class b extends Error{category;constructor(e,t){super(t),this.category=e}}async function E(e){let t=await S(e,{follow:!0});if(t.errorMessage)throw new b("runtime_failed",`agent-deck run ${e} failed: ${t.errorMessage.slice(0,300)}`);if(!t.ended)throw new b("runtime_failed",`agent-deck run ${e} ended without a terminal log event; failing closed.`);let r=await v(e);if("error"===r.state||"died"===r.state)throw new b("runtime_failed",`agent-deck run ${e} ${r.state}`);if(!t.result)throw new b("result_contract",`agent-deck run ${e} result contract mismatch: expected a non-empty string result, got ${t.resultMismatch??"no result event"}.`);return{status:r,result:t.result.result,sessionId:r.sessionId??t.result.sessionId}}let I={codex:["codex","--version"],claude:["claude","--version"],cursor:["cursor","--version"],muse:["muse","--version"]},$=["agent-deck","--version"];async function A(e){let t=I[w(e)];try{let e=await k(t);if(0!==e.exitCode)return!1;let r=await k($);return 0===r.exitCode}catch{return!1}}async function O(e){if("hermes-gateway"===(0,r.agentTransport)(e))try{return null!==d()}catch{return!1}return A(e)}async function j(){let e=[];for(let t of r.AGENTS)await O(t)&&e.push(t);return e}function P(e){if("text"===e.kind)return e.text;let t=e.history.map(e=>`[${e.fromAgent?"you":e.speakerLabel}] ${e.content}`).join("\n\n");return`${e.system}
2
-
3
- Conversation so far (reply to the last message):
4
-
5
- ${t}`}function C(e){return e instanceof Error?e.message:String(e)}e.s(["createAgentDeckAttemptAdapter",0,function(){let e="agent-deck-run";return{name:e,async run(t,r){let n,i,o=Date.now(),s=(t,r={})=>({status:"failed",adapter:e,externalRunId:r.runId??null,externalSessionId:r.sessionId??null,output:null,artifacts:r.logPath?[{kind:"run_log",ref:r.logPath}]:[],startedAt:o,finishedAt:Date.now(),failure:t});if("readonly"!==t.toolProfile&&"edit"!==t.toolProfile)return s(p("unsupported_authority",`Unsupported tool profile: ${JSON.stringify(String(t.toolProfile))}.`));if(!t.deck)return s(p("unavailable","agent-deck run requires a deck."));if(!t.cwd)return s(p("unavailable","agent-deck run requires --cwd."));try{n=w(t.target.agent)}catch(e){return s(p("unavailable",C(e)))}let a=m(t);if(a)return s(a);let l=t.sessionBinding?.externalSessionId??null;try{i=await x({deck:t.deck,client:n,cwd:t.cwd,prompt:P(t.prompt),tools:t.toolProfile,...l?{resume:l}:{},detach:!0})}catch(e){return s(p("launch_failed",C(e)))}r?.({type:"started",adapter:e,at:Date.now(),externalRunId:i.runId,externalSessionId:null});let d=g(t),c=E(i.runId);c.catch(()=>{});let u={runId:i.runId,logPath:i.logPath};try{let t=await Promise.race([c.then(e=>({awaited:e}),e=>({error:e})),d.promise.then(e=>({interrupted:e}))]);if("interrupted"in t)return s(t.interrupted,u);if("error"in t){let e=t.error instanceof b?t.error.category:"runtime_failed";return s(p(e,C(t.error)),u)}let{awaited:r}=t,n=r.status.logPath??i.logPath;if(l&&null!==r.sessionId&&r.sessionId!==l)return s(p("session_mismatch",`resume run ${i.runId} forked the session (expected ${l}, got ${r.sessionId}); failing closed.`),{...u,sessionId:r.sessionId,logPath:n});return{status:"completed",adapter:e,externalRunId:i.runId,externalSessionId:r.sessionId??l,output:r.result,artifacts:n?[{kind:"run_log",ref:n}]:[],startedAt:o,finishedAt:Date.now(),failure:null}}finally{d.dispose()}}}},"deckPromptForAttempt",0,P,"listAvailableAgents",0,j,"parseDeckRuntime",0,w],39229)},62349,16979,e=>{"use strict";let t=[{id:"purple",label:"Purple",hex:"#7C3AED"},{id:"blue",label:"Blue",hex:"#2563EB"},{id:"teal",label:"Teal",hex:"#0D9488"},{id:"green",label:"Green",hex:"#16A34A"},{id:"amber",label:"Amber",hex:"#B45309"},{id:"orange",label:"Orange",hex:"#EA580C"},{id:"pink",label:"Pink",hex:"#DB2777"},{id:"slate",label:"Slate",hex:"#64748B"}],r=[{id:"dots",label:"Round dots"},{id:"sleepy",label:"Sleepy"},{id:"happy",label:"Happy arcs"},{id:"wide",label:"Wide ovals"}],n=[{id:"folded",label:"Folded arms"},{id:"reaching",label:"Reaching right"},{id:"waving",label:"Waving"}],i=[{id:"none",label:"None"},{id:"crown",label:"Crown"},{id:"glasses",label:"Glasses"},{id:"headset",label:"Headset"},{id:"hat",label:"Hat"},{id:"bow",label:"Bow"}],o={color:"purple",eyes:"dots",hands:"folded",accessory:"none"},s={...o,accessory:"crown"};function a(e){return"chief-of-staff"===String(e??"").trim().toLowerCase()}function l(e,t){return"string"==typeof t&&e.some(e=>e.id===t)}function d(e){let d=l(t,e.avatar_color)?e.avatar_color:o.color,c=l(r,e.avatar_eyes)?e.avatar_eyes:o.eyes;return{color:d,eyes:c,hands:l(n,e.avatar_hands)?e.avatar_hands:o.hands,accessory:l(i,e.avatar_accessory)?e.avatar_accessory:a(e.name)?s.accessory:o.accessory}}e.s(["isChiefOfStaffName",0,a,"resolveAvatar",0,d,"validateAvatarInput",0,function(e){let o=[],s={};if(null==e)return{errors:o,fields:s};if("object"!=typeof e||Array.isArray(e))return{errors:["Invalid avatar: expected an object with color, eyes, hands, and accessory."],fields:s};if(void 0!==e.color)try{s.avatar_color=function(e){if(l(t,e))return e;throw Error(`Invalid avatar color: ${JSON.stringify(String(e))}. Expected one of ${t.map(e=>e.id).join("|")}.`)}(e.color)}catch(e){o.push(e instanceof Error?e.message:String(e))}if(void 0!==e.eyes)try{s.avatar_eyes=function(e){if(l(r,e))return e;throw Error(`Invalid avatar eyes: ${JSON.stringify(String(e))}. Expected one of ${r.map(e=>e.id).join("|")}.`)}(e.eyes)}catch(e){o.push(e instanceof Error?e.message:String(e))}if(void 0!==e.hands)try{s.avatar_hands=function(e){if(l(n,e))return e;throw Error(`Invalid avatar hands: ${JSON.stringify(String(e))}. Expected one of ${n.map(e=>e.id).join("|")}.`)}(e.hands)}catch(e){o.push(e instanceof Error?e.message:String(e))}if(void 0!==e.accessory)try{s.avatar_accessory=function(e){if(l(i,e))return e;throw Error(`Invalid avatar accessory: ${JSON.stringify(String(e))}. Expected one of ${i.map(e=>e.id).join("|")}.`)}(e.accessory)}catch(e){o.push(e instanceof Error?e.message:String(e))}return{errors:o,fields:s}}],16979);let c=["hermes","cursor","claude","codex","muse"],u={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},f="hermes",p={hermes:"hermes-gateway",cursor:"agent-deck-run",claude:"agent-deck-run",codex:"agent-deck-run",muse:"agent-deck-run"};class g extends Error{code="invalid-agent";constructor(e){super(`Invalid agent: ${JSON.stringify(String(e))}. Expected one of ${c.join("|")}.`)}}class m extends Error{code="invalid-deck";constructor(e){super(`Invalid deck ID: ${JSON.stringify("string"==typeof e?e:String(e))}. Select a deck from the configured Agent Deck server.`)}}let h="Deck ID is required. Select an Agent Deck before saving this agent.",y=`Agent is required. Expected one of ${c.join("|")}.`;function w(e){if(null==e)return null;let t=String(e).trim();if(!t)return null;if(c.includes(t))return t;throw new g(e)}function _(e){return null==e?null:String(e).trim()||null}function k(e){if(null==e)return null;if("string"!=typeof e)throw new m(e);let t=e.trim();if(!t)return null;if(!function(e){if(e.length>200||/\s/.test(e))return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<32||127===r)return!1}return!0}(t))throw new m(e);return t}function x(e){if(!0===e||1===e)return!0;if("string"==typeof e){let t=e.trim().toLowerCase();return"1"===t||"true"===t}return!1}function v(e){let t=f,r=!0;try{t=w(e.agent)??f}catch{r=!1}let n=_(e.deck_id),i=_(e.deck_name),o=_(e.working_directory),s=null===n||x(e.needs_deck_selection),a=r&&!s;return{agent:t,deck_id:n,deck_name:i,working_directory:o,needs_deck_selection:s,launchable:a}}let S=["codex","claude","cursor","muse"];function b(e){let t=_(e);return t&&S.includes(t)?t:null}let E=["runtime","agent_client","persistent_runtime","coding_runtime","needs_deck_reselection"];function I(e,t){(void 0!==e.runtime||void 0!==e.agent_client)&&t.push("Fields runtime/agent_client are no longer accepted. Send agent (hermes|cursor|claude|codex|muse) and deck_id instead."),void 0!==e.deck_name&&t.push("deck_name is a read-only legacy reference. Select a deck_id from the configured Agent Deck server instead.")}e.s(["AGENTS",0,c,"DEFAULT_AGENT",0,f,"agentTransport",0,function(e){return p[e]},"applyAgentUpdate",0,function(e,t){let r=v(e),n=t.agent??r.agent,i=void 0!==t.working_directory?t.working_directory:r.working_directory;return void 0!==t.deck_id?{agent:n,deck_id:t.deck_id,deck_name:null,working_directory:i,needs_deck_selection:!1}:{agent:n,deck_id:r.deck_id,deck_name:r.deck_name,working_directory:i,needs_deck_selection:r.needs_deck_selection}},"buildAvailabilityPayload",0,function(e){let t=[];for(let r of c)e.includes(r)&&t.push({agent:r,label:u[r],launchable:!0});return{agents:t}},"hasAgentUpdate",0,function(e){return["agent","deck_id","working_directory","runtime","agent_client","deck_name"].some(t=>void 0!==e[t])},"migrateLegacyAgentFields",0,function(e){let t=_(e.deck_id),r=_(e.deck_name),n=_(e.working_directory);try{let o=w(e.agent);if(o){var i;return{agent:o,deck_id:t,deck_name:r,working_directory:n,needs_deck_selection:null===t||(i=e.needs_deck_selection,x(i)),migrated:!1}}}catch{}let o=_(e.runtime),s=f,a=x(e.needs_deck_reselection);if("agent-deck"===o){let t=b(e.agent_client);t?s=t:a=!0}else if("hermes"!==o){let t=b(e.coding_runtime);t&&r&&n&&(s=t,a=!0)}return{agent:s,deck_id:t,deck_name:r,working_directory:n,needs_deck_selection:null===t||a,migrated:!0}},"resolveAgent",0,v,"serializeBot",0,function(e){let t=v(e),r={...e};for(let e of E)delete r[e];return{...r,agent:t.agent,deck_id:t.deck_id,deck_name:t.deck_name,working_directory:t.working_directory,needs_deck_selection:t.needs_deck_selection,launchable:t.launchable,avatar_config:d(e)}},"validateCreateAgent",0,function(e){let t=[];I(e,t);let r=f;try{r=w(e.agent)??f}catch(e){t.push(e instanceof Error?e.message:String(e))}let n=null;try{(n=k(e.deck_id))||t.push(h)}catch(e){t.push(e instanceof Error?e.message:String(e))}return{errors:t,normalized:{agent:r,deck_id:n??"",working_directory:_(e.working_directory)}}},"validateUpdateAgent",0,function(e){let t=[],r={};if(I(e,t),void 0!==e.agent)try{let n=w(e.agent);n?r.agent=n:t.push(y)}catch(e){t.push(e instanceof Error?e.message:String(e))}if(void 0!==e.deck_id)try{let n=k(e.deck_id);n?r.deck_id=n:t.push(h)}catch(e){t.push(e instanceof Error?e.message:String(e))}return void 0!==e.working_directory&&(r.working_directory=_(e.working_directory)),{errors:t,fields:r}}],62349)},52036,e=>{"use strict";var t=e.i(14747);function r(e=process.env){let n=(e.BOTMANCERS_HOME||"").trim();return n?t.default.resolve(n):null}function n(e,t){return(e[t]||"").trim()||null}e.s(["botmancersHome",0,r,"dbPath",0,function(e=process.env){let i=n(e,"BOTMANCERS_DB_PATH");if(i)return i;let o=r(e);return o?t.default.join(o,"data/botmancers.db"):"botmancers.db"},"filesRootPath",0,function(e=process.env){let i=n(e,"BOTMANCERS_FILES_ROOT");if(i)return t.default.resolve(i);let o=r(e);return o?t.default.join(o,"files"):t.default.resolve(process.cwd(),"files")},"skillsRootPath",0,function(e=process.env){let i=n(e,"BOTMANCERS_SKILLS_ROOT");if(i)return t.default.resolve(i);let o=r(e);return o?t.default.join(o,"skills"):t.default.resolve(process.cwd(),"skills")},"waitLogPath",0,function(e=process.env){let i=n(e,"HERMES_WAIT_LOG_PATH");if(i)return i;let o=r(e);return o?t.default.join(o,"logs/specialist-waits.jsonl"):t.default.join(process.cwd(),".temporal","specialist-waits.jsonl")}])}];
6
-
7
- //# sourceMappingURL=%5Broot-of-the-server%5D__1kvvdpx._.js.map
@@ -1,7 +0,0 @@
1
- module.exports=[33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},49091,e=>{"use strict";var t=e.i(89171),r=e.i(39229),n=e.i(62349);async function o(){try{let e=await (0,r.listAvailableAgents)();return t.NextResponse.json((0,n.buildAvailabilityPayload)(e))}catch(e){return console.error("Error probing agents:",e),t.NextResponse.json({error:"Failed to probe agents"},{status:500})}}e.s(["GET",0,o])},26784,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),o=e.i(59756),a=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),g=e.i(10372),m=e.i(93695),w=e.i(9580);e.i(52474);var y=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/bots/availability/route",pathname:"/api/bots/availability",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bots/availability/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(49091),...{}}),{workAsyncStorage:E,workUnitAsyncStorage:R,serverHooks:x}=v;async function S(e,t,n){n.requestMeta&&(0,o.setRequestMeta)(e,n.requestMeta),v.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/bots/availability/route";E=E.replace(/\/index$/,"")||"/";let R=await v.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:x,deploymentId:S,params:b,nextConfig:I,parsedUrl:k,isDraftMode:A,prerenderManifest:C,routerServerContext:P,isOnDemandRevalidate:$,revalidateOnlyGenerated:_,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:N}=R,H=(0,s.normalizeAppPath)(E),M=!!C.routes[O]&&(v.isDev||(0,w.isRouteCacheOwner)(O,v.cacheOwner,C.routes[O])),q=!!(C.dynamicRoutes[H]||M),D=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,k,!1):t.end("This page could not be found"),null);if(q&&!A){let e=C.dynamicRoutes[H];if(e&&!1===e.fallback&&!M){if(I.adapterPath)return await D();throw new m.NoFallbackError}}let U=null;!q||v.isDev||A||(U="/index"===(U=O)?"/":U);let F=!0===v.isDev||!q,j=q&&!F;N&&T&&(0,i.setManifestsSingleton)({page:E,clientReferenceManifest:T,serverActionsManifest:N});let L=e.method||"GET",B=(0,a.getTracer)(),z=B.getActiveScopeSpan(),J=!!(null==P?void 0:P.isWrappedByNextServer),K=!!(0,o.getRequestMeta)(e,"minimalMode"),G=(0,o.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,I,C,K);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let X={params:b,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts,useCacheTimeout:I.experimental.useCacheTimeout},cacheComponents:!!I.cacheComponents,validationLevel:I.experimental.instantInsights.validationLevel,isDraftMode:A,supportsDynamicResponse:F,incrementalCache:G,hmrRefreshHash:(0,o.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:I.cacheLife,staticPageGenerationTimeout:I.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,o)=>v.onRequestError(e,t,n,o,P)},sharedContext:{buildId:x,deploymentId:S}},V=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:r})=>{try{if(!K&&$&&_&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await v.handle(Y,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let a=X.renderOpts.pendingWaitUntil;a&&n.waitUntil&&(n.waitUntil(a),a=void 0);let i=X.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(V,W,o,a),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);i&&(t[g.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,n=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?I.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:$})},!1,P),t}},Q=async(o,i)=>{try{var s,l;let o=await v.handleResponse({req:e,nextConfig:I,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:$,revalidateOnlyGenerated:_,responseGenerator:Z,waitUntil:n.waitUntil,isMinimalMode:K});if(!q)return;if((null==o||null==(s=o.value)?void 0:s.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==o||null==(l=o.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",$?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let a=(0,f.fromNodeOutgoingHttpHeaders)(o.value.headers);K&&q||a.delete(g.NEXT_CACHE_TAGS_HEADER),!o.cacheControl||t.getHeader("Cache-Control")||a.get("Cache-Control")||a.set("Cache-Control",(0,h.getCacheControlHeader)(o.cacheControl)),await (0,p.sendResponse)(V,W,new Response(o.value.body,{headers:a,status:o.value.status||200}));return}catch(t){if(t instanceof m.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:$})},!1,P),q)throw t;await (0,p.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!o)return;let e=t.statusCode;o.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(o.setStatus({code:a.SpanStatusCode.ERROR}),o.setAttribute("error.type",e.toString()));let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||H,s=`${L} ${n}`;o.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),o.updateName(s),i&&i!==o&&(i.setAttribute("http.route",n),i.updateName(s))})()}};if(J&&z)await Q(z,void 0);else{let t=B.getActiveScopeSpan();await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${E}`,kind:a.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Q(e,t)),void 0,!J)}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:R})},"routeModule",0,v,"serverHooks",0,x,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,R])},39229,51749,29370,e=>{"use strict";var t=e.i(33405),r=e.i(62349),n=e.i(54799),o=e.i(22734),a=e.i(14747),i=e.i(52036);let s="/v1/chat/completions";class l extends Error{code;status;constructor(e,t,r){super(t),this.name="HermesError",this.code=e,this.status=r}}function u(e=process.env){var t;let r,n=(e.HERMES_API_SERVER_KEY||"").trim();if(!n)return null;let o=(e.HERMES_BASE_URL||"").trim()||"http://127.0.0.1:8642",a=(e.HERMES_SESSION_PREFIX||"").trim()||"botmancer-specialist-",i=(e.HERMES_MODEL||"").trim()||"hermes";return{baseUrl:o.replace(/\/+$/,""),apiKey:n,timeoutMs:(r=Number(t=e.HERMES_TIMEOUT_MS),void 0!==t&&""!==t&&Number.isFinite(r)&&r>0?Math.floor(r):24e4),sessionPrefix:a,model:i}}function d(e,t){return`${t.sessionPrefix}${e}`}function c(e,t){return new l("aborted","Hermes request aborted")}async function p(e){var t;let r,n,{config:o,profilePath:a,sessionId:i,messages:s,signal:u}=e,d=e.fetchImpl||((e,t)=>fetch(e,t)),p=(t=o.baseUrl,r=t.replace(/\/+$/,""),n=a.startsWith("/")?a:`/${a}`,`${r}${n}`),f=new AbortController,h=!1,g=setTimeout(()=>{h=!0,f.abort()},o.timeoutMs);g.unref&&g.unref();let m=()=>f.abort();if(u){if(u.aborted)throw clearTimeout(g),c(u,o.timeoutMs);u.addEventListener("abort",m,{once:!0})}try{let e,t;try{e=await d(p,{method:"POST",headers:{Authorization:`Bearer ${o.apiKey}`,"Content-Type":"application/json","X-Hermes-Session-Id":i},body:JSON.stringify({model:o.model,stream:!1,messages:s}),signal:f.signal})}catch(e){if(h)throw new l("timeout",`Hermes request timed out after ${o.timeoutMs} ms`);if(f.signal.aborted)throw c(u??f.signal,o.timeoutMs);throw new l("network",`Hermes request failed: ${String(e)}`)}let r="";try{r=await e.text()}catch{r=""}if(!e.ok){let t=`Hermes turn failed with status ${e.status}`;try{let e=JSON.parse(r);e?.error?.message&&(t=e.error.message)}catch{let e=r.trim().slice(0,120);e&&(t=`${t}: ${e}`)}throw new l("http",t,e.status)}try{t=JSON.parse(r)}catch{throw new l("protocol","Hermes reply was not JSON",e.status)}return t.choices?.[0]?.message?.content?.trim()||"No response"}finally{clearTimeout(g),u&&u.removeEventListener("abort",m)}}function f(e,t,r=null){return{category:e,code:r,message:t.slice(0,500)}}function h(e){let t=null,r=null;return{promise:new Promise(n=>{if(e.signal&&(r=()=>n(f("cancelled","The attempt was cancelled.")),e.signal.aborted?r():e.signal.addEventListener("abort",r,{once:!0})),"number"==typeof e.deadlineAt){let r=e.deadlineAt,o=()=>{let e=r-Date.now();e<=0?n(f("timed_out","The attempt passed its deadline.")):(t=setTimeout(o,Math.min(e,0x7fffffff))).unref&&t.unref()};o()}}),dispose:()=>{t&&clearTimeout(t),r&&e.signal&&e.signal.removeEventListener("abort",r)}}}function g(e){return e.signal?.aborted?f("cancelled","The attempt was cancelled before launch."):"number"==typeof e.deadlineAt&&Date.now()>=e.deadlineAt?f("timed_out","The attempt passed its deadline before launch."):null}e.s(["HERMES_DEFAULT_CHAT_PATH",0,s,"HermesError",0,l,"appendHermesWaitLog",0,function(e){try{let t=function(e=process.env){return(0,i.waitLogPath)(e)}();o.default.mkdirSync(a.default.dirname(t),{recursive:!0}),o.default.appendFileSync(t,JSON.stringify({at:new Date().toISOString(),...e})+"\n")}catch(e){console.error("wait log failed",e)}},"hermesChat",0,p,"hermesFreshSessionIdForBot",0,function(e,t){return`${d(e,t)}-x-${(0,n.randomUUID)()}`},"hermesProfilePathForBot",0,function(e){let t=(e.hermes_profile||"").trim();if(!t)return s;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return r?`/p/${r}${s}`:s},"hermesSessionIdForBot",0,d,"loadHermesConfig",0,u],51749),e.s(["attemptFailure",0,f,"freezeAttemptInput",0,function(e){return Object.freeze({...e,target:Object.freeze({...e.target}),prompt:Object.freeze("text"===e.prompt.kind?{...e.prompt}:{...e.prompt,history:Object.freeze(e.prompt.history.map(e=>Object.freeze({...e})))}),sessionBinding:e.sessionBinding?Object.freeze({...e.sessionBinding}):null,correlation:Object.freeze({...e.correlation})})},"interruption",0,h,"preLaunchInterruption",0,g],29370);let m=["codex","claude","cursor","muse"];class w extends Error{code="invalid-runtime";constructor(e){super(`Invalid agent-deck runtime: ${JSON.stringify(String(e))}. Expected one of ${m.join("|")}.`)}}function y(e){if("string"==typeof e&&m.includes(e))return e;throw new w(e)}let v=["running","ended","error","died"],E=function(e){let[r,...n]=e;return new Promise(e=>{(0,t.execFile)(r,n,{maxBuffer:4194304},(t,n,o)=>{t&&"ENOENT"===t.code?e({stdout:"",stderr:`Command not found: ${r}`,exitCode:127}):e({stdout:String(n??""),stderr:String(o??""),exitCode:t&&"number"==typeof t.code?t.code:+!!t})})})};async function R(e){let t=function(e){let t=y(e.client);if(!e.deck)throw Error("agent-deck run requires a deck.");if(!e.cwd)throw Error("agent-deck run requires --cwd.");let r="string"==typeof e.prompt&&e.prompt.length>0,n="string"==typeof e.promptFile&&e.promptFile.length>0;if(r===n)throw Error("agent-deck run requires exactly one of --prompt/--prompt-file.");let o=["agent-deck","run",e.deck,"--client",t,"--cwd",e.cwd];return r&&o.push("--prompt",e.prompt),n&&o.push("--prompt-file",e.promptFile),o.push("--tools",e.tools??"readonly"),e.logPath&&o.push("--log",e.logPath),e.resume&&o.push("--resume",e.resume),e.detach&&o.push("--detach"),o}(e),r=await E(t);if(0!==r.exitCode)throw Error(`agent-deck run failed to start (exit ${r.exitCode}): ${r.stderr.slice(0,300)||r.stdout.slice(0,300)}`);return{...function(e){let t=e.match(/run\s+(\S+)\s+detached:\s+pid\s+(\S+)\s+log\s+(\S+)/);if(!t)throw Error(`Unrecognized agent-deck detach output: ${JSON.stringify(e.slice(0,200))}.`);return{runId:t[1],pid:t[2],logPath:t[3]}}(r.stdout),argv:t}}async function x(e){let t=await E(function(e){if(!e)throw Error("agent-deck run status requires a runId.");return["agent-deck","run","status",e,"--json"]}(e));if(0!==t.exitCode)throw Error(`agent-deck run status failed for ${e} (exit ${t.exitCode}): ${t.stderr.slice(0,300)}`);return function(e){let t;try{t=JSON.parse(e)}catch{throw Error("agent-deck run status did not return JSON.")}let r=String(t.state??"");if(!v.includes(r))throw Error(`Unknown agent-deck run state: ${JSON.stringify(r)}.`);let n=t.sessionId;return{runId:String(t.runId??""),deck:String(t.deck??""),client:String(t.client??""),state:r,sessionId:"string"==typeof n&&n.length>0?n:null,logPath:"string"==typeof t.logPath?t.logPath:null}}(t.stdout)}async function S(e,t){let r=await E(function(e,t){if(!e)throw Error("agent-deck run log requires a runId.");let r=["agent-deck","run","log",e,"--json"];return t?.tail!==void 0&&r.push("--tail",String(t.tail)),t?.follow&&r.push("--follow"),r}(e,t));if(0!==r.exitCode)throw Error(`agent-deck run log failed for ${e} (exit ${r.exitCode}): ${r.stderr.slice(0,300)}`);let n=function(e){let t=null,r=null,n=!1,o=null;for(let a of e.split("\n")){let e,i=a.trim();if(i){try{e=JSON.parse(i)}catch{continue}if("result"===e.t){let n=e.sessionId??e.session_id;"string"==typeof e.result&&e.result.length>0?(t={result:e.result,sessionId:"string"==typeof n&&n.length>0?n:null},r=null):(t=null,r=function(e){if(!Object.prototype.hasOwnProperty.call(e,"result"))return"missing";let t=e.result;return null===t?"null":Array.isArray(t)?"array":""===t?"empty string":typeof t}(e))}else if("end"===e.t)n=!0;else if("error"===e.t){let t=e.message??e.error;o="string"==typeof t&&t.length>0?t:"unknown log error"}}}return{result:t,resultMismatch:r,ended:n,errorMessage:o}}(r.stdout);return{raw:r.stdout,...n}}class b extends Error{category;constructor(e,t){super(t),this.category=e}}async function I(e){let t=await S(e,{follow:!0});if(t.errorMessage)throw new b("runtime_failed",`agent-deck run ${e} failed: ${t.errorMessage.slice(0,300)}`);if(!t.ended)throw new b("runtime_failed",`agent-deck run ${e} ended without a terminal log event; failing closed.`);let r=await x(e);if("error"===r.state||"died"===r.state)throw new b("runtime_failed",`agent-deck run ${e} ${r.state}`);if(!t.result)throw new b("result_contract",`agent-deck run ${e} result contract mismatch: expected a non-empty string result, got ${t.resultMismatch??"no result event"}.`);return{status:r,result:t.result.result,sessionId:r.sessionId??t.result.sessionId}}let k={codex:["codex","--version"],claude:["claude","--version"],cursor:["cursor","--version"],muse:["muse","--version"]},A=["agent-deck","--version"];async function C(e){let t=k[y(e)];try{let e=await E(t);if(0!==e.exitCode)return!1;let r=await E(A);return 0===r.exitCode}catch{return!1}}async function P(e){if("hermes-gateway"===(0,r.agentTransport)(e))try{return null!==u()}catch{return!1}return C(e)}async function $(){let e=[];for(let t of r.AGENTS)await P(t)&&e.push(t);return e}function _(e){if("text"===e.kind)return e.text;let t=e.history.map(e=>`[${e.fromAgent?"you":e.speakerLabel}] ${e.content}`).join("\n\n");return`${e.system}
2
-
3
- Conversation so far (reply to the last message):
4
-
5
- ${t}`}function O(e){return e instanceof Error?e.message:String(e)}e.s(["createAgentDeckAttemptAdapter",0,function(){let e="agent-deck-run";return{name:e,async run(t,r){let n,o,a=Date.now(),i=(t,r={})=>({status:"failed",adapter:e,externalRunId:r.runId??null,externalSessionId:r.sessionId??null,output:null,artifacts:r.logPath?[{kind:"run_log",ref:r.logPath}]:[],startedAt:a,finishedAt:Date.now(),failure:t});if("readonly"!==t.toolProfile&&"edit"!==t.toolProfile)return i(f("unsupported_authority",`Unsupported tool profile: ${JSON.stringify(String(t.toolProfile))}.`));if(!t.deck)return i(f("unavailable","agent-deck run requires a deck."));if(!t.cwd)return i(f("unavailable","agent-deck run requires --cwd."));try{n=y(t.target.agent)}catch(e){return i(f("unavailable",O(e)))}let s=g(t);if(s)return i(s);let l=t.sessionBinding?.externalSessionId??null;try{o=await R({deck:t.deck,client:n,cwd:t.cwd,prompt:_(t.prompt),tools:t.toolProfile,...l?{resume:l}:{},detach:!0})}catch(e){return i(f("launch_failed",O(e)))}r?.({type:"started",adapter:e,at:Date.now(),externalRunId:o.runId,externalSessionId:null});let u=h(t),d=I(o.runId);d.catch(()=>{});let c={runId:o.runId,logPath:o.logPath};try{let t=await Promise.race([d.then(e=>({awaited:e}),e=>({error:e})),u.promise.then(e=>({interrupted:e}))]);if("interrupted"in t)return i(t.interrupted,c);if("error"in t){let e=t.error instanceof b?t.error.category:"runtime_failed";return i(f(e,O(t.error)),c)}let{awaited:r}=t,n=r.status.logPath??o.logPath;if(l&&null!==r.sessionId&&r.sessionId!==l)return i(f("session_mismatch",`resume run ${o.runId} forked the session (expected ${l}, got ${r.sessionId}); failing closed.`),{...c,sessionId:r.sessionId,logPath:n});return{status:"completed",adapter:e,externalRunId:o.runId,externalSessionId:r.sessionId??l,output:r.result,artifacts:n?[{kind:"run_log",ref:n}]:[],startedAt:a,finishedAt:Date.now(),failure:null}}finally{u.dispose()}}}},"deckPromptForAttempt",0,_,"listAvailableAgents",0,$,"parseDeckRuntime",0,y],39229)}];
6
-
7
- //# sourceMappingURL=%5Broot-of-the-server%5D__1qoa704._.js.map