botmancers 0.9.3 → 0.10.1

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 (204) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +5 -5
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/app-path-routes-manifest.json +1 -0
  5. package/app/.next/build-manifest.json +3 -3
  6. package/app/.next/prerender-manifest.json +3 -3
  7. package/app/.next/required-server-files.json +2 -2
  8. package/app/.next/routes-manifest.json +6 -0
  9. package/app/.next/server/app/_global-error.html +1 -1
  10. package/app/.next/server/app/_global-error.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/_not-found.html +1 -1
  17. package/app/.next/server/app/_not-found.rsc +2 -2
  18. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/app/.next/server/app/agents/[id]/activity/page.js.nft.json +1 -1
  22. package/app/.next/server/app/agents/[id]/activity/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/agents/[id]/config/page.js.nft.json +1 -1
  24. package/app/.next/server/app/agents/[id]/config/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/agents/[id]/conversations/[conversationId]/page.js.nft.json +1 -1
  26. package/app/.next/server/app/agents/[id]/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/agents/[id]/conversations/page.js.nft.json +1 -1
  28. package/app/.next/server/app/agents/[id]/conversations/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/agents/[id]/sessions/page.js.nft.json +1 -1
  32. package/app/.next/server/app/agents/[id]/sessions/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/agents/[id]/slack/page.js.nft.json +1 -1
  34. package/app/.next/server/app/agents/[id]/slack/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/api/bots/[id]/activity/route.js.nft.json +1 -1
  36. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  37. package/app/.next/server/app/api/bots/[id]/conversations/[conversationId]/route.js.nft.json +1 -1
  38. package/app/.next/server/app/api/bots/[id]/conversations/route.js.nft.json +1 -1
  39. package/app/.next/server/app/api/bots/[id]/overview/route.js.nft.json +1 -1
  40. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js.nft.json +1 -1
  41. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -1
  42. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js.nft.json +1 -1
  43. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -1
  44. package/app/.next/server/app/api/bots/[id]/sessions/sync/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/bots/[id]/share-policy/route.js.nft.json +1 -1
  46. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  48. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  50. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  52. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  54. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/runtime-capacity/route/app-paths-manifest.json +3 -0
  70. package/app/.next/server/app/api/runtime-capacity/route/build-manifest.json +12 -0
  71. package/app/.next/server/app/api/runtime-capacity/route/server-reference-manifest.json +4 -0
  72. package/app/.next/server/app/api/runtime-capacity/route.js +10 -0
  73. package/app/.next/server/app/api/runtime-capacity/route.js.nft.json +1 -0
  74. package/app/.next/server/app/api/runtime-capacity/route_client-reference-manifest.js +3 -0
  75. package/app/.next/server/app/api/runtime-connections/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -1
  77. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/shares/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -1
  84. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -1
  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.nft.json +1 -1
  87. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  101. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/v0/shares/current/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/v0/shares/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  107. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  108. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/exchanges/page.js.nft.json +1 -1
  110. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/exchanges.html +1 -1
  112. package/app/.next/server/app/exchanges.rsc +3 -3
  113. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +3 -3
  114. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +2 -2
  115. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +3 -3
  116. package/app/.next/server/app/index.html +1 -1
  117. package/app/.next/server/app/index.rsc +3 -3
  118. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  119. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  120. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  121. package/app/.next/server/app/page.js.nft.json +1 -1
  122. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  124. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/settings.html +1 -1
  126. package/app/.next/server/app/settings.rsc +3 -3
  127. package/app/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  128. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  129. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  130. package/app/.next/server/app/threads/[id]/route.js.nft.json +1 -1
  131. package/app/.next/server/app-paths-manifest.json +1 -0
  132. package/app/.next/server/chunks/[externals]__06_ygwr._.js +3 -0
  133. package/app/.next/server/chunks/{[externals]__1eaoma8._.js → [externals]__0z3qnkl._.js} +2 -2
  134. package/app/.next/server/chunks/[root-of-the-server]__0aincj4._.js +1 -1
  135. package/app/.next/server/chunks/[root-of-the-server]__0anfwiu._.js +1 -1
  136. package/app/.next/server/chunks/[root-of-the-server]__0fku-bw._.js +1 -1
  137. package/app/.next/server/chunks/[root-of-the-server]__1280ke1._.js +1 -1
  138. package/app/.next/server/chunks/[root-of-the-server]__13wghn3._.js +4 -4
  139. package/app/.next/server/chunks/[root-of-the-server]__1jxwu9_._.js +2 -2
  140. package/app/.next/server/chunks/{[root-of-the-server]__00ntari._.js → [root-of-the-server]__1nf6z4s._.js} +10 -10
  141. package/app/.next/server/chunks/[root-of-the-server]__1qbadul._.js +5 -0
  142. package/app/.next/server/chunks/_0061c2q._.js +1 -1
  143. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  144. package/app/.next/server/chunks/_1a0er16._.js +3 -3
  145. package/app/.next/server/chunks/_1uxmsh3._.js +3 -3
  146. package/app/.next/server/chunks/_next-internal_server_app_api_runtime-capacity_route_actions_1dzvg7f.js +3 -0
  147. package/app/.next/server/chunks/lib_service-api_ts_18eok4w._.js +3 -3
  148. package/app/.next/server/chunks/ssr/_00qrupp._.js +3 -0
  149. package/app/.next/server/chunks/ssr/_01ngpwj._.js +1 -1
  150. package/app/.next/server/chunks/ssr/_0d7gv3q._.js +3 -0
  151. package/app/.next/server/chunks/ssr/_0iywd5g._.js +1 -1
  152. package/app/.next/server/chunks/ssr/_0mxifu3._.js +1 -1
  153. package/app/.next/server/chunks/ssr/_0u7urta._.js +1 -1
  154. package/app/.next/server/chunks/ssr/app_agents_[id]_0sr4fdg._.js +1 -1
  155. package/app/.next/server/chunks/ssr/app_agents_[id]_activity_AgentActivityPage_tsx_042-590._.js +1 -1
  156. package/app/.next/server/chunks/ssr/app_agents_[id]_config_page_tsx_1f_gu1l._.js +1 -1
  157. package/app/.next/server/chunks/ssr/app_agents_[id]_sessions_page_tsx_0tfup-2._.js +3 -3
  158. package/app/.next/server/chunks/ssr/app_agents_[id]_slack_AgentSlackPage_tsx_20njhs1._.js +1 -1
  159. package/app/.next/server/chunks/ssr/app_page_tsx_0pxmutw._.js +1 -1
  160. package/app/.next/server/chunks/ssr/lib_0pfn9gs._.js +1 -1
  161. package/app/.next/server/chunks/ssr/lib_agent-registration-ui_ts_1z582mm._.js +1 -1
  162. package/app/.next/server/chunks/ssr/lib_exchange-view_ts_1a4q9ju._.js +1 -1
  163. package/app/.next/server/chunks/ssr/lib_share-view_ts_08psw5o._.js +1 -1
  164. package/app/.next/server/middleware-build-manifest.js +3 -3
  165. package/app/.next/server/middleware.js +2 -2
  166. package/app/.next/server/pages/404.html +1 -1
  167. package/app/.next/server/pages/500.html +1 -1
  168. package/app/.next/server/server-reference-manifest.js +1 -1
  169. package/app/.next/server/server-reference-manifest.json +1 -1
  170. package/app/.next/static/chunks/{2dtkykrnob8wk.js → 00pca1oa16xc5.js} +1 -1
  171. package/app/.next/static/chunks/{3x56k5qa012au.js → 0apccyvpyjlo7.js} +1 -1
  172. package/app/.next/static/chunks/{04nfr73lkk7pz.js → 0l9r-x310007w.js} +1 -1
  173. package/app/.next/static/chunks/{0eqgs3167zj2j.js → 0xo3nwo_nscvf.js} +1 -1
  174. package/app/.next/static/chunks/{326jto9l-m8vj.js → 0z_bq7h1mwcf3.js} +4 -4
  175. package/app/.next/static/chunks/18btj4qlun8o7.js +1 -0
  176. package/app/.next/static/chunks/{2cc4uzbhs_v23.js → 1k8e6j67zksws.js} +1 -1
  177. package/app/.next/static/chunks/1y9hc8qm0hqds.js +1 -0
  178. package/app/.next/static/chunks/{2ebpfmg4vni8e.js → 2wbcr5n_vcynr.js} +1 -1
  179. package/app/.next/static/chunks/3_lwv2zgy_-bw.css +3 -0
  180. package/app/.next/static/chunks/3a_ffnuma49te.js +1 -0
  181. package/app/.next/static/chunks/{3whw2-l4a2sli.js → 3fm68xa8a4-es.js} +1 -1
  182. package/app/.next/static/chunks/{0cjh4u-f7mlwd.js → 3gw1ytgjq4pxu.js} +1 -1
  183. package/app/.next/static/chunks/3wlqn3gd_jv_r.js +1 -0
  184. package/app/.next/static/chunks/3xjoca0z2onuc.js +1 -0
  185. package/app/BUILD_INFO.json +2 -2
  186. package/app/package.json +1 -1
  187. package/app/public/brand/harness/claude.svg +3 -0
  188. package/app/public/brand/harness/codex.png +0 -0
  189. package/app/public/brand/harness/cursor.svg +3 -0
  190. package/app/public/brand/harness/muse.svg +33 -0
  191. package/app/server.js +1 -1
  192. package/package.json +1 -1
  193. package/schemas/botmancers.mcp.v2.tools.json +46 -46
  194. package/app/.next/server/chunks/ssr/_0g3y1u9._.js +0 -3
  195. package/app/.next/server/chunks/ssr/app_agents_[id]_conversations_page_tsx_15zl_c8._.js +0 -3
  196. package/app/.next/static/chunks/10i-rrea371m2.js +0 -1
  197. package/app/.next/static/chunks/1ob-de9xo9m2e.css +0 -3
  198. package/app/.next/static/chunks/1ypwptc0fsn4w.js +0 -1
  199. package/app/.next/static/chunks/1zryovio86f1z.js +0 -1
  200. package/app/.next/static/chunks/34v8aumua0x5n.js +0 -1
  201. package/app/.next/static/chunks/3m-2-98qud-hf.js +0 -1
  202. /package/app/.next/static/{0BJMiZPkEfFOd56nhl62e → eBmHBBldHWytVvYPu0zHc}/_buildManifest.js +0 -0
  203. /package/app/.next/static/{0BJMiZPkEfFOd56nhl62e → eBmHBBldHWytVvYPu0zHc}/_clientMiddlewareManifest.js +0 -0
  204. /package/app/.next/static/{0BJMiZPkEfFOd56nhl62e → eBmHBBldHWytVvYPu0zHc}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[80093,e=>{"use strict";var t=e.i(89171),r=e.i(42715),n=e.i(46309),i=e.i(86353);async function a(e,{params:o}){try{let n,a=(0,i.ownerBoundaryRefusalFor)(e);if(a)return t.NextResponse.json({error:{code:i.OWNER_ORIGIN_REQUIRED,message:a}},{status:403});let{id:s,conversationId:d}=await o,l=new URL(e.url).searchParams;try{n=(0,r.parseOwnerConversationLimit)(l.get("limit"))}catch{return t.NextResponse.json({error:"limit must be a positive integer."},{status:400})}let u=(0,r.getOwnerConversation)(s,d,{cursor:l.get("cursor"),limit:n});if(!u)return t.NextResponse.json({error:"Conversation not found"},{status:404});return t.NextResponse.json(u)}catch(e){if(e instanceof n.InvalidPageCursorError)return t.NextResponse.json({error:e.message},{status:400});return console.error("Error reading owner conversation:",e),t.NextResponse.json({error:"Failed to load conversation"},{status:500})}}e.s(["GET",0,a])},54149,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),a=e.i(61916),o=e.i(74677),s=e.i(69741),d=e.i(16795),l=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),v=e.i(70101),g=e.i(26937),h=e.i(10372),R=e.i(93695),_=e.i(9580);e.i(52474);var m=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/bots/[id]/conversations/[conversationId]/route",pathname:"/api/bots/[id]/conversations/[conversationId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bots/[id]/conversations/[conversationId]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(80093),...{}}),{workAsyncStorage:f,workUnitAsyncStorage:C,serverHooks:w}=E;async function A(e,t,n){n.requestMeta&&(0,i.setRequestMeta)(e,n.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/bots/[id]/conversations/[conversationId]/route";f=f.replace(/\/index$/,"")||"/";let C=await E.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,deploymentId:A,params:O,nextConfig:b,parsedUrl:N,isDraftMode:y,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:I,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:k,serverActionsManifest:L}=C,q=(0,s.normalizeAppPath)(f),H=!!S.routes[P]&&(E.isDev||(0,_.isRouteCacheOwner)(P,E.cacheOwner,S.routes[P])),M=!!(S.dynamicRoutes[q]||H),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,N,!1):t.end("This page could not be found"),null);if(M&&!y){let e=S.dynamicRoutes[q];if(e&&!1===e.fallback&&!H){if(b.adapterPath)return await U();throw new R.NoFallbackError}}let D=null;!M||E.isDev||y||(D="/index"===(D=P)?"/":D);let F=!0===E.isDev||!M,$=M&&!F;L&&k&&(0,o.setManifestsSingleton)({page:f,clientReferenceManifest:k,serverActionsManifest:L});let W=e.method||"GET",j=(0,a.getTracer)(),B=j.getActiveScopeSpan(),G=!!(null==T?void 0:T.isWrappedByNextServer),K=!!(0,i.getRequestMeta)(e,"minimalMode"),V=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,b,S,K);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let X={params:O,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts,useCacheTimeout:b.experimental.useCacheTimeout},cacheComponents:!!b.cacheComponents,validationLevel:b.experimental.instantInsights.validationLevel,isDraftMode:y,supportsDynamicResponse:F,incrementalCache:V,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:b.cacheLife,staticPageGenerationTimeout:b.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>E.onRequestError(e,t,n,i,T)},sharedContext:{buildId:w,deploymentId:A}},J=new d.NodeNextRequest(e),Y=new d.NodeNextResponse(t),z=l.NextRequestAdapter.fromNodeNextRequest(J,(0,l.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!K&&I&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.handle(z,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let a=X.renderOpts.pendingWaitUntil;a&&n.waitUntil&&(n.waitUntil(a),a=void 0);let o=X.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(J,Y,i,a),null;{let e=await i.blob(),t=(0,v.toNodeOutgoingHttpHeaders)(i.headers);o&&(t[h.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,n=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==r&&r>0?b.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:I})},!1,T),t}},Z=async(i,o)=>{try{var s,d;let i=await E.handleResponse({req:e,nextConfig:b,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:x,responseGenerator:Q,waitUntil:n.waitUntil,isMinimalMode:K});if(!M)return;if((null==i||null==(s=i.value)?void 0:s.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(d=i.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",I?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let a=(0,v.fromNodeOutgoingHttpHeaders)(i.value.headers);K&&M||a.delete(h.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||a.get("Cache-Control")||a.set("Cache-Control",(0,g.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(J,Y,new Response(i.value.body,{headers:a,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:I})},!1,T),M)throw t;await (0,p.sendResponse)(J,Y,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:a.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=j.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||q,s=`${W} ${n}`;i.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),i.updateName(s),o&&o!==i&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(G&&B)await Z(B,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${f}`,kind:a.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},e=>Z(e,t)),void 0,!G)}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:f,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,w,"workAsyncStorage",0,f,"workUnitAsyncStorage",0,C])},86353,e=>{"use strict";let t=new Set(["127.0.0.1","localhost","[::1]"]),r=new Set(["GET","HEAD","OPTIONS"]);function n(e){let r=e?function(e){let t=e.trim().toLowerCase();if(!t)return null;if(t.startsWith("[")){let e=t.indexOf("]");if(e<0)return null;let r=t.slice(e+1);return""===r||/^:\d+$/.test(r)?t.slice(0,e+1):null}let[r,n,i]=t.split(":");return void 0===i&&(void 0===n||/^\d+$/.test(n))?r:null}(e):null;return!!r&&t.has(r)}e.s(["OWNER_ORIGIN_REQUIRED",0,"owner_origin_required","isLoopbackHost",0,n,"ownerBoundaryRefusalFor",0,function(e){let t=new URL(e.url);var i={method:e.method,host:e.headers.get("host")??t.host,origin:e.headers.get("origin"),secFetchSite:e.headers.get("sec-fetch-site"),protocol:t.protocol};if(!n(i.host))return"The request did not arrive on a loopback host.";if(r.has(i.method.toUpperCase()))return null;let a=i.secFetchSite?.trim().toLowerCase()??null;if(null!==a&&"same-origin"!==a)return"The request is not same-origin.";if(null!==i.origin){let e=`${i.protocol}//${i.host.trim().toLowerCase()}`;return i.origin.trim().toLowerCase()!==e?"The request came from another origin.":null}return"same-origin"===a?null:"The request carries no same-origin proof."}])},42715,e=>{"use strict";var t=e.i(62294),r=e.i(25211),n=e.i(64909),i=e.i(93399),a=e.i(46309);let o=`
1
+ module.exports=[80093,e=>{"use strict";var t=e.i(89171),r=e.i(42715),n=e.i(46309),i=e.i(86353);async function a(e,{params:o}){try{let n,a=(0,i.ownerBoundaryRefusalFor)(e);if(a)return t.NextResponse.json({error:{code:i.OWNER_ORIGIN_REQUIRED,message:a}},{status:403});let{id:s,conversationId:d}=await o,l=new URL(e.url).searchParams;try{n=(0,r.parseOwnerConversationLimit)(l.get("limit"))}catch{return t.NextResponse.json({error:"limit must be a positive integer."},{status:400})}let u=(0,r.getOwnerConversation)(s,d,{cursor:l.get("cursor"),limit:n});if(!u)return t.NextResponse.json({error:"Conversation not found"},{status:404});return t.NextResponse.json(u)}catch(e){if(e instanceof n.InvalidPageCursorError)return t.NextResponse.json({error:e.message},{status:400});return console.error("Error reading owner conversation:",e),t.NextResponse.json({error:"Failed to load conversation"},{status:500})}}e.s(["GET",0,a])},54149,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),a=e.i(61916),o=e.i(74677),s=e.i(69741),d=e.i(16795),l=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(26937),g=e.i(10372),R=e.i(93695),_=e.i(9580);e.i(52474);var m=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/bots/[id]/conversations/[conversationId]/route",pathname:"/api/bots/[id]/conversations/[conversationId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/bots/[id]/conversations/[conversationId]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(80093),...{}}),{workAsyncStorage:f,workUnitAsyncStorage:C,serverHooks:w}=E;async function O(e,t,n){n.requestMeta&&(0,i.setRequestMeta)(e,n.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/bots/[id]/conversations/[conversationId]/route";f=f.replace(/\/index$/,"")||"/";let C=await E.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,deploymentId:O,params:b,nextConfig:A,parsedUrl:S,isDraftMode:N,prerenderManifest:y,routerServerContext:T,isOnDemandRevalidate:x,revalidateOnlyGenerated:I,resolvedPathname:P,clientReferenceManifest:k,serverActionsManifest:L}=C,q=(0,s.normalizeAppPath)(f),H=!!y.routes[P]&&(E.isDev||(0,_.isRouteCacheOwner)(P,E.cacheOwner,y.routes[P])),M=!!(y.dynamicRoutes[q]||H),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!N){let e=y.dynamicRoutes[q];if(e&&!1===e.fallback&&!H){if(A.adapterPath)return await U();throw new R.NoFallbackError}}let D=null;!M||E.isDev||N||(D="/index"===(D=P)?"/":D);let F=!0===E.isDev||!M,$=M&&!F;L&&k&&(0,o.setManifestsSingleton)({page:f,clientReferenceManifest:k,serverActionsManifest:L});let W=e.method||"GET",j=(0,a.getTracer)(),B=j.getActiveScopeSpan(),G=!!(null==T?void 0:T.isWrappedByNextServer),K=!!(0,i.getRequestMeta)(e,"minimalMode"),V=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,y,K);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let X={params:b,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:N,supportsDynamicResponse:F,incrementalCache:V,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>E.onRequestError(e,t,n,i,T)},sharedContext:{buildId:w,deploymentId:O}},J=new d.NodeNextRequest(e),Y=new d.NodeNextResponse(t),z=l.NextRequestAdapter.fromNodeNextRequest(J,(0,l.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!K&&x&&I&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.handle(z,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let a=X.renderOpts.pendingWaitUntil;a&&n.waitUntil&&(n.waitUntil(a),a=void 0);let o=X.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(J,Y,i,a),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);o&&(t[g.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,n=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?A.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,T),t}},Z=async(i,o)=>{try{var s,d;let i=await E.handleResponse({req:e,nextConfig:A,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:I,responseGenerator:Q,waitUntil:n.waitUntil,isMinimalMode:K});if(!M)return;if((null==i||null==(s=i.value)?void 0:s.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(d=i.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",x?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let a=(0,h.fromNodeOutgoingHttpHeaders)(i.value.headers);K&&M||a.delete(g.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||a.get("Cache-Control")||a.set("Cache-Control",(0,v.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(J,Y,new Response(i.value.body,{headers:a,status:i.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:x})},!1,T),M)throw t;await (0,p.sendResponse)(J,Y,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:a.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=j.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||q,s=`${W} ${n}`;i.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),i.updateName(s),o&&o!==i&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(G&&B)await Z(B,void 0);else{let t=j.getActiveScopeSpan();await j.withPropagatedContext(e.headers,()=>j.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${f}`,kind:a.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},e=>Z(e,t)),void 0,!G)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:f,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,w,"workAsyncStorage",0,f,"workUnitAsyncStorage",0,C])},86353,e=>{"use strict";let t=new Set(["127.0.0.1","localhost","[::1]"]),r=new Set(["GET","HEAD","OPTIONS"]);function n(e){let r=e?function(e){let t=e.trim().toLowerCase();if(!t)return null;if(t.startsWith("[")){let e=t.indexOf("]");if(e<0)return null;let r=t.slice(e+1);return""===r||/^:\d+$/.test(r)?t.slice(0,e+1):null}let[r,n,i]=t.split(":");return void 0===i&&(void 0===n||/^\d+$/.test(n))?r:null}(e):null;return!!r&&t.has(r)}e.s(["OWNER_ORIGIN_REQUIRED",0,"owner_origin_required","isLoopbackHost",0,n,"ownerBoundaryRefusalFor",0,function(e){let t=new URL(e.url);var i={method:e.method,host:e.headers.get("host")??t.host,origin:e.headers.get("origin"),secFetchSite:e.headers.get("sec-fetch-site"),protocol:t.protocol};if(!n(i.host))return"The request did not arrive on a loopback host.";if(r.has(i.method.toUpperCase()))return null;let a=i.secFetchSite?.trim().toLowerCase()??null;if(null!==a&&"same-origin"!==a)return"The request is not same-origin.";if(null!==i.origin){let e=`${i.protocol}//${i.host.trim().toLowerCase()}`;return i.origin.trim().toLowerCase()!==e?"The request came from another origin.":null}return"same-origin"===a?null:"The request carries no same-origin proof."}])},42715,e=>{"use strict";var t=e.i(62294),r=e.i(25211),n=e.i(64909),i=e.i(93399),a=e.i(46309);let o=`
2
2
  SELECT c.id, c.type, c.bot_id, c.group_id, c.origin_kind, c.origin_id, c.created_at,
3
3
  COALESCE((SELECT MAX(m.created_at) FROM messages m WHERE m.conversation_id = c.id), c.created_at) AS last_activity_at,
4
4
  (SELECT COUNT(*) FROM messages m WHERE m.conversation_id = c.id) AS message_count,
@@ -10,9 +10,9 @@ module.exports=[80093,e=>{"use strict";var t=e.i(89171),r=e.i(42715),n=e.i(46309
10
10
  AND selected.participant_id = ?
11
11
  LEFT JOIN bots b ON b.id = c.bot_id
12
12
  LEFT JOIN groups g ON g.id = c.group_id
13
- `;function s(e){return e.kind===t.UI_OWNER_PRINCIPAL.kind&&e.id===t.UI_OWNER_PRINCIPAL.id?"You":"bot"===e.kind?t.bots.getById(e.id)?.name??"Removed Agent":"service"===e.kind?e.id?`Service ${e.id}`:"External service":"unknown"===e.id?"Person":e.id}function d(e){return{...e,label:s(e)}}function l(e){var r;let n=(r=e.id,t.default.prepare("SELECT participant_kind AS kind, participant_id AS id FROM conversation_participants WHERE conversation_id = ? ORDER BY joined_at ASC, rowid ASC").all(r).map(d)),i="bot"===e.type?"direct":"group"===e.type?"group":"agent",a="direct"===i?`${e.bot_name??"Agent"} conversation`:"group"===i?e.group_name?`Group ${e.group_name}`:"Group conversation":"Agent conversation",o=e.origin_kind&&e.origin_id?d({kind:e.origin_kind,id:e.origin_id}):null,s="bot"===e.type&&null!==e.bot_id&&e.origin_kind===t.UI_OWNER_PRINCIPAL.kind&&e.origin_id===t.UI_OWNER_PRINCIPAL.id,l=s?null:"group"===i?"Group history is read-only here. Continue from an authorized direct conversation.":o?.kind==="service"?"This conversation was opened by an external service. Reply through that service or start a direct conversation.":"This Agent-to-Agent history is read-only for the owner.";return{conversation_id:e.id,type:i,label:a,participants:n,origin:o,message_count:e.message_count,created_at:e.created_at,last_activity_at:e.last_activity_at,writable:s,read_only_reason:l}}e.s(["getOwnerConversation",0,function(e,d,u){if(!t.bots.getById(e))return null;let c=t.default.prepare(`${o} WHERE c.id = ?`).get(e,d);if(!c)return null;let p=(0,a.paginateRows)(`owner-conversation-messages:${e}:${d}`,t.default.prepare(`
13
+ `;function s(e){return e.kind===t.UI_OWNER_PRINCIPAL.kind&&e.id===t.UI_OWNER_PRINCIPAL.id?"You":"bot"===e.kind?t.bots.getById(e.id)?.name??"Removed agent":"service"===e.kind?e.id?`Service ${e.id}`:"External service":"unknown"===e.id?"Person":e.id}function d(e){return{...e,label:s(e)}}function l(e){var r;let n=(r=e.id,t.default.prepare("SELECT participant_kind AS kind, participant_id AS id FROM conversation_participants WHERE conversation_id = ? ORDER BY joined_at ASC, rowid ASC").all(r).map(d)),i="bot"===e.type?"direct":"group"===e.type?"group":"agent",a="direct"===i?`${e.bot_name??"Agent"} conversation`:"group"===i?e.group_name?`Shared \xb7 ${e.group_name}`:"Shared conversation":"Agent conversation",o=e.origin_kind&&e.origin_id?d({kind:e.origin_kind,id:e.origin_id}):null,s="bot"===e.type&&null!==e.bot_id&&e.origin_kind===t.UI_OWNER_PRINCIPAL.kind&&e.origin_id===t.UI_OWNER_PRINCIPAL.id,l=s?null:"group"===i?"Shared history is read-only here. Continue from an authorized direct conversation.":o?.kind==="service"?"This conversation was opened by an external service. Reply through that service or start a direct conversation.":"This agent-to-agent history is read-only for the owner.";return{conversation_id:e.id,type:i,label:a,participants:n,origin:o,message_count:e.message_count,created_at:e.created_at,last_activity_at:e.last_activity_at,writable:s,read_only_reason:l}}e.s(["getOwnerConversation",0,function(e,d,u){if(!t.bots.getById(e))return null;let c=t.default.prepare(`${o} WHERE c.id = ?`).get(e,d);if(!c)return null;let p=(0,a.paginateRows)(`owner-conversation-messages:${e}:${d}`,t.default.prepare(`
14
14
  SELECT m.*, ROW_NUMBER() OVER (ORDER BY m.created_at ASC, m.rowid ASC) AS seq
15
15
  FROM messages m WHERE m.conversation_id = ?
16
- `).all(d),e=>({at:e.seq,tie:e.created_at,id:e.id}),u.cursor,u.limit),v=(0,i.serviceRedactor)();return{...l(c),messages:p.items.slice().reverse().map(e=>{let i=(0,r.parseDraft)(e.content),a=i?t.default.prepare("SELECT status FROM draft_actions WHERE message_id = ?").get(e.id):void 0,o=(0,r.parseApprovalCode)(e.content),l=o?(0,n.getApprovalByCode)(d,o):void 0,u=!l&&o?t.default.prepare("SELECT status FROM approvals WHERE conversation_id = ? AND code = ?").get(d,o):void 0,p=e.sender_kind??("bot"===e.sender_type?"bot":"person"),g=e.sender_id??(p===c.origin_kind?c.origin_id:null)??"unknown";return{id:e.id,sender_type:e.sender_type,sender_id:e.sender_id,sender_kind:p,sender_name:s({kind:p,id:g}),request_id:e.request_id,content:v.text(e.content),handoff_targets:e.handoff_targets,draftStatus:i?"open"!==i.state?i.state:a?.status??"open":null,approvalStatus:l?"executed"===l.status?"approved":l.status:u?.status??(o?"pending":null),created_at:e.created_at}}),next_cursor:p.next_cursor,events:t.projector.listConversationEvents(d)}},"listOwnerConversations",0,function(e,r){if(!t.bots.getById(e))return null;let n=r.q?.trim().toLocaleLowerCase()??"",i=t.default.prepare(o).all(e).map(l).filter(e=>!n||[e.label,e.type,e.origin?.label??"",...e.participants.map(e=>e.label)].some(e=>e.toLocaleLowerCase().includes(n)));return(0,a.paginateRows)(`owner-conversations:${e}:${n}`,i,e=>({at:e.last_activity_at,tie:e.created_at,id:e.conversation_id}),r.cursor,r.limit)},"parseOwnerConversationLimit",0,function(e){if(null===e||""===e)return 30;if(!/^\d+$/.test(e))throw RangeError("limit");let t=Number(e);if(!Number.isSafeInteger(t)||t<1)throw RangeError("limit");return Math.min(t,100)}],42715)}];
16
+ `).all(d),e=>({at:e.seq,tie:e.created_at,id:e.id}),u.cursor,u.limit),h=(0,i.serviceRedactor)();return{...l(c),messages:p.items.slice().reverse().map(e=>{let i=(0,r.parseDraft)(e.content),a=i?t.default.prepare("SELECT status FROM draft_actions WHERE message_id = ?").get(e.id):void 0,o=(0,r.parseApprovalCode)(e.content),l=o?(0,n.getApprovalByCode)(d,o):void 0,u=!l&&o?t.default.prepare("SELECT status FROM approvals WHERE conversation_id = ? AND code = ?").get(d,o):void 0,p=e.sender_kind??("bot"===e.sender_type?"bot":"person"),v=e.sender_id??(p===c.origin_kind?c.origin_id:null)??"unknown";return{id:e.id,sender_type:e.sender_type,sender_id:e.sender_id,sender_kind:p,sender_name:s({kind:p,id:v}),request_id:e.request_id,content:h.text(e.content),handoff_targets:e.handoff_targets,draftStatus:i?"open"!==i.state?i.state:a?.status??"open":null,approvalStatus:l?"executed"===l.status?"approved":l.status:u?.status??(o?"pending":null),created_at:e.created_at}}),next_cursor:p.next_cursor,events:t.projector.listConversationEvents(d)}},"listOwnerConversations",0,function(e,r){if(!t.bots.getById(e))return null;let n=r.q?.trim().toLocaleLowerCase()??"",i=t.default.prepare(o).all(e).map(l).filter(e=>!n||[e.label,e.type,e.origin?.label??"",...e.participants.map(e=>e.label)].some(e=>e.toLocaleLowerCase().includes(n)));return(0,a.paginateRows)(`owner-conversations:${e}:${n}`,i,e=>({at:e.last_activity_at,tie:e.created_at,id:e.conversation_id}),r.cursor,r.limit)},"parseOwnerConversationLimit",0,function(e){if(null===e||""===e)return 30;if(!/^\d+$/.test(e))throw RangeError("limit");let t=Number(e);if(!Number.isSafeInteger(t)||t<1)throw RangeError("limit");return Math.min(t,100)}],42715)}];
17
17
 
18
18
  //# sourceMappingURL=_1uxmsh3._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[85226,(e,o,d)=>{}];
2
+
3
+ //# sourceMappingURL=_next-internal_server_app_api_runtime-capacity_route_actions_1dzvg7f.js.map
@@ -10,16 +10,16 @@ module.exports=[9501,e=>{"use strict";var t=e.i(54799),n=e.i(46309),i=e.i(62294)
10
10
  JOIN conversation_participants p ON p.conversation_id = c.id AND p.participant_kind = 'bot' AND p.participant_id = ?
11
11
  LEFT JOIN bots b ON b.id = c.bot_id
12
12
  LEFT JOIN groups g ON g.id = c.group_id
13
- `;function O(e){return i.default.prepare("SELECT participant_kind AS kind, participant_id AS id FROM conversation_participants WHERE conversation_id = ? ORDER BY joined_at ASC, rowid ASC").all(e)}function P(e,t){return t.every(t=>"bot"===t.kind?I(e,t.id,"conversations:read"):"service"!==t.kind||t.id===e.principal.id)}function L(e,t){let n="bot"===e.type?"direct":"group"===e.type?"group":"agent",i="direct"===n?`${e.bot_name??"Agent"} thread`:"group"===n?e.group_name?`Group ${e.group_name}`:"Group thread":"Agent API conversation";return{conversation_id:e.id,type:n,label:i,participants:t,message_count:e.message_count,created_at:e.created_at,last_activity_at:e.last_activity_at}}let M=["deck","deck_id","deckId","deck_name","runtime","agent","adapter","transport","model","tool_profile","toolProfile","execution_kind","executionKind","permissions","provider_session_id","external_session_id","externalSessionId","session_id","sessionId","resume","resume_session","fresh_session","external_run_id","run_id","cwd","working_directory","workspace","grant","grants","capability","capabilities","principal","requester","owner"];function $(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function F(e,t,n){for(let i of Object.keys(e))if(!t.includes(i)){if(M.includes(i))throw new w("authority_not_allowed",`${n}${i} is chosen by Botmancers from the session and the Agent's configuration; a caller cannot set it.`);throw new w("invalid_request",`${n}${i} is not a field of this request.`)}}function D(e,t,n){if("string"!=typeof e||0===e.trim().length)throw new w("invalid_request",`${t} is required.`);if(e.length>n)throw new w("invalid_request",`${t} exceeds ${n} characters.`);return e}function K(e,t){let n=e.idempotency_key;if(void 0!==n&&"string"!=typeof n)throw new w("invalid_request","idempotency_key must be a string.");if(null!==t&&void 0!==n&&t!==n)throw new w("invalid_request","Idempotency-Key header and body idempotency_key differ.");let i=n??t??"";if(0===i.trim().length||i.length>160)throw new w("invalid_request","An idempotency key (1-160 characters) is required.");return i}function B(e,t){return i.default.prepare("SELECT * FROM session_exchanges WHERE requester_kind = ? AND requester_id = ? AND idempotency_key = ?").get(e.kind,e.id,t)}function G(e,n,r){let s=(0,t.randomUUID)();i.default.prepare("INSERT INTO conversations (id, type, origin_kind, origin_id, created_at) VALUES (?, ?, ?, ?, ?)").run(s,"agent",e.kind,e.id,r);let a=i.default.prepare("INSERT OR IGNORE INTO conversation_participants (conversation_id, participant_kind, participant_id, joined_at) VALUES (?, ?, ?, ?)");return a.run(s,e.kind,e.id,r),a.run(s,"bot",n,r),s}function W(e){return i.default.prepare("SELECT * FROM session_bindings WHERE id = ?").get(e)}function H(e,t){try{return i.default.transaction(()=>{let{input:n,afterCreate:i}=e(),r=c.exchanges.create(n);return r.created&&i&&i(r.exchange),t?.(r.exchange),r}).immediate()}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}}function X(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");F(e,["content","idempotency_key"],"");let n=K(e,t);return{content:D(e.content,"content",a.EXCHANGE_LIMITS.instructionChars),idempotencyKey:n}}function j(e,t,n){return t.requester_kind===e.principal.kind&&t.requester_id===e.principal.id&&I(e,t.source_agent_id,n)&&(null===t.destination_agent_id||I(e,t.destination_agent_id,n))}function V(e,t,n){let i=c.exchanges.get(t);if(!i)throw y.exchange();if(!j(e,i,n))throw E("exchange");return i}let Y=e=>e.idempotency_key.startsWith(_.MESSAGE_KEY_PREFIX)?"session_message":"exchange";function J(e,t){let n=t.idempotency_key.startsWith(_.MESSAGE_KEY_PREFIX)?t.idempotency_key.slice(_.MESSAGE_KEY_PREFIX.length):t.idempotency_key.startsWith(_.EXCHANGE_KEY_PREFIX)?t.idempotency_key.slice(_.EXCHANGE_KEY_PREFIX.length):t.idempotency_key;return(0,u.serviceRedactor)().deep({...e,kind:Y(t),idempotency_key:n})}function U(e){return{id:e.id,kind:Y(e),mode:e.mode,state:e.state,source:{agent_id:e.source_agent_id,session_ref:e.source_binding_id},destination:e.destination_agent_id?{agent_id:e.destination_agent_id,session_ref:e.destination_binding_id}:null,failure:"failed"===e.state?{code:e.failure_code??"failed"}:null,created_at:e.created_at,updated_at:e.updated_at,terminal_at:e.terminal_at}}function z(e,t){let n=c.exchanges.require(t);return j(e,n,"exchanges:read")?J((0,c.getExchangeView)(t),n):U(n)}let Q=["exchange_id","parent_exchange_id"];async function Z(e,t,n,i){let r=V(e,t,"exchanges:create");try{let{replayed:t}=await (0,c.cancelExchangeCommand)(r.id,e.principal,n,i);return{exchange:z(e,r.id),replayed:t}}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}}let ee=e=>"resume"===e?"sessions:resume":"sessions:message";function et(e){if(e instanceof h.PinError){if("session_not_found"===e.code)throw y.session();if("agent_not_found"===e.code)throw y.agent();if("pin_not_found"===e.code)throw y.pin();if("conversation_not_found"===e.code)throw y.conversation();throw new w(e.code,e.message)}if(e instanceof d.ExchangeError)throw S(e);throw e}function en(e,t){let n;try{n=(0,h.requirePin)(e.principal,t)}catch(e){et(e)}if(!I(e,n.agent_id,ee(n.action)))throw E("pin");return n}function ei(e){return(0,u.serviceRedactor)().deep((0,h.pinView)(e))}async function er(e,t,n,i){k(e,t,"sessions:message");try{let r=await (0,h.messageAgent)({requester:e.principal,agentId:t,content:n.content,idempotencyKey:n.idempotencyKey,mayStart:I(e,t,"sessions:start"),onResolved:e=>i.onTarget({agentId:e.agentId,sessionRef:e.sessionRef,capability:"started"===e.resolution?"sessions:start":"sessions:message",action:"started"===e.resolution?"agents.message.start":"agents.message"}),onCommit:()=>i.onCommit()});return{body:{pin:ei(r.pin),turn:(0,u.serviceRedactor)().deep(r.turn),resolution:r.resolution,replayed:r.replayed},settled:r.settled}}catch(e){et(e)}}async function es(e,t,n,i){let r=(0,h.sessionOwner)(t);if(!r)throw y.session();let s=ee(n.action);if(i.onTarget({agentId:r,sessionRef:t,capability:s,action:"resume"===n.action?"pins.resume":"pins.ask"}),!I(e,r,s))throw E("session");n.replacePinRef&&en(e,n.replacePinRef);try{let{pin:r,created:s,replaced:a}=await (0,h.createPin)({requester:e.principal,sessionRef:t,action:n.action,approveWrite:n.approveWrite,idempotencyKey:n.idempotencyKey,replacePinRef:n.replacePinRef,onCommit:()=>i.onCommit()});return{pin:ei(r),replaced_pin_ref:a?.id??null,replayed:!s}}catch(e){et(e)}}async function ea(e,t,n,i){let r=en(e,t);i.onTarget({agentId:r.agent_id,sessionRef:r.session_ref,capability:ee(r.action),action:"pins.send"});try{let t=await (0,h.sendPinTurn)({requester:e.principal,pinRef:r.id,content:n.content,idempotencyKey:n.idempotencyKey,onCommit:()=>i.onCommit()});return{body:{pin:ei(t.pin),turn:(0,u.serviceRedactor)().deep(t.turn),replayed:t.replayed},settled:t.settled}}catch(e){et(e)}}async function eo(e,t,n){let i=en(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref,capability:ee(i.action),action:"pins.read"});try{let{pin:t,turns:n}=await (0,h.readPin)(e.principal,i.id);return{pin:ei(t),turns:(0,u.serviceRedactor)().deep(n)}}catch(e){et(e)}}let ed=["provider_session_id","external_session_id","claude_session_id","codex_thread_id","cursor_chat_id","thread_id","chat_id","cwd","workspace","latest","most_recent","title","title_match","active_since"],ec=[...new Set([...M,...ed])];function e_(e,t,n){for(let i of Object.keys(e))if(!t.includes(i)){if(ec.includes(i))throw new w("authority_not_allowed",`${n}${i} cannot select or describe a session; name it by session_ref only.`);throw new w("invalid_request",`${n}${i} is not a field of this request.`)}}function eu(e,t){if(null==e)return null;if("number"!=typeof e||!Number.isInteger(e))throw new w("invalid_request",`${t} must be an integer.`);return e}function el(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(e_(e,["audience","ttl_seconds","max_turns","agent_id","idempotency_key"],""),!$(e.audience))throw new w("invalid_request",'audience must be one object { kind: "slack", team_id, channel_id }.');if(e_(e.audience,["kind","team_id","channel_id"],"audience."),!(0,f.isSlackAudience)(e.audience))throw new w("invalid_request",'audience must be { kind: "slack", team_id: "T…", channel_id: "C…" } with exact Slack ids.');return{audience:{kind:"slack",team_id:e.audience.team_id,channel_id:e.audience.channel_id},ttlSeconds:eu(e.ttl_seconds,"ttl_seconds"),maxTurns:eu(e.max_turns,"max_turns"),agentId:void 0===e.agent_id||null===e.agent_id?null:D(e.agent_id,"agent_id",200),idempotencyKey:K(e,t)}}let ep=["session_ref","state","cursor","limit"],eg=["active","expired","revoked"];function ef(e){if(e instanceof f.ShareError){if("session_not_found"===e.code)throw y.session();if("share_not_found"===e.code)throw y.share();throw new w(e.code,e.message)}et(e)}function eh(e,t){let n=(0,f.shareRow)(t);if(!n)throw y.share();if(!(n.creator_kind===e.principal.kind&&n.creator_id===e.principal.id&&I(e,n.agent_id,"shares:create")))throw E("share");return n}function em(e,t=(0,u.serviceRedactor)()){return t.deep((0,f.shareView)(e))}async function ev(e,t,n,i){let r=(0,h.sessionOwner)(t);if(i.onTarget({agentId:r,sessionRef:t}),!r)throw y.session();if(!I(e,r,"shares:create"))throw E("session");if(null!==n.agentId&&n.agentId!==r)throw y.session();try{let{share:r,created:s}=await (0,f.createShare)({creator:e.principal,sessionRef:t,agentId:n.agentId,audience:n.audience,ttlSeconds:n.ttlSeconds,maxTurns:n.maxTurns,idempotencyKey:n.idempotencyKey,createdVia:"session_ref",onCommit:()=>i.onCommit()});return{share:em(r),replayed:!s}}catch(e){ef(e)}}let ew=["audience","ttl_seconds","max_turns","agent_id","idempotency_key"];async function ey(e,n,i,r){if(r.onTarget({agentId:n.agentId,sessionRef:n.sessionRef}),null!==i.agentId&&i.agentId!==n.agentId)throw y.session();try{var s,a;let{share:o,created:d}=await (0,f.createShare)({creator:e.principal,sessionRef:n.sessionRef,agentId:n.agentId,audience:i.audience,ttlSeconds:i.ttlSeconds,maxTurns:i.maxTurns,idempotencyKey:(s=n.sessionRef,a=i.idempotencyKey,`current:${(0,t.createHash)("sha256").update(s).digest("hex").slice(0,24)}:${a}`),createdVia:"current_session",onCommit:()=>r.onCommit()});return{share:em(o),replayed:!d}}catch(e){ef(e)}}e.s(["AUTHORITY_FIELDS",0,M,"MESSAGE_CONTENT_LIMIT",0,16e3,"PAGE_LIMITS",0,R,"SHARE_SELECTOR_FIELDS",0,ed,"ServiceApiError",0,w,"agentMessagingReadiness",0,x,"cancelServiceExchange",0,Z,"capabilitiesView",0,function(e){let t=[...e.agents.entries()].filter(([e])=>!!i.bots.getById(e)).map(([e,t])=>({agent_id:e,capabilities:_.SERVICE_CAPABILITIES.filter(e=>t.has(e))})).sort((e,t)=>e.agent_id<t.agent_id?-1:+(e.agent_id>t.agent_id));return{principal:{kind:e.principal.kind,id:e.principal.id},mode:e.mode,vocabulary:_.SERVICE_CAPABILITIES,agents:t,limits:{page:R,content_chars:a.EXCHANGE_LIMITS.instructionChars,message_content_chars:16e3}}},"checkShareListParams",0,function(e){for(let t of e)if(!ep.includes(t)){if(ec.includes(t))throw new w("authority_not_allowed",`${t} cannot select a session; filter by session_ref only.`);throw new w("invalid_request",`${t} is not a parameter of this list.`)}},"createCurrentSessionShare",0,ey,"createServiceExchange",0,function(e,t,n){let r=W(t.sessionRef);if(!r||null!==t.sourceAgentId&&t.sourceAgentId!==r.agent_id)throw y.session();if(!I(e,r.agent_id,"exchanges:create"))throw E("session");if("ask"===t.mode&&(null!==t.destinationAgentId||null!==t.destinationConversationId))throw new w("destination_invalid","An Ask returns to the origin conversation and takes no destination.");if("continue"===t.mode){if(null===t.destinationAgentId)throw new w("destination_invalid","A Continue names destination.agent_id.");if(!i.bots.getById(t.destinationAgentId))throw y.agent();if(!I(e,t.destinationAgentId,"exchanges:create"))throw E("agent")}let s=e.principal,a=`${_.EXCHANGE_KEY_PREFIX}${t.idempotencyKey}`,{exchange:o,created:d}=H(()=>{let e=Date.now(),n=B(s,a),i=t.originConversationId??n?.origin_conversation_id??G(s,r.agent_id,e),o="continue"!==t.mode?null:t.destinationConversationId??n?.destination_conversation_id??G(s,t.destinationAgentId,e);return{input:{requester:s,serviceGrant:!0,idempotencyKey:a,mode:t.mode,originConversationId:i,sourceAgentId:r.agent_id,sessionRef:r.id,destinationAgentId:t.destinationAgentId,destinationConversationId:o,instruction:t.instruction,now:e}}},n),u=(0,c.dispatchExchange)(o.id);return{exchange:z(e,o.id),created:d,dispatched:u}},"createServiceShare",0,ev,"detachServicePin",0,function(e,t,n){let i=en(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref,capability:ee(i.action),action:"pins.detach"});try{let{pin:t,replayed:r}=(0,h.detachPin)(e.principal,i.id,{onCommit:()=>n.onCommit()});return{pin:ei(t),replayed:r}}catch(e){et(e)}},"getServiceAgent",0,function(e,t){return C(e,k(e,t,"agents:read"))},"getServiceConversation",0,function(e,t,r,s){var a;k(e,t,"conversations:read");let o=i.default.prepare(`${N} WHERE c.id = ?`).get(t,r);if(!o)throw y.conversation();let d=O(o.id);if(!P(e,d))throw E("conversation");let c=`messages:${o.id}`,_=function(e,t){try{return(0,n.decodePageCursor)(e,t)}catch(e){if(e instanceof n.InvalidPageCursorError)throw new w("invalid_request",e.message);throw e}}(c,s.cursor),l=i.default.prepare(`
13
+ `;function O(e){return i.default.prepare("SELECT participant_kind AS kind, participant_id AS id FROM conversation_participants WHERE conversation_id = ? ORDER BY joined_at ASC, rowid ASC").all(e)}function P(e,t){return t.every(t=>"bot"===t.kind?I(e,t.id,"conversations:read"):"service"!==t.kind||t.id===e.principal.id)}function L(e,t){let n="bot"===e.type?"direct":"group"===e.type?"group":"agent",i="direct"===n?`${e.bot_name??"Agent"} thread`:"group"===n?e.group_name?`Shared \xb7 ${e.group_name}`:"Shared thread":"Agent API conversation";return{conversation_id:e.id,type:n,label:i,participants:t,message_count:e.message_count,created_at:e.created_at,last_activity_at:e.last_activity_at}}let M=["deck","deck_id","deckId","deck_name","runtime","agent","adapter","transport","model","tool_profile","toolProfile","execution_kind","executionKind","permissions","provider_session_id","external_session_id","externalSessionId","session_id","sessionId","resume","resume_session","fresh_session","external_run_id","run_id","cwd","working_directory","workspace","grant","grants","capability","capabilities","principal","requester","owner"];function $(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function F(e,t,n){for(let i of Object.keys(e))if(!t.includes(i)){if(M.includes(i))throw new w("authority_not_allowed",`${n}${i} is chosen by Botmancers from the session and the Agent's configuration; a caller cannot set it.`);throw new w("invalid_request",`${n}${i} is not a field of this request.`)}}function D(e,t,n){if("string"!=typeof e||0===e.trim().length)throw new w("invalid_request",`${t} is required.`);if(e.length>n)throw new w("invalid_request",`${t} exceeds ${n} characters.`);return e}function K(e,t){let n=e.idempotency_key;if(void 0!==n&&"string"!=typeof n)throw new w("invalid_request","idempotency_key must be a string.");if(null!==t&&void 0!==n&&t!==n)throw new w("invalid_request","Idempotency-Key header and body idempotency_key differ.");let i=n??t??"";if(0===i.trim().length||i.length>160)throw new w("invalid_request","An idempotency key (1-160 characters) is required.");return i}function B(e,t){return i.default.prepare("SELECT * FROM session_exchanges WHERE requester_kind = ? AND requester_id = ? AND idempotency_key = ?").get(e.kind,e.id,t)}function W(e,n,r){let s=(0,t.randomUUID)();i.default.prepare("INSERT INTO conversations (id, type, origin_kind, origin_id, created_at) VALUES (?, ?, ?, ?, ?)").run(s,"agent",e.kind,e.id,r);let a=i.default.prepare("INSERT OR IGNORE INTO conversation_participants (conversation_id, participant_kind, participant_id, joined_at) VALUES (?, ?, ?, ?)");return a.run(s,e.kind,e.id,r),a.run(s,"bot",n,r),s}function H(e){return i.default.prepare("SELECT * FROM session_bindings WHERE id = ?").get(e)}function G(e,t){try{return i.default.transaction(()=>{let{input:n,afterCreate:i}=e(),r=c.exchanges.create(n);return r.created&&i&&i(r.exchange),t?.(r.exchange),r}).immediate()}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}}function X(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");F(e,["content","idempotency_key"],"");let n=K(e,t);return{content:D(e.content,"content",a.EXCHANGE_LIMITS.instructionChars),idempotencyKey:n}}function j(e,t,n){return t.requester_kind===e.principal.kind&&t.requester_id===e.principal.id&&I(e,t.source_agent_id,n)&&(null===t.destination_agent_id||I(e,t.destination_agent_id,n))}function V(e,t,n){let i=c.exchanges.get(t);if(!i)throw y.exchange();if(!j(e,i,n))throw E("exchange");return i}let Y=e=>e.idempotency_key.startsWith(_.MESSAGE_KEY_PREFIX)?"session_message":"exchange";function J(e,t){let n=t.idempotency_key.startsWith(_.MESSAGE_KEY_PREFIX)?t.idempotency_key.slice(_.MESSAGE_KEY_PREFIX.length):t.idempotency_key.startsWith(_.EXCHANGE_KEY_PREFIX)?t.idempotency_key.slice(_.EXCHANGE_KEY_PREFIX.length):t.idempotency_key;return(0,u.serviceRedactor)().deep({...e,kind:Y(t),idempotency_key:n})}function U(e){return{id:e.id,kind:Y(e),mode:e.mode,state:e.state,source:{agent_id:e.source_agent_id,session_ref:e.source_binding_id},destination:e.destination_agent_id?{agent_id:e.destination_agent_id,session_ref:e.destination_binding_id}:null,failure:"failed"===e.state?{code:e.failure_code??"failed"}:null,created_at:e.created_at,updated_at:e.updated_at,terminal_at:e.terminal_at}}function z(e,t){let n=c.exchanges.require(t);return j(e,n,"exchanges:read")?J((0,c.getExchangeView)(t),n):U(n)}let Q=["exchange_id","parent_exchange_id"];async function Z(e,t,n,i){let r=V(e,t,"exchanges:create");try{let{replayed:t}=await (0,c.cancelExchangeCommand)(r.id,e.principal,n,i);return{exchange:z(e,r.id),replayed:t}}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}}let ee=e=>"resume"===e?"sessions:resume":"sessions:message";function et(e){if(e instanceof h.PinError){if("session_not_found"===e.code)throw y.session();if("agent_not_found"===e.code)throw y.agent();if("pin_not_found"===e.code)throw y.pin();if("conversation_not_found"===e.code)throw y.conversation();throw new w(e.code,e.message)}if(e instanceof d.ExchangeError)throw S(e);throw e}function en(e,t){let n;try{n=(0,h.requirePin)(e.principal,t)}catch(e){et(e)}if(!I(e,n.agent_id,ee(n.action)))throw E("pin");return n}function ei(e){return(0,u.serviceRedactor)().deep((0,h.pinView)(e))}async function er(e,t,n,i){k(e,t,"sessions:message");try{let r=await (0,h.messageAgent)({requester:e.principal,agentId:t,content:n.content,idempotencyKey:n.idempotencyKey,mayStart:I(e,t,"sessions:start"),onResolved:e=>i.onTarget({agentId:e.agentId,sessionRef:e.sessionRef,capability:"started"===e.resolution?"sessions:start":"sessions:message",action:"started"===e.resolution?"agents.message.start":"agents.message"}),onCommit:()=>i.onCommit()});return{body:{pin:ei(r.pin),turn:(0,u.serviceRedactor)().deep(r.turn),resolution:r.resolution,replayed:r.replayed},settled:r.settled}}catch(e){et(e)}}async function es(e,t,n,i){let r=(0,h.sessionOwner)(t);if(!r)throw y.session();let s=ee(n.action);if(i.onTarget({agentId:r,sessionRef:t,capability:s,action:"resume"===n.action?"pins.resume":"pins.ask"}),!I(e,r,s))throw E("session");n.replacePinRef&&en(e,n.replacePinRef);try{let{pin:r,created:s,replaced:a}=await (0,h.createPin)({requester:e.principal,sessionRef:t,action:n.action,approveWrite:n.approveWrite,idempotencyKey:n.idempotencyKey,replacePinRef:n.replacePinRef,onCommit:()=>i.onCommit()});return{pin:ei(r),replaced_pin_ref:a?.id??null,replayed:!s}}catch(e){et(e)}}async function ea(e,t,n,i){let r=en(e,t);i.onTarget({agentId:r.agent_id,sessionRef:r.session_ref,capability:ee(r.action),action:"pins.send"});try{let t=await (0,h.sendPinTurn)({requester:e.principal,pinRef:r.id,content:n.content,idempotencyKey:n.idempotencyKey,onCommit:()=>i.onCommit()});return{body:{pin:ei(t.pin),turn:(0,u.serviceRedactor)().deep(t.turn),replayed:t.replayed},settled:t.settled}}catch(e){et(e)}}async function eo(e,t,n){let i=en(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref,capability:ee(i.action),action:"pins.read"});try{let{pin:t,turns:n}=await (0,h.readPin)(e.principal,i.id);return{pin:ei(t),turns:(0,u.serviceRedactor)().deep(n)}}catch(e){et(e)}}let ed=["provider_session_id","external_session_id","claude_session_id","codex_thread_id","cursor_chat_id","thread_id","chat_id","cwd","workspace","latest","most_recent","title","title_match","active_since"],ec=[...new Set([...M,...ed])];function e_(e,t,n){for(let i of Object.keys(e))if(!t.includes(i)){if(ec.includes(i))throw new w("authority_not_allowed",`${n}${i} cannot select or describe a session; name it by session_ref only.`);throw new w("invalid_request",`${n}${i} is not a field of this request.`)}}function eu(e,t){if(null==e)return null;if("number"!=typeof e||!Number.isInteger(e))throw new w("invalid_request",`${t} must be an integer.`);return e}function el(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(e_(e,["audience","ttl_seconds","max_turns","agent_id","idempotency_key"],""),!$(e.audience))throw new w("invalid_request",'audience must be one object { kind: "slack", team_id, channel_id }.');if(e_(e.audience,["kind","team_id","channel_id"],"audience."),!(0,f.isSlackAudience)(e.audience))throw new w("invalid_request",'audience must be { kind: "slack", team_id: "T…", channel_id: "C…" } with exact Slack ids.');return{audience:{kind:"slack",team_id:e.audience.team_id,channel_id:e.audience.channel_id},ttlSeconds:eu(e.ttl_seconds,"ttl_seconds"),maxTurns:eu(e.max_turns,"max_turns"),agentId:void 0===e.agent_id||null===e.agent_id?null:D(e.agent_id,"agent_id",200),idempotencyKey:K(e,t)}}let ep=["session_ref","state","cursor","limit"],eg=["active","expired","revoked"];function ef(e){if(e instanceof f.ShareError){if("session_not_found"===e.code)throw y.session();if("share_not_found"===e.code)throw y.share();throw new w(e.code,e.message)}et(e)}function eh(e,t){let n=(0,f.shareRow)(t);if(!n)throw y.share();if(!(n.creator_kind===e.principal.kind&&n.creator_id===e.principal.id&&I(e,n.agent_id,"shares:create")))throw E("share");return n}function em(e,t=(0,u.serviceRedactor)()){return t.deep((0,f.shareView)(e))}async function ev(e,t,n,i){let r=(0,h.sessionOwner)(t);if(i.onTarget({agentId:r,sessionRef:t}),!r)throw y.session();if(!I(e,r,"shares:create"))throw E("session");if(null!==n.agentId&&n.agentId!==r)throw y.session();try{let{share:r,created:s}=await (0,f.createShare)({creator:e.principal,sessionRef:t,agentId:n.agentId,audience:n.audience,ttlSeconds:n.ttlSeconds,maxTurns:n.maxTurns,idempotencyKey:n.idempotencyKey,createdVia:"session_ref",onCommit:()=>i.onCommit()});return{share:em(r),replayed:!s}}catch(e){ef(e)}}let ew=["audience","ttl_seconds","max_turns","agent_id","idempotency_key"];async function ey(e,n,i,r){if(r.onTarget({agentId:n.agentId,sessionRef:n.sessionRef}),null!==i.agentId&&i.agentId!==n.agentId)throw y.session();try{var s,a;let{share:o,created:d}=await (0,f.createShare)({creator:e.principal,sessionRef:n.sessionRef,agentId:n.agentId,audience:i.audience,ttlSeconds:i.ttlSeconds,maxTurns:i.maxTurns,idempotencyKey:(s=n.sessionRef,a=i.idempotencyKey,`current:${(0,t.createHash)("sha256").update(s).digest("hex").slice(0,24)}:${a}`),createdVia:"current_session",onCommit:()=>r.onCommit()});return{share:em(o),replayed:!d}}catch(e){ef(e)}}e.s(["AUTHORITY_FIELDS",0,M,"MESSAGE_CONTENT_LIMIT",0,16e3,"PAGE_LIMITS",0,R,"SHARE_SELECTOR_FIELDS",0,ed,"ServiceApiError",0,w,"agentMessagingReadiness",0,x,"cancelServiceExchange",0,Z,"capabilitiesView",0,function(e){let t=[...e.agents.entries()].filter(([e])=>!!i.bots.getById(e)).map(([e,t])=>({agent_id:e,capabilities:_.SERVICE_CAPABILITIES.filter(e=>t.has(e))})).sort((e,t)=>e.agent_id<t.agent_id?-1:+(e.agent_id>t.agent_id));return{principal:{kind:e.principal.kind,id:e.principal.id},mode:e.mode,vocabulary:_.SERVICE_CAPABILITIES,agents:t,limits:{page:R,content_chars:a.EXCHANGE_LIMITS.instructionChars,message_content_chars:16e3}}},"checkShareListParams",0,function(e){for(let t of e)if(!ep.includes(t)){if(ec.includes(t))throw new w("authority_not_allowed",`${t} cannot select a session; filter by session_ref only.`);throw new w("invalid_request",`${t} is not a parameter of this list.`)}},"createCurrentSessionShare",0,ey,"createServiceExchange",0,function(e,t,n){let r=H(t.sessionRef);if(!r||null!==t.sourceAgentId&&t.sourceAgentId!==r.agent_id)throw y.session();if(!I(e,r.agent_id,"exchanges:create"))throw E("session");if("ask"===t.mode&&(null!==t.destinationAgentId||null!==t.destinationConversationId))throw new w("destination_invalid","An Ask returns to the origin conversation and takes no destination.");if("continue"===t.mode){if(null===t.destinationAgentId)throw new w("destination_invalid","A Continue names destination.agent_id.");if(!i.bots.getById(t.destinationAgentId))throw y.agent();if(!I(e,t.destinationAgentId,"exchanges:create"))throw E("agent")}let s=e.principal,a=`${_.EXCHANGE_KEY_PREFIX}${t.idempotencyKey}`,{exchange:o,created:d}=G(()=>{let e=Date.now(),n=B(s,a),i=t.originConversationId??n?.origin_conversation_id??W(s,r.agent_id,e),o="continue"!==t.mode?null:t.destinationConversationId??n?.destination_conversation_id??W(s,t.destinationAgentId,e);return{input:{requester:s,serviceGrant:!0,idempotencyKey:a,mode:t.mode,originConversationId:i,sourceAgentId:r.agent_id,sessionRef:r.id,destinationAgentId:t.destinationAgentId,destinationConversationId:o,instruction:t.instruction,now:e}}},n),u=(0,c.dispatchExchange)(o.id);return{exchange:z(e,o.id),created:d,dispatched:u}},"createServiceShare",0,ev,"detachServicePin",0,function(e,t,n){let i=en(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref,capability:ee(i.action),action:"pins.detach"});try{let{pin:t,replayed:r}=(0,h.detachPin)(e.principal,i.id,{onCommit:()=>n.onCommit()});return{pin:ei(t),replayed:r}}catch(e){et(e)}},"getServiceAgent",0,function(e,t){return C(e,k(e,t,"agents:read"))},"getServiceConversation",0,function(e,t,r,s){var a;k(e,t,"conversations:read");let o=i.default.prepare(`${N} WHERE c.id = ?`).get(t,r);if(!o)throw y.conversation();let d=O(o.id);if(!P(e,d))throw E("conversation");let c=`messages:${o.id}`,_=function(e,t){try{return(0,n.decodePageCursor)(e,t)}catch(e){if(e instanceof n.InvalidPageCursorError)throw new w("invalid_request",e.message);throw e}}(c,s.cursor),l=i.default.prepare(`
14
14
  SELECT * FROM (
15
15
  SELECT m.id, m.sender_type, m.sender_id, m.sender_kind, m.request_id, m.content, m.created_at,
16
16
  ROW_NUMBER() OVER (ORDER BY m.rowid ASC) AS seq
17
17
  FROM messages m WHERE m.conversation_id = ?
18
18
  ) WHERE seq < ? ORDER BY seq DESC LIMIT ?
19
- `).all(o.id,_?_.at:Number.MAX_SAFE_INTEGER,s.limit+1),p=l.slice(0,s.limit).reverse(),g=(0,u.serviceRedactor)();return{...L(o,d),messages:p.map(e=>{var t,n;let i,r=g.text(e.content);return{message_id:e.id,seq:e.seq,sender:(t=e,n=o,i=t.sender_kind??("bot"===t.sender_type?"bot":"person"),t.sender_id?{kind:i,id:t.sender_id}:"bot"!==i&&n.origin_kind===i&&n.origin_id?{kind:i,id:n.origin_id}:{kind:i,id:"unknown"}),content:r.length>16e3?r.slice(0,16e3):r,truncated:r.length>16e3,request_id:e.request_id,created_at:e.created_at}}),next_cursor:l.length>s.limit&&p.length>0?(a={at:p[0].seq,tie:0,id:p[0].id},(0,n.encodePageCursor)(c,a)):null}},"getServiceExchange",0,function(e,t){let n=V(e,t,"exchanges:read");return J((0,c.getExchangeView)(n.id),n)},"getServiceSession",0,function(e,t,n){k(e,t,"sessions:read");let r=(0,o.getAgentSession)(i.default,t,n);if(!r)throw y.session();return(0,u.serviceRedactor)().deep({...q((0,h.sessionsWithActions)(t,[r])[0]),attempts:r.attempts,usage_samples:r.usage_samples.map(e=>({...e}))})},"getServiceShare",0,function(e,t,n){let i=eh(e,t);return n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref}),{share:em(i)}},"holds",0,I,"listServiceAgents",0,function(e,t){let n=[...e.agents.keys()].filter(t=>I(e,t,"agents:read")).map(t=>C(e,i.bots.getById(t)));return A(`agents:${e.principal.id}`,n,e=>({at:e.last_activity_at,tie:e.created_at,id:e.agent_id}),t.cursor,t.limit)},"listServiceConversations",0,function(e,t,n){k(e,t,"conversations:read");let r=i.default.prepare(N).all(t).flatMap(t=>{let n=O(t.id);return P(e,n)?[L(t,n)]:[]});return A(`conversations:${t}`,r,e=>({at:e.last_activity_at,tie:e.created_at,id:e.conversation_id}),n.cursor,n.limit)},"listServiceExchanges",0,function(e,t){let n=i.default.prepare("SELECT * FROM session_exchanges WHERE requester_kind = ? AND requester_id = ?").all(e.principal.kind,e.principal.id).filter(t=>j(e,t,"exchanges:read")).map(U);return A(`exchanges:${e.principal.id}`,n,e=>({at:e.updated_at,tie:e.created_at,id:e.id}),t.cursor,t.limit)},"listServiceSessions",0,function(e,t,n){k(e,t,"sessions:read");let r=n.status??"all";if(!(0,o.isSessionFilter)(r))throw new w("invalid_request","status must be active, ended, or all.");let s=(0,u.serviceRedactor)(),a=(0,h.sessionsWithActions)(t,(0,o.listAgentSessions)(i.default,t,r)).map(e=>s.deep(q(e)));return A(`sessions:${t}:${r}`,a,e=>({at:e.last_activity_at,tie:e.created_at,id:e.ref}),n.cursor,n.limit)},"listServiceShares",0,function(e,t){if(null!==t.sessionRef&&(""===t.sessionRef.trim()||t.sessionRef.length>200))throw new w("invalid_request","session_ref must be one session reference.");if(null!==t.state&&!eg.includes(t.state))throw new w("invalid_request","state must be active, expired, or revoked.");let n=(0,u.serviceRedactor)(),i=(0,f.sharesCreatedBy)(e.principal,{sessionRef:t.sessionRef}).filter(t=>I(e,t.agent_id,"shares:create")).map(e=>em(e,n)).filter(e=>null===t.state||e.state===t.state);return A(`shares:${e.principal.id}:${t.sessionRef??""}:${t.state??""}`,i,e=>({at:e.created_at,tie:e.created_at,id:e.share_ref}),t.cursor,t.limit)},"messageServiceAgent",0,er,"parseAgentMessageBody",0,function(e,t){return X(e,t)},"parseCancelBody",0,function(e){try{return(0,d.cancelReasonFromBody)(e)}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}},"parseLimit",0,function(e,t=R.default,n=R.max){if(null===e||""===e)return t;if(!/^\d+$/.test(e)||1>Number(e)||Number(e)>n)throw new w("invalid_request",`limit must be an integer from 1 to ${n}.`);return Number(e)},"parsePinBody",0,function(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(F(e,["action","approve_write","replace_pin_ref","idempotency_key"],""),"ask"!==e.action&&"resume"!==e.action)throw new w("invalid_request",'action must be "ask" or "resume".');if(void 0!==e.approve_write&&"boolean"!=typeof e.approve_write)throw new w("invalid_request","approve_write must be true or false.");return{action:e.action,approveWrite:!0===e.approve_write,replacePinRef:void 0===e.replace_pin_ref||null===e.replace_pin_ref?null:D(e.replace_pin_ref,"replace_pin_ref",200),idempotencyKey:K(e,t)}},"parseServiceExchangeBody",0,function(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(Q.some(t=>t in e))throw new w("recursive_exchange","An exchange cannot be started from another exchange.");if(F(e,["mode","idempotency_key","origin_conversation_id","source","destination","instruction"],""),"ask"!==e.mode&&"continue"!==e.mode)throw new w("invalid_request",'mode must be "ask" or "continue".');if(!$(e.source))throw new w("invalid_request","source must be one object { session_ref, agent_id? }.");F(e.source,["session_ref","agent_id"],"source.");let n=null;if(void 0!==e.destination&&null!==e.destination){if(!$(e.destination))throw new w("destination_invalid","destination must be one object { agent_id, conversation_id? }.");F(e.destination,["agent_id","conversation_id"],"destination."),n=e.destination}let i=(e,t)=>null==e?null:D(e,t,200);return{mode:e.mode,idempotencyKey:K(e,t),originConversationId:i(e.origin_conversation_id,"origin_conversation_id"),sourceAgentId:i(e.source.agent_id,"source.agent_id"),sessionRef:D(e.source.session_ref,"source.session_ref",200),destinationAgentId:n?i(n.agent_id,"destination.agent_id"):null,destinationConversationId:n?i(n.conversation_id,"destination.conversation_id"):null,instruction:D(e.instruction,"instruction",a.EXCHANGE_LIMITS.instructionChars)}},"parseSessionMessageBody",0,X,"parseShareCreateBody",0,el,"parseShareCurrentBody",0,function(e,t){if($(e)&&Object.prototype.hasOwnProperty.call(e,"session_ref"))throw new w("invalid_request","Share-current takes no session_ref: its session is the one this launch is bound to. To share another session, use its session_ref with create-share.");return $(e)&&e_(e,ew,""),el(e,t)},"parseShareRevokeBody",0,function(e){let t;if(""!==e.trim()){try{t=JSON.parse(e)}catch{throw new w("invalid_request","The body must be empty or a JSON object.")}if(!$(t))throw new w("invalid_request","The body must be empty or a JSON object.");e_(t,["idempotency_key"],""),void 0!==t.idempotency_key&&D(t.idempotency_key,"idempotency_key",160)}},"pinServiceSession",0,es,"readServicePin",0,eo,"requireShareCurrentCaller",0,function(e){if(e.kind!==g.SESSION_CONTEXT_PRINCIPAL.kind||e.id!==g.SESSION_CONTEXT_PRINCIPAL.id)throw new w("invalid_request","Share-current is only available inside a Botmancers-launched session, authenticated by its session context, not a service token. Pass session_ref to create-share instead.")},"revokeServiceShare",0,function(e,t,n){let i=eh(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref});try{let{share:e,replayed:t}=(0,f.revokeShare)(i.id,{onCommit:()=>n.onCommit()});return{share:em(e),replayed:t}}catch(e){ef(e)}},"sendServicePinMessage",0,ea,"sendServiceSessionMessage",0,function(e,n,r,s){let a=W(n);if(!a){let t=i.default.prepare("SELECT agent_id FROM provider_sessions WHERE id = ? AND binding_id IS NULL").get(n);if(t&&I(e,t.agent_id,"sessions:message"))throw new w("session_not_resumable","This session is not reachable through session messages.");throw y.session()}if(!I(e,a.agent_id,"sessions:message"))throw E("session");let o=e.principal,d=`${_.MESSAGE_KEY_PREFIX}${r.idempotencyKey}`,{exchange:u,created:l}=H(()=>{let e=Date.now(),n=B(o,d),s=i.default.prepare(`
19
+ `).all(o.id,_?_.at:Number.MAX_SAFE_INTEGER,s.limit+1),p=l.slice(0,s.limit).reverse(),g=(0,u.serviceRedactor)();return{...L(o,d),messages:p.map(e=>{var t,n;let i,r=g.text(e.content);return{message_id:e.id,seq:e.seq,sender:(t=e,n=o,i=t.sender_kind??("bot"===t.sender_type?"bot":"person"),t.sender_id?{kind:i,id:t.sender_id}:"bot"!==i&&n.origin_kind===i&&n.origin_id?{kind:i,id:n.origin_id}:{kind:i,id:"unknown"}),content:r.length>16e3?r.slice(0,16e3):r,truncated:r.length>16e3,request_id:e.request_id,created_at:e.created_at}}),next_cursor:l.length>s.limit&&p.length>0?(a={at:p[0].seq,tie:0,id:p[0].id},(0,n.encodePageCursor)(c,a)):null}},"getServiceExchange",0,function(e,t){let n=V(e,t,"exchanges:read");return J((0,c.getExchangeView)(n.id),n)},"getServiceSession",0,function(e,t,n){k(e,t,"sessions:read");let r=(0,o.getAgentSession)(i.default,t,n);if(!r)throw y.session();return(0,u.serviceRedactor)().deep({...q((0,h.sessionsWithActions)(t,[r])[0]),attempts:r.attempts,usage_samples:r.usage_samples.map(e=>({...e}))})},"getServiceShare",0,function(e,t,n){let i=eh(e,t);return n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref}),{share:em(i)}},"holds",0,I,"listServiceAgents",0,function(e,t){let n=[...e.agents.keys()].filter(t=>I(e,t,"agents:read")).map(t=>C(e,i.bots.getById(t)));return A(`agents:${e.principal.id}`,n,e=>({at:e.last_activity_at,tie:e.created_at,id:e.agent_id}),t.cursor,t.limit)},"listServiceConversations",0,function(e,t,n){k(e,t,"conversations:read");let r=i.default.prepare(N).all(t).flatMap(t=>{let n=O(t.id);return P(e,n)?[L(t,n)]:[]});return A(`conversations:${t}`,r,e=>({at:e.last_activity_at,tie:e.created_at,id:e.conversation_id}),n.cursor,n.limit)},"listServiceExchanges",0,function(e,t){let n=i.default.prepare("SELECT * FROM session_exchanges WHERE requester_kind = ? AND requester_id = ?").all(e.principal.kind,e.principal.id).filter(t=>j(e,t,"exchanges:read")).map(U);return A(`exchanges:${e.principal.id}`,n,e=>({at:e.updated_at,tie:e.created_at,id:e.id}),t.cursor,t.limit)},"listServiceSessions",0,function(e,t,n){k(e,t,"sessions:read");let r=n.status??"all";if(!(0,o.isSessionFilter)(r))throw new w("invalid_request","status must be active, ended, or all.");let s=(0,u.serviceRedactor)(),a=(0,h.sessionsWithActions)(t,(0,o.listAgentSessions)(i.default,t,r)).map(e=>s.deep(q(e)));return A(`sessions:${t}:${r}`,a,e=>({at:e.last_activity_at,tie:e.created_at,id:e.ref}),n.cursor,n.limit)},"listServiceShares",0,function(e,t){if(null!==t.sessionRef&&(""===t.sessionRef.trim()||t.sessionRef.length>200))throw new w("invalid_request","session_ref must be one session reference.");if(null!==t.state&&!eg.includes(t.state))throw new w("invalid_request","state must be active, expired, or revoked.");let n=(0,u.serviceRedactor)(),i=(0,f.sharesCreatedBy)(e.principal,{sessionRef:t.sessionRef}).filter(t=>I(e,t.agent_id,"shares:create")).map(e=>em(e,n)).filter(e=>null===t.state||e.state===t.state);return A(`shares:${e.principal.id}:${t.sessionRef??""}:${t.state??""}`,i,e=>({at:e.created_at,tie:e.created_at,id:e.share_ref}),t.cursor,t.limit)},"messageServiceAgent",0,er,"parseAgentMessageBody",0,function(e,t){return X(e,t)},"parseCancelBody",0,function(e){try{return(0,d.cancelReasonFromBody)(e)}catch(e){if(e instanceof d.ExchangeError)throw S(e);throw e}},"parseLimit",0,function(e,t=R.default,n=R.max){if(null===e||""===e)return t;if(!/^\d+$/.test(e)||1>Number(e)||Number(e)>n)throw new w("invalid_request",`limit must be an integer from 1 to ${n}.`);return Number(e)},"parsePinBody",0,function(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(F(e,["action","approve_write","replace_pin_ref","idempotency_key"],""),"ask"!==e.action&&"resume"!==e.action)throw new w("invalid_request",'action must be "ask" or "resume".');if(void 0!==e.approve_write&&"boolean"!=typeof e.approve_write)throw new w("invalid_request","approve_write must be true or false.");return{action:e.action,approveWrite:!0===e.approve_write,replacePinRef:void 0===e.replace_pin_ref||null===e.replace_pin_ref?null:D(e.replace_pin_ref,"replace_pin_ref",200),idempotencyKey:K(e,t)}},"parseServiceExchangeBody",0,function(e,t){if(!$(e))throw new w("invalid_request","The body must be a JSON object.");if(Q.some(t=>t in e))throw new w("recursive_exchange","An exchange cannot be started from another exchange.");if(F(e,["mode","idempotency_key","origin_conversation_id","source","destination","instruction"],""),"ask"!==e.mode&&"continue"!==e.mode)throw new w("invalid_request",'mode must be "ask" or "continue".');if(!$(e.source))throw new w("invalid_request","source must be one object { session_ref, agent_id? }.");F(e.source,["session_ref","agent_id"],"source.");let n=null;if(void 0!==e.destination&&null!==e.destination){if(!$(e.destination))throw new w("destination_invalid","destination must be one object { agent_id, conversation_id? }.");F(e.destination,["agent_id","conversation_id"],"destination."),n=e.destination}let i=(e,t)=>null==e?null:D(e,t,200);return{mode:e.mode,idempotencyKey:K(e,t),originConversationId:i(e.origin_conversation_id,"origin_conversation_id"),sourceAgentId:i(e.source.agent_id,"source.agent_id"),sessionRef:D(e.source.session_ref,"source.session_ref",200),destinationAgentId:n?i(n.agent_id,"destination.agent_id"):null,destinationConversationId:n?i(n.conversation_id,"destination.conversation_id"):null,instruction:D(e.instruction,"instruction",a.EXCHANGE_LIMITS.instructionChars)}},"parseSessionMessageBody",0,X,"parseShareCreateBody",0,el,"parseShareCurrentBody",0,function(e,t){if($(e)&&Object.prototype.hasOwnProperty.call(e,"session_ref"))throw new w("invalid_request","Share-current takes no session_ref: its session is the one this launch is bound to. To share another session, use its session_ref with create-share.");return $(e)&&e_(e,ew,""),el(e,t)},"parseShareRevokeBody",0,function(e){let t;if(""!==e.trim()){try{t=JSON.parse(e)}catch{throw new w("invalid_request","The body must be empty or a JSON object.")}if(!$(t))throw new w("invalid_request","The body must be empty or a JSON object.");e_(t,["idempotency_key"],""),void 0!==t.idempotency_key&&D(t.idempotency_key,"idempotency_key",160)}},"pinServiceSession",0,es,"readServicePin",0,eo,"requireShareCurrentCaller",0,function(e){if(e.kind!==g.SESSION_CONTEXT_PRINCIPAL.kind||e.id!==g.SESSION_CONTEXT_PRINCIPAL.id)throw new w("invalid_request","Share-current is only available inside a Botmancers-launched session, authenticated by its session context, not a service token. Pass session_ref to create-share instead.")},"revokeServiceShare",0,function(e,t,n){let i=eh(e,t);n.onTarget({agentId:i.agent_id,sessionRef:i.session_ref});try{let{share:e,replayed:t}=(0,f.revokeShare)(i.id,{onCommit:()=>n.onCommit()});return{share:em(e),replayed:t}}catch(e){ef(e)}},"sendServicePinMessage",0,ea,"sendServiceSessionMessage",0,function(e,n,r,s){let a=H(n);if(!a){let t=i.default.prepare("SELECT agent_id FROM provider_sessions WHERE id = ? AND binding_id IS NULL").get(n);if(t&&I(e,t.agent_id,"sessions:message"))throw new w("session_not_resumable","This session is not reachable through session messages.");throw y.session()}if(!I(e,a.agent_id,"sessions:message"))throw E("session");let o=e.principal,d=`${_.MESSAGE_KEY_PREFIX}${r.idempotencyKey}`,{exchange:u,created:l}=G(()=>{let e=Date.now(),n=B(o,d),s=i.default.prepare(`
20
20
  SELECT origin_conversation_id FROM session_exchanges
21
21
  WHERE requester_kind = ? AND requester_id = ? AND source_binding_id = ? AND mode = 'ask' AND idempotency_key LIKE 'message:%'
22
22
  ORDER BY created_at ASC, id ASC LIMIT 1
23
- `).get(o.kind,o.id,a.id),c=n?.origin_conversation_id??s?.origin_conversation_id??G(o,a.agent_id,e);return{input:{requester:o,serviceGrant:!0,idempotencyKey:d,mode:"ask",originConversationId:c,sourceAgentId:a.agent_id,sessionRef:a.id,instruction:r.content,now:e},afterCreate:n=>{i.default.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, request_id, content, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run((0,t.randomUUID)(),n.origin_conversation_id,"user",o.id,o.kind,n.source_request_id,r.content,e)}}},s),p=(0,c.dispatchExchange)(u.id),g=u.source_request_id?i.default.prepare("SELECT state FROM work_requests WHERE id = ?").get(u.source_request_id):void 0,f=i.default.prepare("SELECT id FROM messages WHERE conversation_id = ? AND request_id = ? AND sender_kind = ? ORDER BY rowid ASC LIMIT 1").get(u.origin_conversation_id,u.source_request_id,o.kind);return{accepted:{session_ref:a.id,agent_id:a.agent_id,exchange_id:u.id,request_id:u.source_request_id,conversation_id:u.origin_conversation_id,message_id:f?.id??null,state:g?(0,c.apiStateOf)(g.state):"accepted",replayed:!l},dispatched:p}},"serviceContext",0,function(e){if("service"!==e.kind)throw new w("principal_not_allowed","The granted service API accepts only service principals.");if(e.id===g.SESSION_CONTEXT_SERVICE_ID)return{principal:e,mode:"narrow",agents:b};let t=(0,_.loadServiceGrants)();if("invalid"===t.state)throw new w("grants_unavailable","The service grants are not available; the owner must fix the grants document.");return"absent"===t.state?{principal:e,mode:"narrow",agents:b}:{principal:e,mode:"granted",agents:t.grants.get(e.id)??b}},"sessionContextError",0,function(e){return new w("session_context_required","This caller has no exact session context; share a session explicitly by its session_ref (botmancers_list_sessions).",{reason:e.reason})},"warmServiceAgent",0,T])}];
23
+ `).get(o.kind,o.id,a.id),c=n?.origin_conversation_id??s?.origin_conversation_id??W(o,a.agent_id,e);return{input:{requester:o,serviceGrant:!0,idempotencyKey:d,mode:"ask",originConversationId:c,sourceAgentId:a.agent_id,sessionRef:a.id,instruction:r.content,now:e},afterCreate:n=>{i.default.prepare("INSERT INTO messages (id, conversation_id, sender_type, sender_id, sender_kind, request_id, content, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run((0,t.randomUUID)(),n.origin_conversation_id,"user",o.id,o.kind,n.source_request_id,r.content,e)}}},s),p=(0,c.dispatchExchange)(u.id),g=u.source_request_id?i.default.prepare("SELECT state FROM work_requests WHERE id = ?").get(u.source_request_id):void 0,f=i.default.prepare("SELECT id FROM messages WHERE conversation_id = ? AND request_id = ? AND sender_kind = ? ORDER BY rowid ASC LIMIT 1").get(u.origin_conversation_id,u.source_request_id,o.kind);return{accepted:{session_ref:a.id,agent_id:a.agent_id,exchange_id:u.id,request_id:u.source_request_id,conversation_id:u.origin_conversation_id,message_id:f?.id??null,state:g?(0,c.apiStateOf)(g.state):"accepted",replayed:!l},dispatched:p}},"serviceContext",0,function(e){if("service"!==e.kind)throw new w("principal_not_allowed","The granted service API accepts only service principals.");if(e.id===g.SESSION_CONTEXT_SERVICE_ID)return{principal:e,mode:"narrow",agents:b};let t=(0,_.loadServiceGrants)();if("invalid"===t.state)throw new w("grants_unavailable","The service grants are not available; the owner must fix the grants document.");return"absent"===t.state?{principal:e,mode:"narrow",agents:b}:{principal:e,mode:"granted",agents:t.grants.get(e.id)??b}},"sessionContextError",0,function(e){return new w("session_context_required","This caller has no exact session context; share a session explicitly by its session_ref (botmancers_list_sessions).",{reason:e.reason})},"warmServiceAgent",0,T])}];
24
24
 
25
25
  //# sourceMappingURL=lib_service-api_ts_18eok4w._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[89315,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(50944),f=a.i(27828),g=a.i(25073),h=a.i(4921),i=a.i(15722),j=a.i(20851),k=a.i(45559),l=a.i(59807),m=a.i(15752),n=a.i(11030),o=a.i(67588);function p(a){let b=a;for(let a=0;a<4;a++){let a=b.replace(/^\s*\[(?:Message from|From) [^\]]+\]\s*(?:\r?\n)?/,"");if(a===b)break;b=a}return b.replace(/^\s+/,"")}function q(a,b){let c=new Map(a.map(a=>[a.id,a]));for(let a of b)c.set(a.id,a);return[...c.values()].sort((a,b)=>a.created_at-b.created_at||a.id.localeCompare(b.id))}function r({message:a,conversationId:d,status:e,writable:f,onDone:g}){let h=(0,k.parseDraft)(p(a.content)),[i,j]=(0,c.useState)(h?.recipient??""),[l,m]=(0,c.useState)(h?.body??""),[n,o]=(0,c.useState)(!1);if(!h)return null;let q=!f||"open"!==e,s=async b=>{q||n||(o(!0),await fetch(`/api/conversations/${encodeURIComponent(d)}/draft`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:a.id,action:b,recipient:i,body:l})}),o(!1),g())};return(0,b.jsxs)("div",{className:"draft-card",children:[(0,b.jsx)("div",{className:"draft-title",children:(0,k.draftTitle)(h.channel)}),(0,b.jsx)("input",{"aria-label":"Recipient",value:q?h.recipient:i,readOnly:q,onChange:a=>j(a.target.value)}),(0,b.jsx)("textarea",{rows:3,"aria-label":"Draft body",value:q?h.body:l,readOnly:q,onChange:a=>m(a.target.value)}),"open"===e&&f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{type:"button",className:"approve-control",disabled:n||!i.trim(),onClick:()=>void s("send"),children:"Send"}),(0,b.jsx)("button",{type:"button",className:"approve-control",disabled:n,onClick:()=>void s("discard"),children:"Discard"})]}):(0,b.jsx)("span",{className:"draft-mark",children:"open"===e?"Read only":"sent"===e?"Sent":"Discarded"})]})}function s({message:a,conversationId:d,status:e,writable:f,onDone:g}){let h=(0,k.parseApprovalCode)(a.content),[i,j]=(0,c.useState)(!1);if(!h)return null;if(!f||"pending"!==e)return(0,b.jsx)("span",{className:"draft-mark",children:"pending"===e?"Approval is read only":"approved"===e?"Approved":"Denied"});let l=async b=>{i||(j(!0),await fetch(`/api/conversations/${encodeURIComponent(d)}/${b}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:h,messageId:a.id})}),j(!1),g())};return(0,b.jsxs)("span",{className:"draft-mark",children:[(0,b.jsx)("button",{type:"button",className:"approve-control",disabled:i,onClick:()=>void l("approve"),children:"Approve"}),(0,b.jsx)("button",{type:"button",className:"approve-control",disabled:i,onClick:()=>void l("deny"),children:"Deny"})]})}function t({names:a}){return a.length?(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsxs)("span",{children:[(0,b.jsx)("br",{}),(0,b.jsxs)("a",{className:"file-control",href:`/api/files/${encodeURIComponent(a)}`,download:a,children:["Download ",a]})]},a))}):null}a.s(["default",0,function(){let a=(0,e.useParams)(),u=(0,e.useSearchParams)(),v=String(a.id??""),w=String(a.conversationId??""),{overview:x}=(0,i.useAgentOverview)(),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(null),[E,F]=(0,c.useState)([]),[G,H]=(0,c.useState)(""),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(!1),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)(""),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(0),W=(0,c.useRef)(null),X=(0,c.useRef)(null),Y=(0,c.useRef)(null),Z=(0,c.useRef)(!1),$=(0,c.useRef)(!1),_=(0,c.useCallback)(async(a=null,b=!1)=>{if(v&&w){b&&L(!0);try{let c=new URLSearchParams({limit:"60"});a&&c.set("cursor",a);let[d,e]=await Promise.all([fetch(`/api/bots/${encodeURIComponent(v)}/conversations/${encodeURIComponent(w)}?${c}`,{cache:"no-store"}),fetch(`/api/exchanges?conversation=${encodeURIComponent(w)}`,{cache:"no-store"})]);if(404===d.status){J(!0),H("");return}let f=await d.json().catch(()=>null);if(!d.ok||!f||!Array.isArray(f.messages))throw Error("history");let g=await e.json().catch(()=>null);z(f),B(a=>b?q(f.messages,a):q(a,f.messages)),(b||!Z.current)&&D(f.next_cursor),e.ok&&Array.isArray(g?.exchanges)&&F(g.exchanges),H(""),J(!1)}catch{H("Could not load this conversation.")}finally{L(!1)}}},[w,v]);(0,c.useEffect)(()=>{let a=window.setTimeout(()=>{_()},0),b=window.setInterval(()=>{_()},2e3);return()=>{window.clearTimeout(a),window.clearInterval(b)}},[_,U]),(0,c.useEffect)(()=>{y&&!Z.current&&(Z.current=!0,Y.current?.lastElementChild?.scrollIntoView({block:"end"}),y.writable&&W.current?.focus({preventScroll:!0}))},[y]),(0,c.useEffect)(()=>{let a=u.get("exchange");if(!a||$.current)return;let b=document.getElementById(`exchange-${a}`);b&&($.current=!0,b.scrollIntoView({block:"center"}),b.focus({preventScroll:!0}))},[E,u]);let aa=a=>{let b=6-O.length;R(a.length>b?"Up to six attachments.":""),P(c=>[...c,...a.slice(0,Math.max(b,0)).map((a,b)=>({id:`${a.name}-${a.size}-${c.length+b}`,name:a.name}))])},ab=async()=>{if(!y?.writable||S)return;let a=[M.trim(),...O.map(a=>a.name)].filter(Boolean).join("\n");if(a){T(!0);try{if(!(await fetch(`/api/conversations/${encodeURIComponent(w)}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a,idempotencyKey:crypto.randomUUID()})})).ok)throw Error("send");N(""),P([]),R(""),await _()}catch{R("Message could not be sent. Try again.")}finally{T(!1)}}},ac=async a=>{if(!y?.writable)return;let b=a?`/messages/${encodeURIComponent(a)}/stop`:"/stop";await fetch(`/api/conversations/${encodeURIComponent(w)}${b}`,{method:"POST"}),await _()};if(I)return(0,b.jsxs)("div",{className:"conversation-detail-state",children:[(0,b.jsx)("h2",{children:"Conversation not found"}),(0,b.jsx)("p",{children:"This conversation does not involve the selected agent or no longer exists."}),(0,b.jsx)(d.default,{href:`/agents/${encodeURIComponent(v)}/conversations`,children:"All conversations"})]});if(!y&&!G)return(0,b.jsx)("p",{className:"conversation-detail-state",role:"status","data-conversation-detail-state":"loading",children:"Loading conversation…"});if(!y&&G)return(0,b.jsxs)("div",{className:"conversation-detail-state",role:"alert","data-conversation-detail-state":"error",children:[(0,b.jsx)("p",{children:G}),(0,b.jsx)("button",{type:"button",onClick:()=>V(a=>a+1),children:"Retry"})]});if(!y)return null;let ad=(0,n.wakeNotices)(y.events).map(a=>({...a,actionable:a.actionable&&y.writable})),ae=new Set,af=new Set,ag=a=>ad.filter(b=>!ae.has(b.eventId)&&b.createdAt<a).map(a=>(ae.add(a.eventId),(0,b.jsx)("li",{className:"msg-status",children:(0,b.jsx)(h.default,{notice:a,onDone:()=>void _()})},a.eventId))),ah=a=>E.filter(b=>!af.has(b.id)&&b.created_at<a).sort((a,b)=>a.created_at-b.created_at).map(a=>(af.add(a.id),(0,b.jsx)("li",{className:"msg-status",children:(0,b.jsx)(f.default,{summary:a,onChanged:()=>void _()})},a.id)));return(0,b.jsxs)("div",{className:"conversation-detail","data-conversation-writable":y.writable?"true":"false",children:[(0,b.jsxs)("header",{className:"conversation-detail-head",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(d.default,{href:`/agents/${encodeURIComponent(v)}/conversations`,children:"← Conversations"}),(0,b.jsx)("p",{className:"agent-eyebrow",children:(0,o.ownerConversationEyebrow)(y)}),(0,b.jsx)("h2",{children:y.label}),(0,b.jsx)("p",{className:"conversation-participant-line",children:y.participants.map(a=>a.label).join(" · ")}),(0,b.jsxs)("p",{className:"conversation-origin-line",children:["Origin: ",y.origin?.label??"Unknown"," · ",y.message_count," messages"]})]}),y.writable?(0,b.jsx)("button",{type:"button",className:"conversation-stop",onClick:()=>void ac(),children:"Stop delegated turns"}):null]}),y.writable?null:(0,b.jsxs)("aside",{className:"conversation-read-only",role:"note",children:[(0,b.jsx)("strong",{children:"Read-only history"}),(0,b.jsx)("p",{children:y.read_only_reason}),x?.conversation?(0,b.jsx)(d.default,{href:`/agents/${encodeURIComponent(v)}/conversations/${encodeURIComponent(x.conversation.id)}`,children:"Open direct conversation"}):null]}),G?(0,b.jsxs)("p",{className:"conversation-refresh-error",role:"alert",children:[G," Showing the last loaded history."]}):null,(0,b.jsxs)("div",{className:"conversation-history",children:[C?(0,b.jsx)("button",{className:"conversation-older",type:"button",disabled:K,onClick:()=>void _(C,!0),children:K?"Loading…":"Load older messages"}):null,(0,b.jsxs)("ol",{ref:Y,className:"conversation-message-list","aria-label":"Conversation history",children:[0===A.length?(0,b.jsx)("li",{className:"conversation-empty-history",children:"No messages in this conversation yet."}):null,A.map(a=>{let d="You"===a.sender_name,e=p(a.content),f=d?null:(0,l.classifyRuntimeFailure)(e),h=d?null:(0,m.parseRun)(a.content),i=d||h?null:(0,k.parseDraft)(e),n=d||h?null:(0,k.parseApprovalCode)(a.content);return(0,b.jsxs)(c.Fragment,{children:[ag(a.created_at),ah(a.created_at),(0,b.jsxs)("li",{className:d?"msg-you":"msg-bot",children:[(0,b.jsx)("div",{className:d?"msg-name msg-name-you":"msg-name",children:a.sender_name}),f?(0,b.jsx)("div",{className:"msg-status",children:(0,b.jsx)(g.default,{failure:f})}):h?(0,b.jsxs)("div",{className:"msg-body",children:[(0,m.runLine)(h),"running"===h.state&&y.writable?(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)("button",{type:"button",className:"attach-word",onClick:()=>void ac(a.id),children:"Stop"})]}):null]}):i&&a.draftStatus?(0,b.jsx)("div",{className:"msg-body",children:(0,b.jsx)(r,{message:a,conversationId:w,status:a.draftStatus,writable:y.writable,onDone:()=>void _()})}):(0,b.jsxs)("div",{className:"msg-body",children:[function(a,c){let d=String(a??"").split("\n");if(!d.some(a=>null!==(0,j.agentEventDisplay)(a)))return a;let e=[];return d.forEach((a,d)=>{d>0&&e.push((0,b.jsx)("br",{},`${c}-br-${d}`));let f=(0,j.agentEventDisplay)(a);e.push(f?(0,b.jsxs)("span",{className:"agent-event",children:[(0,b.jsx)("span",{className:"agent-event-label",children:f.label}),f.detail?` ${f.detail}`:""]},`${c}-${d}`):(0,b.jsx)("span",{children:a},`${c}-${d}`))}),e}(e,a.id),n&&a.approvalStatus?(0,b.jsx)(s,{message:a,conversationId:w,status:a.approvalStatus,writable:y.writable,onDone:()=>void _()}):null,(0,b.jsx)(t,{names:(0,k.parseFileNames)(a.content)})]})]})]},a.id)}),ag(1/0),ah(1/0)]})]}),y.writable?(0,b.jsxs)("div",{className:"composer conversation-composer",onPaste:a=>{let b=Array.from(a.clipboardData.files??[]);b.length&&(a.preventDefault(),aa(b))},children:[(0,b.jsxs)("div",{className:"composer-box",children:[Q?(0,b.jsx)("p",{className:"attach-error",role:"alert",children:Q}):null,O.length?(0,b.jsx)("div",{className:"attach-names",children:O.map(a=>(0,b.jsx)("span",{children:a.name},a.id))}):null,(0,b.jsx)("textarea",{ref:W,rows:2,value:M,onChange:a=>N(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||(a.preventDefault(),ab())},placeholder:`Message ${x?.agent.name??"this agent"}`,"aria-label":"Message"})]}),(0,b.jsx)("input",{ref:X,className:"attach-input",type:"file",multiple:!0,onChange:a=>{aa(Array.from(a.target.files??[])),a.target.value=""}}),(0,b.jsx)("button",{type:"button",className:"attach-word",onClick:()=>X.current?.click(),children:"Attach"}),(0,b.jsx)("button",{type:"button",className:"send-btn",disabled:S,onClick:()=>void ab(),children:S?"Sending…":"Send"})]}):null]})}])},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]})]})}])},25073,4921,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(59807);a.s(["default",0,function({failure:a}){let[e,f]=(0,c.useState)("idle"),g=(0,d.severityLabel)(a.severity),h=(0,c.useId)();async function i(){try{await navigator.clipboard.writeText(a.detail),f("copied")}catch{f("failed")}}return(0,b.jsxs)("div",{className:`runtime-failure runtime-failure-${a.severity}`,role:"status","aria-labelledby":h,"data-runtime-failure":a.kind,children:[(0,b.jsxs)("p",{className:"runtime-failure-title",id:h,children:[(0,b.jsx)("span",{className:"runtime-failure-severity",children:g}),a.title]}),(0,b.jsx)("p",{className:"runtime-failure-recovery",children:a.recovery}),(0,b.jsxs)("details",{className:"runtime-failure-details",children:[(0,b.jsx)("summary",{children:"Details"}),(0,b.jsx)("code",{className:"runtime-failure-detail",children:a.detail}),(0,b.jsx)("button",{type:"button",className:"runtime-failure-copy",onClick:()=>{i()},children:"copied"===e?"Copied":"failed"===e?"Copy failed":"Copy details"})]})]})}],25073);let e={blocked:"Needs approval",rejected:"Not started",allowed:"Allowed",denied:"Denied",waiting:"Queued",stopped:"Stopped"};a.s(["default",0,function({notice:a,onDone:d}){let[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(""),j="blocked"!==a.tone||a.actionable?e[a.tone]:"Blocked",k=async b=>{if(!f&&a.wakeId){g(!0),i("");try{let c=await fetch(`/api/wakes/${a.wakeId}/decision`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decision:b})});if(!c.ok){let a=await c.json().catch(()=>null);i("string"==typeof a?.error?.message?a.error.message:"The decision could not be recorded.")}}catch{i("The decision could not be recorded.")}finally{g(!1),d()}}};return(0,b.jsxs)("div",{className:`wake-notice wake-notice-${a.tone}`,role:"status","data-wake-notice":a.tone,"data-wake-id":a.wakeId??void 0,children:[(0,b.jsxs)("p",{className:"wake-notice-line",children:[(0,b.jsx)("span",{className:"wake-notice-label",children:j}),a.text]}),a.actionable?(0,b.jsxs)("div",{className:"wake-notice-actions",children:[(0,b.jsx)("button",{type:"button",className:"approve-control",disabled:f,onClick:()=>{k("allow")},children:"Allow"}),(0,b.jsx)("button",{type:"button",className:"approve-control",style:{marginLeft:8},disabled:f,onClick:()=>{k("deny")},children:"Deny"})]}):null,h?(0,b.jsx)("p",{className:"wake-notice-error",role:"alert",children:h}):null]})}],4921)},45559,a=>{"use strict";a.s(["draftTitle",0,function(a){return"email"===a?"New Email":"New Slack Message"},"parseApprovalCode",0,function(a){let b=a.match(/approve using the code ([A-Za-z0-9][A-Za-z0-9_-]*)/i);return b?b[1]:null},"parseDraft",0,function(a){let b,c=a.match(/^\s*\[draft\]\s*([\s\S]*)$/);if(!c)return null;try{b=JSON.parse(c[1])}catch{return null}if(!b||"object"!=typeof b)return null;let d=b;return"email"!==d.channel&&"slack"!==d.channel||"open"!==d.state&&"sent"!==d.state&&"discarded"!==d.state||"string"!=typeof d.recipient||"string"!=typeof d.body?null:{channel:d.channel,recipient:d.recipient,body:d.body,state:d.state}},"parseFileNames",0,function(a){let b=[];for(let c of a.split("\n")){let a=c.match(/^\s*\[file\]\s*(\S+)\s*$/i);a&&!b.includes(a[1])&&b.push(a[1])}return b},"parseHandoff",0,function(a){let b=a.match(/^\s*\[Handing off to ([^\]]+)\]/);return b&&b[1].trim()||null}])},67588,a=>{"use strict";a.s(["ownerConversationEyebrow",0,function(a){return"direct"===a.type?"Direct conversation":"group"===a.type?"Shared history":a.origin?.kind==="service"?"External-service history":"Agent-to-agent history"},"ownerConversationTypeLabel",0,function(a){return"direct"===a.type?"Direct":"group"===a.type?"Shared":a.origin?.kind==="service"?"External service":"Agent to agent"}])},11030,a=>{"use strict";a.s(["wakeNotices",0,function(a){let b=[],c=new Map;return a.forEach((d,e)=>{let f="string"==typeof d.data.target_name?d.data.target_name:null;d.requestId&&f&&c.set(d.requestId,f);let g=function(a){switch(a.kind){case"wake_blocked":return"blocked";case"wake_rejected":return"rejected";case"lineage_stopped":return"stopped";case"wake_accepted":return"string"==typeof a.data.reason?"allowed":null;case"request_cancelled":return"grant_denied"===a.data.reason?"denied":null;case"request_queued":return"capacity"===a.data.waiting_for?"waiting":null;default:return null}}(d);if(!g)return;let h=Array.isArray(d.data.actions)?d.data.actions:[],i=null!==d.requestId&&a.slice(e+1).some(a=>a.requestId===d.requestId);if("waiting"===g&&i)return;let j=d.requestId?c.get(d.requestId):void 0,k="denied"===g&&j?`Wake denied: ${j} — no work ran`:"waiting"===g&&j?`Queued: ${j} — waiting for capacity`:d.text;b.push({eventId:d.eventId,wakeId:d.wakeId,tone:g,text:k,actionable:"blocked"===g&&!!d.wakeId&&h.includes("allow")&&h.includes("deny")&&!i,createdAt:d.createdAt})}),b}])}];
2
+
3
+ //# sourceMappingURL=_00qrupp._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[45343,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(20851);a.s(["default",0,function(){let[a,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(0),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(0);return(0,c.useEffect)(()=>{let a=!1;return fetch("/api/bots/availability",{cache:"no-store"}).then(async b=>{if(!b.ok)throw Error("request failed");let c=await b.json();if(a)return;let d=Array.isArray(c.agents)?c.agents:null;if(!d)throw Error("request failed");f(new Set(d.filter(a=>a.launchable).map(a=>a.agent))),h(Date.now()),j(!1)}).catch(()=>{a||j(!0)}),()=>{a=!0}},[k]),(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:"/",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:"Local runtime status 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:"Local runtimes"}),null!==a?(0,b.jsxs)("span",{className:"text-sm cfg-faint",children:["Checked ",(0,e.formatClock)(g)]}):null]}),i&&null===a?(0,b.jsxs)("p",{className:"text-sm cfg-muted",children:["Couldn't check the local runtimes."," ",(0,b.jsx)("button",{onClick:()=>l(a=>a+1),className:"cfg-link",children:"Retry"})]}):null===a?(0,b.jsx)("div",{className:"h-10 rounded-lg animate-pulse cfg-skel"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dl",{className:"text-sm",children:e.AGENT_OPTIONS.map(c=>{let d=a.has(c.value);return(0,b.jsxs)("div",{className:"flex justify-between gap-4 py-1 border-t cfg-line",children:[(0,b.jsx)("dt",{className:"cfg-muted",children:c.label}),(0,b.jsx)("dd",{className:d?"cfg-ok":"cfg-faint",children:d?"● Ready":"○ Not available"})]},c.value)})}),(0,b.jsx)("p",{className:"mt-2 text-xs cfg-faint",children:"Coding Agents need their provider CLI installed and signed in on this computer; Hermes needs the gateway key. A runtime that is not available here cannot launch an Agent until it is fixed."}),(0,b.jsx)("button",{onClick:()=>l(a=>a+1),className:"mt-3 cfg-btn-ghost text-sm w-full sm:w-auto",children:"Re-check"})]})]})]})})}])},20851,22151,a=>{"use strict";let b=["hermes","cursor","claude","codex","muse"],c={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},d="hermes";function e(a){return b.includes(String(a))?c[a]:String(a??"")}b.join("|"),a.s(["AGENTS",0,b,"AGENT_LABELS",0,c,"DEFAULT_AGENT",0,d,"agentLabel",0,e],22151);let f=b.map(a=>({value:a,label:c[a]}));function g(a){return e((a.agent??"").trim()||d)}function h(a){let b=a.runtime_connection;return b&&b.label.trim()?b.label.trim():(a.runtime_connection_id??"").trim()?(a.runtime_connection_id??"").trim():null}function i(a){return`~/.botmancers/${a}`}let j="~/.botmancers/{agentID}",k=`Default: ${j} — {agentID} is this agent's ID, assigned at creation.`;function l(a){return String(a).padStart(2,"0")}let m=[{prefix:"[Agent failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck handoff]",kind:"handoff",label:"Agent launch"},{prefix:"[Deck run]",kind:"run",label:"Agent run"},{prefix:"[Deck review]",kind:"review",label:"Agent review"},{prefix:"[Deck resume]",kind:"resume",label:"Agent resume"},{prefix:"[Deck result]",kind:"result",label:"Agent result"},{prefix:"[Deck failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck needs selection]",kind:"reselection",label:"Agent needs setup"},{prefix:"[Deck needs reselection]",kind:"reselection",label:"Agent needs setup"}];a.s(["AGENT_OPTIONS",0,f,"NEW_AGENT_WORKSPACE_HINT",0,k,"WORKSPACE_TEMPLATE",0,j,"agentEventDisplay",0,function(a){let b=String(a??"").trimStart(),c=m.find(a=>b.startsWith(a.prefix));return c?{label:c.label,detail:b.slice(c.prefix.length).trim()}:null},"botAgentLabel",0,g,"botConnectionLabel",0,h,"configWorkspaceHint",0,function(a){return`Default: ${i(a)} — leave blank to use it.`},"defaultWorkdirFor",0,i,"formatClock",0,function(a){let b=new Date(a);return`${l(b.getHours())}:${l(b.getMinutes())}:${l(b.getSeconds())}`},"rosterRuntimeLine",0,function(a){let b=`Agent: ${g(a)} \xb7 `+(h(a)??"No connection");return!1===a.launchable?b+" — see Config":b}],20851)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
1
+ module.exports=[45343,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(20851);a.s(["default",0,function(){let[a,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(0),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(0);return(0,c.useEffect)(()=>{let a=!1;return fetch("/api/bots/availability",{cache:"no-store"}).then(async b=>{if(!b.ok)throw Error("request failed");let c=await b.json();if(a)return;let d=Array.isArray(c.agents)?c.agents:null;if(!d)throw Error("request failed");f(new Set(d.filter(a=>a.launchable).map(a=>a.agent))),h(Date.now()),j(!1)}).catch(()=>{a||j(!0)}),()=>{a=!0}},[k]),(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:"/",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:"Local runtime status 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:"Local runtimes"}),null!==a?(0,b.jsxs)("span",{className:"text-sm cfg-faint",children:["Checked ",(0,e.formatClock)(g)]}):null]}),i&&null===a?(0,b.jsxs)("p",{className:"text-sm cfg-muted",children:["Couldn't check the local runtimes."," ",(0,b.jsx)("button",{onClick:()=>l(a=>a+1),className:"cfg-link",children:"Retry"})]}):null===a?(0,b.jsx)("div",{className:"h-10 rounded-lg animate-pulse cfg-skel"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dl",{className:"text-sm",children:e.AGENT_OPTIONS.map(c=>{let d=a.has(c.value);return(0,b.jsxs)("div",{className:"flex justify-between gap-4 py-1 border-t cfg-line",children:[(0,b.jsx)("dt",{className:"cfg-muted",children:c.label}),(0,b.jsx)("dd",{className:d?"cfg-ok":"cfg-faint",children:d?"● Ready":"○ Not available"})]},c.value)})}),(0,b.jsx)("p",{className:"mt-2 text-xs cfg-faint",children:"Coding Agents need their provider CLI installed and signed in on this computer; Hermes needs the gateway key. A runtime that is not available here cannot launch an agent until it is fixed."}),(0,b.jsx)("button",{onClick:()=>l(a=>a+1),className:"mt-3 cfg-btn-ghost text-sm w-full sm:w-auto",children:"Re-check"})]})]})]})})}])},20851,22151,a=>{"use strict";let b=["hermes","cursor","claude","codex","muse"],c={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},d="hermes";function e(a){return b.includes(String(a))?c[a]:String(a??"")}b.join("|"),a.s(["AGENTS",0,b,"AGENT_LABELS",0,c,"DEFAULT_AGENT",0,d,"agentLabel",0,e],22151);let f=b.map(a=>({value:a,label:c[a]}));function g(a){return e((a.agent??"").trim()||d)}function h(a){let b=a.runtime_connection;return b&&b.label.trim()?b.label.trim():(a.runtime_connection_id??"").trim()?(a.runtime_connection_id??"").trim():null}function i(a){return`~/.botmancers/${a}`}let j="~/.botmancers/{agentID}",k=`Default: ${j} — {agentID} is this agent's ID, assigned at creation.`;function l(a){return String(a).padStart(2,"0")}let m=[{prefix:"[Agent failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck handoff]",kind:"handoff",label:"Agent launch"},{prefix:"[Deck run]",kind:"run",label:"Agent run"},{prefix:"[Deck review]",kind:"review",label:"Agent review"},{prefix:"[Deck resume]",kind:"resume",label:"Agent resume"},{prefix:"[Deck result]",kind:"result",label:"Agent result"},{prefix:"[Deck failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck needs selection]",kind:"reselection",label:"Agent needs setup"},{prefix:"[Deck needs reselection]",kind:"reselection",label:"Agent needs setup"}];a.s(["AGENT_OPTIONS",0,f,"NEW_AGENT_WORKSPACE_HINT",0,k,"WORKSPACE_TEMPLATE",0,j,"agentEventDisplay",0,function(a){let b=String(a??"").trimStart(),c=m.find(a=>b.startsWith(a.prefix));return c?{label:c.label,detail:b.slice(c.prefix.length).trim()}:null},"botAgentLabel",0,g,"botConnectionLabel",0,h,"configWorkspaceHint",0,function(a){return`Default: ${i(a)} — leave blank to use it.`},"defaultWorkdirFor",0,i,"formatClock",0,function(a){let b=new Date(a);return`${l(b.getHours())}:${l(b.getMinutes())}:${l(b.getSeconds())}`},"rosterRuntimeLine",0,function(a){let b=`Agent: ${g(a)} \xb7 `+(h(a)??"No connection");return!1===a.launchable?b+" — see Config":b}],20851)},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
2
2
 
3
3
  This segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.
4
4
 
@@ -0,0 +1,3 @@
1
+ module.exports=[98295,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(15722),f=a.i(67588);a.s(["default",0,function(){let{id:a,overview:g,loading:h,error:i,notFound:j}=(0,e.useAgentOverview)(),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(null),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(0),y=(0,c.useCallback)(async(b,c)=>{if(a){c&&v(!0);try{let d=new URLSearchParams({limit:"30"});q&&d.set("q",q),b&&d.set("cursor",b);let e=await fetch(`/api/bots/${encodeURIComponent(a)}/conversations?${d}`,{cache:"no-store"}),f=await e.json().catch(()=>null);if(!e.ok||!f||!Array.isArray(f.conversations))throw Error("load");l(a=>c&&a?[...a,...f.conversations]:f.conversations),n(f.next_cursor),t("")}catch{t("Could not load conversations.")}finally{v(!1)}}},[q,a]);return((0,c.useEffect)(()=>{let a=window.setTimeout(()=>{l(null),y(null,!1)},0);return()=>window.clearTimeout(a)},[y,w]),h)?(0,b.jsx)("div",{className:"agent-state",role:"status",children:"Loading agent conversations…"}):j?(0,b.jsxs)("div",{className:"agent-state",children:[(0,b.jsx)("h2",{children:"Agent not found"}),(0,b.jsx)(d.default,{href:"/",children:"Choose an agent"})]}):i||!g?(0,b.jsx)("div",{className:"agent-state",role:"alert",children:"This agent’s conversations are unavailable."}):(0,b.jsxs)("div",{className:"conversation-index","data-agent-conversations":!0,children:[(0,b.jsxs)("header",{className:"conversation-index-head",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"agent-eyebrow",children:"Conversations"}),(0,b.jsx)("h2",{children:"Durable history"}),(0,b.jsxs)("p",{children:["Direct messages, agent handoffs, and connected-service conversations involving ",g.agent.name,"."]})]}),g.conversation?(0,b.jsxs)(d.default,{className:"agent-primary-action",href:`/agents/${encodeURIComponent(a)}/conversations/${encodeURIComponent(g.conversation.id)}`,children:["Message ",g.agent.name]}):null]}),(0,b.jsxs)("form",{className:"conversation-search",role:"search",onSubmit:a=>{a.preventDefault(),r(o.trim())},children:[(0,b.jsx)("label",{htmlFor:"conversation-query",children:"Search conversations"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("input",{id:"conversation-query",value:o,onChange:a=>p(a.target.value),placeholder:"Participant, origin, or type"}),(0,b.jsx)("button",{type:"submit",children:"Search"})]})]}),null!==k||s?null:(0,b.jsx)("p",{className:"conversation-state",role:"status","data-conversation-state":"loading",children:"Loading conversations…"}),s?(0,b.jsxs)("div",{className:"conversation-state",role:"alert","data-conversation-state":"error",children:[(0,b.jsx)("p",{children:s}),(0,b.jsx)("button",{type:"button",onClick:()=>x(a=>a+1),children:"Retry"})]}):null,k?.length!==0||s?null:(0,b.jsx)("p",{className:"conversation-state","data-conversation-state":"empty",children:q?"No conversations match this search.":"No conversations involve this agent yet."}),k&&k.length>0?(0,b.jsx)("ol",{className:"conversation-list","aria-label":"Conversations, newest activity first",children:k.map(c=>(0,b.jsx)("li",{children:(0,b.jsxs)(d.default,{href:`/agents/${encodeURIComponent(a)}/conversations/${encodeURIComponent(c.conversation_id)}`,children:[(0,b.jsxs)("span",{className:"conversation-row-title",children:[(0,b.jsx)("strong",{children:c.label}),(0,b.jsx)("span",{children:(0,f.ownerConversationTypeLabel)(c)})]}),(0,b.jsx)("span",{className:"conversation-row-participants",children:c.participants.map(a=>a.label).join(" · ")}),(0,b.jsxs)("span",{className:"conversation-row-meta",children:[(0,b.jsxs)("span",{children:["Origin: ",c.origin?.label??"Unknown"]}),(0,b.jsxs)("span",{children:[c.message_count," ",1===c.message_count?"message":"messages"]}),(0,b.jsx)("time",{dateTime:new Date(c.last_activity_at).toISOString(),children:new Date(c.last_activity_at).toLocaleString()})]})]})},c.conversation_id))}):null,m&&k&&!s?(0,b.jsx)("button",{className:"conversation-more",type:"button",disabled:u,onClick:()=>void y(m,!0),children:u?"Loading…":"Load older conversations"}):null]})}])},67588,a=>{"use strict";a.s(["ownerConversationEyebrow",0,function(a){return"direct"===a.type?"Direct conversation":"group"===a.type?"Shared history":a.origin?.kind==="service"?"External-service history":"Agent-to-agent history"},"ownerConversationTypeLabel",0,function(a){return"direct"===a.type?"Direct":"group"===a.type?"Shared":a.origin?.kind==="service"?"External service":"Agent to agent"}])}];
2
+
3
+ //# sourceMappingURL=_0d7gv3q._.js.map
@@ -1,4 +1,4 @@
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]})]})}])},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."})})]})]})}])},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
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]})]})}])},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."})})]})]})}])},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
2
2
 
3
3
  This segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports=[15722,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(50944),f=a.i(36391),g=a.i(10014),h=a.i(22151),i=a.i(35832);let j=(0,c.createContext)(null),k=[{label:"Overview",segment:""},{label:"Sessions",segment:"sessions"},{label:"Conversations",segment:"conversations"},{label:"Slack",segment:"slack"},{label:"Activity",segment:"activity"},{label:"Config",segment:"config"}];a.s(["default",0,function({children:a}){let l=String((0,e.useParams)().id??""),m=(0,e.usePathname)(),n=(0,e.useRouter)(),o=(0,e.useSearchParams)(),[p,q]=(0,c.useState)([]),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(!0),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(()=>{let a=Number(o.get("deleted"))||0;return a>0?(0,i.deletedStatusLine)(a):""}),[B,C]=(0,c.useState)({serverNow:0,fetchedAt:0}),[D,E]=(0,c.useState)(()=>Date.now()),F=(0,c.useCallback)(async a=>{try{let[b,c]=await Promise.all([fetch("/api/bots",{cache:"no-store"}),fetch(`/api/bots/${encodeURIComponent(l)}/overview`,{cache:"no-store"})]),d=b.ok?await b.json():[];if(a())return;q(Array.isArray(d)?d:[]);let e=Date.parse(b.headers.get("date")||"");if(C({serverNow:Number.isNaN(e)?Date.now():e,fetchedAt:Date.now()}),404===c.status){y(!0),s(null),w(!1);return}if(!c.ok)throw Error("overview request failed");let f=await c.json();if(a())return;s(f),y(!1),w(!1)}catch{a()||w(!0)}finally{a()||u(!1)}},[l]);(0,c.useEffect)(()=>{let a=!1,b=()=>a,c=window.setTimeout(()=>{F(b)},0),d=window.setInterval(()=>{F(b)},2e3),e=window.setInterval(()=>E(Date.now()),1e3);return()=>{a=!0,window.clearTimeout(c),window.clearInterval(d),window.clearInterval(e)}},[F]);let G=r?.agent,H=r?.runtime;return(0,b.jsx)(j.Provider,{value:{id:l,agents:p,overview:r,loading:t,error:v,notFound:x},children:(0,b.jsxs)("div",{className:"field agent-field",children:[(0,b.jsx)(g.default,{agents:p,activeAgentId:l,beatClock:B,now:D,status:z,onAgentsChange:q,onNew:()=>n.push("/?new=1"),onManage:()=>n.push("/?manage=1"),onDeleted:a=>{A((0,i.deletedStatusLine)(a.length)),a.some(a=>a.id===l)&&n.replace(`/?deleted=${a.length}`)}}),(0,b.jsxs)("section",{className:"pane agent-pane",children:[(0,b.jsxs)("header",{className:"agent-shell-header",children:[(0,b.jsxs)("div",{className:"agent-shell-identity",children:[G?(0,b.jsx)(f.default,{bot:G,size:48,title:`${G.name} avatar`}):null,(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"agent-shell-kicker",children:"Agent"}),(0,b.jsx)("h1",{children:G?.name??(t?"Loading…":"Unknown Agent")}),G?(0,b.jsx)("p",{children:G.role}):null]})]}),H?(0,b.jsxs)("div",{className:"agent-shell-runtime","aria-label":"Runtime and availability",children:[(0,b.jsx)("span",{className:H.available?"availability is-available":"availability is-blocked",children:H.available?"Available":"Needs setup"}),(0,b.jsxs)("span",{children:[(0,h.agentLabel)(H.agent)," · ",H.connection||"No connection"]})]}):null]}),(0,b.jsx)("nav",{className:"agent-tabs","aria-label":"Agent",children:k.map(a=>{let c=`/agents/${encodeURIComponent(l)}${a.segment?`/${a.segment}`:""}`,e=m===c;return(0,b.jsx)(d.default,{href:c,"aria-current":e?"page":void 0,children:a.label},a.label)})}),(0,b.jsx)("main",{className:"agent-content",children:a})]})]})})},"useAgentOverview",0,function(){let a=(0,c.useContext)(j);if(!a)throw Error("useAgentOverview must be used inside AgentShell");return a}])},20851,22151,a=>{"use strict";let b=["hermes","cursor","claude","codex","muse"],c={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},d="hermes";function e(a){return b.includes(String(a))?c[a]:String(a??"")}b.join("|"),a.s(["AGENTS",0,b,"AGENT_LABELS",0,c,"DEFAULT_AGENT",0,d,"agentLabel",0,e],22151);let f=b.map(a=>({value:a,label:c[a]}));function g(a){return e((a.agent??"").trim()||d)}function h(a){let b=a.runtime_connection;return b&&b.label.trim()?b.label.trim():(a.runtime_connection_id??"").trim()?(a.runtime_connection_id??"").trim():null}function i(a){return`~/.botmancers/${a}`}let j="~/.botmancers/{agentID}",k=`Default: ${j} — {agentID} is this agent's ID, assigned at creation.`;function l(a){return String(a).padStart(2,"0")}let m=[{prefix:"[Agent failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck handoff]",kind:"handoff",label:"Agent launch"},{prefix:"[Deck run]",kind:"run",label:"Agent run"},{prefix:"[Deck review]",kind:"review",label:"Agent review"},{prefix:"[Deck resume]",kind:"resume",label:"Agent resume"},{prefix:"[Deck result]",kind:"result",label:"Agent result"},{prefix:"[Deck failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck needs selection]",kind:"reselection",label:"Agent needs setup"},{prefix:"[Deck needs reselection]",kind:"reselection",label:"Agent needs setup"}];a.s(["AGENT_OPTIONS",0,f,"NEW_AGENT_WORKSPACE_HINT",0,k,"WORKSPACE_TEMPLATE",0,j,"agentEventDisplay",0,function(a){let b=String(a??"").trimStart(),c=m.find(a=>b.startsWith(a.prefix));return c?{label:c.label,detail:b.slice(c.prefix.length).trim()}:null},"botAgentLabel",0,g,"botConnectionLabel",0,h,"configWorkspaceHint",0,function(a){return`Default: ${i(a)} — leave blank to use it.`},"defaultWorkdirFor",0,i,"formatClock",0,function(a){let b=new Date(a);return`${l(b.getHours())}:${l(b.getMinutes())}:${l(b.getSeconds())}`},"rosterRuntimeLine",0,function(a){let b=`Agent: ${g(a)} \xb7 `+(h(a)??"No connection");return!1===a.launchable?b+" — see Config":b}],20851)},33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},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)},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
1
+ module.exports=[15722,78627,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(50944),f=a.i(36391);let g={cursor:"/brand/harness/cursor.svg",claude:"/brand/harness/claude.svg",codex:"/brand/harness/codex.png",muse:"/brand/harness/muse.svg"};function h({src:a,className:c,size:d=16}){return(0,b.jsx)("span",{className:c?`harness-icon ${c}`:"harness-icon",style:{width:d,height:d},"aria-hidden":"true",children:(0,b.jsx)("img",{src:a,alt:"",width:d,height:d,draggable:!1})})}function i({agent:a,className:c,size:d=16}){let e=g[String(a??"")];return e?(0,b.jsx)(h,{src:e,className:c,size:d}):null}a.s(["HarnessIcon",0,i],78627);var j=a.i(22151);let k={unsupported:"not reported by provider",missing:"no data yet",expired:"expired",unparsable:"provider data unparsable",stale:"stale"},l=new Set(["claude","codex","muse"]);function m(a,b){let c=a.remainingPercent??0,d=Math.round(c),e=a.resetAt?`, resets ${new Date(a.resetAt).toLocaleString()}`:"";return{key:a.windowKey,label:b,kind:"known",remaining:d,rawRemaining:c,title:`${b}: ${d}% remaining${e}`}}function n(a,b,c){return{key:a,label:b,kind:"unknown",reason:c,title:`${b}: N/A (${k[c]})`}}function o(a,b,c,d){let e=a.find(a=>a.criticalRole===b)??null;return e&&null===e.unavailableReason&&null!==e.remainingPercent?m(e,c):e?.unavailableReason?n(e.windowKey,c,e.unavailableReason):n(`missing-${c}`,c,d??"missing")}function p(a){if("cursor"===a.runtime){let b=a.windows.find(a=>"billing_cycle"===a.windowKey)??null;return b&&null===b.unavailableReason&&null!==b.remainingPercent?[m(b,"1M")]:b?.unavailableReason?[n(b.windowKey,"1M",b.unavailableReason)]:[n("missing-1M","1M",a.unavailableReason??"missing")]}return l.has(a.runtime)?[o(a.windows,"five_hour","5H",a.unavailableReason),o(a.windows,"weekly","1W",a.unavailableReason)]:[]}function q({row:a}){var c;if("unknown"===a.kind)return(0,b.jsxs)("span",{className:"topbar-capacity-window is-unknown","data-window":a.label,"data-window-known":"false",title:a.title,children:[(0,b.jsx)("span",{className:"topbar-capacity-window-label",children:a.label}),(0,b.jsx)("span",{children:"N/A"})]});let d=(c=a.rawRemaining)<10?"critical":c<30?"warning":"normal";return(0,b.jsxs)("span",{className:`topbar-capacity-window is-${d}`,"data-window":a.label,"data-window-known":"true","data-severity":d,title:a.title,children:[(0,b.jsx)("span",{className:"topbar-capacity-window-label",children:a.label}),(0,b.jsxs)("span",{children:[a.remaining,"%"]})]})}function r({entry:a}){let c=p(a),d=c.some(a=>"known"===a.kind),e=c.some(a=>"known"===a.kind&&0===a.rawRemaining),f=(0,j.agentLabel)(a.runtime)||a.runtime;return(0,b.jsxs)("span",{className:e?"topbar-capacity-runtime is-exhausted":"topbar-capacity-runtime","data-testid":`topbar-capacity-${a.runtime}`,"data-known":d?"true":"false","data-exhausted":e?"true":"false",role:"group","aria-label":`${f} capacity`,title:c.map(a=>a.title).join("; ")||`${f}: N/A`,children:[(0,b.jsx)(i,{agent:a.runtime,size:16}),0===c.length?(0,b.jsx)("span",{className:"topbar-capacity-window is-unknown",children:"N/A"}):(0,b.jsx)("span",{className:"topbar-capacity-windows",children:c.map(a=>(0,b.jsx)(q,{row:a},a.key))})]})}function s({state:a}){if("loading"===a.status)return(0,b.jsxs)("div",{className:"topbar-capacity","data-testid":"topbar-capacity","data-status":"loading",title:"Runtime capacity is loading",children:[(0,b.jsx)("span",{className:"topbar-capacity-eyebrow",children:"Capacity"}),(0,b.jsx)("span",{"aria-live":"polite",children:"loading…"})]});if("unavailable"===a.status)return(0,b.jsxs)("div",{className:"topbar-capacity","data-testid":"topbar-capacity","data-status":"unavailable",title:"Runtime capacity is unavailable",children:[(0,b.jsx)("span",{className:"topbar-capacity-eyebrow",children:"Capacity"}),(0,b.jsx)("span",{children:"unavailable"})]});let c=a.data.runtimes,d=0===c.length||c.every(a=>!p(a).some(a=>"known"===a.kind));return(0,b.jsxs)("div",{className:"topbar-capacity","data-testid":"topbar-capacity","data-status":d?"unknown":"ready",title:0===c.length?"No coding harness capacity reported":void 0,children:[(0,b.jsx)("span",{className:"topbar-capacity-eyebrow",children:"Capacity"}),0===c.length?(0,b.jsx)("span",{className:"topbar-capacity-empty",children:"N/A"}):c.map(a=>(0,b.jsx)(r,{entry:a},a.runtime))]})}function t({refreshMs:a=6e4}){let[d,e]=(0,c.useState)({status:"loading"});return(0,c.useEffect)(()=>{let b=!1,c=()=>{fetch("/api/runtime-capacity",{cache:"no-store"}).then(async a=>{if(!a.ok)throw Error("capacity request failed");return a.json()}).then(a=>{b||e({status:"ready",data:a})}).catch(()=>{b||e({status:"unavailable"})})};c();let d=window.setInterval(c,a);return()=>{b=!0,window.clearInterval(d)}},[a]),(0,b.jsx)(s,{state:d})}var u=a.i(10014),v=a.i(35832);let w=(0,c.createContext)(null),x=[{label:"Overview",segment:""},{label:"Sessions",segment:"sessions"},{label:"Conversations",segment:"conversations"},{label:"Slack",segment:"slack"},{label:"Activity",segment:"activity"},{label:"Config",segment:"config"}];a.s(["default",0,function({children:a}){let g=String((0,e.useParams)().id??""),h=(0,e.usePathname)(),k=(0,e.useRouter)(),l=(0,e.useSearchParams)(),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!0),[s,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(()=>{let a=Number(l.get("deleted"))||0;return a>0?(0,v.deletedStatusLine)(a):""}),[D,E]=(0,c.useState)({serverNow:0,fetchedAt:0}),[F,G]=(0,c.useState)(()=>Date.now()),H=(0,c.useCallback)(async a=>{try{let[b,c]=await Promise.all([fetch("/api/bots",{cache:"no-store"}),fetch(`/api/bots/${encodeURIComponent(g)}/overview`,{cache:"no-store"})]),d=b.ok?await b.json():[];if(a())return;n(Array.isArray(d)?d:[]);let e=Date.parse(b.headers.get("date")||"");if(E({serverNow:Number.isNaN(e)?Date.now():e,fetchedAt:Date.now()}),404===c.status){A(!0),p(null),y(!1);return}if(!c.ok)throw Error("overview request failed");let f=await c.json();if(a())return;p(f),A(!1),y(!1)}catch{a()||y(!0)}finally{a()||r(!1)}},[g]);(0,c.useEffect)(()=>{let a=!1,b=()=>a,c=window.setTimeout(()=>{H(b)},0),d=window.setInterval(()=>{H(b)},2e3),e=window.setInterval(()=>G(Date.now()),1e3);return()=>{a=!0,window.clearTimeout(c),window.clearInterval(d),window.clearInterval(e)}},[H]);let I=o?.agent,J=o?.runtime;return(0,b.jsx)(w.Provider,{value:{id:g,agents:m,overview:o,loading:q,error:s,notFound:z},children:(0,b.jsxs)("div",{className:"field agent-field",children:[(0,b.jsx)(u.default,{agents:m,activeAgentId:g,beatClock:D,now:F,status:B,onAgentsChange:n,onNew:()=>k.push("/?new=1"),onManage:()=>k.push("/?manage=1"),onDeleted:a=>{C((0,v.deletedStatusLine)(a.length)),a.some(a=>a.id===g)&&k.replace(`/?deleted=${a.length}`)}}),(0,b.jsxs)("section",{className:"pane agent-pane",children:[(0,b.jsx)(t,{}),(0,b.jsxs)("header",{className:"agent-shell-header",children:[(0,b.jsxs)("div",{className:"agent-shell-identity",children:[I?(0,b.jsx)(f.default,{bot:I,size:48,title:`${I.name} avatar`}):null,(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"agent-shell-kicker",children:"Agent"}),(0,b.jsx)("h1",{children:I?.name??(q?"Loading…":"Unknown agent")}),I?(0,b.jsx)("p",{children:I.role}):null]})]}),J?(0,b.jsxs)("div",{className:"agent-shell-runtime","aria-label":"Runtime and availability",children:[(0,b.jsx)("span",{className:J.available?"availability is-available":"availability is-blocked",children:J.available?"Available":"Needs setup"}),(0,b.jsxs)("span",{className:"agent-shell-runtime-line",children:[(0,b.jsx)(i,{agent:J.agent,size:14}),(0,b.jsxs)("span",{children:[(0,j.agentLabel)(J.agent)," · ",J.connection||"No connection"]})]})]}):null]}),(0,b.jsx)("nav",{className:"agent-tabs","aria-label":"Agent",children:x.map(a=>{let c=`/agents/${encodeURIComponent(g)}${a.segment?`/${a.segment}`:""}`,e=h===c;return(0,b.jsx)(d.default,{href:c,"aria-current":e?"page":void 0,children:a.label},a.label)})}),(0,b.jsx)("main",{className:"agent-content",children:a})]})]})})},"useAgentOverview",0,function(){let a=(0,c.useContext)(w);if(!a)throw Error("useAgentOverview must be used inside AgentShell");return a}],15722)},20851,22151,a=>{"use strict";let b=["hermes","cursor","claude","codex","muse"],c={hermes:"Hermes",cursor:"Cursor",claude:"Claude",codex:"Codex",muse:"Muse Code"},d="hermes";function e(a){return b.includes(String(a))?c[a]:String(a??"")}b.join("|"),a.s(["AGENTS",0,b,"AGENT_LABELS",0,c,"DEFAULT_AGENT",0,d,"agentLabel",0,e],22151);let f=b.map(a=>({value:a,label:c[a]}));function g(a){return e((a.agent??"").trim()||d)}function h(a){let b=a.runtime_connection;return b&&b.label.trim()?b.label.trim():(a.runtime_connection_id??"").trim()?(a.runtime_connection_id??"").trim():null}function i(a){return`~/.botmancers/${a}`}let j="~/.botmancers/{agentID}",k=`Default: ${j} — {agentID} is this agent's ID, assigned at creation.`;function l(a){return String(a).padStart(2,"0")}let m=[{prefix:"[Agent failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck handoff]",kind:"handoff",label:"Agent launch"},{prefix:"[Deck run]",kind:"run",label:"Agent run"},{prefix:"[Deck review]",kind:"review",label:"Agent review"},{prefix:"[Deck resume]",kind:"resume",label:"Agent resume"},{prefix:"[Deck result]",kind:"result",label:"Agent result"},{prefix:"[Deck failed]",kind:"failed",label:"Agent failed"},{prefix:"[Deck needs selection]",kind:"reselection",label:"Agent needs setup"},{prefix:"[Deck needs reselection]",kind:"reselection",label:"Agent needs setup"}];a.s(["AGENT_OPTIONS",0,f,"NEW_AGENT_WORKSPACE_HINT",0,k,"WORKSPACE_TEMPLATE",0,j,"agentEventDisplay",0,function(a){let b=String(a??"").trimStart(),c=m.find(a=>b.startsWith(a.prefix));return c?{label:c.label,detail:b.slice(c.prefix.length).trim()}:null},"botAgentLabel",0,g,"botConnectionLabel",0,h,"configWorkspaceHint",0,function(a){return`Default: ${i(a)} — leave blank to use it.`},"defaultWorkdirFor",0,i,"formatClock",0,function(a){let b=new Date(a);return`${l(b.getHours())}:${l(b.getMinutes())}:${l(b.getSeconds())}`},"rosterRuntimeLine",0,function(a){let b=`Agent: ${g(a)} \xb7 `+(h(a)??"No connection");return!1===a.launchable?b+" — see Config":b}],20851)},33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},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)},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
2
2
 
3
3
  This segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.
4
4