botmancers 0.5.0 → 0.7.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 (993) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +17 -12
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +9 -2
  5. package/app/.next/build-manifest.json +3 -3
  6. package/app/.next/node_modules/@slack/socket-mode-77e8cba3b9ba4738/index.js +1 -0
  7. package/app/.next/node_modules/@slack/socket-mode-77e8cba3b9ba4738/package.json +1 -0
  8. package/app/.next/node_modules/@slack/web-api-d6dbe405b6902642/index.js +1 -0
  9. package/app/.next/node_modules/@slack/web-api-d6dbe405b6902642/package.json +1 -0
  10. package/app/.next/prerender-manifest.json +4 -4
  11. package/app/.next/required-server-files.json +8 -3
  12. package/app/.next/routes-manifest.json +67 -12
  13. package/app/.next/server/app/_global-error/page.js +1 -1
  14. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  15. package/app/.next/server/app/_global-error.html +1 -1
  16. package/app/.next/server/app/_global-error.rsc +1 -1
  17. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  18. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  19. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/app/.next/server/app/_not-found/page.js +1 -1
  21. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/_not-found.html +1 -1
  24. package/app/.next/server/app/_not-found.rsc +2 -2
  25. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  26. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  27. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/app/.next/server/app/api/bots/[id]/config/route.js +3 -3
  29. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  30. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js +5 -6
  31. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js.nft.json +1 -1
  32. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js +3 -3
  33. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -1
  34. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route/app-paths-manifest.json +3 -0
  35. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js +11 -0
  36. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js.nft.json +1 -0
  37. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route_client-reference-manifest.js +3 -0
  38. package/app/.next/server/app/api/bots/[id]/sessions/route.js +5 -6
  39. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -1
  40. package/app/.next/server/app/api/bots/[id]/share-policy/route/app-paths-manifest.json +3 -0
  41. package/app/.next/server/app/api/bots/[id]/share-policy/route.js +11 -0
  42. package/app/.next/server/app/api/bots/[id]/share-policy/route.js.nft.json +1 -0
  43. package/app/.next/server/app/api/bots/[id]/share-policy/route_client-reference-manifest.js +3 -0
  44. package/app/.next/server/app/api/bots/[id]/skill/route.js +3 -3
  45. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  46. package/app/.next/server/app/api/bots/availability/route.js +3 -2
  47. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  48. package/app/.next/server/app/api/bots/delete-preview/route.js +3 -3
  49. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  50. package/app/.next/server/app/api/bots/import/route.js +3 -3
  51. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  52. package/app/.next/server/app/api/bots/manage/route.js +3 -3
  53. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  54. package/app/.next/server/app/api/bots/name-migrations/route.js +3 -3
  55. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/bots/route.js +7 -7
  57. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/conversations/[id]/approve/route.js +4 -4
  59. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/conversations/[id]/deny/route.js +4 -4
  61. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/conversations/[id]/draft/route.js +4 -4
  63. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js +3 -3
  65. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/conversations/[id]/messages/route.js +7 -7
  67. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/conversations/[id]/route.js +3 -3
  69. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/conversations/[id]/stop/route.js +4 -4
  71. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/conversations/route.js +3 -3
  73. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  74. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js +4 -4
  75. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/exchanges/[id]/route.js +5 -5
  77. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/exchanges/route.js +6 -6
  79. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/files/[name]/route.js +1 -1
  81. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/groups/route.js +3 -3
  83. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  84. package/app/.next/server/app/api/health/route.js +5 -2
  85. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  86. package/app/.next/server/app/api/import-capabilities/route.js +1 -1
  87. package/app/.next/server/app/api/import-capabilities/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/marketplace-handoff/route.js +1 -1
  89. package/app/.next/server/app/api/marketplace-handoff/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/marketplace-handoff/status/route.js +1 -1
  91. package/app/.next/server/app/api/marketplace-handoff/status/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/mcp/route.js +3 -3
  93. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/messages/[id]/between/route.js +3 -3
  95. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/runtime-connections/route.js +3 -3
  97. package/app/.next/server/app/api/runtime-connections/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/service-grants/route.js +3 -3
  99. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/shares/[shareRef]/revoke/route/app-paths-manifest.json +3 -0
  101. package/app/.next/server/app/api/shares/[shareRef]/revoke/route/build-manifest.json +12 -0
  102. package/app/.next/server/app/api/shares/[shareRef]/revoke/route/server-reference-manifest.json +4 -0
  103. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js +11 -0
  104. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js.nft.json +1 -0
  105. package/app/.next/server/app/api/shares/[shareRef]/revoke/route_client-reference-manifest.js +3 -0
  106. package/app/.next/server/app/api/shares/route/app-paths-manifest.json +3 -0
  107. package/app/.next/server/app/api/shares/route/build-manifest.json +12 -0
  108. package/app/.next/server/app/api/shares/route/server-reference-manifest.json +4 -0
  109. package/app/.next/server/app/api/shares/route.js +11 -0
  110. package/app/.next/server/app/api/shares/route.js.nft.json +1 -0
  111. package/app/.next/server/app/api/shares/route_client-reference-manifest.js +3 -0
  112. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js +5 -6
  113. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js +5 -6
  115. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js +4 -4
  117. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js +5 -6
  119. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/v0/agents/[agentId]/route.js +5 -6
  121. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js +5 -6
  123. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js +5 -6
  125. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/v0/agents/route.js +5 -6
  127. package/app/.next/server/app/api/v0/agents/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/v0/capabilities/route.js +5 -6
  129. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/v0/conversations/[id]/route.js +4 -4
  131. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js +5 -6
  133. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/v0/exchanges/[id]/route.js +5 -6
  135. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/v0/exchanges/route.js +5 -6
  137. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/v0/mcp/route.js +6 -7
  139. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  140. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js +5 -6
  141. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js +5 -6
  143. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js +5 -6
  145. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/v0/requests/[id]/route.js +4 -4
  147. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js +5 -6
  149. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js +5 -6
  151. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route/app-paths-manifest.json +3 -0
  153. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route/build-manifest.json +12 -0
  154. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route/server-reference-manifest.json +4 -0
  155. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js +11 -0
  156. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js.nft.json +1 -0
  157. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route_client-reference-manifest.js +3 -0
  158. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route/app-paths-manifest.json +3 -0
  159. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route/build-manifest.json +12 -0
  160. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route/server-reference-manifest.json +4 -0
  161. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js +11 -0
  162. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js.nft.json +1 -0
  163. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route_client-reference-manifest.js +3 -0
  164. package/app/.next/server/app/api/v0/shares/[shareRef]/route/app-paths-manifest.json +3 -0
  165. package/app/.next/server/app/api/v0/shares/[shareRef]/route/build-manifest.json +12 -0
  166. package/app/.next/server/app/api/v0/shares/[shareRef]/route/server-reference-manifest.json +4 -0
  167. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js +11 -0
  168. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js.nft.json +1 -0
  169. package/app/.next/server/app/api/v0/shares/[shareRef]/route_client-reference-manifest.js +3 -0
  170. package/app/.next/server/app/api/v0/shares/current/route/app-paths-manifest.json +3 -0
  171. package/app/.next/server/app/api/v0/shares/current/route/build-manifest.json +12 -0
  172. package/app/.next/server/app/api/v0/shares/current/route/server-reference-manifest.json +4 -0
  173. package/app/.next/server/app/api/v0/shares/current/route.js +11 -0
  174. package/app/.next/server/app/api/v0/shares/current/route.js.nft.json +1 -0
  175. package/app/.next/server/app/api/v0/shares/current/route_client-reference-manifest.js +3 -0
  176. package/app/.next/server/app/api/v0/shares/route/app-paths-manifest.json +3 -0
  177. package/app/.next/server/app/api/v0/shares/route/build-manifest.json +12 -0
  178. package/app/.next/server/app/api/v0/shares/route/server-reference-manifest.json +4 -0
  179. package/app/.next/server/app/api/v0/shares/route.js +11 -0
  180. package/app/.next/server/app/api/v0/shares/route.js.nft.json +1 -0
  181. package/app/.next/server/app/api/v0/shares/route_client-reference-manifest.js +3 -0
  182. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js +4 -4
  183. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/wakes/[id]/decision/route.js +4 -4
  185. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/wakes/[id]/retry/route.js +4 -4
  187. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  188. package/app/.next/server/app/bots/[id]/config/page.js +1 -1
  189. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  190. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/exchanges/page.js +1 -1
  192. package/app/.next/server/app/exchanges/page.js.nft.json +1 -1
  193. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/exchanges.html +1 -1
  195. package/app/.next/server/app/exchanges.rsc +3 -3
  196. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +3 -3
  197. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +2 -2
  198. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +3 -3
  199. package/app/.next/server/app/index.html +1 -1
  200. package/app/.next/server/app/index.rsc +3 -3
  201. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  202. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  203. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  204. package/app/.next/server/app/page.js +1 -1
  205. package/app/.next/server/app/page.js.nft.json +1 -1
  206. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/settings/page.js +1 -1
  208. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  209. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/settings.html +1 -1
  211. package/app/.next/server/app/settings.rsc +3 -3
  212. package/app/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  213. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  214. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  215. package/app/.next/server/app/threads/[id]/page.js +1 -1
  216. package/app/.next/server/app/threads/[id]/page.js.nft.json +1 -1
  217. package/app/.next/server/app/threads/[id]/page_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app-paths-manifest.json +9 -2
  219. package/app/.next/server/chunks/1oeh_server_app_api_bots_[id]_sessions_[ref]_shares_route_actions_1jr6f0v.js +3 -0
  220. package/app/.next/server/chunks/[externals]_@slack_0owayck._.js +3 -0
  221. package/app/.next/server/chunks/[externals]__17bolvp._.js +3 -0
  222. package/app/.next/server/chunks/{[externals]__06lqs5i._.js → [externals]__1eaoma8._.js} +1 -1
  223. package/app/.next/server/chunks/[root-of-the-server]__0-vcyi-._.js +3 -0
  224. package/app/.next/server/chunks/[root-of-the-server]__0-w_t2y._.js +3 -0
  225. package/app/.next/server/chunks/{[root-of-the-server]__1_01-13._.js → [root-of-the-server]__029-_9t._.js} +2 -2
  226. package/app/.next/server/chunks/[root-of-the-server]__02vrtib._.js +4 -0
  227. package/app/.next/server/chunks/[root-of-the-server]__04b3ml2._.js +3 -0
  228. package/app/.next/server/chunks/[root-of-the-server]__06w5xhe._.js +3 -0
  229. package/app/.next/server/chunks/[root-of-the-server]__0792yb1._.js +44 -0
  230. package/app/.next/server/chunks/[root-of-the-server]__07q5mnr._.js +3 -0
  231. package/app/.next/server/chunks/[root-of-the-server]__0888o0_._.js +3 -0
  232. package/app/.next/server/chunks/[root-of-the-server]__0aincj4._.js +3 -0
  233. package/app/.next/server/chunks/[root-of-the-server]__0d3fjix._.js +1 -1
  234. package/app/.next/server/chunks/[root-of-the-server]__0e_agq4._.js +3 -0
  235. package/app/.next/server/chunks/[root-of-the-server]__0ey3_2x._.js +3 -0
  236. package/app/.next/server/chunks/[root-of-the-server]__0fku-bw._.js +3 -0
  237. package/app/.next/server/chunks/[root-of-the-server]__0iqh5ta._.js +3 -0
  238. package/app/.next/server/chunks/[root-of-the-server]__0ivjcgs._.js +4 -0
  239. package/app/.next/server/chunks/[root-of-the-server]__0kgnysc._.js +3 -0
  240. package/app/.next/server/chunks/[root-of-the-server]__0mp8bap._.js +3 -0
  241. package/app/.next/server/chunks/[root-of-the-server]__0o9ijih._.js +3 -0
  242. package/app/.next/server/chunks/[root-of-the-server]__0qaiqut._.js +44 -0
  243. package/app/.next/server/chunks/[root-of-the-server]__0zrx1iz._.js +3 -0
  244. package/app/.next/server/chunks/[root-of-the-server]__10b5-i-._.js +3 -0
  245. package/app/.next/server/chunks/[root-of-the-server]__17mum5-._.js +1 -1
  246. package/app/.next/server/chunks/[root-of-the-server]__17xl_55._.js +3 -0
  247. package/app/.next/server/chunks/[root-of-the-server]__1dxr858._.js +3 -0
  248. package/app/.next/server/chunks/[root-of-the-server]__1eps2a4._.js +3 -0
  249. package/app/.next/server/chunks/[root-of-the-server]__1ggmit0._.js +4 -0
  250. package/app/.next/server/chunks/{[root-of-the-server]__1y_j43n._.js → [root-of-the-server]__1hwy3jx._.js} +1 -1
  251. package/app/.next/server/chunks/[root-of-the-server]__1i8glt4._.js +4 -0
  252. package/app/.next/server/chunks/{[root-of-the-server]__0j0i8xz._.js → [root-of-the-server]__1igzl05._.js} +1 -1
  253. package/app/.next/server/chunks/[root-of-the-server]__1j8fg_n._.js +3 -0
  254. package/app/.next/server/chunks/[root-of-the-server]__1kczttr._.js +3 -0
  255. package/app/.next/server/chunks/{[root-of-the-server]__1c3e2ds._.js → [root-of-the-server]__1kik2zt._.js} +1 -1
  256. package/app/.next/server/chunks/[root-of-the-server]__1v3ikuo._.js +3 -0
  257. package/app/.next/server/chunks/[root-of-the-server]__1x8phwp._.js +44 -0
  258. package/app/.next/server/chunks/{[root-of-the-server]__0-45blq._.js → [root-of-the-server]__1z5l5cg._.js} +2 -2
  259. package/app/.next/server/chunks/[root-of-the-server]__200ep0k._.js +3 -0
  260. package/app/.next/server/chunks/_0061c2q._.js +48 -1
  261. package/app/.next/server/chunks/_04e2bgj._.js +3 -0
  262. package/app/.next/server/chunks/_057h7zr._.js +3 -0
  263. package/app/.next/server/chunks/_05po7b4._.js +3 -0
  264. package/app/.next/server/chunks/_06sxx0e._.js +3 -0
  265. package/app/.next/server/chunks/_0a2do3x._.js +1 -1
  266. package/app/.next/server/chunks/_0ar2ooe._.js +3 -0
  267. package/app/.next/server/chunks/_0fmotaz._.js +3 -0
  268. package/app/.next/server/chunks/_0kpfto_._.js +3 -0
  269. package/app/.next/server/chunks/_0lm6uis._.js +3 -0
  270. package/app/.next/server/chunks/_0mpu5tl._.js +3 -0
  271. package/app/.next/server/chunks/_0qv-4by._.js +3 -0
  272. package/app/.next/server/chunks/_0u9cfq9._.js +3 -0
  273. package/app/.next/server/chunks/_0ul8k7g._.js +3 -0
  274. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  275. package/app/.next/server/chunks/_1-60d3o._.js +3 -0
  276. package/app/.next/server/chunks/_133y3b0._.js +3 -0
  277. package/app/.next/server/chunks/_167960a._.js +3 -0
  278. package/app/.next/server/chunks/_17vgjlt._.js +3 -0
  279. package/app/.next/server/chunks/_1amx9_4._.js +3 -0
  280. package/app/.next/server/chunks/_1b01v-_._.js +3 -0
  281. package/app/.next/server/chunks/_1c-g4gq._.js +3 -0
  282. package/app/.next/server/chunks/_1ey6l4p._.js +3 -0
  283. package/app/.next/server/chunks/_1nlg4x_._.js +3 -0
  284. package/app/.next/server/chunks/_1x4dqzv._.js +3 -0
  285. package/app/.next/server/chunks/_1z0qbzc._.js +3 -0
  286. package/app/.next/server/chunks/_next-internal_server_app_api_bots_[id]_share-policy_route_actions_0x-p250.js +3 -0
  287. package/app/.next/server/chunks/_next-internal_server_app_api_shares_[shareRef]_revoke_route_actions_1cu5kah.js +3 -0
  288. package/app/.next/server/chunks/_next-internal_server_app_api_shares_route_actions_0wk7x1r.js +3 -0
  289. package/app/.next/server/chunks/_next-internal_server_app_api_v0_sessions_[ref]_shares_route_actions_11fh--7.js +3 -0
  290. package/app/.next/server/chunks/_next-internal_server_app_api_v0_shares_[shareRef]_revoke_route_actions_00rzyj9.js +3 -0
  291. package/app/.next/server/chunks/_next-internal_server_app_api_v0_shares_[shareRef]_route_actions_0i1t5qb.js +3 -0
  292. package/app/.next/server/chunks/_next-internal_server_app_api_v0_shares_current_route_actions_1w_bpas.js +3 -0
  293. package/app/.next/server/chunks/_next-internal_server_app_api_v0_shares_route_actions_1b38was.js +3 -0
  294. package/app/.next/server/chunks/lib_0-opbv7._.js +316 -0
  295. package/app/.next/server/chunks/lib_0aejojj._.js +316 -0
  296. package/app/.next/server/chunks/lib_0il0ml1._.js +316 -0
  297. package/app/.next/server/chunks/lib_0iujsdg._.js +316 -0
  298. package/app/.next/server/chunks/lib_0kik6bx._.js +20 -20
  299. package/app/.next/server/chunks/lib_0pe3tiv._.js +20 -20
  300. package/app/.next/server/chunks/lib_15adnlz._.js +2172 -0
  301. package/app/.next/server/chunks/lib_1dehbst._.js +316 -0
  302. package/app/.next/server/chunks/lib_1z4vnh4._.js +316 -0
  303. package/app/.next/server/chunks/lib_1zc7-gl._.js +2172 -0
  304. package/app/.next/server/chunks/lib_agent-api_ts_0iv52-o._.js +3 -0
  305. package/app/.next/server/chunks/{[root-of-the-server]__0izjfmr._.js → lib_db_ts_1ttuckb._.js} +59 -57
  306. package/app/.next/server/chunks/lib_service-api-http_ts_0xzqhny._.js +5 -5
  307. package/app/.next/server/chunks/lib_slack-runtime_ts_0fgsejy._.js +63 -0
  308. package/app/.next/server/chunks/ssr/{[root-of-the-server]__03186rx._.js → [root-of-the-server]__1smmfpx._.js} +1 -1
  309. package/app/.next/server/chunks/ssr/_0_fa0na._.js +3 -0
  310. package/app/.next/server/chunks/ssr/_0a6r_bx._.js +3 -0
  311. package/app/.next/server/chunks/ssr/_14d-lxn._.js +3 -0
  312. package/app/.next/server/chunks/ssr/_1cvuhjt._.js +1 -1
  313. package/app/.next/server/chunks/ssr/_1is_iwu._.js +3 -0
  314. package/app/.next/server/chunks/ssr/_1n5mvo5._.js +1 -1
  315. package/app/.next/server/chunks/ssr/_1o94bnv._.js +1 -1
  316. package/app/.next/server/chunks/ssr/app_bots_[id]_config_page_tsx_1e0uue9._.js +1 -1
  317. package/app/.next/server/instrumentation.js +4 -0
  318. package/app/.next/server/middleware-build-manifest.js +3 -3
  319. package/app/.next/server/middleware.js +1 -1
  320. package/app/.next/server/pages/404.html +1 -1
  321. package/app/.next/server/pages/500.html +1 -1
  322. package/app/.next/server/server-reference-manifest.js +1 -1
  323. package/app/.next/server/server-reference-manifest.json +1 -1
  324. package/app/.next/static/chunks/1ouuczm-gmvxs.js +1 -0
  325. package/app/.next/static/chunks/1w72fds3-utrx.js +1 -0
  326. package/app/.next/static/chunks/2095-o17ji0fs.css +3 -0
  327. package/app/.next/static/chunks/2q-tgwkalrnms.js +1 -0
  328. package/app/.next/static/chunks/34bv9o9bjkwk0.js +3 -0
  329. package/app/.next/static/chunks/3rwwunh5sdjzg.js +1 -0
  330. package/app/.next/static/chunks/3whw2-l4a2sli.js +1 -0
  331. package/app/.next/static/chunks/3z3mn526_3fwd.js +1 -0
  332. package/app/BUILD_INFO.json +2 -2
  333. package/app/node_modules/@slack/logger/dist/index.js +94 -0
  334. package/app/node_modules/@slack/logger/package.json +43 -0
  335. package/app/node_modules/@slack/socket-mode/dist/package.json +67 -0
  336. package/app/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js +242 -0
  337. package/app/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js +363 -0
  338. package/app/node_modules/@slack/socket-mode/dist/src/UnrecoverableSocketModeStartError.js +14 -0
  339. package/app/node_modules/@slack/socket-mode/dist/src/errors.js +68 -0
  340. package/app/node_modules/@slack/socket-mode/dist/src/index.js +13 -0
  341. package/app/node_modules/@slack/socket-mode/dist/src/logger.js +26 -0
  342. package/app/node_modules/@slack/socket-mode/package.json +67 -0
  343. package/app/node_modules/@slack/types/dist/block-kit/block-elements.js +4 -0
  344. package/app/node_modules/@slack/types/dist/block-kit/blocks.js +3 -0
  345. package/app/node_modules/@slack/types/dist/block-kit/composition-objects.js +4 -0
  346. package/app/node_modules/@slack/types/dist/block-kit/extensions.js +3 -0
  347. package/app/node_modules/@slack/types/dist/calls.js +6 -0
  348. package/app/node_modules/@slack/types/dist/chunk.js +3 -0
  349. package/app/node_modules/@slack/types/dist/dialog.js +3 -0
  350. package/app/node_modules/@slack/types/dist/events/app.js +3 -0
  351. package/app/node_modules/@slack/types/dist/events/assistant.js +3 -0
  352. package/app/node_modules/@slack/types/dist/events/call.js +3 -0
  353. package/app/node_modules/@slack/types/dist/events/channel.js +3 -0
  354. package/app/node_modules/@slack/types/dist/events/dnd.js +3 -0
  355. package/app/node_modules/@slack/types/dist/events/email.js +3 -0
  356. package/app/node_modules/@slack/types/dist/events/emoji.js +3 -0
  357. package/app/node_modules/@slack/types/dist/events/file.js +4 -0
  358. package/app/node_modules/@slack/types/dist/events/function.js +3 -0
  359. package/app/node_modules/@slack/types/dist/events/grid-migration.js +3 -0
  360. package/app/node_modules/@slack/types/dist/events/group.js +3 -0
  361. package/app/node_modules/@slack/types/dist/events/im.js +3 -0
  362. package/app/node_modules/@slack/types/dist/events/index.js +43 -0
  363. package/app/node_modules/@slack/types/dist/events/invite.js +3 -0
  364. package/app/node_modules/@slack/types/dist/events/link-shared.js +3 -0
  365. package/app/node_modules/@slack/types/dist/events/member.js +3 -0
  366. package/app/node_modules/@slack/types/dist/events/message-metadata.js +3 -0
  367. package/app/node_modules/@slack/types/dist/events/message.js +3 -0
  368. package/app/node_modules/@slack/types/dist/events/pin.js +3 -0
  369. package/app/node_modules/@slack/types/dist/events/reaction.js +3 -0
  370. package/app/node_modules/@slack/types/dist/events/shared-channel.js +3 -0
  371. package/app/node_modules/@slack/types/dist/events/star.js +3 -0
  372. package/app/node_modules/@slack/types/dist/events/steps-from-apps.js +3 -0
  373. package/app/node_modules/@slack/types/dist/events/subteam.js +3 -0
  374. package/app/node_modules/@slack/types/dist/events/team.js +3 -0
  375. package/app/node_modules/@slack/types/dist/events/token.js +3 -0
  376. package/app/node_modules/@slack/types/dist/events/user.js +3 -0
  377. package/app/node_modules/@slack/types/dist/index.js +28 -0
  378. package/app/node_modules/@slack/types/dist/message-attachments.js +3 -0
  379. package/app/node_modules/@slack/types/dist/message-metadata.js +27 -0
  380. package/app/node_modules/@slack/types/dist/views.js +3 -0
  381. package/app/node_modules/@slack/types/package.json +47 -0
  382. package/app/node_modules/@slack/web-api/dist/WebClient.js +818 -0
  383. package/app/node_modules/@slack/web-api/dist/chat-stream.js +178 -0
  384. package/app/node_modules/@slack/web-api/dist/errors.js +80 -0
  385. package/app/node_modules/@slack/web-api/dist/file-upload.js +360 -0
  386. package/app/node_modules/@slack/web-api/dist/helpers.js +14 -0
  387. package/app/node_modules/@slack/web-api/dist/index.js +39 -0
  388. package/app/node_modules/@slack/web-api/dist/instrument.js +87 -0
  389. package/app/node_modules/@slack/web-api/dist/logger.js +29 -0
  390. package/app/node_modules/@slack/web-api/dist/methods.js +1647 -0
  391. package/app/node_modules/@slack/web-api/dist/retry-policies.js +34 -0
  392. package/app/node_modules/@slack/web-api/dist/types/helpers.js +3 -0
  393. package/app/node_modules/@slack/web-api/dist/types/request/admin/analytics.js +3 -0
  394. package/app/node_modules/@slack/web-api/dist/types/request/admin/apps.js +3 -0
  395. package/app/node_modules/@slack/web-api/dist/types/request/admin/auth.js +3 -0
  396. package/app/node_modules/@slack/web-api/dist/types/request/admin/barriers.js +3 -0
  397. package/app/node_modules/@slack/web-api/dist/types/request/admin/conversations.js +3 -0
  398. package/app/node_modules/@slack/web-api/dist/types/request/admin/emoji.js +3 -0
  399. package/app/node_modules/@slack/web-api/dist/types/request/admin/functions.js +3 -0
  400. package/app/node_modules/@slack/web-api/dist/types/request/admin/inviteRequests.js +3 -0
  401. package/app/node_modules/@slack/web-api/dist/types/request/admin/roles.js +3 -0
  402. package/app/node_modules/@slack/web-api/dist/types/request/admin/teams.js +3 -0
  403. package/app/node_modules/@slack/web-api/dist/types/request/admin/usergroups.js +3 -0
  404. package/app/node_modules/@slack/web-api/dist/types/request/admin/users.js +3 -0
  405. package/app/node_modules/@slack/web-api/dist/types/request/admin/workflows.js +3 -0
  406. package/app/node_modules/@slack/web-api/dist/types/request/api.js +3 -0
  407. package/app/node_modules/@slack/web-api/dist/types/request/apps.js +3 -0
  408. package/app/node_modules/@slack/web-api/dist/types/request/assistant.js +3 -0
  409. package/app/node_modules/@slack/web-api/dist/types/request/auth.js +3 -0
  410. package/app/node_modules/@slack/web-api/dist/types/request/bookmarks.js +3 -0
  411. package/app/node_modules/@slack/web-api/dist/types/request/bots.js +3 -0
  412. package/app/node_modules/@slack/web-api/dist/types/request/calls.js +3 -0
  413. package/app/node_modules/@slack/web-api/dist/types/request/canvas.js +3 -0
  414. package/app/node_modules/@slack/web-api/dist/types/request/chat.js +3 -0
  415. package/app/node_modules/@slack/web-api/dist/types/request/common.js +4 -0
  416. package/app/node_modules/@slack/web-api/dist/types/request/conversations.js +3 -0
  417. package/app/node_modules/@slack/web-api/dist/types/request/dialog.js +3 -0
  418. package/app/node_modules/@slack/web-api/dist/types/request/dnd.js +3 -0
  419. package/app/node_modules/@slack/web-api/dist/types/request/emoji.js +3 -0
  420. package/app/node_modules/@slack/web-api/dist/types/request/entity.js +3 -0
  421. package/app/node_modules/@slack/web-api/dist/types/request/files.js +3 -0
  422. package/app/node_modules/@slack/web-api/dist/types/request/functions.js +3 -0
  423. package/app/node_modules/@slack/web-api/dist/types/request/index.js +3 -0
  424. package/app/node_modules/@slack/web-api/dist/types/request/manifest.js +3 -0
  425. package/app/node_modules/@slack/web-api/dist/types/request/migration.js +3 -0
  426. package/app/node_modules/@slack/web-api/dist/types/request/oauth.js +3 -0
  427. package/app/node_modules/@slack/web-api/dist/types/request/openid.js +3 -0
  428. package/app/node_modules/@slack/web-api/dist/types/request/pins.js +3 -0
  429. package/app/node_modules/@slack/web-api/dist/types/request/reactions.js +3 -0
  430. package/app/node_modules/@slack/web-api/dist/types/request/reminders.js +3 -0
  431. package/app/node_modules/@slack/web-api/dist/types/request/rtm.js +3 -0
  432. package/app/node_modules/@slack/web-api/dist/types/request/search.js +3 -0
  433. package/app/node_modules/@slack/web-api/dist/types/request/slackLists.js +3 -0
  434. package/app/node_modules/@slack/web-api/dist/types/request/stars.js +3 -0
  435. package/app/node_modules/@slack/web-api/dist/types/request/team.js +3 -0
  436. package/app/node_modules/@slack/web-api/dist/types/request/tooling.js +3 -0
  437. package/app/node_modules/@slack/web-api/dist/types/request/usergroups.js +3 -0
  438. package/app/node_modules/@slack/web-api/dist/types/request/users.js +3 -0
  439. package/app/node_modules/@slack/web-api/dist/types/request/views.js +3 -0
  440. package/app/node_modules/@slack/web-api/dist/types/request/workflows.js +3 -0
  441. package/app/node_modules/@slack/web-api/dist/types/response/AdminAnalyticsGetFileResponse.js +3 -0
  442. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsActivitiesListResponse.js +11 -0
  443. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsApproveResponse.js +11 -0
  444. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsApprovedListResponse.js +11 -0
  445. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsClearResolutionResponse.js +11 -0
  446. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsConfigLookupResponse.js +11 -0
  447. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsConfigSetResponse.js +11 -0
  448. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsRequestsCancelResponse.js +11 -0
  449. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsRequestsListResponse.js +11 -0
  450. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsRestrictResponse.js +11 -0
  451. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsRestrictedListResponse.js +11 -0
  452. package/app/node_modules/@slack/web-api/dist/types/response/AdminAppsUninstallResponse.js +11 -0
  453. package/app/node_modules/@slack/web-api/dist/types/response/AdminAuthPolicyAssignEntitiesResponse.js +11 -0
  454. package/app/node_modules/@slack/web-api/dist/types/response/AdminAuthPolicyGetEntitiesResponse.js +11 -0
  455. package/app/node_modules/@slack/web-api/dist/types/response/AdminAuthPolicyRemoveEntitiesResponse.js +11 -0
  456. package/app/node_modules/@slack/web-api/dist/types/response/AdminBarriersCreateResponse.js +11 -0
  457. package/app/node_modules/@slack/web-api/dist/types/response/AdminBarriersDeleteResponse.js +11 -0
  458. package/app/node_modules/@slack/web-api/dist/types/response/AdminBarriersListResponse.js +11 -0
  459. package/app/node_modules/@slack/web-api/dist/types/response/AdminBarriersUpdateResponse.js +11 -0
  460. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsArchiveResponse.js +11 -0
  461. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsBulkArchiveResponse.js +11 -0
  462. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsBulkDeleteResponse.js +11 -0
  463. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsBulkMoveResponse.js +11 -0
  464. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsConvertToPrivateResponse.js +11 -0
  465. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsConvertToPublicResponse.js +11 -0
  466. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsCreateResponse.js +11 -0
  467. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsDeleteResponse.js +11 -0
  468. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsDisconnectSharedResponse.js +11 -0
  469. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsEkmListOriginalConnectedChannelInfoResponse.js +11 -0
  470. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsGetConversationPrefsResponse.js +11 -0
  471. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsGetCustomRetentionResponse.js +11 -0
  472. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsGetTeamsResponse.js +11 -0
  473. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsInviteResponse.js +11 -0
  474. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsLookupResponse.js +11 -0
  475. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsRemoveCustomRetentionResponse.js +11 -0
  476. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsRenameResponse.js +11 -0
  477. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsRestrictAccessAddGroupResponse.js +11 -0
  478. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsRestrictAccessListGroupsResponse.js +11 -0
  479. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsRestrictAccessRemoveGroupResponse.js +11 -0
  480. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsSearchResponse.js +11 -0
  481. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsSetConversationPrefsResponse.js +11 -0
  482. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsSetCustomRetentionResponse.js +11 -0
  483. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsSetTeamsResponse.js +11 -0
  484. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsUnarchiveResponse.js +11 -0
  485. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsWhitelistAddResponse.js +11 -0
  486. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsWhitelistListGroupsLinkedToChannelResponse.js +11 -0
  487. package/app/node_modules/@slack/web-api/dist/types/response/AdminConversationsWhitelistRemoveResponse.js +11 -0
  488. package/app/node_modules/@slack/web-api/dist/types/response/AdminEmojiAddAliasResponse.js +11 -0
  489. package/app/node_modules/@slack/web-api/dist/types/response/AdminEmojiAddResponse.js +11 -0
  490. package/app/node_modules/@slack/web-api/dist/types/response/AdminEmojiListResponse.js +11 -0
  491. package/app/node_modules/@slack/web-api/dist/types/response/AdminEmojiRemoveResponse.js +11 -0
  492. package/app/node_modules/@slack/web-api/dist/types/response/AdminEmojiRenameResponse.js +11 -0
  493. package/app/node_modules/@slack/web-api/dist/types/response/AdminFunctionsListResponse.js +11 -0
  494. package/app/node_modules/@slack/web-api/dist/types/response/AdminFunctionsPermissionsLookupResponse.js +11 -0
  495. package/app/node_modules/@slack/web-api/dist/types/response/AdminFunctionsPermissionsSetResponse.js +11 -0
  496. package/app/node_modules/@slack/web-api/dist/types/response/AdminInviteRequestsApproveResponse.js +11 -0
  497. package/app/node_modules/@slack/web-api/dist/types/response/AdminInviteRequestsApprovedListResponse.js +11 -0
  498. package/app/node_modules/@slack/web-api/dist/types/response/AdminInviteRequestsDeniedListResponse.js +11 -0
  499. package/app/node_modules/@slack/web-api/dist/types/response/AdminInviteRequestsDenyResponse.js +11 -0
  500. package/app/node_modules/@slack/web-api/dist/types/response/AdminInviteRequestsListResponse.js +11 -0
  501. package/app/node_modules/@slack/web-api/dist/types/response/AdminRolesAddAssignmentsResponse.js +11 -0
  502. package/app/node_modules/@slack/web-api/dist/types/response/AdminRolesListAssignmentsResponse.js +11 -0
  503. package/app/node_modules/@slack/web-api/dist/types/response/AdminRolesRemoveAssignmentsResponse.js +11 -0
  504. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsAdminsListResponse.js +11 -0
  505. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsCreateResponse.js +11 -0
  506. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsListResponse.js +11 -0
  507. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsOwnersListResponse.js +11 -0
  508. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsInfoResponse.js +11 -0
  509. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsSetDefaultChannelsResponse.js +11 -0
  510. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsSetDescriptionResponse.js +11 -0
  511. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsSetDiscoverabilityResponse.js +11 -0
  512. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsSetIconResponse.js +11 -0
  513. package/app/node_modules/@slack/web-api/dist/types/response/AdminTeamsSettingsSetNameResponse.js +11 -0
  514. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsergroupsAddChannelsResponse.js +11 -0
  515. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsergroupsAddTeamsResponse.js +11 -0
  516. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsergroupsListChannelsResponse.js +11 -0
  517. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsergroupsRemoveChannelsResponse.js +11 -0
  518. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersAssignResponse.js +11 -0
  519. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersInviteResponse.js +11 -0
  520. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersListResponse.js +11 -0
  521. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersRemoveResponse.js +11 -0
  522. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionClearSettingsResponse.js +11 -0
  523. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionGetSettingsResponse.js +11 -0
  524. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionInvalidateResponse.js +11 -0
  525. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionListResponse.js +11 -0
  526. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionResetBulkResponse.js +11 -0
  527. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionResetResponse.js +11 -0
  528. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSessionSetSettingsResponse.js +11 -0
  529. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSetAdminResponse.js +11 -0
  530. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSetExpirationResponse.js +11 -0
  531. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSetOwnerResponse.js +11 -0
  532. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersSetRegularResponse.js +11 -0
  533. package/app/node_modules/@slack/web-api/dist/types/response/AdminUsersUnsupportedVersionsExportResponse.js +11 -0
  534. package/app/node_modules/@slack/web-api/dist/types/response/AdminWorkflowsCollaboratorsAddResponse.js +11 -0
  535. package/app/node_modules/@slack/web-api/dist/types/response/AdminWorkflowsCollaboratorsRemoveResponse.js +11 -0
  536. package/app/node_modules/@slack/web-api/dist/types/response/AdminWorkflowsPermissionsLookupResponse.js +11 -0
  537. package/app/node_modules/@slack/web-api/dist/types/response/AdminWorkflowsSearchResponse.js +11 -0
  538. package/app/node_modules/@slack/web-api/dist/types/response/AdminWorkflowsUnpublishResponse.js +11 -0
  539. package/app/node_modules/@slack/web-api/dist/types/response/ApiTestResponse.js +11 -0
  540. package/app/node_modules/@slack/web-api/dist/types/response/AppsConnectionsOpenResponse.js +11 -0
  541. package/app/node_modules/@slack/web-api/dist/types/response/AppsEventAuthorizationsListResponse.js +11 -0
  542. package/app/node_modules/@slack/web-api/dist/types/response/AppsManifestCreateResponse.js +11 -0
  543. package/app/node_modules/@slack/web-api/dist/types/response/AppsManifestDeleteResponse.js +11 -0
  544. package/app/node_modules/@slack/web-api/dist/types/response/AppsManifestExportResponse.js +11 -0
  545. package/app/node_modules/@slack/web-api/dist/types/response/AppsManifestUpdateResponse.js +11 -0
  546. package/app/node_modules/@slack/web-api/dist/types/response/AppsManifestValidateResponse.js +11 -0
  547. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsInfoResponse.js +11 -0
  548. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsRequestResponse.js +11 -0
  549. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsResourcesListResponse.js +11 -0
  550. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsScopesListResponse.js +11 -0
  551. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsUsersListResponse.js +11 -0
  552. package/app/node_modules/@slack/web-api/dist/types/response/AppsPermissionsUsersRequestResponse.js +11 -0
  553. package/app/node_modules/@slack/web-api/dist/types/response/AppsUninstallResponse.js +11 -0
  554. package/app/node_modules/@slack/web-api/dist/types/response/AppsUserConnectionUpdateResponse.js +11 -0
  555. package/app/node_modules/@slack/web-api/dist/types/response/AssistantThreadsSetStatusResponse.js +11 -0
  556. package/app/node_modules/@slack/web-api/dist/types/response/AssistantThreadsSetSuggestedPromptsResponse.js +11 -0
  557. package/app/node_modules/@slack/web-api/dist/types/response/AssistantThreadsSetTitleResponse.js +11 -0
  558. package/app/node_modules/@slack/web-api/dist/types/response/AuthRevokeResponse.js +11 -0
  559. package/app/node_modules/@slack/web-api/dist/types/response/AuthTeamsListResponse.js +11 -0
  560. package/app/node_modules/@slack/web-api/dist/types/response/AuthTestResponse.js +11 -0
  561. package/app/node_modules/@slack/web-api/dist/types/response/BookmarksAddResponse.js +11 -0
  562. package/app/node_modules/@slack/web-api/dist/types/response/BookmarksEditResponse.js +11 -0
  563. package/app/node_modules/@slack/web-api/dist/types/response/BookmarksListResponse.js +11 -0
  564. package/app/node_modules/@slack/web-api/dist/types/response/BookmarksRemoveResponse.js +11 -0
  565. package/app/node_modules/@slack/web-api/dist/types/response/BotsInfoResponse.js +11 -0
  566. package/app/node_modules/@slack/web-api/dist/types/response/CallsAddResponse.js +11 -0
  567. package/app/node_modules/@slack/web-api/dist/types/response/CallsEndResponse.js +11 -0
  568. package/app/node_modules/@slack/web-api/dist/types/response/CallsInfoResponse.js +11 -0
  569. package/app/node_modules/@slack/web-api/dist/types/response/CallsParticipantsAddResponse.js +11 -0
  570. package/app/node_modules/@slack/web-api/dist/types/response/CallsParticipantsRemoveResponse.js +11 -0
  571. package/app/node_modules/@slack/web-api/dist/types/response/CallsUpdateResponse.js +11 -0
  572. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesAccessDeleteResponse.js +11 -0
  573. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesAccessSetResponse.js +11 -0
  574. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesCreateResponse.js +11 -0
  575. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesDeleteResponse.js +11 -0
  576. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesEditResponse.js +11 -0
  577. package/app/node_modules/@slack/web-api/dist/types/response/CanvasesSectionsLookupResponse.js +11 -0
  578. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsArchiveResponse.js +11 -0
  579. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsCreateResponse.js +11 -0
  580. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsHistoryResponse.js +11 -0
  581. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsInfoResponse.js +11 -0
  582. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsInviteResponse.js +11 -0
  583. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsJoinResponse.js +11 -0
  584. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsKickResponse.js +11 -0
  585. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsLeaveResponse.js +11 -0
  586. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsListResponse.js +11 -0
  587. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsMarkResponse.js +11 -0
  588. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsRenameResponse.js +11 -0
  589. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsRepliesResponse.js +11 -0
  590. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsSetPurposeResponse.js +11 -0
  591. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsSetTopicResponse.js +11 -0
  592. package/app/node_modules/@slack/web-api/dist/types/response/ChannelsUnarchiveResponse.js +11 -0
  593. package/app/node_modules/@slack/web-api/dist/types/response/ChatAppendStreamResponse.js +3 -0
  594. package/app/node_modules/@slack/web-api/dist/types/response/ChatDeleteResponse.js +11 -0
  595. package/app/node_modules/@slack/web-api/dist/types/response/ChatDeleteScheduledMessageResponse.js +11 -0
  596. package/app/node_modules/@slack/web-api/dist/types/response/ChatGetPermalinkResponse.js +11 -0
  597. package/app/node_modules/@slack/web-api/dist/types/response/ChatMeMessageResponse.js +11 -0
  598. package/app/node_modules/@slack/web-api/dist/types/response/ChatPostEphemeralResponse.js +11 -0
  599. package/app/node_modules/@slack/web-api/dist/types/response/ChatPostMessageResponse.js +67 -0
  600. package/app/node_modules/@slack/web-api/dist/types/response/ChatScheduleMessageResponse.js +48 -0
  601. package/app/node_modules/@slack/web-api/dist/types/response/ChatScheduledMessagesListResponse.js +11 -0
  602. package/app/node_modules/@slack/web-api/dist/types/response/ChatStartStreamResponse.js +3 -0
  603. package/app/node_modules/@slack/web-api/dist/types/response/ChatStopStreamResponse.js +3 -0
  604. package/app/node_modules/@slack/web-api/dist/types/response/ChatUnfurlResponse.js +11 -0
  605. package/app/node_modules/@slack/web-api/dist/types/response/ChatUpdateResponse.js +48 -0
  606. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsAcceptSharedInviteResponse.js +11 -0
  607. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsApproveSharedInviteResponse.js +11 -0
  608. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsArchiveResponse.js +11 -0
  609. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsCanvasesCreateResponse.js +11 -0
  610. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsCloseResponse.js +11 -0
  611. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsCreateResponse.js +11 -0
  612. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsDeclineSharedInviteResponse.js +11 -0
  613. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsExternalInvitePermissionsSetResponse.js +11 -0
  614. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsHistoryResponse.js +67 -0
  615. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsInfoResponse.js +11 -0
  616. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsInviteResponse.js +11 -0
  617. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsInviteSharedResponse.js +11 -0
  618. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsJoinResponse.js +11 -0
  619. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsKickResponse.js +11 -0
  620. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsLeaveResponse.js +11 -0
  621. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsListConnectInvitesResponse.js +11 -0
  622. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsListResponse.js +11 -0
  623. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsMarkResponse.js +11 -0
  624. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsMembersResponse.js +11 -0
  625. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsOpenResponse.js +48 -0
  626. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsRenameResponse.js +11 -0
  627. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsRepliesResponse.js +67 -0
  628. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsRequestSharedInviteApproveResponse.js +11 -0
  629. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsRequestSharedInviteDenyResponse.js +11 -0
  630. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsRequestSharedInviteListResponse.js +11 -0
  631. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsSetPurposeResponse.js +11 -0
  632. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsSetTopicResponse.js +11 -0
  633. package/app/node_modules/@slack/web-api/dist/types/response/ConversationsUnarchiveResponse.js +11 -0
  634. package/app/node_modules/@slack/web-api/dist/types/response/DialogOpenResponse.js +11 -0
  635. package/app/node_modules/@slack/web-api/dist/types/response/DndEndDndResponse.js +11 -0
  636. package/app/node_modules/@slack/web-api/dist/types/response/DndEndSnoozeResponse.js +11 -0
  637. package/app/node_modules/@slack/web-api/dist/types/response/DndInfoResponse.js +11 -0
  638. package/app/node_modules/@slack/web-api/dist/types/response/DndSetSnoozeResponse.js +11 -0
  639. package/app/node_modules/@slack/web-api/dist/types/response/DndTeamInfoResponse.js +11 -0
  640. package/app/node_modules/@slack/web-api/dist/types/response/EmojiListResponse.js +11 -0
  641. package/app/node_modules/@slack/web-api/dist/types/response/EntityPresentDetailsResponse.js +11 -0
  642. package/app/node_modules/@slack/web-api/dist/types/response/FilesCommentsAddResponse.js +11 -0
  643. package/app/node_modules/@slack/web-api/dist/types/response/FilesCommentsDeleteResponse.js +11 -0
  644. package/app/node_modules/@slack/web-api/dist/types/response/FilesCommentsEditResponse.js +11 -0
  645. package/app/node_modules/@slack/web-api/dist/types/response/FilesCompleteUploadExternalResponse.js +11 -0
  646. package/app/node_modules/@slack/web-api/dist/types/response/FilesDeleteResponse.js +11 -0
  647. package/app/node_modules/@slack/web-api/dist/types/response/FilesGetUploadURLExternalResponse.js +11 -0
  648. package/app/node_modules/@slack/web-api/dist/types/response/FilesInfoResponse.js +37 -0
  649. package/app/node_modules/@slack/web-api/dist/types/response/FilesListResponse.js +37 -0
  650. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteAddResponse.js +37 -0
  651. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteInfoResponse.js +37 -0
  652. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteListResponse.js +37 -0
  653. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteRemoveResponse.js +11 -0
  654. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteShareResponse.js +37 -0
  655. package/app/node_modules/@slack/web-api/dist/types/response/FilesRemoteUpdateResponse.js +37 -0
  656. package/app/node_modules/@slack/web-api/dist/types/response/FilesRevokePublicURLResponse.js +37 -0
  657. package/app/node_modules/@slack/web-api/dist/types/response/FilesSharedPublicURLResponse.js +37 -0
  658. package/app/node_modules/@slack/web-api/dist/types/response/FilesUploadResponse.js +37 -0
  659. package/app/node_modules/@slack/web-api/dist/types/response/FunctionsCompleteErrorResponse.js +11 -0
  660. package/app/node_modules/@slack/web-api/dist/types/response/FunctionsCompleteSuccessResponse.js +11 -0
  661. package/app/node_modules/@slack/web-api/dist/types/response/GroupsArchiveResponse.js +11 -0
  662. package/app/node_modules/@slack/web-api/dist/types/response/GroupsCloseResponse.js +11 -0
  663. package/app/node_modules/@slack/web-api/dist/types/response/GroupsCreateChildResponse.js +11 -0
  664. package/app/node_modules/@slack/web-api/dist/types/response/GroupsCreateResponse.js +11 -0
  665. package/app/node_modules/@slack/web-api/dist/types/response/GroupsHistoryResponse.js +11 -0
  666. package/app/node_modules/@slack/web-api/dist/types/response/GroupsInfoResponse.js +11 -0
  667. package/app/node_modules/@slack/web-api/dist/types/response/GroupsInviteResponse.js +11 -0
  668. package/app/node_modules/@slack/web-api/dist/types/response/GroupsKickResponse.js +11 -0
  669. package/app/node_modules/@slack/web-api/dist/types/response/GroupsLeaveResponse.js +11 -0
  670. package/app/node_modules/@slack/web-api/dist/types/response/GroupsListResponse.js +11 -0
  671. package/app/node_modules/@slack/web-api/dist/types/response/GroupsMarkResponse.js +11 -0
  672. package/app/node_modules/@slack/web-api/dist/types/response/GroupsOpenResponse.js +11 -0
  673. package/app/node_modules/@slack/web-api/dist/types/response/GroupsRenameResponse.js +11 -0
  674. package/app/node_modules/@slack/web-api/dist/types/response/GroupsRepliesResponse.js +11 -0
  675. package/app/node_modules/@slack/web-api/dist/types/response/GroupsSetPurposeResponse.js +11 -0
  676. package/app/node_modules/@slack/web-api/dist/types/response/GroupsSetTopicResponse.js +11 -0
  677. package/app/node_modules/@slack/web-api/dist/types/response/GroupsUnarchiveResponse.js +11 -0
  678. package/app/node_modules/@slack/web-api/dist/types/response/ImCloseResponse.js +11 -0
  679. package/app/node_modules/@slack/web-api/dist/types/response/ImHistoryResponse.js +11 -0
  680. package/app/node_modules/@slack/web-api/dist/types/response/ImListResponse.js +11 -0
  681. package/app/node_modules/@slack/web-api/dist/types/response/ImMarkResponse.js +11 -0
  682. package/app/node_modules/@slack/web-api/dist/types/response/ImOpenResponse.js +11 -0
  683. package/app/node_modules/@slack/web-api/dist/types/response/ImRepliesResponse.js +11 -0
  684. package/app/node_modules/@slack/web-api/dist/types/response/MigrationExchangeResponse.js +11 -0
  685. package/app/node_modules/@slack/web-api/dist/types/response/MpimCloseResponse.js +11 -0
  686. package/app/node_modules/@slack/web-api/dist/types/response/MpimHistoryResponse.js +11 -0
  687. package/app/node_modules/@slack/web-api/dist/types/response/MpimListResponse.js +11 -0
  688. package/app/node_modules/@slack/web-api/dist/types/response/MpimMarkResponse.js +11 -0
  689. package/app/node_modules/@slack/web-api/dist/types/response/MpimOpenResponse.js +11 -0
  690. package/app/node_modules/@slack/web-api/dist/types/response/MpimRepliesResponse.js +11 -0
  691. package/app/node_modules/@slack/web-api/dist/types/response/OauthAccessResponse.js +11 -0
  692. package/app/node_modules/@slack/web-api/dist/types/response/OauthTokenResponse.js +11 -0
  693. package/app/node_modules/@slack/web-api/dist/types/response/OauthV2AccessResponse.js +11 -0
  694. package/app/node_modules/@slack/web-api/dist/types/response/OauthV2ExchangeResponse.js +11 -0
  695. package/app/node_modules/@slack/web-api/dist/types/response/OpenIDConnectTokenResponse.js +11 -0
  696. package/app/node_modules/@slack/web-api/dist/types/response/OpenIDConnectUserInfoResponse.js +11 -0
  697. package/app/node_modules/@slack/web-api/dist/types/response/PinsAddResponse.js +11 -0
  698. package/app/node_modules/@slack/web-api/dist/types/response/PinsListResponse.js +37 -0
  699. package/app/node_modules/@slack/web-api/dist/types/response/PinsRemoveResponse.js +11 -0
  700. package/app/node_modules/@slack/web-api/dist/types/response/ReactionsAddResponse.js +11 -0
  701. package/app/node_modules/@slack/web-api/dist/types/response/ReactionsGetResponse.js +48 -0
  702. package/app/node_modules/@slack/web-api/dist/types/response/ReactionsListResponse.js +67 -0
  703. package/app/node_modules/@slack/web-api/dist/types/response/ReactionsRemoveResponse.js +11 -0
  704. package/app/node_modules/@slack/web-api/dist/types/response/RemindersAddResponse.js +11 -0
  705. package/app/node_modules/@slack/web-api/dist/types/response/RemindersCompleteResponse.js +11 -0
  706. package/app/node_modules/@slack/web-api/dist/types/response/RemindersDeleteResponse.js +11 -0
  707. package/app/node_modules/@slack/web-api/dist/types/response/RemindersInfoResponse.js +11 -0
  708. package/app/node_modules/@slack/web-api/dist/types/response/RemindersListResponse.js +11 -0
  709. package/app/node_modules/@slack/web-api/dist/types/response/RtmConnectResponse.js +11 -0
  710. package/app/node_modules/@slack/web-api/dist/types/response/RtmStartResponse.js +77 -0
  711. package/app/node_modules/@slack/web-api/dist/types/response/SearchAllResponse.js +82 -0
  712. package/app/node_modules/@slack/web-api/dist/types/response/SearchFilesResponse.js +63 -0
  713. package/app/node_modules/@slack/web-api/dist/types/response/SearchMessagesResponse.js +67 -0
  714. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsAccessDeleteResponse.js +3 -0
  715. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsAccessSetResponse.js +3 -0
  716. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsCreateResponse.js +3 -0
  717. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsDownloadGetResponse.js +3 -0
  718. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsDownloadStartResponse.js +3 -0
  719. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsCreateResponse.js +3 -0
  720. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsDeleteMultipleResponse.js +3 -0
  721. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsDeleteResponse.js +3 -0
  722. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsInfoResponse.js +3 -0
  723. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsListResponse.js +3 -0
  724. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsItemsUpdateResponse.js +3 -0
  725. package/app/node_modules/@slack/web-api/dist/types/response/SlackListsUpdateResponse.js +3 -0
  726. package/app/node_modules/@slack/web-api/dist/types/response/StarsAddResponse.js +11 -0
  727. package/app/node_modules/@slack/web-api/dist/types/response/StarsListResponse.js +11 -0
  728. package/app/node_modules/@slack/web-api/dist/types/response/StarsRemoveResponse.js +11 -0
  729. package/app/node_modules/@slack/web-api/dist/types/response/TeamAccessLogsResponse.js +11 -0
  730. package/app/node_modules/@slack/web-api/dist/types/response/TeamBillableInfoResponse.js +11 -0
  731. package/app/node_modules/@slack/web-api/dist/types/response/TeamBillingInfoResponse.js +11 -0
  732. package/app/node_modules/@slack/web-api/dist/types/response/TeamExternalTeamsDisconnectResponse.js +11 -0
  733. package/app/node_modules/@slack/web-api/dist/types/response/TeamExternalTeamsListResponse.js +11 -0
  734. package/app/node_modules/@slack/web-api/dist/types/response/TeamInfoResponse.js +11 -0
  735. package/app/node_modules/@slack/web-api/dist/types/response/TeamIntegrationLogsResponse.js +11 -0
  736. package/app/node_modules/@slack/web-api/dist/types/response/TeamPreferencesListResponse.js +11 -0
  737. package/app/node_modules/@slack/web-api/dist/types/response/TeamProfileGetResponse.js +11 -0
  738. package/app/node_modules/@slack/web-api/dist/types/response/ToolingTokensRotateResponse.js +11 -0
  739. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsCreateResponse.js +11 -0
  740. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsDisableResponse.js +11 -0
  741. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsEnableResponse.js +11 -0
  742. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsListResponse.js +11 -0
  743. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsUpdateResponse.js +11 -0
  744. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsUsersListResponse.js +11 -0
  745. package/app/node_modules/@slack/web-api/dist/types/response/UsergroupsUsersUpdateResponse.js +11 -0
  746. package/app/node_modules/@slack/web-api/dist/types/response/UsersConversationsResponse.js +11 -0
  747. package/app/node_modules/@slack/web-api/dist/types/response/UsersDeletePhotoResponse.js +11 -0
  748. package/app/node_modules/@slack/web-api/dist/types/response/UsersDiscoverableContactsLookupResponse.js +11 -0
  749. package/app/node_modules/@slack/web-api/dist/types/response/UsersGetPresenceResponse.js +11 -0
  750. package/app/node_modules/@slack/web-api/dist/types/response/UsersIdentityResponse.js +11 -0
  751. package/app/node_modules/@slack/web-api/dist/types/response/UsersInfoResponse.js +11 -0
  752. package/app/node_modules/@slack/web-api/dist/types/response/UsersListResponse.js +11 -0
  753. package/app/node_modules/@slack/web-api/dist/types/response/UsersLookupByEmailResponse.js +11 -0
  754. package/app/node_modules/@slack/web-api/dist/types/response/UsersProfileGetResponse.js +11 -0
  755. package/app/node_modules/@slack/web-api/dist/types/response/UsersProfileSetResponse.js +11 -0
  756. package/app/node_modules/@slack/web-api/dist/types/response/UsersSetActiveResponse.js +11 -0
  757. package/app/node_modules/@slack/web-api/dist/types/response/UsersSetPhotoResponse.js +11 -0
  758. package/app/node_modules/@slack/web-api/dist/types/response/UsersSetPresenceResponse.js +11 -0
  759. package/app/node_modules/@slack/web-api/dist/types/response/ViewsOpenResponse.js +31 -0
  760. package/app/node_modules/@slack/web-api/dist/types/response/ViewsPublishResponse.js +31 -0
  761. package/app/node_modules/@slack/web-api/dist/types/response/ViewsPushResponse.js +31 -0
  762. package/app/node_modules/@slack/web-api/dist/types/response/ViewsUpdateResponse.js +31 -0
  763. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsFeaturedAddResponse.js +3 -0
  764. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsFeaturedListResponse.js +3 -0
  765. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsFeaturedRemoveResponse.js +3 -0
  766. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsFeaturedSetResponse.js +3 -0
  767. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsStepCompletedResponse.js +11 -0
  768. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsStepFailedResponse.js +11 -0
  769. package/app/node_modules/@slack/web-api/dist/types/response/WorkflowsUpdateStepResponse.js +11 -0
  770. package/app/node_modules/@slack/web-api/dist/types/response/index.js +3 -0
  771. package/app/node_modules/@slack/web-api/package.json +75 -0
  772. package/app/node_modules/agent-base/dist/src/index.js +203 -0
  773. package/app/node_modules/agent-base/dist/src/promisify.js +18 -0
  774. package/app/node_modules/agent-base/package.json +64 -0
  775. package/app/node_modules/asynckit/index.js +6 -0
  776. package/app/node_modules/asynckit/lib/abort.js +29 -0
  777. package/app/node_modules/asynckit/lib/async.js +34 -0
  778. package/app/node_modules/asynckit/lib/defer.js +26 -0
  779. package/app/node_modules/asynckit/lib/iterate.js +75 -0
  780. package/app/node_modules/asynckit/lib/state.js +37 -0
  781. package/app/node_modules/asynckit/lib/terminator.js +29 -0
  782. package/app/node_modules/asynckit/package.json +63 -0
  783. package/app/node_modules/asynckit/parallel.js +43 -0
  784. package/app/node_modules/asynckit/serial.js +17 -0
  785. package/app/node_modules/asynckit/serialOrdered.js +75 -0
  786. package/app/node_modules/axios/dist/node/axios.cjs +6808 -0
  787. package/app/node_modules/axios/package.json +203 -0
  788. package/app/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  789. package/app/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  790. package/app/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  791. package/app/node_modules/call-bind-apply-helpers/index.js +15 -0
  792. package/app/node_modules/call-bind-apply-helpers/package.json +85 -0
  793. package/app/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  794. package/app/node_modules/combined-stream/lib/combined_stream.js +208 -0
  795. package/app/node_modules/combined-stream/package.json +25 -0
  796. package/app/node_modules/debug/package.json +64 -0
  797. package/app/node_modules/debug/src/browser.js +272 -0
  798. package/app/node_modules/debug/src/common.js +292 -0
  799. package/app/node_modules/debug/src/index.js +10 -0
  800. package/app/node_modules/debug/src/node.js +263 -0
  801. package/app/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  802. package/app/node_modules/delayed-stream/package.json +27 -0
  803. package/app/node_modules/dunder-proto/get.js +30 -0
  804. package/app/node_modules/dunder-proto/package.json +76 -0
  805. package/app/node_modules/es-define-property/index.js +14 -0
  806. package/app/node_modules/es-define-property/package.json +81 -0
  807. package/app/node_modules/es-errors/eval.js +4 -0
  808. package/app/node_modules/es-errors/index.js +4 -0
  809. package/app/node_modules/es-errors/package.json +80 -0
  810. package/app/node_modules/es-errors/range.js +4 -0
  811. package/app/node_modules/es-errors/ref.js +4 -0
  812. package/app/node_modules/es-errors/syntax.js +4 -0
  813. package/app/node_modules/es-errors/type.js +4 -0
  814. package/app/node_modules/es-errors/uri.js +4 -0
  815. package/app/node_modules/es-object-atoms/index.js +4 -0
  816. package/app/node_modules/es-object-atoms/package.json +79 -0
  817. package/app/node_modules/es-set-tostringtag/index.js +35 -0
  818. package/app/node_modules/es-set-tostringtag/package.json +78 -0
  819. package/app/node_modules/eventemitter3/index.js +336 -0
  820. package/app/node_modules/eventemitter3/package.json +62 -0
  821. package/app/node_modules/follow-redirects/debug.js +15 -0
  822. package/app/node_modules/follow-redirects/index.js +709 -0
  823. package/app/node_modules/follow-redirects/package.json +58 -0
  824. package/app/node_modules/form-data/lib/browser.js +4 -0
  825. package/app/node_modules/form-data/lib/form_data.js +506 -0
  826. package/app/node_modules/form-data/lib/populate.js +10 -0
  827. package/app/node_modules/form-data/package.json +82 -0
  828. package/app/node_modules/function-bind/implementation.js +84 -0
  829. package/app/node_modules/function-bind/index.js +5 -0
  830. package/app/node_modules/function-bind/package.json +87 -0
  831. package/app/node_modules/get-intrinsic/index.js +378 -0
  832. package/app/node_modules/get-intrinsic/package.json +97 -0
  833. package/app/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  834. package/app/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  835. package/app/node_modules/get-proto/index.js +27 -0
  836. package/app/node_modules/get-proto/package.json +81 -0
  837. package/app/node_modules/gopd/gOPD.js +4 -0
  838. package/app/node_modules/gopd/index.js +15 -0
  839. package/app/node_modules/gopd/package.json +77 -0
  840. package/app/node_modules/has-flag/index.js +8 -0
  841. package/app/node_modules/has-flag/package.json +46 -0
  842. package/app/node_modules/has-symbols/index.js +14 -0
  843. package/app/node_modules/has-symbols/package.json +111 -0
  844. package/app/node_modules/has-symbols/shams.js +45 -0
  845. package/app/node_modules/has-tostringtag/package.json +108 -0
  846. package/app/node_modules/has-tostringtag/shams.js +8 -0
  847. package/app/node_modules/hasown/index.js +8 -0
  848. package/app/node_modules/hasown/package.json +91 -0
  849. package/app/node_modules/https-proxy-agent/dist/agent.js +177 -0
  850. package/app/node_modules/https-proxy-agent/dist/index.js +14 -0
  851. package/app/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
  852. package/app/node_modules/https-proxy-agent/package.json +56 -0
  853. package/app/node_modules/is-electron/index.js +21 -0
  854. package/app/node_modules/is-electron/package.json +34 -0
  855. package/app/node_modules/is-stream/index.js +28 -0
  856. package/app/node_modules/is-stream/package.json +42 -0
  857. package/app/node_modules/math-intrinsics/abs.js +4 -0
  858. package/app/node_modules/math-intrinsics/floor.js +4 -0
  859. package/app/node_modules/math-intrinsics/isNaN.js +6 -0
  860. package/app/node_modules/math-intrinsics/max.js +4 -0
  861. package/app/node_modules/math-intrinsics/min.js +4 -0
  862. package/app/node_modules/math-intrinsics/package.json +86 -0
  863. package/app/node_modules/math-intrinsics/pow.js +4 -0
  864. package/app/node_modules/math-intrinsics/round.js +4 -0
  865. package/app/node_modules/math-intrinsics/sign.js +11 -0
  866. package/app/node_modules/mime-db/db.json +8519 -0
  867. package/app/node_modules/mime-db/index.js +12 -0
  868. package/app/node_modules/mime-db/package.json +60 -0
  869. package/app/node_modules/mime-types/index.js +188 -0
  870. package/app/node_modules/mime-types/package.json +44 -0
  871. package/app/node_modules/ms/index.js +162 -0
  872. package/app/node_modules/ms/package.json +38 -0
  873. package/app/node_modules/p-finally/index.js +15 -0
  874. package/app/node_modules/p-finally/package.json +42 -0
  875. package/app/node_modules/p-queue/dist/index.js +279 -0
  876. package/app/node_modules/p-queue/dist/lower-bound.js +21 -0
  877. package/app/node_modules/p-queue/dist/priority-queue.js +32 -0
  878. package/app/node_modules/p-queue/node_modules/eventemitter3/index.js +336 -0
  879. package/app/node_modules/p-queue/node_modules/eventemitter3/package.json +56 -0
  880. package/app/node_modules/p-queue/package.json +92 -0
  881. package/app/node_modules/p-retry/index.js +85 -0
  882. package/app/node_modules/p-retry/package.json +51 -0
  883. package/app/node_modules/p-timeout/index.js +57 -0
  884. package/app/node_modules/p-timeout/package.json +45 -0
  885. package/app/node_modules/retry/index.js +1 -0
  886. package/app/node_modules/retry/lib/retry.js +100 -0
  887. package/app/node_modules/retry/lib/retry_operation.js +162 -0
  888. package/app/node_modules/retry/package.json +36 -0
  889. package/app/node_modules/supports-color/index.js +135 -0
  890. package/app/node_modules/supports-color/package.json +53 -0
  891. package/app/node_modules/ws/index.js +22 -0
  892. package/app/node_modules/ws/lib/buffer-util.js +131 -0
  893. package/app/node_modules/ws/lib/constants.js +19 -0
  894. package/app/node_modules/ws/lib/event-target.js +292 -0
  895. package/app/node_modules/ws/lib/extension.js +203 -0
  896. package/app/node_modules/ws/lib/limiter.js +55 -0
  897. package/app/node_modules/ws/lib/permessage-deflate.js +530 -0
  898. package/app/node_modules/ws/lib/receiver.js +743 -0
  899. package/app/node_modules/ws/lib/sender.js +607 -0
  900. package/app/node_modules/ws/lib/stream.js +161 -0
  901. package/app/node_modules/ws/lib/subprotocol.js +62 -0
  902. package/app/node_modules/ws/lib/validation.js +152 -0
  903. package/app/node_modules/ws/lib/websocket-server.js +562 -0
  904. package/app/node_modules/ws/lib/websocket.js +1421 -0
  905. package/app/node_modules/ws/package.json +74 -0
  906. package/app/package.json +1 -1
  907. package/app/server.js +1 -1
  908. package/dist/cli.d.ts +1 -1
  909. package/dist/cli.js +7 -4
  910. package/dist/product.d.ts +8 -1
  911. package/dist/product.js +79 -23
  912. package/dist/setup.js +9 -9
  913. package/package.json +2 -3
  914. package/schemas/botmancers.mcp.v2.tools.json +770 -5
  915. package/skills/botmancers-collaboration/SKILL.md +5 -1
  916. package/skills/botmancers-collaboration/references/workflows.md +21 -0
  917. package/app/.next/server/app/api/agent-deck/decks/route/app-paths-manifest.json +0 -3
  918. package/app/.next/server/app/api/agent-deck/decks/route.js +0 -9
  919. package/app/.next/server/app/api/agent-deck/decks/route.js.nft.json +0 -1
  920. package/app/.next/server/app/api/agent-deck/decks/route_client-reference-manifest.js +0 -3
  921. package/app/.next/server/app/api/agent-deck/settings/route/app-paths-manifest.json +0 -3
  922. package/app/.next/server/app/api/agent-deck/settings/route.js +0 -9
  923. package/app/.next/server/app/api/agent-deck/settings/route.js.nft.json +0 -1
  924. package/app/.next/server/app/api/agent-deck/settings/route_client-reference-manifest.js +0 -3
  925. package/app/.next/server/chunks/[root-of-the-server]__06qkt0f._.js +0 -3
  926. package/app/.next/server/chunks/[root-of-the-server]__08qhrch._.js +0 -3
  927. package/app/.next/server/chunks/[root-of-the-server]__097ptn_._.js +0 -3
  928. package/app/.next/server/chunks/[root-of-the-server]__09m9-pe._.js +0 -3
  929. package/app/.next/server/chunks/[root-of-the-server]__0b7w1z3._.js +0 -3
  930. package/app/.next/server/chunks/[root-of-the-server]__0f5yqjs._.js +0 -3
  931. package/app/.next/server/chunks/[root-of-the-server]__0g4um3-._.js +0 -44
  932. package/app/.next/server/chunks/[root-of-the-server]__0hro5ey._.js +0 -3
  933. package/app/.next/server/chunks/[root-of-the-server]__0hwpgxq._.js +0 -3
  934. package/app/.next/server/chunks/[root-of-the-server]__0uq7sci._.js +0 -3
  935. package/app/.next/server/chunks/[root-of-the-server]__13cd2fb._.js +0 -44
  936. package/app/.next/server/chunks/[root-of-the-server]__1879cge._.js +0 -3
  937. package/app/.next/server/chunks/[root-of-the-server]__1a2dh11._.js +0 -3
  938. package/app/.next/server/chunks/[root-of-the-server]__1bhzfu_._.js +0 -7
  939. package/app/.next/server/chunks/[root-of-the-server]__1co3sok._.js +0 -44
  940. package/app/.next/server/chunks/[root-of-the-server]__1eh30sp._.js +0 -3
  941. package/app/.next/server/chunks/[root-of-the-server]__1fmsid0._.js +0 -44
  942. package/app/.next/server/chunks/[root-of-the-server]__1kvvs4u._.js +0 -3
  943. package/app/.next/server/chunks/[root-of-the-server]__1qbgs3m._.js +0 -3
  944. package/app/.next/server/chunks/[root-of-the-server]__1s6h1sj._.js +0 -3
  945. package/app/.next/server/chunks/[root-of-the-server]__1slu7d7._.js +0 -7
  946. package/app/.next/server/chunks/[root-of-the-server]__1tuqc5v._.js +0 -3
  947. package/app/.next/server/chunks/[root-of-the-server]__1v609eq._.js +0 -44
  948. package/app/.next/server/chunks/[root-of-the-server]__1zdv-vb._.js +0 -3
  949. package/app/.next/server/chunks/[root-of-the-server]__1zjs2tr._.js +0 -3
  950. package/app/.next/server/chunks/_023se5j._.js +0 -44
  951. package/app/.next/server/chunks/_02pb_qv._.js +0 -44
  952. package/app/.next/server/chunks/_05ro-21._.js +0 -44
  953. package/app/.next/server/chunks/_07on0dc._.js +0 -44
  954. package/app/.next/server/chunks/_08208nz._.js +0 -44
  955. package/app/.next/server/chunks/_0fe5qz5._.js +0 -44
  956. package/app/.next/server/chunks/_0qoji5a._.js +0 -44
  957. package/app/.next/server/chunks/_0uv2pi5._.js +0 -44
  958. package/app/.next/server/chunks/_0wdl90-._.js +0 -44
  959. package/app/.next/server/chunks/_11ijk9k._.js +0 -44
  960. package/app/.next/server/chunks/_198sn69._.js +0 -44
  961. package/app/.next/server/chunks/_1ba_5hd._.js +0 -44
  962. package/app/.next/server/chunks/_1m89jq5._.js +0 -44
  963. package/app/.next/server/chunks/_1n39wr_._.js +0 -44
  964. package/app/.next/server/chunks/_1ryxqo1._.js +0 -44
  965. package/app/.next/server/chunks/_1vemgly._.js +0 -44
  966. package/app/.next/server/chunks/_next-internal_server_app_api_agent-deck_decks_route_actions_0yguyfv.js +0 -3
  967. package/app/.next/server/chunks/_next-internal_server_app_api_agent-deck_settings_route_actions_0z_nbkb.js +0 -3
  968. package/app/.next/server/chunks/lib_0lqoyb4._.js +0 -217
  969. package/app/.next/server/chunks/lib_0riiofz._.js +0 -44
  970. package/app/.next/server/chunks/lib_16j2293._.js +0 -217
  971. package/app/.next/server/chunks/lib_1nb_61e._.js +0 -217
  972. package/app/.next/server/chunks/lib_session-pins_ts_0lmxnwj._.js +0 -20
  973. package/app/.next/server/chunks/ssr/app_components_AgentDeckRuntime_tsx_024janf._.js +0 -3
  974. package/app/.next/server/chunks/ssr/app_components_ExchangeCard_tsx_1shfcgn._.js +0 -3
  975. package/app/.next/server/chunks/ssr/app_settings_page_tsx_1t-rdz-._.js +0 -3
  976. package/app/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js +0 -3
  977. package/app/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1dato.js +0 -3
  978. package/app/.next/static/chunks/0bhd8eso48g27.js +0 -1
  979. package/app/.next/static/chunks/1ku9himlsx-hn.js +0 -1
  980. package/app/.next/static/chunks/21aqekm5z0j47.js +0 -1
  981. package/app/.next/static/chunks/2a8bomryx66oj.css +0 -3
  982. package/app/.next/static/chunks/3230ywnpii0s6.js +0 -3
  983. package/app/.next/static/chunks/35l2c95bd-jud.js +0 -1
  984. package/app/.next/static/chunks/3cijpn6vx3yzv.js +0 -1
  985. package/app/.next/static/chunks/3ue9194j59kem.js +0 -1
  986. package/app/.next/static/chunks/44ese2s4gzze_.js +0 -1
  987. /package/app/.next/server/app/api/{agent-deck/decks → bots/[id]/sessions/[ref]/shares}/route/build-manifest.json +0 -0
  988. /package/app/.next/server/app/api/{agent-deck/decks → bots/[id]/sessions/[ref]/shares}/route/server-reference-manifest.json +0 -0
  989. /package/app/.next/server/app/api/{agent-deck/settings → bots/[id]/share-policy}/route/build-manifest.json +0 -0
  990. /package/app/.next/server/app/api/{agent-deck/settings → bots/[id]/share-policy}/route/server-reference-manifest.json +0 -0
  991. /package/app/.next/static/{gh3shm8hnVqXLr75rmvsL → A9sQnaf9i6YzjHNoPgRfU}/_buildManifest.js +0 -0
  992. /package/app/.next/static/{gh3shm8hnVqXLr75rmvsL → A9sQnaf9i6YzjHNoPgRfU}/_clientMiddlewareManifest.js +0 -0
  993. /package/app/.next/static/{gh3shm8hnVqXLr75rmvsL → A9sQnaf9i6YzjHNoPgRfU}/_ssgManifest.js +0 -0
@@ -1,217 +0,0 @@
1
- module.exports=[45383,93399,e=>{"use strict";var t=e.i(54799),n=e.i(62294),r=e.i(27510),i=e.i(53059),a=e.i(35613),s=e.i(57281),o=e.i(54226),d=e.i(64974),l=e.i(76459),u=e.i(39872),c=e.i(17834),p=e.i(142),_=e.i(40712),f=e.i(63020),m=e.i(16789);let g=/^(cwd|working_directory|workspace|deck|deck_id|deck_name|hermes_profile|hermes_profile_path)$/,h=/(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL)/i,y=/^(id|ref|session_ref|sessionRef|kind)$|(request|conversation|agent|message|attempt|exchange|event|wake|grant|binding|finalization|bot|participant|sender|requester|origin|group)_?id$/i;function w(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function k(e,t,n=!1){if("string"==typeof e)n&&t.add(e);else if(Array.isArray(e))for(let r of e)k(r,t,n);else if(w(e))for(let[r,i]of Object.entries(e))k(i,t,n||g.test(r))}function v(e,t,n){return t.reduce((e,t)=>t.length>=6?e.includes(t)?e.split(t).join(n):e:e.includes(t)?e.replace(RegExp(`(?<![A-Za-z0-9])${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![A-Za-z0-9])`,"g"),n):e,e)}function E(){let e=function(){let e=new Set;for(let t of n.default.prepare("SELECT external_session_id AS id FROM session_bindings").all())e.add(t.id);for(let t of(0,m.privateProviderIds)(n.default))e.add(t);for(let t of n.default.prepare("SELECT external_session_id, external_run_id FROM work_attempts WHERE external_session_id IS NOT NULL OR external_run_id IS NOT NULL").all())t.external_session_id&&e.add(t.external_session_id),t.external_run_id&&e.add(t.external_run_id);return[...e].filter(e=>e.length>0).sort((e,t)=>t.length-e.length)}(),t=function(){let e=new Set;for(let t of n.bots.getAll())k(t,e);for(let t of n.default.prepare(`
2
- SELECT launch_snapshot AS snapshot FROM work_attempts WHERE launch_snapshot IS NOT NULL
3
- UNION ALL SELECT snapshot FROM launch_snapshots
4
- `).all())k(function(e){try{return JSON.parse(e)}catch{return null}}(t.snapshot),e);return[...new Set([...[...e].filter(e=>e.trim().length>=4),...Object.entries(process.env).filter(([e,t])=>h.test(e)&&"string"==typeof t).flatMap(([,e])=>[e,...e.split(/[\s,=]+/)]).filter(e=>e.length>=8)])].sort((e,t)=>t.length-e.length)}(),r=n=>v(v(n,e,"[redacted runtime id]"),t,"[redacted]"),i=(e,t)=>"string"==typeof e?null!==t&&y.test(t)?e:r(e):Array.isArray(e)?e.map(e=>i(e,null)):w(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,i(t,e)])):e;return{text:r,deep:e=>i(e,null)}}e.s(["serviceRedactor",0,E],93399);var b=e.i(35631);let I=["person","bot","service"],A={authentication_unavailable:503,unauthenticated:401,principal_mismatch:403,invalid_request:400,agent_not_found:404,conversation_not_found:404,conversation_not_writable:409,request_not_found:404,idempotency_conflict:409,internal_error:500};class S extends Error{code;constructor(e,t){super(t),this.name="AgentApiError",this.code=e}get status(){return A[this.code]}}function q(e){return"string"==typeof e&&I.includes(e)}function x(e){return"string"==typeof e&&e.trim().length>0}function R(e,t){return!!n.default.prepare("SELECT 1 FROM conversation_participants WHERE conversation_id = ? AND participant_kind = ? AND participant_id = ?").get(e,t.kind,t.id)}function T(e){switch(e){case"running":case"waiting":return"dispatched";case"completed":return"completed";case"failed":case"cancelled":return"failed";default:return"accepted"}}function C(e){if(!q(e.kind)||!x(e.id)||"bot"===e.kind&&!n.bots.getById(e.id))throw new S("unauthenticated","Authentication failed.")}let N={invalid_request:"invalid_request",conversation_not_found:"conversation_not_found",conversation_not_writable:"conversation_not_writable",target_not_found:"agent_not_found",idempotency_conflict:"idempotency_conflict",unknown_principal:"unauthenticated",intake_failed:"internal_error"};function D(e){return Promise.all(e.requestIds.map(ee)).then(()=>void 0)}function O(e,t,r,i){n.engine.transaction(()=>{t&&n.engine.finishAttempt(t,{outcome:"failed",errorCategory:r,errorMessage:i});let a=n.engine.getWorkRequest(e);a&&("queued"===a.state||"running"===a.state)&&n.engine.transitionWorkRequest(e,{from:a.state,to:"failed",errorCode:r,errorMessage:i})})}let $=(0,o.createDispatcher)(n.default,n.engine);class M extends Error{reason;constructor(e){super(`Commit deferred: ${e}`),this.reason=e}}async function L(e){let t=await j(e);W(e,t||n.engine.getWorkRequest(e)?.state!=="queued")}function W(e,t){for(let t of(0,u.continueAfterTerminal)(e))ee(t);for(let t of(function(e){let t=er.forHopRequest(e);if(t)try{for(let e of er.advance(t.id))ee(e)}catch(e){console.error("Exchange advance failed:",e instanceof Error?e.message:"unknown error")}}(e),(0,_.openFinalizationIds)()))et.has(t)||en(t);t&&F()}function F(){for(let e of $.deferredRequestIds())Q.has(e)||ee(e)}async function j(e){let t,s,l=n.engine.getWorkRequest(e);if(!l||"queued"!==l.state||null!==l.next_eligible_at&&$.now()<l.next_eligible_at)return!1;let c=n.bots.getById(l.target_agent_id);if(!c)return O(e,null,"agent_unavailable","The agent is no longer registered."),!1;let p=(0,d.authorizeWorkRequest)(l);if(!p.ok){try{n.engine.transitionWorkRequest(e,{from:"queued",to:"failed",expectedVersion:l.version,reason:"policy_rejected",errorCode:p.code,errorMessage:p.reason})}catch(e){if(!(e instanceof a.EngineStoreError&&"stale_state"===e.code))throw e}return!1}let _=p.policy,f=(0,r.agentForDispatch)(c),m=er.resumeFor(l,f)??(0,u.resumeBindingFor)(l,f);if(!m.ok){try{n.engine.transitionWorkRequest(e,{from:"queued",to:"failed",expectedVersion:l.version,reason:"session_unavailable",errorCode:"session_unavailable",errorMessage:m.reason})}catch(e){if(!(e instanceof a.EngineStoreError&&"stale_state"===e.code))throw e}return!1}let g=null,h=null;try{g=(0,r.prepareDispatch)({bot:c,history:[...n.default.prepare(`SELECT * FROM messages WHERE conversation_id = ?
5
- AND rowid <= (SELECT rowid FROM messages WHERE id = ?)
6
- ORDER BY rowid ASC`).all(l.source_conversation_id,l.source_event_id).map(e=>({speakerLabel:function(e){if("bot"===e.sender_kind&&e.sender_id){let t=n.bots.getById(e.sender_id);return t?t.name:`bot:${e.sender_id}`}return`${e.sender_kind??"person"}:${e.sender_id??"unknown"}`}(e),fromAgent:"bot"===e.sender_kind&&e.sender_id===c.id,content:e.content})),...(0,u.turnContext)(l),...er.turnContext(l)??[]],toolProfile:_.tool_profile,sessionBinding:m.binding?{bindingId:m.binding.id,externalSessionId:m.binding.external_session_id}:null,..."freshSession"in m&&m.freshSession?{freshSession:!0}:{},prepareFinalization:"implementation"===_.execution_kind||"revision"===_.execution_kind})}catch(e){h=e instanceof r.DispatchFailure?e:new r.DispatchFailure("runtime_failed","The agent runtime did not complete the turn.")}let y={agent:f,agent_id:c.id,execution_kind:_.execution_kind,tool_profile:_.tool_profile,policy_rule:_.rule},w=new AbortController;try{t=n.engine.transaction(()=>{let t=$.claim(e,{expectedVersion:l.version,data:{agent:f}});if(!t.ok)return s=t.blockedBy,null;if(g){let r=$.now(),a=$.control.attemptDeadlineFor(t.request,r),s={...g.input,deadlineAt:a,signal:w.signal},o=(0,i.beginAttempt)(n.engine,e,{agent:f,adapter:g.adapter,input:s,snapshot:y,now:r});return $.recordLaunchIntent(t.lease,o.attempt.id,g.adapter.name,g.adapter.launchIntent?.(o.input)??null),er.hopClaimed(e,o.attempt.id,r),{lease:t.lease,attempt:o}}let r=n.engine.createAttempt(e,{kind:"launch",adapter:f,toolProfile:_.tool_profile,launchSnapshot:y});return er.hopClaimed(e,r.id,r.started_at),{lease:t.lease,attempt:r.id}})}catch(e){if(e instanceof a.EngineStoreError&&"stale_state"===e.code)return!1;throw e}if(!t)return s&&ee(s),!1;let{lease:k}=t;if(!g||"string"==typeof t.attempt){let i=h??new r.DispatchFailure("runtime_failed","The agent runtime did not complete the turn."),a="string"==typeof t.attempt?t.attempt:t.attempt.attempt.id;return n.engine.transaction(()=>{$.assertHeld(k),O(e,a,i.code,i.message),$.release(k,"failed")}),!0}let v=t.attempt.attempt.id;return H.set(e,{attemptId:v,controller:w}),await G(k,async()=>{(0,o.dispatchFault)("before_launch",e);try{let r=await (0,i.runAttempt)(n.engine,t.attempt,g.adapter,{fence:()=>$.holds(k),onEvent:t=>{"started"===t.type&&(0,o.dispatchFault)("after_run_id_persisted",e),B(k,v,t)},sanitize:e=>er.sanitizeHopResult(l,e),project:(e,t)=>J(k,l,t,e)});r.abandoned&&await z(r.abandoned,{localSignalled:!0,launched:!0}),r.projected?.retryAt!=null&&P(e,r.projected.retryAt)}catch(e){K(k,v,e)}},w),H.get(e)?.attemptId===v&&H.delete(e),!0}let H=new Map;function P(e,t){let n=setTimeout(()=>{ee(e)},Math.max(0,t-$.now()));n.unref&&n.unref()}async function U(e){let t=H.get(e.requestId);if(t&&t.attemptId===e.attemptId){t.controller.abort();let n=Q.get(e.requestId);if(n){let t=`abandoned:${e.attemptId}`;Q.delete(e.requestId),Q.set(t,n),n.finally(()=>{Q.get(t)===n&&Q.delete(t)})}}await z(e,{localSignalled:!!t&&t.attemptId===e.attemptId,launched:e.launched})}async function z(e,t){let i,a=e.transport?(0,r.adapterForTransport)(e.transport)?.reconciler??null:null;i="failed"===e.externalCancel?"failed":e.externalRunId?a?.cancel?await a.cancel(e.externalRunId):"unsupported":t.launched?"unsupported":"not_launched",n.engine.appendEvent(e.requestId,{type:"external_cancel",attemptId:e.attemptId,data:{status:i,reason:e.reason,external_run_id:e.externalRunId,transport:e.transport,local_signalled:t.localSignalled},now:$.now()})}function B(e,t,r){if("progress"===r.type&&"finalization_prepared"===r.detail.phase&&"string"==typeof r.detail.baseline_ref&&"string"==typeof r.detail.baseline_digest){let i={baselineRef:r.detail.baseline_ref,baselineDigest:r.detail.baseline_digest};n.engine.transaction(()=>{$.holds(e)&&(0,_.recordAttemptBaseline)(t,i,r.at)})}}async function G(e,t,r){let i=setInterval(()=>{try{$.heartbeat(e);let t=n.engine.getWorkRequest(e.requestId);r&&t&&(null!==t.cancel_requested_at||a.TERMINAL_STATES.includes(t.state))&&r.abort()}catch(e){console.error("Dispatch heartbeat failed:",e)}},$.config.heartbeatMs);i.unref&&i.unref();try{return await t()}finally{clearInterval(i)}}function K(e,t,n){if(!(n instanceof o.LeaseLostError)){if(n instanceof M){try{$.defer(e,n.reason,t)}catch(e){if(!(e instanceof o.LeaseLostError))throw e}return}throw n}}function J(e,a,s,d){if((0,o.dispatchFault)("before_terminal_commit",a.id),$.assertHeld(e),"failed"===d.status&&d.failure?.code==="agent_deck_unreachable"&&s.external_run_id)throw new M("unreachable");if("failed"===d.status&&d.launchUnconfirmed&&!s.external_run_id)throw new M("launch_unconfirmed");let l=a.id,u=$.now();(0,_.recordPreparedEvidence)(a,s,d,u);let c=n.engine.getWorkRequest(l)??a,p=null!==c.cancel_requested_at;if(p||null!==c.deadline_at&&u>=c.deadline_at)return p?n.engine.transitionWorkRequest(l,{from:"running",to:"cancelled",reason:"cancel_requested",errorCode:"cancelled",errorMessage:c.cancel_reason??"The request was cancelled.",data:{attempt_outcome:s.outcome},now:u}):n.engine.transitionWorkRequest(l,{from:"running",to:"failed",reason:"timed_out",errorCode:"timed_out",errorMessage:"The request passed its deadline.",data:{deadline_at:c.deadline_at,attempt_outcome:s.outcome},now:u}),"completed"===d.status&&(0,i.recordLateResult)(n.engine,s,d,u),$.release(e,p?"cancelled":"timed_out"),{retryAt:null};if("completed"!==d.status||null===d.output){let t=(0,r.dispatchFailureFor)(d),n=$.control.settleFailure(l,{category:"completed"===d.status?"result_contract":d.failure?.category??"runtime_failed",code:d.failure?.code??null,errorCode:t.code,errorMessage:t.message,..."failed"===d.externalCancel?{attention:"external_cancel_failed"}:{}},u);return $.release(e,n.outcome),{retryAt:"retry"===n.decision.action?n.decision.nextEligibleAt:null}}let m=(0,f.hopOf)(a);if(m){let t=er.commitHop(a,s,d,u);return n.engine.transitionWorkRequest(l,{from:"running",to:"completed",result:t,now:u}),$.release(e,"completed"),er.advance(m.exchangeId,u),{retryAt:null}}let g=(0,t.randomUUID)();return n.default.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, request_id, content, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(g,a.source_conversation_id,"bot",a.target_agent_id,"bot",l,d.output,u),"edit"===a.tool_profile&&d.externalSessionId&&n.engine.bindSession({agentId:a.target_agent_id,adapter:s.adapter,externalSessionId:d.externalSessionId,conversationId:a.source_conversation_id,requestId:l,sourceAttemptId:s.id,now:u}),n.engine.transitionWorkRequest(l,{from:"running",to:"completed",result:{reply_message_id:g},now:u}),$.release(e,"completed"),{retryAt:null}}function V(e){return e?{kind:e.kind,..."run"===e.kind?{state:e.state}:{},..."accepted"===e.kind?{run_id:e.runId}:{},..."rejected"===e.kind?{status:e.status,code:e.code}:{}}:null}async function X(e){let t=n.engine.getWorkRequest(e.requestId);if(!t||"running"!==t.state)return void $.release(e,"stale");let a=async(r,i)=>{let a=n.engine.transaction(()=>{$.assertHeld(e);let n=$.control.enforceRequest(t.id,$.now(),{force:!0});return n?(i?.(),{enforced:n}):{value:r()}});return"enforced"in a?(a.enforced.abandoned&&await U(a.enforced.abandoned),{won:!0}):{won:!1,value:a.value}},s=null;try{let f;if((await a(()=>void 0)).won)return;let m=n.engine.listAttempts(t.id).find(e=>null===e.finished_at);if(!m)return void n.engine.transaction(()=>{$.assertHeld(e),n.engine.transitionWorkRequest(t.id,{from:"running",to:"failed",reason:"retryable",errorCode:"interrupted",errorMessage:"The request was interrupted before its Attempt was recorded."}),$.release(e,"interrupted")});s=m.id;let g={};try{g=JSON.parse(m.launch_snapshot)}catch{}let h="string"==typeof g.transport?(0,r.adapterForTransport)(g.transport):null,y=h?.reconciler??null,w=async(e,r,i,s)=>!(await a(()=>{n.engine.appendEvent(t.id,{type:"reconcile_decided",attemptId:m.id,data:{phase:e,...r,external_run_id:s,observation:V(i)}})})).won,k=m.external_run_id,v=null;if(k){if(y){if(v=await y.inspect(k),f=(0,o.decideWithRunId)(v),!await w("run",f,v,k))return}else if(f={action:"interrupted",reason:"runtime_unobservable"},!await w("run",f,null,k))return}else{let r=$.launchIntent(m.id);if(f=(0,o.decideWithoutRunId)({reconcilable:!!y,intent:r,currentGrantFingerprint:y?.currentGrantFingerprint()??null}),"repost"===f.action&&y&&r?.body&&r.idempotency_key){if(!await w("launch",f,null,null))return;if(v=await y.repost({idempotencyKey:r.idempotency_key,body:r.body}),f=(0,o.decideRepostResult)(v),"accepted"===v.kind){var d,l,u,c,p;let r=v.runId,i=(d=e,l=t.id,u=m.id,c=r,p=h?.name??null,n.engine.transaction(()=>{let e=n.engine.getAttempt(u);if(!e)return null;if(null===e.finished_at)return $.assertHeld(d),n.engine.recordAttemptExternalIds(u,{externalRunId:c}),n.engine.appendEvent(l,{type:"runtime_started",attemptId:u,data:{adapter:p,external_run_id:c,recovered:!0}}),null;n.default.prepare("UPDATE work_attempts SET external_run_id = ? WHERE id = ? AND external_run_id IS NULL").run(c,u),n.engine.appendEvent(l,{type:"runtime_started",attemptId:u,data:{adapter:p,external_run_id:c,recovered:!0,after_abandon:!0}});let t="timed_out"===e.outcome?"timed_out":"cancelled"===e.outcome?"cancelled":"retried",r=null;try{let t=JSON.parse(e.launch_snapshot);r="string"==typeof t.transport?t.transport:null}catch{}return{requestId:l,attemptId:u,externalRunId:c,transport:r,reason:t,launched:!0}}));if(i)return void await z(i,{localSignalled:!1,launched:!0});k=r}}if(!await w("launch",f,v,k))return}let E=!0===g.prepare_finalization;switch(f.action){case"defer":await a(()=>$.defer(e,f.reason,m.id));return;case"attention":await a(()=>$.setAttention(e,{attemptId:m.id,reason:f.reason,detail:v?JSON.stringify(V(v)):null}));return;case"interrupted_attention":{let r=E&&y&&k?await y.evidence(k):null,i=e=>{r&&e&&(0,_.recordPreparedEvidence)(t,e,{finalization:r})};await a(()=>{n.engine.recordAttemptUsage(m.id,{usage:null,observedAt:Date.now()}),i(n.engine.finishAttempt(m.id,{outcome:"interrupted",errorCategory:"interrupted",errorMessage:`Agent Deck run ${k} died.`})),$.setAttention(e,{attemptId:m.id,reason:f.reason})},()=>i(n.engine.getAttempt(m.id)));return}case"fail":await a(()=>{n.engine.finishAttempt(m.id,{outcome:"failed",errorCategory:f.category,errorMessage:`Agent Deck refused the launch (${f.code}).`}),n.engine.transitionWorkRequest(t.id,{from:"running",to:"failed",reason:"retryable",errorCode:"runtime_failed",errorMessage:"The agent runtime did not start the turn."}),$.release(e,"failed")});return;case"interrupted":await a(()=>{k&&n.engine.recordAttemptUsage(m.id,{usage:null,observedAt:Date.now()}),n.engine.finishAttempt(m.id,{outcome:"interrupted",errorCategory:"interrupted",errorMessage:"The runtime cannot be observed after a restart; the outcome is unknown."}),n.engine.transitionWorkRequest(t.id,{from:"running",to:"failed",reason:"retryable",errorCode:"interrupted",errorMessage:"The agent turn was interrupted by a restart. It was not relaunched."}),$.release(e,"interrupted")});return}if(!y||!k)return;let b=k,I="string"==typeof g.session_binding_id?g.session_binding_id:null,A=I?n.default.prepare("SELECT external_session_id FROM session_bindings WHERE id = ?").get(I):void 0,S=new AbortController;if((await a(()=>H.set(t.id,{attemptId:m.id,controller:S}))).won)return;await G(e,async()=>{let r=await y.follow(b,{resumeSessionId:A?.external_session_id??null,prepareFinalization:E,deadlineAt:"number"==typeof g.deadline_at?g.deadline_at:null,signal:S.signal},t=>B(e,m.id,t)),a=er.sanitizeHopResult(t,r),s=null,o=n.engine.transaction(()=>{let r=n.engine.getAttempt(m.id);if(r&&null!==r.finished_at)return(0,i.recordLateResult)(n.engine,r,a,$.now()),{retryAt:null};if($.assertHeld(e),"failed"===a.status&&a.failure?.code==="agent_deck_unreachable")throw new M("unreachable");let o=(s=h?(0,i.abandonedLocally)(m,h,S.signal,a):null)?(0,i.recordAbandonedResult)(n.engine,s,a):(0,i.recordAttemptResult)(n.engine,m.id,a);return J(e,t,o,a)});s&&await z(s,{localSignalled:!0,launched:!0}),null!==o.retryAt&&P(t.id,o.retryAt)},S).finally(()=>{H.get(t.id)?.attemptId===m.id&&H.delete(t.id)})}catch(t){K(e,s,t)}}function Y(){let e=[];for(let t of $.control.enforceDue())e.push((t.abandoned?U(t.abandoned):Promise.resolve()).then(()=>W(t.requestId,!0)).catch(e=>{console.error("Request enforcement follow-up failed:",e)}));for(let t of $.recoverable()){let n=`reconcile:${t.requestId}`;if(Q.has(n)||Q.has(t.requestId))continue;let r=$.takeOver(t);if(!r)continue;let i=X(r).then(()=>W(t.requestId,!$.holds(r))).catch(e=>{console.error("Dispatch reconciliation failed unexpectedly:",e)}).finally(()=>{Q.delete(n)});Q.set(n,i),e.push(i)}for(let e of(F(),n.default.prepare(`
7
- SELECT id FROM work_requests
8
- WHERE state = 'queued' AND legacy_agent_request_id IS NULL AND executor = 'dispatcher' AND next_eligible_at IS NOT NULL AND next_eligible_at <= ?
9
- ORDER BY next_eligible_at ASC, id ASC
10
- `).all($.now()).map(e=>e.id)))Q.has(e)||ee(e);return Promise.all(e).then(()=>void 0)}async function Z(e,t={}){let n=$.control.cancel(e,t);return"cancel_requested"!==n.outcome||n.replayed||H.get(e)?.controller.abort(),n.abandoned&&await U(n.abandoned),"cancelled"!==n.outcome||n.replayed||W(e,!0),n}let Q=new Map;function ee(e){let t=Q.get(e);if(t)return t;let n=L(e).catch(e=>{console.error("Agent dispatch failed unexpectedly:",e)}).finally(()=>{Q.get(e)===n&&Q.delete(e)});return Q.set(e,n),n}let et=new Set;function en(e){let t=`finalization:${e}`,n=Q.get(t);if(n)return n;et.add(e);let r=(0,_.runFinalization)(e).then(e=>{if(e&&"preparing"!==e.state)for(let t of(0,u.continueAfterFinalization)(e.id))ee(t)}).catch(e=>{console.error("Finalization failed unexpectedly:",e instanceof Error?e.message:"unknown error")}).finally(()=>{Q.delete(t)});return Q.set(t,r),r}let er=(0,f.createExchangeStore)(n.default,n.engine);function ei(e){return Promise.all(er.advance(e).map(ee)).then(()=>void 0)}async function ea(e,t,r=null,i){let{hopRequestId:o,replayed:d}=n.default.transaction(()=>{let n=er.requestCancel(e,t,r);return i?.(n.exchange),n}).immediate();if(o){let e=n.engine.getWorkRequest(o);if(e&&!a.TERMINAL_STATES.includes(e.state))try{await Z(o,{actor:t,reason:r??"The exchange was cancelled."})}catch(e){if(!(e instanceof s.ControlError))throw e}}return er.advance(e),{exchange:er.view(e),replayed:d}}let es=["attempt_started","attempt_finished","session_bound","backfilled","runtime_progress","policy_selected","dispatch_claimed","dispatch_released","dispatch_deferred","dispatch_lease_taken_over","launch_intent_recorded","reconcile_decided","reconcile_deferred","attention_set","attempt_abandoned","external_cancel","late_result_recorded"];function eo(e){return e.legacy_agent_request_id??e.id}function ed(e,t){C(e);let r=n.default.prepare("SELECT id FROM work_requests WHERE legacy_agent_request_id = ?").get(t),i=n.engine.getWorkRequest(r?r.id:t),a=!!i&&"service"===e.kind&&!!(0,f.hopOf)(i);if(!i||!(a?el(e,i):R(i.source_conversation_id,e)||el(e,i)))throw new S("request_not_found","No request with that id is visible to this principal.");return i}function el(e,t){if(!(0,f.hopOf)(t))return!1;let n=er.forHopRequest(t.id);return!!n&&n.requester_kind===e.kind&&n.requester_id===e.id&&("service"!==e.kind||eu(e,n))}function eu(e,t){let r=(0,b.loadServiceGrants)();if("absent"===r.state||"invalid"===r.state)return!1;let i=r.grants.get(e.id),a=t.idempotency_key.startsWith(b.MESSAGE_KEY_PREFIX)?"sessions:message":"exchanges:read",s=e=>!!i?.get(e)?.has(a)&&!!n.bots.getById(e);return s(t.source_agent_id)&&(null===t.destination_agent_id||s(t.destination_agent_id))}let ec={agent:"agent",bot:"direct",group:"group"};e.s(["AgentApiError",0,S,"MCP_IDEMPOTENCY_PREFIX",0,"mcp:","acceptAgentMessage",0,function(e,t,n){let r;if(C(e),!x(t.agentId))throw new S("invalid_request","agentId is required.");if(!x(t.content))throw new S("invalid_request","content is required.");if(!x(t.idempotencyKey)||t.idempotencyKey.length>200)throw new S("invalid_request","An idempotency key (1-200 characters) is required.");if(void 0!==t.conversationId&&null!==t.conversationId&&!x(t.conversationId))throw new S("invalid_request","conversationId must be a non-empty string when present.");try{r=(0,l.acceptConversationMessage)({surface:"api",requester:e,idempotencyKey:t.idempotencyKey,conversation:t.conversationId?{id:t.conversationId}:{create:!0},content:t.content,fingerprint:[t.agentId,t.conversationId??null,t.content],route:()=>({deliveries:[{agentId:t.agentId}]}),beforeCommit:n,dispatch:D})}catch(e){if(e instanceof l.IntakeError)throw new S(N[e.code],"intake_failed"===e.code?"The request could not be processed.":e.message);throw e}let i=r.requests[0];return{accepted:{requestId:i?eo(i):r.requestIds[0],conversationId:r.conversationId,acceptedMessageId:r.acceptedMessageId,state:i?T(i.state):"accepted",replayed:r.replayed},dispatched:r.dispatched}},"apiStateOf",0,T,"cancelExchangeCommand",0,ea,"createExchangeCommand",0,function(e){let{exchange:t,created:n}=er.create(e),r=ei(t.id);return{exchange:er.view(t.id),created:n,dispatched:r}},"decideWakeGrantCommand",0,function(e,t,n){let r=(0,c.decideWakeGrant)({wakeId:e,decision:t,caller:n});if(r.request&&r.runnable&&ee(r.request.id),r.request&&r.ended)for(let e of(0,u.continueAfterTerminal)(r.request.id))ee(e);return r},"dispatchExchange",0,ei,"exchanges",0,er,"getAgentRequest",0,function(e,t){var r;let i,a,s,o,d,l,u=(i=(r=ed(e,t)).result?JSON.parse(r.result):null,o=(s=(a=(0,f.hopOf)(r)?.hop==="ask"?er.forHopRequest(r.id):void 0)?i?.answer_message_id:i?.reply_message_id)?n.default.prepare("SELECT id, content FROM messages WHERE id = ?").get(s):void 0,d=a?n.default.prepare("SELECT id FROM messages WHERE conversation_id = ? AND request_id = ? AND sender_kind = ? ORDER BY rowid ASC LIMIT 1").get(a.origin_conversation_id,r.id,a.requester_kind):void 0,l="failed"===r.state||"cancelled"===r.state,{requestId:eo(r),conversationId:a?a.origin_conversation_id:r.source_conversation_id,agentId:r.target_agent_id,acceptedMessageId:d?d.id:r.source_event_id,state:T(r.state),reply:o?{messageId:o.id,content:o.content}:null,failure:l?{code:r.error_code??r.state,message:r.error_message??""}:null,events:n.engine.listEvents(r.id).flatMap(e=>{let t=function(e){if("state_changed"===e.type){let t=e.data?JSON.parse(e.data).to:void 0;return"running"===t?"dispatched":"completed"===t?"completed":"failed"===t||"cancelled"===t?"failed":t??null}return es.includes(e.type)?null:e.type}(e);return t?[{type:t,at:e.created_at}]:[]}),createdAt:r.created_at,updatedAt:r.updated_at});return"service"!==e.kind?u:E().deep(u)},"getAuthorizedWorkRequest",0,ed,"getConversation",0,function(e,t){C(e);let r=n.default.prepare("SELECT * FROM conversations WHERE id = ?").get(t);if(!r||!R(r.id,e))throw new S("conversation_not_found","No conversation with that id is visible to this principal.");let i=n.default.prepare("SELECT participant_kind, participant_id, joined_at FROM conversation_participants WHERE conversation_id = ? ORDER BY joined_at ASC, rowid ASC").all(r.id),a=function(e){if("service"!==e.kind)return()=>!1;let t=new Map;return n=>{if(!n)return!1;let r=t.get(n);if(void 0===r){let i=er.forHopRequest(n);r=!!i&&!(i.requester_kind===e.kind&&i.requester_id===e.id&&eu(e,i)),t.set(n,r)}return r}}(e),s=n.default.prepare("SELECT * FROM messages WHERE conversation_id = ? ORDER BY rowid ASC").all(r.id).filter(e=>!a(e.request_id)),o={conversationId:r.id,type:ec[r.type]??"agent",origin:r.origin_kind&&r.origin_id?{kind:r.origin_kind,id:r.origin_id}:null,participants:i.map(e=>({kind:e.participant_kind,id:e.participant_id,joinedAt:e.joined_at})),messages:s.map((e,t)=>{var n,i;let a;return{messageId:e.id,seq:t+1,sender:(n=e,i=r,a=n.sender_kind??("bot"===n.sender_type?"bot":"person"),n.sender_id?{kind:a,id:n.sender_id}:"bot"!==a&&i.origin_kind===a&&i.origin_id?{kind:a,id:i.origin_id}:{kind:a,id:"unknown"}),content:e.content,requestId:e.request_id,createdAt:e.created_at}}),events:n.projector.listConversationEvents(r.id).filter(e=>!a(e.requestId)).map((e,t)=>({...e,seq:t+1}))};return"service"!==e.kind?o:E().deep(o)},"getExchangeView",0,function(e){return er.view(e)},"isPrincipalKind",0,q,"recoverCoordinatorLoops",0,function(){return Promise.all([Y(),...(0,u.pendingCoordinatorWork)().map(ee),...(0,_.openFinalizationIds)().map(en),...(function(){let e=[];for(let t of er.openIds())try{e.push(...er.advance(t))}catch(e){console.error("Exchange recovery failed:",e instanceof Error?e.message:"unknown error")}return e})().map(ee)]).then(()=>void 0)},"retryWakeCommand",0,function(e){let t=(0,c.retryWake)(e);return t.request?.state==="queued"&&ee(t.request.id),t},"revokeWakeGrantCommand",0,function(e,t){return(0,p.revokeWakeGrant)(e,t)},"samePrincipal",0,function(e,t){return e.kind===t.kind&&e.id===t.id},"startAgentDispatch",0,ee,"sweepDispatch",0,Y],45383)},27510,9346,57281,54226,53059,e=>{"use strict";var t=e.i(22734),n=e.i(14747),r=e.i(62349),i=e.i(51749),a=e.i(29370),s=e.i(54799),o=e.i(67505);let d="AGENT_DECK_RUN_TOKEN",l=["ended","error","died","canceled"],u=["starting","running","ended","error","died","canceled"];class c extends Error{code;status;deckCode;constructor(e,t,n=null,r=null){super(t.slice(0,300)),this.name="AgentDeckApiError",this.code=e,this.status=n,this.deckCode=r}}let p={agent_deck_token_missing:`Agent Deck API token is not configured on the Botmancers server (set ${d}).`,agent_deck_unauthorized:`Agent Deck rejected the Botmancers run token (check ${d} and that its grant is not revoked or expired).`,agent_deck_forbidden:"Agent Deck refused this run for the Botmancers grant (enable runs and finalization on the grant and allow this deck).",agent_deck_unreachable:"The Agent Deck server is unreachable at the workspace Agent Deck URL (start it or correct the URL).",agent_deck_rejected:"Agent Deck rejected the request.",agent_deck_invalid_response:"Agent Deck returned an unexpected response."};function _(){let e=process.env[d];return"string"==typeof e&&e.trim().length>0?e.trim():null}function f(){let e=_();return e?(0,s.createHash)("sha256").update(`botmancers-grant-v1:${e}`).digest("hex").slice(0,16):null}function m(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:null}function g(e){return"string"==typeof e&&e.length>0?e:null}async function h(e,t,n={}){var r,i,a;let s,d=_();if(!d)throw new c("agent_deck_token_missing",p.agent_deck_token_missing);let l={authorization:`Bearer ${d}`,accept:"application/json"};n.idempotencyKey&&(l["idempotency-key"]=n.idempotencyKey),void 0!==n.body&&(l["content-type"]="application/json");let u=`${(0,o.getAgentDeckServerUrl)()}${t}`;try{s=await (r={method:e,headers:l,...void 0!==n.body?{body:JSON.stringify(n.body)}:{},...n.signal?{signal:n.signal}:{}},fetch(u,r).then(e=>({status:e.status,json:()=>e.json()})))}catch{throw new c("agent_deck_unreachable",p.agent_deck_unreachable)}let f=null;try{f=m(await s.json())}catch{f=null}if(s.status<200||s.status>=300||f?.success!==!0){let e,t;if(s.status>=200&&s.status<300)throw new c("agent_deck_invalid_response",p.agent_deck_invalid_response,s.status);throw i=s.status,a=f,t=(e=g(a?.error_code))&&/^[A-Z][A-Z0-9_]{0,63}$/.test(e)?e:null,401===i?new c("agent_deck_unauthorized",p.agent_deck_unauthorized,i,t):403===i?new c("agent_deck_forbidden",`${p.agent_deck_forbidden}${t?` (${t})`:""}`,i,t):new c("agent_deck_rejected",`Agent Deck rejected the request (${i}${t?` ${t}`:""}).`,i,t)}let y=m(f.data);if(!y)throw new c("agent_deck_invalid_response",p.agent_deck_invalid_response,s.status);return y}function y(e){return new c("agent_deck_invalid_response",`${p.agent_deck_invalid_response} (${e})`)}function w(e){if("string"!=typeof e||!u.includes(e))throw y("run state");return e}let k=/^[0-9a-f]{64}$/,v=/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/,E=/^bl_[0-9a-f]{24}$/;function b(e){var t;let n=m(e);if(!n||Object.keys(n).some(e=>!["path","sha256","mode"].includes(e)))throw y("manifest entry");if(!(!("string"!=typeof(t=n.path)||0===t.length||t.length>1024||t.startsWith("/")||t.includes("\\")||/^[A-Za-z]:/.test(t)||t.includes("\0"))&&t.split("/").every(e=>e.length>0&&"."!==e&&".."!==e&&".git"!==e)))throw y("manifest path");let r=null===n.sha256&&null===n.mode,i="string"==typeof n.sha256&&k.test(n.sha256)&&("100644"===n.mode||"100755"===n.mode);if(!r&&!i)throw y("manifest digest or mode");return{path:n.path,sha256:n.sha256,mode:n.mode}}async function I(e,t){let n=await h("POST","/api/agent-runs",{body:e,idempotencyKey:t}),r=g(n.runId);if(!r)throw y("runId");return{runId:r,state:w(n.state)}}async function A(e){let t=await h("GET",`/api/agent-runs/${encodeURIComponent(e)}`);if(!g(t.runId)||!g(t.deckId)||!g(t.client)||"edit"!==t.tools&&"readonly"!==t.tools)throw y("run status");return{runId:g(t.runId),deckId:g(t.deckId),client:g(t.client),tools:t.tools,state:w(t.state),sessionId:g(t.sessionId),finalization:function(e){if(null==e)return null;let t=m(e);if(!t||"string"!=typeof t.baselineRef||!E.test(t.baselineRef)||"string"!=typeof t.baselineDigest||!k.test(t.baselineDigest)||!["prepared","finalizing","finalized"].includes(String(t.state)))throw y("finalization status");let n="string"==typeof t.commit&&v.test(t.commit)?t.commit:null;return{baselineRef:t.baselineRef,baselineDigest:t.baselineDigest,state:t.state,commit:n}}(t.finalization)}}async function S(e,t){let n=t?`?after=${encodeURIComponent(t)}`:"",r=await h("GET",`/api/agent-runs/${encodeURIComponent(e)}/events${n}`);if(!Array.isArray(r.events))throw y("events");return{runId:g(r.runId)??e,state:w(r.state),events:r.events.filter(e=>!!m(e)&&"string"==typeof e.type),nextCursor:"string"==typeof r.nextCursor?r.nextCursor:t??"0"}}async function q(e){return w((await h("POST",`/api/agent-runs/${encodeURIComponent(e)}/cancel`)).state)}async function x(e){let t=await h("GET",`/api/agent-runs/${encodeURIComponent(e)}/changes`);if("string"!=typeof t.baselineRef||!E.test(t.baselineRef))throw y("baselineRef");if("string"!=typeof t.baselineDigest||!k.test(t.baselineDigest))throw y("baselineDigest");if("string"!=typeof t.baseCommit||!v.test(t.baseCommit))throw y("baseCommit");if("string"!=typeof t.manifestDigest||!k.test(t.manifestDigest))throw y("manifestDigest");if(!Array.isArray(t.files))throw y("files");return{runId:g(t.runId)??e,baselineRef:t.baselineRef,baselineDigest:t.baselineDigest,baseCommit:t.baseCommit,files:t.files.map(b),manifestDigest:t.manifestDigest}}async function R(e,t,n){let r=await h("POST",`/api/agent-runs/${encodeURIComponent(e)}/finalize`,{body:t,idempotencyKey:n});if("finalized"!==r.finalizationState||"string"!=typeof r.commit||!v.test(r.commit)||"string"!=typeof r.tree||!v.test(r.tree)||"string"!=typeof r.manifestDigest||!k.test(r.manifestDigest))throw y("finalize result");return{runId:g(r.runId)??e,finalizationState:"finalized",commit:r.commit,tree:r.tree,..."string"==typeof r.parent&&v.test(r.parent)?{parent:r.parent}:{},manifestDigest:r.manifestDigest,..."number"==typeof r.fileCount?{fileCount:r.fileCount}:{},..."string"==typeof r.reviewId?{reviewId:r.reviewId}:{}}}e.s(["AGENT_DECK_API_MESSAGES",0,p,"AGENT_DECK_TERMINAL_STATES",0,l,"AgentDeckApiError",0,c,"agentDeckGrantFingerprint",0,f,"cancelAgentDeckRun",0,q,"finalizeAgentDeckRun",0,R,"getAgentDeckRun",0,A,"getAgentDeckRunChanges",0,x,"getAgentDeckRunEvents",0,S,"hasAgentDeckRunToken",0,function(){return null!==_()},"startAgentDeckRun",0,I],9346);var T=e.i(39229),C=e.i(40596),N=e.i(46786),D=e.i(11626),O=e.i(35613);class $ extends Error{code;constructor(e,t){super(t),this.name="ControlError",this.code=e}}let M=["queued","blocked","running","waiting"];function L(e){try{let t=JSON.parse(e.launch_snapshot);return t&&"object"==typeof t?t:{}}catch{return{}}}function W(e,t,n={}){let r=n.now??Date.now,i=n.cancelGraceMs??3e4,a=e.prepare("SELECT * FROM work_attempts WHERE request_id = ? AND finished_at IS NULL"),o=e.prepare("SELECT COUNT(*) AS n FROM work_attempts WHERE request_id = ?"),d=e.prepare("SELECT owner, token, expires_at FROM dispatch_leases WHERE request_id = ?"),l=e.prepare("SELECT 1 FROM engine_events WHERE attempt_id = ? AND type = 'runtime_started' LIMIT 1");function u(e){let n=t.getWorkRequest(e);if(!n)throw new $("not_found",`No work request ${e}.`);return n}function c(e,t,n,r){if(r&&(!e||!r(e,t,n)))throw new $("forbidden",`Not allowed to ${n} this request.`)}function p(e){return Math.max(e.attempt_count,o.get(e.id).n)}function _(t,n){e.prepare("UPDATE dispatch_attention SET cleared_at = ? WHERE request_id = ? AND cleared_at IS NULL").run(n,t)}function f(n,r,i){let a=d.get(n);a&&(e.prepare("DELETE FROM dispatch_leases WHERE request_id = ?").run(n),t.appendEvent(n,{type:"dispatch_released",data:{owner:a.owner,outcome:r,forced:!0},now:i}))}function m(e,n,r){let i=a.get(e.id);if(!i)return null;let s=L(i).transport;return t.finishAttempt(i.id,{outcome:"timed_out"===n?"timed_out":"cancelled"===n?"cancelled":"interrupted",errorCategory:"abandoned",errorMessage:{cancelled:"The request was cancelled while this Attempt was open; its result is no longer awaited.",timed_out:"The Attempt passed its deadline; its result is no longer awaited.",retried:"An operator retried the request; this Attempt is superseded."}[n],now:r}),t.appendEvent(e.id,{type:"attempt_abandoned",attemptId:i.id,data:{reason:n,attempt_number:i.attempt_number,external_run_id:i.external_run_id,transport:"string"==typeof s?s:null},now:r}),{requestId:e.id,attemptId:i.id,externalRunId:i.external_run_id,transport:"string"==typeof s?s:null,reason:n,launched:!!i.external_run_id||!!i.external_session_id||!!l.get(i.id)}}function g(n,r,i,a){let s=r?`${r.kind}:${r.id}`:null;e.prepare("UPDATE work_requests SET cancel_requested_at = ?, cancel_requested_by = ?, cancel_reason = ?, updated_at = ? WHERE id = ? AND cancel_requested_at IS NULL").run(a,s,i,a,n.id),t.appendEvent(n.id,{type:"cancel_requested",data:{by:s,reason:i,state:n.state},now:a})}function h(e,n,r={}){return t.transitionWorkRequest(e.id,{from:e.state,to:"cancelled",reason:"cancel_requested",errorCode:"cancelled",errorMessage:e.cancel_reason??"The request was cancelled.",data:r,now:n})}function y(e,n,r={}){return t.transitionWorkRequest(e.id,{from:e.state,to:"failed",reason:"timed_out",errorCode:"timed_out",errorMessage:"The request passed its deadline.",data:{...r,deadline_at:e.deadline_at},now:n})}function w(n,r,i){let a=(0,D.storedRetryPolicy)(n.retry_policy),o=(0,D.classifyFailure)(r.category,r.code),d=p(n),l=(0,D.decideRetry)({policy:a,attemptCount:d,disposition:o,deadlineAt:n.deadline_at,now:i}),u=r.attention&&"retry"===l.action?{action:"attention"}:l,c={category:r.category,disposition:o,attempt_count:d,max_attempts:a.max_attempts};switch(u.action){case"retry":{e.prepare("UPDATE work_requests SET next_eligible_at = ? WHERE id = ?").run(u.nextEligibleAt,n.id);let a=t.transitionWorkRequest(n.id,{from:"running",to:"queued",reason:"retry_scheduled",data:{...c,retry:u.retry,delay_ms:u.delayMs,next_eligible_at:u.nextEligibleAt,error_code:r.errorCode},now:i});return{outcome:"retry_scheduled",decision:u,request:a}}case"deadline":return{outcome:"timed_out",decision:u,request:y(n,i,c)};case"attention":{let a=r.attention??`failure:${r.category??"unknown"}`;return e.prepare("INSERT INTO dispatch_attention (id, request_id, attempt_id, reason, detail, created_at) VALUES (?, ?, NULL, ?, ?, ?)").run((0,s.randomUUID)(),n.id,a,r.code,i),t.appendEvent(n.id,{type:"attention_set",data:{reason:a,detail:r.code},now:i}),{outcome:"attention",decision:u,request:t.transitionWorkRequest(n.id,{from:"running",to:"waiting",reason:`manual_attention:${r.attention??r.category??"unknown"}`,data:c,now:i})}}case"exhausted":if(a.max_attempts>1)return{outcome:"retries_exhausted",decision:u,request:t.transitionWorkRequest(n.id,{from:"running",to:"failed",reason:"retries_exhausted",errorCode:r.errorCode,errorMessage:r.errorMessage,data:c,now:i})};case"fail":return{outcome:"failed",decision:u,request:t.transitionWorkRequest(n.id,{from:"running",to:"failed",errorCode:r.errorCode,errorMessage:r.errorMessage,data:"fail"===u.action?c:{},now:i})}}}let k={now:r,cancelGraceMs:i,cancel:(e,n={})=>t.transaction(()=>{let t=u(e);if(c(n.actor,t,"cancel",n.authorize),O.TERMINAL_STATES.includes(t.state))return{outcome:"already_terminal",state:t.state,replayed:!0,abandoned:null};let i=n.now??r();if("running"===t.state)return null!==t.cancel_requested_at?{outcome:"cancel_requested",state:"running",replayed:!0,abandoned:null}:(g(t,n.actor,n.reason??null,i),{outcome:"cancel_requested",state:"running",replayed:!1,abandoned:null});null===t.cancel_requested_at&&g(t,n.actor,n.reason??null,i);let a=u(e),s=m(a,"cancelled",i);return _(e,i),f(e,"cancelled",i),{outcome:"cancelled",state:h(a,i,{from_state:t.state}).state,replayed:!1,abandoned:s}}),retry:(n,i={})=>t.transaction(()=>{let a=u(n);if(c(i.actor,a,"retry",i.authorize),O.TERMINAL_STATES.includes(a.state))return{outcome:"already_terminal",state:a.state,abandoned:null};if("queued"===a.state)return{outcome:"already_queued",state:"queued",abandoned:null};if("waiting"!==a.state||null!==a.cancel_requested_at)return{outcome:"not_retryable",state:a.state,abandoned:null};let s=(0,D.storedRetryPolicy)(a.retry_policy),o=p(a);if(o>=s.max_attempts)return{outcome:"retries_exhausted",state:a.state,abandoned:null};let d=i.now??r();if(null!==a.deadline_at&&d>=a.deadline_at)return{outcome:"not_retryable",state:a.state,abandoned:null};let l=m(a,"retried",d);return _(n,d),e.prepare("UPDATE work_requests SET next_eligible_at = ? WHERE id = ?").run(d,n),{outcome:"retry_scheduled",state:t.transitionWorkRequest(n,{from:"waiting",to:"queued",reason:"retry_scheduled",data:{manual:!0,by:i.actor?`${i.actor.kind}:${i.actor.id}`:null,attempt_count:o,max_attempts:s.max_attempts,retry:o,delay_ms:0,next_eligible_at:d},now:d}).state,abandoned:l}}),timeOut:(e,n)=>t.transaction(()=>{let i=t.getWorkRequest(e),a=n??r();if(!i||!M.includes(i.state)||null===i.deadline_at||a<i.deadline_at)return null;let s=m(i,"timed_out",a);return _(e,a),f(e,"timed_out",a),y(i,a,{from_state:i.state}),{requestId:e,outcome:"timed_out",abandoned:s}}),settleFailure:(e,n,i)=>t.transaction(()=>{let t=u(e);if("running"!==t.state)throw new O.EngineStoreError("stale_state",`Work request ${e} is ${t.state}, not running.`);return w(t,n,i??r())}),enforceRequest:(e,n,s={})=>t.transaction(()=>{let o,l=t.getWorkRequest(e),c=n??r();if(!l||!M.includes(l.state)||null!==l.legacy_agent_request_id)return null;if(null!==l.deadline_at&&c>=l.deadline_at)return k.timeOut(e,c);if("running"!==l.state)return null;if(null!==l.cancel_requested_at){let t=d.get(e);if(!(!0===s.force||!t||t.expires_at<=c)&&c-l.cancel_requested_at<i)return null;let n=m(l,"cancelled",c);return f(e,"cancelled",c),h(l,c,{abandoned:null!==n}),{requestId:e,outcome:"cancelled",abandoned:n}}let p=a.get(e),_=p&&"number"==typeof(o=L(p).deadline_at)?o:null;if(!p||null===_||c<_)return null;let g=m(l,"timed_out",c);f(e,"attempt_timed_out",c);let y=w(u(e),{category:"timed_out",code:null,errorCode:"timed_out",errorMessage:"The Attempt passed its deadline."},c);return{requestId:e,outcome:y.outcome,abandoned:g}}),dueRequests(t){let n=t??r();return e.prepare(`
11
- SELECT id FROM work_requests
12
- WHERE state IN ('queued', 'blocked', 'running', 'waiting') AND legacy_agent_request_id IS NULL AND executor = 'dispatcher'
13
- AND ((deadline_at IS NOT NULL AND deadline_at <= ?) OR state = 'running')
14
- ORDER BY created_at ASC, id ASC
15
- `).all(n).map(e=>e.id)},enforceDue(e){let t=e??r(),n=[];for(let e of k.dueRequests(t)){let r=k.enforceRequest(e,t);r&&n.push(r)}return n},attemptDeadlineFor:(e,t)=>(0,D.attemptDeadline)((0,D.storedRetryPolicy)(e.retry_policy),e.deadline_at,t),attemptsUsed:p};return k}e.s(["ControlError",0,$,"createRequestControl",0,W],57281);let F="'grant_requested', 'grant_approved', 'grant_denied', 'grant_revoked'",j=Object.freeze({maxGlobal:4,maxPerTarget:1,leaseMs:6e4,heartbeatMs:15e3,deferMs:5e3,cancelGraceMs:3e4}),H={maxGlobal:"BOTMANCERS_DISPATCH_MAX_GLOBAL",maxPerTarget:"BOTMANCERS_DISPATCH_MAX_PER_TARGET",leaseMs:"BOTMANCERS_DISPATCH_LEASE_MS",heartbeatMs:"BOTMANCERS_DISPATCH_HEARTBEAT_MS",deferMs:"BOTMANCERS_DISPATCH_DEFER_MS",cancelGraceMs:"BOTMANCERS_DISPATCH_CANCEL_GRACE_MS"},P=Object.freeze({maxGlobal:j.maxGlobal,maxPerTarget:j.maxPerTarget});class U extends Error{requestId;constructor(e){super(`The dispatch lease for ${e} is no longer held.`),this.name="LeaseLostError",this.requestId=e}}let z=[{status:400,code:/.*/},{status:404,code:/^DECK_NOT_FOUND$/},{status:422,code:/^(WORKSPACE_[A-Z0-9_]+|PROFILE_UNSUPPORTED|RESUME_UNVERIFIED|FINALIZATION_INVALID)$/},{status:409,code:/^INDEX_DIRTY$/},{status:503,code:/^CLIENT_UNAVAILABLE$/}];function B(e){return z.some(t=>t.status===e.status&&t.code.test(e.code??""))}function G(e){switch(e.kind){case"no_grant":case"unauthorized":case"forbidden":return!0;case"rejected":return B(e);default:return!1}}function K(e){let t=e.correlation.attemptId;return t?`botmancers-attempt-${t}`:`botmancers-direct-${(0,s.randomUUID)()}`}function J(e,t){if(e instanceof c)return(0,a.attemptFailure)(e instanceof c?"agent_deck_token_missing"===e.code||"agent_deck_unauthorized"===e.code||"agent_deck_forbidden"===e.code||"agent_deck_unreachable"===e.code?"unavailable":"agent_deck_invalid_response"===e.code?"result_contract":t:t,`[${e.code}${e.deckCode?` ${e.deckCode}`:""}] ${e.message}`,e.code);return(0,a.attemptFailure)(t,e instanceof Error?e.message:String(e))}e.s(["LeaseLostError",0,U,"createDispatcher",0,function(e,t,n={}){let r=n.owner??`${N.default.hostname()}:${process.pid}:${(0,s.randomUUID)().slice(0,8)}`,i={...function(e=process.env){let t={...j};for(let n of Object.keys(H)){let r=e[H[n]];if(void 0===r||!/^\d+$/.test(r.trim()))continue;let i=Number(r.trim());Number.isSafeInteger(i)&&i>0&&(t[n]=i)}return t.maxGlobal=Math.min(t.maxGlobal,P.maxGlobal),t.maxPerTarget=Math.min(t.maxPerTarget,P.maxPerTarget),t}(),...n.config??{}},a=n.now??Date.now,o=W(e,t,{now:a,cancelGraceMs:i.cancelGraceMs}),d=e.prepare("SELECT COUNT(*) AS n FROM dispatch_leases"),l=e.prepare("SELECT COUNT(*) AS n FROM dispatch_leases WHERE target_agent_id = ?"),u=e.prepare("SELECT * FROM dispatch_attention WHERE request_id = ? AND cleared_at IS NULL"),c=e.prepare(`SELECT type, data FROM engine_events WHERE request_id = ? AND type NOT IN (${F}) ORDER BY sequence DESC LIMIT 1`),p=e.prepare(`
16
- SELECT w.id FROM work_requests w
17
- WHERE w.state = 'queued' AND w.executor = 'dispatcher'
18
- AND (SELECT e.type FROM engine_events e WHERE e.request_id = w.id AND e.type NOT IN (${F}) ORDER BY e.sequence DESC LIMIT 1) = 'dispatch_deferred'
19
- ORDER BY w.created_at ASC, w.id ASC
20
- `),_=e.prepare("SELECT 1 FROM dispatch_leases WHERE request_id = ? AND token = ?"),f=e.prepare("SELECT decision FROM wake_safety_decisions WHERE request_id = ? ORDER BY sequence DESC LIMIT 1"),m=e.prepare("SELECT status FROM wakes WHERE id = ?"),g=e.prepare(`
21
- SELECT w.id FROM work_requests w
22
- WHERE w.state = 'queued' AND w.legacy_agent_request_id IS NULL AND w.executor = 'dispatcher' AND w.id <> ?
23
- AND (w.created_at < ? OR (w.created_at = ? AND w.rowid < (SELECT rowid FROM work_requests WHERE id = ?)))
24
- AND (w.next_eligible_at IS NULL OR w.next_eligible_at <= ?)
25
- AND (w.deadline_at IS NULL OR w.deadline_at > ?)
26
- AND NOT EXISTS (SELECT 1 FROM dispatch_attention a WHERE a.request_id = w.id AND a.cleared_at IS NULL)
27
- AND (SELECT d.decision FROM wake_safety_decisions d WHERE d.request_id = w.id ORDER BY d.sequence DESC LIMIT 1) = 'allowed'
28
- AND (w.wake_event_id IS NULL OR EXISTS (SELECT 1 FROM wakes k WHERE k.id = w.wake_event_id AND k.status = 'accepted'))
29
- AND (SELECT COUNT(*) FROM dispatch_leases l WHERE l.target_agent_id = w.target_agent_id) < ?
30
- ORDER BY w.created_at ASC, w.rowid ASC
31
- LIMIT 1
32
- `);function h(e,n,r,s){let o=c.get(e.id);return(o?.type==="dispatch_deferred"&&o.data?JSON.parse(o.data).reason:null)!==n&&t.appendEvent(e.id,{type:"dispatch_deferred",data:{reason:n,active_global:r.global,active_target:r.target,max_global:i.maxGlobal,max_per_target:i.maxPerTarget,...s?{waiting_behind:s}:{}},now:a()}),s?{ok:!1,reason:n,blockedBy:s}:{ok:!1,reason:n}}function y(e){if(!_.get(e.requestId,e.token))throw new U(e.requestId)}let w={owner:r,config:i,now:a,control:o,claim:(n,c={})=>t.transaction(()=>{let p=t.getWorkRequest(n);if(!p||"queued"!==p.state||void 0!==c.expectedVersion&&p.version!==c.expectedVersion)return{ok:!1,reason:"not_queued"};let _=a();if(null!==p.deadline_at&&_>=p.deadline_at)return o.timeOut(n,_),{ok:!1,reason:"timed_out"};if(null!==p.next_eligible_at&&_<p.next_eligible_at)return{ok:!1,reason:"not_eligible"};if(u.get(n))return{ok:!1,reason:"attention"};let y=function(e){let t=f.get(e.id);if(t?.decision!=="allowed")return"The request has no allowed safety decision.";if(null!==e.wake_event_id){let t=m.get(e.wake_event_id);if(t?.status!=="accepted")return"The Wake that created this request was not accepted."}return null}(p);if(y)return t.transitionWorkRequest(n,{from:"queued",to:"failed",reason:"not_authorized",expectedVersion:p.version,errorCode:"not_authorized",errorMessage:y,now:_}),{ok:!1,reason:"not_authorized"};let w=(0,D.storedRetryPolicy)(p.retry_policy),k=o.attemptsUsed(p);if(k>=w.max_attempts)return t.transitionWorkRequest(n,{from:"queued",to:"failed",reason:"retries_exhausted",expectedVersion:p.version,errorCode:"retries_exhausted",errorMessage:"No Attempt is left in the retry budget.",data:{attempt_count:k,max_attempts:w.max_attempts},now:_}),{ok:!1,reason:"exhausted"};let v=d.get().n,E=l.get(p.target_agent_id).n;if(v>=i.maxGlobal)return h(p,"global_limit",{global:v,target:E});if(E>=i.maxPerTarget)return h(p,"target_limit",{global:v,target:E});let b=g.get(n,p.created_at,p.created_at,n,_,_,i.maxPerTarget);if(b)return h(p,"older_waiting",{global:v,target:E},b.id);let I={requestId:n,owner:r,token:(0,s.randomUUID)(),expiresAt:_+i.leaseMs};return e.prepare(`
33
- INSERT INTO dispatch_leases (request_id, target_agent_id, owner, token, acquired_at, heartbeat_at, expires_at)
34
- VALUES (?, ?, ?, ?, ?, ?, ?)
35
- `).run(n,p.target_agent_id,r,I.token,_,_,I.expiresAt),t.appendEvent(n,{type:"dispatch_claimed",data:{owner:r,lease_expires_at:I.expiresAt,active_global:v+1,active_target:E+1,attempt_number:k+1,max_attempts:w.max_attempts},now:_}),e.prepare("UPDATE work_requests SET attempt_count = ?, next_eligible_at = NULL WHERE id = ?").run(k+1,n),{ok:!0,lease:I,request:t.transitionWorkRequest(n,{from:"queued",to:"running",expectedVersion:p.version,data:c.data,now:_})}}),claimNext(t){let n=t??e.prepare(`
36
- SELECT id FROM work_requests WHERE state = 'queued' AND legacy_agent_request_id IS NULL AND executor = 'dispatcher'
37
- AND (next_eligible_at IS NULL OR next_eligible_at <= ?)
38
- ORDER BY created_at ASC, rowid ASC
39
- `).all(a()).map(e=>e.id),r="not_queued";for(let e of n){let t=w.claim(e);if(t.ok||"global_limit"===t.reason)return t;("target_limit"===t.reason||"older_waiting"===t.reason)&&(r=t.reason)}return{ok:!1,reason:r}},recordLaunchIntent:(n,i,o,d)=>t.transaction(()=>{y(n);let l=a(),u=d?(0,s.createHash)("sha256").update(d.body).digest("hex"):null;return e.prepare(`
40
- INSERT INTO attempt_launch_intents (attempt_id, request_id, transport, idempotency_key, body, body_hash, grant_fingerprint, owner, created_at)
41
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
42
- `).run(i,n.requestId,o,d?.idempotencyKey??null,d?.body??null,u,d?.grantFingerprint??null,r,l),t.appendEvent(n.requestId,{type:"launch_intent_recorded",attemptId:i,data:{transport:o,idempotency_key:d?.idempotencyKey??null,body_hash:u,grant_fingerprint:d?.grantFingerprint??null},now:l}),w.launchIntent(i)}),launchIntent:t=>e.prepare("SELECT * FROM attempt_launch_intents WHERE attempt_id = ?").get(t),heartbeat(t){let n=a(),r=n+i.leaseMs,s=1===e.prepare("UPDATE dispatch_leases SET heartbeat_at = ?, expires_at = ? WHERE request_id = ? AND token = ?").run(n,r,t.requestId,t.token).changes;return s&&(t.expiresAt=r),s},holds:e=>!!_.get(e.requestId,e.token),assertHeld(e){y(e)},release(n,i){t.transaction(()=>{y(n),e.prepare("DELETE FROM dispatch_leases WHERE request_id = ? AND token = ?").run(n.requestId,n.token),t.appendEvent(n.requestId,{type:"dispatch_released",data:{owner:r,outcome:i},now:a()})})},defer(n,s,o=null){t.transaction(()=>{y(n);let d=a();n.expiresAt=d+i.deferMs,e.prepare("UPDATE dispatch_leases SET heartbeat_at = ?, expires_at = ? WHERE request_id = ? AND token = ?").run(d,n.expiresAt,n.requestId,n.token),t.appendEvent(n.requestId,{type:"reconcile_deferred",attemptId:o,data:{owner:r,reason:s,retry_at:n.expiresAt},now:d})})},setAttention:(n,i)=>t.transaction(()=>{y(n);let o=a(),d=(0,s.randomUUID)();e.prepare("INSERT INTO dispatch_attention (id, request_id, attempt_id, reason, detail, created_at) VALUES (?, ?, ?, ?, ?, ?)").run(d,n.requestId,i.attemptId,i.reason,i.detail??null,o),t.appendEvent(n.requestId,{type:"attention_set",attemptId:i.attemptId,data:{reason:i.reason,detail:i.detail??null},now:o});let l=t.getWorkRequest(n.requestId);return l?.state==="running"&&t.transitionWorkRequest(n.requestId,{from:"running",to:"waiting",reason:`manual_attention:${i.reason}`,now:o}),e.prepare("DELETE FROM dispatch_leases WHERE request_id = ? AND token = ?").run(n.requestId,n.token),t.appendEvent(n.requestId,{type:"dispatch_released",data:{owner:r,outcome:"attention"},now:o}),u.get(n.requestId)}),attention:e=>u.get(e),recoverable(){let t=a(),n=[];for(let i of e.prepare("SELECT request_id, owner, token, expires_at FROM dispatch_leases ORDER BY acquired_at ASC, request_id ASC").all()){if(i.owner===r&&i.expires_at>t)continue;let e=i.expires_at<=t?"lease_expired":!function(e){let t=/^(.*):(\d+):[^:]+$/.exec(e);if(!t||t[1]!==N.default.hostname())return!1;let n=Number(t[2]);if(n===process.pid)return!1;try{return process.kill(n,0),!1}catch(e){return"ESRCH"===e.code}}(i.owner)?null:"owner_exited";e&&n.push({requestId:i.request_id,reason:e,priorToken:i.token,priorOwner:i.owner})}for(let t of e.prepare(`
43
- SELECT w.id FROM work_requests w
44
- WHERE w.state = 'running' AND w.legacy_agent_request_id IS NULL AND w.executor = 'dispatcher'
45
- AND NOT EXISTS (SELECT 1 FROM dispatch_leases l WHERE l.request_id = w.id)
46
- AND NOT EXISTS (SELECT 1 FROM dispatch_attention a WHERE a.request_id = w.id AND a.cleared_at IS NULL)
47
- ORDER BY w.updated_at ASC, w.id ASC
48
- `).all())n.push({requestId:t.id,reason:"unleased_running",priorToken:null,priorOwner:null});return n},takeOver:n=>t.transaction(()=>{let o=a(),d={requestId:n.requestId,owner:r,token:(0,s.randomUUID)(),expiresAt:o+i.leaseMs};if(n.priorToken){let t="lease_expired"===n.reason?"AND expires_at <= ?":"",i=[r,d.token,o,o,d.expiresAt,n.requestId,n.priorToken];if(t&&i.push(o),1!==e.prepare(`
49
- UPDATE dispatch_leases SET owner = ?, token = ?, acquired_at = ?, heartbeat_at = ?, expires_at = ?
50
- WHERE request_id = ? AND token = ? ${t}
51
- `).run(...i).changes)return null}else{let i=t.getWorkRequest(n.requestId);if(!i||"running"!==i.state||e.prepare("SELECT 1 FROM dispatch_leases WHERE request_id = ?").get(n.requestId)||u.get(n.requestId))return null;e.prepare(`
52
- INSERT INTO dispatch_leases (request_id, target_agent_id, owner, token, acquired_at, heartbeat_at, expires_at)
53
- VALUES (?, ?, ?, ?, ?, ?, ?)
54
- `).run(n.requestId,i.target_agent_id,r,d.token,o,o,d.expiresAt)}return t.appendEvent(n.requestId,{type:"dispatch_lease_taken_over",data:{owner:r,previous_owner:n.priorOwner,reason:n.reason},now:o}),d}),deferredRequestIds:()=>p.all().map(e=>e.id),leaseOf:t=>e.prepare("SELECT owner, token, expires_at FROM dispatch_leases WHERE request_id = ?").get(t)};return w},"decideRepostResult",0,function(e){switch(e.kind){case"accepted":return{action:"reattach"};case"unreachable":return{action:"defer",reason:"unreachable"};case"unauthorized":case"forbidden":case"no_grant":return{action:"attention",reason:"grant"};case"rejected":if(409===e.status&&"IDEMPOTENCY_CONFLICT"===e.code)return{action:"attention",reason:"idempotency_conflict"};if(B(e))return{action:"fail",category:"launch_failed",code:e.code??String(e.status)};if(null!==e.status&&e.status>=500)return{action:"defer",reason:"server_error"};return{action:"attention",reason:"unrecognized_response"};default:return{action:"attention",reason:"unrecognized_response"}}},"decideWithRunId",0,function(e){switch(e.kind){case"run":if("died"===e.state)return{action:"interrupted_attention",reason:"run_died"};return{action:"reattach"};case"not_found":return{action:"attention",reason:"run_not_found"};case"unauthorized":return{action:"attention",reason:"grant_expired"};case"forbidden":return{action:"attention",reason:"grant_scope"};case"no_grant":return{action:"attention",reason:"grant_unavailable"};case"unreachable":return{action:"defer",reason:"unreachable"};case"rejected":if(null!==e.status&&e.status>=500)return{action:"defer",reason:"server_error"};return{action:"attention",reason:"unrecognized_response"};default:return{action:"attention",reason:"unrecognized_response"}}},"decideWithoutRunId",0,function(e){return e.reconcilable?e.intent?.body&&e.intent.idempotency_key?e.currentGrantFingerprint?e.intent.grant_fingerprint!==e.currentGrantFingerprint?{action:"attention",reason:"grant_mismatch"}:{action:"repost"}:{action:"attention",reason:"grant_unavailable"}:{action:"attention",reason:"launch_intent_missing"}:{action:"interrupted",reason:"runtime_unobservable"}},"dispatchFault",0,function(e,t){},"launchRejectedBeforeWork",0,G],54226);let V=e=>l.includes(e);async function X(e){let t={state:"starting",result:null,resultMismatch:null,sessionId:null,usage:null},n=[],r=null;for(;;){let i=await S(e,r);for(let e of i.events)(0,C.usageFromEvent)(e)&&n.push(e),"sessionId"in e&&"string"==typeof e.sessionId&&e.sessionId&&(t.sessionId=e.sessionId),"result"===e.type&&("string"==typeof e.result&&e.result.length>0?(t.result=e.result,t.resultMismatch=null):(t.result=null,t.resultMismatch=null===e.result?"null":Array.isArray(e.result)?"array":""===e.result?"empty string":typeof e.result));t.state=i.state;let a=i.nextCursor!==(r??"0")&&i.events.length>0;if(r=i.nextCursor,V(i.state)&&!a)return t.usage=(0,C.usageFromEvents)(n),t;a||await new Promise(e=>setTimeout(e,1e3))}}async function Y(e,t){if(!t?.finalization)return{baselineRef:null,baselineDigest:null,candidate:{ok:!1,code:"FINALIZATION_NOT_PREPARED",message:"The run reported no finalization baseline."}};let n={baselineRef:t.finalization.baselineRef,baselineDigest:t.finalization.baselineDigest};try{let r=await x(e);if(r.baselineRef!==t.finalization.baselineRef||r.baselineDigest!==t.finalization.baselineDigest)return{...n,candidate:{ok:!1,code:"BASELINE_MISMATCH",message:"Agent Deck returned candidate evidence for a different baseline."}};return{...n,candidate:{ok:!0,manifest:{baselineRef:r.baselineRef,baselineDigest:r.baselineDigest,baseCommit:r.baseCommit,manifestDigest:r.manifestDigest,files:r.files}}}}catch(r){let e=r instanceof c?r.deckCode??r.code:"agent_deck_invalid_response",t=r instanceof c?r.message:"The candidate manifest could not be read.";return{...n,candidate:{ok:!1,code:e,message:t}}}}function Z(e){let t;if("readonly"!==e.toolProfile&&"edit"!==e.toolProfile)return{ok:!1,failure:(0,a.attemptFailure)("unsupported_authority",`Unsupported tool profile: ${JSON.stringify(String(e.toolProfile))}.`)};if(e.prepareFinalization&&"edit"!==e.toolProfile)return{ok:!1,failure:(0,a.attemptFailure)("unsupported_authority","Only an edit Attempt can prepare Git finalization.")};if(!e.deck)return{ok:!1,failure:(0,a.attemptFailure)("unavailable","An Agent Deck run requires a deck.")};if(!e.cwd)return{ok:!1,failure:(0,a.attemptFailure)("unavailable","An Agent Deck run requires a working directory.")};try{t=(0,T.parseDeckRuntime)(e.target.agent)}catch(e){return{ok:!1,failure:(0,a.attemptFailure)("unavailable",e instanceof Error?e.message:String(e))}}let n=e.sessionBinding?.externalSessionId??null;return{ok:!0,body:{deckId:e.deck,client:t,cwd:e.cwd,prompt:(0,T.deckPromptForAttempt)(e.prompt),tools:e.toolProfile,...n?{resumeSessionId:n}:{},...!0===e.prepareFinalization?{prepareFinalization:!0}:{}}}}function Q(e){if(!(e instanceof c))return{kind:"rejected",status:null,code:null};switch(e.code){case"agent_deck_token_missing":return{kind:"no_grant"};case"agent_deck_unauthorized":return{kind:"unauthorized"};case"agent_deck_forbidden":return{kind:"forbidden"};case"agent_deck_unreachable":return{kind:"unreachable"};default:if(404===e.status&&("RUN_NOT_FOUND"===e.deckCode||null===e.deckCode))return{kind:"not_found"};return{kind:"rejected",status:e.status,code:e.deckCode}}}let ee="agent-deck-api";function et(e){let t=t=>({adapter:ee,externalRunId:null,externalSessionId:null,output:null,artifacts:[],startedAt:e,finishedAt:Date.now(),failure:null,...t});return{result:t,failed:(e,n={})=>t({status:"failed",failure:e,...n})}}async function en(e,t,n,r){let{result:i,failed:s}=et(r),o=t.resumeSessionId,d=t.prepareFinalization,l=(0,a.interruption)({signal:t.signal??null,deadlineAt:t.deadlineAt}),u={externalRunId:e};try{if(d)try{let t=await A(e);t.finalization&&n?.({type:"progress",adapter:ee,at:Date.now(),detail:{phase:"finalization_prepared",baseline_ref:t.finalization.baselineRef,baseline_digest:t.finalization.baselineDigest}})}catch{}let t=X(e);t.catch(()=>{});let r=await Promise.race([t.then(e=>({observed:e}),e=>({error:e})),l.promise.then(e=>({interrupted:e}))]);if("interrupted"in r){let t="requested";try{await q(e)}catch{t="failed"}return s(r.interrupted,{...u,externalCancel:t})}if("error"in r){let t="requested";try{await q(e)}catch{t="failed"}return s(J(r.error,"runtime_failed"),{...u,externalCancel:t})}let{observed:c}=r,p=null;try{p=await A(e)}catch(e){if(!d)return s(J(e,"runtime_failed"),{...u,usage:c.usage})}let _=p?.sessionId??c.sessionId,f=d?await Y(e,p):void 0,m={...u,externalSessionId:_,usage:c.usage,...f?{finalization:f}:{}};if("canceled"===c.state)return s((0,a.attemptFailure)("cancelled",`Agent Deck run ${e} was canceled.`),m);if("ended"!==c.state)return s((0,a.attemptFailure)("runtime_failed",`Agent Deck run ${e} ended in state ${c.state}.`),m);if(null===c.result)return s((0,a.attemptFailure)("result_contract",`Agent Deck run ${e} result contract mismatch: expected a non-empty string result, got ${c.resultMismatch??"no result event"}.`),m);if(o&&null!==_&&_!==o)return s((0,a.attemptFailure)("session_mismatch",`resume run ${e} forked the session (expected ${o}, got ${_}); failing closed.`),m);let g=f?.candidate?.ok?f.candidate.manifest:null;return i({status:"completed",...m,externalSessionId:_??o,output:c.result,artifacts:g?[{kind:"candidate_manifest",ref:g.manifestDigest}]:[]})}finally{l.dispose()}}let er={currentGrantFingerprint:f,async inspect(e){try{let t=await A(e);return{kind:"run",state:t.state}}catch(e){return Q(e)}},async repost(e){let t;try{t=JSON.parse(e.body)}catch{return{kind:"rejected",status:null,code:"INTENT_UNREADABLE"}}try{let n=await I(t,e.idempotencyKey);return{kind:"accepted",runId:n.runId}}catch(e){return Q(e)}},follow:(e,t,n)=>en(e,t,n,Date.now()),async evidence(e){let t=null;try{t=await A(e)}catch{}return Y(e,t)},async cancel(e){try{return await q(e),"requested"}catch{return"failed"}}};var ei=e.i(64974);class ea extends Error{code;constructor(e,t){super(t),this.name="DispatchFailure",this.code=e}}let es={"hermes-gateway":()=>(function(e={}){let t="hermes-gateway";return{name:t,async run(n,r){let s=Date.now(),o=(e,n=null)=>({status:"failed",adapter:t,externalRunId:null,externalSessionId:n,output:null,artifacts:[],startedAt:s,finishedAt:Date.now(),failure:e});if("readonly"!==n.toolProfile)return o((0,a.attemptFailure)("unsupported_authority",`The Hermes gateway does not support the ${n.toolProfile} tool profile.`));let d=(e.loadConfig??i.loadHermesConfig)();if(!d)return o((0,a.attemptFailure)("unavailable","The Hermes gateway is not configured."));let l=(0,a.preLaunchInterruption)(n);if(l)return o(l);if(n.freshSession&&n.sessionBinding)return o((0,a.attemptFailure)("session_mismatch","A fresh-session turn cannot resume a session."));let u=n.sessionBinding?.externalSessionId??(n.freshSession?(0,i.hermesFreshSessionIdForBot)(n.target.agentId,d):(0,i.hermesSessionIdForBot)(n.target.agentId,d)),c=new AbortController,p=(0,a.interruption)(n),_=null;p.promise.then(e=>{_=e,c.abort()}),r?.({type:"started",adapter:t,at:Date.now(),externalRunId:null,externalSessionId:u});try{var f;let r=await (0,i.hermesChat)({config:d,profilePath:n.target.hermesProfilePath||i.HERMES_DEFAULT_CHAT_PATH,sessionId:u,messages:(f=n.prompt,"text"===f.kind?[{role:"user",content:f.text}]:[{role:"system",content:f.system},...f.history.map(e=>e.fromAgent?{role:"assistant",content:e.content}:{role:"user",content:`[From ${e.speakerLabel}] ${e.content}`})]),signal:c.signal,...e.fetchImpl?{fetchImpl:e.fetchImpl}:{}});return{status:"completed",adapter:t,externalRunId:null,externalSessionId:u,output:r,artifacts:[],startedAt:s,finishedAt:Date.now(),failure:null}}catch(r){let e=r instanceof i.HermesError?r.code:"unknown";if(_)return o({..._,code:e},u);let t="timeout"===e?"timed_out":"runtime_failed",n=r instanceof i.HermesError&&void 0!==r.status?` ${r.status}`:"";return o((0,a.attemptFailure)(t,`The Hermes gateway did not complete the turn (${e}${n}).`,e),u)}finally{p.dispose()}}}})({fetchImpl:null}),"agent-deck-run":()=>({name:ee,reconciler:er,externalCancel:!0,launchIntent(e){let t=Z(e);return t.ok?{idempotencyKey:K(e),body:JSON.stringify(t.body),grantFingerprint:f()}:null},async run(e,t){let n,r=Date.now(),{failed:i}=et(r),s=Z(e);if(!s.ok)return i(s.failure);let o=(0,a.preLaunchInterruption)(e);if(o)return i(o);try{n=(await I(s.body,K(e))).runId}catch(t){let e=G(Q(t));return i(J(t,"launch_failed"),e?{}:{launchUnconfirmed:!0})}return t?.({type:"started",adapter:ee,at:Date.now(),externalRunId:n,externalSessionId:null}),en(n,{resumeSessionId:e.sessionBinding?.externalSessionId??null,prepareFinalization:!0===e.prepareFinalization,deadlineAt:e.deadlineAt??null,signal:e.signal??null},t,r)}})},eo=["agent_deck_token_missing","agent_deck_unauthorized","agent_deck_forbidden","agent_deck_unreachable"];function ed(e){return"completed"===e.status?"succeeded":e.failure?.category==="cancelled"?"cancelled":e.failure?.category==="timed_out"?"timed_out":"failed"}function el(e,t,n){(function(e){if(e.usage||"completed"===e.status||e.externalRunId)return!0;let t=e.failure?.category;return void 0!==t&&!["unavailable","unsupported_authority","launch_failed"].includes(t)})(n)&&e.recordAttemptUsage(t,{usage:n.usage??null,observedAt:n.finishedAt})}function eu(e,t,n){return el(e,t,n),e.finishAttempt(t,{outcome:ed(n),output:n.output,errorCategory:n.failure?.category??null,errorMessage:n.failure?.message??null,artifacts:n.artifacts,...n.externalRunId?{externalRunId:n.externalRunId}:{},...n.externalSessionId?{externalSessionId:n.externalSessionId}:{},now:n.finishedAt})}function ec(e,t,n,r=Date.now()){el(e,t.id,n);let i=e.getWorkRequest(t.request_id);e.appendEvent(t.request_id,{type:"late_result_recorded",attemptId:t.id,data:{attempt_number:t.attempt_number,attempt_outcome:t.outcome,result_status:n.status,result_outcome:ed(n),error_category:n.failure?.category??null,external_run_id:n.externalRunId,output:n.output,request_state:i?.state??null},now:r})}async function ep(e,t,n,r={}){let i,s=!1,o=!1;try{i=await n.run(t.input,n=>{var i,a;if("started"===n.type&&(o=!0),s||(i=t.attempt,a=r.fence,!e.transaction(()=>(!a||!!a())&&("started"===n.type?((n.externalRunId||n.externalSessionId)&&e.recordAttemptExternalIds(i.id,{...n.externalRunId?{externalRunId:n.externalRunId}:{},...n.externalSessionId?{externalSessionId:n.externalSessionId}:{}}),e.appendEvent(i.request_id,{type:"runtime_started",attemptId:i.id,data:{adapter:n.adapter,external_run_id:n.externalRunId},now:n.at})):e.appendEvent(i.request_id,{type:"runtime_progress",attemptId:i.id,data:{adapter:n.adapter,...n.detail},now:n.at}),!0)))){s=!0;return}r.onEvent?.(n)})}catch(r){let e=Date.now();i={status:"failed",adapter:n.name,externalRunId:null,externalSessionId:null,output:null,artifacts:[],startedAt:t.attempt.started_at,finishedAt:e,failure:(0,a.attemptFailure)("runtime_failed",r instanceof Error?r.message:String(r))}}return r.sanitize&&(i=r.sanitize(i)),e.transaction(()=>{let a=e.getAttempt(t.attempt.id);if(a&&null!==a.finished_at)return ec(e,a,i),{attempt:a,result:i,projected:void 0,late:!0,abandoned:null};let s=o?e_(t.attempt,n,t.input.signal??null,i):null,d=s?ef(e,s,i):eu(e,t.attempt.id,i),l=r.project?r.project(i,d):void 0;return{attempt:d,result:i,projected:l,late:!1,abandoned:s}})}function e_(e,t,n,r){if("failed"!==r.status)return null;let i=r.failure?.category,a="failed"===r.externalCancel,s={requestId:e.request_id,attemptId:e.id,externalRunId:r.externalRunId,transport:t.name};return"cancelled"!==i&&"timed_out"!==i?a?{...s,reason:"observation_lost",externalCancel:"failed"}:null:("cancelled"!==i||n?.aborted)&&(!t.externalCancel||a)?{...s,reason:i,externalCancel:a?"failed":null}:null}function ef(e,t,n){el(e,t.attemptId,n);let r="failed"===t.externalCancel?"The runtime did not accept the cancel request":"The runtime cannot stop the run",i=e.finishAttempt(t.attemptId,{outcome:ed(n),errorCategory:"abandoned",errorMessage:`${n.failure?.message??"The attempt was interrupted."} ${r}; it may continue and a later result is not awaited.`.slice(0,500),artifacts:n.artifacts,...n.externalRunId?{externalRunId:n.externalRunId}:{},...n.externalSessionId?{externalSessionId:n.externalSessionId}:{},now:n.finishedAt});return t.externalRunId=i.external_run_id,e.appendEvent(t.requestId,{type:"attempt_abandoned",attemptId:t.attemptId,data:{reason:t.reason,attempt_number:i.attempt_number,external_run_id:i.external_run_id,transport:t.transport,local_only:!0,error_code:n.failure?.code??null,external_cancel:t.externalCancel},now:n.finishedAt}),i}e.s(["DispatchFailure",0,ea,"adapterForTransport",0,function(e){return"hermes-gateway"===e?es["hermes-gateway"]():"agent-deck-api"===e?es["agent-deck-run"]():null},"agentForDispatch",0,function(e){return(0,r.resolveAgent)(e).agent},"dispatchFailureFor",0,function(e){var t;let n,r=e.failure?.category??"runtime_failed";if("hermes-gateway"===e.adapter)return"unavailable"===r?new ea("agent_unavailable","The agent runtime is not configured."):new ea("runtime_failed",`The agent runtime did not complete the turn (${e.failure?.code??"unknown"}).`);let i="agent-deck-api"===e.adapter?(t=e,(n=t.failure?.code)&&eo.includes(n)?n:null):null;return i?new ea("agent_unavailable",`${p[i]} [${i}]`):"unavailable"===r?new ea("agent_unavailable","The agent runtime is not available."):"cancelled"===r?new ea("runtime_failed","The agent run was cancelled."):"launch_failed"===r?new ea("runtime_failed","The agent runtime did not start the turn."):new ea("runtime_failed","The agent runtime did not complete the turn.")},"prepareDispatch",0,function(e){var a,s;let d,l,u=(0,r.resolveAgent)(e.bot);if(!u.launchable||"agent_deck"===u.launch_profile&&!u.deck_id)throw new ea("agent_unavailable","launch_profile"===(a=u.launch_blocker)?"The agent has no launch profile chosen.":"session_scope"===a?"The agent has no session scope.":"direct_runtime"===a?"Direct launch is not available for this agent yet.":"The agent has no Agent Deck selected.");let c={prompt:{kind:"conversation",system:(l=(s=e.bot).title?`${s.name} (${s.title})`:s.name,`You are ${l}.
55
- ${s.description}`),history:e.history},deck:u.deck_id,toolProfile:e.toolProfile??ei.TOOL_PROFILE_FOR_KIND.conversation,sessionBinding:e.sessionBinding??null,correlation:{},...e.freshSession?{freshSession:!0}:{}};if("hermes-gateway"===(0,r.agentTransport)(u.agent))return{agent:u.agent,adapter:es["hermes-gateway"](),input:{...c,target:{agentId:e.bot.id,agent:u.agent,hermesProfilePath:(0,i.hermesProfilePathForBot)(e.bot)},cwd:null}};try{d=(0,o.resolveAndEnsureBotWorkdir)(e.bot.id,u.working_directory)}catch{throw new ea("agent_unavailable","The agent working directory is unavailable.")}return{agent:u.agent,adapter:es["agent-deck-run"](),input:{...c,target:{agentId:e.bot.id,agent:u.agent},cwd:d,...e.prepareFinalization&&"edit"===c.toolProfile&&function(e){let r=n.default.resolve(e);for(;;){if(t.default.existsSync(n.default.join(r,".git")))return!0;let e=n.default.dirname(r);if(e===r)return!1;r=e}}(d)?{prepareFinalization:!0}:{}}}}],27510),e.s(["abandonedLocally",0,e_,"beginAttempt",0,function(e,t,n){let r=n.input.sessionBinding;if(r&&!r.bindingId)throw new O.EngineStoreError("invalid_input","A persisted resume attempt names its Session Binding.");if(r&&n.input.freshSession)throw new O.EngineStoreError("invalid_input","A fresh-session attempt cannot resume a Session Binding.");let i=e.createAttempt(t,{kind:r?"resume":"launch",adapter:n.agent,toolProfile:n.input.toolProfile,launchSnapshot:function(e){let{input:t}=e;return{...e.snapshot??{},agent:e.agent,agent_id:t.target.agentId,transport:e.adapter.name,deck:t.deck,cwd:t.cwd,tool_profile:t.toolProfile,hermes_profile_path:t.target.hermesProfilePath??null,prompt_kind:t.prompt.kind,prompt_hash:(0,s.createHash)("sha256").update(JSON.stringify(t.prompt)).digest("hex"),session_binding_id:t.sessionBinding?.bindingId??null,prepare_finalization:!0===t.prepareFinalization,fresh_session:!0===t.freshSession,deadline_at:t.deadlineAt??null}}(n),resumedSessionBindingId:r?.bindingId??null,now:n.now});return{attempt:i,input:(0,a.freezeAttemptInput)({...n.input,correlation:{...n.input.correlation,requestId:t,attemptId:i.id}})}},"recordAbandonedResult",0,ef,"recordAttemptResult",0,eu,"recordLateResult",0,ec,"runAttempt",0,ep],53059)},76459,e=>{"use strict";var t=e.i(54799),n=e.i(62294),r=e.i(35613),i=e.i(64974),a=e.i(142);let s={invalid_request:400,conversation_not_found:404,conversation_not_writable:409,target_not_found:404,idempotency_conflict:409,unknown_principal:403,intake_failed:500};class o extends Error{code;constructor(e,t){super(t),this.name="IntakeError",this.code=e}get status(){return s[this.code]}}let d={ui:["bot","group"],api:["agent"]};function l(e){return"string"==typeof e&&e.trim().length>0}function u(e,t,r){n.default.prepare("INSERT OR IGNORE INTO conversation_participants (conversation_id, participant_kind, participant_id, joined_at) VALUES (?, ?, ?, ?)").run(e,t.kind,t.id,r)}function c(e,r,i,a,s,o){let d=(0,t.randomUUID)();return n.default.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, content, handoff_targets, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(d,r,"bot"===i.kind?"bot":"user","ui"===e?null:i.id,i.kind,a,s&&s.length>0?JSON.stringify(s):null,o),d}function p(e){return e.map(e=>n.engine.getWorkRequest(e)).filter(e=>!!e)}e.s(["IntakeError",0,o,"acceptConversationMessage",0,function(e){var s,_;let f,m;if(!e.requester||!["person","bot","service"].includes(e.requester.kind)||!l(e.requester.id))throw new o("invalid_request","A requester principal is required.");if("unknown"===(0,a.categorizeIntakeCaller)(e.surface,e.requester))throw new o("unknown_principal","The caller is not a recognized principal.");if(!l(e.content))throw new o("invalid_request","content is required.");if(!l(e.idempotencyKey)||e.idempotencyKey.length>200)throw new o("invalid_request","An idempotency key (1-200 characters) is required.");let g=(s=e.surface,_=e.fingerprint,(0,t.createHash)("sha256").update(JSON.stringify([s,_??null])).digest("hex"));try{f=function(e,r){let{surface:s,requester:_}=e;return n.default.transaction(()=>{let f,m=n.default.prepare("SELECT * FROM conversation_intakes WHERE requester_kind = ? AND requester_id = ? AND idempotency_key = ?").get(_.kind,_.id,e.idempotencyKey);if(m){var g;if(m.request_hash!==r)throw new o("idempotency_conflict","The idempotency key was already used with a different payload.");let e=JSON.parse(m.work_request_ids);return{surface:m.surface,conversationId:m.conversation_id,acceptedMessageId:m.source_event_id,requestIds:e,requests:p(e),replayed:!0}}let h=Date.now();if("id"in e.conversation){let t=n.default.prepare("SELECT * FROM conversations WHERE id = ?").get(e.conversation.id);if(!t||(g=t.id,!n.default.prepare("SELECT 1 FROM conversation_participants WHERE conversation_id = ? AND participant_kind = ? AND participant_id = ?").get(g,_.kind,_.id)))throw new o("conversation_not_found","No conversation with that id is visible to this requester.");if(!d[s].includes(t.type))throw new o("conversation_not_writable","api"===s?"UI conversations are written through the UI compatibility routes.":"Agent conversations are written through the agent conversation API.");f=t}else{if("api"!==s)throw new o("invalid_request","Only the agent conversation API opens new conversations.");f={id:(0,t.randomUUID)(),type:"agent",origin_kind:_.kind,origin_id:_.id,created_at:h},n.default.prepare("INSERT INTO conversations (id, type, origin_kind, origin_id, created_at) VALUES (?, ?, ?, ?, ?)").run(f.id,f.type,_.kind,_.id,h),u(f.id,_,h)}let y=e.route(f),w=new Set,k=[];for(let e of y.deliveries){let t=e.conversationId??f.id,r=`${t}:${e.agentId}`;if(!w.has(r)){if(w.add(r),!l(e.agentId)||!n.bots.getById(e.agentId))throw new o("target_not_found","No registered agent has that id.");if("bot"===_.kind&&_.id===e.agentId)throw new o("invalid_request","An agent cannot address itself.");if(t!==f.id&&!n.default.prepare("SELECT 1 FROM conversations WHERE id = ?").get(t))throw new o("target_not_found","The target conversation does not exist.");k.push({agentId:e.agentId,conversationId:t})}}let v=new Map;for(let t of(v.set(f.id,c(s,f.id,_,e.content,y.handoffTargets,h)),k))v.has(t.conversationId)||v.set(t.conversationId,c(s,t.conversationId,_,e.content,y.handoffTargets,h));let E=(0,i.selectExecutionPolicy)({entryPoint:s,executionKind:"conversation"});if(!E.ok)throw new o("invalid_request",E.reason);let b=E.policy,I=(0,a.categorizeIntakeCaller)(s,_);if("unknown"===I)throw new o("unknown_principal","The caller is not a recognized principal.");let A={safety_version:a.WAKE_SAFETY_VERSION,root_principal:{kind:_.kind,id:_.id},wake_depth:0,grant_rule:"readonly_default",grant_id:null},S=[];for(let t of k){u(t.conversationId,{kind:"bot",id:t.agentId},h);let r=1===k.length?e.idempotencyKey:`${e.idempotencyKey}#${t.conversationId}:${t.agentId}`,{request:i}=n.engine.createOrGetWorkRequest({sourceConversationId:t.conversationId,sourceEventId:v.get(t.conversationId),requester:_,targetAgentId:t.agentId,intent:e.content,executionKind:b.execution_kind,toolProfile:b.tool_profile,idempotencyKey:r,policy:{source:"conversation_intake",surface:s},executionPolicy:b,rootPrincipal:_,wakeDepth:0,safetySnapshot:A,safety:{principalType:I,principal:_,decision:"allowed",grantRule:"readonly_default",snapshot:A,now:h},executor:e.executor,now:h});S.push(i.id)}for(let[e,t]of v){let r=k.flatMap((t,n)=>t.conversationId===e?[S[n]]:[]);1===r.length&&n.default.prepare("UPDATE messages SET request_id = ? WHERE id = ?").run(r[0],t)}return n.default.prepare(`
56
- INSERT INTO conversation_intakes (
57
- requester_kind, requester_id, idempotency_key, request_hash, surface,
58
- conversation_id, source_event_id, work_request_ids, created_at
59
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
60
- `).run(_.kind,_.id,e.idempotencyKey,r,s,f.id,v.get(f.id),JSON.stringify(S),h),e.beforeCommit?.(),{surface:s,conversationId:f.id,acceptedMessageId:v.get(f.id),requestIds:S,requests:p(S),replayed:!1}}).immediate()}(e,g)}catch(e){if(e instanceof o)throw e;if(e instanceof r.EngineStoreError&&"idempotency_conflict"===e.code)throw new o("idempotency_conflict","The idempotency key was already used with a different payload.");throw console.error("Conversation intake failed:",e),new o("intake_failed","The message could not be accepted.")}let h=e.dispatch;try{m=h(f)}catch(e){m=Promise.reject(e)}let y=Promise.resolve(m).catch(e=>{console.error("Intake dispatch failed:",e)});return{...f,dispatched:y}},"getAcceptedMessage",0,function(e){return n.default.prepare("SELECT * FROM messages WHERE id = ?").get(e)}])},39872,17834,40712,e=>{"use strict";var t=e.i(62294),n=e.i(64974),r=e.i(54799),i=e.i(62349),a=e.i(51749);let s=new Set(["version","target","executionKind","objective","contextWorkRequests","resumeWorkRequest","limits"]),o=new Set(["maxAttempts","deadlineSeconds"]),d=new Set(["conversation","implementation","review","revision"]);function l(e,t){return"string"==typeof e&&e.trim().length>0&&e.length<=t}function u(e,t,n){return Number.isInteger(e)&&e>=t&&e<=n}function c(e){if(!e||"object"!=typeof e||Array.isArray(e))return{ok:!1,reason:"envelope must be a JSON object"};let t=Object.keys(e).filter(e=>!s.has(e));if(t.length>0)return{ok:!1,reason:`unknown field ${t.join(", ")}`};if(1!==e.version)return{ok:!1,reason:"version must be 1"};if(!l(e.target,120))return{ok:!1,reason:"target must be a non-empty Agent name (max 120 characters)"};if("string"!=typeof e.executionKind||!d.has(e.executionKind))return{ok:!1,reason:"unknown executionKind"};if(!l(e.objective,2e4))return{ok:!1,reason:"objective must be non-empty (max 20000 characters)"};let n={version:1,target:e.target.trim(),executionKind:e.executionKind,objective:e.objective.trim()};if(void 0!==e.contextWorkRequests){let t=e.contextWorkRequests;if(!Array.isArray(t)||t.length>8||t.some(e=>!l(e,160)))return{ok:!1,reason:"contextWorkRequests must be at most 8 Work Request references"};if(new Set(t).size!==t.length)return{ok:!1,reason:"contextWorkRequests must be unique"};n.contextWorkRequests=[...t]}let r=Object.prototype.hasOwnProperty.call(e,"resumeWorkRequest");if("revision"===n.executionKind){if(!r||!l(e.resumeWorkRequest,160))return{ok:!1,reason:"revision requires resumeWorkRequest"};n.resumeWorkRequest=e.resumeWorkRequest}else if(r)return{ok:!1,reason:"resumeWorkRequest is revision-only"};if(void 0!==e.limits){let t=e.limits;if(!t||"object"!=typeof t||Array.isArray(t))return{ok:!1,reason:"limits must be an object"};if(Object.keys(t).some(e=>!o.has(e)))return{ok:!1,reason:"unknown limits field"};if(void 0!==t.maxAttempts&&!u(t.maxAttempts,1,10))return{ok:!1,reason:"limits.maxAttempts must be 1-10"};if(void 0!==t.deadlineSeconds&&!u(t.deadlineSeconds,1,86400))return{ok:!1,reason:"limits.deadlineSeconds must be 1-86400"};n.limits={},void 0!==t.maxAttempts&&(n.limits.maxAttempts=t.maxAttempts),void 0!==t.deadlineSeconds&&(n.limits.deadlineSeconds=t.deadlineSeconds)}return{ok:!0,envelope:n}}let p=/```botmancers-wake[^\S\r\n]*\r?\n([\s\S]*?)```/g,_=/WAKE\s+([A-Za-z0-9_-]+)\s*:/gi;function f(e){return JSON.stringify(function e(t){return Array.isArray(t)?t.map(e):t&&"object"==typeof t?Object.fromEntries(Object.keys(t).sort().map(n=>[n,e(t[n])])):t}(e.validation.ok?{syntax:e.syntax,envelope:e.validation.envelope}:{syntax:e.syntax,raw:e.raw}))}var m=e.i(142);(0,m.wakeSafetyLimits)().maxWakeDepth,(0,m.wakeSafetyLimits)().rootBudget;class g extends Error{code;constructor(e,t){super(t),this.name="WakeRouterError",this.code=e}}let h=t.default.prepare("SELECT * FROM wakes WHERE id = ?"),y=t.default.prepare("SELECT * FROM wakes WHERE idempotency_key = ?"),w=t.default.prepare("SELECT * FROM wakes WHERE source_event_id = ? AND position = ?");function k(e){return h.get(e)}function v(e,n){return{wake:e,request:e.work_request_id?t.engine.getWorkRequest(e.work_request_id)??null:null,created:n}}function E(e){return"accepted"===e.status||"blocked"===e.status}function b(e){return t.default.prepare("SELECT COUNT(*) AS n FROM work_requests WHERE root_request_id = ? AND wake_event_id IS NOT NULL").get(e).n}function I(e){let{rootBudget:t}=(0,m.wakeSafetyLimits)(),n=b(e);return n<t?null:{status:"rejected",code:"root_budget_exhausted",limit:t,observed:n,reason:`This work already used ${n} Wakes (limit ${t}).`}}function A(e,n,r){let i=(0,t.resolveWakeTarget)(e.target);if(!i.ok){var a;return"ambiguous"===i.reason?{status:"unavailable",code:"target_ambiguous",reason:`More than one Agent is named ${e.target}; rename one to restore routing.`}:(a=e.target,t.default.prepare("SELECT 1 FROM groups WHERE lower(trim(name)) = lower(trim(?))").get(a))?{status:"rejected",code:"target_is_group",reason:`${e.target} is a Group; wake one Agent by name.`}:{status:"unavailable",code:"target_not_found",reason:`No Agent is named ${e.target}.`}}return S(e,n,{id:i.agentId,name:i.displayName},r)}function S(e,r,s,o){let d=o.parent?.root_request_id??null,l=(0,n.selectExecutionPolicy)({entryPoint:"wake",executionKind:e.executionKind,wakeSyntax:r,resumesWorkRequest:!!e.resumeWorkRequest});if(!l.ok)return{status:"rejected",code:"unsupported_policy",reason:l.reason,target:s};let u=l.policy;if(e.resumeWorkRequest){let n=t.engine.getWorkRequest(e.resumeWorkRequest);if(!n||n.target_agent_id!==s.id||!["implementation","revision"].includes(n.execution_kind))return{status:"rejected",code:"invalid_reference",reason:"A revision resumes an implementation Work Request of the same Agent.",target:s}}if("review"===e.executionKind&&((e.contextWorkRequests??[]).some(e=>{let n=t.engine.getWorkRequest(e);return n&&["implementation","revision"].includes(n.execution_kind)&&n.target_agent_id===s.id})||null!==d&&t.default.prepare("SELECT 1 FROM work_requests WHERE root_request_id = ? AND target_agent_id = ? AND execution_kind IN ('implementation', 'revision') LIMIT 1").get(d,s.id)))return{status:"rejected",code:"reviewer_not_independent",reason:`${s.name} did the work under review; wake a different reviewer or ask the person.`,target:s};let c=function(e,n,r){if(!(0,m.needsEditGrant)(e.executionKind))return{rule:"readonly_default",id:null};if(function(e,n,r){let i=r.parent;if("implementation"!==e.executionKind||n.id!==r.agentId||!i||null!==i.wake_event_id||0!==i.wake_depth||null!==i.parent_request_id||i.target_agent_id!==r.agentId||!(0,m.isOwnerPrincipal)({kind:i.root_principal_kind??"",id:i.root_principal_id??""}))return!1;let a=t.engine.listSafetyDecisions(i.id)[0];return a?.principal_type==="human_owner"}(e,n,r))return{rule:"owner_direct_self_wake",id:null};let i=(0,m.activeEditGrant)(r.agentId,n.id);return i?{rule:"edit_grant",id:i.id}:null}(e,s,o);return c?function(e,n,r){var s;let o=t.bots.getById(e.id),d=(0,i.resolveAgent)(o);if(!d.launchable)return{status:"blocked",code:"target_unconfigured",reason:"launch_profile"===d.launch_blocker?`${e.name} has no Agent Deck selected and no launch profile chosen.`:"session_scope"===d.launch_blocker?`${e.name} has no session scope.`:"direct_runtime"===d.launch_blocker?`${e.name} launches directly; direct ${d.agent} sessions are not available yet.`:d.needs_deck_selection?`${e.name} has no Agent Deck selected.`:`${e.name} has an unsupported Agent type.`,target:e,policy:n,grant:r};let l=(s=o,"hermes-gateway"===(0,i.agentTransport)((0,i.resolveAgent)(s).agent)?(0,a.loadHermesConfig)()?{available:!0}:{available:!1,reason:"The Hermes gateway is not configured (HERMES_API_SERVER_KEY is unset)."}:{available:!0});return l.available?{status:"accepted",code:null,reason:null,target:e,policy:n,grant:r}:{status:"blocked",code:"target_unavailable",reason:l.reason,target:e,policy:n,grant:r}}(s,u,c):{status:"blocked",code:"grant_required",reason:`${s.name} needs your approval for edit work.`,target:s,policy:u,grant:null}}function q(e){let t=(0,m.wakeSafetyLimits)(),n=e.rootRequestId?b(e.rootRequestId):0;return{safety_version:m.WAKE_SAFETY_VERSION,root_principal:e.rootPrincipal,wake_depth:e.wakeDepth,grant_rule:e.grant?.rule??null,grant_id:e.grant?.id??null,root_budget:{used:n+ +!!e.counting,limit:t.rootBudget},safety_limits:{max_wake_depth:t.maxWakeDepth,root_budget:t.rootBudget}}}function x(e,t,n,r,i){return{principalType:"agent_principal",principal:{kind:"bot",id:n},decision:"accepted"===e.status?"allowed":"blocked",reasonCode:e.code,grantRule:e.grant?.rule??null,grantId:e.grant?.id??null,wakeId:t,snapshot:r,now:i}}function R(e,n,r,i){let a=e.parent_request_id?t.engine.getWorkRequest(e.parent_request_id)??null:null;if(!a)throw new g("invalid_input","A Wake creates work only in a tracked lineage.");let s=q({rootPrincipal:{kind:a.root_principal_kind??"unknown",id:a.root_principal_id??"unknown"},wakeDepth:a.wake_depth+1,grant:r.grant,rootRequestId:a.root_request_id,counting:!0}),{request:o}=t.engine.createOrGetWorkRequest({sourceConversationId:e.source_conversation_id,sourceEventId:e.source_event_id,requester:{kind:"bot",id:e.requester_agent_id},targetAgentId:r.target.id,intent:n.objective,executionKind:r.policy.execution_kind,toolProfile:r.policy.tool_profile,idempotencyKey:e.idempotency_key,parentRequestId:e.parent_request_id,wakeEventId:e.id,policy:{source:"wake",wake_version:1,wake_syntax:e.syntax,root_wake_id:e.root_wake_id,requested_target:n.target,target_name_snapshot:r.target.name,context_work_requests:n.contextWorkRequests??[],resume_work_request:n.resumeWorkRequest??null,limits:n.limits??{},return_to:{agent_id:e.requester_agent_id,conversation_id:e.source_conversation_id}},executionPolicy:r.policy,initialState:"blocked"===r.status?"blocked":"queued",stateReason:"blocked"===r.status?`${r.code}: ${r.reason}`:null,safetySnapshot:s,safety:x(r,e.id,e.requester_agent_id,s,i),now:i});return"grant_required"===r.code&&T(o,e.id,i),o}function T(e,n,r){t.engine.appendEvent(e.id,{type:"grant_requested",data:{wake_id:n,caller_agent_id:e.requester_id,target_agent_id:e.target_agent_id,authority:"edit",execution_kind:e.execution_kind},now:r})}function C(e){if("string"!=typeof e.sourceEventId||!e.sourceEventId.trim())throw new g("invalid_input","sourceEventId is required.");return t.default.transaction(()=>{let n=t.default.prepare("SELECT * FROM messages WHERE id = ?").get(e.sourceEventId);if(!n)throw new g("source_not_found",`No conversation event ${e.sourceEventId}.`);if("bot"!==n.sender_type||!n.sender_id||!t.bots.getById(n.sender_id))throw new g("invalid_input","Wakes are routed only from an Agent message.");let i=null;if(e.parentRequestId){if(!(i=t.engine.getWorkRequest(e.parentRequestId)??null))throw new g("not_found",`No parent Work Request ${e.parentRequestId}.`);if(i.target_agent_id!==n.sender_id||i.source_conversation_id!==n.conversation_id)throw new g("parent_mismatch","The parent Work Request was not run by this Agent in this conversation.")}let a=e.now??Date.now();return(function(e){let t=[],n=0,r=(n,r)=>{var i;let a;for(let s of(i=e.slice(n,r),(a=[...i.matchAll(_)]).map((e,t)=>{let r=t+1<a.length?a[t+1].index:i.length,s=i.slice(e.index,r);return{at:n+e.index,raw:s.trim(),target:e[1],message:s.slice(e[0].length).trim()}}))){let e="GROUP"===s.target.toUpperCase()?{ok:!1,reason:"group wakes are not supported; wake one Agent by name"}:0===s.message.length?{ok:!1,reason:"objective must be non-empty (max 20000 characters)"}:c({version:1,target:s.target,executionKind:"conversation",objective:s.message});t.push({at:s.at,syntax:"legacy",raw:s.raw,validation:e})}};for(let i of e.matchAll(p)){let e,a=i.index;r(n,a);try{e=c(JSON.parse(i[1]))}catch{e={ok:!1,reason:"block is not valid JSON"}}t.push({at:a,syntax:"structured",raw:i[0],validation:e}),n=a+i[0].length}return r(n,e.length),t.sort((e,t)=>e.at-t.at).map((e,t)=>({position:t,syntax:e.syntax,raw:e.raw,validation:e.validation}))})(n.content).map(e=>(function(e,n,i,a,s){var o;let d,l,u=(o=n.id,l=(0,r.createHash)("sha256").update(f(e)).digest("hex").slice(0,32),`wake:v1:${o}:${e.position}:${l}`),c=y.get(u);if(c)return v(c,!1);if(w.get(n.id,e.position))throw new g("idempotency_conflict",`Wake ${e.position} of event ${n.id} was already recorded with a different payload.`);let p=(0,r.randomUUID)(),_=a?.wake_event_id?k(a.wake_event_id):void 0,h={id:p,idempotency_key:u,source_conversation_id:n.conversation_id,source_event_id:n.id,requester_agent_id:i,parent_request_id:a?.id??null,root_wake_id:_?.root_wake_id??p,syntax:e.syntax},b=null;if(e.validation.ok)if(a){let r=function(e,n,r){for(let i of[...e.contextWorkRequests??[],...e.resumeWorkRequest?[e.resumeWorkRequest]:[]]){let e=t.engine.getWorkRequest(i);if(!(e&&(r?e.root_request_id===r.root_request_id:e.source_conversation_id===n)))return`Work Request ${i} is not in this conversation lineage.`}return null}(b=e.validation.envelope,n.conversation_id,a);d=r?{status:"rejected",code:"invalid_reference",reason:r}:function(e){let{maxWakeDepth:t}=(0,m.wakeSafetyLimits)(),n=e.wake_depth+1;return n>t?{status:"rejected",code:"depth_exceeded",limit:t,observed:n,reason:`This work is already ${e.wake_depth} Wakes deep (limit ${t}).`}:I(e.root_request_id)}(a)??A(b,e.syntax,{agentId:i,parent:a})}else b=e.validation.envelope,d={status:"rejected",code:"untracked_lineage",reason:"Its source turn is not tracked work, so the Wake cannot start a lineage."};else d={status:"rejected",code:"invalid_envelope",reason:e.validation.reason};let S=b&&E(d)?R(h,b,d,s):null;return t.default.prepare(`
61
- INSERT INTO wakes (
62
- id, idempotency_key, source_conversation_id, source_event_id, position, syntax, payload,
63
- requester_agent_id, requested_target, target_agent_id, target_name_snapshot, execution_kind,
64
- parent_request_id, root_request_id, root_wake_id, depth, status, reason_code, reason,
65
- work_request_id, limit_value, observed_value, created_at, updated_at
66
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
67
- `).run(p,u,n.conversation_id,n.id,e.position,e.syntax,f(e),i,b?.target??null,d.target?.id??null,d.target?.name??null,b?.executionKind??null,a?.id??null,S?.root_request_id??a?.root_request_id??null,h.root_wake_id,S?.wake_depth??(a?a.wake_depth+1:0),d.status,d.code,d.reason,S?.id??null,E(d)?null:d.limit??null,E(d)?null:d.observed??null,s,s),v(k(p),!0)})(e,n,n.sender_id,i,a))}).immediate()}function N(e,n,r,i,a){let s=t.default.prepare("UPDATE wakes SET status = ?, reason_code = ?, reason = ?, updated_at = ? WHERE id = ?");if("blocked"===r.status){var o,d;if(r.code===e.reason_code&&r.reason===e.reason)return v(e,!1);s.run("blocked",r.code,r.reason,a,e.id);let i=q({rootPrincipal:{kind:n.root_principal_kind??"unknown",id:n.root_principal_id??"unknown"},wakeDepth:n.wake_depth,grant:r.grant,rootRequestId:null,counting:!1});return t.engine.recordSafetyDecision(n.id,x(r,e.id,e.requester_agent_id,i,a)),"grant_required"===r.code&&T(n,e.id,a),o=r.code,d=r.reason,t.engine.reblockWorkRequest(n.id,{reason:`${o}: ${d}`,type:"wake_reblocked",data:{reason_code:o,reason:d},now:a}),v(k(e.id),!1)}if("accepted"!==r.status)return v(e,!1);let l=q({rootPrincipal:{kind:n.root_principal_kind??"unknown",id:n.root_principal_id??"unknown"},wakeDepth:n.wake_depth,grant:r.grant,rootRequestId:null,counting:!1});return t.engine.recordSafetyDecision(n.id,x(r,e.id,e.requester_agent_id,l,a)),t.engine.transitionWorkRequest(n.id,{from:"blocked",to:"queued",reason:i,data:{grant_rule:r.grant?.rule??null,grant_id:r.grant?.id??null},now:a}),s.run("accepted",null,null,a,e.id),v(k(e.id),!0)}e.s(["WakeRouterError",0,g,"decideWakeGrant",0,function(e){if((0,m.assertOwner)(e.caller.category),"allow"!==e.decision&&"deny"!==e.decision)throw new g("invalid_input","decision must be allow or deny.");let n=e.now??Date.now();return t.default.transaction(()=>{let r=k(e.wakeId);if(!r)throw new m.WakeSafetyError("not_found",`No Wake ${e.wakeId}.`);let i=r.work_request_id?t.engine.getWorkRequest(r.work_request_id):void 0,a=(t,n)=>({...t,decision:e.decision,grant:n,runnable:t.request?.state==="queued",ended:t.request?.terminal_at!==null&&t.request?.terminal_at!==void 0});if("blocked"!==r.status||"grant_required"!==r.reason_code||!i||"blocked"!==i.state){let t=i?(0,m.activeEditGrant)(r.requester_agent_id,i.target_agent_id)??null:null;if("deny"===e.decision&&"grant_denied"===r.reason_code)return{...a(v(r,!1),null),runnable:!1};if("allow"===e.decision&&t&&"grant_denied"!==r.reason_code)return{...a(v(r,!1),t),runnable:!1};throw new m.WakeSafetyError("not_pending","This Wake is not waiting for an owner grant decision.")}let s={kind:e.caller.principal.kind,id:e.caller.principal.id};if("deny"===e.decision)return t.default.prepare("UPDATE wakes SET reason_code = 'grant_denied', reason = ?, updated_at = ? WHERE id = ?").run("The owner denied this edit Wake.",n,r.id),t.engine.appendEvent(i.id,{type:"grant_denied",data:{wake_id:r.id,caller_agent_id:r.requester_agent_id,target_agent_id:i.target_agent_id,authority:"edit",decided_by:s},now:n}),t.engine.recordSafetyDecision(i.id,{principalType:"human_owner",principal:s,decision:"denied",reasonCode:"grant_denied",wakeId:r.id,snapshot:{safety_version:m.WAKE_SAFETY_VERSION,decision:"deny",decided_by:s},now:n}),t.engine.transitionWorkRequest(i.id,{from:"blocked",to:"cancelled",reason:"grant_denied",expectedVersion:i.version,errorCode:"grant_denied",errorMessage:"The owner denied this edit Wake; no work ran.",now:n}),a(v(k(r.id),!1),null);let{grant:o}=(0,m.ensureEditGrant)({callerAgentId:r.requester_agent_id,targetAgentId:i.target_agent_id,grantedBy:s,sourceWakeId:r.id,now:n});t.engine.appendEvent(i.id,{type:"grant_approved",data:{wake_id:r.id,grant_id:o.id,caller_agent_id:o.caller_agent_id,target_agent_id:o.target_agent_id,authority:"edit",decided_by:s},now:n});let d=JSON.parse(r.payload).envelope,l=t.bots.getById(i.target_agent_id),u=r.parent_request_id?t.engine.getWorkRequest(r.parent_request_id)??null:null,c=S(d,r.syntax,{id:l.id,name:l.name},{agentId:r.requester_agent_id,parent:u});return a(N(r,i,c,"grant_approved",n),o)}).immediate()},"retryWake",0,function(e,n=Date.now()){return t.default.transaction(()=>{let r=k(e);if(!r)throw new g("not_found",`No Wake ${e}.`);if("unavailable"!==r.status&&"blocked"!==r.status||"grant_denied"===r.reason_code)return v(r,!1);let i=JSON.parse(r.payload).envelope,a=t.default.prepare(`
68
- UPDATE wakes SET status = ?, reason_code = ?, reason = ?, target_agent_id = ?, target_name_snapshot = ?,
69
- work_request_id = ?, root_request_id = ?, limit_value = ?, observed_value = ?, updated_at = ?
70
- WHERE id = ?
71
- `),s=r.parent_request_id?t.engine.getWorkRequest(r.parent_request_id)??null:null,o={agentId:r.requester_agent_id,parent:s};if("unavailable"===r.status){let e=s?I(s.root_request_id)??A(i,r.syntax,o):{status:"rejected",code:"untracked_lineage",reason:"Its source turn is not tracked work, so the Wake cannot start a lineage."};if(!E(e))return(e.status!==r.status||e.code!==r.reason_code||e.reason!==r.reason)&&a.run(e.status,e.code,e.reason,null,null,null,r.root_request_id,e.limit??null,e.observed??null,n,r.id),v(k(r.id),!1);let t=R(r,i,e,n);return a.run(e.status,e.code,e.reason,e.target.id,e.target.name,t.id,t.root_request_id,null,null,n,r.id),v(k(r.id),!0)}let d=t.engine.getWorkRequest(r.work_request_id),l=t.bots.getById(d.target_agent_id);if(!l||"blocked"!==d.state)return v(r,!1);let u=S(i,r.syntax,{id:l.id,name:l.name},o);return N(r,d,u,"target_available",n)}).immediate()},"routeAgentWakes",0,C],17834);var D=e.i(9346);let O=new Set(["version","decision","implementationAttemptId","reviewAttemptId","commitMessage"]);function $(e){return"string"==typeof e&&e.trim().length>0&&e.length<=160}let M=/```botmancers-finalize[^\S\r\n]*\r?\n([\s\S]*?)```/g;function L(e){return(0,r.createHash)("sha256").update(e).digest("hex")}function W(e){try{let t=JSON.parse(e.policy_snapshot);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}let F=["implementation","revision"];function j(e){return t.default.prepare("SELECT * FROM work_attempts WHERE request_id = ? ORDER BY attempt_number DESC LIMIT 1").get(e)}function H(e){return t.default.prepare("SELECT * FROM candidate_manifests WHERE attempt_id = ?").get(e)}function P(e){return t.default.prepare("SELECT * FROM finalizations WHERE id = ?").get(e)}function U(e){return JSON.parse(e.files)}function z(e,n,r=Date.now()){let i=t.engine.getAttempt(e);if(!i?.external_run_id)return!1;let a=t.default.prepare("SELECT baseline_ref, baseline_digest FROM attempt_finalization_baselines WHERE attempt_id = ?").get(e);return a?a.baseline_ref===n.baselineRef&&a.baseline_digest===n.baselineDigest:(t.default.prepare(`
72
- INSERT OR IGNORE INTO attempt_finalization_baselines (attempt_id, request_id, external_run_id, baseline_ref, baseline_digest, created_at)
73
- VALUES (?, ?, ?, ?, ?, ?)
74
- `).run(e,i.request_id,i.external_run_id,n.baselineRef,n.baselineDigest,r),!0)}function B(e){if(!F.includes(e.execution_kind))return null;let n=j(e.id);if(!n)return null;let r=H(n.id);if(r){let e=U(r),t=e.slice(0,50).map(e=>`- ${e.path} ${e.sha256?`sha256=${e.sha256} mode=${e.mode}`:"deleted"}`);return e.length>50&&t.push(`- ... ${e.length-50} more`),[`Candidate manifest: ${r.manifest_digest} (${e.length} ${1===e.length?"file":"files"}, base commit ${r.base_commit}, baseline ${r.baseline_digest})`,...t].join("\n")}let i=t.default.prepare("SELECT data FROM engine_events WHERE request_id = ? AND attempt_id = ? AND type = 'candidate_manifest_unavailable' ORDER BY sequence DESC LIMIT 1").get(e.id,n.id);if(i){let e=JSON.parse(i.data);return`Candidate manifest: unavailable (${e.reason_code??"unknown"}); this work cannot be finalized.`}return null}function G(e,t,n,r){return`botmancers-finalize-v1-${L([e,t,n,r].join(":")).slice(0,48)}`}function K(e,t){return{finalization_id:e.id,decision_event_id:e.decision_event_id,coordinator_agent_id:e.coordinator_agent_id,implementation_request_id:e.implementation_request_id,implementation_attempt_id:e.implementation_attempt_id,review_request_id:e.review_request_id,review_attempt_id:e.review_attempt_id,external_run_id:e.external_run_id,manifest_id:e.manifest_id,manifest_digest:t?.manifest_digest??null,baseline_digest:t?.baseline_digest??null,base_commit:t?.base_commit??null,file_count:t?.file_count??null}}function J(e,n,i=Date.now()){let a=[...e.content.matchAll(M)].map((e,t)=>{let n;try{n=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{ok:!1,reason:"decision must be a JSON object"};let t=Object.keys(e).filter(e=>!O.has(e));if(t.length>0)return{ok:!1,reason:`unknown field ${t.join(", ")} (the manifest is never supplied in a decision)`};if(1!==e.version)return{ok:!1,reason:"version must be 1"};if("accept"!==e.decision&&"reject"!==e.decision)return{ok:!1,reason:'decision must be "accept" or "reject"'};if(!$(e.implementationAttemptId))return{ok:!1,reason:"implementationAttemptId must name an Attempt"};if(!$(e.reviewAttemptId))return{ok:!1,reason:"reviewAttemptId must name an Attempt"};let n={version:1,decision:e.decision,implementationAttemptId:e.implementationAttemptId.trim(),reviewAttemptId:e.reviewAttemptId.trim()};if(void 0!==e.commitMessage){if("string"!=typeof e.commitMessage||0===e.commitMessage.trim().length||e.commitMessage.length>2e3||e.commitMessage.includes("\0"))return{ok:!1,reason:"commitMessage must be non-empty text (max 2000 characters)"};n.commitMessage=e.commitMessage.trim()}return{ok:!0,decision:n}}(JSON.parse(e[1]))}catch{n={ok:!1,reason:"block is not valid JSON"}}return{position:t,validation:n}});return 0===a.length?[]:t.engine.transaction(()=>a.map(a=>{let s={position:a.position,finalizationId:null,reasonCode:null,reason:null,implementationRequestId:null,reviewRequestId:null},o=(r,o)=>(t.engine.appendEvent(n.id,{type:"finalization_rejected",data:{decision_event_id:e.id,position:a.position,reason_code:r,reason:o,implementation_request_id:s.implementationRequestId,review_request_id:s.reviewRequestId},now:i}),{...s,reasonCode:r,reason:o});if(!a.validation.ok)return o("invalid_decision",a.validation.reason);let d=a.validation.decision,l=t.engine.getAttempt(d.implementationAttemptId),u=t.engine.getAttempt(d.reviewAttemptId);if(s.implementationRequestId=l?.request_id??null,s.reviewRequestId=u?.request_id??null,"reject"===d.decision)return o("review_rejected","The coordinator rejected the review; nothing was finalized.");let c=function(e,n,r){let i=n.target_agent_id,a=(e,t)=>({ok:!1,code:e,reason:t}),s=t.engine.getAttempt(e.implementationAttemptId),o=s?t.engine.getWorkRequest(s.request_id):void 0;if(!o||!F.includes(o.execution_kind))return a("invalid_implementation",`Attempt ${e.implementationAttemptId} is not an implementation or revision Attempt.`);let d=t.engine.getAttempt(e.reviewAttemptId),l=d?t.engine.getWorkRequest(d.request_id):void 0;if(!l||"review"!==l.execution_kind||"readonly"!==l.tool_profile)return a("invalid_review",`Attempt ${e.reviewAttemptId} is not a readonly review Attempt.`);if(o.source_conversation_id!==r||l.source_conversation_id!==r)return a("cross_conversation","The implementation and review must belong to this conversation.");for(let e of[o,l])if(e.root_request_id!==n.root_request_id||function(e){if(!e.wake_event_id)return null;let t=W(e).return_to;return t&&"string"==typeof t.agent_id?t.agent_id:null}(e)!==i)return a("lineage_mismatch",`Work Request ${e.id} was not woken by this coordinator in this lineage.`);if("completed"!==o.state)return a("implementation_not_completed",`Implementation ${o.id} is ${o.state}, not completed.`);let u=j(o.id);if(!u||u.id!==s?.id||"succeeded"!==u.outcome)return a("implementation_not_completed",`Implementation ${o.id} has no successful Attempt.`);let c=H(u.id);if(!c)return a("not_finalizable",`Implementation ${o.id} has no candidate manifest to finalize.`);let p=W(l).context_work_requests;if(!Array.isArray(p)||!p.includes(o.id))return a("review_not_linked",`Review ${l.id} does not reference implementation ${o.id}.`);if(l.target_agent_id===o.target_agent_id)return a("reviewer_not_independent","The reviewer did the work under review.");let _=j(l.id);if("completed"!==l.state||!_||_.id!==d?.id||"succeeded"!==_.outcome)return a("review_not_completed",`Review ${l.id} did not complete.`);if(l.created_at<=c.created_at)return a("stale_manifest",`Review ${l.id} was requested before the candidate manifest was recorded.`);let f=t.default.prepare(`
75
- SELECT candidate.id FROM work_requests candidate
76
- WHERE root_request_id = ? AND target_agent_id = ? AND execution_kind IN ('implementation', 'revision')
77
- AND id <> ? AND (
78
- created_at > ? OR (created_at = ? AND candidate.rowid > (SELECT rowid FROM work_requests WHERE id = ?))
79
- ) LIMIT 1
80
- `).get(o.root_request_id,o.target_agent_id,o.id,o.created_at,o.created_at,o.id);if(f)return a("stale_manifest",`A later edit (${f.id}) replaced the manifest of ${o.id}.`);let m=t.default.prepare("SELECT id FROM finalizations WHERE implementation_attempt_id = ? AND state IN ('preparing', 'committed') LIMIT 1").get(u.id);return{ok:!0,chain:{implementation:o,implementationAttempt:u,review:l,reviewAttempt:_,manifest:c},existing:m?.id??null}}(d,n,e.conversation_id);if(!c.ok)return o(c.code,c.reason);let p=G(e.id,c.chain.implementationAttempt.id,c.chain.reviewAttempt.id,c.chain.manifest.manifest_digest),_=t.default.prepare("SELECT id FROM finalizations WHERE idempotency_key = ?").get(p);if(c.existing&&!_)return o("already_finalized",`Implementation ${c.chain.implementation.id} already has a finalization (${c.existing}).`);let{row:f}=function(e,n,i,a,s){var o,d;let l,u,c=G(a.id,e.implementationAttempt.id,e.reviewAttempt.id,e.manifest.manifest_digest),p=t.default.prepare("SELECT * FROM finalizations WHERE idempotency_key = ?").get(c);if(p)return{row:p,created:!1};let _=JSON.stringify({baselineDigest:e.manifest.baseline_digest,expectedBaseCommit:e.manifest.base_commit,reviewId:e.review.id,commitMessage:(o=e.implementation,d=e.review,l=n.commitMessage??`Botmancers: ${(o.intent.split("\n").find(e=>e.trim())??"reviewed change").trim().slice(0,60)}`,u=`
81
-
82
- Botmancers-Work-Request: ${o.id}
83
- Botmancers-Review: ${d.id}`,`${l.slice(0,4e3-u.length)}${u}`),files:U(e.manifest)}),f=(0,r.randomUUID)();t.default.prepare(`
84
- INSERT INTO finalizations (
85
- id, idempotency_key, conversation_id, decision_event_id, decision_request_id, coordinator_agent_id,
86
- implementation_request_id, implementation_attempt_id, review_request_id, review_attempt_id,
87
- manifest_id, external_run_id, request_body, request_hash, state, created_at, updated_at
88
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'preparing', ?, ?)
89
- `).run(f,c,a.conversation_id,a.id,i.id,i.target_agent_id,e.implementation.id,e.implementationAttempt.id,e.review.id,e.reviewAttempt.id,e.manifest.id,e.manifest.external_run_id,_,L(_),s,s);let m=P(f);return t.engine.appendEvent(e.implementation.id,{type:"finalization_preparing",attemptId:e.implementationAttempt.id,data:K(m,e.manifest),now:s}),{row:m,created:!0}}(c.chain,d,n,e,i);return{...s,finalizationId:f.id}}))}let V=new Set(["BASE_MISMATCH","INDEX_DIRTY","BASELINE_MISMATCH","PATH_INVALID","PATH_UNEXPECTED","DIGEST_MISMATCH","IDEMPOTENCY_CONFLICT","GIT_LOCK_CONFLICT","REF_RACE","FINALIZATION_NOT_PREPARED","RUN_NOT_TERMINAL","FINALIZATION_INVALID","RUN_NOT_FOUND"]);function X(e,n,r,i){return t.engine.transaction(()=>{let a=t.default.prepare(`
90
- UPDATE finalizations SET state = ?, reason_code = ?, reason = ?, commit_id = ?, tree_id = ?, parent_commit = ?,
91
- result_manifest_digest = ?, file_count = ?, updated_at = ?, finished_at = ?
92
- WHERE id = ? AND finished_at IS NULL
93
- `).run(n,r.reasonCode??null,r.reason?.slice(0,300)??null,r.commit??null,r.tree??null,r.parent??null,r.manifestDigest??null,r.fileCount??null,i,i,e.id),s=P(e.id);if(1!==a.changes)return s;let o=t.default.prepare("SELECT * FROM candidate_manifests WHERE id = ?").get(e.manifest_id);return t.engine.appendEvent(e.implementation_request_id,{type:`finalization_${n}`,attemptId:e.implementation_attempt_id,data:{...K(s,o),reason_code:s.reason_code,reason:s.reason,commit:s.commit_id,tree:s.tree_id,parent:s.parent_commit,result_manifest_digest:s.result_manifest_digest},now:i}),s})}function Y(e,t=!1){if(!(e instanceof D.AgentDeckApiError))return{state:t?null:"failed",reasonCode:"finalization_failed",reason:"The finalization outcome is unknown; retrying with the same idempotency key is safe."};if("agent_deck_unreachable"===e.code||t&&"agent_deck_invalid_response"===e.code)return{state:null,reasonCode:e.code,reason:e.message};if("agent_deck_rejected"!==e.code)return{state:"failed",reasonCode:e.code,reason:e.message};let n=e.deckCode??"";return"FINALIZATION_CANCELED"===n?{state:"canceled",reasonCode:n.toLowerCase(),reason:e.message}:V.has(n)?{state:"blocked",reasonCode:n.toLowerCase(),reason:e.message}:t&&(!n||null!==e.status&&e.status>=500)?{state:null,reasonCode:n?n.toLowerCase():"finalization_failed",reason:"The finalization outcome is unknown; retrying with the same idempotency key is safe."}:{state:"failed",reasonCode:n?n.toLowerCase():"finalization_failed",reason:e.message}}function Z(e,n,r,i){return t.engine.appendEvent(e.implementation_request_id,{type:"finalization_retry_pending",attemptId:e.implementation_attempt_id,data:{finalization_id:e.id,external_run_id:e.external_run_id,reason_code:n,reason:r},now:i}),P(e.id)}async function Q(e){let n=P(e);if(!n||"preparing"!==n.state)return n;if(!(0,D.hasAgentDeckRunToken)())return X(n,"failed",{reasonCode:"agent_deck_token_missing",reason:D.AGENT_DECK_API_MESSAGES.agent_deck_token_missing},Date.now());let r=JSON.parse(n.request_body),i=t.default.prepare("SELECT * FROM candidate_manifests WHERE id = ?").get(n.manifest_id);if(null===n.submitted_at){try{var a,s;let e=await (0,D.getAgentDeckRunChanges)(n.external_run_id);if(e.manifestDigest!==i.manifest_digest||e.baselineDigest!==i.baseline_digest||e.baseCommit!==i.base_commit||(a=e.files,s=r.files,JSON.stringify(a)!==JSON.stringify(s)))return X(n,"blocked",{reasonCode:"manifest_changed",reason:`The workspace changed after review (candidate manifest ${e.manifestDigest}, reviewed ${i.manifest_digest}); nothing was committed.`},Date.now())}catch(t){let e=Y(t);if(!e.state)return Z(n,e.reasonCode,e.reason,Date.now());return X(n,e.state,{reasonCode:e.reasonCode,reason:e.reason},Date.now())}t.default.prepare("UPDATE finalizations SET submitted_at = ?, updated_at = ? WHERE id = ? AND submitted_at IS NULL AND finished_at IS NULL").run(Date.now(),Date.now(),n.id),n=P(e)}try{let e=await (0,D.finalizeAgentDeckRun)(n.external_run_id,r,n.idempotency_key);if(e.manifestDigest!==i.manifest_digest||void 0!==e.fileCount&&e.fileCount!==i.file_count||void 0!==e.reviewId&&e.reviewId!==n.review_request_id||void 0!==e.parent&&e.parent!==i.base_commit)return X(n,"failed",{reasonCode:"agent_deck_invalid_response",reason:"Agent Deck returned commit evidence that does not match the persisted finalization request."},Date.now());return X(n,"committed",{commit:e.commit,tree:e.tree,parent:e.parent??i.base_commit,manifestDigest:e.manifestDigest,fileCount:e.fileCount??i.file_count},Date.now())}catch(t){let e=Y(t,!0);if(!e.state)return Z(n,e.reasonCode,e.reason,Date.now());return X(n,e.state,{reasonCode:e.reasonCode,reason:e.reason},Date.now())}}function ee(e){let t=[`Finalization: ${e.id}`,`Implementation: ${e.implementation_request_id}`,`Review: ${e.review_request_id}`,`State: ${e.state}`];return"committed"===e.state?t.push(`Commit: ${e.commit_id}`,`Tree: ${e.tree_id}`,`Manifest: ${e.result_manifest_digest}`,`Files: ${e.file_count}`):e.reason_code&&t.push(`Reason: ${e.reason_code}${e.reason?` - ${e.reason}`:""}`),t.join("\n")}e.s(["candidateEvidence",0,B,"finalizationEvidence",0,ee,"getFinalization",0,P,"openFinalizationIds",0,function(){return t.default.prepare("SELECT id FROM finalizations WHERE state = 'preparing' ORDER BY created_at ASC, id ASC").all().map(e=>e.id)},"recordAttemptBaseline",0,z,"recordFinalizeDecisions",0,J,"recordPreparedEvidence",0,function(e,n,i,a=Date.now()){let s=i.finalization;if(!s||!n.external_run_id||!F.includes(e.execution_kind)||"edit"!==e.tool_profile)return;if(s.baselineRef&&s.baselineDigest&&!z(n.id,{baselineRef:s.baselineRef,baselineDigest:s.baselineDigest},a))return void t.engine.appendEvent(e.id,{type:"candidate_manifest_unavailable",attemptId:n.id,data:{external_run_id:n.external_run_id,reason_code:"BASELINE_MISMATCH",reason:"The terminal baseline did not match the baseline captured at launch."},now:a});let o=s.candidate;if(!o)return;if(!o.ok)return void t.engine.appendEvent(e.id,{type:"candidate_manifest_unavailable",attemptId:n.id,data:{external_run_id:n.external_run_id,reason_code:o.code,reason:o.message.slice(0,300)},now:a});let d=o.manifest;if(H(n.id))return;let l=(0,r.randomUUID)();t.default.prepare(`
94
- INSERT INTO candidate_manifests (
95
- id, attempt_id, request_id, conversation_id, external_run_id, baseline_ref, baseline_digest,
96
- base_commit, manifest_digest, files, file_count, created_at
97
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
98
- `).run(l,n.id,e.id,e.source_conversation_id,n.external_run_id,d.baselineRef,d.baselineDigest,d.baseCommit,d.manifestDigest,JSON.stringify(d.files),d.files.length,a),t.engine.appendEvent(e.id,{type:"candidate_manifest_recorded",attemptId:n.id,data:{manifest_id:l,external_run_id:n.external_run_id,baseline_ref:d.baselineRef,baseline_digest:d.baselineDigest,base_commit:d.baseCommit,manifest_digest:d.manifestDigest,file_count:d.files.length},now:a})},"runFinalization",0,Q],40712),(0,m.wakeSafetyLimits)().maxContinuations;let et={kind:"service",id:"botmancers-engine"},en="Botmancers";function er(e){try{let t=JSON.parse(e.policy_snapshot);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}function ei(e){return t.bots.getById(e)?.name??`agent:${e}`}function ea(e){let n;if("completed"!==e.state||!e.result)return null;try{n=JSON.parse(e.result).reply_message_id}catch{return null}if("string"!=typeof n)return null;let r=t.default.prepare("SELECT * FROM messages WHERE id = ?").get(n);return r&&"bot"===r.sender_type&&r.sender_id===e.target_agent_id?r:null}function es(e,n=!1){let r=t.engine.listAttempts(e.id),i=r.length>0?r[r.length-1]:null,a=[`Work Request: ${e.id}`,...i?[`Attempt: ${i.id}`]:[],`Agent: ${ei(e.target_agent_id)}`,`Execution kind: ${e.execution_kind}`,`State: ${e.state}`],s=ea(e);if(s){var o;a.push(n?`Result: the ${ei(e.target_agent_id)} reply above.`:`Result:
99
- ${(o=s.content).length>8e3?`${o.slice(0,8e3)}
100
- [truncated]`:o}`)}else"failed"===e.state||"cancelled"===e.state?a.push(`Failure: ${e.error_code??e.state}${e.error_message?` - ${e.error_message}`:""}`):null===e.terminal_at&&a.push("Result: not finished yet.");let d=B(e);return d&&a.push(d),a.join("\n")}let eo='You coordinate this work. Decide the next step yourself: reply to the person, ask a question, or emit a botmancers-wake block (one per Agent). Reference earlier work with "contextWorkRequests"; a revision names the implementation it resumes in "resumeWorkRequest". Never report a review that did not run.',ed=t.default.prepare("SELECT * FROM work_requests WHERE requester_kind = ? AND requester_id = ? AND idempotency_key = ?");function el(e){let r=ed.get(et.kind,et.id,e.key);if(r)return r;if(!t.bots.getById(e.coordinatorId)||!t.default.prepare("SELECT 1 FROM conversations WHERE id = ?").get(e.conversationId))return null;let i=t.default.prepare("SELECT COUNT(*) AS n FROM work_requests WHERE root_request_id = ? AND requester_kind = ? AND requester_id = ?").get(e.parent.root_request_id,et.kind,et.id),a=(0,m.wakeSafetyLimits)().maxContinuations;if(i.n>=a)return t.default.prepare("SELECT 1 FROM engine_events WHERE request_id = ? AND type = 'lineage_stopped'").get(e.parent.id)||t.engine.appendEvent(e.parent.id,{type:"lineage_stopped",data:{reason:"continuation_budget_exhausted",limit:a,observed:i.n,continues:e.continues,coordinator_agent_id:e.coordinatorId},now:e.now}),null;let s=(0,n.selectExecutionPolicy)({entryPoint:"continuation",executionKind:"conversation"});if(!s.ok)return null;let o="result"===e.continues?Math.max(e.parent.wake_depth-1,0):e.parent.wake_depth,d={safety_version:m.WAKE_SAFETY_VERSION,root_principal:{kind:e.parent.root_principal_kind??"unknown",id:e.parent.root_principal_id??"unknown"},wake_depth:o,grant_rule:"readonly_default",grant_id:null,continuations:{used:i.n+1,limit:a}};return t.engine.createOrGetWorkRequest({sourceConversationId:e.conversationId,sourceEventId:e.sourceEventId,requester:et,targetAgentId:e.coordinatorId,intent:e.intent,executionKind:s.policy.execution_kind,toolProfile:s.policy.tool_profile,idempotencyKey:e.key,parentRequestId:e.parent.id,policy:{source:"coordinator_continuation",continues:e.continues,work_requests:e.subjects},executionPolicy:s.policy,wakeDepth:o,safetySnapshot:d,safety:{principalType:"engine",principal:et,decision:"allowed",grantRule:"readonly_default",snapshot:d,now:e.now},now:e.now}).request}let eu=t.default.prepare("SELECT 1 FROM terminal_followups WHERE request_id = ? AND done_at IS NULL"),ec=t.default.prepare("UPDATE terminal_followups SET done_at = ? WHERE request_id = ? AND done_at IS NULL");function ep(e,n=Date.now()){return t.engine.transaction(()=>{var r;if(!eu.get(e))return[];let i=t.engine.getWorkRequest(e);if(!i||null===i.terminal_at||null!==i.legacy_agent_request_id)return[];ec.run(n,e);let a=[],s=e=>{e&&"queued"===e.state&&a.push(e.id)},o=ea(i);if(o){let e,t,r=[],a=null;try{r=C({sourceEventId:o.id,parentRequestId:i.id,now:n})}catch(e){if(!(e instanceof g))throw e;console.error(`Wakes of ${o.id} could not be routed:`,e.message),a=e}for(let e of r)s(e.request);let d=J(o,i,n).filter(e=>null!==e.reasonCode&&"review_rejected"!==e.reasonCode);d.length>0&&s(el({key:`continuation:v1:finalize-decision:${o.id}`,coordinatorId:i.target_agent_id,conversationId:o.conversation_id,sourceEventId:o.id,parent:i,intent:(e=d.map(e=>`- Decision ${e.position+1}: ${e.reasonCode} - ${e.reason}`),[`[Finalization not started] ${1===d.length?"One finalization decision":`${d.length} finalization decisions`} from your last message committed nothing:`,e.join("\n"),eo].join("\n\n")),continues:"finalize_decision",subjects:d.flatMap(e=>e.implementationRequestId?[e.implementationRequestId]:[]),now:n}));let l=r.filter(e=>"rejected"===e.wake.status||"unavailable"===e.wake.status);(a||l.length>0)&&s(el({key:`continuation:v1:wakes:${o.id}`,coordinatorId:i.target_agent_id,conversationId:o.conversation_id,sourceEventId:o.id,parent:i,intent:a?["[Wake not started] The Wakes in your last message could not be routed, so no work started:",a.message,eo].join("\n\n"):(t=l.map(({wake:e})=>{let t=e.target_name_snapshot??e.requested_target??"an unnamed target",n=e.execution_kind??"unknown",r="blocked"===e.status?"is waiting (blocked)":`was ${e.status}`;return`- Wake ${e.position+1} (${n}) to ${t} ${r}: ${e.reason??e.reason_code??"no reason recorded"}`+(e.work_request_id?` Work Request: ${e.work_request_id}.`:" No Work Request was created.")}),[`[Wake not started] ${1===l.length?"One Wake":`${l.length} Wakes`} from your last message did not start any work:`,t.join("\n"),eo].join("\n\n")),continues:"wake_outcome",subjects:l.flatMap(e=>e.wake.work_request_id?[e.wake.work_request_id]:[]),now:n}))}let d=function(e){if(!e.wake_event_id)return null;let t=er(e).return_to;return t&&"string"==typeof t.agent_id&&"string"==typeof t.conversation_id?{agentId:t.agent_id,conversationId:t.conversation_id}:null}(i);return d&&s(el({key:`continuation:v1:result:${i.id}`,coordinatorId:d.agentId,conversationId:d.conversationId,sourceEventId:o?.id??i.source_event_id,parent:i,intent:(r=o?.conversation_id===d.conversationId,[`[Work Request result] ${ei(i.target_agent_id)} finished the ${i.execution_kind} you requested.`,es(i,r),..."review"===i.execution_kind&&"completed"===i.state?['If this review satisfies you and the implementation has a candidate manifest, you may commit it by emitting a botmancers-finalize block: {"version": 1, "decision": "accept", "implementationAttemptId": "<id>", "reviewAttemptId": "<id>", "commitMessage": "<optional>"}, or "decision": "reject". Botmancers commits exactly the reviewed manifest; never list files or digests.']:[],eo].join("\n\n")),continues:"result",subjects:[i.id],now:n})),a})}e.s(["continueAfterFinalization",0,function(e,n=Date.now()){return t.engine.transaction(()=>{let r=P(e);if(!r||"preparing"===r.state)return[];let i=t.engine.getWorkRequest(r.decision_request_id);if(!i)return[];let a=el({key:`continuation:v1:finalization:${r.id}`,coordinatorId:r.coordinator_agent_id,conversationId:r.conversation_id,sourceEventId:r.decision_event_id,parent:i,intent:["committed"===r.state?"[Finalization committed] The reviewed manifest was committed.":`[Finalization ${r.state}] The reviewed manifest was not committed.`,ee(r),eo].join("\n\n"),continues:"finalization",subjects:[r.implementation_request_id,r.review_request_id],now:n});return a&&"queued"===a.state?[a.id]:[]})},"continueAfterTerminal",0,ep,"pendingCoordinatorWork",0,function(e=Date.now()){let n=t.default.prepare("SELECT request_id AS id FROM terminal_followups WHERE done_at IS NULL ORDER BY created_at ASC, request_id ASC").all(),r=new Set;for(let t of n)for(let n of ep(t.id,e))r.add(n);for(let e of t.default.prepare(`
101
- SELECT w.id FROM work_requests w JOIN terminal_followups f ON f.request_id = w.parent_request_id
102
- WHERE w.state = 'queued' AND (w.wake_event_id IS NOT NULL OR (w.requester_kind = ? AND w.requester_id = ?))
103
- ORDER BY w.created_at ASC, w.id ASC
104
- `).all(et.kind,et.id))r.add(e.id);return[...r]},"resumeBindingFor",0,function(e,n){if("revision"!==e.execution_kind)return{ok:!0,binding:null};let r=er(e).resume_work_request,i="string"==typeof r?t.engine.getWorkRequest(r):void 0;if(!i||i.root_request_id!==e.root_request_id||i.target_agent_id!==e.target_agent_id||!["implementation","revision"].includes(i.execution_kind))return{ok:!1,reason:"The revision does not reference an implementation of this Agent in this lineage."};let a=t.engine.getActiveSessionBinding({agentId:e.target_agent_id,adapter:n,conversationId:i.source_conversation_id,requestId:i.id});return a?{ok:!0,binding:a}:{ok:!1,reason:"The session of the referenced implementation is not available to resume."}},"turnContext",0,function(e){if(e.requester_kind===et.kind&&e.requester_id===et.id&&"coordinator_continuation"===er(e).source)return[{speakerLabel:en,fromAgent:!1,content:e.intent}];if(!e.wake_event_id)return[];let n=er(e),r=Array.isArray(n.context_work_requests)?n.context_work_requests.filter(e=>"string"==typeof e):[],i=[`[${e.execution_kind} Wake from ${ei(e.requester_id)}] Work Request: ${e.id}`,`Objective:
105
- ${e.intent}`];for(let a of("string"==typeof n.resume_work_request&&i.push(`This revision continues your session from Work Request ${n.resume_work_request}.`),r)){let n=t.engine.getWorkRequest(a);n&&n.root_request_id===e.root_request_id&&i.push(`Context:
106
- ${es(n)}`)}return[{speakerLabel:en,fromAgent:!1,content:i.join("\n\n")}]}],39872)},16789,e=>{"use strict";let t,n;var r,i,a=e.i(54799),s=e.i(18966);let o=["read_only","workspace_write"];function d(e){let t;if(!e||"object"!=typeof e)return null;let n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0?e:null;return{input_tokens:n(e.input_tokens),output_tokens:n(e.output_tokens),..."cached_input_tokens"in e?{cached_input_tokens:n(e.cached_input_tokens)}:{},cost_usd:"number"==typeof(t=e.cost_usd)&&Number.isFinite(t)&&t>=0?t:null}}function l(e,t){return{ok:!1,error:{code:e,message:t.slice(0,500)}}}function u(e){return{ok:!0,value:e}}function c(e){let t=Number(e?.max_page_size);return{list:!0===e?.list,search:!0===e?.search,read:!0===e?.read,resume:!0===e?.resume,start:!0===e?.start,cancel:!0===e?.cancel,usage:!0===e?.usage,authorities:o.filter(t=>Array.isArray(e?.authorities)&&e.authorities.includes(t)),max_page_size:Number.isInteger(t)&&t>0?Math.min(t,_):p}}let p=25,_=100,f=new Map,m=new Map,g=new Map;var h=e.i(33405),y=e.i(22734),w=e.i(14747),k=e.i(52036),v=e.i(46786);let E=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function b(e){return"string"==typeof e&&E.test(e)}function I(e){return e.replace(/[^a-zA-Z0-9]/g,"-")}function A(e){return w.default.join(e,"projects")}function S(e){try{return y.default.readdirSync(e)}catch{return[]}}function q(e){let t=new Set([I(e.replace(/\/+$/,""))]);try{t.add(I(y.default.realpathSync(e)))}catch{}return[...t]}function x(e,t){if(!b(t))return null;for(let n of S(A(e))){let r=w.default.join(A(e),n,`${t}.jsonl`);try{if(y.default.statSync(r).isFile())return r}catch{}}return null}function R(e){let t;try{t=y.default.readFileSync(e,"utf8")}catch{return null}let n=[],r=0;for(let e of t.split("\n"))if(e.trim())try{let t=JSON.parse(e);t&&"object"==typeof t&&!Array.isArray(t)?n.push(t):r++}catch{r++}return{records:n,malformed:r}}function T(e){let t="string"==typeof e.timestamp?Date.parse(e.timestamp):NaN;return Number.isFinite(t)?t:null}function C(e){let t=e.message;if(!t||"object"!=typeof t)return null;let n=t.content;return"string"==typeof n||Array.isArray(n)?n:null}function N(e){return("user"===e.type||"assistant"===e.type)&&!0!==e.isSidechain&&!0!==e.isMeta}function D(e){let t=R(e.file);if(!t)return null;let{records:n,malformed:r}=t,i=null,a=null,s=null,o=null,d=null,l=null,u=null,c=0;for(let t of n){if(void 0!==t.sessionId&&t.sessionId!==e.id)continue;null===i&&"string"==typeof t.cwd&&t.cwd.startsWith("/")&&(i=t.cwd),"string"==typeof t.version&&(u=t.version);let n=T(t);null!==n&&(d=null===d?n:Math.min(d,n),l=null===l?n:Math.max(l,n)),"custom-title"===t.type&&"string"==typeof t.customTitle&&(a=t.customTitle),"ai-title"===t.type&&"string"==typeof t.aiTitle&&(s=t.aiTitle),"summary"===t.type&&"string"==typeof t.summary&&(o=t.summary),N(t)&&c++}return null===i?null:{id:e.id,workspace:i,title:a??s??o??function(e){for(let t of e){if("user"!==t.type||!N(t))continue;let e=C(t),n="string"==typeof e?e:Array.isArray(e)?e.map(e=>e&&"object"==typeof e&&"text"===e.type?String(e.text??""):"").join(""):"";if(n.trim()&&!n.trim().startsWith("<"))return n.trim()}return null}(n),created_at:d,updated_at:l??Math.floor(e.mtime_ms),messages:c,claude_code_version:u,malformed:r}}function O(e){try{let t=JSON.parse(y.default.readFileSync(w.default.join(e,"settings.json"),"utf8")),n=Number(t.cleanupPeriodDays);return Number.isFinite(n)&&n>0?n:30}catch{return 30}}function $(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function M(e){let{events:t,malformed:n}=function(e){let t=[],n=0;for(let r of(e.endsWith("\n")?e:e.slice(0,e.lastIndexOf("\n")+1)).split("\n"))if(r.trim())try{let e=JSON.parse(r);$(e)&&"string"==typeof e.type?t.push(e):n++}catch{n++}return{events:t,malformed:n}}(e),r={session_id:null,claude_code_version:null,result:null,rate_limit_rejected:!1,malformed:n};for(let e of t)"system"===e.type&&"init"===e.subtype&&null===r.session_id?("string"==typeof e.session_id&&(r.session_id=e.session_id),"string"==typeof e.claude_code_version&&(r.claude_code_version=e.claude_code_version)):"result"===e.type&&null===r.result?r.result=e:"rate_limit_event"===e.type&&$(e.rate_limit_info)&&"rejected"===e.rate_limit_info.status&&(r.rate_limit_rejected=!0);return r}let L=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0?e:null,W=/no conversation found/i,F=/not logged in|please run \/login|\/login|invalid api key|authentication|unauthori[sz]ed|oauth token|credentials? (?:expired|missing|invalid)/i,j=/usage limit|rate limit|limit reached|quota|credit balance/i;function H(e){return!0!==e.is_error&&"success"===e.subtype}function P(e,t){let n=function(e){let t=[];if(Array.isArray(e.errors))for(let n of e.errors)"string"==typeof n&&t.push(n);return!0===e.is_error&&"string"==typeof e.result&&t.push(e.result),t.join("\n").slice(0,2e3)}(e),r="number"==typeof e.api_error_status?e.api_error_status:null,i=Array.isArray(e.permission_denials)?e.permission_denials.length:0;return{code:W.test(n)?"session_missing":401===r||403===r||F.test(n)?"auth_required":429===r||t.rate_limit_rejected||j.test(n)?"usage_limit":i>0?"permission_denied":"runtime_error",message:n||`Claude Code reported ${String(e.subtype??"an error")}.`}}let U="2.1.0",z={read_only:{permission_mode:"dontAsk",tools:["Read","Glob","Grep"]},workspace_write:{permission_mode:"acceptEdits",tools:["Read","Glob","Grep","Edit","Write","NotebookEdit"]}},B={list:!0,search:!0,read:!0,resume:!0,start:!0,cancel:!0,usage:!0,authorities:["read_only","workspace_write"],max_page_size:25},G=new Map;function K(e){try{return process.kill(e,0),!0}catch(e){return"EPERM"===e.code}}function J(e){let t={};for(let[n,r]of Object.entries(e))/^AGENT_DECK/.test(n)||void 0===r||(t[n]=r);return t}let V={session_missing:"not_found",auth_required:"auth_required",permission_denied:"permission_denied",usage_limit:"usage_limit",incompatible_version:"incompatible_version",session_mismatch:"not_resumable",process_exited:"unavailable",cancelled:"cancelled",runtime_error:"unavailable"},X={name:"botmancers",version:"1"},Y={list:!0,search:!0,read:!0,resume:!0,start:!0,cancel:!0,usage:!0,authorities:["read_only","workspace_write"],max_page_size:50},Z={list:!1,search:!1,read:!1,resume:!1,start:!1,cancel:!1,usage:!1,authorities:[],max_page_size:50};function Q(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:null}function ee(e){return"string"==typeof e&&e.length>0?e:null}function et(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0?e:null}function en(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function er(e,t="durable"){let n=Q(e),r=ee(n?.sessionId);if(!n||!r||"subagent"===n.kind)return null;let i=ee(n.workspaceRoot),a=ee(n.status);return{provider_session_id:r,title:ee(n.title)??ee(n.firstUserPrompt)??ee(n.name),workspace:i&&i.startsWith("/")?i:null,created_at:en(n.createdAt),updated_at:en(n.lastActivityAt)??en(n.updatedAt),lifecycle:"open",resumable:"durable"===t&&"string"==typeof n.path&&n.path.length>0,busy:"running"===a||null!==ee(n.activeTurnId)}}function ei(e,t){if(!Array.isArray(e))return null;let n=e.map(Q).filter(e=>!!e&&"agentMessage"===e.kind&&e.turnId===t&&!0!==e.retracted).map(e=>ee(e.text)).filter(e=>null!==e);return n.length>0?n.join("\n"):null}function ea(e){return 0===e.length||e.some(e=>null===e)?null:e.reduce((e,t)=>e+t,0)}function es(e){let t="string"==typeof e?/^(\d+)\.(\d+)\.(\d+)/.exec(e.trim()):null;return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}let eo=/login is no longer valid|authentication failed|missing \w+ credentials|api key .*rejected|unauthenticated|unauthori[sz]ed|not (signed|logged) in|\b401\b|\b403\b|forbidden|authRequired/i,ed=/rate[\s_-]*limit|usage[\s_-]*limit|quota|\b429\b|rate_limited/i;function el(e=Date.now()){let t=Buffer.alloc(16),n=Math.floor(e);for(let e=5;e>=0;e--)t[e]=n%256,n=Math.floor(n/256);(0,a.randomBytes)(10).copy(t,6),t[6]=112|15&t[6],t[8]=128|63&t[8];let r=t.toString("hex");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function eu(e){let t=e.lastIndexOf(":");return t<=0||t===e.length-1?null:{sessionId:e.slice(0,t),turnId:e.slice(t+1)}}class ec{options;authority;child;buffer;seq;pending;listeners;ready;loaded;turns;info;constructor(e,t){this.options=e,this.authority=t,this.child=null,this.buffer="",this.seq=0,this.pending=new Map,this.listeners=new Set,this.ready=null,this.loaded=new Set,this.turns=new Map,this.info=null}alive(){return null!==this.child}start(){return this.ready&&this.child||(this.ready=this.spawnAndInitialize()),this.ready}async spawnAndInitialize(){let e,t="read_only"===this.authority?["--disable-write","--disable-shell"]:[];try{e=(0,h.spawn)(this.options.command,[...this.options.commandArgs,"serve",...t,...this.options.serveArgs],{cwd:v.default.homedir(),stdio:["pipe","pipe","pipe"],env:{...process.env,...this.options.env}})}catch{return{code:"unavailable",message:"spawn_failed"}}this.child=e;let n=null,r="";e.on("error",t=>{n="ENOENT"===t.code?"binary_missing":"spawn_failed",this.drop(e)}),e.stdin.on("error",()=>this.drop(e)),e.stderr.on("data",e=>{r=`${r}${e.toString()}`.slice(-2e3)}),e.stdout.on("data",t=>this.onData(e,t)),e.on("close",()=>this.drop(e));let i=await this.request("initialize",{clientInfo:{...X}});if(!i.ok)return(this.close(),n)?{code:"unavailable",message:n}:eo.test(r)?{code:"unavailable",message:"auth_required (host exited)"}:i.error;let a=Q(i.result.serverInfo),s=Q(i.result.schema);this.info={muse_version:ee(a?.version),schema_version:"number"==typeof s?.version?s.version:null,schema_fingerprint:ee(s?.fingerprint),durability:ee(i.result.sessionDurability)??"durable"};try{e.stdin.write(`${JSON.stringify({jsonrpc:"2.0",method:"initialized",params:{}})}
107
- `)}catch{return this.close(),{code:"unavailable",message:"transport_error"}}return null}onData(e,t){let n;if(e===this.child){if(this.buffer+=t.toString(),this.buffer.length>0x1000000)return void this.close();for(;(n=this.buffer.indexOf("\n"))>=0;){let e=this.buffer.slice(0,n);this.buffer=this.buffer.slice(n+1),this.onLine(e)}}}onLine(e){let t=null;try{t=Q(JSON.parse(e))}catch{return}if(!t)return;if("number"==typeof t.id&&this.pending.has(t.id)){let e,n,r,i=this.pending.get(t.id);this.pending.delete(t.id);let a=Q(t.error);i(a?{ok:!1,error:(e="number"==typeof a.code?a.code:null,n=ee(Q(a.data)?.kind)??"unknown",r=`${n} ${"string"==typeof a.message?a.message:""}`,eo.test(r)||401===e||403===e?{code:"unavailable",message:`auth_required (${n})`}:-32601===e||"methodNotFound"===n||"experimentalRequired"===n||"capabilityRequired"===n||-32010===e?{code:"unsupported",message:`unsupported (${n})`}:-32020===e||-32011===e||"sessionNotFound"===n||"notFound"===n?{code:"not_found",message:`not_found (${n})`}:-32021===e||"sessionInUse"===n?{code:"busy",message:`busy (${n})`}:-32602===e||-32002===e||"invalidParams"===n||"inputTooLarge"===n?{code:"invalid_input",message:`invalid_input (${n})`}:{code:"unavailable",message:`provider_error (${n})`})}:{ok:!0,result:Q(t.result)??{}});return}if("string"!=typeof t.method||void 0!==t.id||"turn/completed"!==t.method&&"session/tokenUsage"!==t.method)return;let n=Q(t.params),r=ee(n?.turnId),i=ee(n?.sessionId);if(!n||!r||!i)return;let a=this.turns.get(r);a||(a={sessionId:i,completed:null,usageRecords:[]},this.turns.set(r,a)),"turn/completed"===t.method?(a.completed=n,this.notify()):"session/tokenUsage"===t.method&&a.usageRecords.push(n.usage)}notify(){for(let e of[...this.listeners])e()}async waitFor(e,t,n){for(;;){if(e())return"done";if(!this.alive())return"dead";if(t?.aborted)return"cancelled";let r="number"==typeof n?n-Date.now():1e3;if(r<=0)return"timed_out";await new Promise(e=>{let n=()=>{clearTimeout(i),t?.removeEventListener("abort",n),this.listeners.delete(n),e()},i=setTimeout(n,Math.min(r,1e3));this.listeners.add(n),t?.addEventListener("abort",n,{once:!0})})}}request(e,t){let n=this.child;if(!n)return Promise.resolve({ok:!1,error:{code:"unavailable",message:"host_not_running"}});let r=++this.seq;return new Promise(i=>{let a=setTimeout(()=>{this.pending.delete(r),i({ok:!1,error:{code:"unavailable",message:`rpc_timeout (${e})`}})},this.options.rpcTimeoutMs);this.pending.set(r,e=>{clearTimeout(a),i(e)});try{n.stdin.write(`${JSON.stringify({jsonrpc:"2.0",id:r,method:e,params:t})}
108
- `)}catch{this.pending.delete(r),clearTimeout(a),i({ok:!1,error:{code:"unavailable",message:"transport_error"}})}})}drop(e){if(e===this.child){for(let e of(this.child=null,this.ready=null,this.loaded.clear(),this.pending.values()))e({ok:!1,error:{code:"unavailable",message:"host_exited"}});this.pending.clear(),this.notify()}}close(){let e=this.child;if(e){this.drop(e);try{e.kill("SIGTERM")}catch{}}}runningTurns(){let e=0;for(let t of this.turns.values())!t.completed&&e++;return e}}let ep=new Map;function e_(e,t){let n=e??{muse_version:null,schema_version:null,schema_fingerprint:null,durability:null};if(t){let e=/^auth_required/.test(t.message)?"auth_required":"unsupported"===t.code?"unsupported":"unavailable";return{...n,status:e,reason:t.message,capabilities:{...Z}}}let r=es(n.muse_version);if(1!==n.schema_version)return{...n,status:"unsupported",reason:`msp_schema_${n.schema_version??"unknown"}`,capabilities:{...Z}};if(!r||!function(e,t){for(let n=0;n<3;n++)if(e[n]!==t[n])return e[n]>t[n];return!0}(r,es("1.4.0")))return{...n,status:"unsupported",reason:`muse_version_${n.muse_version??"unknown"}`,capabilities:{...Z}};let i="durable"===n.durability;return{...n,status:"ready",reason:null,capabilities:i?{...Y,authorities:[...Y.authorities]}:{...Y,list:!1,search:!1,read:!1,resume:!1,authorities:[...Y.authorities]}}}process.once("exit",()=>(function(){for(let e of ep.values())for(let t of Object.values(e.hosts))t?.close();ep.clear()})());class ef{defaultTimeoutMs;transport;pending;listeners;closeListeners;nextId;serverRequestHandler;closed;closeReason;constructor(e,t=3e4){this.defaultTimeoutMs=t,this.pending=new Map,this.listeners=new Set,this.closeListeners=new Set,this.nextId=1,this.serverRequestHandler=null,this.closed=!1,this.closeReason=null,this.transport=e,e.onLine(e=>this.receive(e)),e.onClose(e=>{for(let[t,n]of(this.closed=!0,this.closeReason=e,this.pending))this.pending.delete(t),n.cleanup(),n.resolve({ok:!1,kind:"closed",error:{code:-1,message:e}});for(let t of this.closeListeners)t(e)})}request(e,t,n={}){if(this.closed)return Promise.resolve({ok:!1,kind:"closed",error:{code:-1,message:this.closeReason??"closed"}});let r=this.nextId++;return new Promise(i=>{let a=n.signal??null,s=()=>u({ok:!1,kind:"aborted",error:{code:-1,message:"aborted"}}),o=n.timeoutMs??this.defaultTimeoutMs,d=o>0?setTimeout(()=>u({ok:!1,kind:"timeout",error:{code:-1,message:`${e} timed out`}}),o):null,l=()=>{d&&clearTimeout(d),a?.removeEventListener("abort",s)},u=e=>{this.pending.has(r)&&(this.pending.delete(r),l(),i(e))};if(this.pending.set(r,{resolve:e=>i(e),timer:d,cleanup:l}),a?.aborted)return s();a?.addEventListener("abort",s,{once:!0}),this.transport.send(JSON.stringify({id:r,method:e,params:t}))})}notify(e,t){this.transport.send(JSON.stringify(void 0===t?{method:e}:{method:e,params:t}))}onNotification(e){return this.listeners.add(e),()=>this.listeners.delete(e)}onClose(e){return this.closeListeners.add(e),()=>this.closeListeners.delete(e)}handleServerRequests(e){this.serverRequestHandler=e}close(){this.transport.close()}receive(e){let t;try{t=JSON.parse(e)}catch{return}if(!t||"object"!=typeof t)return;let n="number"==typeof t.id||"string"==typeof t.id;if(n&&"string"==typeof t.method){let e=this.serverRequestHandler?this.serverRequestHandler(t.method,t.params??{}):{error:{code:-32601,message:"not handled"}};this.transport.send(JSON.stringify({id:t.id,...e}));return}if(n){let e=this.pending.get(Number(t.id));if(!e)return;if(this.pending.delete(Number(t.id)),e.cleanup(),t.error&&"object"==typeof t.error){let n=t.error;e.resolve({ok:!1,kind:"rpc",error:{code:Number(n.code??-32603),message:String(n.message??"")}})}else e.resolve({ok:!0,result:t.result});return}if("string"==typeof t.method){let e={method:t.method,params:t.params??{}};for(let t of this.listeners)t(e)}}}function em(e){let t=[];for(let n of e.split("\n")){let e=n.trim();if(e)try{let n=JSON.parse(e);n&&"object"==typeof n&&!Array.isArray(n)&&t.push(n)}catch{}}return t}let eg=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?Math.trunc(e):null;function eh(e,t,n){return null===e&&null===n?null:{input_tokens:e,output_tokens:n,cached_input_tokens:t,cost_usd:null}}function ey(e){let t=null,n=null,r=null,i=null;for(let a of e)if("thread.started"===a.type&&"string"==typeof a.thread_id)t=a.thread_id;else if("item.completed"===a.type&&a.item&&"object"==typeof a.item){let e=a.item;"agent_message"===e.type&&"string"==typeof e.text&&e.text&&(n=e.text)}else if("turn.completed"===a.type)r="completed";else if("turn.failed"===a.type||"error"===a.type){r="failed";let e=a.error;i="string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.message?e.message:"string"==typeof a.message?a.message:"codex turn failed"}return{thread_id:t,terminal:r,output:n,error:i,usage:function(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if("turn.completed"!==n.type)continue;let r=n.usage;if(!r||"object"!=typeof r)break;return eh(eg(r.input_tokens),eg(r.cached_input_tokens),eg(r.output_tokens))}return null}(e)}}let ew=["cli","vscode","exec","appServer"],ek=["thread/list","thread/read","thread/items/list","thread/turns/list","thread/start","thread/resume","turn/start","turn/interrupt"],ev={"thread/list":{limit:"probe"},"thread/read":{threadId:0},"thread/items/list":{threadId:0},"thread/turns/list":{threadId:0},"thread/start":{cwd:0},"thread/resume":{threadId:0},"turn/start":{threadId:0},"turn/interrupt":{threadId:0}},eE=Object.fromEntries(ek.map(e=>[e,!1]));function eb(e,t,n){return`codex:${e}:${t}:${n}`}function eI(e){let t=e.split(":");return 4===t.length&&"codex"===t[0]&&("as"===t[1]||"ex"===t[1])&&t[2]&&t[3]?{kind:t[1],threadId:t[2],id:t[3]}:null}function eA(e){return Buffer.from(JSON.stringify(e)).toString("base64url")}function eS(e){if(!e)return null;try{let t=JSON.parse(Buffer.from(e,"base64url").toString("utf8"));return t&&"object"==typeof t?t:null}catch{return null}}let eq=e=>"number"==typeof e&&Number.isFinite(e)?Math.round(1e3*e):null;function ex(e,t){let n="string"==typeof e.cwd&&e.cwd.startsWith("/")?e.cwd:null,r=e.status?.type,i="string"==typeof e.name&&e.name.trim()?e.name:null,a="string"==typeof e.preview&&e.preview.trim()?e.preview:null;return{provider_session_id:e.id,title:i??a,workspace:n,created_at:eq(e.createdAt),updated_at:eq(e.updatedAt),lifecycle:t??("string"==typeof e.path&&e.path.split(/[\\/]/).includes("archived_sessions")?"archived":"open"),resumable:!0!==e.ephemeral&&"systemError"!==r&&null!==n&&y.default.existsSync(n),busy:"active"===r}}function eR(e,t,n){if("userMessage"===e.type)return{seq:t,role:"user",text:(Array.isArray(e.content)?e.content:[]).map(e=>e&&"object"==typeof e&&"text"===e.type?String(e.text??""):"").join("").trim(),at:n};return"agentMessage"===e.type&&"string"==typeof e.text?{seq:t,role:"assistant",text:e.text,at:n}:"commandExecution"===e.type&&"string"==typeof e.command?{seq:t,role:"tool",text:`$ ${e.command}`,at:n}:null}function eT(e){let t=null,n=null;for(let r of e??[])r?.type==="agentMessage"&&"string"==typeof r.text&&r.text&&(t=r.text,"final_answer"===r.phase&&(n=r.text));return n??t}function eC(e){return"workspace_write"===e?"workspace-write":"read-only"}function eN(e){return!e.ok&&"rpc"===e.kind&&/thread not (found|loaded)|no rollout|invalid thread id|not found/i.test(e.error.message)}function eD(e,t){return"timeout"===e.kind?l("timed_out",`${t} timed out`):"aborted"===e.kind?l("cancelled",`${t} aborted`):"closed"===e.kind?l("unavailable",`${t}: app-server closed`):l("invalid_input",`${t} refused (${e.error.code})`)}class eO{options;client;connecting;probe;trackers;keys;idleTimer;command;env;constructor(e={}){this.options=e,this.client=null,this.connecting=null,this.probe=null,this.trackers=new Map,this.keys=new Map,this.idleTimer=null,this.command=e.command??[process.env.BOTMANCERS_CODEX_BIN||"codex"],this.env=e.env??process.env}get runsDir(){return this.options.runsDir??w.default.join(w.default.dirname(w.default.resolve((0,k.dbPath)(this.env))),"codex-exec-runs")}capabilities(){let e=this.probe?.status==="ready"?this.probe:null,t=e?.methods??eE,n=!!e?.exec_fallback,r=t["thread/start"]&&t["turn/start"],i=t["thread/resume"]&&t["turn/start"];return{list:t["thread/list"],search:t["thread/list"],read:t["thread/items/list"]||t["thread/turns/list"],resume:i||n&&t["thread/read"],start:r||n,cancel:t["turn/interrupt"]||n&&(!r||!i),usage:!!e,authorities:e?["read_only","workspace_write"]:[],max_page_size:25}}selection(){let e=this.capabilities(),t=this.probe?.methods??eE;return{start:e.start?t["thread/start"]&&t["turn/start"]?"app-server":"exec":null,resume:e.resume?t["thread/resume"]&&t["turn/start"]?"app-server":"exec":null}}async ready(){let e=await this.connect();return"ready"===e.status?u(void 0):l("auth_required"===e.status?"auth_required":"unsupported"===e.status?"unsupported":"unavailable",e.detail)}async connect(){return this.client&&!this.client.closed&&this.probe?.status==="ready"?this.probe:(this.connecting||(this.connecting=this.doConnect().finally(()=>{this.connecting=null})),this.connecting)}cliVersion(){return new Promise(e=>{(0,h.execFile)(this.command[0],[...this.command.slice(1),"--version"],{env:this.env,timeout:1e4},(t,n)=>{if(t)return e(null);let r=/(\d+\.\d+\.\d+[0-9A-Za-z.+-]*)/.exec(String(n));e(r?r[1]:null)})})}async doConnect(){let e=await this.cliVersion(),t=(t,n)=>(this.probe={status:t,cli_version:e,methods:{...eE},exec_fallback:!1,detail:n},this.probe);this.client?.close(),this.client=null;let n=new ef((this.options.transport??((e,t)=>(function(e,t={}){let n,r=[],i=[],a=!1,s=e=>{if(!a)for(let t of(a=!0,i))t(e)};try{n=(0,h.spawn)(e[0],e.slice(1),{stdio:["pipe","pipe","pipe"],env:t.env??process.env,cwd:t.cwd})}catch(e){return queueMicrotask(()=>s(`spawn failed: ${e.message}`)),{send:()=>{},onLine:e=>r.push(e),onClose:e=>i.push(e),close:()=>{}}}let o="";return n.stdout?.setEncoding("utf8"),n.stdout?.on("data",e=>{let t;for(o+=e;(t=o.indexOf("\n"))>=0;){let e=o.slice(0,t).trim();if(o=o.slice(t+1),e)for(let t of r)t(e)}}),n.stderr?.resume(),n.stdin?.on("error",()=>{}),n.on("error",e=>s(`spawn failed: ${e.code??e.message}`)),n.on("exit",(e,t)=>s(`exited (${t??e})`)),{send(e){!a&&n.stdin?.writable&&n.stdin.write(`${e}
109
- `)},onLine:e=>r.push(e),onClose:e=>i.push(e),close(){a||(n.stdin?.end(),n.kill("SIGTERM"))}}})([...e,"app-server"],{env:t})))(this.command,this.env),this.options.requestTimeoutMs??3e4),r=await n.request("initialize",{clientInfo:{name:"botmancers",title:"Botmancers",version:"1"},capabilities:null},{timeoutMs:2e4});if(!r.ok)return(n.close(),null===e)?t("unavailable",`codex is not installed or did not start (${r.error.message})`):t("rpc"===r.kind?"unsupported":"unavailable",`codex ${e}: app-server initialize failed (${r.error.message})`);n.notify("initialized");let i=await Promise.all(ek.map(e=>n.request(e,ev[e],{timeoutMs:1e4}))),a={...eE};if(ek.forEach((e,t)=>{var n;let r=i[t];a[e]=r.ok||"rpc"===r.kind&&(n=r.error,!(!(-32601!==n.code||/not supported yet/i.test(n.message))||n.message.includes(`unknown variant \`${e}\``)))}),!a["thread/list"])return n.close(),t("unsupported",`codex ${e??"unknown"}: app-server has no thread/list`);let s=await n.request("account/read",{},{timeoutMs:1e4});return s.ok&&s.result&&null==s.result.account&&!0===s.result.requiresOpenaiAuth?(n.close(),t("auth_required","codex is not signed in")):(this.attach(n),this.probe={status:"ready",cli_version:e,methods:a,exec_fallback:!1!==this.options.execFallback&&null!==e,detail:`codex ${e??"unknown"} app-server`},this.probe)}attach(e){this.client=e,e.handleServerRequests(e=>"item/commandExecution/requestApproval"===e||"item/fileChange/requestApproval"===e?{result:{decision:"decline"}}:"applyPatchApproval"===e||"execCommandApproval"===e?{result:{decision:{denied:{rejection:"Botmancers turns run with a fixed authority."}}}}:{error:{code:-32601,message:"not supported by Botmancers"}}),e.onNotification(({method:e,params:t})=>{let n="string"==typeof t.turnId?t.turnId:t.turn&&"string"==typeof t.turn.id?t.turn.id:null;if(!n||"string"!=typeof t.threadId)return;let r=this.tracker(n,t.threadId);if("item/completed"===e){let e=t.item;e?.type==="agentMessage"&&"string"==typeof e.text&&e.text&&(r.output=e.text,"final_answer"===e.phase&&(r.finalOutput=e.text))}else if("thread/tokenUsage/updated"===e){var i;r.usage=function(e,t){if(!e)return t;if(!t)return e;let n=(e,t)=>null==e&&null==t?null:(e??0)+(t??0);return{input_tokens:n(e.input_tokens,t.input_tokens),output_tokens:n(e.output_tokens,t.output_tokens),cached_input_tokens:n(e.cached_input_tokens,t.cached_input_tokens),cost_usd:null}}(r.usage,(i=t.tokenUsage?.last)&&"object"==typeof i?eh(eg(i.inputTokens),eg(i.cachedInputTokens),eg(i.outputTokens)):null)}else if("turn/completed"===e){let e=t.turn;this.settle(r,e)}}),e.onClose(()=>{for(let e of this.trackers.values())"inProgress"===e.status&&(e.status="lost",e.error="the Codex app-server exited during the turn",e.finishedAt=Date.now(),e.waiters.splice(0).forEach(e=>e()))})}tracker(e,t){let n=this.trackers.get(e);return n||(n={threadId:t,status:"inProgress",output:null,finalOutput:null,usage:null,error:null,finishedAt:null,waiters:[]},this.trackers.set(e,n)),n}settle(e,t){"inProgress"!==t.status&&"inProgress"===e.status&&(e.status="completed"===t.status?"completed":"interrupted"===t.status?"interrupted":"failed",e.output=e.finalOutput??e.output??eT(t.items),e.error=t.error?.message??("failed"===e.status?"codex turn failed":null),e.finishedAt=eq(t.completedAt)??Date.now(),e.waiters.splice(0).forEach(e=>e()),this.scheduleIdle())}scheduleIdle(){this.idleTimer&&clearTimeout(this.idleTimer);let e=this.options.idleMs??3e5;this.idleTimer=setTimeout(()=>{if([...this.trackers.values()].some(e=>"inProgress"===e.status))return this.scheduleIdle();this.client?.close()},e),this.idleTimer.unref?.()}async rpc(e,t,n){let r=await this.connect();return"ready"===r.status&&this.client?(this.scheduleIdle(),this.client.request(e,t,{signal:n.signal??null})):{ok:!1,kind:"closed",error:{code:-1,message:r.detail}}}has(e){return!!this.probe?.methods[e]}shutdown(){this.idleTimer&&clearTimeout(this.idleTimer),this.client?.close(),this.client=null,this.probe=null}async listSessions(e){let t=eS(e.cursor);if("sessions"===e.scope.kind){let n=Number(t?.i??0),r=e.scope.provider_session_ids.slice(n,n+e.limit),i=[];for(let t of r){let n=await this.getSession({...e,provider_session_id:t});if(!n.ok)return n;n.value&&i.push(n.value)}return u({items:i,next_cursor:n+e.limit<e.scope.provider_session_ids.length?eA({i:n+e.limit}):null})}let n=t?.phase==="archived"?"archived":"open",r=await this.rpc("thread/list",{limit:e.limit,cursor:"string"==typeof t?.c?t.c:null,archived:"archived"===n,sourceKinds:ew,sortKey:"updated_at",...e.query?{searchTerm:e.query}:{}},e);if(!r.ok)return eD(r,"thread/list");let i=(Array.isArray(r.result?.data)?r.result.data:[]).filter(e=>e&&"string"==typeof e.id&&!0!==e.ephemeral&&!e.parentThreadId).map(e=>ex(e,n)).filter(t=>"all_provider_sessions"===e.scope.kind||null!==t.workspace&&e.scope.workspaces.some(e=>(0,s.workspaceContains)(e,t.workspace))),a=r.result?.nextCursor??null;return u({items:i,next_cursor:a?eA({phase:n,c:a}):"open"===n?eA({phase:"archived"}):null})}async getSession(e){let t=await this.rpc("thread/read",{threadId:e.provider_session_id},e);if(!t.ok)return eN(t)?u(null):eD(t,"thread/read");let n=t.result?.thread;return u(n&&"string"==typeof n.id?ex(n):null)}async readTranscript(e){let t=eS(e.cursor)??{},n=Number(t.n??0),r=e.provider_session_id;if("turns"!==t.mode&&this.has("thread/items/list")){let i=await this.rpc("thread/items/list",{threadId:r,cursor:"string"==typeof t.c?t.c:null,limit:e.limit,sortDirection:"asc"},e);if(i.ok){let t=(i.result?.data??[]).slice(0,e.limit);return u({items:t.map((e,t)=>eR(e.item??{},n+t+1,e.completedAtMs??e.startedAtMs??null)).filter(e=>null!==e),next_cursor:i.result?.nextCursor?eA({c:i.result.nextCursor,n:n+t.length}):null})}if(eN(i))return l("not_found","no such thread");if("rpc"!==i.kind||-32601!==i.error.code)return eD(i,"thread/items/list")}if(!this.has("thread/turns/list"))return l("unsupported","no transcript method");let i="string"==typeof t.c?t.c:null,a=Number(t.skip??0),s=await this.rpc("thread/turns/list",{threadId:r,cursor:i,limit:1,sortDirection:"asc",itemsView:"full"},e);if(!s.ok)return eN(s)?l("not_found","no such thread"):eD(s,"thread/turns/list");let o=(s.result?.data??[])[0];if(!o)return u({items:[],next_cursor:null});let d=Array.isArray(o.items)?o.items:[],c=d.slice(a,a+e.limit),p=c.map((e,t)=>eR(e,n+t+1,null)).filter(e=>null!==e),_=n+c.length;return u({items:p,next_cursor:a+e.limit<d.length?eA({mode:"turns",c:i,skip:a+e.limit,n:_}):s.result?.nextCursor?eA({mode:"turns",c:s.result.nextCursor,skip:0,n:_}):null})}turnInput(e){return[{type:"text",text:e,text_elements:[]}]}async beginTurn(e,t,n){var r;let i=await this.rpc("turn/start",{threadId:e,input:this.turnInput(n.prompt),cwd:t,approvalPolicy:"never",sandboxPolicy:(r=n.authority,"workspace_write"===r?{type:"workspaceWrite",writableRoots:[t],networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}:{type:"readOnly",networkAccess:!1}),clientUserMessageId:n.idempotency_key},n);if(!i.ok)return eN(i)?l("not_found","no such thread"):eD(i,"turn/start");let a=i.result?.turn;if(!a||"string"!=typeof a.id)return l("unavailable","turn/start returned no turn");let s=this.tracker(a.id,e);this.settle(s,a);let o={provider_turn_id:eb("as",e,a.id),provider_session_id:e};return this.keys.set(n.idempotency_key,o),u(o)}async startSession(e){let t=this.keys.get(e.idempotency_key)??this.execRunByKey(e.idempotency_key);if(t)return u(t);let n=this.selection().start;if(null===n)return l("unsupported","this Codex cannot start sessions");if("exec"===n)return this.execStart(null,e.workspace,e);let r=await this.rpc("thread/start",{cwd:e.workspace,approvalPolicy:"never",sandbox:eC(e.authority),ephemeral:!1},e);if(!r.ok)return eD(r,"thread/start");let i=r.result?.thread?.id;return"string"!=typeof i?l("unavailable","thread/start returned no thread"):this.beginTurn(i,e.workspace,e)}async findKeyedTurn(e,t,n){if(!this.has("thread/turns/list"))return null;let r=await this.rpc("thread/turns/list",{threadId:e,limit:5,sortDirection:"desc",itemsView:"full"},n);if(!r.ok)return null;for(let e of r.result?.data??[])if((e.items??[]).some(e=>e?.type==="userMessage"&&e.clientId===t))return e.id;return null}async sendTurn(e){let t=this.keys.get(e.idempotency_key)??this.execRunByKey(e.idempotency_key);if(t)return u(t);let n=e.provider_session_id,r=this.selection().resume;if(null===r)return l("unsupported","this Codex cannot resume sessions");if("exec"===r){let t=await this.getSession(e);return t.ok?t.value?t.value.resumable&&t.value.workspace?this.execStart(n,t.value.workspace,e):l("not_resumable","the thread cannot be resumed"):l("not_found","no such thread"):t}let i=await this.rpc("thread/resume",{threadId:n,approvalPolicy:"never",sandbox:eC(e.authority),excludeTurns:!0},e);if(!i.ok)return eN(i)?l("not_found","no such thread"):eD(i,"thread/resume");let a="string"==typeof i.result?.cwd?i.result.cwd:i.result?.thread?.cwd;if(!a||!y.default.existsSync(a))return l("not_resumable","the thread workspace no longer exists");let s=await this.findKeyedTurn(n,e.idempotency_key,e);if(s){let t={provider_turn_id:eb("as",n,s),provider_session_id:n};return this.keys.set(e.idempotency_key,t),u(t)}return i.result?.thread?.status?.type==="active"?l("busy","the thread has a turn in flight"):this.beginTurn(n,a,e)}result(e){let t="completed"===e.status?"completed":"interrupted"===e.status?"cancelled":"failed";return{status:t,provider_session_id:e.threadId,output:e.output,failure:"completed"===t?null:"cancelled"===t?{code:"cancelled",message:"interrupted"}:{code:"lost"===e.status?"interrupted":"codex_turn_failed",message:e.error??"codex turn failed"},usage:e.usage,finished_at:e.finishedAt??Date.now()}}async recover(e,t,n){let r=null;for(let i=0;i<10;i++){let i=await this.rpc("thread/turns/list",{threadId:e,cursor:r,limit:10,sortDirection:"desc",itemsView:"full"},n);if(!i.ok)return eN(i)?l("not_found","no such thread"):eD(i,"thread/turns/list");let a=(i.result?.data??[]).find(e=>e.id===t);if(a){let r=this.tracker(t,e);if("inProgress"!==a.status)return this.settle(r,a),u(r);let i=await this.rpc("thread/read",{threadId:e},n);if(i.ok&&i.result?.thread?.status?.type==="active")return await this.rpc("thread/resume",{threadId:e,excludeTurns:!0},n),u(r);return r.status="lost",r.output=eT(a.items),r.error="the turn ended without a result (its Codex app-server exited)",r.finishedAt=Date.now(),u(r)}if(!(r=i.result?.nextCursor??null))break}return l("not_found","no such turn")}async liveTracker(e,t,n){let r=this.trackers.get(t);return r&&("inProgress"!==r.status||this.client&&!this.client.closed)?u(r):this.has("thread/turns/list")||(await this.connect(),this.has("thread/turns/list"))?this.recover(e,t,n):l("unsupported","cannot read turn history")}async observeTurn(e){let t=eI(e.provider_turn_id);if(!t)return l("not_found","unknown turn handle");if("ex"===t.kind)return this.execObserve(t.threadId,t.id,e);let n=await this.liveTracker(t.threadId,t.id,e);if(!n.ok)return n;let r=n.value;for(;"inProgress"===r.status;){let t=await new Promise(t=>{let n=()=>o("done"),i=()=>o("aborted"),a="number"==typeof e.deadline_at?Math.max(0,e.deadline_at-Date.now()):null,s=null===a?null:setTimeout(()=>o("deadline"),a);function o(a){s&&clearTimeout(s),e.signal?.removeEventListener("abort",i);let o=r.waiters.indexOf(n);o>=0&&r.waiters.splice(o,1),t(a)}if(e.signal?.aborted)return o("aborted");r.waiters.push(n),e.signal?.addEventListener("abort",i,{once:!0})});if("aborted"===t)return l("cancelled","observe aborted");if("deadline"===t)return l("timed_out","observe deadline")}return u(this.result(r))}async cancelTurn(e){let t=eI(e.provider_turn_id);if(!t)return l("not_found","unknown turn handle");if("ex"===t.kind)return this.execCancel(t.id);let n=await this.liveTracker(t.threadId,t.id,e);if(!n.ok)return n;let r=n.value;if("inProgress"!==r.status)return u("already_terminal");if(!this.has("turn/interrupt"))return l("unsupported","this Codex cannot interrupt turns");let i=await this.rpc("turn/interrupt",{threadId:t.threadId,turnId:t.id},e);if(!i.ok)return"inProgress"!==r.status?u("already_terminal"):eD(i,"turn/interrupt");let a=Date.now()+1e4;for(;"inProgress"===r.status&&Date.now()<a;)await new Promise(e=>setTimeout(e,20));return"inProgress"===r.status||"interrupted"===r.status?(r.status="interrupted",r.finishedAt=r.finishedAt??Date.now(),r.waiters.splice(0).forEach(e=>e()),u("cancelled")):u("already_terminal")}runPath(e,t){return w.default.join(this.runsDir,`${e.replace(/[^A-Za-z0-9-]/g,"")}.${t}`)}readMeta(e){try{return JSON.parse(y.default.readFileSync(this.runPath(e,"json"),"utf8"))}catch{return null}}execRunByKey(e){if(!y.default.existsSync(this.runsDir))return null;for(let t of y.default.readdirSync(this.runsDir)){if(!t.endsWith(".json"))continue;let n=this.readMeta(t.slice(0,-5));if(n?.key===e&&"string"==typeof n.thread_id)return{provider_turn_id:eb("ex",n.thread_id,String(n.run_id)),provider_session_id:n.thread_id}}return null}async execStart(e,t,n){let r;y.default.mkdirSync(this.runsDir,{recursive:!0});let i=(0,a.randomUUID)(),s=["-c",`sandbox_mode="${eC(n.authority)}"`,"-c",'approval_policy="never"'],o=e?[...this.command.slice(1),"exec","resume","--json",...s,e,"-"]:[...this.command.slice(1),"exec","--json","-C",t,...s,"-"],d=y.default.openSync(this.runPath(i,"jsonl"),"a");try{r=(0,h.spawn)(this.command[0],o,{cwd:t,env:this.env,detached:!0,stdio:["pipe",d,"ignore"]})}catch(e){return y.default.closeSync(d),l("unavailable",`codex exec did not start: ${e.message}`)}y.default.closeSync(d);let c=new Promise(e=>r.once("error",t=>e(t.message)));r.stdin?.on("error",()=>{}),r.stdin?.end(n.prompt);let p={run_id:i,pid:r.pid??null,thread_id:e,key:n.idempotency_key,authority:n.authority,cwd:t,correlation:n.correlation??{},cancelled:!1,started_at:Date.now()};if(y.default.writeFileSync(this.runPath(i,"json"),JSON.stringify(p)),r.unref(),!e){let e=Date.now()+3e4,t=null;for(c.then(e=>{t=e});;){let n=ey(em(this.readLog(i)));if(n.thread_id){p.thread_id=n.thread_id,y.default.writeFileSync(this.runPath(i,"json"),JSON.stringify(p));break}if(t||n.terminal||Date.now()>e||p.pid&&!e$(p.pid))return l("unavailable",`codex exec reported no thread${t?`: ${t}`:""}`);await new Promise(e=>setTimeout(e,25))}}return u({provider_turn_id:eb("ex",p.thread_id,i),provider_session_id:p.thread_id})}readLog(e){try{return y.default.readFileSync(this.runPath(e,"jsonl"),"utf8")}catch{return""}}execResult(e,t){let n=this.readMeta(t);if(!n)return null;let r=ey(em(this.readLog(t))),i="number"==typeof n.pid&&e$(n.pid);if(!r.terminal&&i&&!n.cancelled)return null;let a=n.cancelled&&"completed"!==r.terminal?"cancelled":"completed"===r.terminal?"completed":"failed";return{status:a,provider_session_id:e,output:r.output,failure:"completed"===a?null:"cancelled"===a?{code:"cancelled",message:"interrupted"}:{code:r.terminal?"codex_turn_failed":"interrupted",message:r.error??"codex exec ended without a result"},usage:r.usage,finished_at:Number(n.finished_at??Date.now())}}async execObserve(e,t,n){if(!this.readMeta(t))return l("not_found","no such run");for(;;){let r=this.execResult(e,t);if(r)return u(r);if(n.signal?.aborted)return l("cancelled","observe aborted");if("number"==typeof n.deadline_at&&Date.now()>=n.deadline_at)return l("timed_out","observe deadline");await new Promise(e=>setTimeout(e,25))}}execCancel(e){let t=this.readMeta(e);if(!t)return l("not_found","no such run");let n=ey(em(this.readLog(e)));if(t.cancelled||n.terminal||"number"!=typeof t.pid||!e$(t.pid))return u("already_terminal");try{process.kill(t.pid,"SIGINT")}catch{return u("already_terminal")}return y.default.writeFileSync(this.runPath(e,"json"),JSON.stringify({...t,cancelled:!0,finished_at:Date.now()})),u("cancelled")}}function e$(e){try{return process.kill(e,0),!0}catch{return!1}}let eM=null;"off"!==process.env.BOTMANCERS_CODEX_PROVIDER&&g.set("codex",()=>{var e;return eM||(eM=new eO),e=eM,{kind:"codex-direct",capabilities:()=>e.capabilities(),ready:()=>e.ready(),listSessions:t=>e.listSessions(t),getSession:t=>e.getSession(t),readTranscript:t=>e.readTranscript(t),startSession:t=>e.startSession(t),sendTurn:t=>e.sendTurn(t),observeTurn:t=>e.observeTurn(t),cancelTurn:t=>e.cancelTurn(t)}});var eL=e.i(40596),eW=e.i(28420);let eF="cursor",ej=/^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/,eH=new Map,eP=`
110
- import { createRequire } from 'module';
111
- import { pathToFileURL } from 'url';
112
- import path from 'path';
113
- const [op, spec, ...rest] = process.argv.slice(1);
114
- const out = value => process.stdout.write(JSON.stringify(value) + '\\n');
115
- async function load() {
116
- const abs = path.isAbsolute(spec) ? spec : createRequire(path.join(process.cwd(), 'package.json')).resolve(spec);
117
- const mod = await import(pathToFileURL(abs).href);
118
- return mod.default && mod.default.Agent ? mod.default : mod;
119
- }
120
- try {
121
- const sdk = await load();
122
- const Agent = sdk.Agent;
123
- if (op === 'probe') {
124
- out({ resume: typeof Agent?.resume === 'function', create: typeof Agent?.create === 'function', list: typeof Agent?.list === 'function', version: typeof sdk.version === 'string' ? sdk.version : null });
125
- } else if (op === 'create') {
126
- const chat = await Agent.create({ cwd: rest[0] });
127
- out({ id: chat && chat.id });
128
- } else if (op === 'list') {
129
- out(await Agent.list({}));
130
- } else if (op === 'turn') {
131
- const [id, cwd, mode, prompt] = rest;
132
- const agent = await Agent.resume(id, { cwd, mode: mode === '-' ? null : mode });
133
- for await (const event of agent.stream(prompt)) out(event);
134
- } else {
135
- process.exit(2);
136
- }
137
- } catch (error) {
138
- if (op === 'turn') out({ type: 'result', subtype: 'sdk_error', is_error: true, result: null });
139
- process.exit(op === 'probe' ? 3 : 1);
140
- }
141
- `;function eU(e,t,n){return["--input-type=module","-e",eP,e,t.sdkModule,...n]}function ez(e){return"string"==typeof e?e:null}function eB(e,t){let n=e.env??process.env,r=e.stateDir??(n.BOTMANCERS_CURSOR_STATE_DIR?.trim()||w.default.join(w.default.dirname(w.default.resolve((0,k.dbPath)(n))),"providers","cursor"));return{cliPath:e.cliPath??(n.BOTMANCERS_CURSOR_CLI?.trim()||"cursor-agent"),sdkModule:e.sdkModule??(n.BOTMANCERS_CURSOR_SDK_MODULE?.trim()||"@cursor/sdk"),stateDir:w.default.join(r,t.replace(/[^A-Za-z0-9._-]/g,"_")),pollMs:e.pollMs??100,env:n}}function eG(e){return w.default.join(e.stateDir,"state.json")}function eK(e,t,n){return w.default.join(e.stateDir,"turns",`${t}.${n}`)}function eJ(e){try{let t=JSON.parse(y.default.readFileSync(eG(e),"utf8"));if(t&&1===t.version)return t}catch{}return{version:1,chats:{},turns:{},keys:{}}}function eV(e,t){y.default.mkdirSync(w.default.join(e.stateDir,"turns"),{recursive:!0});let n=`${eG(e)}.${process.pid}.${(0,a.randomUUID)()}.tmp`;y.default.writeFileSync(n,JSON.stringify(t)),y.default.renameSync(n,eG(e))}function eX(e){try{return y.default.readFileSync(e,"utf8")}catch{return null}}function eY(e){if(!e)return!1;try{return process.kill(e,0),!0}catch(e){return"EPERM"===e.code}}function eZ(e){try{return y.default.realpathSync(e)}catch{return w.default.resolve(e)}}function eQ(e){try{return y.default.statSync(e).isDirectory()}catch{return!1}}function e0(e,t,n,r){return{state:"terminal",parsed:n,result:{status:"failed",provider_session_id:e.chat,output:null,failure:{code:t,message:t},usage:n.result?.usage??null,finished_at:r}}}function e1(e,t){let n=eX(eK(e,t.id,"exit")),r=null!==n||!eY(t.pid),i=function(e,t=!1){let n={init:null,steps:[],result:null,result_events:0,malformed:0},r=e.split("\n");for(let e of(t||r.pop(),r)){let t,r=e.trim();if(!r)continue;try{let e=JSON.parse(r);if(!e||"object"!=typeof e||Array.isArray(e))throw Error("not an object");t=e}catch{n.malformed++;continue}let i="number"==typeof t.timestamp_ms?t.timestamp_ms:null;if("system"!==t.type||"init"!==t.subtype||n.init)if("assistant"===t.type){let e=function(e){let t=e?.content;if("string"==typeof t)return t;if(!Array.isArray(t))return null;let n=t.map(e=>e&&"text"===e.type?ez(e.text):null).filter(e=>null!==e);return n.length?n.join(""):null}(t.message);e&&n.steps.push({role:"assistant",text:e,at:i})}else"tool_call"===t.type&&"completed"===t.subtype?n.steps.push({role:"tool",text:`${function(e){let t=Object.keys(e.tool_call&&"object"==typeof e.tool_call?e.tool_call:{}).find(e=>/ToolCall$/.test(e));return t?t.replace(/ToolCall$/,""):"tool"}(t)} (completed)`,at:i}):"result"===t.type&&(n.result_events++,n.result||(n.result={ok:!1===t.is_error&&"success"===t.subtype,subtype:ez(t.subtype),text:ez(t.result),usage:function(e){let t=e.usage&&"object"==typeof e.usage?e.usage:null,n=e.total_cost_usd??t?.costUsd??t?.cost_usd;return t||void 0!==n?d({input_tokens:t?.inputTokens??t?.input_tokens,output_tokens:t?.outputTokens??t?.output_tokens,cost_usd:n}):null}(t)}));else n.init={session_id:ez(t.session_id),cwd:ez(t.cwd)}}return n}(eX(eK(e,t.id,"out"))??"",r),a=Date.now();if(i.init){if(i.init.session_id!==t.chat)return e0(t,"session_mismatch",i,a);if(null!==i.init.cwd&&eZ(i.init.cwd)!==eZ(t.workspace))return e0(t,"workspace_mismatch",i,a)}if(i.result){if(!i.result.ok)return e0(t,`cursor_${(i.result.subtype??"error").replace(/[^A-Za-z0-9_]/g,"_").slice(0,40)}`,i,a);let e=i.result.text??(i.steps.filter(e=>"assistant"===e.role).map(e=>e.text).join("\n")||null);return{state:"terminal",parsed:i,result:{status:"completed",provider_session_id:t.chat,output:e,failure:null,usage:i.result.usage,finished_at:a}}}return null!==t.cancel_requested_at?{state:"terminal",parsed:i,result:{status:"cancelled",provider_session_id:t.chat,output:null,failure:{code:"cancelled",message:"cancelled"},usage:null,finished_at:t.cancel_requested_at}}:null!==n?e0(t,`exit_${String(Number.parseInt(n,10))}`,i,a):eY(t.pid)?{state:"running",parsed:i}:e0(t,"process_lost",i,a)}function e4(e,t,n,r,i){return new Promise(a=>{let s=(0,h.spawn)(e,t,{cwd:n,env:r.env,stdio:["ignore","pipe","ignore"]}),o="",d=setTimeout(()=>s.kill("SIGKILL"),i);s.stdout?.on("data",e=>{o+=String(e)}),s.on("error",()=>{clearTimeout(d),a({status:null,stdout:o})}),s.on("close",e=>{clearTimeout(d),a({status:e,stdout:o})})})}async function e2(e,t,n){let r="cli"===t?await e4(e.cliPath,["create-chat"],n,e,6e4):await e4(process.execPath,eU("create",e,[n]),n,e,6e4);if(0!==r.status)return null;let i=r.stdout.trim().split("\n").pop()?.trim()??"",a=i;if("sdk"===t)try{a=JSON.parse(i).id}catch{a=null}return"string"==typeof a&&ej.test(a)?a:null}function e3(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}async function e5(e,t){let n;y.default.mkdirSync(e.stateDir,{recursive:!0});let r="cli"===t?await e4(e.cliPath,["ls","--output-format","json"],e.stateDir,e,6e4):await e4(process.execPath,eU("list",e,[]),e.stateDir,e,6e4);if(0!==r.status)return null;try{n=JSON.parse(r.stdout.trim())}catch{return null}let i=Array.isArray(n)?n:n?.sessions??n?.chats;if(!Array.isArray(i))return null;let a=[];for(let e of i){if(!e||"object"!=typeof e)continue;let t=ez(e.id)??ez(e.chatId)??ez(e.session_id);if(!t||!ej.test(t))continue;let n=ez(e.cwd)??ez(e.workspace);a.push({id:t,workspace:n&&w.default.isAbsolute(n)?n:null,title:ez(e.title)??ez(e.name),created_at:e3(e.createdAt??e.created_at),updated_at:e3(e.updatedAt??e.updated_at)})}return a}g.set("claude",()=>(function(e={}){let t=e.env??process.env,n=e.bin??((t.BOTMANCERS_CLAUDE_BIN||"").trim()||"claude"),r=e.configDir??function(e=process.env){let t=(e.CLAUDE_CONFIG_DIR||"").trim();return t?w.default.resolve(t):w.default.join(v.default.homedir(),".claude")}(t),i=e.stateDir??function(e=process.env){let t=(e.BOTMANCERS_CLAUDE_STATE_DIR||"").trim();return t?w.default.resolve(t):w.default.join(w.default.dirname(w.default.resolve((0,k.dbPath)(e))),"claude-provider")}(t),s=e.spawn??h.spawn,o=e.isPidAlive??K,d=e.startupTimeoutMs??6e4,c=e.exitGraceMs??1e4,p=e.pollMs??100,_=e.now??Date.now,f=w.default.join(i,"turns"),m=w.default.join(i,"keys"),g=(e,t)=>w.default.join(f,`${e}.${t}`),E=e=>{if(!/^ct-[0-9a-f-]{36}$/.test(e))return null;try{return JSON.parse(y.default.readFileSync(g(e,"json"),"utf8"))}catch{return null}},I=e=>{let t=g(e.id,`json.${process.pid}.tmp`);y.default.writeFileSync(t,JSON.stringify(e)),y.default.renameSync(t,g(e.id,"json"))},W=e=>{try{return y.default.readFileSync(e,"utf8")}catch{return""}};function F(e,t,n,r){return{provider_session_id:e.id,title:e.title,workspace:e.workspace,created_at:e.created_at,updated_at:e.updated_at,lifecycle:null!==e.updated_at&&n-e.updated_at>r?"archived":"open",resumable:e.messages>0,busy:t.has(e.id)}}function j(){return new Set([...function(e,t){let n=new Set,r=w.default.join(e,"sessions");for(let e of S(r))if(/^\d+\.json$/.test(e))try{let i=JSON.parse(y.default.readFileSync(w.default.join(r,e),"utf8"));b(i.sessionId)&&"number"==typeof i.pid&&t(i.pid)&&n.add(i.sessionId)}catch{}return n}(r,o),...function(){let e=new Set;for(let t of y.default.existsSync(f)?y.default.readdirSync(f):[]){if(!t.endsWith(".json"))continue;let n=E(t.slice(0,-5));n&&"running"===n.state&&!X(n)&&e.add(n.session_id)}return e}()])}function X(e){var t;let n,r,i=M(W(g(e.id,"out.jsonl"))),a=e.finished_at??Date.now(),s={provider_session_id:e.session_id,usage:{input_tokens:L((n=(t=i.result)&&$(t.usage)?t.usage:{}).input_tokens)??L(n.inputTokens),output_tokens:L(n.output_tokens)??L(n.outputTokens),total_cost_usd:t&&"number"==typeof(r=t.total_cost_usd)&&Number.isFinite(r)&&r>=0?r:null},finished_at:a};if(null!==i.session_id&&i.session_id!==e.session_id)return{...s,status:"failed",output:null,failure:{code:"session_mismatch",message:"Claude Code ran a different session than the one requested."}};if(i.result)return H(i.result)?{...s,status:"completed",output:"string"==typeof i.result.result?i.result.result:null,failure:null}:{...s,status:"failed",output:null,failure:P(i.result,i)};if("cancelled"===e.state)return{...s,status:"cancelled",output:null,failure:{code:"cancelled",message:"Cancelled."}};if(!("exited"===e.state||"spawn_failed"===e.state||null===e.pid||!o(e.pid)))return null;let d=W(g(e.id,"err.log")),l=/unknown option|unrecognized option|invalid option/i.test(d);return{...s,status:"failed",output:null,failure:l?{code:"incompatible_version",message:"The installed Claude Code rejected the non-interactive flag set."}:{code:"process_exited",message:`Claude Code exited without a result${null===e.exit_code?"":` (exit ${e.exit_code})`}.`}}}let Y=e=>w.default.join(m,e.replace(/[^a-zA-Z0-9_-]/g,"_"));async function Z(e,r,i,o){let u,c=`ct-${(0,a.randomUUID)()}`;y.default.mkdirSync(f,{recursive:!0});let _={id:c,session_id:i,kind:e,authority:r.authority,workspace:o,pid:null,state:"running",exit_code:null,created_at:Date.now(),finished_at:null},m=y.default.openSync(g(c,"out.jsonl"),"a"),h=y.default.openSync(g(c,"err.log"),"a"),w=null;try{var k,v;let a;u=s(n,(k=r.authority,v="send"===e?{resume:i}:{sessionId:i},a=z[k],["-p","--output-format","stream-json","--verbose","--input-format","text","--permission-mode",a.permission_mode,"--permission-prompts","none","--tools",a.tools.join(","),"--allowedTools",a.tools.join(","),"--strict-mcp-config",..."resume"in v?["--resume",v.resume]:["--session-id",v.sessionId]]),{cwd:o,env:J(t),stdio:["pipe",m,h],detached:!0})}finally{y.default.closeSync(m),y.default.closeSync(h)}u.on("error",e=>{w=e}),_.pid=u.pid??null,I(_),u.on("exit",e=>{let t=E(c);t&&"running"===t.state&&I({...t,state:"exited",exit_code:e,finished_at:Date.now()})}),u.stdin?.on("error",()=>{}),u.stdin?.end(r.prompt),u.unref();let b=Date.now()+d;for(;;){let e=E(c),t=M(W(g(c,"out.jsonl")));if(w)return I({...e,state:"spawn_failed",finished_at:Date.now()}),{turn:null,error:l("unavailable",`Claude Code could not start: ${w.message}`)};if(null!==t.session_id&&t.session_id!==i)return Q(e),I({...e,state:"cancelled",finished_at:Date.now()}),{turn:null,error:l("not_resumable","Claude Code started a different session; it was stopped.")};if(null===t.session_id&&t.result&&!H(t.result)){let e=P(t.result,t);return{turn:null,error:l(V[e.code],e.message)}}if(null!==t.session_id||t.result)return{turn:e,error:null};let n=X(e);if(n){let e=n.failure?.code;return{turn:null,error:l(e?V[e]??"unavailable":"unavailable",n.failure?.message??"Claude Code exited.")}}if(Date.now()>=b)return{turn:e,error:null};await new Promise(e=>setTimeout(e,Math.min(p,25)))}}function Q(e){if(null!==e.pid)for(let t of[-e.pid,e.pid])try{process.kill(t,"SIGTERM");return}catch{}}async function ee(e,r,i,a){if(!z[r.authority])return l("unsupported_authority",`No Claude Code mode for ${String(r.authority)}.`);let s=function(e){y.default.mkdirSync(m,{recursive:!0});let t=w.default.join(m,e.replace(/[^a-zA-Z0-9_-]/g,"_"));try{return y.default.writeFileSync(t,"",{flag:"wx"}),{existing:null,claimed:!0}}catch{let e=W(t).trim();return{existing:e?E(e):null,claimed:!1}}}(r.idempotency_key);if(!s.claimed)return s.existing?u({provider_turn_id:s.existing.id,provider_session_id:s.existing.session_id}):l("busy","A turn with this idempotency key is starting.");let o=()=>y.default.rmSync(Y(r.idempotency_key),{force:!0}),d=function(){let e,r=G.get(n);if(r)return r;try{let r=(0,h.execFileSync)(n,["--version"],{env:J(t),encoding:"utf8",timeout:2e4,stdio:["ignore","pipe","pipe"]}),i=/(\d+\.\d+\.\d+)/.exec(r)?.[1]??null;e=i?0>function(e,t){let n=e.split(".").map(Number),r=t.split(".").map(Number);for(let e=0;e<3;e++)if((n[e]??0)!==(r[e]??0))return(n[e]??0)-(r[e]??0);return 0}(i,U)?{ok:!1,code:"incompatible_version",message:`Claude Code ${i} is older than ${U}.`}:{ok:!0,version:i}:{ok:!1,code:"incompatible_version",message:"Claude Code did not report a version."}}catch(e){return{ok:!1,code:"unavailable",message:`Claude Code is not runnable: ${e.message}`}}return G.set(n,e),e}();if(!d.ok)return o(),l(d.code,d.message);let c=await Z(e,r,i,a);return c.turn?(y.default.writeFileSync(Y(r.idempotency_key),c.turn.id),u({provider_turn_id:c.turn.id,provider_session_id:i})):(o(),c.error)}return{kind:"claude-code",capabilities:()=>({...B,authorities:[...B.authorities]}),async listSessions(e){let t=e.scope;if("workspaces"===t.kind&&0===t.workspaces.length)return u({items:[],next_cursor:null});let n="sessions"===t.kind?t.provider_session_ids.map(e=>x(r,e)).filter(e=>!!e).map(e=>({id:w.default.basename(e,".jsonl"),file:e,mtime_ms:y.default.statSync(e).mtimeMs})):function(e,t){let n=t?t.flatMap(q):null,r=[];for(let t of S(A(e))){if(n&&!n.some(e=>t===e||t.startsWith(`${e}-`)))continue;let i=w.default.join(A(e),t);for(let e of S(i)){if(!e.endsWith(".jsonl"))continue;let t=e.slice(0,-6);if(b(t))try{let n=y.default.statSync(w.default.join(i,e));n.isFile()&&r.push({id:t,file:w.default.join(i,e),mtime_ms:n.mtimeMs})}catch{}}}return r.sort((e,t)=>t.mtime_ms-e.mtime_ms||e.id.localeCompare(t.id))}(r,"workspaces"===t.kind?t.workspaces:null),i=Math.max(0,Number(e.cursor??0)||0),a=(e.query??"").trim().toLowerCase(),s=j(),o=_(),d=864e5*O(r),c=[],p=20*e.limit,f=i;for(;f<n.length&&c.length<e.limit&&f-i<p;f++){if(e.signal?.aborted)return l("cancelled","list aborted");let r=D(n[f]);r&&function(e,t){return"all_provider_sessions"===e.kind||("sessions"===e.kind?e.provider_session_ids.includes(t.id):null!==t.workspace&&e.workspaces.some(e=>{var n;let r;return n=t.workspace,n===(r=e.replace(/\/+$/,"")||"/")||n.startsWith("/"===r?"/":`${r}/`)}))}(t,r)&&(!a||`${r.title??""}
142
- ${r.workspace??""}`.toLowerCase().includes(a))&&c.push(F(r,s,o,d))}return u({items:c,next_cursor:f<n.length?String(f):null})},async getSession(e){let t=x(r,e.provider_session_id);if(!t)return u(null);let n=D({id:e.provider_session_id,file:t,mtime_ms:y.default.statSync(t).mtimeMs});return u(n?F(n,j(),_(),864e5*O(r)):null)},async readTranscript(e){let t=x(r,e.provider_session_id),n=t?function(e,t){let n=R(e);if(!n)return null;let r=[],i=(e,t,n)=>{t.trim()&&r.push({seq:r.length+1,role:e,text:t.length>4e3?`${t.slice(0,3999)}…`:t,at:n})};for(let e of n.records){if(!N(e)||void 0!==e.sessionId&&e.sessionId!==t)continue;let n=T(e),r=C(e),a="user"===e.type?"user":"assistant";if("string"==typeof r){i(a,r,n);continue}for(let e of r??[])if(e&&"object"==typeof e){if("text"===e.type)i(a,String(e.text??""),n);else if("tool_use"===e.type)i("tool",`tool call: ${String(e.name??"unknown")}`,n);else if("tool_result"===e.type){let t="string"==typeof e.content?e.content:Array.isArray(e.content)?e.content.map(e=>e&&"object"==typeof e&&"text"===e.type?String(e.text??""):"").join("\n"):"";i("tool",`tool result: ${t||"(no text)"}`,n)}}}return r}(t,e.provider_session_id):null;if(!n)return l("not_found","Claude Code has no such session.");let i=Math.max(0,Number(e.cursor??0)||0);return u({items:n.slice(i,i+e.limit),next_cursor:i+e.limit<n.length?String(i+e.limit):null})},async startSession(e){let t=null;try{t=y.default.statSync(e.workspace)}catch{t=null}return t?.isDirectory()?ee("start",e,(0,a.randomUUID)(),e.workspace):l("invalid_input","The workspace is not a directory here.")},async sendTurn(e){if(!b(e.provider_session_id))return l("not_found","Not a Claude Code session id.");let t=x(r,e.provider_session_id);if(!t)return l("not_found","Claude Code has no such session.");let n=D({id:e.provider_session_id,file:t,mtime_ms:y.default.statSync(t).mtimeMs});if(!n||0===n.messages||!n.workspace)return l("not_resumable","The session has no conversation to resume.");if(j().has(n.id)){let t,n=(t=W(Y(e.idempotency_key)).trim())?E(t):null;return n?u({provider_turn_id:n.id,provider_session_id:n.session_id}):l("busy","The session is open in a running Claude Code process.")}return ee("send",e,n.id,n.workspace)},async observeTurn(e){let t=null;for(;;){let n=E(e.provider_turn_id);if(!n)return l("not_found","No such turn.");let r=X(n);if(r&&"running"===n.state&&null!==n.pid&&o(n.pid)&&(t??=Date.now(),Date.now()-t<c&&!e.signal?.aborted&&!("number"==typeof e.deadline_at&&Date.now()>=e.deadline_at))){await new Promise(e=>setTimeout(e,p));continue}if(r)return"running"===n.state&&I({...n,state:"exited",finished_at:r.finished_at}),u(r);if(e.signal?.aborted)return l("cancelled","observe aborted");if("number"==typeof e.deadline_at&&Date.now()>=e.deadline_at)return l("timed_out","observe deadline");await new Promise(e=>setTimeout(e,p))}},async cancelTurn(e){let t=E(e.provider_turn_id);return t?X(t)?u("already_terminal"):(Q(t),I({...t,state:"cancelled",finished_at:Date.now()}),u("cancelled")):l("not_found","No such turn.")}}})()),r={provider:eF},i=function(e){return function(e,t={}){let n=eB(t,e.id),r=()=>(function(e={}){let t=eB(e,"probe"),n=`${t.cliPath}
143
- ${t.sdkModule}
144
- ${t.env===process.env?"":JSON.stringify(t.env)}`,r=eH.get(n);if(r&&Date.now()-r.at<3e5)return r.probe;let i=function(e){let t=(0,h.spawnSync)(e.cliPath,["--version"],{encoding:"utf8",timeout:15e3,env:e.env,stdio:["ignore","pipe","pipe"]}),n=0===t.status?String(t.stdout??"").trim().split("\n").pop()?.trim()??"":"";if(!/^[0-9][\w.+-]{0,80}$/.test(n))return{available:!1,version:null,list:!1};let r=(0,h.spawnSync)(e.cliPath,["ls","--help"],{encoding:"utf8",timeout:15e3,env:e.env,stdio:["ignore","pipe","pipe"]});return{available:!0,version:n,list:0===r.status&&/--output-format\b[^\n]*\bjson\b/.test(String(r.stdout??""))}}(t),a=i.available?{available:!1,version:null,list:!1}:function(e){let t=(0,h.spawnSync)(process.execPath,eU("probe",e,[]),{encoding:"utf8",timeout:15e3,env:e.env,stdio:["ignore","pipe","pipe"]});if(0!==t.status)return{available:!1,version:null,list:!1};try{let e=JSON.parse(String(t.stdout).trim().split("\n").pop()??""),n=!0===e.resume&&!0===e.create;return{available:n,version:n&&"string"==typeof e.version?e.version.slice(0,80):null,list:n&&!0===e.list}}catch{return{available:!1,version:null,list:!1}}}(t),s={backend:i.available?"cli":a.available?"sdk":null,cli:i,sdk:a};return eH.set(n,{at:Date.now(),probe:s}),s})(t),i=()=>{var e;let t;return t=null!==(e=r()).backend,{list:"cli"===e.backend?e.cli.list:"sdk"===e.backend&&e.sdk.list,search:!1,read:t,resume:t,start:t,cancel:t,usage:t,authorities:t?["read_only","workspace_write"]:[],max_page_size:50}},s=e=>l(null===r().backend?"unavailable":"unsupported",`Cursor ${e} is not available.`);function o(e,t,r){let i=r.turns.some(t=>e.turns[t]&&"running"===e1(n,e.turns[t]).state),a=r.turns.length?e.turns[r.turns[r.turns.length-1]]?.started_at??r.updated_at:r.updated_at;return{provider_session_id:t,title:r.title,workspace:r.workspace,created_at:r.created_at,updated_at:Math.max(r.updated_at,a),lifecycle:"open",resumable:!0,busy:i}}async function d(e){let t=await e5(n,e);return t?u(t):l("unavailable","Cursor session listing failed.")}function c(e,t,r,i){let s=e.chats[r],o={id:`ct-${(0,a.randomUUID)()}`,chat:r,workspace:s.workspace,prompt:i.prompt,authority:i.authority,backend:t,pid:null,started_at:Date.now(),cancel_requested_at:null,correlation:{...i.correlation}};return e.turns[o.id]=o,e.keys[i.idempotency_key]=o.id,s.turns.push(o.id),eV(n,e),o.pid=function(e,t){y.default.mkdirSync(w.default.join(e.stateDir,"turns"),{recursive:!0});let[n,r]="cli"===t.backend?[e.cliPath,["--print","--output-format","stream-json","--trust","--workspace",t.workspace,..."read_only"===t.authority?["--mode","ask"]:[],"--resume",t.chat,t.prompt]]:[process.execPath,eU("turn",e,[t.chat,t.workspace,"read_only"===t.authority?"ask":"-",t.prompt])];try{let i=(0,h.spawn)("/bin/sh",["-c",'"$@" >"$BM_OUT" 2>"$BM_ERR" </dev/null; echo $? >"$BM_EXIT.tmp" && mv "$BM_EXIT.tmp" "$BM_EXIT"',"sh",n,...r],{cwd:t.workspace,detached:!0,stdio:"ignore",env:{...e.env,BM_OUT:eK(e,t.id,"out"),BM_ERR:eK(e,t.id,"err"),BM_EXIT:eK(e,t.id,"exit"),BOTMANCERS_CORRELATION:JSON.stringify(t.correlation)}});return i.on("error",()=>{}),i.unref(),i.pid??null}catch{return null}}(n,o),eV(n,e),u({provider_turn_id:o.id,provider_session_id:r})}function p(e,t){let n=e.keys[t];return n&&e.turns[n]?u({provider_turn_id:n,provider_session_id:e.turns[n].chat}):null}return{kind:eF,probe:r,capabilities:i,async listSessions(e){let t=r().backend;if(!t||!i().list)return s("session listing");let a=await d(t);if(!a.ok)return a;let l=eJ(n),c=a.value.filter(t=>{var n,r,i;return n=e.scope,r=t.id,i=t.workspace,"all_provider_sessions"===n.kind||("sessions"===n.kind?n.provider_session_ids.includes(r):null!==i&&n.workspaces.some(e=>i===e||i.startsWith(`${e.replace(/\/+$/,"")}/`)))}),p=e.cursor&&/^\d+$/.test(e.cursor)?Number(e.cursor):0,_=c.slice(p,p+Math.min(e.limit,50)),f=Date.now();for(let e of _)!l.chats[e.id]&&e.workspace&&(l.chats[e.id]={workspace:e.workspace,title:e.title,origin:"listed",created_at:e.created_at??f,updated_at:e.updated_at??f,turns:[]});return eV(n,l),u({items:_.map(e=>l.chats[e.id]?{...o(l,e.id,l.chats[e.id]),title:e.title??l.chats[e.id].title}:{provider_session_id:e.id,title:e.title,workspace:null,created_at:e.created_at,updated_at:e.updated_at,lifecycle:"open",resumable:!1,busy:!1}),next_cursor:p+_.length<c.length?String(p+_.length):null})},async getSession(e){let t=r().backend;if(!t)return s("sessions");let a=eJ(n),l=a.chats[e.provider_session_id];if(!l)return u(null);if(i().list){let n=await d(t);if(!n.ok)return n;if(!n.value.some(t=>t.id===e.provider_session_id))return u(null)}return u(o(a,e.provider_session_id,l))},async importSession(e){let t=r().backend;if(!t)return s("sessions");if(!ej.test(e.provider_session_id))return l("invalid_input","Not a Cursor session id.");if(!w.default.isAbsolute(e.workspace)||!eQ(e.workspace))return l("invalid_input","workspace must be an existing absolute directory.");let a=eJ(n),c=a.chats[e.provider_session_id];if(c)return u(o(a,e.provider_session_id,c));let p=e.workspace,_=null;if(i().list){let n=await d(t);if(!n.ok)return n;let r=n.value.find(t=>t.id===e.provider_session_id);if(!r)return l("not_found","Cursor does not list that session.");p=r.workspace??p,_=r.title}let f=Date.now();return a.chats[e.provider_session_id]={workspace:p,title:_,origin:i().list?"listed":"imported",created_at:f,updated_at:f,turns:[]},eV(n,a),u(o(a,e.provider_session_id,a.chats[e.provider_session_id]))},async readTranscript(e){if(!r().backend)return s("transcripts");let t=eJ(n),i=t.chats[e.provider_session_id];if(!i)return l("not_found","Unknown Cursor session.");let a=[];for(let e of i.turns){let r=t.turns[e];if(r)for(let e of(a.push({seq:a.length+1,role:"user",text:r.prompt,at:r.started_at}),e1(n,r).parsed.steps))a.push({seq:a.length+1,role:e.role,text:e.text,at:e.at})}let o=e.cursor&&/^\d+$/.test(e.cursor)?Number(e.cursor):0,d=a.slice(o,o+Math.min(e.limit,50));return u({items:d,next_cursor:o+d.length<a.length?String(o+d.length):null})},async startSession(e){let t=r().backend;if(!t)return s("sessions");let i=p(eJ(n),e.idempotency_key);if(i)return i;if(!w.default.isAbsolute(e.workspace)||!eQ(e.workspace))return l("invalid_input","workspace must be an existing absolute directory.");let a=await e2(n,t,e.workspace);if(!a)return l("unavailable","Cursor did not create a chat.");let o=eJ(n),d=Date.now();return o.chats[a]={workspace:e.workspace,title:null,origin:"created",created_at:d,updated_at:d,turns:[]},c(o,t,a,e)},async sendTurn(e){let t=r().backend;if(!t)return s("sessions");let i=eJ(n),a=p(i,e.idempotency_key);if(a)return a;let o=i.chats[e.provider_session_id];return o?o.turns.some(e=>i.turns[e]&&"running"===e1(n,i.turns[e]).state)?l("busy","A turn is in flight."):c(i,t,e.provider_session_id,e):l("not_found","Unknown Cursor session.")},async observeTurn(e){for(;;){let t=eJ(n).turns[e.provider_turn_id];if(!t)return l("not_found","Unknown Cursor turn.");let r=e1(n,t);if("terminal"===r.state)return u(r.result);if(e.signal?.aborted)return l("cancelled","observe aborted");if("number"==typeof e.deadline_at&&Date.now()>=e.deadline_at)return l("timed_out","observe deadline");await new Promise(e=>setTimeout(e,n.pollMs))}},async cancelTurn(e){let t=eJ(n),r=t.turns[e.provider_turn_id];if(!r)return l("not_found","Unknown Cursor turn.");if("terminal"===e1(n,r).state)return u("already_terminal");if(r.cancel_requested_at=Date.now(),eV(n,t),r.pid){try{process.kill(-r.pid,"SIGTERM")}catch{}let e=r.pid;setTimeout(()=>{try{process.kill(-e,"SIGKILL")}catch{}},2e3).unref()}return u("cancelled")}}}(e)},t="connectionId"in r?f:m,n="connectionId"in r?r.connectionId:r.provider,i?t.set(n,i):t.delete(n),g.set("muse",e=>(function(e,t={}){let n,r=((n=ep.get(e))||(n={hosts:{},probe:null,startKeys:new Map},ep.set(e,n)),n),i={command:t.command??process.env.BOTMANCERS_MUSE_BIN??"muse",commandArgs:t.commandArgs??[],serveArgs:t.serveArgs??function(){let e=process.env.BOTMANCERS_MUSE_SERVE_ARGS;if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}(),env:t.env??{},rpcTimeoutMs:t.rpcTimeoutMs??3e4},a=t.cancelSettleMs??1e4;async function s(e){let t=r.hosts[e];t||(t=new ec(i,e),r.hosts[e]=t);let n=await t.start();return(r.probe=e_(t.info,n),n)?{ok:!1,error:n}:"ready"!==r.probe.status?(t.close(),{ok:!1,error:{code:"unsupported",message:r.probe.reason??"unsupported"}}):{ok:!0,host:t}}function o(){return s(["read_only","workspace_write"].find(e=>r.hosts[e]?.alive())??"read_only")}async function d(e,t,n){return e.request(t,n)}async function c(e,t){let n=await o();return n.ok?d(n.host,"session/read",{sessionId:e,excludeItems:!t}):n}function p(){return r.probe?.durability??"durable"}async function _(e,t){for(let n of Object.values(r.hosts))if(n&&n!==e&&n.loaded.has(t)){if(n.runningTurns()>0)return{ok:!1,error:{code:"busy",message:"busy (loaded by another host)"}};n.close()}if(e.loaded.has(t)){let n=await d(e,"session/read",{sessionId:t,excludeItems:!0});return n.ok?{ok:!0,session:Q(n.result.session)??{}}:n}let n=await d(e,"session/resume",{commandId:el(),sessionId:t,excludeItems:!0});return n.ok?(e.loaded.add(t),{ok:!0,session:Q(n.result.session)??{}}):n}async function f(e,t,n){let r=await d(e,"turn/start",{commandId:el(),sessionId:t,input:[{type:"text",text:n}]});if(!r.ok)return r;let i=ee(r.result.turnId);return i?(e.turns.has(i)||e.turns.set(i,{sessionId:t,completed:null,usageRecords:[]}),u(i)):l("unavailable","provider_error (turn/start without turnId)")}async function m(e,t,n,r,i,a,s){let o,d,l,u,p=s;if(void 0===p){let t=await c(e,!0);p=t.ok?Q(t.result.history)?.items:null}let _="completed"===n?"completed":"cancelled"===n?"cancelled":"failed";return{status:_,provider_session_id:e,output:ei(p,t),failure:"completed"===_?null:"cancelled"===_?{code:"cancelled",message:ee(i)??"cancelled"}:(o=Q(r),d=ee(o?.kind)??"",l=(ee(o?.message)??ee(i)??d)||"turn failed",u=`${d} ${l}`,{code:eo.test(u)?"auth":ed.test(u)||o?.quota?"usage_cap":d||"failed",message:l.slice(0,500)}),usage:a?{input_tokens:a.input_tokens,output_tokens:a.output_tokens}:null,finished_at:Date.now()}}function g(e){for(let t of Object.values(r.hosts)){let n=t?.alive()?t.turns.get(e):void 0;if(t&&n)return{host:t,track:n}}return null}async function h(e,t,n,r){for(;;){let i=await c(e,!0);if(!i.ok)return i;let a=Q(i.result.session),s=Q(i.result.lastTurn),o=Q(i.result.history)?.items;if(s&&s.turnId===t)return u(await m(e,t,s.terminal,s.error,s.reason,null,o));if(a?.activeTurnId!==t)return u({status:"failed",provider_session_id:e,output:ei(o,t),failure:{code:"host_lost",message:"The Muse host running this turn exited before it finished."},usage:null,finished_at:Date.now()});if(n?.aborted)return l("cancelled","observe aborted");if("number"==typeof r&&Date.now()>=r)return l("timed_out","observe deadline");await new Promise(e=>setTimeout(e,500))}}return{kind:"muse-msp",capabilities(){let e=r.probe?.capabilities??Y;return{...e,authorities:[...e.authorities]}},async probe(){let e=await o();return r.probe??e_(null,e.ok?null:e.error)},async listSessions(e){let t=await o();if(!t.ok)return t;let n={},r="sessions"===e.scope.kind?e.scope.provider_session_ids:null;if(r){if(0===r.length)return u({items:[],next_cursor:null});n.sessionId={anyOf:r.slice(0,200)}}let i=(e.query??"").trim().split(/\s+/).filter(Boolean).slice(0,16);i.length>0&&(n.text={allOf:i,fields:["name","title"]});let a=await d(t.host,"session/list",{limit:Math.min(Math.max(1,e.limit),50),...e.cursor?{cursor:e.cursor}:{},...Object.keys(n).length>0?{filter:n}:{}});if(!a.ok)return a;let s=Q(a.result.appliedFilter);return n.text&&!Q(s?.text)?l("unsupported","unsupported (session/list text filter)"):u({items:(Array.isArray(a.result.sessions)?a.result.sessions:[]).map(e=>er(e,p())).filter(e=>null!==e).filter(e=>!r||r.includes(e.provider_session_id)),next_cursor:ee(a.result.nextCursor)})},async getSession(e){let t=await c(e.provider_session_id,!1);if(!t.ok)return"not_found"===t.error.code?u(null):t;let n=er(t.result.session,p());return u(n&&n.provider_session_id===e.provider_session_id?n:null)},async readTranscript(e){let t=await c(e.provider_session_id,!0);if(!t.ok)return t;let n=Q(t.result.history);if(n?.mode!=="inline")return l("unavailable",`history_${ee(n?.mode)??"missing"}`);let r=function(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Q(n);if(!e||!0===e.retracted)continue;let r="userMessage"===e.kind?"user":"agentMessage"===e.kind?"assistant":null,i=ee(e.text)??("user"===r?ee(e.displayText):null);r&&i&&t.push({seq:t.length+1,role:r,text:i,at:en(e.recordedAt)})}return t}(n.items),i=e.cursor&&/^\d+$/.test(e.cursor)?Number(e.cursor):0;return u({items:r.slice(i,i+e.limit),next_cursor:i+e.limit<r.length?String(i+e.limit):null})},async startSession(e){var t;let n=r.startKeys.get(e.idempotency_key);if(n)return u(n);let i=await s(e.authority);if(!i.ok)return i;let a=await d(i.host,"session/start",{commandId:el(),workspaceRoot:e.workspace,approvalMode:"denyUnmatched"});if(!a.ok)return a;let o=ee(Q(a.result.session)?.sessionId);if(!o)return l("unavailable","provider_error (session/start without sessionId)");i.host.loaded.add(o);let c=await f(i.host,o,e.prompt);if(!c.ok)return c;let p={provider_session_id:o,provider_turn_id:(t=c.value,`${o}:${t}`)};return r.startKeys.set(e.idempotency_key,p),u(p)},async sendTurn(e){var t,n;let i=r.startKeys.get(e.idempotency_key);if(i)return u(i);let a=await s(e.authority);if(!a.ok)return a;let o=await _(a.host,e.provider_session_id);if(!o.ok)return o;if("running"===o.session.status||ee(o.session.activeTurnId))return l("busy","busy (turn in flight)");let d=await f(a.host,e.provider_session_id,e.prompt);if(!d.ok)return d;let c={provider_session_id:e.provider_session_id,provider_turn_id:(t=e.provider_session_id,n=d.value,`${t}:${n}`)};return r.startKeys.set(e.idempotency_key,c),u(c)},async observeTurn(e){let t=eu(e.provider_turn_id);if(!t)return l("not_found","not_found (turn handle)");let n=g(t.turnId);if(n){let r=await n.host.waitFor(()=>null!==n.track.completed,e.signal,e.deadline_at);if("cancelled"===r)return l("cancelled","observe aborted");if("timed_out"===r)return l("timed_out","observe deadline");let i=n.track.completed;if(i)return u(await m(t.sessionId,t.turnId,i.terminal,i.error,i.reason,function(e,t=[]){let n=Q(e);if(n)return{input_tokens:et(n.inputTokens),output_tokens:et(n.outputTokens),cost_usd:null};let r=t.map(Q).filter(e=>null!==e);return 0===r.length?null:{input_tokens:ea(r.map(e=>et(e.inputTokens))),output_tokens:ea(r.map(e=>et(e.outputTokens))),cost_usd:null}}(i.usage,n.track.usageRecords)))}return h(t.sessionId,t.turnId,e.signal,e.deadline_at)},async cancelTurn(e){let t=eu(e.provider_turn_id);if(!t)return l("not_found","not_found (turn handle)");let n=g(t.turnId);if(!n){let e=await c(t.sessionId,!1);return e.ok?Q(e.result.session)?.activeTurnId===t.turnId?l("unavailable","turn runs in another Muse host"):u("already_terminal"):e}if(n.track.completed)return u("already_terminal");let r=await d(n.host,"turn/cancel",{commandId:el(),sessionId:t.sessionId,turnId:t.turnId});if(!r.ok)return r;await n.host.waitFor(()=>null!==n.track.completed,null,Date.now()+a);let i=n.track.completed?.terminal;return u(void 0===i||"cancelled"===i?"cancelled":"already_terminal")}}})(e.id));class e6 extends Error{code;constructor(e,t){super(t),this.name="ProviderSessionError",this.code=e}}function e9(e,t){let n=e.prepare(`
145
- SELECT id, runtime_connection_id, session_scope_kind, session_scope_items, policy_mode, allow_new_sessions, allow_resume_with_edits
146
- FROM bots WHERE id = ?
147
- `).get(t);if(!n)throw new e6("agent_not_found","No such Agent.");let r=n.runtime_connection_id?e.prepare("SELECT id, provider FROM runtime_connections WHERE id = ?").get(n.runtime_connection_id):void 0,i=r?function(e){if(!e)return null;let t=f.get(e.id)??m.get(e.provider)??g.get(e.provider);return t?t(e):null}(r):null;if(!r||!i)throw new e6("provider_unavailable","The Agent's runtime connection has no session provider.");return{agentId:t,connection:r,provider:i,capabilities:c(i.capabilities()),scope:(0,s.readStoredScope)(n),policy:(0,s.readStoredPolicy)(n)}}async function e8(e,t,n={}){let r=e9(e,t);if(!r.provider.ready)return r;let i=await r.provider.ready(tn(n));return i.ok||tt(i.error),{...r,capabilities:c(r.provider.capabilities())}}function e7(e,t){if(!e.capabilities[t])throw new e6("unsupported",`The session provider does not support ${t}.`)}function te(e){if(!e.scope)throw new e6("scope_missing","The Agent has no session scope.");return e.scope}function tt(e,t="provider_failed"){throw new e6("unsupported"===e.code?"unsupported":"unsupported_authority"===e.code?"authority_not_allowed":"not_found"===e.code?"session_missing":"busy"===e.code?"busy":"not_resumable"===e.code?"not_resumable":"invalid_input"===e.code?"invalid_input":"unavailable"===e.code?"provider_unavailable":"auth_required"===e.code||"permission_denied"===e.code||"incompatible_version"===e.code||"usage_limit"===e.code?e.code:t,`The session provider refused the call (${e.code}).`)}function tn(e){return{correlation:{...e.correlation??{}},signal:e.signal??null,deadline_at:e.deadlineAt??null}}let tr="SELECT * FROM provider_sessions";function ti(e,t,n){return e.prepare(`${tr} WHERE id = ? AND agent_id = ?`).get(n,t)}function ta(e,t,n){let r=ti(e,t,n);if(!r)throw new e6("session_not_found","No session with that reference.");return r}function ts(e,t){e.prepare("INSERT INTO provider_session_events (id, agent_id, session_ref, turn_id, type, detail, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run((0,a.randomUUID)(),t.agentId,t.sessionRef??null,t.turnId??null,t.type,JSON.stringify(t.detail??{}),t.now)}function to(e){let t=(e??"").split("\n").map(e=>e.trim()).find(e=>e.length>0);return t?t.length>80?`${t.slice(0,79).trimEnd()}…`:t:null}function td(e){return"string"==typeof e&&e.startsWith("/")?e:null}function tl(e,t,n,r,i){e.prepare(`
148
- UPDATE provider_sessions SET title = COALESCE(?, title), workspace = COALESCE(?, workspace),
149
- provider_created_at = COALESCE(?, provider_created_at), provider_updated_at = COALESCE(?, provider_updated_at),
150
- availability = 'available', lifecycle = ?, resumable = ?, busy = ?, capabilities = ?, last_synced_at = ?, updated_at = ?
151
- WHERE id = ?
152
- `).run(to(r.title),td(r.workspace),r.created_at,r.updated_at,"archived"===r.lifecycle?"archived":"open",+!!r.resumable,+!!r.busy,JSON.stringify(t.capabilities),i,i,n)}function tu(e,t,n){"missing"===t.availability?e.prepare("UPDATE provider_sessions SET last_synced_at = ? WHERE id = ?").run(n,t.id):(e.prepare("UPDATE provider_sessions SET availability = 'missing', busy = 0, last_synced_at = ?, updated_at = ? WHERE id = ?").run(n,n,t.id),ts(e,{agentId:t.agent_id,sessionRef:t.id,type:"session_missing",now:n}))}async function tc(e,t,n={}){let r;if(!n.onlyWithSessions||e.prepare("SELECT 1 FROM provider_sessions WHERE agent_id = ? LIMIT 1").get(t)){try{r=e9(e,t)}catch{return}if(r.provider.ready)try{await r.provider.ready(tn({deadlineAt:Date.now()+1e4}))}catch{}}}async function tp(e,t,n,r={}){let i=await e8(e,t,r),a=ta(e,t,n);if(a.runtime_connection_id!==i.connection.id)throw new e6("provider_unavailable","The session belongs to another runtime connection.");let s=await i.provider.getSession({...tn(r),provider_session_id:a.provider_session_id});s.ok||tt(s.error);let o=r.now??Date.now();return e.transaction(()=>{null===s.value?tu(e,a,o):(tl(e,i,a.id,s.value,o),ts(e,{agentId:t,sessionRef:a.id,type:"session_synced",now:o}))}).immediate(),ta(e,t,n)}function t_(e){if("string"!=typeof e.prompt||!e.prompt.trim())throw new e6("invalid_input","prompt is required.");if(e.prompt.length>2e4)throw new e6("invalid_input","prompt is longer than 20000 characters.");if("read_only"!==e.authority&&"workspace_write"!==e.authority)throw new e6("invalid_input","authority must be read_only or workspace_write.");if("string"!=typeof e.idempotencyKey||!e.idempotencyKey.trim()||e.idempotencyKey.length>200)throw new e6("invalid_input","idempotencyKey is required.");if(!e.requester||!["person","bot","service"].includes(e.requester.kind)||!e.requester.id)throw new e6("invalid_input","requester is required.")}function tf(e,t,n){if(!e.capabilities.authorities.includes(t))throw new e6("authority_not_allowed",`The session provider cannot enforce ${t}.`);if(!e.policy)throw new e6("authority_not_allowed","The Agent has no launch policy.");if("workspace_write"===t){if("workspace_write"!==e.policy.mode)throw new e6("authority_not_allowed","The Agent's policy is read only.");if("send"===n&&!e.policy.allow_resume_with_edits)throw new e6("authority_not_allowed","The Agent's policy does not allow resuming with edits.")}}function tm(e){return(0,a.createHash)("sha256").update(JSON.stringify(e)).digest("hex")}function tg(e,t,n){return`bm-${(0,a.createHash)("sha256").update(`${e}
153
- ${t.kind}
154
- ${t.id}
155
- ${n}`).digest("hex").slice(0,32)}`}function th(e,t,n){return e.prepare("SELECT * FROM provider_session_turns WHERE agent_id = ? AND requester_kind = ? AND requester_id = ? AND idempotency_key = ?").get(t,n.requester.kind,n.requester.id,n.idempotencyKey)}function ty(e,t){if(e){if(e.request_hash!==t)throw new e6("idempotency_conflict","That idempotency key was used for a different turn.");return e}}function tw(e,t){let n=function(e,t=[]){let n=[e.provider_session_id,...t].filter(e=>e.length>0).sort((e,t)=>t.length-e.length);return e=>n.reduce((e,t)=>e.split(t).join("[redacted]"),e)}(e.prepare(`${tr} WHERE id = ?`).get(t.session_ref),[t.provider_turn_id]);return{turn_ref:t.id,session_ref:t.session_ref,kind:t.kind,authority:t.authority,state:t.state,output:null===t.output?null:n(t.output),failure_code:t.failure_code,usage:"running"===t.state?null:{input_tokens:t.input_tokens??null,output_tokens:t.output_tokens??null,total_cost_usd:t.total_cost_usd??null},created_at:t.created_at,finished_at:t.finished_at}}function tk(e,t){return e.prepare(`
156
- INSERT INTO provider_session_turns (
157
- id, session_ref, agent_id, kind, authority, requester_kind, requester_id, idempotency_key, request_hash,
158
- provider_turn_id, state, output, failure_code, correlation, created_at, finished_at
159
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'running', NULL, NULL, ?, ?, NULL)
160
- `).run(t.id,t.session_ref,t.agent_id,t.kind,t.authority,t.requester_kind,t.requester_id,t.idempotency_key,t.request_hash,t.provider_turn_id,t.correlation,t.created_at),e.prepare("UPDATE provider_sessions SET busy = 1, updated_at = ? WHERE id = ?").run(t.created_at,t.session_ref),ts(e,{agentId:t.agent_id,sessionRef:t.session_ref,turnId:t.id,type:"turn_started",detail:{kind:t.kind,authority:t.authority},now:t.created_at}),e.prepare("SELECT * FROM provider_session_turns WHERE id = ?").get(t.id)}function tv(e){return e instanceof Error&&/UNIQUE constraint failed: provider_session_turns/.test(e.message)}async function tE(e,t,n){t_(n);let r=td(n.workspace);if(!r)throw new e6("invalid_input","workspace must be an absolute path.");e9(e,t);let i=tm({kind:"start",workspace:r,prompt:n.prompt,authority:n.authority}),o=ty(th(e,t,n),i);if(o)return{turn:tw(e,o),replayed:!0};let d=await e8(e,t,n);e7(d,"start");let l=te(d);if("sessions"===l.kind)throw new e6("out_of_scope","The Agent is scoped to selected sessions; it cannot start new ones.");if("workspaces"===l.kind&&!l.workspaces.some(e=>(0,s.workspaceContains)(e,r)))throw new e6("out_of_scope","The workspace is outside the Agent's session scope.");if(!d.policy?.allow_new_sessions)throw new e6("new_sessions_not_allowed","The Agent's policy does not allow new sessions.");tf(d,n.authority,"start");let u=await d.provider.startSession({...tn(n),workspace:r,prompt:n.prompt,authority:n.authority,idempotency_key:tg(t,n.requester,n.idempotencyKey)});u.ok||tt(u.error);let c=u.value,p=await d.provider.getSession({...tn(n),provider_session_id:c.provider_session_id}),_=n.now??Date.now();try{let s=e.transaction(()=>{let s=p.ok&&p.value?{...p.value,provider_session_id:c.provider_session_id,workspace:p.value.workspace??r}:{provider_session_id:c.provider_session_id,title:null,workspace:r,created_at:_,updated_at:_,lifecycle:"open",resumable:!1,busy:!0},{ref:o,created:l}=function(e,t,n,r,i,s=null){var o;let d=(o=n.provider_session_id,e.prepare(`
161
- ${tr} WHERE agent_id = ? AND runtime_connection_id = ? AND provider_session_id = ?
162
- ORDER BY (binding_id IS NULL) DESC, created_at DESC, id DESC LIMIT 1
163
- `).get(t.agentId,t.connection.id,o));if(d)return tl(e,t,d.id,n,i),{ref:d.id,created:!1};let l=(0,a.randomUUID)();return e.prepare(`
164
- INSERT INTO provider_sessions (
165
- id, agent_id, runtime_connection_id, provider_kind, provider_session_id, binding_id, origin, title, workspace,
166
- provider_created_at, provider_updated_at, availability, lifecycle, resumable, busy, capabilities, last_synced_at, created_at, updated_at
167
- ) VALUES (?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, 'available', ?, ?, ?, ?, ?, ?, ?)
168
- `).run(l,t.agentId,t.connection.id,t.provider.kind,n.provider_session_id,r,to(n.title)??s,td(n.workspace),n.created_at,n.updated_at,"archived"===n.lifecycle?"archived":"open",+!!n.resumable,+!!n.busy,JSON.stringify(t.capabilities),i,i,i),{ref:l,created:!0}}(e,d,s,"started",_,to(n.prompt));return l&&ts(e,{agentId:t,sessionRef:o,type:"session_started",detail:{authority:n.authority},now:_}),tk(e,{id:(0,a.randomUUID)(),session_ref:o,agent_id:t,kind:"start",authority:n.authority,requester_kind:n.requester.kind,requester_id:n.requester.id,idempotency_key:n.idempotencyKey,request_hash:i,provider_turn_id:c.provider_turn_id,correlation:JSON.stringify(n.correlation??{}),created_at:_})}).immediate();return{turn:tw(e,s),replayed:!1}}catch(r){if(tv(r))return{turn:tw(e,ty(th(e,t,n),i)),replayed:!0};throw r}}async function tb(e,t,n,r){t_(r),e9(e,t);let i=ta(e,t,n),o=tm({kind:"send",ref:n,prompt:r.prompt,authority:r.authority}),d=ty(th(e,t,r),o);if(d)return{turn:tw(e,d),replayed:!0};let l=await e8(e,t,r);if(e7(l,"resume"),i.runtime_connection_id!==l.connection.id)throw new e6("provider_unavailable","The session belongs to another runtime connection.");let u=te(l);if("binding"!==i.origin&&!("all_provider_sessions"===u.kind||"sessions"===u.kind&&u.sessions.includes(i.id)||"workspaces"===u.kind&&null!==i.workspace&&u.workspaces.some(e=>(0,s.workspaceContains)(e,i.workspace))))throw new e6("out_of_scope","The session is outside the Agent's session scope.");tf(l,r.authority,"send");let c=await tp(e,t,n,r);if("missing"===c.availability)throw new e6("session_missing","The provider no longer has this session.");if(1!==c.resumable)throw new e6("not_resumable","The provider cannot resume this session.");let p=e.prepare("SELECT 1 FROM provider_session_turns WHERE session_ref = ? AND state = 'running'").get(n);if(1===c.busy||p)throw new e6("busy","The session has a turn in flight.");let _=await l.provider.sendTurn({...tn(r),provider_session_id:i.provider_session_id,prompt:r.prompt,authority:r.authority,idempotency_key:tg(t,r.requester,r.idempotencyKey)});_.ok||tt(_.error);let f=r.now??Date.now();try{let i=e.transaction(()=>tk(e,{id:(0,a.randomUUID)(),session_ref:n,agent_id:t,kind:"send",authority:r.authority,requester_kind:r.requester.kind,requester_id:r.requester.id,idempotency_key:r.idempotencyKey,request_hash:o,provider_turn_id:_.value.provider_turn_id,correlation:JSON.stringify(r.correlation??{}),created_at:f})).immediate();return{turn:tw(e,i),replayed:!1}}catch(n){if(tv(n))return{turn:tw(e,ty(th(e,t,r),o)),replayed:!0};throw n}}function tI(e,t,n){let r=e.prepare("SELECT * FROM provider_session_turns WHERE id = ? AND agent_id = ?").get(n,t);if(!r)throw new e6("turn_not_found","No turn with that reference.");return r}function tA(e){return"number"==typeof e&&Number.isInteger(e)&&e>=0?e:null}async function tS(e,t,n,r={}){var i,a;let s=tI(e,t,n);if("running"!==s.state)return tw(e,s);let o=await e8(e,t,r),l=await o.provider.observeTurn({...tn(r),provider_turn_id:s.provider_turn_id});if(!l.ok){if("cancelled"===l.error.code||"timed_out"===l.error.code)return tw(e,tI(e,t,n));tt(l.error)}return i=l.value,a=r.now??Date.now(),e.transaction(()=>{var t;let n="completed"===i.status?"completed":"cancelled"===i.status?"cancelled":"failed",r=i.usage??null;if(0===e.prepare(`
169
- UPDATE provider_session_turns SET state = ?, output = ?, failure_code = ?, finished_at = ?, input_tokens = ?, output_tokens = ?, total_cost_usd = ?
170
- WHERE id = ? AND state = 'running'
171
- `).run(n,"string"==typeof i.output?i.output:null,i.failure?String(i.failure.code).slice(0,100):null,"number"==typeof i.finished_at?i.finished_at:a,tA(r?.input_tokens),tA(r?.output_tokens),"number"==typeof(t=r?.total_cost_usd)&&Number.isFinite(t)&&t>=0?t:null,s.id).changes)return;if(i.failure?.code==="session_missing"){let t=e.prepare(`${tr} WHERE id = ?`).get(s.session_ref);tu(e,t,a)}let o=e.prepare("SELECT provider_kind FROM provider_sessions WHERE id = ?").get(s.session_ref);(0,eW.recordTurnUsageSample)(e,s.id,s.session_ref,{agentId:s.agent_id,provider:o?.provider_kind??"unknown",usage:function(e){try{return(0,eL.usageFromEvent)(e)}catch{return null}}(i.usage),observedAt:"number"==typeof i.finished_at?i.finished_at:a,now:a}),e.prepare(`
172
- UPDATE provider_sessions SET busy = CASE WHEN EXISTS (
173
- SELECT 1 FROM provider_session_turns WHERE session_ref = ? AND state = 'running') THEN 1 ELSE 0 END,
174
- provider_updated_at = ?, updated_at = ? WHERE id = ?
175
- `).run(s.session_ref,a,a,s.session_ref);let l=d(r&&void 0===r.cost_usd&&"total_cost_usd"in r?{...r,cost_usd:r.total_cost_usd}:r);ts(e,{agentId:s.agent_id,sessionRef:s.session_ref,turnId:s.id,type:`turn_${n}`,detail:l?{usage:l}:{},now:a})}).immediate(),tw(e,tI(e,t,n))}e.s(["ProviderSessionError",0,e6,"agentProviderCapabilities",0,function(e,t){try{let n=e9(e,t);return{provider_kind:n.provider.kind,...n.capabilities,explicit_import:"function"==typeof n.provider.importSession}}catch(e){if(e instanceof e6&&"provider_unavailable"===e.code)return null;throw e}},"getProviderSessionRow",0,ti,"getProviderTurn",0,function(e,t,n){let r=e.prepare("SELECT * FROM provider_session_turns WHERE id = ? AND agent_id = ?").get(n,t);return r?tw(e,r):void 0},"observeProviderTurn",0,tS,"privateProviderIds",0,function(e){return e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'provider_sessions'").get()?[...e.prepare("SELECT provider_session_id AS id FROM provider_sessions").all(),...e.prepare("SELECT provider_turn_id AS id FROM provider_session_turns").all()].map(e=>e.id):[]},"refreshProviderSession",0,tp,"sendProviderTurn",0,tb,"startProviderSession",0,tE,"warmAgentProvider",0,tc],16789)},63020,e=>{"use strict";var t=e.i(54799),n=e.i(62349),r=e.i(35613),i=e.i(64974),a=e.i(11626),s=e.i(142);let o=Object.freeze({kind:"service",id:"botmancers-exchanges"}),d=["ask","continue"],l={invalid_request:400,authority_not_allowed:403,recursive_exchange:403,conversation_not_found:404,agent_not_found:404,session_not_found:404,session_ended:409,session_not_resumable:409,source_session_busy:409,agent_unavailable:409,destination_invalid:400,idempotency_conflict:409,exchange_not_found:404,exchange_terminal:409,invalid_transition:409};class u extends Error{code;constructor(e,t){super(t),this.name="ExchangeError",this.code=e}get status(){return l[this.code]}}let c=["decisions","constraints","artifacts","open_questions"];function p(e){return"string"==typeof e&&e.trim().length>0}function _(e,...t){return t.reduce((e,t)=>t?e.split(t).join("[redacted session id]"):e,e)}let f="\n[truncated]";function m(e,t){return e.length<=t?{content:e,truncated:!1}:t<=f.length?{content:e.slice(0,t),truncated:!0}:{content:`${e.slice(0,t-f.length)}${f}`,truncated:!0}}let g="This is a read-only turn: do not edit files, change state, start other work, or emit Wakes.";function h(e,t){return`${e}:
176
- ${t.length>0?t.map(e=>`- ${e}`).join("\n"):"(none)"}`}function y(e){let t;if(e.requester_kind!==o.kind||e.requester_id!==o.id)return null;try{t=JSON.parse(e.policy_snapshot)}catch{return null}return t&&"session_exchange"===t.source&&"string"==typeof t.exchange_id&&("ask"===t.hop||"extract"===t.hop||"deliver"===t.hop)?{exchangeId:t.exchange_id,hop:t.hop,resumeBindingId:"string"==typeof t.resume_session_binding?t.resume_session_binding:null}:null}let w=new Set(["mode","idempotency_key","origin_conversation_id","source","destination","instruction","execution_kind","tool_profile"]),k=["exchange_id","parent_exchange_id"];function v(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}e.s(["ExchangeError",0,u,"cancelReasonFromBody",0,function(e){let t;if(0===e.trim().length)return null;try{t=JSON.parse(e)}catch{throw new u("invalid_request","The body must be a JSON object.")}if(!v(t))throw new u("invalid_request","The body must be a JSON object.");let n=Object.keys(t).filter(e=>"reason"!==e);if(n.length>0)throw new u("invalid_request",`Unknown field ${n[0]}.`);let r=t.reason;if(null!=r&&("string"!=typeof r||r.length>500))throw new u("invalid_request","reason must be a string of at most 500 characters.");return"string"==typeof r?r:null},"createExchangeStore",0,function(e,l){let f=e.prepare("SELECT * FROM session_exchanges WHERE id = ?"),w=e.prepare("SELECT * FROM session_exchanges WHERE requester_kind = ? AND requester_id = ? AND idempotency_key = ?"),k=e.prepare("SELECT * FROM session_exchanges WHERE source_request_id = ? OR destination_request_id = ?"),v=e.prepare("SELECT * FROM session_bindings WHERE id = ?"),E=e.prepare("SELECT * FROM bots WHERE id = ?"),b=e.prepare(`
177
- INSERT INTO session_exchange_events (id, exchange_id, sequence, type, data, created_at)
178
- SELECT ?, ?, COALESCE(MAX(sequence), 0) + 1, ?, ?, ? FROM session_exchange_events WHERE exchange_id = ?
179
- `);function I(e){let t=f.get(e);if(!t)throw new u("exchange_not_found",`No exchange ${e}.`);return t}function A(e,n,r,i){b.run((0,t.randomUUID)(),e,n,null==r?null:JSON.stringify(r),i,e)}function S(e){return e?E.get(e)?.name??null:null}function q(e){return r.EXCHANGE_TERMINAL_STATES.includes(e)}function x(t,n,i,a={}){if(!r.EXCHANGE_TRANSITIONS[t.state].includes(n))throw new u("invalid_transition",`Cannot move an exchange from ${t.state} to ${n}.`);let s=q(n);if(1!==e.prepare(`
180
- UPDATE session_exchanges SET state = ?, version = version + 1, updated_at = ?, terminal_at = ?,
181
- failure_code = ?, failure_message = ?
182
- WHERE id = ? AND state = ? AND version = ?
183
- `).run(n,i,s?i:null,"failed"===n?a.failureCode??"failed":t.failure_code,"failed"===n?a.failureMessage??"The exchange failed.":t.failure_message,t.id,t.state,t.version).changes)throw new u("invalid_transition",`Exchange ${t.id} changed concurrently.`);return A(t.id,"state_changed",{from:t.state,to:n,reason:a.reason??null,..."failed"===n?{failure_code:a.failureCode??"failed"}:{}},i),I(t.id)}function R(t,n,r){let i=Object.keys(n);if(0===i.length)return t;if(1!==e.prepare(`UPDATE session_exchanges SET ${i.map(e=>`${e} = ?`).join(", ")}, version = version + 1, updated_at = ? WHERE id = ? AND version = ?`).run(...i.map(e=>n[e]??null),r,t.id,t.version).changes)throw new u("invalid_transition",`Exchange ${t.id} changed concurrently.`);return I(t.id)}function T(e,t,n){let d,c={kind:e.requester_kind,id:e.requester_id},p=`exchange:${e.id}:${t}`;if(n.intent.length>r.EXCHANGE_LIMITS.promptChars)throw new u("invalid_request",`The ${t} prompt exceeds ${r.EXCHANGE_LIMITS.promptChars} characters.`);return l.createOrGetWorkRequest({sourceConversationId:n.conversationId,sourceEventId:p,requester:o,targetAgentId:n.targetAgentId,intent:n.intent,executionKind:"conversation",toolProfile:"readonly",idempotencyKey:p,parentRequestId:n.parentRequestId,policy:{source:"session_exchange",exchange_id:e.id,hop:t,...n.resumeBindingId?{resume_session_binding:n.resumeBindingId}:{}},executionPolicy:function(){let e=(0,i.selectExecutionPolicy)({entryPoint:"exchange",executionKind:"conversation"});if(!e.ok)throw Error(e.reason);return e.policy}(),rootPrincipal:c,retryPolicy:{...a.DEFAULT_RETRY_POLICY},...{safetySnapshot:d={safety_version:s.WAKE_SAFETY_VERSION,root_principal:{kind:c.kind,id:c.id},grant_rule:"readonly_default",grant_id:null,exchange:!0},safety:{principalType:"service"===c.kind?"api_principal":"human_owner",principal:c,decision:"allowed",grantRule:"readonly_default",snapshot:d}},now:n.now}).request}function C(e,t){let r=E.get(e);if(!r)throw new u("agent_not_found",`No ${t} Agent ${e}.`);let i=(0,n.resolveAgent)(r);if(!i.launchable){let e="launch_profile"===i.launch_blocker?"has no launch profile chosen":"session_scope"===i.launch_blocker?"has no session scope":"direct_runtime"===i.launch_blocker?"launches directly, which is not available yet":"has no Agent Deck selected";throw new u("agent_unavailable",`The ${t} Agent ${r.name} ${e}.`)}return{id:r.id,name:r.name,agent:i.agent}}function N(t,n,r){if(!e.prepare("SELECT 1 FROM conversations WHERE id = ?").get(t)||!e.prepare("SELECT 1 FROM conversation_participants WHERE conversation_id = ? AND participant_kind = ? AND participant_id = ?").get(t,n.kind,n.id))throw new u("conversation_not_found",`No ${r} conversation ${t} is visible to the owner.`)}let D={create(n){var a;if(!n.requester||!p(n.requester.id)||!["person","bot","service"].includes(n.requester.kind))throw new u("invalid_request","A requester principal is required.");let s="service"===n.requester.kind&&!0===n.serviceGrant&&n.requester.id!==o.id;if("person"!==n.requester.kind&&!s)throw new u("recursive_exchange","Exchanges are started by the owner; an Agent or exchange hop cannot start another exchange.");if(!p(n.idempotencyKey)||n.idempotencyKey.length>200)throw new u("invalid_request","An idempotency key (1-200 characters) is required.");if(!d.includes(n.mode))throw new u("invalid_request",'mode must be "ask" or "continue".');if(!p(n.originConversationId))throw new u("invalid_request","origin_conversation_id is required.");if(!p(n.sourceAgentId))throw new u("invalid_request","source.agent_id is required.");if(!p(n.sessionRef))throw new u("invalid_request","source.session_ref is required.");if(!p(n.instruction))throw new u("invalid_request","instruction is required.");if(n.instruction.length>r.EXCHANGE_LIMITS.instructionChars)throw new u("invalid_request",`instruction exceeds ${r.EXCHANGE_LIMITS.instructionChars} characters.`);if(void 0!==n.executionKind){let e=(0,i.selectExecutionPolicy)({entryPoint:"exchange",executionKind:n.executionKind});if(!e.ok)throw new u("authority_not_allowed",`${e.reason} An exchange never requests edit authority.`)}if("ask"===n.mode&&(null!=n.destinationAgentId||null!=n.destinationConversationId))throw new u("destination_invalid","An Ask returns to the origin conversation and takes no destination.");if("continue"===n.mode){if(!p(n.destinationAgentId))throw new u("destination_invalid","A Continue names destination.agent_id.");if(n.destinationAgentId===n.sourceAgentId)throw new u("destination_invalid","A Continue hands off to another Agent; the destination cannot be the source Agent.");if(null!=n.destinationConversationId&&!p(n.destinationConversationId))throw new u("destination_invalid","destination.conversation_id must be a non-empty string when present.")}let c=(a=JSON.stringify([n.mode,n.originConversationId,n.sourceAgentId,n.sessionRef,n.destinationAgentId??null,n.destinationConversationId??null,n.instruction]),(0,t.createHash)("sha256").update(a).digest("hex"));return e.transaction(()=>{var i,a;let s=w.get(n.requester.kind,n.requester.id,n.idempotencyKey);if(s){if(s.request_hash!==c)throw new u("idempotency_conflict","The idempotency key was already used with a different exchange.");return{exchange:s,created:!1}}let o=n.now??Date.now();if(N(n.originConversationId,n.requester,"origin"),!E.get(n.sourceAgentId))throw new u("agent_not_found",`No source Agent ${n.sourceAgentId}.`);let d=v.get(n.sessionRef);if(!d||d.agent_id!==n.sourceAgentId)throw new u("session_not_found",`Session ${n.sessionRef} is not a session of Agent ${n.sourceAgentId}.`);if(null!==d.released_at)throw new u("session_ended",`Session ${d.id} has ended and cannot be resumed.`);let p=C(n.sourceAgentId,"source");if(d.adapter!==p.agent)throw new u("session_not_resumable",`Session ${d.id} was bound under ${d.adapter}; ${p.name} now runs ${p.agent}.`);let _=d.conversation_id?d.conversation_id:d.request_id?l.getWorkRequest(d.request_id)?.source_conversation_id??null:null;if(!_)throw new u("session_not_resumable",`Session ${d.id} has no conversation to resume in.`);if(e.prepare("SELECT 1 FROM session_exchanges WHERE source_binding_id = ? AND terminal_at IS NULL").get(d.id))throw new u("source_session_busy",`Session ${d.id} already has an exchange in progress; wait for it or cancel it.`);let f=null,m=null;if("continue"===n.mode)if(f=C(n.destinationAgentId,"destination"),n.destinationConversationId)N(n.destinationConversationId,n.requester,"destination"),m=n.destinationConversationId;else if("service"===n.requester.kind)throw new u("destination_invalid","A service-started Continue names destination.conversation_id.");else{let t=e.prepare("SELECT id FROM conversations WHERE bot_id = ?").get(f.id);if(!t)throw new u("destination_invalid",`${f.name} has no direct thread; name destination.conversation_id.`);m=t.id}let h=(0,t.randomUUID)();e.prepare(`
184
- INSERT INTO session_exchanges (
185
- id, requester_kind, requester_id, idempotency_key, request_hash, mode, origin_conversation_id,
186
- source_agent_id, source_binding_id, destination_agent_id, destination_conversation_id, instruction,
187
- state, created_at, updated_at
188
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'queued', ?, ?)
189
- `).run(h,n.requester.kind,n.requester.id,n.idempotencyKey,c,n.mode,n.originConversationId,n.sourceAgentId,d.id,f?.id??null,m,n.instruction,o,o),A(h,"created",{mode:n.mode,source_agent_id:n.sourceAgentId,source_binding_id:d.id,destination_agent_id:f?.id??null,destination_conversation_id:m},o);let y=I(h),k="ask"===n.mode?"ask":"extract",b=T(y,k,{conversationId:_,targetAgentId:n.sourceAgentId,intent:"ask"===k?function(e,t,n="the owner"){return`[Session Ask from ${n}] Exchange: ${e}
190
-
191
- Answer one question from the context of this session. ${g} Reply with the answer only.
192
-
193
- Question:
194
- ${t}`}(h,n.instruction,"service"===y.requester_kind?`service ${y.requester_id}`:"the owner"):(i=f?.name??"another Agent",a=n.instruction,`[Session Continue handoff from the owner] Exchange: ${h}
195
-
196
- The owner is handing this session's work to ${i}, who starts a fresh session and cannot see this one. ${g}
197
-
198
- Reply with exactly one JSON object and nothing else:
199
-
200
- {"objective": string, "decisions": [string], "constraints": [string], "artifacts": [string], "open_questions": [string]}
201
-
202
- objective: what ${i} should achieve. decisions: what was decided and why. constraints: requirements and limits to respect. artifacts: files, branches, Work Requests, and other references. open_questions: what is still unresolved.
203
-
204
- Limits: objective at most ${r.EXCHANGE_LIMITS.packetObjectiveChars} characters; each list at most ${r.EXCHANGE_LIMITS.packetListItems} entries of at most ${r.EXCHANGE_LIMITS.packetItemChars} characters.
205
-
206
- Owner instruction:
207
- ${a}`),parentRequestId:d.request_id,resumeBindingId:d.id,now:o}),S=R(y,{source_request_id:b.id},o);return A(h,"hop_queued",{hop:k,request_id:b.id},o),{exchange:S,created:!0}}).immediate()},get:e=>f.get(e),require:I,listEvents:t=>e.prepare("SELECT * FROM session_exchange_events WHERE exchange_id = ? ORDER BY sequence ASC").all(t),forHopRequest:e=>k.get(e,e),resumeFor(e,t){let n=y(e);if(!n)return null;if("deliver"===n.hop)return{ok:!0,binding:null,freshSession:!0};let r=D.get(n.exchangeId),i=n.resumeBindingId?v.get(n.resumeBindingId):void 0;return r&&i&&r.source_binding_id===i.id&&r.source_request_id===e.id?null!==i.released_at?{ok:!1,reason:"The selected session has ended."}:i.agent_id!==e.target_agent_id||i.adapter!==t?{ok:!1,reason:"The selected session belongs to another Agent or runtime."}:{ok:!0,binding:i}:{ok:!1,reason:"The exchange does not name this session."}},turnContext:e=>y(e)?[{speakerLabel:"Botmancers",fromAgent:!1,content:e.intent}]:null,hopClaimed(e,t,n){let r=D.forHopRequest(e);if(!(!r||q(r.state))){if(r.source_request_id===e){let i=r.source_attempt_id?r:R(r,{source_attempt_id:t},n);"queued"===i.state&&x(i,"extracting",n,{reason:"hop_started"}),A(r.id,"hop_started",{hop:"ask"===r.mode?"ask":"extract",request_id:e,attempt_id:t},n);return}r.destination_attempt_id||R(r,{destination_attempt_id:t},n),A(r.id,"hop_started",{hop:"deliver",request_id:e,attempt_id:t},n)}},sanitizeHopResult(e,t){let n=y(e),i=n?D.get(n.exchangeId):void 0;if(!n||!i)return t;let a=v.get(i.source_binding_id)?.external_session_id??null,s="ask"===n.hop?r.EXCHANGE_LIMITS.answerChars:"extract"===n.hop?r.EXCHANGE_LIMITS.extractionOutputChars:r.EXCHANGE_LIMITS.replyChars,o=t.externalSessionId??null,d=null===t.output?null:m(_(t.output,a,o),s);return{...t,output:d?d.content:null,outputTruncated:!0===t.outputTruncated||d?.truncated===!0,failure:t.failure?{...t.failure,message:_(t.failure.message,a,o)}:null}},commitHop(n,i,a,s){let o=y(n),d=o?D.get(o.exchangeId):void 0;if(!o||!d)return{exchange_id:o?.exchangeId??null,discarded:"exchange_missing"};if(q(d.state)||null!==d.cancel_requested_at)return A(d.id,"hop_result_discarded",{hop:o.hop,request_id:n.id,reason:q(d.state)?d.state:"cancel_requested"},s),{exchange_id:d.id,discarded:"cancel_requested"};let u=a.output??"",f=v.get(d.source_binding_id)?.external_session_id??null;if("ask"===o.hop){let o=m(_(u,f),r.EXCHANGE_LIMITS.answerChars),{content:l}=o,c=o.truncated||!0===a.outputTruncated,p=(0,t.randomUUID)();return e.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, request_id, content, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(p,d.origin_conversation_id,"bot",d.source_agent_id,"bot",n.id,l,s),R(d,{answer_message_id:p},s),A(d.id,"answer_returned",{request_id:n.id,attempt_id:i.id,message_id:p,conversation_id:d.origin_conversation_id,truncated:c},s),{exchange_id:d.id,answer_message_id:p}}if("extract"===o.hop){var g;let e=a.outputTruncated?{ok:!1,reason:`The extraction output exceeds ${r.EXCHANGE_LIMITS.extractionOutputChars} characters.`}:function(e){let t;if(e.length>r.EXCHANGE_LIMITS.extractionOutputChars)return{ok:!1,reason:`The extraction output exceeds ${r.EXCHANGE_LIMITS.extractionOutputChars} characters.`};let n=/```(?:json)?\s*([\s\S]*?)```/.exec(e),i=(n?n[1]:e).trim(),a=i.indexOf("{"),s=i.lastIndexOf("}");if(a<0||s<a)return{ok:!1,reason:"The handoff packet is not a JSON object."};try{t=JSON.parse(i.slice(a,s+1))}catch{return{ok:!1,reason:"The handoff packet is not valid JSON."}}if(!t||"object"!=typeof t||Array.isArray(t))return{ok:!1,reason:"The handoff packet is not a JSON object."};let o=t;if(!p(o.objective))return{ok:!1,reason:"The handoff packet has no objective."};if(o.objective.length>r.EXCHANGE_LIMITS.packetObjectiveChars)return{ok:!1,reason:`The handoff packet objective exceeds ${r.EXCHANGE_LIMITS.packetObjectiveChars} characters.`};let d={objective:o.objective.trim(),decisions:[],constraints:[],artifacts:[],open_questions:[]};for(let e of c){let t=o[e]??[];if(!Array.isArray(t)||t.some(e=>"string"!=typeof e))return{ok:!1,reason:`The handoff packet field ${e} must be a list of strings.`};if(t.length>r.EXCHANGE_LIMITS.packetListItems)return{ok:!1,reason:`The handoff packet field ${e} has ${t.length} entries (limit ${r.EXCHANGE_LIMITS.packetListItems}).`};if(t.some(e=>e.length>r.EXCHANGE_LIMITS.packetItemChars))return{ok:!1,reason:`An entry of the handoff packet field ${e} exceeds ${r.EXCHANGE_LIMITS.packetItemChars} characters.`};d[e]=t.map(e=>e.trim()).filter(e=>e.length>0)}return JSON.stringify(d).length>r.EXCHANGE_LIMITS.packetChars?{ok:!1,reason:`The handoff packet exceeds ${r.EXCHANGE_LIMITS.packetChars} characters.`}:{ok:!0,packet:d}}(u);if(!e.ok)return A(d.id,"packet_rejected",{request_id:n.id,attempt_id:i.id,reason:e.reason},s),x(d,"failed",s,{reason:"packet_invalid",failureCode:"packet_invalid",failureMessage:e.reason}),{exchange_id:d.id,packet:"rejected"};let t=(g=e.packet,{objective:_(g.objective,f),decisions:g.decisions.map(e=>_(e,f)),constraints:g.constraints.map(e=>_(e,f)),artifacts:g.artifacts.map(e=>_(e,f)),open_questions:g.open_questions.map(e=>_(e,f))});return R(d,{packet:JSON.stringify(t)},s),A(d.id,"packet_extracted",{request_id:n.id,attempt_id:i.id,size:JSON.stringify(t).length,counts:Object.fromEntries(c.map(e=>[e,t[e].length]))},s),{exchange_id:d.id,packet:"stored"}}let h=a.externalSessionId??null,w=!1;try{w=!0===JSON.parse(i.launch_snapshot).fresh_session}catch{w=!1}if(!(w&&h&&h!==f&&!e.prepare("SELECT 1 FROM session_bindings WHERE external_session_id = ?").get(h)&&!e.prepare("SELECT 1 FROM work_attempts WHERE external_session_id = ? AND id != ?").get(h,i.id))){let e=w?h?"reused":"not_reported":"not_fresh_launch";return A(d.id,"destination_session_rejected",{request_id:n.id,attempt_id:i.id,reason:e},s),x(d,"failed",s,{reason:"destination_session_invalid",failureCode:"destination_session_invalid",failureMessage:h?"The destination Agent reported a session that is not new; the hand-off needs a fresh destination-owned session.":"The destination Agent reported no session; the hand-off needs a fresh destination-owned session."}),{exchange_id:d.id,destination_session:"rejected"}}let k=(0,t.randomUUID)(),E=d.destination_conversation_id,b=m(_(u,f,h),r.EXCHANGE_LIMITS.replyChars),{content:I}=b,S=b.truncated||!0===a.outputTruncated;e.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, request_id, content, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(k,E,"bot",n.target_agent_id,"bot",n.id,I,s);let T=l.bindSession({agentId:n.target_agent_id,adapter:i.adapter,externalSessionId:h,conversationId:E,requestId:n.id,sourceAttemptId:i.id,now:s}).id;return R(d,{destination_binding_id:T},s),A(d.id,"destination_replied",{request_id:n.id,attempt_id:i.id,message_id:k,conversation_id:E,session_ref:T,truncated:S},s),{exchange_id:d.id,destination_message_id:k}},advance:(t,n=Date.now())=>e.transaction(()=>{let i=D.get(t);if(!i||q(i.state))return[];if("queued"===i.state||"extracting"===i.state){var a,s,o,d;let t=i.source_request_id?l.getWorkRequest(i.source_request_id):void 0;if(!t)return x(i,"failed",n,{reason:"hop_missing",failureCode:"hop_missing",failureMessage:"The source session turn is missing."}),[];if(!r.TERMINAL_STATES.includes(t.state))return"queued"!==t.state&&"queued"===i.state&&x(i,"extracting",n,{reason:"hop_started"}),"queued"===t.state&&null===i.cancel_requested_at?[t.id]:[];if(null!==i.cancel_requested_at||"cancelled"===t.state)return x(i,"cancelled",n,{reason:null!==i.cancel_requested_at?"cancel_requested":"hop_cancelled"}),[];if("failed"===t.state)return x(i,"failed",n,{reason:"hop_failed",failureCode:"source_turn_failed",failureMessage:`The source session turn failed (${t.error_code??"failed"}): ${t.error_message??"no detail"}`}),[];if("queued"===i.state&&(i=x(i,"extracting",n,{reason:"hop_started"})),"ask"===i.mode)return i.answer_message_id?x(i,"completed",n,{reason:"answered"}):x(i,"failed",n,{reason:"answer_missing",failureCode:"answer_missing",failureMessage:"The source session turn returned no answer."}),[];if(!i.packet)return x(i,"failed",n,{reason:"packet_missing",failureCode:"packet_missing",failureMessage:"The source session turn returned no handoff packet."}),[];let u=JSON.parse(i.packet),c=i.destination_conversation_id,p=i.destination_agent_id;a={kind:"bot",id:p},e.prepare("INSERT OR IGNORE INTO conversation_participants (conversation_id, participant_kind, participant_id, joined_at) VALUES (?, ?, ?, ?)").run(c,a.kind,a.id,n);let _=T(i,"deliver",{conversationId:c,targetAgentId:p,intent:(s=i.id,o=S(i.source_agent_id)??"the source Agent",d=i.instruction,[`Continue from ${o}: ${function(e,t=80){let n=e.split("\n").map(e=>e.trim()).find(e=>e.length>0)??"";return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}(u.objective)}`,`[Session Continue] Exchange: ${s}`,`The owner handed you this work from ${o}'s session. You start a fresh session of your own: ${o}'s session is not available to you, and this handoff packet is everything carried over.`,`Objective:
208
- ${u.objective}`,h("Decisions",u.decisions),h("Constraints",u.constraints),h("Artifacts and references",u.artifacts),h("Open questions",u.open_questions),`Owner instruction:
209
- ${d}`].join("\n\n")),parentRequestId:null,resumeBindingId:null,now:n});return A((i=R(i,{destination_request_id:_.id},n)).id,"hop_queued",{hop:"deliver",request_id:_.id},n),x(i,"delivering",n,{reason:"packet_extracted"}),[_.id]}let u=i.destination_request_id?l.getWorkRequest(i.destination_request_id):void 0;return u?r.TERMINAL_STATES.includes(u.state)?(null!==i.cancel_requested_at||"cancelled"===u.state?x(i,"cancelled",n,{reason:null!==i.cancel_requested_at?"cancel_requested":"hop_cancelled"}):"failed"===u.state?x(i,"failed",n,{reason:"hop_failed",failureCode:"destination_turn_failed",failureMessage:`The destination turn failed (${u.error_code??"failed"}): ${u.error_message??"no detail"}`}):i.destination_binding_id?x(i,"completed",n,{reason:"delivered"}):x(i,"failed",n,{reason:"destination_session_missing",failureCode:"destination_session_invalid",failureMessage:"The destination turn bound no fresh destination-owned session."}),[]):"queued"===u.state&&null===i.cancel_requested_at?[u.id]:[]:(x(i,"failed",n,{reason:"hop_missing",failureCode:"hop_missing",failureMessage:"The destination turn is missing."}),[])}).immediate(),requestCancel:(t,n,r,i=Date.now())=>e.transaction(()=>{let a=I(t);if(q(a.state))throw new u("exchange_terminal",`Exchange ${t} is already ${a.state}; it cannot be cancelled.`);let s="delivering"===a.state?a.destination_request_id:a.source_request_id;return null!==a.cancel_requested_at?{exchange:a,hopRequestId:s,replayed:!0}:(e.prepare("UPDATE session_exchanges SET cancel_requested_at = ?, cancel_requested_by = ?, cancel_reason = ?, version = version + 1, updated_at = ? WHERE id = ? AND cancel_requested_at IS NULL").run(i,`${n.kind}:${n.id}`,r,i,t),A(t,"cancel_requested",{by:`${n.kind}:${n.id}`,reason:r,state:a.state,request_id:s},i),{exchange:I(t),hopRequestId:s,replayed:!1})}).immediate(),openIds:()=>e.prepare("SELECT id FROM session_exchanges WHERE terminal_at IS NULL ORDER BY created_at ASC, id ASC").all().map(e=>e.id),view(t){let n=I(t),i=(e,t)=>{let n=e?l.getWorkRequest(e):void 0;return n?{request_id:n.id,attempt_id:t,state:n.state,execution_kind:n.execution_kind,tool_profile:n.tool_profile}:null},a=n.answer_message_id?e.prepare("SELECT id, conversation_id, content FROM messages WHERE id = ?").get(n.answer_message_id):void 0;return{id:n.id,mode:n.mode,state:n.state,requester:{kind:n.requester_kind,id:n.requester_id},origin_conversation_id:n.origin_conversation_id,instruction:n.instruction,source:{agent_id:n.source_agent_id,agent_name:S(n.source_agent_id),session_ref:n.source_binding_id},destination:n.destination_agent_id&&n.destination_conversation_id?{agent_id:n.destination_agent_id,agent_name:S(n.destination_agent_id),conversation_id:n.destination_conversation_id,session_ref:n.destination_binding_id}:null,hops:{source:i(n.source_request_id,n.source_attempt_id),destination:i(n.destination_request_id,n.destination_attempt_id)},answer:a?{message_id:a.id,conversation_id:a.conversation_id,content:a.content}:null,packet:n.packet?JSON.parse(n.packet):null,failure:"failed"===n.state?{code:n.failure_code??"failed",message:n.failure_message??""}:null,cancel:null!==n.cancel_requested_at?{requested_at:n.cancel_requested_at,reason:n.cancel_reason}:null,events:D.listEvents(n.id).map(e=>({sequence:e.sequence,type:e.type,at:e.created_at,data:e.data?JSON.parse(e.data):null})),limits:r.EXCHANGE_LIMITS,created_at:n.created_at,updated_at:n.updated_at,terminal_at:n.terminal_at}}};return D},"exchangeErrorBody",0,function(e){return{error:{code:e.code,message:e.message}}},"exchangeInputFromBody",0,function(e,t){if(!v(e))throw new u("invalid_request","The body must be a JSON object.");for(let t of k)if(t in e)throw new u("recursive_exchange","An exchange cannot be started from another exchange.");let n=Object.keys(e).filter(e=>!w.has(e));if(n.length>0)throw new u("invalid_request",`Unknown field ${n[0]}.`);if(void 0!==e.tool_profile&&"readonly"!==e.tool_profile)throw new u("authority_not_allowed","An exchange runs read-only; it never requests edit authority.");if(!v(e.source))throw new u("invalid_request","source must be one object { agent_id, session_ref }.");if(void 0!==e.destination&&null!==e.destination&&!v(e.destination))throw new u("destination_invalid","destination must be one object { agent_id, conversation_id? }.");let r=v(e.destination)?e.destination:null,i=(e,t)=>{if("string"!=typeof e)throw new u("invalid_request",`${t} must be a string.`);return e},a=(e,t)=>null==e?null:i(e,t);return{requester:t,mode:i(e.mode,"mode"),idempotencyKey:i(e.idempotency_key,"idempotency_key"),originConversationId:i(e.origin_conversation_id,"origin_conversation_id"),sourceAgentId:i(e.source.agent_id,"source.agent_id"),sessionRef:i(e.source.session_ref,"source.session_ref"),destinationAgentId:r?a(r.agent_id,"destination.agent_id"):null,destinationConversationId:r?a(r.conversation_id,"destination.conversation_id"):null,instruction:i(e.instruction,"instruction"),...void 0!==e.execution_kind?{executionKind:e.execution_kind}:{}}},"hopOf",0,y])},142,e=>{"use strict";var t=e.i(54799),n=e.i(62294);let r=Object.freeze({maxWakeDepth:3,rootBudget:12,maxContinuations:24,globalConcurrency:4,perTargetConcurrency:1}),i={maxWakeDepth:"BOTMANCERS_WAKE_MAX_DEPTH",rootBudget:"BOTMANCERS_WAKE_ROOT_BUDGET"},a=Object.freeze({kind:"person",id:"local-owner"});function s(e){return!!e&&e.kind===a.kind&&e.id===a.id}let o={owner_required:403,not_found:404,not_pending:409};class d extends Error{code;constructor(e,t){super(t),this.name="WakeSafetyError",this.code=e}get status(){return o[this.code]}}function l(e){if("human_owner"!==e)throw new d("owner_required","Only the owner can allow, deny, or revoke Wake grants.")}function u(e,t){return n.default.prepare("SELECT * FROM wake_grants WHERE caller_agent_id = ? AND target_agent_id = ? AND authority = 'edit' AND revoked_at IS NULL").get(e,t)}function c(e){return n.default.prepare("SELECT * FROM wake_grants WHERE id = ?").get(e)}e.s(["WAKE_SAFETY_VERSION",0,1,"WakeSafetyError",0,d,"activeEditGrant",0,u,"assertOwner",0,l,"categorizeIntakeCaller",0,function(e,t){return t&&["person","bot","service"].includes(t.kind)&&"string"==typeof t.id&&t.id.trim()?"ui"===e?s(t)?"human_owner":"unknown":"api"===e?"api_principal":"unknown":"unknown"},"ensureEditGrant",0,function(e){let r=u(e.callerAgentId,e.targetAgentId);if(r)return{grant:r,created:!1};let i=(0,t.randomUUID)();return n.default.prepare(`
210
- INSERT INTO wake_grants (id, caller_agent_id, target_agent_id, authority, granted_by_kind, granted_by_id, source_wake_id, created_at)
211
- VALUES (?, ?, ?, 'edit', ?, ?, ?, ?)
212
- `).run(i,e.callerAgentId,e.targetAgentId,e.grantedBy.kind,e.grantedBy.id,e.sourceWakeId,e.now),{grant:c(i),created:!0}},"isOwnerPrincipal",0,s,"needsEditGrant",0,function(e){return"implementation"===e||"revision"===e},"revokeWakeGrant",0,function(e,r,i=Date.now()){return l(r.category),n.default.transaction(()=>{let a=c(e);if(!a)throw new d("not_found",`No Wake grant ${e}.`);if(null!==a.revoked_at)return{grant:a,revoked:!1};n.default.prepare("UPDATE wake_grants SET revoked_at = ?, revoked_by_kind = ?, revoked_by_id = ? WHERE id = ? AND revoked_at IS NULL").run(i,r.principal.kind,r.principal.id,e);let s=a.source_wake_id?n.default.prepare("SELECT work_request_id FROM wakes WHERE id = ?").get(a.source_wake_id):void 0;return s?.work_request_id&&n.default.prepare(`
213
- INSERT INTO engine_events (id, request_id, sequence, attempt_id, type, data, created_at)
214
- SELECT ?, ?, COALESCE(MAX(sequence), 0) + 1, NULL, 'grant_revoked', ?, ? FROM engine_events WHERE request_id = ?
215
- `).run((0,t.randomUUID)(),s.work_request_id,JSON.stringify({grant_id:a.id,wake_id:a.source_wake_id,caller_agent_id:a.caller_agent_id,target_agent_id:a.target_agent_id,decided_by:{kind:r.principal.kind,id:r.principal.id}}),i,s.work_request_id),{grant:c(e),revoked:!0}}).immediate()},"wakeSafetyLimits",0,function(e=process.env){let t=(t,n)=>{let a=e[i[t]]?.trim(),s=a&&/^\d+$/.test(a)?Number(a):NaN;return Number.isSafeInteger(s)&&s>=n&&s<r[t]?s:r[t]},n=t("rootBudget",1);return{...r,maxWakeDepth:t("maxWakeDepth",0),rootBudget:n,maxContinuations:2*n}}])}];
216
-
217
- //# sourceMappingURL=lib_16j2293._.js.map