botmancers 0.6.1 → 0.8.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 (266) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +13 -12
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +1 -2
  5. package/app/.next/build-manifest.json +3 -3
  6. package/app/.next/prerender-manifest.json +4 -4
  7. package/app/.next/required-server-files.json +2 -2
  8. package/app/.next/routes-manifest.json +8 -12
  9. package/app/.next/server/app/_global-error.html +1 -1
  10. package/app/.next/server/app/_global-error.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/_not-found.html +1 -1
  17. package/app/.next/server/app/_not-found.rsc +2 -2
  18. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  22. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js +2 -2
  23. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js.nft.json +1 -1
  24. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -1
  25. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js +3 -3
  26. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js.nft.json +1 -1
  27. package/app/.next/server/app/api/bots/[id]/sessions/route.js +5 -5
  28. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -1
  29. package/app/.next/server/app/api/bots/[id]/sessions/sync/route/app-paths-manifest.json +3 -0
  30. package/app/.next/server/app/api/bots/[id]/sessions/sync/route.js +11 -0
  31. package/app/.next/server/app/api/bots/[id]/sessions/sync/route.js.nft.json +1 -0
  32. package/app/.next/server/app/api/bots/[id]/sessions/sync/route_client-reference-manifest.js +3 -0
  33. package/app/.next/server/app/api/bots/[id]/share-policy/route.js +3 -3
  34. package/app/.next/server/app/api/bots/[id]/share-policy/route.js.nft.json +1 -1
  35. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  36. package/app/.next/server/app/api/bots/availability/route.js +3 -2
  37. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  38. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  39. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  40. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  41. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  42. package/app/.next/server/app/api/bots/route.js +4 -4
  43. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  44. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  46. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  48. package/app/.next/server/app/api/conversations/[id]/messages/route.js +5 -5
  49. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  50. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/conversations/[id]/stop/route.js +6 -6
  52. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  54. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js +2 -2
  55. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/exchanges/[id]/route.js +3 -3
  57. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/exchanges/route.js +2 -2
  59. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/health/route.js +2 -2
  63. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/runtime-connections/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js +3 -3
  69. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/shares/route.js +3 -3
  71. package/app/.next/server/app/api/shares/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js +3 -3
  73. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -1
  74. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js +3 -3
  75. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js +2 -2
  77. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js +3 -3
  79. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/v0/agents/[agentId]/route.js +3 -3
  81. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js +3 -3
  83. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -1
  84. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js +3 -3
  85. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js.nft.json +1 -1
  86. package/app/.next/server/app/api/v0/agents/route.js +3 -3
  87. package/app/.next/server/app/api/v0/agents/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/v0/capabilities/route.js +3 -3
  89. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/v0/conversations/[id]/route.js +2 -2
  91. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js +3 -3
  93. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/v0/exchanges/[id]/route.js +3 -3
  95. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/v0/exchanges/route.js +3 -3
  97. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/v0/mcp/route.js +4 -4
  99. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js +3 -3
  101. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js +3 -3
  103. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js +3 -3
  105. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/v0/requests/[id]/route.js +2 -2
  107. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js +3 -3
  109. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js +3 -3
  111. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js +3 -3
  113. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js +3 -3
  115. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js +3 -3
  117. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/v0/shares/current/route.js +3 -3
  119. package/app/.next/server/app/api/v0/shares/current/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/v0/shares/route.js +3 -3
  121. package/app/.next/server/app/api/v0/shares/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js +2 -2
  123. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/wakes/[id]/decision/route.js +2 -2
  125. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/wakes/[id]/retry/route.js +2 -2
  127. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  128. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  129. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/exchanges/page.js.nft.json +1 -1
  131. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/exchanges.html +1 -1
  133. package/app/.next/server/app/exchanges.rsc +3 -3
  134. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +3 -3
  135. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +2 -2
  136. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +3 -3
  137. package/app/.next/server/app/index.html +1 -1
  138. package/app/.next/server/app/index.rsc +3 -3
  139. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  140. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  141. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  142. package/app/.next/server/app/page.js.nft.json +1 -1
  143. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  145. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/settings.html +1 -1
  147. package/app/.next/server/app/settings.rsc +3 -3
  148. package/app/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  149. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  150. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  151. package/app/.next/server/app/threads/[id]/page.js.nft.json +1 -1
  152. package/app/.next/server/app/threads/[id]/page_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app-paths-manifest.json +1 -2
  154. package/app/.next/server/chunks/[root-of-the-server]__0d3fjix._.js +1 -1
  155. package/app/.next/server/chunks/[root-of-the-server]__0hhill-._.js +3 -0
  156. package/app/.next/server/chunks/[root-of-the-server]__0k8wfe2._.js +3 -0
  157. package/app/.next/server/chunks/[root-of-the-server]__0mp8bap._.js +1 -1
  158. package/app/.next/server/chunks/[root-of-the-server]__0qaiqut._.js +5 -5
  159. package/app/.next/server/chunks/[root-of-the-server]__0qqsovi._.js +3 -0
  160. package/app/.next/server/chunks/[root-of-the-server]__0zrx1iz._.js +1 -1
  161. package/app/.next/server/chunks/[root-of-the-server]__10b5-i-._.js +1 -1
  162. package/app/.next/server/chunks/[root-of-the-server]__17xl_55._.js +1 -1
  163. package/app/.next/server/chunks/[root-of-the-server]__1j8fg_n._.js +3 -0
  164. package/app/.next/server/chunks/[root-of-the-server]__1x8phwp._.js +44 -0
  165. package/app/.next/server/chunks/[root-of-the-server]__200ep0k._.js +1 -1
  166. package/app/.next/server/chunks/_0061c2q._.js +1 -1
  167. package/app/.next/server/chunks/_057h7zr._.js +3 -0
  168. package/app/.next/server/chunks/_0_b7py8._.js +3 -0
  169. package/app/.next/server/chunks/_0a2do3x._.js +1 -1
  170. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  171. package/app/.next/server/chunks/_next-internal_server_app_api_bots_[id]_sessions_sync_route_actions_00y6n-f.js +3 -0
  172. package/app/.next/server/chunks/lib_0-opbv7._.js +330 -0
  173. package/app/.next/server/chunks/lib_0aejojj._.js +330 -0
  174. package/app/.next/server/chunks/lib_0il0ml1._.js +330 -0
  175. package/app/.next/server/chunks/lib_0iujsdg._.js +330 -0
  176. package/app/.next/server/chunks/lib_0kik6bx._.js +20 -20
  177. package/app/.next/server/chunks/lib_0pe3tiv._.js +20 -20
  178. package/app/.next/server/chunks/{lib_1zc7-gl._.js → lib_15a9ejf._.js} +122 -130
  179. package/app/.next/server/chunks/{lib_15adnlz._.js → lib_19pzc33._.js} +122 -130
  180. package/app/.next/server/chunks/lib_1a4ucxv._.js +330 -0
  181. package/app/.next/server/chunks/lib_1dehbst._.js +330 -0
  182. package/app/.next/server/chunks/lib_1z4vnh4._.js +330 -0
  183. package/app/.next/server/chunks/lib_1z7d95m._.js +2181 -0
  184. package/app/.next/server/chunks/lib_db_ts_1ttuckb._.js +58 -56
  185. package/app/.next/server/chunks/lib_service-api-http_ts_0xzqhny._.js +5 -5
  186. package/app/.next/server/chunks/ssr/_00ysoah._.js +3 -0
  187. package/app/.next/server/chunks/ssr/_14d-lxn._.js +3 -0
  188. package/app/.next/server/chunks/ssr/_1cvuhjt._.js +1 -1
  189. package/app/.next/server/chunks/ssr/_1lkd0ui._.js +3 -0
  190. package/app/.next/server/chunks/ssr/_1n5mvo5._.js +1 -1
  191. package/app/.next/server/chunks/ssr/_1o94bnv._.js +8 -1
  192. package/app/.next/server/chunks/ssr/_1r5kd5j._.js +3 -0
  193. package/app/.next/server/chunks/ssr/app_1-nwnha._.js +3 -0
  194. package/app/.next/server/chunks/ssr/app_bots_[id]_config_page_tsx_1e0uue9._.js +1 -1
  195. package/app/.next/server/chunks/ssr/lib_exchange-view_ts_1a4q9ju._.js +3 -0
  196. package/app/.next/server/instrumentation.js +1 -1
  197. package/app/.next/server/middleware-build-manifest.js +3 -3
  198. package/app/.next/server/pages/404.html +1 -1
  199. package/app/.next/server/pages/500.html +1 -1
  200. package/app/.next/server/server-reference-manifest.js +1 -1
  201. package/app/.next/server/server-reference-manifest.json +1 -1
  202. package/app/.next/static/chunks/0y1ihx4vq8du3.js +10 -0
  203. package/app/.next/static/chunks/1c2dl2ga-lqcb.css +3 -0
  204. package/app/.next/static/chunks/2q-tgwkalrnms.js +1 -0
  205. package/app/.next/static/chunks/2qf-mb__71dkk.js +1 -0
  206. package/app/.next/static/chunks/399dvlpyl00wn.js +1 -0
  207. package/app/.next/static/chunks/3b7r6u9nfsjb1.js +1 -0
  208. package/app/.next/static/chunks/3f1v-zuki9k7k.js +1 -0
  209. package/app/.next/static/chunks/3whw2-l4a2sli.js +1 -0
  210. package/app/BUILD_INFO.json +2 -2
  211. package/app/package.json +1 -1
  212. package/app/server.js +1 -1
  213. package/dist/cli.d.ts +1 -1
  214. package/dist/cli.js +2 -2
  215. package/dist/product.d.ts +0 -1
  216. package/dist/product.js +12 -22
  217. package/dist/setup.js +9 -9
  218. package/package.json +1 -2
  219. package/schemas/botmancers.mcp.v2.tools.json +3 -3
  220. package/app/.next/server/app/api/agent-deck/decks/route/app-paths-manifest.json +0 -3
  221. package/app/.next/server/app/api/agent-deck/decks/route.js +0 -9
  222. package/app/.next/server/app/api/agent-deck/decks/route.js.nft.json +0 -1
  223. package/app/.next/server/app/api/agent-deck/decks/route_client-reference-manifest.js +0 -3
  224. package/app/.next/server/app/api/agent-deck/settings/route/app-paths-manifest.json +0 -3
  225. package/app/.next/server/app/api/agent-deck/settings/route/build-manifest.json +0 -12
  226. package/app/.next/server/app/api/agent-deck/settings/route/server-reference-manifest.json +0 -4
  227. package/app/.next/server/app/api/agent-deck/settings/route.js +0 -9
  228. package/app/.next/server/app/api/agent-deck/settings/route.js.nft.json +0 -1
  229. package/app/.next/server/app/api/agent-deck/settings/route_client-reference-manifest.js +0 -3
  230. package/app/.next/server/chunks/[root-of-the-server]__0e_agq4._.js +0 -3
  231. package/app/.next/server/chunks/[root-of-the-server]__0j4pjyg._.js +0 -3
  232. package/app/.next/server/chunks/[root-of-the-server]__0mo_kn3._.js +0 -48
  233. package/app/.next/server/chunks/[root-of-the-server]__17mum5-._.js +0 -3
  234. package/app/.next/server/chunks/[root-of-the-server]__1bhzfu_._.js +0 -7
  235. package/app/.next/server/chunks/[root-of-the-server]__1g_n99l._.js +0 -3
  236. package/app/.next/server/chunks/[root-of-the-server]__1t4ybp2._.js +0 -48
  237. package/app/.next/server/chunks/_0qv-4by._.js +0 -3
  238. package/app/.next/server/chunks/_next-internal_server_app_api_agent-deck_decks_route_actions_0yguyfv.js +0 -3
  239. package/app/.next/server/chunks/_next-internal_server_app_api_agent-deck_settings_route_actions_0z_nbkb.js +0 -3
  240. package/app/.next/server/chunks/lib_0v4d9w0._.js +0 -339
  241. package/app/.next/server/chunks/lib_0v6lblw._.js +0 -5
  242. package/app/.next/server/chunks/lib_0zzo6zb._.js +0 -339
  243. package/app/.next/server/chunks/lib_1_u7n-u._.js +0 -339
  244. package/app/.next/server/chunks/lib_1muhwn7._.js +0 -339
  245. package/app/.next/server/chunks/lib_1xnxg-q._.js +0 -339
  246. package/app/.next/server/chunks/ssr/_0_fa0na._.js +0 -3
  247. package/app/.next/server/chunks/ssr/_0epgorw._.js +0 -3
  248. package/app/.next/server/chunks/ssr/_1i02yyi._.js +0 -3
  249. package/app/.next/server/chunks/ssr/app_components_AgentDeckRuntime_tsx_024janf._.js +0 -3
  250. package/app/.next/server/chunks/ssr/app_exchanges_page_tsx_0j-n2a1._.js +0 -3
  251. package/app/.next/server/chunks/ssr/app_settings_page_tsx_1t-rdz-._.js +0 -3
  252. package/app/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js +0 -3
  253. package/app/.next/static/chunks/0jon21u-9j2aw.css +0 -3
  254. package/app/.next/static/chunks/14k6cvywgknx2.js +0 -3
  255. package/app/.next/static/chunks/1ku9himlsx-hn.js +0 -1
  256. package/app/.next/static/chunks/1r5tqd-7h1xjn.js +0 -1
  257. package/app/.next/static/chunks/21aqekm5z0j47.js +0 -1
  258. package/app/.next/static/chunks/22xbkclbkct3s.js +0 -1
  259. package/app/.next/static/chunks/2c953okoei6ip.js +0 -1
  260. package/app/.next/static/chunks/2t_2gf3xoxz_m.js +0 -1
  261. package/app/.next/static/chunks/34vnvo1qssbaj.js +0 -1
  262. /package/app/.next/server/app/api/{agent-deck/decks → bots/[id]/sessions/sync}/route/build-manifest.json +0 -0
  263. /package/app/.next/server/app/api/{agent-deck/decks → bots/[id]/sessions/sync}/route/server-reference-manifest.json +0 -0
  264. /package/app/.next/static/{_yrIZIFsIbXA0Gaxkytjd → 3rSDqQK0KGcTDI98uoZRy}/_buildManifest.js +0 -0
  265. /package/app/.next/static/{_yrIZIFsIbXA0Gaxkytjd → 3rSDqQK0KGcTDI98uoZRy}/_clientMiddlewareManifest.js +0 -0
  266. /package/app/.next/static/{_yrIZIFsIbXA0Gaxkytjd → 3rSDqQK0KGcTDI98uoZRy}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[27828,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(35099);a.s(["default",0,function({summary:a,onChanged:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(""),k=(0,e.stateTone)(a.state),l=(0,e.outcomeLine)(a),m=(0,e.failureAdvice)(a),n=`exchange-${a.id}-title`,o=async()=>{if(!g){h(!0),j("");try{let b=await fetch(`/api/exchanges/${encodeURIComponent(a.id)}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"});if(!b.ok){let a=await b.json().catch(()=>null);j("string"==typeof a?.error?.message?a.error.message:"Could not cancel. Try again.")}}catch{j("Could not cancel. Try again.")}finally{h(!1),f?.()}}};return(0,b.jsxs)("article",{id:`exchange-${a.id}`,className:`exchange-card is-${k} is-${a.state}`,"data-exchange-id":a.id,"data-exchange-state":a.state,"aria-labelledby":n,tabIndex:-1,children:[(0,b.jsxs)("p",{className:"exchange-card-line",children:[(0,b.jsx)("span",{className:"exchange-card-mode",children:(0,e.modeLabel)(a.mode)}),(0,b.jsx)("span",{id:n,className:"exchange-card-title",children:(0,e.participantsLabel)(a)}),(0,b.jsx)("span",{className:"exchange-card-state",role:"status",children:(0,e.liveStateLabel)(a)})]}),(0,b.jsx)("p",{className:"exchange-card-session",children:(0,e.sessionLabel)(a)}),(0,b.jsxs)("p",{className:"exchange-card-instruction",children:[(0,b.jsx)("span",{className:"exchange-card-key",children:(0,e.instructionHeading)(a.mode)})," ",(0,e.excerpt)(a.instruction,220)]}),l?(0,b.jsx)("p",{className:"failed"===a.state?"exchange-card-outcome is-failure":"exchange-card-outcome",children:l}):null,m?(0,b.jsx)("p",{className:"exchange-card-advice",children:m}):null,i?(0,b.jsx)("p",{className:"exchange-card-error",role:"alert",children:i}):null,(0,b.jsxs)("p",{className:"exchange-card-foot",children:[(0,b.jsxs)("span",{className:"exchange-card-time",children:["Updated ",(0,e.formatExchangeTime)(a.updated_at)]}),(0,b.jsx)(d.default,{className:"exchange-card-link",href:(0,e.detailsHref)(a.id),"aria-label":`Details: ${(0,e.modeLabel)(a.mode)} ${(0,e.participantsLabel)(a)}`,children:"Details"}),a.can_cancel?(0,b.jsx)("button",{type:"button",className:"exchange-card-cancel",disabled:g,onClick:()=>{o()},children:g?"Cancelling…":"Cancel"}):null]})]})}])},35099,65221,a=>{"use strict";function b(a){return`${new Date(a).toISOString().slice(0,16).replace("T"," ")} UTC`}let c="Not reported";function d(a){return a.toFixed(1).replace(/\.0$/,"")}function e(a){return a.toLocaleString("en-US")}function f(a){return 0===a?"$0.00":a>=.01?`$${a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`:a<1e-4?"<$0.0001":`$${a.toFixed(4)}`}let g={input_tokens:"Input tokens",output_tokens:"Output tokens",cost_usd:"Cost"};function h(a,b,c){return"cost_usd"===a?f(b):c?e(b):b<1e3?String(b):b<999950?`${d(b/1e3)}k`:b<99995e4?`${d(b/1e6)}M`:`${d(b/1e9)}B`}function i(a){return`${a} ${1===a?"run":"runs"}`}function j(a,b,d=!1){let e=g[a];if(!b||"unavailable"===b.quality||null===b.sum)return{name:e,text:c,quality:"unavailable",coverage:b&&b.total>0?`0 of ${i(b.total)} reported`:"No runs recorded",label:`${e}: not reported`};let f=h(a,b.sum,d),k=h(a,b.sum,!0);return"partial"===b.quality?{name:e,text:f,quality:"partial",coverage:`Partial: ${b.known} of ${i(b.total)} reported`,label:`${e}: at least ${k}, partial, reported by ${b.known} of ${i(b.total)}`}:{name:e,text:f,quality:"complete",coverage:`All ${i(b.total)} reported`,label:`${e}: ${k}, reported by all ${i(b.total)}`}}a.s(["SESSION_FILTER_OPTIONS",0,[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"ended",label:"Ended"}],"attemptLabel",0,function(a){let b="source"===a.role?"Started the session":"Resumed the session";return`${b} \xb7 ${a.outcome??"running"}`},"emptySessionsCopy",0,function(a,b){return"active"===a?`${b} has no active sessions.`:"ended"===a?`${b} has no ended sessions.`:`${b} has no sessions yet. One appears after a coding run keeps its runtime context.`},"formatSessionDate",0,b,"runtimeLabel",0,function(a){return a.agent.transport?`${a.agent.adapter} \xb7 ${a.agent.transport}`:a.agent.adapter},"sessionStateTags",0,function(a){let b=[];return(a.home&&b.push("Home"),a.state?.availability==="missing")?[...b,"Missing"]:(a.state?.lifecycle==="archived"&&b.push("Archived"),a.state?.busy&&b.push("Busy"),(a.resumable||a.state?.resumable===!0)&&b.push("Resumable"),b)},"sessionUsageLine",0,function(a){let b=j("input_tokens",a?.input_tokens),d=j("output_tokens",a?.output_tokens),e=j("cost_usd",a?.cost_usd),f=[b,d,e];if(f.every(a=>"unavailable"===a.quality))return{text:c,label:"Usage: not reported",quality:"unavailable",partial:!1};let g=["unavailable"===b.quality?"input not reported":`${b.text} in`,"unavailable"===d.quality?"output not reported":`${d.text} out`,"unavailable"===e.quality?"cost not reported":e.text].join(" · "),h=f.some(a=>"partial"===a.quality),i=h||f.some(a=>"unavailable"===a.quality)?"partial":"complete";return{text:g,label:`Reported usage: ${f.map(a=>a.label).join("; ")}`,quality:i,partial:h}},"statusLabel",0,function(a){return"active"===a.status?"Active":"Ended"},"usageMetricView",0,j,"usageSampleLabel",0,function(a,b){let c="turn"===a.kind?"start"===a.turn_kind?"provider turn, started":"provider turn":"resume"===a.turn_kind?"resumed":"started";return`Run ${b+1} \xb7 ${c}`},"usageSampleValues",0,function(a){return{input:null===a.input_tokens?c:e(a.input_tokens),output:null===a.output_tokens?c:e(a.output_tokens),cost:null===a.cost_usd?c:f(a.cost_usd)}},"workRequestLabel",0,function(a){var b;let c=a.origin.work_request;return c?`${(b=c.execution_kind)?b[0].toUpperCase()+b.slice(1):b} \xb7 ${c.state}`:null}],65221);let k={ask:"Ask from this context",resume:"Resume work here",handoff:"Hand off to…"},l=["queued","extracting","delivering","completed","failed","cancelled"],m=["completed","failed","cancelled"];function n(a,b){switch(b){case"queued":return"Queued";case"extracting":return"ask"===a?"Asking the session":"Extracting handoff";case"delivering":return"Delivering handoff";case"completed":return"ask"===a?"Answered":"Handed off";case"failed":return"Failed";case"cancelled":return"Cancelled"}}function o(a,b=140){let c=String(a??"").split("\n").map(a=>a.trim()).filter(a=>a.length>0).join(" ");return c.length>b?`${c.slice(0,b-1).trimEnd()}…`:c}function p(a,b){return b.updated_at-a.updated_at||b.created_at-a.created_at||(a.id<b.id?-1:+(a.id>b.id))}a.s(["DEFAULT_LEDGER_FILTER",0,{mode:"all",state:"all",agentId:""},"INSTRUCTION_LIMIT",0,4e3,"MODE_FILTER_OPTIONS",0,[{value:"all",label:"All"},{value:"ask",label:"Ask"},{value:"continue",label:"Continue"}],"STATE_FILTER_OPTIONS",0,[{value:"all",label:"Any status"},{value:"active",label:"In progress"},{value:"queued",label:"Queued"},{value:"extracting",label:"Asking / extracting"},{value:"delivering",label:"Delivering"},{value:"completed",label:"Completed"},{value:"failed",label:"Failed"},{value:"cancelled",label:"Cancelled"}],"detailsHref",0,function(a){return`/exchanges?id=${encodeURIComponent(a)}`},"eventLabel",0,function(a,b){let c=a.data??{},d=b.source.agent_name,e=b.destination?.agent_name??"the destination Agent",f="string"==typeof c.hop?c.hop:null;switch(a.type){case"created":return"ask"===b.mode?`You asked ${d}'s session a question`:`You handed ${d}'s session to ${e}`;case"hop_queued":if("deliver"===f)return`Handoff queued for ${e}'s new session`;return"extract"===f?`Handoff extraction queued in ${d}'s session`:`Question queued for ${d}'s session`;case"hop_started":if("deliver"===f)return`${e} started a new session`;return"extract"===f?`${d}'s session started extracting the handoff`:`${d}'s session started answering`;case"state_changed":{let a="string"==typeof c.to&&l.includes(c.to)?c.to:null;return a?`Now ${n(b.mode,a).toLowerCase()}`:"State changed"}case"answer_returned":return`Answer returned to ${b.origin?.label??"the origin thread"}${c.truncated?" (shortened)":""}`;case"packet_extracted":return"Handoff packet extracted";case"packet_rejected":return`Handoff packet refused${"string"==typeof c.reason?`: ${c.reason}`:""}`;case"destination_replied":return`${e} replied in ${b.destination?.conversation?.label??"its thread"}`;case"destination_session_rejected":return`${e}'s session was not new; the handoff stopped`;case"cancel_requested":return"You asked to cancel";case"hop_result_discarded":return"A late result was discarded";default:return a.type.replace(/_/g," ")}},"excerpt",0,o,"exchangeRequestBody",0,function(a,b,c){let d={mode:a.mode,idempotency_key:c,origin_conversation_id:a.originConversationId,source:{agent_id:b.agentId,session_ref:b.sessionRef},instruction:a.instruction.trim()};return"continue"===a.mode&&(d.destination={agent_id:a.destinationAgentId}),d},"failureAdvice",0,function(a){if("failed"!==a.state)return null;switch(a.failure?.code){case"packet_invalid":case"packet_missing":return"The source session did not return a usable handoff. Start a new Continue with a clearer objective.";case"destination_session_invalid":return"The destination did not start a fresh session. Check its runtime, then start a new Continue.";case"destination_turn_failed":return"Check the destination Agent’s runtime, then start a new Continue from the source session.";case"source_turn_failed":return"Check the source Agent’s runtime, then start a new exchange from its Sessions.";default:return"Start a new exchange from the session to try again."}},"formatExchangeTime",0,function(a){return b(a)},"instructionHeading",0,function(a){return"ask"===a?"Question":"Objective"},"ledgerAgents",0,function(a){let b=new Map;for(let c of a)b.set(c.source.agent_id,c.source.agent_name),c.destination&&b.set(c.destination.agent_id,c.destination.agent_name);return[...b.entries()].map(([a,b])=>({id:a,name:b})).sort((a,b)=>a.name.localeCompare(b.name)||a.id.localeCompare(b.id))},"ledgerRows",0,function(a,b){return a.filter(a=>("all"===b.mode||a.mode===b.mode)&&("active"!==b.state||!a.terminal)&&("all"===b.state||"active"===b.state||a.state===b.state)&&(!b.agentId||a.source.agent_id===b.agentId||a.destination?.agent_id===b.agentId)).sort(p)},"ledgerView",0,function(a,b,c){return null===a?b?"error":"loading":0===a.length?"empty":0===c.length?"filtered-out":"rows"},"linkRoleLabel",0,function(a){let b={origin:"Started here",source:"Source session",destination:"Destination"};return a.map(a=>b[a]).join(" · ")},"liveStateLabel",0,function(a){var b;return a.cancel_requested&&(b=a.state,!m.includes(b))?"Cancelling…":n(a.mode,a.state)},"modeLabel",0,function(a){return"ask"===a?"Ask":"Continue"},"outcomeLine",0,function(a){if("completed"===a.state){if("ask"===a.mode){let b=a.origin?.label??"the origin thread";return a.outcome.answer?`Answer in ${b}: ${o(a.outcome.answer,200)}`:`Answered in ${b}.`}let b=a.destination?.agent_name??"The destination Agent";return a.outcome.reply?`${b} picked it up in a new session: ${o(a.outcome.reply,200)}`:`${b} picked it up in a new session.`}return"failed"===a.state?a.failure?.message||"The exchange failed.":"cancelled"===a.state?"Cancelled before it finished. Nothing more will run.":null},"participantsLabel",0,function(a){return"ask"===a.mode?`You → ${a.source.agent_name}`:`${a.source.agent_name} → ${a.destination?.agent_name??"another Agent"}`},"pinRequestBody",0,function(a,b,c,d,e){return{action:a,content:b.trim(),conversation_id:c,idempotency_key:e,..."resume"===a?{approve_write:d}:{}}},"sessionDialogMode",0,function(a){return"handoff"===a?"continue":a},"sessionDialogTitle",0,function(a){return k["continue"===a?"handoff":a]},"sessionDialogUsesPin",0,function(a,b){return"resume"===a||"ask"===a&&"provider"===b},"sessionLabel",0,function(a){return`${a.source.agent_name}'s session “${a.source.session_title}”`},"sessionRowActions",0,function(a){let b;if(a.actions)b=a.actions;else{let c="ended"===a.status?{available:!1,reason:"Ask from this context and Hand off to… are unavailable: this session has ended. Its history stays here."}:a.resumable?{available:!0}:{available:!1,reason:`Ask from this context and Hand off to… are unavailable: Botmancers can’t resume this session under ${a.agent.name}’s current runtime.`},d=c.available?{available:!0}:{available:!1,code:"ended"===a.status?"session_ended":"session_not_resumable",reason:c.reason,recovery:"choose_session"};b={ask:d,resume:{available:!1,code:"action_unavailable",reason:`${k.resume} is unavailable: this runtime can’t resume a session with edits.`,recovery:"choose_action"},handoff:d}}return["ask","resume","handoff"].map(a=>({action:a,label:k[a],availability:b[a]}))},"stateTone",0,function(a){return"completed"===a?"done":"failed"===a||"cancelled"===a?"stopped":"active"},"submitErrorMessage",0,function(a,b){switch(a){case"session_ended":return"This session has ended and can’t be resumed.";case"session_not_resumable":return"Botmancers can’t resume this session under the Agent’s current runtime.";case"source_session_busy":return"This session already has an exchange in progress. Wait for it or cancel it from its card.";case"agent_unavailable":return b||"That Agent has no Agent Deck selected.";case"idempotency_conflict":return"This request changed while it was being sent. Send again.";case"session_missing":return"The runtime no longer has this session. Its history stays here; choose another session.";case"approval_required":return"Resume work here needs your approval of edits. Tick the approval, then send again.";case"authority_not_allowed":return b||"This Agent’s policy doesn’t allow edits in a resumed session. Change it in Config.";case"action_unavailable":return b||"This runtime can’t do that in this session. Choose another action.";case"provider_failed":return"The runtime failed this turn. Nothing moved to another session; try again later.";default:return b||"The exchange could not be started. Your draft is kept; try again."}},"threadHref",0,function(a,b){let c=new URLSearchParams;if(a.thread_agent_id)return c.set("agent",a.thread_agent_id),b&&c.set("exchange",b),`/?${c.toString()}`;if("group"!==a.kind)return null;b&&c.set("exchange",b);let d=c.toString();return`/threads/${encodeURIComponent(a.id)}${d?`?${d}`:""}`},"validateDraft",0,function(a){let b={},c=a.instruction.trim(),d="ask"===a.mode?"a question":"an objective";return c?a.instruction.length>4e3&&(b.instruction="Keep it under 4000 characters."):b.instruction=`Enter ${d}.`,a.originConversationId||(b.origin="Choose the thread that follows this exchange."),"continue"!==a.mode||a.destinationAgentId||(b.destination="Choose the Agent who continues the work."),b},"validateResumeDraft",0,function(a,b){let c={};return a.trim()?a.length>4e3&&(c.instruction="Keep it under 4000 characters."):c.instruction="Enter what to work on.",b||(c.approval="Approve edits in this session to resume work here."),c}],35099)}];
2
-
3
- //# sourceMappingURL=_0_fa0na._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63718,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(50944),f=a.i(27828);a.s(["default",0,function(){let a=String((0,e.useParams)().id??""),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(0),q=(0,c.useRef)(null);(0,c.useEffect)(()=>{q.current=new URLSearchParams(window.location.search).get("exchange")},[]),(0,c.useEffect)(()=>{if(!a)return;let b=!1,c=async()=>{try{let[c,d,e]=await Promise.all([fetch(`/api/conversations/${encodeURIComponent(a)}`,{cache:"no-store"}),fetch(`/api/conversations/${encodeURIComponent(a)}/messages`,{cache:"no-store"}),fetch(`/api/exchanges?conversation=${encodeURIComponent(a)}`,{cache:"no-store"})]);if(b)return;if(!c.ok)return void n(404===c.status?"This thread no longer exists.":"Could not load this thread.");let f=await c.json(),g=await d.json().catch(()=>null),i=await e.json().catch(()=>null);if(b)return;let k=f?.details??null,m=Array.isArray(k?.members)?k.members.map(a=>a?.name).filter(Boolean):[];h({label:k?.name?`Group ${k.name}`:"Group thread",members:m}),d.ok&&Array.isArray(g)&&j(g),e.ok&&Array.isArray(i?.exchanges)&&l(i.exchanges),n("")}catch{b||n("Could not load this thread.")}};c();let d=setInterval(c,2e3);return()=>{b=!0,clearInterval(d)}},[a,o]),(0,c.useEffect)(()=>{let a=q.current;if(!a)return;let b=document.getElementById(`exchange-${a}`);b&&(q.current=null,b.scrollIntoView({block:"center"}),b.focus({preventScroll:!0}))},[k]);let r=new Set,s=a=>(0,b.jsx)("li",{className:"msg-status",children:(0,b.jsx)(f.default,{summary:a,onChanged:()=>p(a=>a+1)})},`exchange-${a.id}`),t=a=>{let b=k.filter(b=>!r.has(b.id)&&b.created_at<a).sort((a,b)=>a.created_at-b.created_at||(a.id<b.id?-1:1));return b.forEach(a=>r.add(a.id)),b.map(s)};return(0,b.jsxs)("div",{className:"ledger-page group-thread-page",children:[(0,b.jsxs)("header",{className:"ledger-head",children:[(0,b.jsxs)("nav",{className:"group-thread-nav","aria-label":"Thread navigation",children:[(0,b.jsx)(d.default,{href:"/",className:"cfg-link ledger-back",children:"← Back to chat"}),(0,b.jsx)(d.default,{href:"/exchanges",className:"cfg-link ledger-back",children:"Agent Exchanges"})]}),(0,b.jsx)("h1",{className:"ledger-title",children:g?.label??"Group thread"}),g&&g.members.length>0?(0,b.jsxs)("p",{className:"ledger-sub",children:["With ",g.members.join(", ")]}):null]}),(0,b.jsx)("main",{className:"group-thread-main","aria-label":"Thread",children:m?(0,b.jsxs)("div",{className:"ledger-state",role:"alert",children:[(0,b.jsx)("p",{className:"delete-error",children:m}),(0,b.jsx)("button",{type:"button",className:"pin-word",onClick:()=>p(a=>a+1),children:"Retry"})]}):g?(0,b.jsxs)("ol",{className:"group-thread-list","aria-label":"Messages and exchanges",children:[i.map(a=>(0,b.jsxs)(c.Fragment,{children:[t(a.created_at),(0,b.jsxs)("li",{className:"user"===a.sender_type?"msg-you":"msg-bot",children:[(0,b.jsx)("div",{className:"user"===a.sender_type?"msg-name msg-name-you":"msg-name",children:"user"===a.sender_type?"You":a.sender_name||"Agent"}),(0,b.jsx)("div",{className:"msg-body group-thread-body",children:a.content.replace(/^\s*\[Message from [^\]]+\]\s*(?:\r?\n)?/,"").replace(/^\s+/,"")})]})]},a.id)),t(1/0),0===i.length&&0===k.length?(0,b.jsx)("li",{className:"ledger-state",children:"No messages in this thread yet."}):null]}):(0,b.jsx)("p",{className:"ledger-state",role:"status",children:"Loading thread…"})})]})}])},69789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
-
3
- //# sourceMappingURL=_0epgorw._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[35099,65221,a=>{"use strict";function b(a){return`${new Date(a).toISOString().slice(0,16).replace("T"," ")} UTC`}let c="Not reported";function d(a){return a.toFixed(1).replace(/\.0$/,"")}function e(a){return a.toLocaleString("en-US")}function f(a){return 0===a?"$0.00":a>=.01?`$${a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`:a<1e-4?"<$0.0001":`$${a.toFixed(4)}`}let g={input_tokens:"Input tokens",output_tokens:"Output tokens",cost_usd:"Cost"};function h(a,b,c){return"cost_usd"===a?f(b):c?e(b):b<1e3?String(b):b<999950?`${d(b/1e3)}k`:b<99995e4?`${d(b/1e6)}M`:`${d(b/1e9)}B`}function i(a){return`${a} ${1===a?"run":"runs"}`}function j(a,b,d=!1){let e=g[a];if(!b||"unavailable"===b.quality||null===b.sum)return{name:e,text:c,quality:"unavailable",coverage:b&&b.total>0?`0 of ${i(b.total)} reported`:"No runs recorded",label:`${e}: not reported`};let f=h(a,b.sum,d),k=h(a,b.sum,!0);return"partial"===b.quality?{name:e,text:f,quality:"partial",coverage:`Partial: ${b.known} of ${i(b.total)} reported`,label:`${e}: at least ${k}, partial, reported by ${b.known} of ${i(b.total)}`}:{name:e,text:f,quality:"complete",coverage:`All ${i(b.total)} reported`,label:`${e}: ${k}, reported by all ${i(b.total)}`}}a.s(["SESSION_FILTER_OPTIONS",0,[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"ended",label:"Ended"}],"attemptLabel",0,function(a){let b="source"===a.role?"Started the session":"Resumed the session";return`${b} \xb7 ${a.outcome??"running"}`},"emptySessionsCopy",0,function(a,b){return"active"===a?`${b} has no active sessions.`:"ended"===a?`${b} has no ended sessions.`:`${b} has no sessions yet. One appears after a coding run keeps its runtime context.`},"formatSessionDate",0,b,"runtimeLabel",0,function(a){return a.agent.transport?`${a.agent.adapter} \xb7 ${a.agent.transport}`:a.agent.adapter},"sessionStateTags",0,function(a){let b=[];return(a.home&&b.push("Home"),a.state?.availability==="missing")?[...b,"Missing"]:(a.state?.lifecycle==="archived"&&b.push("Archived"),a.state?.busy&&b.push("Busy"),(a.resumable||a.state?.resumable===!0)&&b.push("Resumable"),b)},"sessionUsageLine",0,function(a){let b=j("input_tokens",a?.input_tokens),d=j("output_tokens",a?.output_tokens),e=j("cost_usd",a?.cost_usd),f=[b,d,e];if(f.every(a=>"unavailable"===a.quality))return{text:c,label:"Usage: not reported",quality:"unavailable",partial:!1};let g=["unavailable"===b.quality?"input not reported":`${b.text} in`,"unavailable"===d.quality?"output not reported":`${d.text} out`,"unavailable"===e.quality?"cost not reported":e.text].join(" · "),h=f.some(a=>"partial"===a.quality),i=h||f.some(a=>"unavailable"===a.quality)?"partial":"complete";return{text:g,label:`Reported usage: ${f.map(a=>a.label).join("; ")}`,quality:i,partial:h}},"statusLabel",0,function(a){return"active"===a.status?"Active":"Ended"},"usageMetricView",0,j,"usageSampleLabel",0,function(a,b){let c="turn"===a.kind?"start"===a.turn_kind?"provider turn, started":"provider turn":"resume"===a.turn_kind?"resumed":"started";return`Run ${b+1} \xb7 ${c}`},"usageSampleValues",0,function(a){return{input:null===a.input_tokens?c:e(a.input_tokens),output:null===a.output_tokens?c:e(a.output_tokens),cost:null===a.cost_usd?c:f(a.cost_usd)}},"workRequestLabel",0,function(a){var b;let c=a.origin.work_request;return c?`${(b=c.execution_kind)?b[0].toUpperCase()+b.slice(1):b} \xb7 ${c.state}`:null}],65221);let k={ask:"Ask from this context",resume:"Resume work here",handoff:"Hand off to…"},l=["queued","extracting","delivering","completed","failed","cancelled"],m=["completed","failed","cancelled"];function n(a,b){switch(b){case"queued":return"Queued";case"extracting":return"ask"===a?"Asking the session":"Extracting handoff";case"delivering":return"Delivering handoff";case"completed":return"ask"===a?"Answered":"Handed off";case"failed":return"Failed";case"cancelled":return"Cancelled"}}function o(a,b=140){let c=String(a??"").split("\n").map(a=>a.trim()).filter(a=>a.length>0).join(" ");return c.length>b?`${c.slice(0,b-1).trimEnd()}…`:c}function p(a,b){return b.updated_at-a.updated_at||b.created_at-a.created_at||(a.id<b.id?-1:+(a.id>b.id))}a.s(["DEFAULT_LEDGER_FILTER",0,{mode:"all",state:"all",agentId:""},"INSTRUCTION_LIMIT",0,4e3,"MODE_FILTER_OPTIONS",0,[{value:"all",label:"All"},{value:"ask",label:"Ask"},{value:"continue",label:"Continue"}],"STATE_FILTER_OPTIONS",0,[{value:"all",label:"Any status"},{value:"active",label:"In progress"},{value:"queued",label:"Queued"},{value:"extracting",label:"Asking / extracting"},{value:"delivering",label:"Delivering"},{value:"completed",label:"Completed"},{value:"failed",label:"Failed"},{value:"cancelled",label:"Cancelled"}],"detailsHref",0,function(a){return`/exchanges?id=${encodeURIComponent(a)}`},"eventLabel",0,function(a,b){let c=a.data??{},d=b.source.agent_name,e=b.destination?.agent_name??"the destination Agent",f="string"==typeof c.hop?c.hop:null;switch(a.type){case"created":return"ask"===b.mode?`You asked ${d}'s session a question`:`You handed ${d}'s session to ${e}`;case"hop_queued":if("deliver"===f)return`Handoff queued for ${e}'s new session`;return"extract"===f?`Handoff extraction queued in ${d}'s session`:`Question queued for ${d}'s session`;case"hop_started":if("deliver"===f)return`${e} started a new session`;return"extract"===f?`${d}'s session started extracting the handoff`:`${d}'s session started answering`;case"state_changed":{let a="string"==typeof c.to&&l.includes(c.to)?c.to:null;return a?`Now ${n(b.mode,a).toLowerCase()}`:"State changed"}case"answer_returned":return`Answer returned to ${b.origin?.label??"the origin thread"}${c.truncated?" (shortened)":""}`;case"packet_extracted":return"Handoff packet extracted";case"packet_rejected":return`Handoff packet refused${"string"==typeof c.reason?`: ${c.reason}`:""}`;case"destination_replied":return`${e} replied in ${b.destination?.conversation?.label??"its thread"}`;case"destination_session_rejected":return`${e}'s session was not new; the handoff stopped`;case"cancel_requested":return"You asked to cancel";case"hop_result_discarded":return"A late result was discarded";default:return a.type.replace(/_/g," ")}},"excerpt",0,o,"exchangeRequestBody",0,function(a,b,c){let d={mode:a.mode,idempotency_key:c,origin_conversation_id:a.originConversationId,source:{agent_id:b.agentId,session_ref:b.sessionRef},instruction:a.instruction.trim()};return"continue"===a.mode&&(d.destination={agent_id:a.destinationAgentId}),d},"failureAdvice",0,function(a){if("failed"!==a.state)return null;switch(a.failure?.code){case"packet_invalid":case"packet_missing":return"The source session did not return a usable handoff. Start a new Continue with a clearer objective.";case"destination_session_invalid":return"The destination did not start a fresh session. Check its runtime, then start a new Continue.";case"destination_turn_failed":return"Check the destination Agent’s runtime, then start a new Continue from the source session.";case"source_turn_failed":return"Check the source Agent’s runtime, then start a new exchange from its Sessions.";default:return"Start a new exchange from the session to try again."}},"formatExchangeTime",0,function(a){return b(a)},"instructionHeading",0,function(a){return"ask"===a?"Question":"Objective"},"ledgerAgents",0,function(a){let b=new Map;for(let c of a)b.set(c.source.agent_id,c.source.agent_name),c.destination&&b.set(c.destination.agent_id,c.destination.agent_name);return[...b.entries()].map(([a,b])=>({id:a,name:b})).sort((a,b)=>a.name.localeCompare(b.name)||a.id.localeCompare(b.id))},"ledgerRows",0,function(a,b){return a.filter(a=>("all"===b.mode||a.mode===b.mode)&&("active"!==b.state||!a.terminal)&&("all"===b.state||"active"===b.state||a.state===b.state)&&(!b.agentId||a.source.agent_id===b.agentId||a.destination?.agent_id===b.agentId)).sort(p)},"ledgerView",0,function(a,b,c){return null===a?b?"error":"loading":0===a.length?"empty":0===c.length?"filtered-out":"rows"},"linkRoleLabel",0,function(a){let b={origin:"Started here",source:"Source session",destination:"Destination"};return a.map(a=>b[a]).join(" · ")},"liveStateLabel",0,function(a){var b;return a.cancel_requested&&(b=a.state,!m.includes(b))?"Cancelling…":n(a.mode,a.state)},"modeLabel",0,function(a){return"ask"===a?"Ask":"Continue"},"outcomeLine",0,function(a){if("completed"===a.state){if("ask"===a.mode){let b=a.origin?.label??"the origin thread";return a.outcome.answer?`Answer in ${b}: ${o(a.outcome.answer,200)}`:`Answered in ${b}.`}let b=a.destination?.agent_name??"The destination Agent";return a.outcome.reply?`${b} picked it up in a new session: ${o(a.outcome.reply,200)}`:`${b} picked it up in a new session.`}return"failed"===a.state?a.failure?.message||"The exchange failed.":"cancelled"===a.state?"Cancelled before it finished. Nothing more will run.":null},"participantsLabel",0,function(a){return"ask"===a.mode?`You → ${a.source.agent_name}`:`${a.source.agent_name} → ${a.destination?.agent_name??"another Agent"}`},"pinRequestBody",0,function(a,b,c,d,e){return{action:a,content:b.trim(),conversation_id:c,idempotency_key:e,..."resume"===a?{approve_write:d}:{}}},"sessionDialogMode",0,function(a){return"handoff"===a?"continue":a},"sessionDialogTitle",0,function(a){return k["continue"===a?"handoff":a]},"sessionDialogUsesPin",0,function(a,b){return"resume"===a||"ask"===a&&"provider"===b},"sessionLabel",0,function(a){return`${a.source.agent_name}'s session “${a.source.session_title}”`},"sessionRowActions",0,function(a){let b;if(a.actions)b=a.actions;else{let c="ended"===a.status?{available:!1,reason:"Ask from this context and Hand off to… are unavailable: this session has ended. Its history stays here."}:a.resumable?{available:!0}:{available:!1,reason:`Ask from this context and Hand off to… are unavailable: Botmancers can’t resume this session under ${a.agent.name}’s current runtime.`},d=c.available?{available:!0}:{available:!1,code:"ended"===a.status?"session_ended":"session_not_resumable",reason:c.reason,recovery:"choose_session"};b={ask:d,resume:{available:!1,code:"action_unavailable",reason:`${k.resume} is unavailable: this runtime can’t resume a session with edits.`,recovery:"choose_action"},handoff:d}}return["ask","resume","handoff"].map(a=>({action:a,label:k[a],availability:b[a]}))},"stateTone",0,function(a){return"completed"===a?"done":"failed"===a||"cancelled"===a?"stopped":"active"},"submitErrorMessage",0,function(a,b){switch(a){case"session_ended":return"This session has ended and can’t be resumed.";case"session_not_resumable":return"Botmancers can’t resume this session under the Agent’s current runtime.";case"source_session_busy":return"This session already has an exchange in progress. Wait for it or cancel it from its card.";case"agent_unavailable":return b||"That Agent has no Agent Deck selected.";case"idempotency_conflict":return"This request changed while it was being sent. Send again.";case"session_missing":return"The runtime no longer has this session. Its history stays here; choose another session.";case"approval_required":return"Resume work here needs your approval of edits. Tick the approval, then send again.";case"authority_not_allowed":return b||"This Agent’s policy doesn’t allow edits in a resumed session. Change it in Config.";case"action_unavailable":return b||"This runtime can’t do that in this session. Choose another action.";case"provider_failed":return"The runtime failed this turn. Nothing moved to another session; try again later.";default:return b||"The exchange could not be started. Your draft is kept; try again."}},"threadHref",0,function(a,b){let c=new URLSearchParams;if(a.thread_agent_id)return c.set("agent",a.thread_agent_id),b&&c.set("exchange",b),`/?${c.toString()}`;if("group"!==a.kind)return null;b&&c.set("exchange",b);let d=c.toString();return`/threads/${encodeURIComponent(a.id)}${d?`?${d}`:""}`},"validateDraft",0,function(a){let b={},c=a.instruction.trim(),d="ask"===a.mode?"a question":"an objective";return c?a.instruction.length>4e3&&(b.instruction="Keep it under 4000 characters."):b.instruction=`Enter ${d}.`,a.originConversationId||(b.origin="Choose the thread that follows this exchange."),"continue"!==a.mode||a.destinationAgentId||(b.destination="Choose the Agent who continues the work."),b},"validateResumeDraft",0,function(a,b){let c={};return a.trim()?a.length>4e3&&(c.instruction="Keep it under 4000 characters."):c.instruction="Enter what to work on.",b||(c.approval="Approve edits in this session to resume work here."),c}],35099)},69789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
-
3
- //# sourceMappingURL=_1i02yyi._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[39228,22151,20851,2296,a=>{"use strict";var b=a.i(87924);let c=["hermes","cursor","claude","codex","muse"],d={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},e="hermes";function f(a){return c.includes(String(a))?d[a]:String(a??"")}c.join("|"),a.s(["AGENTS",0,c,"AGENT_LABELS",0,d,"DEFAULT_AGENT",0,e,"agentLabel",0,f],22151);let g=c.map(a=>({value:a,label:d[a]})),h="/settings",i="Select an Agent Deck…",j="Runs use the configured Agent Deck server. Remote execution is unconfirmed — see Settings for the configured server.",k="Runs use the server above. Remote execution is unconfirmed.",l="Configure the Agent Deck server in Settings",m="Saved Agent Deck not on this server — saving keeps it unless you pick another.",n={loading:"Loading decks…",empty:"No decks on this server — add one there, then retry.",malformed:"The deck list came back unreadable. Retry — or fix the server, then retry.",unreachable:"Can't reach the Agent Deck server — fix it in Settings, then retry.",unconfigured:"No Agent Deck server set — add it in Settings."};function o(a=null){return{status:"loading",decks:[],cachedDecks:a,serverUrl:"",checkedAt:0,error:""}}function p(a){return String(a).padStart(2,"0")}function q(a){let b=new Date(a);return`${p(b.getHours())}:${p(b.getMinutes())}:${p(b.getSeconds())}`}function r(a){switch(a.status){case"loading":return"Status: ○ Checking the Agent Deck server…";case"connected":return`Status: ● Connected \xb7 ${a.decks.length} ${1===a.decks.length?"deck":"decks"} \xb7 checked ${q(a.checkedAt)}`;case"empty":return"Status: ○ Connected — no decks on this server.";case"malformed":return"Status: ○ The server returned decks this app can't read.";case"unreachable":return"Status: ○ Can't reach the Agent Deck server.";case"unconfigured":return"Status: ○ No Agent Deck server set."}}function s(a){return"connected"===a.status?null:n[a.status]}function t(a){return"empty"===a.status||"malformed"===a.status||"unreachable"===a.status}async function u(a,b,c=Date.now){let d,e;try{d=await a("/api/agent-deck/decks",{cache:"no-store"})}catch(a){return{status:"unreachable",decks:[],cachedDecks:b.cachedDecks,serverUrl:b.serverUrl,checkedAt:c(),error:a instanceof Error?a.message:String(a)}}try{e=await d.json()}catch{e=void 0}return function(a,b,c){let d="object"==typeof a.body&&null!==a.body?a.body:{},e="string"==typeof d.server_url?d.server_url:b.serverUrl,f={cachedDecks:b.cachedDecks,serverUrl:e,checkedAt:c};if("string"==typeof d.server_url&&!d.server_url.trim())return{...f,status:"unconfigured",decks:[],error:""};if(a.ok){let b=function(a){if("object"!=typeof a||null===a)return null;let b=a.decks;if(!Array.isArray(b))return null;let c=[];for(let a of b){if("object"!=typeof a||null===a)return null;let b=a.id,d=a.name;if("string"!=typeof b||!b.trim()||"string"!=typeof d||!d.trim())return null;c.push({id:b,name:d})}return c}(a.body);return b?{...f,cachedDecks:b,status:b.length>0?"connected":"empty",decks:b,error:""}:{...f,status:"malformed",decks:[],error:"Unexpected deck list shape."}}let g="string"==typeof d.error?d.error:`HTTP ${a.status}`,h="invalid-payload"===d.code||/unexpected deck payload/i.test(g);return{...f,status:h?"malformed":"unreachable",decks:[],error:g}}({ok:d.ok,status:d.status,body:e},b,c())}function v(a,b){let c=String(a??"").trim(),d=b?b.decks.length>0?b.decks:b.cachedDecks??[]:[];return d.find(a=>a.id===c)?.name??c}function w(a){return f((a.agent??"").trim()||e)}function x(a){return!y(a)&&(function(a){let b=a.needs_deck_selection;if(!0===b||1===b)return!0;if("string"==typeof b){let a=b.trim().toLowerCase();return"1"===a||"true"===a}return!1}(a)||!(a.deck_id??"").trim())}function y(a){return"direct"===a.launch_profile}function z(a,b){if(x(a)||y(a))return!1;let c=b?"connected"===b.status||"empty"===b.status?b.decks.map(a=>a.id):"unconfigured"===b.status?null:b.cachedDecks?b.cachedDecks.map(a=>a.id):null:null;return!!c&&!c.includes((a.deck_id??"").trim())}function A(a){return`Agent: ${w(a)} \xb7 Agent Deck: `}function B(a,b){let c,d=(c=y(a)?`Agent: ${w(a)} \xb7 Launch: Direct`:x(a)?`${A(a)}not selected`:A(a)+v(a.deck_id??"",b),x(a)?`${c} — select in Config`:z(a,b)?c+" (deck unavailable — see Config)":c);if(x(a)||y(a))return{prefix:d,deck:"",suffix:""};let e=A(a),f=v(a.deck_id??"",b);return{prefix:e,deck:f,suffix:d.slice(e.length+f.length)}}function C(a){return`~/.botmancers/${a}`}let D=[{prefix:"[Deck handoff]",kind:"handoff",label:"Agent Deck launch"},{prefix:"[Deck run]",kind:"run",label:"Agent Deck run"},{prefix:"[Deck review]",kind:"review",label:"Agent Deck review"},{prefix:"[Deck resume]",kind:"resume",label:"Agent Deck resume"},{prefix:"[Deck result]",kind:"result",label:"Agent Deck result"},{prefix:"[Deck failed]",kind:"failed",label:"Agent Deck failed"},{prefix:"[Deck needs selection]",kind:"reselection",label:"Agent Deck needs a deck"},{prefix:"[Deck needs reselection]",kind:"reselection",label:"Agent Deck needs a deck"}];a.s(["AGENT_OPTIONS",0,g,"DECK_PLACEHOLDER",0,i,"DECK_SLOT_COPY",0,n,"NEW_BOT_WORKDIR_HINT",0,"Default: ~/.botmancers/{agentID} — {agentID} is this agent's ID, assigned at creation.","NON_LOCAL_NOTE",0,j,"SAVED_DECK_MISSING_NOTE",0,m,"SETTINGS_ENDPOINT",0,"/api/agent-deck/settings","SETTINGS_LINK_COPY",0,l,"SETTINGS_NON_LOCAL_NOTE",0,k,"SETTINGS_PATH",0,h,"botAgentLabel",0,w,"configWorkdirHint",0,function(a){return`Default: ${C(a)} — leave blank to use it.`},"deckEventDisplay",0,function(a){let b=String(a??"").trimStart(),c=D.find(a=>b.startsWith(a.prefix));return c?{label:c.label,detail:b.slice(c.prefix.length).trim()}:null},"deckLabel",0,v,"deckSlotCopy",0,s,"deckStateShowsRetry",0,t,"defaultWorkdirFor",0,C,"fetchDeckList",0,u,"formatClock",0,q,"initialDeckListState",0,o,"isDeckUnavailable",0,z,"isMigratedPending",0,x,"rosterRuntimeParts",0,B,"settingsStatusLine",0,r],20851);let E={modal:{label:"",legend:"field-legend",picks:"runtime-picks",pick:"runtime-pick",note:"runtime-note",control:"deck-control",hint:"runtime-hint",link:"runtime-link",retry:"runtime-retry"},config:{label:"block text-sm cfg-muted mt-3 mb-1",legend:"block text-sm cfg-muted mt-3 mb-1 p-0",picks:"flex flex-wrap gap-x-4 gap-y-1 text-sm cfg-muted",pick:"text-sm cfg-muted",note:"text-sm cfg-muted mt-1",control:"cfg-input text-sm",hint:"mt-1 text-xs cfg-faint",link:"cfg-link text-sm",retry:"cfg-link text-sm"}};function F({id:a,labelId:c,state:d,value:e,onChange:f,onRetry:g,savedDeckId:h,variant:j}){let k=E[j],l=s(d),n=(h??"").trim();if(null===l){let c=!!n&&!d.decks.some(a=>a.id===n);return(0,b.jsxs)("div",{"data-field":"deck","data-state":d.status,children:[(0,b.jsxs)("select",{id:a,className:k.control,"aria-required":"true","aria-describedby":c&&e===n?`${a}-saved-note`:void 0,value:e,title:e||void 0,onChange:a=>f(a.target.value),children:[(0,b.jsx)("option",{value:"",disabled:!0,children:i}),c?(0,b.jsxs)("option",{value:n,title:n,children:[n," (saved)"]}):null,d.decks.map(a=>(0,b.jsx)("option",{value:a.id,title:a.id,children:a.name},a.id))]}),c&&e===n?(0,b.jsx)("p",{id:`${a}-saved-note`,className:k.note,children:m}):null]})}return(0,b.jsxs)("div",{"data-field":"deck","data-state":d.status,role:"group","aria-labelledby":c,children:[n?(0,b.jsxs)("p",{className:k.note,children:["Saved Agent Deck: ",(0,b.jsx)("span",{title:n,children:n})]}):null,(0,b.jsxs)("p",{id:a,className:`${k.note} deck-slot`,role:"status",children:[(0,b.jsx)("span",{id:`${a}-copy`,children:l}),t(d)?(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)("button",{type:"button",className:k.retry,onClick:g,children:"Retry"})]}):null]})]})}a.s(["AgentDeckFields",0,function({idPrefix:a,variant:c,deckId:d,onDeckId:e,deckState:f,onRetry:g,savedDeckId:i,workingDirectory:k,onWorkingDirectory:m,workdirPlaceholder:n,workdirHint:o}){let p=E[c],q=null===s(f);return(0,b.jsxs)("div",{className:"agent-deck-fields",children:[(0,b.jsx)("label",{className:p.label,id:`${a}-deck-label`,htmlFor:q?`${a}-deck`:void 0,children:"Agent Deck"}),(0,b.jsx)(F,{id:`${a}-deck`,labelId:`${a}-deck-label`,state:f,value:d,onChange:e,onRetry:g,savedDeckId:i,variant:c}),(0,b.jsx)("a",{href:h,className:p.link,children:l}),(0,b.jsx)("label",{className:p.label,htmlFor:`${a}-workdir`,children:"Working directory (optional)"}),(0,b.jsx)("input",{id:`${a}-workdir`,type:"text",className:"config"===c?p.control:void 0,"data-field":"workdir","aria-describedby":`${a}-workdir-hint ${a}-workdir-note`,value:k,placeholder:n,onChange:a=>m(a.target.value)}),(0,b.jsx)("p",{id:`${a}-workdir-hint`,className:p.hint,children:o}),(0,b.jsx)("p",{id:`${a}-workdir-note`,className:p.hint,children:j})]})},"RosterRuntimeLine",0,function({bot:a,state:c}){let{prefix:d,deck:e,suffix:f}=B(a,c);return(0,b.jsxs)("div",{className:"bot-runtime",title:d+e+f,children:[d,e?(0,b.jsx)("span",{className:"bot-runtime-deck",children:e}):null,f]})},"SettingsStatus",0,function({state:a,onRetry:c}){return(0,b.jsxs)("div",{"data-field":"status","data-state":a.status,children:[(0,b.jsx)("p",{className:"connected"===a.status?"text-sm cfg-ok":"text-sm cfg-muted",role:"status",children:r(a)}),t(a)?(0,b.jsx)("button",{type:"button",onClick:c,className:"mt-2 cfg-btn-ghost text-sm w-full sm:w-auto",children:"Retry"}):null,"connected"===a.status?(0,b.jsx)("p",{className:"mt-1 text-xs cfg-faint break-words",children:a.decks.map(a=>a.name).join(" · ")}):null,(0,b.jsx)("p",{className:"mt-2 text-xs cfg-faint",children:k})]})}],39228);var G=a.i(72131);let H="botmancers.agentDeck.lastDecks";function I(a){return"object"==typeof a&&null!==a&&"string"==typeof a.id&&"string"==typeof a.name}let J=(a,b)=>{let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);return fetch(a,{cache:"no-store",signal:c.signal,...b}).finally(()=>clearTimeout(d))};a.s(["useDeckList",0,function(a=!0){let[b,c]=(0,G.useState)(()=>o()),[d,e]=(0,G.useState)(0),f=(0,G.useRef)(null);return(0,G.useEffect)(()=>{if(!a)return;let b=!1;return u(J,o(f.current??function(){try{let a=window.localStorage.getItem(H);if(!a)return null;let b=JSON.parse(a);return Array.isArray(b)&&b.every(I)?b:null}catch{return null}}())).then(a=>{if(!b){f.current=a.cachedDecks;var d=a.cachedDecks;if(d)try{window.localStorage.setItem(H,JSON.stringify(d))}catch{}c(a)}}),()=>{b=!0}},[d,a]),{state:b,retry:(0,G.useCallback)(()=>{c(a=>({...a,status:"loading",decks:[],error:""})),e(a=>a+1)},[])}}],2296)}];
2
-
3
- //# sourceMappingURL=app_components_AgentDeckRuntime_tsx_024janf._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[90730,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(27828),f=a.i(35099);let g="botmancers:exchanges-navigate";function h(a){return window.addEventListener("popstate",a),window.addEventListener(g,a),()=>{window.removeEventListener("popstate",a),window.removeEventListener(g,a)}}function i(){return new URLSearchParams(window.location.search).get("id")}function j({id:a,onBack:g,onChanged:h}){let[i,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(0),p=(0,c.useRef)(null),q=(0,c.useRef)(!1),r=(0,c.useId)();(0,c.useEffect)(()=>{let b=!1,c=()=>{fetch(`/api/exchanges/${encodeURIComponent(a)}`,{cache:"no-store"}).then(async a=>{let c=await a.json().catch(()=>null);if(!b){if(!a.ok||!c?.detail)return void m(404===a.status?"This exchange no longer exists.":"Could not load this exchange.");m(""),k(c.detail)}}).catch(()=>{b||m("Could not load this exchange.")})};c();let d=setInterval(c,2e3);return()=>{b=!0,clearInterval(d)}},[a,n]),(0,c.useEffect)(()=>{i&&!q.current&&(q.current=!0,p.current?.focus())},[i]);let s=(0,b.jsx)("button",{type:"button",className:"pin-word ledger-detail-back",onClick:g,children:"← All exchanges"});if(!i)return(0,b.jsxs)("div",{className:"ledger-detail",children:[s,l?(0,b.jsxs)("div",{role:"alert",className:"ledger-state",children:[(0,b.jsx)("p",{className:"delete-error",children:l}),(0,b.jsx)("button",{type:"button",className:"pin-word",onClick:()=>o(a=>a+1),children:"Retry"})]}):(0,b.jsx)("p",{className:"ledger-state",role:"status",children:"Loading exchange…"})]});let{summary:t,events:u,packet:v}=i;return(0,b.jsxs)("article",{className:"ledger-detail","aria-labelledby":r,"data-exchange-detail":t.id,children:[s,(0,b.jsxs)("h2",{id:r,ref:p,tabIndex:-1,className:"ledger-detail-title",children:[(0,f.modeLabel)(t.mode),": ",(0,f.participantsLabel)(t)]}),(0,b.jsx)(e.default,{summary:t,onChanged:()=>{o(a=>a+1),h()}}),(0,b.jsxs)("section",{className:"ledger-section","aria-label":(0,f.instructionHeading)(t.mode),children:[(0,b.jsx)("h3",{className:"ledger-section-title",children:(0,f.instructionHeading)(t.mode)}),(0,b.jsx)("p",{className:"ledger-text",children:t.instruction})]}),i.answer?(0,b.jsxs)("section",{className:"ledger-section","aria-label":"Answer",children:[(0,b.jsx)("h3",{className:"ledger-section-title",children:"Answer"}),(0,b.jsx)("p",{className:"ledger-text",children:i.answer})]}):null,v?(0,b.jsxs)("section",{className:"ledger-section","aria-label":"Handoff packet",children:[(0,b.jsx)("h3",{className:"ledger-section-title",children:"Handoff packet"}),(0,b.jsx)("p",{className:"ledger-text",children:v.objective}),[["Decisions",v.decisions],["Constraints",v.constraints],["Artifacts and references",v.artifacts],["Open questions",v.open_questions]].filter(([,a])=>a.length>0).map(([a,c])=>(0,b.jsxs)("div",{className:"ledger-packet-list",children:[(0,b.jsx)("h4",{className:"ledger-packet-title",children:a}),(0,b.jsx)("ul",{children:c.map((a,c)=>(0,b.jsx)("li",{children:a},c))})]},a))]}):null,(0,b.jsxs)("section",{className:"ledger-section","aria-label":"Linked threads",children:[(0,b.jsx)("h3",{className:"ledger-section-title",children:"Linked threads"}),(0,b.jsx)("ul",{className:"ledger-links",children:t.links.map(a=>{let c=(0,f.threadHref)(a,t.id);return(0,b.jsxs)("li",{children:[c?(0,b.jsx)(d.default,{className:"session-link ledger-thread-link",href:c,children:a.label}):(0,b.jsxs)("span",{children:[a.label,"agent_api"===a.kind?(0,b.jsx)("span",{className:"ledger-link-role",children:" (between Agents, not an owner thread)"}):null]}),(0,b.jsxs)("span",{className:"ledger-link-role",children:[" · ",(0,f.linkRoleLabel)(a.roles)]})]},a.id)})})]}),(0,b.jsxs)("section",{className:"ledger-section","aria-label":"Timeline",children:[(0,b.jsx)("h3",{className:"ledger-section-title",children:"Timeline"}),(0,b.jsx)("ol",{className:"ledger-timeline",children:u.map(a=>(0,b.jsxs)("li",{"data-event-type":a.type,children:[(0,b.jsx)("span",{className:"ledger-timeline-time",children:(0,f.formatExchangeTime)(a.at)}),(0,b.jsx)("span",{className:"ledger-timeline-text",children:(0,f.eventLabel)(a,t)})]},a.sequence))})]}),(0,b.jsxs)("p",{className:"ledger-foot",children:[(0,f.excerpt)(`${t.source.agent_name}’s session: ${t.source.session_title}`,200),t.destination?.session_title?` \xb7 ${t.destination.agent_name}’s new session: ${t.destination.session_title}`:""]})]})}a.s(["default",0,function(){let[a,e]=(0,c.useState)(null),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(0),[o,p]=(0,c.useState)(f.DEFAULT_LEDGER_FILTER),q=(0,c.useSyncExternalStore)(h,i,()=>null),r=(0,c.useId)(),s=(0,c.useId)(),t=(0,c.useId)(),u=(0,c.useRef)(null),v=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=v.current;if(v.current=q,q||!a)return;let b=document.querySelector(`.ledger-row[data-exchange-id="${CSS.escape(a)}"]`);(b??u.current)?.focus()},[q]),(0,c.useEffect)(()=>{let a=!1,b=()=>{fetch("/api/exchanges",{cache:"no-store"}).then(async b=>{let c=await b.json().catch(()=>null);if(!a){if(!b.ok||!Array.isArray(c?.exchanges))return void l("string"==typeof c?.error?.message?c.error.message:"Could not load exchanges.");l(""),e(c.exchanges)}}).catch(()=>{a||l("Could not load exchanges.")})};b();let c=setInterval(b,2e3);return()=>{a=!0,clearInterval(c)}},[m]);let w=a=>{window.history.pushState(null,"",a?`/exchanges?id=${encodeURIComponent(a)}`:"/exchanges"),window.dispatchEvent(new Event(g))},x=a?(0,f.ledgerRows)(a,o):[],y=(0,f.ledgerView)(a,a?"":k,x),z=a?(0,f.ledgerAgents)(a):[];return(0,b.jsxs)("div",{className:q?"ledger-page has-detail":"ledger-page",children:[(0,b.jsxs)("header",{className:"ledger-head",children:[(0,b.jsx)(d.default,{href:"/",className:"cfg-link ledger-back",children:"← Back to chat"}),(0,b.jsx)("h1",{className:"ledger-title",children:"Agent Exchanges"}),(0,b.jsx)("p",{className:"ledger-sub",children:"Every Ask and Continue between Agent sessions, newest activity first."})]}),(0,b.jsxs)("main",{className:"ledger-main",children:[(0,b.jsxs)("section",{className:"ledger-list-pane","aria-labelledby":t,children:[(0,b.jsx)("h2",{id:t,ref:u,tabIndex:-1,className:"ledger-pane-title",children:"Exchanges"}),(0,b.jsxs)("div",{className:"ledger-filters",children:[(0,b.jsx)("div",{className:"sessions-filter ledger-mode",role:"group","aria-label":"Mode",children:f.MODE_FILTER_OPTIONS.map(a=>(0,b.jsx)("button",{type:"button",className:"sessions-filter-btn","aria-pressed":o.mode===a.value,onClick:()=>p(b=>({...b,mode:a.value})),children:a.label},a.value))}),(0,b.jsxs)("div",{className:"ledger-selects",children:[(0,b.jsxs)("label",{className:"ledger-select-label",htmlFor:r,children:["Status",(0,b.jsx)("select",{id:r,className:"exchange-select",value:o.state,onChange:a=>p(b=>({...b,state:a.target.value})),children:f.STATE_FILTER_OPTIONS.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})]}),(0,b.jsxs)("label",{className:"ledger-select-label",htmlFor:s,children:["Agent",(0,b.jsxs)("select",{id:s,className:"exchange-select",value:o.agentId,onChange:a=>p(b=>({...b,agentId:a.target.value})),children:[(0,b.jsx)("option",{value:"",children:"Any Agent"}),z.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})]})]}),(0,b.jsx)("p",{className:"manage-count ledger-count",role:"status",children:a?`${x.length} of ${a.length} shown`:""})]}),"loading"===y?(0,b.jsx)("p",{className:"ledger-state",role:"status","data-ledger-state":"loading",children:"Loading exchanges…"}):null,"error"===y?(0,b.jsxs)("div",{className:"ledger-state",role:"alert","data-ledger-state":"error",children:[(0,b.jsx)("p",{className:"delete-error",children:k}),(0,b.jsx)("button",{type:"button",className:"pin-word",onClick:()=>{l(""),n(a=>a+1)},children:"Retry"})]}):null,"empty"===y?(0,b.jsx)("p",{className:"ledger-state","data-ledger-state":"empty",children:"No exchanges yet. Open an Agent’s Sessions and choose Ask from this context or Hand off to… to start one."}):null,"filtered-out"===y?(0,b.jsxs)("div",{className:"ledger-state","data-ledger-state":"filtered-out",children:[(0,b.jsx)("p",{children:"No exchanges match these filters."}),(0,b.jsx)("button",{type:"button",className:"pin-word",onClick:()=>p(f.DEFAULT_LEDGER_FILTER),children:"Clear filters"})]}):null,"rows"===y?(0,b.jsx)("ol",{className:"ledger-list","aria-label":"Exchanges, newest activity first",children:x.map(a=>(0,b.jsx)("li",{className:"ledger-row-item",children:(0,b.jsxs)("button",{type:"button",className:`ledger-row is-${(0,f.stateTone)(a.state)}`,"data-exchange-id":a.id,"aria-current":q===a.id?"true":void 0,onClick:()=>w(a.id),children:[(0,b.jsxs)("span",{className:"ledger-row-line",children:[(0,b.jsx)("span",{className:"exchange-card-mode",children:(0,f.modeLabel)(a.mode)}),(0,b.jsx)("span",{className:"ledger-row-who",children:(0,f.participantsLabel)(a)}),(0,b.jsx)("span",{className:"ledger-row-state",children:(0,f.liveStateLabel)(a)})]}),(0,b.jsx)("span",{className:"ledger-row-session",children:a.source.session_title}),(0,b.jsxs)("span",{className:"ledger-row-meta",children:["From ",a.origin?.label??"an unknown thread"," · Started ",(0,f.formatExchangeTime)(a.created_at)," · Updated ",(0,f.formatExchangeTime)(a.updated_at)]})]})},a.id))}):null]}),(0,b.jsx)("section",{className:"ledger-detail-pane","aria-label":"Exchange detail",children:q?(0,b.jsx)(j,{id:q,onBack:()=>w(null),onChanged:()=>n(a=>a+1)},q):(0,b.jsx)("p",{className:"ledger-state ledger-placeholder",children:"Choose an exchange to see its timeline and linked threads."})})]})]})}])}];
2
-
3
- //# sourceMappingURL=app_exchanges_page_tsx_0j-n2a1._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[45343,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(39228),f=a.i(2296),g=a.i(20851);async function h(a){try{let b=await a.json();if(b.error)return b.error}catch{}return"request failed"}a.s(["default",0,function(){let{state:a,retry:i}=(0,f.useDeckList)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(0),[r,s]=(0,c.useState)("clean"),[t,u]=(0,c.useState)(""),[v,w]=(0,c.useState)(0);(0,c.useEffect)(()=>{let a=!1;return fetch(g.SETTINGS_ENDPOINT,{cache:"no-store"}).then(async b=>{if(!b.ok)throw Error(await h(b));let c=await b.json();if(a)return;let d="string"==typeof c.server_url?c.server_url:"";k(d),m(d),o(!1)}).catch(()=>{a||o(!0)}),()=>{a=!0}},[p]);let x=null!==j&&l!==j;async function y(){s("saving"),u("");try{let a=await fetch(g.SETTINGS_ENDPOINT,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({server_url:l})});if(!a.ok)throw Error(await h(a));let b=await a.json();k(b.server_url),m(b.server_url),s("confirmed"),w(Date.now()),setTimeout(()=>{s(a=>"confirmed"===a?"clean":a)},5e3),i()}catch(a){s("error"),u(a instanceof Error?a.message:"request failed")}}(0,c.useEffect)(()=>{if(!x)return;let a=a=>{a.preventDefault()};return window.addEventListener("beforeunload",a),()=>window.removeEventListener("beforeunload",a)},[x]);let z="saving"===r?(0,b.jsx)("span",{className:"text-sm cfg-faint",children:"Saving…"}):x||"error"===r?(0,b.jsxs)("span",{className:"text-sm cfg-dirty",children:[(0,b.jsx)("span",{className:"inline-block w-2 h-2 rounded-full cfg-dot-amber mr-1"}),"Unsaved changes"]}):"confirmed"===r?(0,b.jsxs)("span",{className:"text-sm cfg-faint",children:["Saved ",(0,g.formatClock)(v)]}):(0,b.jsx)("span",{className:"text-sm cfg-faint",children:"Saved"});return(0,b.jsx)("div",{className:"cfg-page",children:(0,b.jsxs)("div",{className:"max-w-3xl mx-auto",children:[(0,b.jsx)(d.default,{href:"/",onClick:function(a){x&&!window.confirm("You have unsaved changes. Leave without saving?")&&a.preventDefault()},className:"cfg-link cfg-back text-sm",children:"← Back to chat"}),(0,b.jsxs)("header",{className:"mt-3 mb-6",children:[(0,b.jsx)("h1",{className:"text-xl font-bold",children:"Settings"}),(0,b.jsx)("p",{className:"text-sm cfg-faint",children:"Workspace settings for every agent in this Botmancers."})]}),(0,b.jsxs)("section",{className:"cfg-card",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsx)("h2",{className:"cfg-title",children:"Agent Deck server"}),null!==j?z:null]}),n&&null===j?(0,b.jsxs)("p",{className:"text-sm cfg-muted",children:["Couldn't load this section."," ",(0,b.jsx)("button",{onClick:()=>q(a=>a+1),className:"cfg-link",children:"Retry"})]}):null===j?(0,b.jsx)("div",{className:"h-10 rounded-lg animate-pulse cfg-skel"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("label",{className:"block text-sm cfg-muted mb-1",htmlFor:"settings-server-url",children:"Server URL"}),(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2",children:[(0,b.jsx)("input",{id:"settings-server-url",type:"url",value:l,onChange:a=>{m(a.target.value),"error"===r&&s("clean")},onKeyDown:a=>{"Enter"===a.key&&x&&(a.preventDefault(),y())},placeholder:"http://127.0.0.1:1111",className:"cfg-input text-sm sm:flex-1"}),(0,b.jsx)("button",{onClick:()=>{y()},disabled:!x||"saving"===r,className:"cfg-btn-primary text-sm",children:"saving"===r?"Saving…":"Save"}),x?(0,b.jsx)("button",{onClick:function(){m(j??""),s("clean"),u("")},disabled:"saving"===r,className:"cfg-btn-ghost text-sm",children:"Discard"}):null]}),"error"===r&&(0,b.jsxs)("p",{className:"mt-2 text-sm cfg-error",children:["Couldn't save: ",t," ",(0,b.jsx)("button",{onClick:()=>{y()},className:"underline hover:no-underline",children:"Retry"})]}),(0,b.jsx)("p",{className:"mt-2 text-xs cfg-faint",children:"The only Agent Deck server for this workspace. Bots pick their deck from this server."})]}),(0,b.jsx)("div",{className:"mt-4 pt-4 border-t cfg-line",children:(0,b.jsx)(e.SettingsStatus,{state:a,onRetry:i})})]})]})})}])}];
2
-
3
- //# sourceMappingURL=app_settings_page_tsx_1t-rdz-._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}}];
2
-
3
- //# sourceMappingURL=node_modules_%40swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js.map
@@ -1,3 +0,0 @@
1
- @font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
2
- @font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0r6juujl39pe6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
3
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-bold:700;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start-1{inset-inline-start:calc(var(--spacing) * 1)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-1{margin:var(--spacing)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.m-9{margin:calc(var(--spacing) * 9)}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:var(--spacing)}.h-2{height:calc(var(--spacing) * 2)}.h-6{height:calc(var(--spacing) * 6)}.h-10{height:calc(var(--spacing) * 10)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-80{height:calc(var(--spacing) * 80)}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-full{min-height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-32{width:calc(var(--spacing) * 32)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink{flex-shrink:1}.animate-pulse{animation:var(--animate-pulse)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:var(--spacing)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:var(--spacing)}.py-1{padding-block:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.lowercase{text-transform:lowercase}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\[fail\:auth\]{fail:auth}.\[person\:owner\]{person:owner}.\[stream\:\<name\>\]{stream:<name>}.\[usage\:cost\]{usage:cost}.\[usage\:malformed\]{usage:malformed}.\[usage\:missing\]{usage:missing}.\[usage\:none\]{usage:none}.\[usage\:partial\]{usage:partial}.\[usage\:repeated\]{usage:repeated}@media (hover:hover){.hover\:no-underline:hover{text-decoration-line:none}}@media (min-width:40rem){.sm\:w-auto{width:auto}.sm\:flex-1{flex:1}.sm\:flex-none{flex:none}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:text-right{text-align:right}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}:root{--field:#0e120c;--card:#1a2118;--hairline:#3a4436;--ink:#d5d0c3;--ink-muted:#9d9c90;--ink-faint:#8e8e82;--accent:#8b9a4a;--ink-on-accent:#0e120c;--composer:#141a12;--danger:#e85d75;--chrome:"Avenir Next", Avenir, "Helvetica Neue", system-ui;--mono:Monaco, "SF Mono", Menlo, Consolas, monospace}html,body{background:var(--field);min-height:100%;color:var(--ink);font-family:var(--chrome);margin:0}button,input,textarea{font:inherit;color:inherit}.field{background:var(--field);min-height:100vh;color:var(--ink);flex-direction:column;display:flex}.rail{flex-direction:column;flex:none;display:flex}.pane{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}@media (max-width:799px){.field{height:100dvh;overflow:hidden}.rail{flex:none;max-height:38vh;overflow:auto}.pane{overflow:hidden}.thread{height:100%;min-height:0}}@media (min-width:800px){.field{flex-direction:row;align-items:stretch;height:100vh;min-height:0;overflow:hidden}.rail{border-right:1px solid var(--hairline);width:max-content;max-width:280px;height:100vh;overflow:auto}.pane{height:100vh;min-height:0}}.bar{justify-content:space-between;align-items:center;padding:16px;display:flex}.brand{flex-direction:row;align-items:center;gap:10px;padding:20px 16px 4px;display:flex}.logo-shape{flex:none;width:40px;height:40px;line-height:0}.logo-shape img{width:40px;height:40px;display:block}.logo-shape.is-settling{animation:.4s ease-out both logo-drop}@keyframes logo-drop{0%{transform:translateY(-6px)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.logo-shape.is-settling{animation:none}}.logo-word{font-family:var(--chrome);letter-spacing:.02em;white-space:nowrap;color:#d5d0c3;margin:0;font-size:16px;font-weight:600;line-height:1.2}@media (max-width:799px){.brand{gap:8px;padding:12px 16px 0}.logo-shape,.logo-shape img{width:32px;height:32px}.logo-word{font-size:15px}}.welcome{text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:24px;min-height:0;padding:32px 16px;display:flex}.welcome-mark{width:144px;height:144px;display:block}@media (max-width:799px){.welcome{gap:16px;padding:24px 16px}.welcome-mark{width:128px;height:128px}}.wordmark{font-family:var(--chrome);color:var(--ink);margin:0;font-size:20px;font-weight:500;line-height:1.2}.chrome-btn{font-family:var(--chrome);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;line-height:1}.add-btn,.send-btn,.create-btn{font-family:var(--chrome);color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.cancel-btn,.back-btn{font-family:var(--chrome);color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0}.back-btn{font-size:16px}.empty-line{font-family:var(--chrome);color:var(--ink);margin:0;padding:0 16px;font-size:16px}.roster{flex-direction:column;gap:12px;padding:0 16px 16px;display:flex}.card{box-sizing:border-box;text-align:left;background:var(--card);border:1px solid var(--hairline);width:fit-content;max-width:100%;color:var(--ink);cursor:pointer;border-radius:16px;align-self:flex-start;padding:16px;display:block;position:relative}.row-head{align-items:center;gap:8px;display:flex}.bot-row{color:#d5d0c3;cursor:pointer;background:0 0;border:0;border-radius:0;align-items:center;gap:10px;width:100%;max-width:240px;margin:0;padding:0;display:flex;position:relative}.bot-lead{cursor:pointer;background:0 0;border:0;border-radius:0;width:fit-content;max-width:100%;margin:0;padding:0;display:block;position:relative}.bot-lead .bot-name{font-size:26px}.bot-row.is-open,.bot-lead.is-open{background:#d5d0c314;border-radius:8px;margin-left:-8px;margin-right:-8px;padding:6px 8px}.bot-copy{flex:auto;min-width:0}.bot-name{color:#d5d0c3;background:0 0;border:0;outline:none;margin:0;padding:0;font-family:system-ui,sans-serif;font-size:15px;font-weight:400;line-height:1.25}.bot-preview{max-width:100%;color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;font-family:system-ui,sans-serif;font-size:12px;line-height:1.3;overflow:hidden}.bot-runtime{max-width:100%;color:var(--ink-faint);-webkit-line-clamp:3;line-clamp:3;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:2px 0 0;font-family:system-ui,sans-serif;font-size:12px;line-height:1.3;display:-webkit-box;overflow:hidden}.bot-runtime-deck{white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom;max-width:100%;display:inline-block;overflow:hidden}.mark{flex:0 0 28px;width:28px;height:34px;position:relative}.mark-tri{border-bottom:28px solid;border-left:14px solid #0000;border-right:14px solid #0000;width:0;height:0;position:absolute;top:3px;left:0}.mark-dot{background:#2ebd4e;border-radius:50%;width:8px;height:8px;animation:1.1s ease-in-out infinite mark-pulse;position:absolute;top:0;right:-2px;box-shadow:0 0 0 2px #0e120c}@keyframes mark-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.55)}}.card-preview{max-width:220px;font-family:var(--mono);color:var(--ink-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:12px;line-height:1.3;overflow:hidden}.row-tip{z-index:3;background:var(--card);border:1px solid var(--hairline);border-radius:10px;min-width:148px;padding:8px 10px;display:none;position:absolute;top:calc(100% - 6px);left:12px}.card:hover .row-tip,.card:focus-within .row-tip,.bot-row:hover .row-tip,.bot-row:focus-within .row-tip,.bot-lead:hover .row-tip,.bot-lead:focus-within .row-tip{display:block}.roster.menu-open .row-tip{display:none}.row-tip{pointer-events:none}.row-open{text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;max-width:100%;display:block;overflow:hidden}.row-open:after{content:"";z-index:1;border-radius:8px;position:absolute;inset:0}.bot-row .row-open:after{inset:-4px -8px}.bot-row.is-open .row-open:after{inset:0}.card .row-open:after{border-radius:16px}.row-open:focus-visible:after{outline:2px solid var(--accent);outline-offset:2px}.row-actions{z-index:2;min-width:24px;min-height:24px;font-family:var(--mono);color:var(--ink-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:center;margin-left:auto;padding:0 4px;font-size:16px;line-height:1;position:relative}.row-actions:hover,.row-actions[aria-expanded=true]{color:var(--ink)}.row-actions:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-lead{padding:28px 22px}.card-lead .card-name{font-size:26px}.card-pic{object-fit:cover;border-radius:8px;width:28px;height:28px;margin-bottom:8px;display:block}.card-lead .card-pic{width:36px;height:36px}.card-lead .card-role{font-size:15px}.row-name{width:8em;font-family:var(--mono);background:0 0;border:0;outline:none;margin:0;padding:0;font-size:16px;line-height:1.3;display:block}.pin-word{font-family:var(--mono);color:var(--ink);cursor:pointer;background:0 0;border:0;margin-top:8px;padding:0;font-size:12px;display:block}.row-menu{z-index:20;background:var(--card);border:1px solid var(--hairline);border-radius:10px;min-width:168px;padding:8px 10px;position:fixed}.row-menu [role=menuitem]{text-align:left;width:100%;font-family:var(--mono);color:var(--ink);cursor:pointer;background:0 0;border:0;margin-top:8px;padding:0;font-size:12px;text-decoration:none;display:block}.row-menu [role=menuitem]:first-child{margin-top:0}.confirm-card{background:var(--card);border:1px solid var(--hairline);border-radius:16px;width:280px;margin:48px;padding:16px}.confirm-card p{font-family:var(--mono);margin:0 0 16px;font-size:14px}.card-name,.thread-name{font-family:var(--mono);color:var(--ink);font-size:16px;line-height:1.3}button.thread-name{cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.avatar-pic{border:1px solid var(--hairline);background:var(--card);cursor:pointer;border-radius:12px;width:48px;height:48px;margin-top:8px;padding:0;display:block;overflow:hidden}.avatar-pic img{object-fit:cover;width:100%;height:100%;display:block}.avatar-step{flex-wrap:wrap;align-items:center;gap:16px;padding:0 16px 12px;display:flex}.avatar-phone{display:none}@media (max-width:799px){.avatar-desk{display:none}.avatar-phone{display:flex}}.avatar-step input{opacity:0;width:1px;height:1px;position:absolute}.card-role,.thread-role{font-family:var(--mono);color:var(--ink-muted);margin-top:4px;font-size:12px;line-height:1.3}.thread{flex-direction:column;flex:1;min-height:0;display:flex}@media (min-width:800px){.thread{height:100%;min-height:0}}.thread-bar{align-items:flex-start;gap:16px;padding:16px;display:flex}.messages{flex-direction:column;flex:auto;gap:12px;min-height:0;padding:0 16px 16px;display:flex;overflow-y:auto}.thread-empty{flex-direction:column;flex:1 0 auto;justify-content:flex-end;gap:4px;padding-bottom:8px;display:flex}.thread-empty-title,.thread-empty-hint,.thread-note{font-family:var(--chrome);margin:0}.thread-empty-title{color:var(--ink);font-size:16px}.thread-empty-hint,.thread-note{color:var(--ink-muted);font-size:14px}.thread-note-error{color:var(--ink)}.msg-you{text-align:right;max-width:80%;color:var(--ink);background:0 0;border:0;border-radius:0;align-self:flex-end;padding:0}.msg-bot{box-sizing:border-box;background:var(--card);border:1px solid var(--hairline);width:100%;color:var(--ink);border-radius:16px;align-self:flex-start;padding:16px}.msg-name{font-family:var(--mono);color:var(--ink);margin-bottom:6px;font-size:14px}.msg-name-you{color:var(--accent)}.msg-body{font-family:var(--mono);color:var(--ink);white-space:pre-wrap;font-size:14px;line-height:1.45}.msg-status{align-self:stretch;width:100%}.runtime-failure{box-sizing:border-box;border:1px solid var(--hairline);border-left:4px solid var(--danger);background:var(--field);color:var(--ink);font-family:var(--chrome);border-radius:8px;padding:12px 16px;font-size:14px;line-height:1.45}.runtime-failure-title,.runtime-failure-recovery{margin:0}.runtime-failure-title{flex-wrap:wrap;align-items:baseline;gap:8px;font-weight:600;display:flex}.runtime-failure-severity{text-transform:uppercase;letter-spacing:.04em;color:var(--danger);font-size:12px;font-weight:600}.runtime-failure-recovery{color:var(--ink-muted);margin-top:4px}.runtime-failure-details{margin-top:8px}.runtime-failure-details summary{cursor:pointer;color:var(--ink-muted)}.runtime-failure-detail{font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;font-size:13px;display:block}.runtime-failure-copy{border:1px solid var(--hairline);background:var(--card);cursor:pointer;border-radius:6px;padding:4px 10px}.wake-notice{box-sizing:border-box;border:1px solid var(--hairline);border-left:4px solid var(--ink-muted);background:var(--field);color:var(--ink);font-family:var(--chrome);overflow-wrap:anywhere;border-radius:8px;padding:12px 16px;font-size:14px;line-height:1.45}.wake-notice-blocked,.wake-notice-allowed{border-left-color:var(--accent)}.wake-notice-rejected,.wake-notice-denied,.wake-notice-stopped{border-left-color:var(--danger)}.wake-notice-line{flex-wrap:wrap;align-items:baseline;gap:8px;margin:0;display:flex}.wake-notice-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);font-size:12px;font-weight:600}.wake-notice-blocked .wake-notice-label,.wake-notice-allowed .wake-notice-label{color:var(--accent)}.wake-notice-rejected .wake-notice-label,.wake-notice-denied .wake-notice-label,.wake-notice-stopped .wake-notice-label{color:var(--danger)}.wake-notice-error{color:var(--danger);margin:8px 0 0}.deck-event{font-family:var(--mono);color:var(--ink);overflow-wrap:anywhere;font-size:14px;line-height:1.45}.composer{align-items:flex-end;gap:16px;padding:16px;display:flex;position:relative}.composer-box{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.attach-names{font-family:var(--mono);color:var(--ink);flex-wrap:wrap;gap:8px;font-size:12px;display:flex}.attach-error{font-family:var(--mono);color:var(--ink);margin:0;font-size:14px}.attach-word{font-family:var(--chrome);color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.attach-input{opacity:0;width:1px;height:1px;position:absolute}.composer textarea{resize:none;background:var(--composer);border:1px solid var(--hairline);min-width:0;font-family:var(--mono);color:var(--ink);border-radius:12px;outline:none;flex:1;padding:10px 12px;font-size:14px}.composer textarea::placeholder{color:var(--ink-faint);opacity:1}.mention-list{background:var(--composer);border:1px solid var(--hairline);border-radius:12px;min-width:180px;max-height:220px;padding:6px;position:absolute;bottom:100%;left:16px;overflow:auto}.mention-list button{text-align:left;width:100%;color:var(--ink);font-family:var(--mono);background:0 0;border:0;padding:6px 8px;font-size:14px;display:block}.modal-scrim{z-index:10;background:#0a0a07b8;justify-content:flex-start;align-items:flex-start;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.new-agent-scrim{padding:0;display:block;overflow:hidden}.form-card.new-agent-dialog{flex-direction:column;width:min(358px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);display:flex;position:fixed;top:16px;left:16px}.new-agent-dialog .kind-row{flex:none}.new-agent-dialog .bot-form{flex-direction:column;flex:auto;min-height:0;display:flex}.new-agent-body{flex:auto;min-height:0;margin:0 -4px;padding:0 4px;overflow-y:auto}.new-agent-dialog .form-actions{flex:none;padding-top:4px}.kind-row{gap:16px;margin-bottom:12px;display:flex}.kind-word{font-family:var(--chrome);color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.new-agent-title{font-weight:inherit;cursor:default;margin:0}.form-error{font-family:var(--mono);color:var(--ink);margin:0 0 12px;font-size:14px}.header-settings{margin:0 16px 12px}.form-card{box-sizing:border-box;background:var(--card);border:1px solid var(--hairline);border-radius:16px;width:100%;max-width:358px;padding:16px}.form-card label{font-family:var(--chrome);color:var(--ink);margin:0 0 6px;font-size:14px;display:block}.form-card input,.form-card textarea{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--mono);color:var(--ink);border-radius:12px;outline:none;margin:0 0 12px;padding:10px 12px;font-size:14px}.runtime-note{font-family:var(--mono);color:var(--ink);margin:0 0 12px;font-size:14px}.runtime-picks{flex-wrap:wrap;gap:12px;margin:0 0 12px;display:flex}.runtime-pick{font-family:var(--mono);color:var(--ink);font-size:14px}.form-card input[type=radio]{vertical-align:middle;width:auto;accent-color:var(--accent);margin:0 4px 0 0;padding:0}.form-card .deck-control{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--mono);color:var(--ink);text-overflow:ellipsis;border-radius:12px;outline:none;margin:0 0 8px;padding:10px 12px;font-size:14px}.runtime-hint{font-family:var(--chrome);color:var(--ink-faint);overflow-wrap:anywhere;margin:-6px 0 12px;font-size:12px;line-height:1.3}.runtime-link{font-family:var(--chrome);color:var(--accent);margin:0 0 12px;font-size:12px;text-decoration:none;display:inline-block}.bot-form .create-btn:disabled{opacity:.4;cursor:default}.cfg-page input[type=radio]{accent-color:var(--accent)}.agent-fieldset{border:0;min-width:0;margin:0;padding:0}.reg-fieldset{margin:0 0 4px}.reg-stack{flex-direction:column;gap:6px;margin:0 0 12px;display:flex}.form-card input[type=checkbox]{vertical-align:middle;width:auto;accent-color:var(--accent);margin:0 4px 0 0;padding:0}.reg-option-hint{margin:2px 0 0 20px;display:block}.form-card .reg-option-hint.runtime-hint{margin:2px 0 0 20px}.reg-error{margin:-6px 0 12px;font-size:12px}.reg-add-connection{border-top:1px solid var(--hairline);margin:0 0 12px;padding:12px 0 0}.reg-actions{gap:16px;display:flex}.form-card .deck-control[aria-invalid=true],.form-card input[aria-invalid=true],.form-card textarea[aria-invalid=true]{border-color:var(--accent)}.form-card input[type=checkbox]:focus-visible,.cfg-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cfg-page input[type=checkbox]{accent-color:var(--accent)}.form-card .field-legend{font-family:var(--chrome);color:var(--ink);margin:0 0 6px;padding:0;font-size:14px;display:block}.form-card input:focus-visible,.form-card textarea:focus-visible,.form-card .deck-control:focus-visible,.form-card button:focus-visible,.form-card a:focus-visible,.cfg-page input[type=radio]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.runtime-retry{font-family:var(--chrome);color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.settings-link{align-self:flex-start;text-decoration:none}.deck-event-label{color:var(--accent)}@media (max-width:799px){.bot-form .runtime-picks{flex-direction:column;gap:6px}.bot-form .form-actions{flex-direction:column-reverse;align-items:stretch;gap:12px}}.form-actions{justify-content:space-between;align-items:center;display:flex}.agent-turn{width:100%}.agent-from{font-family:var(--chrome);color:var(--ink);justify-content:center;align-items:center;gap:8px;margin:0 0 8px;font-size:14px;display:flex}.agent-mark{object-fit:cover;border-radius:50%;flex:none;width:16px;height:16px}.agent-bar{box-sizing:border-box;color:#fff;text-align:left;width:100%;font-family:var(--mono);white-space:pre-wrap;background:#2a2a2a;border:0;border-radius:16px;padding:16px;font-size:14px;line-height:1.45}.approve-control{background:var(--accent);color:var(--ink-on-accent);cursor:pointer;border:0;border-radius:8px;margin-top:10px;padding:6px 12px;display:inline-block}.file-control{background:var(--field);color:var(--ink);border:1px solid var(--hairline);font-family:var(--mono);border-radius:8px;margin-top:10px;padding:6px 12px;text-decoration:none;display:inline-block}.draft-card{font-family:var(--chrome);color:var(--ink);font-size:14px}.draft-title{font-family:var(--chrome);color:var(--ink);margin:0 0 12px;font-size:14px}.draft-card input,.draft-card textarea{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--chrome);color:var(--ink);border-radius:12px;outline:none;margin:0 0 12px;padding:10px 12px;font-size:14px}.draft-mark{font-family:var(--chrome);color:var(--ink);margin-top:10px;margin-right:8px;font-size:14px;display:inline-block}.messages-wrap{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}.computer-float{z-index:3;pointer-events:none;border-radius:16px;flex-direction:column;display:flex;position:absolute;inset:8px 16px;overflow:hidden;box-shadow:0 16px 48px #00000073}.computer-top{color:#fff;pointer-events:none;background:#121212;flex:none;justify-content:space-between;align-items:center;height:46px;padding:0 14px 0 16px;display:flex}.computer-lights{pointer-events:none;align-items:center;gap:8px;display:flex}.computer-light{pointer-events:none;border-radius:50%;width:12px;height:12px;display:block}.computer-light-red{background:#ff5f57}.computer-light-yellow{background:#febc2e}.computer-light-green{background:#28c840}.computer-teach{pointer-events:none;align-items:center;gap:10px;display:flex}.computer-teach-pill{color:#fff;pointer-events:none;border:1px solid #ffffffb8;border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 7px;font-family:system-ui,sans-serif;font-size:13px;font-weight:500;line-height:1.2;display:inline-flex}.computer-teach-mark{box-sizing:border-box;border:1.5px solid #fff;border-radius:50%;width:13px;height:13px;display:block}.computer-expand{color:#fff;pointer-events:none;display:flex}.computer-band{pointer-events:none;flex:none;height:48px}.computer-band-note{flex-direction:column;justify-content:center;height:auto;min-height:48px;padding:8px 16px;display:flex}.computer-band-note .thread-empty{flex:none;padding-bottom:0}.computer-desk{pointer-events:none;background:#d9d9d9 url(/computer/wallpaper.png) 50%/cover no-repeat;flex-direction:column;flex:auto;min-height:0;display:flex}.computer-page{pointer-events:none;background:0 0;border:0;flex:auto;width:100%;min-height:0}.computer-dock{pointer-events:none;flex:none;justify-content:center;align-items:center;gap:18px;padding:8px 0 16px;display:flex}.computer-dock img{pointer-events:none;-webkit-user-select:none;user-select:none;width:auto;display:block}.computer-dock img:first-child{height:40px}.computer-dock img:nth-child(2){height:20px}.computer-dock img:nth-child(3){height:32px}.cfg-page{background:var(--field);min-height:100vh;color:var(--ink);font-family:var(--chrome);padding:16px}@media (min-width:640px){.cfg-page{padding:24px}}.cfg-card{background:var(--card);border:1px solid var(--hairline);border-radius:16px;padding:24px}.cfg-title{font-family:var(--chrome);color:var(--ink);font-weight:600}.cfg-muted{color:var(--ink-muted)}.cfg-faint{color:var(--ink-faint)}.cfg-link{font-family:var(--chrome);color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}a.cfg-link:hover,button.cfg-link:hover{text-decoration:underline}.cfg-back{margin-bottom:4px;display:inline-block}.cfg-code{font-family:var(--mono);color:var(--ink)}.cfg-pre{background:var(--composer);border:1px solid var(--hairline);font-family:var(--mono);color:var(--ink);white-space:pre-wrap;border-radius:12px;padding:12px}.cfg-input{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--mono);color:var(--ink);border-radius:12px;outline:none;padding:10px 12px}.cfg-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.cfg-input-sans{font-family:var(--chrome)}.cfg-btn-primary{font-family:var(--chrome);background:var(--accent);color:var(--ink-on-accent);cursor:pointer;border:0;border-radius:8px;padding:8px 16px}.cfg-btn-primary:hover:not(:disabled){filter:brightness(1.1)}.cfg-btn-primary:disabled{background:var(--composer);color:var(--ink);opacity:.55;cursor:default;filter:none}.cfg-btn-ghost{font-family:var(--chrome);background:var(--field);color:var(--ink);border:1px solid var(--hairline);cursor:pointer;border-radius:8px;padding:8px 16px;text-decoration:none}.cfg-btn-ghost:hover:not(:disabled){background:var(--composer)}.cfg-btn-ghost:disabled{opacity:.5;cursor:default}.cfg-row{border:1px solid var(--hairline);border-radius:12px;padding:12px}.cfg-line{border-color:var(--hairline)}.cfg-dirty{color:#e0a83e}.cfg-dot-amber{background:#f59e0b}.cfg-error{color:#f08080}.cfg-ok{color:#2ebd4e}.cfg-skel{background:var(--card);border:1px solid var(--hairline)}.cfg-avatar{object-fit:cover;border-radius:9999px}.cfg-chevron{color:var(--ink-faint);cursor:pointer;background:0 0;border:0}.cfg-chevron:hover{color:var(--ink)}.bot-avatar svg{width:100%;height:100%;display:block}.mark-avatar{flex:0 0 44px;width:44px;height:44px;position:relative}.mark-avatar-sm{flex-basis:36px;width:36px;height:36px}.mark-avatar .mark-dot{top:-2px;right:-2px}span.agent-mark{vertical-align:-3px;background:0 0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}button.avatar-pic{justify-content:center;align-items:center;display:flex}.avatar-group-label{color:var(--ink);margin:0 0 8px;font-size:13px;font-weight:600}.avatar-opt-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;display:grid}.avatar-opt{border:1px solid var(--hairline);cursor:pointer;color:var(--ink);background:0 0;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;font-size:11px;line-height:1.2;display:flex;position:relative}.avatar-opt-input{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.avatar-opt-art{display:flex}.avatar-opt:has(.avatar-opt-input:checked){border-color:currentColor;box-shadow:0 0 0 1px}.avatar-opt:has(.avatar-opt-input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.roster-status{font-family:var(--mono);color:var(--accent);margin:0;padding:0 16px;font-size:12px}.roster-status:empty{display:none}.roster-status:not(:empty){padding-bottom:12px}.delete-scrim{z-index:30;justify-content:center}.manage-scrim{z-index:25;justify-content:center}.delete-card,.manage-card{box-sizing:border-box;background:var(--card);border:1px solid var(--hairline);width:100%;color:var(--ink);border-radius:16px;margin-top:32px;padding:16px}.delete-card{max-width:440px}.manage-card{flex-direction:column;max-width:720px;max-height:calc(100vh - 64px);display:flex}.delete-title{font-family:var(--chrome);margin:0 0 12px;font-size:18px;font-weight:600}.delete-copy,.delete-error,.delete-blocked p{font-family:var(--mono);margin:0 0 12px;font-size:12px;line-height:1.5}.delete-keeps{color:var(--ink-muted)}.delete-error,.delete-blocked{color:var(--danger)}.delete-names,.delete-blocked ul{font-family:var(--mono);margin:0 0 12px;padding:0 0 0 18px;font-size:12px;line-height:1.5}.delete-names{max-height:160px;overflow-y:auto}.delete-btn{font-family:var(--chrome);color:var(--field);background:var(--danger);cursor:pointer;border:0;border-radius:8px;padding:6px 12px;font-size:14px}.delete-btn:disabled{opacity:.4;cursor:not-allowed}.delete-card button:focus-visible,.manage-card button:focus-visible,.manage-card input:focus-visible,.row-menu [role=menuitem]:focus-visible,.cfg-danger button:focus-visible,.bar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.manage-head{justify-content:space-between;align-items:center;display:flex}.manage-search-label{font-family:var(--chrome);margin:0 0 6px;font-size:14px}.manage-search{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--mono);color:var(--ink);border-radius:12px;outline:none;padding:10px 12px;font-size:14px}.manage-tools{flex-wrap:wrap;align-items:baseline;gap:16px;margin:4px 0 8px;display:flex}.manage-tools .pin-word:disabled{opacity:.4;cursor:default}.manage-count{font-family:var(--mono);color:var(--ink-muted);margin-left:auto;font-size:12px}.manage-list{border-top:1px solid var(--hairline);flex:auto;min-height:0;margin:0 0 12px;padding:0;list-style:none;overflow-y:auto}.manage-row{border-bottom:1px solid var(--hairline);align-items:flex-start;gap:12px;padding:10px 0;display:flex}.manage-row input[type=checkbox]{accent-color:var(--danger);margin-top:3px}.manage-row.is-blocked .manage-name,.manage-row.is-blocked .manage-meta{color:var(--ink-faint)}.manage-copy{flex:auto;min-width:0}.manage-name{font-family:var(--mono);cursor:pointer;overflow-wrap:anywhere;font-size:14px;display:block}.manage-tag{border:1px solid var(--hairline);color:var(--ink-muted);border-radius:6px;margin-left:8px;padding:0 4px;font-size:11px}.manage-meta{font-family:var(--mono);flex-wrap:wrap;gap:2px 16px;margin:4px 0 0;font-size:11px;display:flex}.manage-meta div{gap:4px;min-width:0;display:flex}.manage-meta dt{color:var(--ink-faint)}.manage-meta dd{overflow-wrap:anywhere;margin:0}.manage-reason{font-family:var(--mono);color:var(--danger);margin:4px 0 0;font-size:12px}.cfg-danger{border-color:var(--danger)}.sessions-scrim{z-index:25;justify-content:flex-end;padding:0;overflow:hidden}.sessions-drawer{box-sizing:border-box;background:var(--card);border-left:1px solid var(--hairline);width:100%;max-width:520px;height:100%;color:var(--ink);flex-direction:column;padding:16px;display:flex}.sessions-title{margin:0}.sessions-sub{font-family:var(--mono);color:var(--ink-muted);overflow-wrap:anywhere;margin:4px 0 0;font-size:12px}.sessions-filter{flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 8px;display:flex}.sessions-filter-btn{font-family:var(--mono);color:var(--ink);border:1px solid var(--hairline);cursor:pointer;background:0 0;border-radius:8px;padding:4px 10px;font-size:12px}.sessions-filter-btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--ink-on-accent)}.sessions-state{padding:12px 0}.sessions-list{margin-bottom:0}.session-head{flex-wrap:wrap;align-items:baseline;gap:4px 0;display:flex}.session-title{font-family:var(--mono);overflow-wrap:anywhere;margin-right:4px;font-size:14px}.session-status.is-active{color:var(--accent);border-color:var(--accent)}.session-row.is-ended .session-title{color:var(--ink-muted)}.session-link{font-family:var(--mono);color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline}.session-toggle{margin-top:6px}.session-detail{font-family:var(--mono);margin-top:8px;font-size:11px}.session-attempts{margin:0 0 8px;padding:0 0 0 18px;line-height:1.5}.session-sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.session-usage.is-unavailable,.session-usage-values .is-unavailable,.session-usage-coverage{color:var(--ink-faint)}.session-usage-tag{margin-left:6px}.session-usage-detail{margin:0 0 8px}.session-usage-head{color:var(--ink-muted);margin:0 0 4px;font-size:11px;font-weight:600}.session-usage-totals{gap:2px;margin:0 0 6px;display:grid}.session-usage-totals div{flex-wrap:wrap;gap:2px 8px;min-width:0;display:flex}.session-usage-totals dt{min-width:7.5rem;color:var(--ink-faint)}.session-usage-totals dd{overflow-wrap:anywhere;flex-wrap:wrap;gap:2px 8px;margin:0;display:flex}.session-usage-none{color:var(--ink-faint);margin:0}.session-usage-runs{margin:0;padding:0 0 0 18px;line-height:1.5}.session-usage-runs li{flex-wrap:wrap;gap:0 12px;display:flex}.session-usage-values{flex-wrap:wrap;gap:0 10px;display:flex}.session-debug summary{cursor:pointer;color:var(--ink-muted)}.session-debug-note{color:var(--ink-faint);margin:4px 0}.session-debug-value{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.session-debug-value code{overflow-wrap:anywhere;color:var(--ink)}.session-debug-value .pin-word{margin-top:0}.sessions-drawer button:focus-visible,.sessions-drawer summary:focus-visible,.thread-bar .attach-word:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rail-nav{padding:0 16px 12px}.rail-nav-link{text-decoration:none}.rail-nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.session-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.session-action{font-family:var(--mono);color:var(--ink);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:4px 10px;font-size:12px}.session-unavailable{font-family:var(--mono);color:var(--ink-muted);gap:4px;margin:8px 0 0;padding:0;font-size:11px;line-height:1.5;list-style:none;display:grid}.exchange-approval{font-family:var(--mono);color:var(--ink);cursor:pointer;align-items:flex-start;gap:8px;font-size:12px;line-height:1.5;display:flex}.exchange-approval input{accent-color:var(--accent);margin:2px 0 0}.exchange-approval input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.exchange-started:not(:empty){font-family:var(--mono);color:var(--accent);margin:0 0 8px;font-size:12px;line-height:1.5}.exchange-scrim{z-index:35;justify-content:center}.form-card.exchange-dialog{max-width:480px;color:var(--ink);margin-top:32px}.exchange-source{border:1px solid var(--hairline);border-left:4px solid var(--accent);background:var(--field);border-radius:8px;margin:0 0 16px;padding:8px 12px}.exchange-source p{overflow-wrap:anywhere;margin:0}.exchange-source-agent{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-size:12px;font-weight:600}.exchange-source-title{font-family:var(--mono);margin-top:2px;font-size:14px}.exchange-source-meta{font-family:var(--mono);color:var(--ink-muted);margin-top:4px;font-size:11px}.exchange-select{box-sizing:border-box;background:var(--composer);border:1px solid var(--hairline);width:100%;font-family:var(--chrome);color:var(--ink);border-radius:12px;margin:0 0 12px;padding:8px 10px;font-size:14px}.form-card.exchange-dialog textarea{margin-bottom:8px}.form-card.exchange-dialog [aria-invalid=true],.exchange-select[aria-invalid=true]{border-color:var(--danger)}.exchange-field-error,.exchange-server-error{font-family:var(--mono);color:var(--danger);margin:0 0 8px;font-size:12px;line-height:1.5}.exchange-hint{color:var(--ink-muted);margin:0 0 12px;font-size:13px;line-height:1.5}.exchange-sending{font-family:var(--mono);color:var(--ink-muted);margin:0;font-size:12px}.exchange-sending:not(:empty){margin-bottom:8px}.exchange-dialog .create-btn:disabled{opacity:.5;cursor:progress}.exchange-dialog select:focus-visible,.session-action:focus-visible,.exchange-card a:focus-visible,.exchange-card button:focus-visible,.ledger-page a:focus-visible,.ledger-page button:focus-visible,.ledger-page select:focus-visible,.ledger-detail-title:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.exchange-card{box-sizing:border-box;border:1px solid var(--hairline);border-left:4px solid var(--accent);background:var(--field);color:var(--ink);font-family:var(--chrome);overflow-wrap:anywhere;border-radius:8px;padding:12px 16px;font-size:14px;line-height:1.45}.exchange-card:focus{outline:2px solid var(--accent);outline-offset:2px}.exchange-card.is-stopped{border-left-color:var(--danger)}.exchange-card.is-done{border-left-color:var(--ink-muted)}.exchange-card p{margin:0}.exchange-card p+p{margin-top:4px}.exchange-card-line{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.exchange-card-mode{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-size:12px;font-weight:600}.exchange-card-title{font-weight:600}.exchange-card-state{font-family:var(--mono);border:1px solid var(--hairline);color:var(--ink);border-radius:6px;padding:0 6px;font-size:12px}.exchange-card.is-active .exchange-card-state{border-color:var(--accent);color:var(--accent)}.exchange-card.is-stopped .exchange-card-state{border-color:var(--danger);color:var(--danger)}.exchange-card-session,.exchange-card-time{font-family:var(--mono);color:var(--ink-muted);font-size:12px}.exchange-card-key{color:var(--ink-muted)}.exchange-card-outcome.is-failure,.exchange-card-error{color:var(--danger)}.exchange-card-advice{color:var(--ink-muted)}.exchange-card-foot{flex-wrap:wrap;align-items:baseline;gap:4px 16px;display:flex}.exchange-card-link{color:var(--accent)}.exchange-card-cancel{font-family:var(--chrome);color:var(--danger);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;text-decoration:underline}.exchange-card-cancel:disabled{cursor:progress;opacity:.6}.ledger-page{box-sizing:border-box;background:var(--field);min-height:100dvh;color:var(--ink);font-family:var(--chrome);flex-direction:column;padding:16px;display:flex}.ledger-head{flex:none;margin-bottom:16px}.ledger-title{margin:12px 0 4px;font-size:20px;font-weight:700}.ledger-sub{color:var(--ink-muted);margin:0;font-size:13px}.ledger-main{flex-direction:column;flex:auto;gap:16px;min-height:0;display:flex}.ledger-pane-title{margin:0 0 8px;font-size:16px;font-weight:600}.ledger-filters{flex-direction:column;gap:8px;margin-bottom:8px;display:flex}.ledger-mode{margin:0}.ledger-selects{flex-wrap:wrap;gap:8px 12px;display:flex}.ledger-select-label{min-width:0;color:var(--ink-muted);flex-direction:column;flex:140px;gap:4px;font-size:13px;display:flex}.ledger-select-label .exchange-select,.ledger-count{margin:0}.ledger-state{font-family:var(--mono);color:var(--ink-muted);margin:0;padding:12px 0;font-size:12px;line-height:1.5}.ledger-state p{margin:0}.ledger-list{border-top:1px solid var(--hairline);margin:0;padding:0;list-style:none}.ledger-row-item{border-bottom:1px solid var(--hairline)}.ledger-row{box-sizing:border-box;text-align:left;width:100%;color:var(--ink);cursor:pointer;overflow-wrap:anywhere;background:0 0;border:0;border-left:3px solid #0000;flex-direction:column;gap:2px;padding:10px 8px;display:flex}.ledger-row[aria-current=true]{background:var(--card);border-left-color:var(--accent)}.ledger-row-line{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.ledger-row-who{font-size:14px;font-weight:600}.ledger-row-state{font-family:var(--mono);color:var(--accent);font-size:12px}.ledger-row.is-stopped .ledger-row-state{color:var(--danger)}.ledger-row.is-done .ledger-row-state{color:var(--ink-muted)}.ledger-row-session{font-family:var(--mono);font-size:13px}.ledger-row-meta{font-family:var(--mono);color:var(--ink-muted);font-size:11px}.ledger-detail{flex-direction:column;gap:12px;min-width:0;display:flex}.ledger-detail-back{align-self:flex-start;margin-top:0}.ledger-detail-title{overflow-wrap:anywhere;margin:0;font-size:18px;font-weight:600}.ledger-section{border-top:1px solid var(--hairline);padding-top:8px}.ledger-section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin:0 0 6px;font-size:12px;font-weight:600}.ledger-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.5}.ledger-packet-list{margin-top:8px}.ledger-packet-title{margin:0;font-size:13px;font-weight:600}.ledger-packet-list ul,.ledger-links{overflow-wrap:anywhere;margin:4px 0 0;padding:0 0 0 18px;font-size:13px;line-height:1.5}.ledger-links{padding:0;list-style:none}.ledger-thread-link{font-size:13px}.ledger-link-role{font-family:var(--mono);color:var(--ink-muted);font-size:11px}.ledger-timeline{margin:0;padding:0 0 0 18px;font-size:13px;line-height:1.5}.ledger-timeline li{overflow-wrap:anywhere;margin-bottom:4px}.ledger-timeline-time{font-family:var(--mono);color:var(--ink-muted);font-size:11px;display:block}.ledger-foot{font-family:var(--mono);color:var(--ink-faint);overflow-wrap:anywhere;margin:0;font-size:11px}@media (max-width:799px){.ledger-page.has-detail .ledger-list-pane,.ledger-page:not(.has-detail) .ledger-detail-pane{display:none}}@media (min-width:800px){.ledger-page{height:100vh;padding:24px}.ledger-main{flex-direction:row;gap:24px}.ledger-list-pane{flex:0 0 22rem;min-height:0;padding-right:4px;overflow-y:auto}.ledger-detail-pane{border-left:1px solid var(--hairline);flex:auto;min-width:0;max-width:56rem;min-height:0;padding-left:24px;overflow-y:auto}.ledger-detail-back{display:none}}.group-thread-nav{flex-wrap:wrap;gap:4px 16px;display:flex}.group-thread-main{flex:auto;min-width:0;max-width:56rem}.group-thread-list{margin:0;padding:0;list-style:none}.group-thread-body{white-space:pre-wrap;overflow-wrap:anywhere}@media (min-width:800px){.group-thread-page{height:auto}}@media (max-width:799px){.session-actions{flex-direction:column}.session-action{text-align:left;min-height:40px}}@media (prefers-reduced-motion:reduce){.exchange-card,.ledger-row,.session-action{scroll-behavior:auto;transition:none;animation:none}}.session-shares{border-top:1px dashed var(--hairline);font-family:var(--mono);margin-top:10px;padding-top:8px;font-size:11px}.session-shares-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.session-shares-title{font-family:var(--mono);color:var(--ink);margin:0;font-size:12px;font-weight:600}.session-share-note,.session-share-unavailable{color:var(--ink-muted);margin:6px 0 0;line-height:1.5}.session-share-list{gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.session-share{border:1px solid var(--hairline);border-left:3px solid var(--accent);background:var(--field);overflow-wrap:anywhere;border-radius:8px;padding:8px 10px}.session-share.is-expired,.session-share.is-revoked{border-left-color:var(--hairline);color:var(--ink-muted)}.session-share.is-exhausted,.session-share.is-recovering{border-left-color:#e0a83e}.session-share-head{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.session-share-head .manage-tag{margin-left:0}.session-share-status.is-active,.session-share-status.is-answering{color:var(--accent);border-color:var(--accent)}.session-share-status.is-exhausted,.session-share-status.is-recovering{color:#e0a83e;border-color:#e0a83e}.session-share-audience{color:var(--ink)}.session-share-meta{margin-top:4px}.session-share-meta dt{overflow-wrap:normal;flex:none}.session-share .session-actions .pin-word{text-align:left}.session-share-ref{font-family:var(--mono);-webkit-user-select:all;user-select:all;font-size:11px}.session-share-revoke{border-color:var(--danger)}.session-share-confirm{border:1px solid var(--danger);border-radius:8px;margin-top:8px;padding:8px}.session-share-confirm p{margin:0;line-height:1.5}.session-share-form{border:1px solid var(--accent);border-radius:8px;gap:4px;margin-top:8px;padding:8px 10px;display:grid}.session-share-form label{color:var(--ink-muted);margin-top:4px}.session-share-form select,.session-share-form input{font-family:var(--mono);color:var(--ink);background:var(--composer);border:1px solid var(--hairline);box-sizing:border-box;border-radius:8px;max-width:100%;padding:6px 8px;font-size:12px}.session-share-form [aria-invalid=true]{border-color:var(--danger)}.session-share-form select:focus-visible,.session-share-form input:focus-visible,.sessions-drawer a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.session-action:disabled{opacity:.5;cursor:progress}.share-policy-toggle{align-items:center;gap:8px;display:flex}.share-policy-hint{margin:4px 0 0 24px}.share-policy-sub{margin:20px 0 4px;font-size:14px}.share-policy-empty{margin:8px 0}.share-policy-list{margin:8px 0;padding:0;list-style:none}.share-policy-entry{border-top:1px solid var(--hairline);flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:6px 0;font-size:13px;display:flex}.share-policy-remove{margin-left:auto}.share-policy-add{grid-template-columns:1fr 1fr auto;align-items:end;gap:8px;margin-top:8px;display:grid}.share-policy-add label{margin-bottom:4px;display:block}@media (max-width:640px){.share-policy-add{grid-template-columns:1fr}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
@@ -1,3 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31713,e=>{"use strict";var t=e.i(43476),s=e.i(71645),n=e.i(22016),a=e.i(57688);function r(e){let t,s=e.match(/^\s*\[run\]\s*([\s\S]*)$/);if(!s)return null;try{t=JSON.parse(s[1])}catch{return null}if(!t||"object"!=typeof t)return null;let n=t,a="string"==typeof n.page?n.page:"string"==typeof n.html?n.html:void 0,r=void 0===a?{}:{page:a,html:a};return"running"===n.state||"stopped"===n.state?{state:n.state,...r}:"done"===n.state&&"string"==typeof n.output?{state:"done",output:n.output,...r}:null}function i(e){return"done"===e.state?e.output??"":"stopped"===e.state?"The command was stopped.":"The command is running"}var l=e.i(87303);function o(e){let t,s=e.match(/^\s*\[draft\]\s*([\s\S]*)$/);if(!s)return null;try{t=JSON.parse(s[1])}catch{return null}if(!t||"object"!=typeof t)return null;let n=t;return"email"!==n.channel&&"slack"!==n.channel||"open"!==n.state&&"sent"!==n.state&&"discarded"!==n.state||"string"!=typeof n.recipient||"string"!=typeof n.body?null:{channel:n.channel,recipient:n.recipient,body:n.body,state:n.state}}function d(e){let t=e.match(/approve using the code ([A-Za-z0-9][A-Za-z0-9_-]*)/i);return t?t[1]:null}var c=e.i(74904),u=e.i(33851),h=e.i(10331),m=e.i(44079),p=e.i(4335),f=e.i(52900),g=e.i(68541),x=e.i(15983),b=e.i(10718);function y(e){return String(e).padStart(2,"0")}function j(e){let t=new Date(e);return`${t.getFullYear()}-${y(t.getMonth()+1)}-${y(t.getDate())} ${y(t.getHours())}:${y(t.getMinutes())}`}function v({deckState:e,onClose:n,onDeleted:a}){let r=(0,s.useId)(),[i,l]=(0,s.useState)(null),[o,d]=(0,s.useState)(""),[u,h]=(0,s.useState)(""),[m,p]=(0,s.useState)([]),[f,g]=(0,s.useState)(!1),y=(0,s.useRef)(null),w=(0,s.useRef)(null),N=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=!1;return fetch("/api/bots/manage",{cache:"no-store"}).then(async t=>{let s=await t.json().catch(()=>null);if(!e){if(!t.ok||!Array.isArray(s))return void d("string"==typeof s?.error?s.error:"Could not load agents.");l(s)}}).catch(()=>{e||d("Could not load agents.")}),y.current?.focus(),()=>{e=!0}},[]);let k=u.trim().toLowerCase(),S=(i??[]).filter(e=>e.name.toLowerCase().includes(k)),C=S.filter(e=>!e.blocked);return(0,s.useEffect)(()=>{if(f)return;let e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[f,n]),(0,t.jsxs)("div",{className:"modal-scrim manage-scrim",children:[(0,t.jsxs)("div",{ref:N,className:"manage-card",role:"dialog","aria-modal":"true","aria-labelledby":r,onKeyDown:e=>{if("Tab"!==e.key||!N.current)return;let t=Array.from(N.current.querySelectorAll("button:not(:disabled), input:not(:disabled)"));if(0===t.length)return;let s=t[0],n=t[t.length-1];e.shiftKey&&document.activeElement===s?(e.preventDefault(),n.focus()):e.shiftKey||document.activeElement!==n||(e.preventDefault(),s.focus())},children:[(0,t.jsxs)("div",{className:"manage-head",children:[(0,t.jsx)("h2",{id:r,className:"delete-title",children:"Manage agents"}),(0,t.jsx)("button",{type:"button",className:"cancel-btn",onClick:n,children:"Close"})]}),(0,t.jsx)("label",{className:"manage-search-label",htmlFor:`${r}-search`,children:"Filter by name"}),(0,t.jsx)("input",{id:`${r}-search`,ref:y,className:"manage-search",type:"search",value:u,onChange:e=>h(e.target.value),placeholder:"Name contains…"}),(0,t.jsxs)("div",{className:"manage-tools",children:[(0,t.jsx)("button",{type:"button",className:"pin-word",onClick:()=>{p(e=>Array.from(new Set([...e,...C.map(e=>e.id)])))},disabled:0===C.length,children:"Select all shown"}),(0,t.jsx)("button",{type:"button",className:"pin-word",onClick:()=>{p([]),y.current?.focus()},disabled:0===m.length,children:"Clear selection"}),(0,t.jsxs)("span",{className:"manage-count","aria-live":"polite",children:[m.length," selected · ",S.length," shown of ",i?.length??0]})]}),o?(0,t.jsx)("p",{className:"delete-error",role:"alert",children:o}):null,i||o?null:(0,t.jsx)("p",{className:"delete-copy",children:"Loading agents…"}),i?(0,t.jsxs)("ul",{className:"manage-list","aria-label":"Agents",children:[0===S.length?(0,t.jsx)("li",{className:"delete-copy",children:"No agents match."}):null,S.map(s=>{let n=`${r}-row-${s.id}`,a=(0,c.isMigratedPending)(s)?"Not selected":(0,c.deckLabel)(s.deck_id??"",e);return(0,t.jsxs)("li",{className:s.blocked?"manage-row is-blocked":"manage-row","data-agent-id":s.id,children:[(0,t.jsx)("input",{id:n,type:"checkbox",checked:m.includes(s.id),disabled:!!s.blocked,onChange:()=>{var e;return e=s.id,void p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-describedby":s.blocked?`${n}-reason`:void 0}),(0,t.jsxs)("div",{className:"manage-copy",children:[(0,t.jsxs)("label",{htmlFor:n,className:"manage-name",children:[s.name,s.hidden?(0,t.jsx)("span",{className:"manage-tag",children:"Hidden"}):null]}),(0,t.jsxs)("dl",{className:"manage-meta",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Agent"}),(0,t.jsx)("dd",{children:(0,c.botAgentLabel)(s)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Agent Deck"}),(0,t.jsx)("dd",{children:a})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Source"}),(0,t.jsx)("dd",{children:s.source_provider||"Created here"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Created"}),(0,t.jsx)("dd",{children:j(s.created_at)})]}),s.last_activity?(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Last activity"}),(0,t.jsx)("dd",{children:j(s.last_activity)})]}):null]}),s.blocked?(0,t.jsx)("p",{id:`${n}-reason`,className:"manage-reason",children:(0,b.blockedReasonCopy)(s.blocked)}):null]})]},s.id)})]}):null,(0,t.jsxs)("div",{className:"form-actions manage-actions",children:[(0,t.jsx)("button",{type:"button",className:"cancel-btn",onClick:n,children:"Cancel"}),(0,t.jsxs)("button",{ref:w,type:"button",className:"delete-btn",disabled:0===m.length,onClick:()=>g(!0),children:["Delete selected",m.length>0?` (${m.length})`:""]})]})]}),f?(0,t.jsx)(x.default,{ids:m,onCancel:()=>{g(!1),requestAnimationFrame(()=>w.current?.focus())},onDeleted:a}):null]})}var w=e.i(63352);function N(e,t,s){if(0===e.length)return null;let n=e[0],a=e[e.length-1],r=null!==t&&e.includes(t);return s?r&&t!==n?null:a:r&&t!==a?null:n}let k='a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';var S=e.i(50814);function C({mode:e,session:n,agents:a,origin:r,onClose:i,onStarted:l}){let o=(0,s.useId)(),d=(0,s.useId)(),c=(0,s.useId)(),u=(0,s.useId)(),[h,m]=(0,s.useState)(""),[p,f]=(0,s.useState)(""),[g,x]=(0,s.useState)(!1),[b,y]=(0,s.useState)({}),[j,v]=(0,s.useState)(""),[_,R]=(0,s.useState)(!1),I=(0,s.useRef)(!1),E=(0,s.useRef)(null),$=(0,s.useRef)(null),A=(0,s.useRef)(null),D=(0,s.useRef)(null),P=(0,s.useRef)(null),T=(0,S.sessionDialogUsesPin)(e,n.route),O=a.filter(e=>e.id!==n.agent.id);(0,s.useEffect)(()=>{("continue"===e?D.current:A.current)?.focus()},[e]),(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.stopPropagation(),i())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[i]);let L=async t=>{if(t.preventDefault(),I.current)return;let s={mode:"resume"===e?"ask":e,instruction:h,originConversationId:r.conversationId,destinationAgentId:p},a="resume"===e?(0,S.validateResumeDraft)(h,g):(0,S.validateDraft)(s);if(y(a),Object.keys(a).length>0)return void(a.destination?D.current?.focus():a.instruction?A.current?.focus():P.current?.focus());let i="resume"===e?"resume":"ask",o=e=>T?(0,S.pinRequestBody)(i,h,r.conversationId,g,e):(0,S.exchangeRequestBody)(s,{agentId:n.agent.id,sessionRef:n.ref},e),d=JSON.stringify(o(""));E.current&&E.current.payload===d||(E.current={payload:d,key:crypto.randomUUID()}),I.current=!0,R(!0),v("");try{let e=T?`/api/bots/${encodeURIComponent(n.agent.id)}/sessions/${encodeURIComponent(n.ref)}/pins`:"/api/exchanges",t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o(E.current.key))}),s=await t.json().catch(()=>null);if(!t.ok){let e="string"==typeof s?.error?.code?s.error.code:null;"idempotency_conflict"===e&&(E.current=null),v((0,S.submitErrorMessage)(e,"string"==typeof s?.error?.message?s.error.message:null));return}let a=T?s?.turn?.exchange_id:s?.exchange?.id;l("string"==typeof a?a:null)}catch{v((0,S.submitErrorMessage)(null,"Botmancers could not be reached. Your draft is kept; try again."))}finally{I.current=!1,R(!1)}},M=O.find(e=>e.id===p)?.name,F="ask"===e,U="resume"===e;return(0,t.jsx)("div",{className:"modal-scrim exchange-scrim",onMouseDown:e=>{e.target===e.currentTarget&&i()},onKeyDown:e=>{if("Tab"!==e.key||!$.current)return;let t=N(Array.from($.current.querySelectorAll(k)),document.activeElement,e.shiftKey);t&&(e.preventDefault(),t.focus())},children:(0,t.jsxs)("div",{ref:$,className:"form-card exchange-dialog",role:"dialog","aria-modal":"true","aria-labelledby":o,"data-exchange-mode":e,children:[(0,t.jsx)("h2",{id:o,className:"delete-title",children:(0,S.sessionDialogTitle)(e)}),(0,t.jsxs)("section",{className:"exchange-source","aria-label":"Source session",children:[(0,t.jsx)("p",{className:"exchange-source-agent",children:n.agent.name}),(0,t.jsx)("p",{className:"exchange-source-title",children:n.title}),(0,t.jsxs)("p",{className:"exchange-source-meta",children:["Last activity ",(0,w.formatSessionDate)(n.last_activity_at),n.origin.conversation?` \xb7 from ${n.origin.conversation.label}`:""]})]}),(0,t.jsxs)("form",{onSubmit:L,noValidate:!0,className:"exchange-form",children:[F||U?null:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("label",{htmlFor:c,children:"Hand off to"}),(0,t.jsxs)("select",{ref:D,id:c,className:"exchange-select",value:p,"aria-invalid":!!b.destination||void 0,"aria-describedby":b.destination?`${c}-error`:void 0,disabled:_,onChange:e=>{f(e.target.value),y(e=>({...e,destination:void 0}))},children:[(0,t.jsx)("option",{value:"",children:"Choose an Agent"}),O.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]}),b.destination?(0,t.jsx)("p",{id:`${c}-error`,className:"exchange-field-error",children:b.destination}):null]}),(0,t.jsx)("label",{htmlFor:d,children:F?"Question":U?"Instruction":"Objective"}),(0,t.jsx)("textarea",{ref:A,id:d,rows:4,maxLength:S.INSTRUCTION_LIMIT,value:h,readOnly:_,"aria-invalid":!!b.instruction||void 0,"aria-describedby":`${d}-hint${b.instruction?` ${d}-error`:""}`,onChange:e=>{m(e.target.value),y(e=>({...e,instruction:void 0}))}}),b.instruction?(0,t.jsx)("p",{id:`${d}-error`,className:"exchange-field-error",children:b.instruction}):null,(0,t.jsx)("p",{id:`${d}-hint`,className:"exchange-hint",children:F?`${n.agent.name} answers from this exact session, read-only. The answer arrives in ${r.label}.`:U?`${n.agent.name} resumes work in this exact session and may edit its workspace. The turn never moves to another session. Progress shows in ${r.label}.`:`${M??"The Agent you choose"} receives an extracted handoff (objective, decisions, constraints, references, open questions) and starts a new session of its own. ${n.agent.name}’s session is not shared and is not changed. Progress shows in ${r.label}.`}),U?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("label",{className:"exchange-approval",htmlFor:u,children:[(0,t.jsx)("input",{ref:P,id:u,type:"checkbox",checked:g,disabled:_,"aria-invalid":!!b.approval||void 0,"aria-describedby":b.approval?`${u}-error`:void 0,onChange:e=>{x(e.target.checked),y(e=>({...e,approval:void 0}))}})," ","I approve edits by ",n.agent.name," in this session"]}),b.approval?(0,t.jsx)("p",{id:`${u}-error`,className:"exchange-field-error",children:b.approval}):null]}):null,j?(0,t.jsx)("p",{className:"exchange-server-error",role:"alert",children:j}):null,(0,t.jsx)("p",{className:"exchange-sending",role:"status",children:_?"Sending…":""}),(0,t.jsxs)("div",{className:"form-actions",children:[(0,t.jsx)("button",{type:"button",className:"cancel-btn",onClick:i,children:"Cancel"}),(0,t.jsx)("button",{type:"submit",className:"create-btn",disabled:_,"aria-disabled":_,children:j?"Try again":"Send"})]})]})]})})}var _=e.i(24204);function R(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`owner-share-${crypto.randomUUID()}`:`owner-share-${Date.now()}-${Math.random().toString(36).slice(2)}`}function I({row:e,shares:a,policy:r,onChanged:i}){let l=(0,s.useId)(),[o,d]=(0,s.useState)(!1),[c,u]=(0,s.useState)(!1),h=a?(0,_.sessionShares)(a,e.ref):[],m=h.filter(_.shareIsLive),p=h.filter(e=>!(0,_.shareIsLive)(e)),f="loading"===r,g="loading"===r?null:r,x=f?null:(0,_.shareCreateAvailability)(e,g),b=c?p:p.slice(0,3*!m.length);return(0,t.jsxs)("section",{className:"session-shares","aria-labelledby":l,"data-session-shares":e.ref,children:[(0,t.jsxs)("div",{className:"session-shares-head",children:[(0,t.jsx)("h3",{id:l,className:"session-shares-title",children:"Slack share"}),x?.available&&!o?(0,t.jsx)("button",{type:"button",className:"session-action","data-share-action":"create",onClick:()=>d(!0),children:"Share to Slack"}):null]}),f?(0,t.jsx)("p",{className:"session-share-note session-share-loading",role:"status",children:"Checking the share policy…"}):null,x&&!x.available?(0,t.jsxs)("p",{className:"session-share-unavailable",children:[x.reason," ",x.configHref?(0,t.jsx)(n.default,{className:"session-link",href:x.configHref,children:"Open Config"}):null]}):null,o&&g?(0,t.jsx)($,{row:e,policy:g,onCancel:()=>d(!1),onCreated:()=>{d(!1),i()}}):null,null===a?(0,t.jsx)("p",{className:"session-share-note",role:"status",children:"Loading shares…"}):null,null===a||0!==h.length||o?null:(0,t.jsx)("p",{className:"session-share-note",children:"Not shared."}),m.length+b.length>0?(0,t.jsx)("ul",{className:"session-share-list","aria-label":`Slack shares of ${e.title}`,children:[...m,...b].map(e=>(0,t.jsx)(E,{share:e,onChanged:i},e.share_ref))}):null,p.length>b.length?(0,t.jsxs)("button",{type:"button",className:"pin-word",onClick:()=>u(!0),children:["Show ",p.length-b.length," ended share",p.length-b.length==1?"":"s"]}):null]})}function E({share:e,onChanged:n}){let[a,r]=(0,s.useState)(!1),[i,l]=(0,s.useState)(!1),[o,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(!1),h=(0,_.shareIsLive)(e),m=async()=>{try{await navigator.clipboard.writeText(e.share_ref),u(!0)}catch{d("Copy failed. Select the reference instead.")}},p=async()=>{l(!0),d("");try{let t=await fetch(`/api/shares/${encodeURIComponent(e.share_ref)}/revoke`,{method:"POST"}),s=await t.json().catch(()=>null);t.ok?(r(!1),n()):d("string"==typeof s?.error?.message?s.error.message:"The share could not be revoked.")}catch{d("The share could not be revoked.")}finally{l(!1)}};return(0,t.jsxs)("li",{className:`session-share is-${e.status}`,"data-share-ref":e.share_ref,"data-share-status":e.status,children:[(0,t.jsxs)("div",{className:"session-share-head",children:[(0,t.jsx)("span",{className:`manage-tag session-share-status is-${e.status}`,children:_.SHARE_STATUS_LABELS[e.status]}),(0,t.jsx)("span",{className:"session-share-audience",children:(0,_.audienceLabel)(e.audience)})]}),(0,t.jsxs)("dl",{className:"manage-meta session-share-meta",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Expiry"}),(0,t.jsx)("dd",{children:(0,_.expiryLabel)(e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Questions"}),(0,t.jsx)("dd",{children:(0,_.turnsLabel)(e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Thread"}),(0,t.jsx)("dd",{children:(0,_.threadLabel)(e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Reference"}),(0,t.jsx)("dd",{children:(0,t.jsx)("code",{className:"session-share-ref",children:e.share_ref})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Origin"}),(0,t.jsxs)("dd",{children:[(0,_.createdByLabel)(e)," · read-only Ask"]})]})]}),(0,t.jsx)("p",{className:"session-share-note",children:(0,_.shareStatusNote)(e)}),(0,t.jsxs)("div",{className:"session-actions",role:"group","aria-label":"Share actions",children:[(0,t.jsx)("button",{type:"button",className:"pin-word","data-share-action":"copy",onClick:()=>{m()},children:c?"Copied":"Copy reference"}),h&&!a?(0,t.jsx)("button",{type:"button",className:"session-action session-share-revoke","data-share-action":"revoke",onClick:()=>r(!0),children:"Revoke"}):null]}),a?(0,t.jsxs)("div",{className:"session-share-confirm",role:"group","aria-label":"Confirm revoke",children:[(0,t.jsx)("p",{children:"Revoke this share? The next Slack question in its thread gets the revoked notice. This can’t be undone."}),(0,t.jsxs)("div",{className:"session-actions",children:[(0,t.jsx)("button",{type:"button",className:"session-action session-share-revoke","data-share-action":"confirm-revoke",disabled:i,onClick:()=>{p()},children:i?"Revoking…":"Revoke share"}),(0,t.jsx)("button",{type:"button",className:"pin-word",disabled:i,onClick:()=>r(!1),children:"Keep it"})]})]}):null,o?(0,t.jsx)("p",{className:"delete-error",role:"alert",children:o}):null]})}function $({row:e,policy:n,onCancel:a,onCreated:r}){let i={channel:(0,s.useId)(),duration:(0,s.useId)(),turns:(0,s.useId)()},[l,o]=(0,s.useState)(0),[d,c]=(0,s.useState)(n.limits.ttl_seconds.default),[u,h]=(0,s.useState)(String(n.limits.max_turns.default)),[m]=(0,s.useState)(R),[p,f]=(0,s.useState)(!1),[g,x]=(0,s.useState)(""),b=Number(u),y=Number.isInteger(b)&&b>=n.limits.max_turns.min&&b<=n.limits.max_turns.max,j=async t=>{if(t.preventDefault(),y){f(!0),x("");try{let t=await fetch(`/api/bots/${encodeURIComponent(e.agent.id)}/sessions/${encodeURIComponent(e.ref)}/shares`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify((0,_.shareCreateBody)(n.audiences[l],d,b,m))}),s=await t.json().catch(()=>null);t.ok?r():x("string"==typeof s?.error?.message?s.error.message:"The share could not be created.")}catch{x("The share could not be created.")}finally{f(!1)}}};return(0,t.jsxs)("form",{className:"session-share-form",onSubmit:e=>{j(e)},"aria-label":`Share ${e.title} to Slack`,children:[(0,t.jsxs)("p",{className:"session-share-note",children:["Shares ",(0,t.jsx)("strong",{children:e.title})," (",e.agent.name,") as a read-only Ask: Slack replies in the share’s thread ask exactly this session."]}),(0,t.jsx)("label",{htmlFor:i.channel,children:"Slack channel"}),(0,t.jsx)("select",{id:i.channel,value:l,onChange:e=>o(Number(e.target.value)),disabled:p,children:n.audiences.map((e,s)=>(0,t.jsx)("option",{value:s,children:(0,_.audienceLabel)(e)},`${e.team_id}:${e.channel_id}`))}),(0,t.jsx)("label",{htmlFor:i.duration,children:"Expires after"}),(0,t.jsx)("select",{id:i.duration,value:d,onChange:e=>c(Number(e.target.value)),disabled:p,children:_.SHARE_DURATIONS.map(e=>(0,t.jsx)("option",{value:e.seconds,children:e.label},e.seconds))}),(0,t.jsx)("label",{htmlFor:i.turns,children:"Questions allowed"}),(0,t.jsx)("input",{id:i.turns,type:"number",inputMode:"numeric",min:n.limits.max_turns.min,max:n.limits.max_turns.max,value:u,onChange:e=>h(e.target.value),disabled:p,"aria-invalid":!y}),y?null:(0,t.jsxs)("p",{className:"delete-error",children:["Questions allowed must be a whole number from ",n.limits.max_turns.min," to ",n.limits.max_turns.max,"."]}),g?(0,t.jsx)("p",{className:"delete-error",role:"alert",children:g}):null,(0,t.jsxs)("div",{className:"session-actions",children:[(0,t.jsx)("button",{type:"submit",className:"session-action","data-share-action":"submit",disabled:p||!y,children:p?"Sharing…":"Create share"}),(0,t.jsx)("button",{type:"button",className:"pin-word",onClick:a,disabled:p,children:"Cancel"})]})]})}function A({agentId:e,agentName:a,agents:r,origin:i,onClose:l,onOpenThread:o,onExchangeStarted:d}){let c=(0,s.useId)(),[u,h]=(0,s.useState)("all"),[m,p]=(0,s.useState)(null),[f,g]=(0,s.useState)(""),[x,b]=(0,s.useState)(0),[y,j]=(0,s.useState)(null),v=(0,s.useRef)(null),N=(0,s.useRef)(null),[k,_]=(0,s.useState)(null),[R,I]=(0,s.useState)(null),[E,$]=(0,s.useState)(null),[P,T]=(0,s.useState)("loading"),[O,L]=(0,s.useState)(0),M=(0,s.useRef)(null),F=()=>{M.current=k?.returnTo??null,_(null)};(0,s.useEffect)(()=>{if(k||!M.current)return;let e=M.current;M.current=null,e.isConnected&&e.focus()},[k]),(0,s.useEffect)(()=>{N.current?.focus()},[]),(0,s.useEffect)(()=>{let t=!1;return fetch(`/api/bots/${encodeURIComponent(e)}/sessions?status=${u}`,{cache:"no-store"}).then(async e=>{let s=await e.json().catch(()=>null);if(!t){if(!e.ok||!Array.isArray(s?.sessions))return void g("string"==typeof s?.error?s.error:"Could not load sessions.");p(s.sessions)}}).catch(()=>{t||g("Could not load sessions.")}),()=>{t=!0}},[e,u,x]),(0,s.useEffect)(()=>{let t=!1,s=encodeURIComponent(e);return fetch(`/api/bots/${s}/share-policy`,{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{t||T(e?.policy??null)}).catch(()=>{t||T(null)}),fetch(`/api/shares?agent_id=${s}&limit=100`,{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{t||$(Array.isArray(e?.shares)?e.shares:[])}).catch(()=>{t||$([])}),()=>{t=!0}},[e,O]),(0,s.useEffect)(()=>{let e=setInterval(()=>L(e=>e+1),15e3);return()=>clearInterval(e)},[]);let U=(e=u)=>{p(null),g(""),h(e),b(e=>e+1)};return(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&l()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[l]),(0,t.jsxs)("div",{className:"modal-scrim sessions-scrim",onMouseDown:e=>{e.target!==e.currentTarget||k||l()},children:[(0,t.jsxs)("div",{ref:v,className:"sessions-drawer",role:"dialog","aria-modal":"true","aria-labelledby":c,onKeyDown:e=>{if("Tab"!==e.key||!v.current)return;let t=Array.from(v.current.querySelectorAll("button:not(:disabled), summary, select:not(:disabled), input:not(:disabled), a[href]"));if(0===t.length)return;let s=t[0],n=t[t.length-1];e.shiftKey&&document.activeElement===s?(e.preventDefault(),n.focus()):e.shiftKey||document.activeElement!==n||(e.preventDefault(),s.focus())},inert:!!k,children:[(0,t.jsxs)("div",{className:"manage-head",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{id:c,className:"delete-title sessions-title",children:"Sessions"}),(0,t.jsx)("p",{className:"sessions-sub",children:a})]}),(0,t.jsx)("button",{ref:N,type:"button",className:"cancel-btn",onClick:l,children:"Close"})]}),(0,t.jsxs)("div",{className:"sessions-filter",role:"group","aria-label":"Show sessions",children:[w.SESSION_FILTER_OPTIONS.map(e=>(0,t.jsx)("button",{type:"button",className:"sessions-filter-btn","aria-pressed":u===e.value,onClick:()=>{u!==e.value&&U(e.value)},children:e.label},e.value)),(0,t.jsx)("span",{className:"manage-count","aria-live":"polite",children:m?`${m.length} shown`:""})]}),(0,t.jsx)("div",{className:"exchange-started",role:"status",children:R?(0,t.jsxs)(t.Fragment,{children:[R.text," ",R.id?(0,t.jsx)(n.default,{className:"session-link",href:(0,S.detailsHref)(R.id),children:"View in Exchanges"}):null]}):null}),f?(0,t.jsxs)("div",{className:"sessions-state",role:"alert",children:[(0,t.jsx)("p",{className:"delete-error",children:f}),(0,t.jsx)("button",{type:"button",className:"pin-word",onClick:()=>U(),children:"Retry"})]}):null,m||f?null:(0,t.jsx)("p",{className:"delete-copy sessions-state",role:"status",children:"Loading sessions…"}),m?(0,t.jsxs)("ul",{className:"manage-list sessions-list","aria-label":`Sessions for ${a}`,children:[0===m.length?(0,t.jsx)("li",{className:"delete-copy sessions-state",children:(0,w.emptySessionsCopy)(u,a)}):null,m.map(s=>(0,t.jsx)(D,{agentId:e,row:s,open:y===s.ref,onToggle:()=>j(e=>e===s.ref?null:s.ref),onOpenThread:o,onAction:(e,t)=>{I(null),_({mode:e,row:s,returnTo:t})},shares:E,sharePolicy:P,onSharesChanged:()=>L(e=>e+1)},s.ref))]}):null]}),k?(0,t.jsx)(C,{mode:k.mode,session:k.row,agents:r,origin:i,onClose:F,onStarted:e=>{I({id:e,text:"ask"===k.mode?`Asked ${k.row.agent.name}’s session. The answer arrives in ${i.label}.`:"resume"===k.mode?`Resumed work in ${k.row.agent.name}’s session. Progress shows in ${i.label}.`:`Handoff started from ${k.row.agent.name}’s session. Progress shows in ${i.label}.`}),F(),d(e)}}):null]})}function D({agentId:e,row:n,open:a,onToggle:r,onOpenThread:i,onAction:l,shares:o,sharePolicy:d,onSharesChanged:c}){let u=(0,s.useId)(),h=(0,S.sessionRowActions)(n),m=h.filter(e=>e.availability.available),p=h.flatMap(e=>e.availability.available?[]:[e.availability.reason]),f=n.origin.conversation,g=(0,w.workRequestLabel)(n),x=(0,w.sessionUsageLine)(n.usage);return(0,t.jsx)("li",{className:`manage-row session-row is-${n.status}`,"data-session-ref":n.ref,children:(0,t.jsxs)("div",{className:"manage-copy",children:[(0,t.jsxs)("div",{className:"session-head",children:[(0,t.jsx)("span",{className:"session-title",children:n.title}),(0,t.jsx)("span",{className:`manage-tag session-status is-${n.status}`,children:(0,w.statusLabel)(n)}),(0,w.sessionStateTags)(n).map(e=>(0,t.jsx)("span",{className:`manage-tag session-state-tag is-${e.toLowerCase()}`,children:e},e))]}),(0,t.jsxs)("dl",{className:"manage-meta",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Last activity"}),(0,t.jsx)("dd",{children:(0,w.formatSessionDate)(n.last_activity_at)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Started"}),(0,t.jsx)("dd",{children:(0,w.formatSessionDate)(n.created_at)})]}),null!==n.ended_at?(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Ended"}),(0,t.jsx)("dd",{children:(0,w.formatSessionDate)(n.ended_at)})]}):null,(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Runtime"}),(0,t.jsx)("dd",{children:(0,w.runtimeLabel)(n)})]}),(0,t.jsxs)("div",{className:"session-usage-meta",children:[(0,t.jsx)("dt",{children:"Reported usage"}),(0,t.jsxs)("dd",{children:[(0,t.jsx)("span",{className:`session-usage is-${x.quality}`,"aria-hidden":"true",children:x.text}),(0,t.jsx)("span",{className:"session-sr",children:x.label}),x.partial?(0,t.jsx)("span",{className:"manage-tag session-usage-tag",children:"Partial"}):null]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Origin"}),(0,t.jsx)("dd",{children:f?.thread_agent_id?(0,t.jsx)("button",{type:"button",className:"session-link",onClick:()=>i(f.thread_agent_id),children:f.label}):f?.label??"Not recorded"})]}),g?(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Work request"}),(0,t.jsx)("dd",{children:g})]}):null,n.context.workspace?(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Workspace"}),(0,t.jsx)("dd",{children:n.context.workspace})]}):null,n.context.deck?(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:"Deck"}),(0,t.jsx)("dd",{children:n.context.deck})]}):null]}),m.length>0?(0,t.jsx)("div",{className:"session-actions",role:"group","aria-label":`Actions for ${n.title}`,children:m.map(e=>(0,t.jsx)("button",{type:"button",className:"session-action","data-session-action":e.action,"aria-haspopup":"dialog",onClick:t=>l((0,S.sessionDialogMode)(e.action),t.currentTarget),children:e.label},e.action))}):null,p.length>0?(0,t.jsx)("ul",{className:"session-unavailable","aria-label":`Unavailable actions for ${n.title}`,children:p.map(e=>(0,t.jsx)("li",{children:e},e))}):null,(0,t.jsx)(I,{row:n,shares:o,policy:d,onChanged:c}),(0,t.jsx)("button",{type:"button",className:"pin-word session-toggle","aria-expanded":a,"aria-controls":u,onClick:r,children:a?"Hide details":"Details"}),a?(0,t.jsx)(P,{id:u,agentId:e,sessionRef:n.ref}):null]})})}function P({id:e,agentId:n,sessionRef:a}){let[r,i]=(0,s.useState)(null),[l,o]=(0,s.useState)(null),[d,c]=(0,s.useState)(""),[u,h]=(0,s.useState)(null),[m,p]=(0,s.useState)(""),[f,g]=(0,s.useState)(!1),x=`/api/bots/${encodeURIComponent(n)}/sessions/${encodeURIComponent(a)}`;(0,s.useEffect)(()=>{let e=!1;return fetch(x,{cache:"no-store"}).then(async t=>{let s=await t.json().catch(()=>null);e||(t.ok&&Array.isArray(s?.session?.attempts)?(i(s.session.attempts),o({totals:s.session.usage,samples:Array.isArray(s.session.usage_samples)?s.session.usage_samples:[]})):c("Could not load session details."))}).catch(()=>{e||c("Could not load session details.")}),()=>{e=!0}},[x]);let b=(0,s.useCallback)(async()=>{if(null===u)try{let e=await fetch(`${x}?debug=external_session_id`,{cache:"no-store"}),t=await e.json().catch(()=>null),s=t?.debug?.external_session_id;e.ok&&"string"==typeof s?h(s):p("Not available.")}catch{p("Not available.")}},[x,u]),y=async()=>{if(u)try{await navigator.clipboard.writeText(u),g(!0)}catch{g(!1)}};return(0,t.jsxs)("div",{id:e,className:"session-detail",children:[d?(0,t.jsx)("p",{className:"delete-error",role:"alert",children:d}):null,r||d?null:(0,t.jsx)("p",{className:"delete-copy",role:"status",children:"Loading details…"}),r?(0,t.jsxs)("ol",{className:"session-attempts","aria-label":"Runs in this session",children:[0===r.length?(0,t.jsx)("li",{children:"No recorded runs."}):null,r.map(e=>(0,t.jsxs)("li",{children:[(0,w.formatSessionDate)(e.started_at)," · ",(0,w.attemptLabel)(e)]},`${e.request_id}-${e.attempt_number}`))]}):null,l?(0,t.jsx)(O,{totals:l.totals,samples:l.samples}):null,(0,t.jsxs)("details",{className:"session-debug",onToggle:e=>{e.currentTarget.open&&b()},children:[(0,t.jsx)("summary",{children:"Local debug: provider session ID"}),(0,t.jsx)("p",{className:"session-debug-note",children:"For local troubleshooting only. Botmancers resumes sessions for you; you never need to copy this."}),m?(0,t.jsx)("p",{className:"delete-error",children:m}):null,u?(0,t.jsxs)("div",{className:"session-debug-value",children:[(0,t.jsx)("code",{children:u}),(0,t.jsx)("button",{type:"button",className:"pin-word",onClick:()=>{y()},children:f?"Copied":"Copy"})]}):null]})]})}let T=["input_tokens","output_tokens","cost_usd"];function O({totals:e,samples:n}){let a=(0,s.useId)();return(0,t.jsxs)("section",{className:"session-usage-detail","aria-labelledby":a,children:[(0,t.jsx)("h3",{id:a,className:"session-usage-head",children:"Reported usage"}),(0,t.jsx)("dl",{className:"session-usage-totals",children:T.map(s=>{let n=(0,w.usageMetricView)(s,e?.[s],!0);return(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:n.name}),(0,t.jsxs)("dd",{children:[(0,t.jsx)("span",{className:`session-usage is-${n.quality}`,"aria-hidden":"true",children:n.text}),(0,t.jsxs)("span",{className:"session-sr",children:[n.label,"."]}),(0,t.jsx)("span",{className:`session-usage-coverage is-${n.quality}`,children:n.coverage})]})]},s)})}),0===n.length?(0,t.jsx)("p",{className:"session-usage-none",children:"No run in this session reported usage."}):(0,t.jsx)("ol",{className:"session-usage-runs","aria-label":"Reported usage by run",children:n.map((e,s)=>{let n=(0,w.usageSampleValues)(e);return(0,t.jsxs)("li",{children:[(0,t.jsxs)("span",{className:"session-usage-run",children:[(0,w.formatSessionDate)(e.observed_at)," · ",(0,w.usageSampleLabel)(e,s)]}),(0,t.jsxs)("span",{className:"session-usage-values",children:[(0,t.jsxs)("span",{className:null===e.input_tokens?"is-unavailable":void 0,children:["In ",n.input]}),(0,t.jsxs)("span",{className:null===e.output_tokens?"is-unavailable":void 0,children:["Out ",n.output]}),(0,t.jsxs)("span",{className:null===e.cost_usd?"is-unavailable":void 0,children:["Cost ",n.cost]})]})]},`${e.observed_at}-${s}`)})})]})}function L({view:e,agentName:s}){if("loading"===e)return(0,t.jsx)("p",{className:"thread-note",role:"status",children:"Loading messages…"});if("error"===e)return(0,t.jsx)("p",{className:"thread-note thread-note-error",role:"alert",children:"Couldn’t load messages. Trying again…"});if("empty"===e){let e={title:`No messages with ${s} yet.`,hint:"Say something below to start the conversation."};return(0,t.jsxs)("div",{className:"thread-empty","data-thread-empty":"",children:[(0,t.jsx)("p",{className:"thread-empty-title",children:e.title}),(0,t.jsx)("p",{className:"thread-empty-hint",children:e.hint})]})}return null}let M={error:"Error"},F=[{kind:"hermes-config-missing",severity:"error",pattern:/^\[Hermes configuration missing: [^\n]*\]$/,title:"Hermes needs configuration",recovery:"This agent can’t reply until the Hermes API key is set on the Botmancers server. Set it, restart, then send your message again."},{kind:"hermes-turn-failed",severity:"error",pattern:/^\[Hermes turn failed for [\s\S]*\]$/,title:"Hermes couldn’t complete the turn",recovery:"Check that the Hermes gateway is running and reachable, then send your message again."}];function U(e){let t=String(e??"").trim();if(!t)return null;let s=F.find(e=>e.pattern.test(t));return s?{kind:s.kind,severity:s.severity,title:s.title,recovery:s.recovery,detail:t}:null}function q({failure:e}){let[n,a]=(0,s.useState)("idle"),r=M[e.severity],i=(0,s.useId)();async function l(){try{await navigator.clipboard.writeText(e.detail),a("copied")}catch{a("failed")}}return(0,t.jsxs)("div",{className:`runtime-failure runtime-failure-${e.severity}`,role:"status","aria-labelledby":i,"data-runtime-failure":e.kind,children:[(0,t.jsxs)("p",{className:"runtime-failure-title",id:i,children:[(0,t.jsx)("span",{className:"runtime-failure-severity",children:r}),e.title]}),(0,t.jsx)("p",{className:"runtime-failure-recovery",children:e.recovery}),(0,t.jsxs)("details",{className:"runtime-failure-details",children:[(0,t.jsx)("summary",{children:"Details"}),(0,t.jsx)("code",{className:"runtime-failure-detail",children:e.detail}),(0,t.jsx)("button",{type:"button",className:"runtime-failure-copy",onClick:()=>{l()},children:"copied"===n?"Copied":"failed"===n?"Copy failed":"Copy details"})]})]})}function z(e){if(!e)return"";let t=r(e);if(t)return i(t);let s=U(e);if(s)return s.title;let n=(0,c.deckEventDisplay)(e);return n?`${n.label} ${n.detail}`.replace(/\s+/g," ").trim():e.replace(/\s+/g," ").trim()}let H={blocked:"Needs approval",rejected:"Not started",allowed:"Allowed",denied:"Denied",waiting:"Queued",stopped:"Stopped"};function B({notice:e,onDone:n}){let[a,r]=(0,s.useState)(!1),[i,l]=(0,s.useState)(""),o="blocked"!==e.tone||e.actionable?H[e.tone]:"Blocked",d=async t=>{if(!a&&e.wakeId){r(!0),l("");try{let s=await fetch(`/api/wakes/${e.wakeId}/decision`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:t})});if(!s.ok){let e=await s.json().catch(()=>null);l("string"==typeof e?.error?.message?e.error.message:"The decision could not be recorded.")}}catch{l("The decision could not be recorded.")}finally{r(!1),n()}}};return(0,t.jsxs)("div",{className:`wake-notice wake-notice-${e.tone}`,role:"status","data-wake-notice":e.tone,"data-wake-id":e.wakeId??void 0,children:[(0,t.jsxs)("p",{className:"wake-notice-line",children:[(0,t.jsx)("span",{className:"wake-notice-label",children:o}),e.text]}),e.actionable?(0,t.jsxs)("div",{className:"wake-notice-actions",children:[(0,t.jsx)("button",{type:"button",className:"approve-control",disabled:a,onClick:()=>{d("allow")},children:"Allow"}),(0,t.jsx)("button",{type:"button",className:"approve-control",style:{marginLeft:8},disabled:a,onClick:()=>{d("deny")},children:"Deny"})]}):null,i?(0,t.jsx)("p",{className:"wake-notice-error",role:"alert",children:i}):null]})}var W=e.i(13255);function J(e){return!!e&&"chief-of-staff"===e.name.toLowerCase()}function K(e){return J(e)?0:e.pinned?1:2}function G(e,t,s,n){return e&&t?n-s+(t-e)>15e3?"Stopped":"Heartbeat "+new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"2-digit",second:"2-digit"}).format(new Date(e)):"Stopped"}function V(e){let t=e;for(let e=0;e<2;e++){let e=t.replace(/^\s*\[Message from [^\]]+\]\s*(?:\r?\n)?/,"");if(e===t)break;t=e}return t.replace(/^\s+/,"")}function Q(e){let t=e;for(let e=0;e<4;e++){let e=t.replace(/^\s*\[(?:Message from|From) [^\]]+\]\s*(?:\r?\n)?/,"");if(e===t)break;t=e}return t}function X({message:e,conversationId:n,status:a,onDone:r}){let i=o(Q(e.content)),[l,d]=(0,s.useState)(i?.recipient??""),[c,u]=(0,s.useState)(i?.body??""),[h,m]=(0,s.useState)(!1),[p,f]=(0,s.useState)("open"!==a),g=(0,s.useRef)("open"!==a);if(!i)return null;let x="open"!==a||p,b=x?i.recipient:l,y=x?i.body:c,j=async t=>{if(!x&&!g.current&&!h&&("send"!==t||""!==l.trim())){g.current=!0,f(!0),m(!0);try{(await fetch(`/api/conversations/${n}/draft`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:e.id,action:t,recipient:l,body:c})})).ok||(g.current=!1,f(!1))}finally{m(!1),r()}}};return(0,t.jsxs)("div",{className:"draft-card",children:[(0,t.jsx)("div",{className:"draft-title",children:"email"===i.channel?"New Email":"New Slack Message"}),(0,t.jsx)("input",{type:"text","aria-label":"Recipient",value:b,readOnly:x,disabled:h,onChange:e=>{x||d(e.target.value)}}),(0,t.jsx)("textarea",{rows:3,"aria-label":"Draft body",value:y,readOnly:x,disabled:h,onChange:e=>{x||u(e.target.value)}}),"sent"===a?(0,t.jsx)("span",{className:"draft-mark",children:"Sent"}):null,"discarded"===a?(0,t.jsx)("span",{className:"draft-mark",children:"Discarded"}):null,"discarded"!==a?(0,t.jsx)("button",{type:"button",className:"approve-control",disabled:h,onClick:()=>{j("send")},children:"Send"}):null,"open"===a?(0,t.jsx)("button",{type:"button",className:"approve-control",style:{marginLeft:8},disabled:h,onClick:()=>{j("discard")},children:"Discard"}):null]})}function Y({message:e,conversationId:n,status:a,onDone:r}){let i=d(e.content),[l,o]=(0,s.useState)(!1),c=(0,s.useRef)("pending"!==a);if(!i)return null;let u=async t=>{if(!c.current&&!l){c.current=!0,o(!0);try{(await fetch(`/api/conversations/${n}/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:i,messageId:e.id})})).ok||(c.current=!1)}finally{o(!1),r()}}};return"pending"!==a?(0,t.jsx)("span",{className:"draft-mark",children:"approved"===a?"Approved":"Denied"}):(0,t.jsxs)("span",{className:"draft-mark",children:[(0,t.jsx)("button",{type:"button",className:"approve-control",disabled:l,onClick:()=>{u("approve")},children:"Approve"}),(0,t.jsx)("button",{type:"button",className:"approve-control",style:{marginLeft:8},disabled:l,onClick:()=>{u("deny")},children:"Deny"})]})}function Z({names:e}){return 0===e.length?null:(0,t.jsx)(t.Fragment,{children:e.map(e=>(0,t.jsxs)("span",{children:[(0,t.jsx)("br",{}),(0,t.jsxs)("a",{className:"file-control",href:`/api/files/${encodeURIComponent(e)}`,download:e,children:["Download ",e]})]},e))})}function ee({anchorRef:e,deckState:n,onRetryDecks:a,onClose:r,onCreated:i}){let[l,o]=(0,s.useState)(""),[d,h]=(0,s.useState)(u.DEFAULT_REGISTRATION_FORM),[p,g]=(0,s.useState)(""),[x,b]=(0,s.useState)(!1),[y,j]=(0,s.useState)(!1),v=(0,f.useRuntimeConnections)(),[w,S]=(0,s.useState)(null),C=(0,s.useRef)(null),_=(0,s.useRef)(null);(0,s.useLayoutEffect)(()=>{let t=()=>{let t=e.current?.getBoundingClientRect();S(function(e,t){let s=Math.min(358,t.width-32),n=Math.max(16,t.width-16-s),a=16,r=16;if(e){r=Math.min(Math.max(e.left,16),n);let s=e.bottom+8;t.height-s-16>=360&&(a=s)}return{top:a,left:r,maxHeight:Math.max(0,t.height-a-16)}}(t?{left:t.left,bottom:t.bottom}:null,{width:window.innerWidth,height:window.innerHeight}))};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[e]),(0,s.useEffect)(()=>{_.current?.focus()},[]),(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.stopPropagation(),r())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[r]);let R=(0,u.registrationFormView)(d,n,v.state),I=async e=>{if(e.preventDefault(),R.submitDisabled||y)return;if((0,u.hasRegistrationErrors)(R)){b(!0),g("Fix the highlighted fields.");return}g(""),j(!0);let t=await fetch("/api/bots",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((0,u.registrationCreateBody)(l,d))}).finally(()=>j(!1));if(!t.ok){let e=await t.json().catch(()=>null);g("string"==typeof e?.error&&e.error?e.error:"Failed to create agent");return}i()};return(0,t.jsx)("div",{className:"modal-scrim new-agent-scrim",onKeyDown:e=>{if("Tab"!==e.key||!C.current)return;let t=N(Array.from(C.current.querySelectorAll(k)),document.activeElement,e.shiftKey);t&&(e.preventDefault(),t.focus())},children:(0,t.jsxs)("div",{ref:C,className:"form-card new-agent-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"new-agent-title",style:w??void 0,children:[(0,t.jsx)("div",{className:"kind-row",children:(0,t.jsx)("h2",{id:"new-agent-title",className:"kind-word new-agent-title",children:"New Agent"})}),(0,t.jsxs)("form",{onSubmit:I,className:"bot-form",children:[(0,t.jsxs)("div",{className:"new-agent-body",children:[(0,t.jsx)("label",{htmlFor:"bot-name",children:"Name"}),(0,t.jsx)("input",{ref:_,id:"bot-name",type:"text",value:l,onChange:e=>o(e.target.value),required:!0}),(0,t.jsx)(m.RegistrationFields,{idPrefix:"bot",variant:"modal",form:d,onChange:e=>{g(""),"agent_deck"===e.launchProfile&&"agent_deck"!==d.launchProfile&&a(),h(t=>({...t,...e}))},view:R,showErrors:x,connections:v.state,onRetryConnections:v.retry,onAddConnection:v.add,deckState:n,onRetryDecks:a,workdirPlaceholder:"",workdirHint:c.NEW_BOT_WORKDIR_HINT}),p?(0,t.jsx)("p",{className:"form-error",role:"alert",children:p}):null]}),(0,t.jsxs)("div",{className:"form-actions",children:[(0,t.jsx)("button",{type:"button",className:"cancel-btn",onClick:r,children:"Cancel"}),(0,t.jsx)("button",{type:"submit",className:"create-btn",disabled:R.submitDisabled||y,children:y?"Creating…":"Create"})]})]})]})})}e.s(["default",0,function(){var e;let[u,m]=(0,s.useState)([]),[f,y]=(0,s.useState)(!1),[j,w]=(0,s.useState)(null),N=(0,s.useRef)(!1),k=(0,s.useRef)(null),[S,C]=(0,s.useState)([]),[_,R]=(0,s.useState)([]),[I,E]=(0,s.useState)([]),$=(0,s.useRef)(null),[D,P]=(0,s.useState)(null),T=(0,s.useRef)(null),[O,M]=(0,s.useState)(""),[F,H]=(0,s.useState)(""),[et,es]=(0,s.useState)(!1),[en,ea]=(0,s.useState)([]),[er,ei]=(0,s.useState)(""),el=(0,s.useRef)(null),eo=(0,s.useRef)(null),[ed,ec]=(0,s.useState)(!1),eu=(0,s.useRef)(null),[eh,em]=(0,s.useState)(!1),[ep,ef]=(0,s.useState)(!1),[eg,ex]=(0,s.useState)(null),[eb,ey]=(0,s.useState)(""),[ej,ev]=(0,s.useState)({}),ew=(0,s.useRef)({}),[eN,ek]=(0,s.useState)(null),[eS,eC]=(0,s.useState)(null),e_=(0,s.useRef)(null),eR=(0,s.useRef)(null),[eI,eE]=(0,s.useState)(!1),e$=(0,s.useRef)(null),[eA,eD]=(0,s.useState)(!1),eP=(0,s.useRef)(null),[eT,eO]=(0,s.useState)(""),[eL,eM]=(0,s.useState)(!1),eF=(0,s.useRef)(null),eU=(0,s.useRef)(null),eq=(0,s.useRef)(null),ez=(0,s.useRef)(null),eH=(0,s.useRef)(null),eB=(0,s.useRef)(null),eW=(0,s.useRef)(null),[eJ,eK]=(0,s.useState)([]),[eG,eV]=(0,s.useState)({serverNow:0,fetchedAt:0}),[eQ,eX]=(0,s.useState)(()=>Date.now()),eY=(0,s.useRef)({}),eZ=(0,s.useRef)(!1),[e0,e1]=(0,s.useState)(!1),[e6,e4]=(0,s.useState)(!1),e3=e6||u.some(e=>"agent_deck"===e.launch_profile),{state:e2,retry:e8}=(0,p.useDeckList)(e3);(0,s.useEffect)(()=>{eZ.current||0===u.length||(eZ.current=!0,e1(!0))},[u.length]),(0,s.useEffect)(()=>{let e=(0,g.importedBotId)(window.location.search);if(e)return void window.location.replace((0,g.importedConfigPath)(e));let t=new URLSearchParams(window.location.search),s=Number(t.get("deleted"));s>0&&window.history.replaceState(null,"","/");let n=t.get("agent");n&&(k.current=n,$.current=t.get("exchange"),window.history.replaceState(null,"","/")),te().then(()=>{s>0&&eO((0,b.deletedStatusLine)(s))});let a=setInterval(te,2e3),r=setInterval(()=>eX(Date.now()),1e3);return()=>{clearInterval(a),clearInterval(r)}},[]),(0,s.useEffect)(()=>{if(N.current||0===u.length||j)return;let e=u.find(e=>e.id===k.current)||[...u].filter(e=>!e.hidden).sort((e,t)=>K(e)-K(t))[0]||u[0];N.current=!0,tr(e.id)},[u,j]),(0,s.useEffect)(()=>{if(T.current=j?.id??null,j)return tt(),eW.current&&clearInterval(eW.current),eW.current=setInterval(tt,2e3),()=>{eW.current&&clearInterval(eW.current)}},[j]);let e5=j?u.find(e=>e.id===j.details.id)??j.details:void 0,e7=!!j&&J(e5),e9=e7?function(e){for(let t=e.length-1;t>=0;t--){let s=r(e[t].content);if(s){if("stopped"===s.state)return null;return s.page||s.html||null}}return null}(S):null;async function te(){let e=await fetch("/api/bots",{cache:"no-store"}),t=await e.json(),s=Date.parse(e.headers.get("date")||"");eV({serverNow:Number.isNaN(s)?Date.now():s,fetchedAt:Date.now()}),Array.isArray(t)&&(m(t),y(!0))}async function tt(){if(!j)return;let e=j.id,t=null,s=!1,n=fetch(`/api/conversations/${e}`).then(async e=>{let t=await e.json();return e.ok&&Array.isArray(t?.events)?t.events:null}).catch(()=>null),a=fetch(`/api/exchanges?conversation=${encodeURIComponent(e)}`,{cache:"no-store"}).then(async e=>{let t=await e.json();return e.ok&&Array.isArray(t?.exchanges)?t.exchanges:null}).catch(()=>null);try{let n=await fetch(`/api/conversations/${e}/messages`);t=await n.json(),s=n.ok&&Array.isArray(t)}catch{s=!1}let r=await n,i=await a;if(T.current===e){let n,a;s&&C(t),r&&R((n=[],a=new Map,r.forEach((e,t)=>{let s="string"==typeof e.data.target_name?e.data.target_name:null;e.requestId&&s&&a.set(e.requestId,s);let i=function(e){switch(e.kind){case"wake_blocked":return"blocked";case"wake_rejected":return"rejected";case"lineage_stopped":return"stopped";case"wake_accepted":return"string"==typeof e.data.reason?"allowed":null;case"request_cancelled":return"grant_denied"===e.data.reason?"denied":null;case"request_queued":return"capacity"===e.data.waiting_for?"waiting":null;default:return null}}(e);if(!i)return;let l=Array.isArray(e.data.actions)?e.data.actions:[],o=null!==e.requestId&&r.slice(t+1).some(t=>t.requestId===e.requestId);if("waiting"===i&&o)return;let d=e.requestId?a.get(e.requestId):void 0,c="denied"===i&&d?`Wake denied: ${d} — no work ran`:"waiting"===i&&d?`Queued: ${d} — waiting for capacity`:e.text;n.push({eventId:e.eventId,wakeId:e.wakeId,tone:i,text:c,actionable:"blocked"===i&&!!e.wakeId&&l.includes("allow")&&l.includes("deny")&&!o,createdAt:e.createdAt})}),n)),i&&E(i),P({conversationId:e,status:s?"ready":"error"})}}(0,s.useLayoutEffect)(()=>{let e=eq.current?.parentElement;if(!e)return;let t=ez.current,s=eH.current,n=eB.current;if(e7&&t&&s&&n){let a=a=>{let r=Math.ceil(t.getBoundingClientRect().height);s.style.height=r+16+a+"px";let i=s.getBoundingClientRect().top-e.getBoundingClientRect().top;n.style.height=Math.max(0,e.clientHeight-i)+"px";let l=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTop=Math.max(0,l-i)};a(0);let r=s.nextElementSibling,i=t.getBoundingClientRect().bottom,l=r?r.getBoundingClientRect().top:s.getBoundingClientRect().bottom;i>=l&&a(Math.max(16,Math.ceil(i-l)));return}n&&(n.style.height="0px"),s&&(s.style.height=""),e.scrollTop=e.scrollHeight},[S,e7]),(0,s.useEffect)(()=>{let e=$.current;if(!e)return;let t=document.getElementById(`exchange-${e}`);t&&($.current=null,t.scrollIntoView({block:"center"}),t.focus({preventScroll:!0}))},[I]),(0,s.useLayoutEffect)(()=>{eK(e=>{if(0===e.length)return e;let t=e.filter(e=>{let t=eY.current[e]??0;return S.some(s=>"bot"===s.sender_type&&s.sender_id===e&&s.created_at>t&&!/^\[(mcp|tool call|tool result)\]/i.test(s.content.trim()))});if(0===t.length)return e;for(let e of t)delete eY.current[e];return e.filter(e=>!t.includes(e))})},[S]);let ts=async e=>{j&&(await fetch(`/api/conversations/${j.id}/messages/${e}/stop`,{method:"POST"}),await tt())},tn=async()=>{j&&(await fetch(`/api/conversations/${j.id}/stop`,{method:"POST"}),await tt())},ta=async(e,t)=>{if(ej[e.id])return void ev(t=>{let s={...t};return delete s[e.id],s});if(ew.current[e.id])return;let s=S.findIndex(t=>t.id===e.id),n=u.find(e=>e.name===t),a=S.slice(s+1).find(e=>"bot"===e.sender_type&&(n?e.sender_id===n.id:e.sender_name===t));if(a){ew.current[e.id]=!0;try{let t=await fetch(`/api/messages/${e.id}/between?other=${encodeURIComponent(a.id)}`),s=await t.json().catch(()=>null);t.ok&&Array.isArray(s)&&s.length>0&&ev(t=>({...t,[e.id]:s}))}finally{delete ew.current[e.id]}}};async function tr(e){let t=u.find(t=>t.id===e);if(!t)return;let s=await fetch(`/api/conversations?botId=${e}`),n=await s.json();em(!1),ef(!1),n.id!==j?.id&&(C([]),R([]),E([])),T.current=n.id,w({id:n.id,details:t})}let ti=async()=>{if(!j)return;let e=eF.current?.files?.[0];if(!e)return;let t=await new Promise((t,s)=>{let n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>s(n.error),n.readAsDataURL(e)});if(!t.startsWith("data:image/"))return;let s=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:j.details.id,avatar:t})});if(!s.ok)return;let n=await s.json();m(e=>e.map(e=>e.id===n.id?{...e,avatar:n.avatar}:e)),w({...j,details:{...j.details,avatar:n.avatar}})},tl=async e=>{if(!e||!j)return;let t=await new Promise((t,s)=>{let n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>s(n.error),n.readAsDataURL(e)});if(!t.startsWith("data:image/"))return;let s=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:j.details.id,avatar:t})});if(!s.ok)return;let n=await s.json();m(e=>e.map(e=>e.id===n.id?{...e,avatar:n.avatar}:e)),w({...j,details:{...j.details,avatar:n.avatar}})},to=async()=>{if(!j)return;let e=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:j.details.id,avatar:null})});if(!e.ok)return;let t=await e.json();m(e=>e.map(e=>e.id===t.id?{...e,avatar:t.avatar||""}:e)),w({...j,details:{...j.details,avatar:t.avatar||""}})},td=f&&0===u.length,tc=[...u].filter(e=>!e.hidden).sort((e,t)=>K(e)-K(t)),tu=u.filter(e=>e.hidden),th=async e=>{let t=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e.id,pinned:+!e.pinned})});if(!t.ok)return;let s=await t.json();m(e=>e.map(e=>e.id===s.id?{...e,...s}:e))},tm=async(e,t)=>{let s=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e.id,hidden:+!!t})});if(!s.ok)return;let n=await s.json();m(e=>e.map(e=>e.id===n.id?{...e,...n,hidden:+!!n.hidden}:e)),t?requestAnimationFrame(()=>eR.current?.focus()):tx(e.id)},tp=async e=>{(await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e.id,unread:1})})).ok&&m(t=>t.map(t=>t.id===e.id?{...t,unread:1}:t))};(0,s.useEffect)(()=>{if(!eS)return;let e=e=>{"Escape"===e.key&&(eC(null),eS.returnTo?.focus())},t=e=>{e_.current&&e_.current.contains(e.target)||eC(null)};return document.addEventListener("keydown",e),document.addEventListener("pointerdown",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("pointerdown",t)}},[eS]);let tf=async e=>{let t=eb.trim();if(ex(null),!t||t===e.name)return;let s=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e.id,name:t})});if(!s.ok)return;let n=await s.json();m(e=>e.map(e=>e.id===n.id?{...e,...n}:e)),j&&j.details.id===n.id&&w({...j,details:{...j.details,...n}})},tg=async e=>{let t=e.map(e=>e.id);ek(null),eE(!1),eO((0,b.deletedStatusLine)(t.length)),requestAnimationFrame(()=>e$.current?.focus()),m(e=>e.filter(e=>!t.includes(e.id))),j&&t.includes(j.details.id)&&(w(null),C([]),R([])),await te()},tx=(e,t=30)=>{requestAnimationFrame(()=>{let s=document.querySelector(`[data-open-bot="${e}"]`);s?s.focus():t>0&&tx(e,t-1)})},tb=(e=!0)=>{let t=eS?.returnTo;eC(null),e&&t&&requestAnimationFrame(()=>{t.isConnected&&t.focus()})},ty=(e,t)=>{e.preventDefault(),eC({bot:t,x:e.clientX,y:e.clientY,returnTo:e.currentTarget.querySelector("[data-open-bot]")})},tj=(e,s)=>(0,t.jsx)("input",{className:"bot-name","aria-label":`Rename ${e.name}`,value:eb,autoFocus:!0,onChange:e=>ey(e.target.value),onBlur:()=>tf(e),onKeyDown:t=>{"Enter"===t.key&&(t.preventDefault(),t.target.blur(),tx(e.id)),"Escape"===t.key&&(ex(null),tx(e.id))},style:s}),tv=(e,s)=>(0,t.jsx)("button",{type:"button",className:"bot-name row-open","data-open-bot":e.id,"aria-current":j?.details.id===e.id?"true":void 0,onClick:()=>tr(e.id),style:s,children:e.name}),tw=e=>(0,t.jsx)("button",{type:"button",className:"row-actions","aria-haspopup":"menu","aria-expanded":eS?.bot.id===e.id,"aria-label":`Actions for ${e.name}`,title:`Actions for ${e.name}`,onClick:t=>{var s;let n;eC({bot:e,x:(n=(s=t.currentTarget).getBoundingClientRect()).left,y:n.bottom+4,returnTo:s})},children:"⋯"}),tN=e=>(0,t.jsxs)("div",{className:"row-tip",children:[e.unread&&j?.details.id!==e.id?(0,t.jsx)("div",{className:"card-role",children:"Unread"}):null,(0,t.jsx)("div",{className:"card-role",children:G(e.last_seen,eG.serverNow,eG.fetchedAt,eQ)})]}),tk=e=>(0,t.jsxs)("div",{className:j?.details.id===e.id?"bot-row is-open":"bot-row",onContextMenu:t=>ty(t,e),children:[(0,t.jsxs)("span",{className:"mark-avatar mark-avatar-sm",children:[(0,t.jsx)(l.default,{bot:e,size:36,title:`${e.name} avatar`}),eJ.includes(e.id)?(0,t.jsx)("span",{className:"mark-dot"}):null]}),(0,t.jsxs)("div",{className:"bot-copy",children:[eg===e.id?tj(e):tv(e),z(e.latest)?(0,t.jsx)("div",{className:"bot-preview",children:z(e.latest)}):null,(0,t.jsx)(h.RosterRuntimeLine,{bot:e,state:e2})]}),tw(e),tN(e)]},e.id),tS=et?u.filter(e=>e.name.toLowerCase().includes(F.toLowerCase())):[],tC=e=>{let t=el.current,s=t?t.selectionStart:O.length,n=O.slice(0,s).lastIndexOf("@");if(n<0)return;M(O.slice(0,n)+"@"+e+" "+O.slice(s)),es(!1);let a=n+e.length+2;requestAnimationFrame(()=>{t?.focus(),t?.setSelectionRange(a,a)})},t_=e=>{if(0===e.length)return;let t=6-en.length;e.length>t?ei("Up to six attachments."):ei("");let s=e.slice(0,Math.max(t,0));0!==s.length&&ea(e=>[...e,...s.map((t,s)=>({id:t.name+"-"+e.length+"-"+s+"-"+t.size,name:t.name}))])},tR=async()=>{let e=en.map(e=>e.name),t=O.trim();if(!t&&0===e.length||!j)return;let s=[t,...e].filter(e=>e.length>0).join("\n"),n=[j.details.id],a=S.reduce((e,t)=>Math.max(e,t.created_at||0),0);for(let e of n)eY.current[e]=a;eK(e=>Array.from(new Set([...e,...n])));let r=[...u].sort((e,t)=>t.name.length-e.name.length).find(e=>(function(e,t){let s="@"+t,n=0;for(;n<e.length;){let t=e.indexOf(s,n);if(t<0)break;let a=e[t+s.length];if(!a||/[\s.,!?:;]/.test(a))return!0;n=t+s.length}return!1})(s,e.name));if(!(await fetch(`/api/conversations/${j.id}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:s,mentionedBotId:r?.id,idempotencyKey:crypto.randomUUID()})})).ok){for(let e of n)delete eY.current[e];eK(e=>e.filter(e=>!n.includes(e)))}M(""),ea([]),ei(""),es(!1),tt()},tI=j?(e=j.id,S.length>0?"messages":D&&D.conversationId===e&&"loading"!==D.status?"error"===D.status?"error":"empty":"loading"):"loading",tE=j?(0,t.jsx)(L,{view:tI,agentName:j.details.name}):null,t$=(j?.details.title||"").trim(),tA=j?.details.color,tD=new Set,tP=e=>(0,t.jsx)("div",{className:"msg-status",children:(0,t.jsx)(B,{notice:e,onDone:()=>{tt()}})},e.eventId),tT=new Set,tO=e=>(0,t.jsx)("div",{className:"msg-status",children:(0,t.jsx)(W.default,{summary:e,onChanged:()=>{tt()}})},`exchange-${e.id}`),tL=e=>{let t=I.filter(t=>!tT.has(t.id)&&t.created_at<e).sort((e,t)=>e.created_at-t.created_at||(e.id<t.id?-1:1));return t.forEach(e=>tT.add(e.id)),t.map(tO)},tM=()=>{ec(!1),requestAnimationFrame(()=>eu.current?.focus())};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"field",inert:ed,children:[(0,t.jsxs)("aside",{className:"rail",children:[(0,t.jsxs)("div",{className:"brand",children:[(0,t.jsx)("div",{className:e0?"logo-shape is-settling":"logo-shape",children:(0,t.jsx)(a.default,{src:"/brand/botmancers-logo-filled-256.png",alt:"",width:40,height:40})}),(0,t.jsx)("div",{className:"logo-word",children:"botmancers"})]}),(0,t.jsxs)("div",{className:"bar",children:[(0,t.jsx)("button",{ref:eu,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:()=>ec(!0),children:"New"}),td?null:(0,t.jsx)("button",{ref:e$,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:()=>{eO(""),eE(!0)},children:"Manage agents"}),(0,t.jsx)(n.default,{href:"/settings",className:"add-btn settings-link",children:"Settings"})]}),td?null:(0,t.jsx)("nav",{className:"rail-nav","aria-label":"Workspace",children:(0,t.jsx)(n.default,{href:"/exchanges",className:"add-btn rail-nav-link",children:"Exchanges"})}),(0,t.jsx)("p",{className:"roster-status",role:"status",children:eT}),td?null:(0,t.jsx)("div",{className:eS?"roster menu-open":"roster",children:tc.map(e=>J(e)?(0,t.jsxs)("div",{className:"card",onContextMenu:t=>ty(t,e),children:[(0,t.jsxs)("div",{className:"row-head",children:[(0,t.jsxs)("span",{className:"mark-avatar",children:[(0,t.jsx)(l.default,{bot:e,size:44,title:`${e.name} avatar`}),eJ.includes(e.id)?(0,t.jsx)("span",{className:"mark-dot"}):null]}),eg===e.id?tj(e,{color:"#D5D0C3",fontSize:26}):tv(e,{fontSize:26}),tw(e)]}),z(e.latest)?(0,t.jsx)("div",{className:"bot-preview",children:z(e.latest)}):null,(0,t.jsx)(h.RosterRuntimeLine,{bot:e,state:e2}),tN(e)]},e.id):tk(e))}),tu.length>0?(0,t.jsxs)("div",{className:eS?"roster menu-open":"roster",children:[(0,t.jsx)("button",{ref:eR,type:"button",className:"pin-word","aria-expanded":eL,onClick:()=>eM(e=>!e),children:"Hidden"}),eL?tu.map(tk):null]}):null]}),(0,t.jsx)("section",{className:"pane",children:j?(0,t.jsxs)("div",{className:"thread",children:[(0,t.jsxs)("div",{className:"thread-bar",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",className:"thread-name",style:tA?{color:tA}:void 0,onClick:()=>{em(!0),ef(!1)},children:j.details.name}),t$?(0,t.jsx)("div",{className:"thread-role",children:t$}):null,(0,t.jsx)("div",{className:"thread-role",children:eJ.includes(j.details.id)?"Working":"Not working"}),(0,t.jsx)("div",{className:"thread-role",children:G((e5??j.details).last_seen,eG.serverNow,eG.fetchedAt,eQ)}),eh?(0,t.jsx)("button",{type:"button",className:"avatar-pic",onClick:()=>ef(!0),"aria-label":"Picture",children:j.details.avatar?(0,t.jsx)("img",{src:j.details.avatar,alt:""}):(0,t.jsx)(l.default,{bot:j.details,size:46})}):null]}),(0,t.jsxs)("div",{style:{marginLeft:"auto",display:"flex",gap:16,alignItems:"flex-start"},children:[(0,t.jsx)(n.default,{href:`/bots/${j.details.id}/config`,className:"attach-word",style:{textDecoration:"none"},children:"Config"}),(0,t.jsx)("button",{ref:eP,type:"button",className:"attach-word","aria-haspopup":"dialog","aria-expanded":eA,onClick:()=>eD(!0),children:"Sessions"}),(0,t.jsx)("button",{type:"button",className:"attach-word",title:"Stop delegated turns in this thread",onClick:()=>{tn()},children:"Stop"})]})]}),ep?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"avatar-step avatar-desk",children:[(0,t.jsx)("span",{className:"kind-word",children:"Agent"}),(0,t.jsx)("button",{type:"button",className:"kind-word",children:"Generate"}),(0,t.jsxs)("label",{className:"kind-word",children:["Upload",(0,t.jsx)("input",{ref:eF,type:"file",accept:"image/*,.svg"})]}),(0,t.jsx)("button",{type:"button",className:"create-btn",onClick:ti,children:"Set avatar"})]}),(0,t.jsxs)("div",{className:"avatar-step avatar-phone",children:[(0,t.jsx)("button",{type:"button",className:"kind-word",onClick:()=>eU.current?.click(),children:"Gallery"}),(0,t.jsx)("button",{type:"button",className:"kind-word",children:"Generate"}),(0,t.jsx)("button",{type:"button",className:"kind-word",onClick:to,children:"Remove Photo"}),(0,t.jsx)("input",{ref:eU,type:"file",accept:"image/*,.svg",onChange:e=>{let t=e.target.files?.[0];e.target.value="",tl(t)}})]})]}):null,(0,t.jsxs)("div",{className:"messages-wrap",children:[(0,t.jsxs)("div",{className:"messages",children:[e7?null:tE,S.map(e=>{var n;let a,l,u=_.filter(t=>!tD.has(t.eventId)&&t.createdAt<e.created_at);u.forEach(e=>tD.add(e.eventId));let h=tL(e.created_at),m="user"===e.sender_type,p=m?null:U(Q(e.content));if(p)return(0,t.jsxs)(s.Fragment,{children:[u.map(tP),h,(0,t.jsx)("div",{className:"msg-status",children:(0,t.jsx)(q,{failure:p})})]},e.id);let f=(n=Q(e.content),a=[],{text:V(n.replace(/data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=\s]+/g,e=>(a.push(e.replace(/\s/g,"")),""))),images:a}),g=f.images.map(e=>(0,t.jsx)("img",{src:e,alt:"",style:{display:"block",width:64,height:64}},e.slice(0,48))),x=m?void 0:j.details.color,b=m?null:r(e.content),y=m||b?null:o(Q(e.content)),v=m||b?null:d(e.content),w=m||b?[]:function(e){let t=[];for(let s of e.split("\n")){let e=s.match(/^\s*\[file\]\s*(\S+)\s*$/i);e&&!t.includes(e[1])&&t.push(e[1])}return t}(e.content),N=m||b?null:(l=f.text.match(/^\s*\[Handing off to ([^\]]+)\]/))&&l[1].trim()||null,k=e.draftStatus??(y?"open":null),S=e.approvalStatus??(v?"pending":null);return(0,t.jsxs)(s.Fragment,{children:[u.map(tP),h,(0,t.jsxs)("div",{className:m?"msg-you":"msg-bot",ref:b&&"running"===b.state?ez:void 0,children:[(0,t.jsx)("div",{className:m?"msg-name msg-name-you":"msg-name",style:x?{color:x}:void 0,children:m?"You":e.sender_name||j.details.name}),b?(0,t.jsxs)("div",{className:"msg-body",children:[i(b),"running"===b.state?(0,t.jsxs)(t.Fragment,{children:[" ",(0,t.jsx)("button",{type:"button",className:"attach-word",style:{font:"inherit"},onClick:t=>{t.preventDefault(),t.stopPropagation(),ts(e.id)},children:"Stop"})]}):null]}):y&&k?(0,t.jsx)("div",{className:"msg-body",children:(0,t.jsx)(X,{message:e,conversationId:j.id,status:k,onDone:()=>{tt()}},e.id+k)}):(0,t.jsxs)("div",{className:"msg-body",onClick:N?()=>{ta(e,N)}:void 0,title:N?"Show the replies between this handoff and the reply":void 0,style:N?{cursor:"pointer"}:void 0,children:[function(e,s){let n=String(e??"").split("\n");if(!n.some(e=>null!==(0,c.deckEventDisplay)(e)))return e;let a=[];return n.forEach((e,n)=>{n>0&&a.push((0,t.jsx)("br",{},s+"-br-"+n));let r=(0,c.deckEventDisplay)(e);r?a.push((0,t.jsxs)("span",{className:"deck-event",children:[(0,t.jsx)("span",{className:"deck-event-label",children:r.label}),r.detail?" "+r.detail:""]},s+"-"+n)):a.push((0,t.jsx)("span",{children:e},s+"-"+n))}),a}(f.text,e.id),g,v&&S?(0,t.jsx)(Y,{message:e,conversationId:j.id,status:S,onDone:()=>{tt()}},e.id+S):null,(0,t.jsx)(Z,{names:w})]}),ej[e.id]?(0,t.jsx)("div",{className:"msg-body",children:ej[e.id].map(e=>(0,t.jsx)("div",{children:(e.sender_name||"Agent")+": "+V(e.content)},e.id))}):null]})]},e.id)}),_.filter(e=>!tD.has(e.eventId)).map(tP),tL(1/0),(0,t.jsx)("div",{ref:eB}),(0,t.jsx)("div",{ref:eq})]}),e7?(0,t.jsxs)("div",{className:"computer-float",children:[(0,t.jsxs)("div",{className:"computer-top",children:[(0,t.jsxs)("span",{className:"computer-lights","aria-hidden":"true",children:[(0,t.jsx)("span",{className:"computer-light computer-light-red"}),(0,t.jsx)("span",{className:"computer-light computer-light-yellow"}),(0,t.jsx)("span",{className:"computer-light computer-light-green"})]}),(0,t.jsxs)("span",{className:"computer-teach",children:[(0,t.jsxs)("span",{className:"computer-teach-pill",children:[(0,t.jsx)("span",{className:"computer-teach-mark","aria-hidden":"true"}),"Teach a task"]}),(0,t.jsx)("span",{className:"computer-expand","aria-hidden":"true",children:(0,t.jsx)("svg",{viewBox:"0 0 16 16",width:"14",height:"14",children:(0,t.jsx)("path",{d:"M9.2 2.6H13.4V6.8M6.8 13.4H2.6V9.2M13.1 2.9L9.4 6.6M2.9 13.1L6.6 9.4",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]}),(0,t.jsx)("div",{className:"messages"===tI?"computer-band":"computer-band computer-band-note",ref:eH,children:tE}),(0,t.jsxs)("div",{className:"computer-desk",children:[e9?(0,t.jsx)("iframe",{className:"computer-page",sandbox:"",srcDoc:e9,tabIndex:-1}):null,(0,t.jsxs)("div",{className:"computer-dock",children:[(0,t.jsx)("img",{src:"/computer/dock-chrome.png",alt:""}),(0,t.jsx)("img",{src:"/computer/dock-gray.png",alt:""}),(0,t.jsx)("img",{src:"/computer/dock-terminal.png",alt:""})]})]})]}):null]}),(0,t.jsxs)("div",{className:"composer",onPaste:e=>{let t=[],s=e.clipboardData.files;if(s&&s.length>0)t.push(...Array.from(s));else for(let s of Array.from(e.clipboardData.items)){if("file"!==s.kind)continue;let e=s.getAsFile();e&&t.push(e)}0!==t.length&&(e.preventDefault(),t_(t))},children:[et&&tS.length>0?(0,t.jsx)("div",{className:"mention-list",children:tS.map(e=>(0,t.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),tC(e.name)},children:["@",e.name]},e.id))}):null,(0,t.jsxs)("div",{className:"composer-box",children:[er?(0,t.jsx)("p",{className:"attach-error",children:er}):null,en.length>0?(0,t.jsx)("div",{className:"attach-names",children:en.map(e=>(0,t.jsx)("span",{children:e.name},e.id))}):null,(0,t.jsx)("textarea",{ref:el,rows:2,value:O,onChange:e=>{var t,s;let n,a;M(e.target.value),t=e.target.value,s=e.target.selectionStart,(a=(n=t.slice(0,s)).lastIndexOf("@"))<0||/\s/.test(n.slice(a+1))?es(!1):(H(n.slice(a+1)),es(!0))},onKeyDown:e=>{if("Enter"===e.key&&!e.shiftKey){if(e.preventDefault(),et&&tS.length>0)return void tC(tS[0].name);tR()}},placeholder:"Say something"})]}),(0,t.jsx)("input",{ref:eo,className:"attach-input",type:"file",multiple:!0,onChange:e=>{t_(Array.from(e.target.files||[])),e.target.value=""}}),(0,t.jsx)("button",{type:"button",className:"attach-word",onClick:()=>eo.current?.click(),children:"Attach"}),(0,t.jsx)("button",{type:"button",className:"send-btn",onClick:tR,children:"Send"})]})]}):td?(0,t.jsxs)("div",{className:"welcome",children:[(0,t.jsx)(a.default,{className:"welcome-mark",src:"/brand/botmancers-logo-outline-256.png",alt:"Botmancers",width:144,height:144,priority:!0}),(0,t.jsx)("p",{className:"empty-line",children:"Pick someone to talk to."})]}):(0,t.jsx)("p",{className:"empty-line",children:"Pick someone to talk to."})}),eN?(0,t.jsx)(x.default,{ids:[eN.id],onCancel:()=>{tx(eN.id),ek(null)},onDeleted:e=>{tg(e)}}):null,eA&&j?(0,t.jsx)(A,{agentId:j.details.id,agentName:j.details.name,agents:u.map(e=>({id:e.id,name:e.name})),origin:{conversationId:j.id,label:`${j.details.name} thread`},onExchangeStarted:()=>{tt()},onClose:()=>{eD(!1),requestAnimationFrame(()=>eP.current?.focus())},onOpenThread:e=>{eD(!1),tr(e).then(()=>requestAnimationFrame(()=>eP.current?.focus()))}},j.details.id):null,eI?(0,t.jsx)(v,{deckState:e2,onClose:()=>{eE(!1),requestAnimationFrame(()=>e$.current?.focus())},onDeleted:e=>{tg(e)}}):null,eS?(0,t.jsxs)("div",{ref:e_,className:"row-menu",role:"menu","aria-label":`Actions for ${eS.bot.name}`,style:{left:eS.x,top:eS.y},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),onKeyDown:e=>{let t=Array.from(e.currentTarget.querySelectorAll("[role=menuitem]")),s=t.indexOf(document.activeElement),n=s=>{e.preventDefault(),t[(s+t.length)%t.length]?.focus()};"ArrowDown"===e.key?n(s+1):"ArrowUp"===e.key?n(s-1):"Home"===e.key?n(0):"End"===e.key?n(t.length-1):"Tab"===e.key&&(e.preventDefault(),tb())},children:[(0,t.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,autoFocus:!0,onClick:e=>{e.stopPropagation(),tb(),th(eS.bot)},children:eS.bot.pinned?"Unpin":"Pin"}),(0,t.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:e=>{e.stopPropagation(),tb(),tp(eS.bot)},children:"Mark as Unread"}),(0,t.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:e=>{e.stopPropagation(),tb(!1),ex(eS.bot.id),ey(eS.bot.name)},children:"Rename Agent"}),(0,t.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:e=>{e.stopPropagation(),tb(!1),tm(eS.bot,!eS.bot.hidden)},children:eS.bot.hidden?"Unhide":"Hide from sidebar"}),(0,t.jsx)(n.default,{role:"menuitem",tabIndex:-1,href:`/bots/${eS.bot.id}/config`,onClick:()=>eC(null),children:"Config"}),(0,t.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:e=>{e.stopPropagation(),tb(!1),ek(eS.bot)},children:"Delete agent…"})]}):null]}),ed&&(0,t.jsx)(ee,{anchorRef:eu,deckState:e2,onRetryDecks:()=>{e4(!0),e8()},onClose:tM,onCreated:()=>{te(),tM()}})]})}],31713)},5500,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"Image",{enumerable:!0,get:function(){return v}});let n=e.r(55682),a=e.r(90809),r=e.r(43476),i=a._(e.r(71645)),l=n._(e.r(74080)),o=n._(e.r(25633)),d=e.r(8927),c=e.r(87690),u=e.r(18556),h=e.r(65856),m=n._(e.r(1948)),p=e.r(18581),f={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function g(e,t,s,n,a,r,i){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&a(!0),s?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,a=!1;s.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>a,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{a=!0,t.stopPropagation()}})}n?.current&&n.current(e)}}))}function x(e){return i.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b="u"<typeof window?i.useEffect:i.useLayoutEffect,y=(0,i.forwardRef)(({src:e,srcSet:t,sizes:s,height:n,width:a,decoding:l,className:o,style:d,fetchPriority:c,placeholder:u,loading:h,unoptimized:m,fill:f,onLoadRef:y,onLoadingCompleteRef:j,setBlurComplete:v,setShowAltText:w,sizesInput:N,onLoad:k,onError:S,...C},_)=>{let R=(0,i.useRef)(!1),I=(0,i.useRef)(null);b(()=>{let{current:e}=R,{current:t}=I;e||null===t||(S&&(t.src=t.src),t.complete&&g(t,u,y,j,v,m,N),R.current=!0)},[e,u,y,j,S,m,N]);let E=(0,p.useMergedRef)(_,I);return(0,r.jsx)("img",{...C,...x(c),loading:h,width:a,height:n,decoding:l,"data-nimg":f?"fill":"1",className:o,style:d,sizes:s,srcSet:t,src:e,ref:E,onLoad:e=>{g(e.currentTarget,u,y,j,v,m,N)},onError:e=>{w(!0),"empty"!==u&&v(!0),S&&S(e)}})});function j({isAppRouter:e,imgAttributes:t}){let s={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...x(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,s),null):(0,r.jsx)(o.default,{children:(0,r.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...s},"__nimg-"+t.src+t.srcSet+t.sizes)})}let v=(0,i.forwardRef)((e,t)=>{let s=(0,i.useContext)(h.RouterContext),n=(0,i.useContext)(u.ImageConfigContext),a=(0,i.useMemo)(()=>{let e=f||n||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),s=e.deviceSizes.sort((e,t)=>e-t),a=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:s,qualities:a,localPatterns:"u"<typeof window?n?.localPatterns:e.localPatterns}},[n]),{onLoad:l,onLoadingComplete:o}=e,p=(0,i.useRef)(l);(0,i.useEffect)(()=>{p.current=l},[l]);let g=(0,i.useRef)(o);(0,i.useEffect)(()=>{g.current=o},[o]);let[x,b]=(0,i.useState)(!1),[v,w]=(0,i.useState)(!1),{props:N,meta:k}=(0,d.getImgProps)(e,{defaultLoader:m.default,imgConf:a,blurComplete:x,showAltText:v});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(y,{...N,unoptimized:k.unoptimized,placeholder:k.placeholder,fill:k.fill,onLoadRef:p,onLoadingCompleteRef:g,setBlurComplete:b,setShowAltText:w,sizesInput:e.sizes,ref:t}),k.preload?(0,r.jsx)(j,{isAppRouter:!s,imgAttributes:N}):null]})});("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},94909,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0});var n={default:function(){return c},getImageProps:function(){return d}};for(var a in n)Object.defineProperty(s,a,{enumerable:!0,get:n[a]});let r=e.r(55682),i=e.r(8927),l=e.r(5500),o=r._(e.r(1948));function d(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,s]of Object.entries(t))void 0===s&&delete t[e];return{props:t}}let c=l.Image},57688,(e,t,s)=>{t.exports=e.r(94909)},25633,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0});var n={default:function(){return f},defaultHead:function(){return u}};for(var a in n)Object.defineProperty(s,a,{enumerable:!0,get:n[a]});let r=e.r(55682),i=e.r(90809),l=e.r(43476),o=i._(e.r(71645)),d=r._(e.r(98879)),c=e.r(42732);function u(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function h(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===o.default.Fragment?e.concat(o.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}let m=["name","httpEquiv","charSet","itemProp"];function p(e){let t,s,n,a;return e.reduce(h,[]).reverse().concat(u().reverse()).filter((t=new Set,s=new Set,n=new Set,a={},e=>{let r=!0,i=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){i=!0;let s=e.key.slice(e.key.indexOf("$")+1);t.has(s)?r=!1:t.add(s)}switch(e.type){case"title":case"base":s.has(e.type)?r=!1:s.add(e.type);break;case"meta":for(let t=0,s=m.length;t<s;t++){let s=m[t];if(e.props.hasOwnProperty(s))if("charSet"===s)n.has(s)?r=!1:n.add(s);else{let t=e.props[s],n=a[s]||new Set;("name"!==s||!i)&&n.has(t)?r=!1:(n.add(t),a[s]=n)}}}return r})).reverse().map((e,t)=>{let s=e.key||t;return o.default.cloneElement(e,{key:s})})}let f=function({children:e}){let t=(0,o.useContext)(c.HeadManagerContext);return(0,l.jsx)(d.default,{reduceComponentsToState:p,headManager:t,children:e})};("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},18556,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"ImageConfigContext",{enumerable:!0,get:function(){return r}});let n=e.r(55682)._(e.r(71645)),a=e.r(87690),r=n.default.createContext(a.imageConfigDefault)},65856,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"RouterContext",{enumerable:!0,get:function(){return n}});let n=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,s)=>{"use strict";function n(e,t){let s=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e,t.qualities[0]):s}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"findClosestQuality",{enumerable:!0,get:function(){return n}})},1948,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return i}});let n=e.r(70965),a=e.r(43369);function r({config:e,src:t,width:s,quality:i}){let l=(0,a.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//"))if(t.includes("/_next/static/immutable")&&!(0,a.getAssetToken)())l=void 0;else{let e=t.indexOf("?");if(-1!==e){let s=new URLSearchParams(t.slice(e+1)),n=s.get("dpl");if(n){l=n,s.delete("dpl");let a=s.toString();t=t.slice(0,e)+(a?"?"+a:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
2
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let o=(0,n.findClosestQuality)(i,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${s}&q=${o}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}r.__next_img_default=!0;let i=r},88143,(e,t,s)=>{"use strict";function n({widthInt:e,heightInt:t,blurWidth:s,blurHeight:a,blurDataURL:r,objectFit:i}){let l=s?40*s:e,o=a?40*a:t,d=l&&o?`viewBox='0 0 ${l} ${o}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${d}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${d?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${r}'/%3E%3C/svg%3E`}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImageBlurSvg",{enumerable:!0,get:function(){return n}})},87690,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});var n={VALID_LOADERS:function(){return r},imageConfigDefault:function(){return i}};for(var a in n)Object.defineProperty(s,a,{enumerable:!0,get:n[a]});let r=["default","imgix","cloudinary","akamai","custom"],i={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,s)=>{"use strict";e.i(47167),Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"getImgProps",{enumerable:!0,get:function(){return d}});let n=e.r(43369),a=e.r(88143),r=e.r(87690),i=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function o(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function d({src:e,sizes:t,unoptimized:s=!1,priority:c=!1,preload:u=!1,loading:h,className:m,quality:p,width:f,height:g,fill:x=!1,style:b,overrideSrc:y,onLoad:j,onLoadingComplete:v,placeholder:w="empty",blurDataURL:N,fetchPriority:k,decoding:S="async",layout:C,objectFit:_,objectPosition:R,lazyBoundary:I,lazyRoot:E,...$},A){var D;let P,T,O,{imgConf:L,showAltText:M,blurComplete:F,defaultLoader:U}=A,q=L||r.imageConfigDefault;if("allSizes"in q)P=q;else{let e=[...q.deviceSizes,...q.imageSizes].sort((e,t)=>e-t),t=q.deviceSizes.sort((e,t)=>e-t),s=q.qualities?.sort((e,t)=>e-t);P={...q,allSizes:e,deviceSizes:t,qualities:s}}if(void 0===U)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let z=$.loader||U;delete $.loader,delete $.srcSet;let H="__next_img_default"in z;if(H){if("custom"===P.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
3
- Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=z;z=t=>{let{config:s,...n}=t;return e(n)}}if(C){"fill"===C&&(x=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[C];e&&(b={...b,...e});let s={responsive:"100vw",fill:"100vw"}[C];s&&!t&&(t=s)}let B="",W=o(f),J=o(g);if((D=e)&&"object"==typeof D&&(l(D)||void 0!==D.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(T=t.blurWidth,O=t.blurHeight,N=N||t.blurDataURL,B=t.src,!x)if(W||J){if(W&&!J){let e=W/t.width;J=Math.round(t.height*e)}else if(!W&&J){let e=J/t.height;W=Math.round(t.width*e)}}else W=t.width,J=t.height}let K=!c&&!u&&("lazy"===h||void 0===h);(!(e="string"==typeof e?e:B)||e.startsWith("data:")||e.startsWith("blob:"))&&(s=!0,K=!1),P.unoptimized&&(s=!0),H&&!P.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(s=!0);let G=o(p),V=Object.assign(x?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:_,objectPosition:R}:{},M?{}:{color:"transparent"},b),Q=F||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:W,heightInt:J,blurWidth:T,blurHeight:O,blurDataURL:N||"",objectFit:V.objectFit})}")`:`url("${w}")`,X=i.includes(V.objectFit)?"fill"===V.objectFit?"100% 100%":"cover":V.objectFit,Y=Q?{backgroundSize:X,backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:s,width:a,quality:r,sizes:i,loader:l}){if(s){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,n.getDeploymentId)();if(t.includes("/_next/static/immutable")&&!(0,n.getAssetToken)())e=void 0;else if(e){let s=t.indexOf("?");if(-1!==s){let n=new URLSearchParams(t.slice(s+1));n.get("dpl")||(n.append("dpl",e),t=t.slice(0,s)+"?"+n.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:o,kind:d}=function({deviceSizes:e,allSizes:t},s,n){if(n){let s=/(^|\s)(1?\d?\d)vw/g,a=[];for(let e;e=s.exec(n);)a.push(parseInt(e[2]));if(a.length){let s=.01*Math.min(...a);return{widths:t.filter(t=>t>=e[0]*s),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof s?{widths:e,kind:"w"}:{widths:[...new Set([s,2*s].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,i),c=o.length-1;return{sizes:i||"w"!==d?i:"100vw",srcSet:o.map((s,n)=>`${l({config:e,src:t,quality:r,width:s})} ${"w"===d?s:n+1}${d}`).join(", "),src:l({config:e,src:t,quality:r,width:o[c]})}}({config:P,src:e,unoptimized:s,width:W,quality:G,sizes:t,loader:z}),ee=K?"lazy":h;return{props:{...$,loading:ee,fetchPriority:k,width:W,height:J,decoding:S,className:m,style:{...V,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:y||Z.src},meta:{unoptimized:s,preload:u||c,placeholder:w,fill:x}}}},98879,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return l}});let n=e.r(71645),a="u"<typeof window,r=a?()=>{}:n.useLayoutEffect,i=a?()=>{}:n.useEffect;function l(e){let{headManager:t,reduceComponentsToState:s}=e;function l(){if(t&&t.mountedInstances){let e=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(s(e))}}return a&&(t?.mountedInstances?.add(e.children),l()),r(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),r(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),i(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,32545,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(22016),a=e.i(10331),n=e.i(4335),l=e.i(74904);async function c(e){try{let t=await e.json();if(t.error)return t.error}catch{}return"request failed"}e.s(["default",0,function(){let{state:e,retry:i}=(0,n.useDeckList)(),[o,d]=(0,s.useState)(null),[u,f]=(0,s.useState)(""),[m,h]=(0,s.useState)(!1),[x,g]=(0,s.useState)(0),[v,j]=(0,s.useState)("clean"),[N,p]=(0,s.useState)(""),[b,k]=(0,s.useState)(0);(0,s.useEffect)(()=>{let e=!1;return fetch(l.SETTINGS_ENDPOINT,{cache:"no-store"}).then(async t=>{if(!t.ok)throw Error(await c(t));let s=await t.json();if(e)return;let r="string"==typeof s.server_url?s.server_url:"";d(r),f(r),h(!1)}).catch(()=>{e||h(!0)}),()=>{e=!0}},[x]);let w=null!==o&&u!==o;async function y(){j("saving"),p("");try{let e=await fetch(l.SETTINGS_ENDPOINT,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({server_url:u})});if(!e.ok)throw Error(await c(e));let t=await e.json();d(t.server_url),f(t.server_url),j("confirmed"),k(Date.now()),setTimeout(()=>{j(e=>"confirmed"===e?"clean":e)},5e3),i()}catch(e){j("error"),p(e instanceof Error?e.message:"request failed")}}(0,s.useEffect)(()=>{if(!w)return;let e=e=>{e.preventDefault()};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[w]);let S="saving"===v?(0,t.jsx)("span",{className:"text-sm cfg-faint",children:"Saving…"}):w||"error"===v?(0,t.jsxs)("span",{className:"text-sm cfg-dirty",children:[(0,t.jsx)("span",{className:"inline-block w-2 h-2 rounded-full cfg-dot-amber mr-1"}),"Unsaved changes"]}):"confirmed"===v?(0,t.jsxs)("span",{className:"text-sm cfg-faint",children:["Saved ",(0,l.formatClock)(b)]}):(0,t.jsx)("span",{className:"text-sm cfg-faint",children:"Saved"});return(0,t.jsx)("div",{className:"cfg-page",children:(0,t.jsxs)("div",{className:"max-w-3xl mx-auto",children:[(0,t.jsx)(r.default,{href:"/",onClick:function(e){w&&!window.confirm("You have unsaved changes. Leave without saving?")&&e.preventDefault()},className:"cfg-link cfg-back text-sm",children:"← Back to chat"}),(0,t.jsxs)("header",{className:"mt-3 mb-6",children:[(0,t.jsx)("h1",{className:"text-xl font-bold",children:"Settings"}),(0,t.jsx)("p",{className:"text-sm cfg-faint",children:"Workspace settings for every agent in this Botmancers."})]}),(0,t.jsxs)("section",{className:"cfg-card",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("h2",{className:"cfg-title",children:"Agent Deck server"}),null!==o?S:null]}),m&&null===o?(0,t.jsxs)("p",{className:"text-sm cfg-muted",children:["Couldn't load this section."," ",(0,t.jsx)("button",{onClick:()=>g(e=>e+1),className:"cfg-link",children:"Retry"})]}):null===o?(0,t.jsx)("div",{className:"h-10 rounded-lg animate-pulse cfg-skel"}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("label",{className:"block text-sm cfg-muted mb-1",htmlFor:"settings-server-url",children:"Server URL"}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2",children:[(0,t.jsx)("input",{id:"settings-server-url",type:"url",value:u,onChange:e=>{f(e.target.value),"error"===v&&j("clean")},onKeyDown:e=>{"Enter"===e.key&&w&&(e.preventDefault(),y())},placeholder:"http://127.0.0.1:1111",className:"cfg-input text-sm sm:flex-1"}),(0,t.jsx)("button",{onClick:()=>{y()},disabled:!w||"saving"===v,className:"cfg-btn-primary text-sm",children:"saving"===v?"Saving…":"Save"}),w?(0,t.jsx)("button",{onClick:function(){f(o??""),j("clean"),p("")},disabled:"saving"===v,className:"cfg-btn-ghost text-sm",children:"Discard"}):null]}),"error"===v&&(0,t.jsxs)("p",{className:"mt-2 text-sm cfg-error",children:["Couldn't save: ",N," ",(0,t.jsx)("button",{onClick:()=>{y()},className:"underline hover:no-underline",children:"Retry"})]}),(0,t.jsx)("p",{className:"mt-2 text-xs cfg-faint",children:"The only Agent Deck server for this workspace. Bots pick their deck from this server."})]}),(0,t.jsx)("div",{className:"mt-4 pt-4 border-t cfg-line",children:(0,t.jsx)(a.SettingsStatus,{state:e,onRetry:i})})]})]})})}])}]);