botmancers 0.10.0 → 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 (185) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +5 -5
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/required-server-files.json +2 -2
  7. package/app/.next/server/app/_global-error.html +1 -1
  8. package/app/.next/server/app/_global-error.rsc +1 -1
  9. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/_not-found.html +1 -1
  15. package/app/.next/server/app/_not-found.rsc +2 -2
  16. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  18. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/app/.next/server/app/agents/[id]/activity/page.js.nft.json +1 -1
  20. package/app/.next/server/app/agents/[id]/activity/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/agents/[id]/config/page.js.nft.json +1 -1
  22. package/app/.next/server/app/agents/[id]/config/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/agents/[id]/conversations/[conversationId]/page.js.nft.json +1 -1
  24. package/app/.next/server/app/agents/[id]/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/agents/[id]/conversations/page.js.nft.json +1 -1
  26. package/app/.next/server/app/agents/[id]/conversations/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  28. package/app/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/agents/[id]/sessions/page.js.nft.json +1 -1
  30. package/app/.next/server/app/agents/[id]/sessions/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/agents/[id]/slack/page.js.nft.json +1 -1
  32. package/app/.next/server/app/agents/[id]/slack/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/api/bots/[id]/activity/route.js.nft.json +1 -1
  34. package/app/.next/server/app/api/bots/[id]/config/route.js.nft.json +1 -1
  35. package/app/.next/server/app/api/bots/[id]/conversations/[conversationId]/route.js.nft.json +1 -1
  36. package/app/.next/server/app/api/bots/[id]/conversations/route.js.nft.json +1 -1
  37. package/app/.next/server/app/api/bots/[id]/overview/route.js.nft.json +1 -1
  38. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/pins/route.js.nft.json +1 -1
  39. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/route.js.nft.json +1 -1
  40. package/app/.next/server/app/api/bots/[id]/sessions/[ref]/shares/route.js.nft.json +1 -1
  41. package/app/.next/server/app/api/bots/[id]/sessions/route.js.nft.json +1 -1
  42. package/app/.next/server/app/api/bots/[id]/sessions/sync/route.js.nft.json +1 -1
  43. package/app/.next/server/app/api/bots/[id]/share-policy/route.js.nft.json +1 -1
  44. package/app/.next/server/app/api/bots/[id]/skill/route.js.nft.json +1 -1
  45. package/app/.next/server/app/api/bots/availability/route.js.nft.json +1 -1
  46. package/app/.next/server/app/api/bots/delete-preview/route.js.nft.json +1 -1
  47. package/app/.next/server/app/api/bots/import/route.js.nft.json +1 -1
  48. package/app/.next/server/app/api/bots/manage/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/bots/name-migrations/route.js.nft.json +1 -1
  50. package/app/.next/server/app/api/bots/route.js.nft.json +1 -1
  51. package/app/.next/server/app/api/conversations/[id]/approve/route.js.nft.json +1 -1
  52. package/app/.next/server/app/api/conversations/[id]/deny/route.js.nft.json +1 -1
  53. package/app/.next/server/app/api/conversations/[id]/draft/route.js.nft.json +1 -1
  54. package/app/.next/server/app/api/conversations/[id]/messages/[messageId]/stop/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/conversations/[id]/stop/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/conversations/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/exchanges/[id]/cancel/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/exchanges/[id]/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/exchanges/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/files/[name]/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/groups/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/mcp/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/messages/[id]/between/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/runtime-capacity/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/runtime-connections/route.js.nft.json +1 -1
  69. package/app/.next/server/app/api/service-grants/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  71. package/app/.next/server/app/api/shares/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/[conversationId]/route.js.nft.json +1 -1
  73. package/app/.next/server/app/api/v0/agents/[agentId]/conversations/route.js.nft.json +1 -1
  74. package/app/.next/server/app/api/v0/agents/[agentId]/messages/route.js.nft.json +1 -1
  75. package/app/.next/server/app/api/v0/agents/[agentId]/pins/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/v0/agents/[agentId]/route.js.nft.json +1 -1
  77. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/[ref]/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/v0/agents/[agentId]/sessions/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/v0/agents/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/v0/capabilities/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/v0/conversations/[id]/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/v0/exchanges/[id]/cancel/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/v0/exchanges/[id]/route.js.nft.json +1 -1
  84. package/app/.next/server/app/api/v0/exchanges/route.js.nft.json +1 -1
  85. package/app/.next/server/app/api/v0/mcp/route.js.nft.json +1 -1
  86. package/app/.next/server/app/api/v0/pins/[pinRef]/detach/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/v0/pins/[pinRef]/messages/route.js.nft.json +1 -1
  88. package/app/.next/server/app/api/v0/pins/[pinRef]/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/v0/requests/[id]/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/v0/sessions/[ref]/messages/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/v0/sessions/[ref]/pins/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/v0/sessions/[ref]/shares/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/v0/shares/[shareRef]/revoke/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/v0/shares/[shareRef]/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/v0/shares/current/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/v0/shares/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/wake-grants/[id]/revoke/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/wakes/[id]/decision/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/wakes/[id]/retry/route.js.nft.json +1 -1
  100. package/app/.next/server/app/bots/[id]/config/page.js.nft.json +1 -1
  101. package/app/.next/server/app/bots/[id]/config/page_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/exchanges/page.js.nft.json +1 -1
  103. package/app/.next/server/app/exchanges/page_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/exchanges.html +1 -1
  105. package/app/.next/server/app/exchanges.rsc +3 -3
  106. package/app/.next/server/app/exchanges.segments/_full.segment.rsc +3 -3
  107. package/app/.next/server/app/exchanges.segments/_tree.segment.rsc +2 -2
  108. package/app/.next/server/app/exchanges.segments/exchanges/__PAGE__.segment.rsc +3 -3
  109. package/app/.next/server/app/index.html +1 -1
  110. package/app/.next/server/app/index.rsc +3 -3
  111. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  112. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  113. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/app/.next/server/app/page.js.nft.json +1 -1
  115. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/settings/page.js.nft.json +1 -1
  117. package/app/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/settings.html +1 -1
  119. package/app/.next/server/app/settings.rsc +3 -3
  120. package/app/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  121. package/app/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  122. package/app/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  123. package/app/.next/server/app/threads/[id]/route.js.nft.json +1 -1
  124. package/app/.next/server/chunks/[root-of-the-server]__0aincj4._.js +1 -1
  125. package/app/.next/server/chunks/[root-of-the-server]__0anfwiu._.js +1 -1
  126. package/app/.next/server/chunks/[root-of-the-server]__0fku-bw._.js +1 -1
  127. package/app/.next/server/chunks/[root-of-the-server]__1280ke1._.js +1 -1
  128. package/app/.next/server/chunks/[root-of-the-server]__13wghn3._.js +4 -4
  129. package/app/.next/server/chunks/[root-of-the-server]__1jxwu9_._.js +2 -2
  130. package/app/.next/server/chunks/_0061c2q._.js +1 -1
  131. package/app/.next/server/chunks/_1-5mthb._.js +1 -1
  132. package/app/.next/server/chunks/_1a0er16._.js +3 -3
  133. package/app/.next/server/chunks/_1uxmsh3._.js +3 -3
  134. package/app/.next/server/chunks/lib_service-api_ts_18eok4w._.js +3 -3
  135. package/app/.next/server/chunks/ssr/_00qrupp._.js +3 -0
  136. package/app/.next/server/chunks/ssr/_01ngpwj._.js +1 -1
  137. package/app/.next/server/chunks/ssr/_0d7gv3q._.js +3 -0
  138. package/app/.next/server/chunks/ssr/_0iywd5g._.js +1 -1
  139. package/app/.next/server/chunks/ssr/_0mxifu3._.js +1 -1
  140. package/app/.next/server/chunks/ssr/_0u7urta._.js +1 -1
  141. package/app/.next/server/chunks/ssr/app_agents_[id]_0sr4fdg._.js +1 -1
  142. package/app/.next/server/chunks/ssr/app_agents_[id]_activity_AgentActivityPage_tsx_042-590._.js +1 -1
  143. package/app/.next/server/chunks/ssr/app_agents_[id]_config_page_tsx_1f_gu1l._.js +1 -1
  144. package/app/.next/server/chunks/ssr/app_agents_[id]_sessions_page_tsx_0tfup-2._.js +3 -3
  145. package/app/.next/server/chunks/ssr/app_agents_[id]_slack_AgentSlackPage_tsx_20njhs1._.js +1 -1
  146. package/app/.next/server/chunks/ssr/app_page_tsx_0pxmutw._.js +1 -1
  147. package/app/.next/server/chunks/ssr/lib_0pfn9gs._.js +1 -1
  148. package/app/.next/server/chunks/ssr/lib_agent-registration-ui_ts_1z582mm._.js +1 -1
  149. package/app/.next/server/chunks/ssr/lib_exchange-view_ts_1a4q9ju._.js +1 -1
  150. package/app/.next/server/chunks/ssr/lib_share-view_ts_08psw5o._.js +1 -1
  151. package/app/.next/server/middleware-build-manifest.js +3 -3
  152. package/app/.next/server/pages/404.html +1 -1
  153. package/app/.next/server/pages/500.html +1 -1
  154. package/app/.next/server/server-reference-manifest.js +1 -1
  155. package/app/.next/server/server-reference-manifest.json +1 -1
  156. package/app/.next/static/chunks/{2dtkykrnob8wk.js → 00pca1oa16xc5.js} +1 -1
  157. package/app/.next/static/chunks/{3x56k5qa012au.js → 0apccyvpyjlo7.js} +1 -1
  158. package/app/.next/static/chunks/{04nfr73lkk7pz.js → 0l9r-x310007w.js} +1 -1
  159. package/app/.next/static/chunks/{0eqgs3167zj2j.js → 0xo3nwo_nscvf.js} +1 -1
  160. package/app/.next/static/chunks/{326jto9l-m8vj.js → 0z_bq7h1mwcf3.js} +4 -4
  161. package/app/.next/static/chunks/18btj4qlun8o7.js +1 -0
  162. package/app/.next/static/chunks/{2cc4uzbhs_v23.js → 1k8e6j67zksws.js} +1 -1
  163. package/app/.next/static/chunks/{0h567k13e53r-.js → 1y9hc8qm0hqds.js} +1 -1
  164. package/app/.next/static/chunks/{2ebpfmg4vni8e.js → 2wbcr5n_vcynr.js} +1 -1
  165. package/app/.next/static/chunks/3_lwv2zgy_-bw.css +3 -0
  166. package/app/.next/static/chunks/3a_ffnuma49te.js +1 -0
  167. package/app/.next/static/chunks/{3whw2-l4a2sli.js → 3fm68xa8a4-es.js} +1 -1
  168. package/app/.next/static/chunks/{0cjh4u-f7mlwd.js → 3gw1ytgjq4pxu.js} +1 -1
  169. package/app/.next/static/chunks/3wlqn3gd_jv_r.js +1 -0
  170. package/app/.next/static/chunks/3xjoca0z2onuc.js +1 -0
  171. package/app/BUILD_INFO.json +2 -2
  172. package/app/package.json +1 -1
  173. package/app/server.js +1 -1
  174. package/package.json +1 -1
  175. package/schemas/botmancers.mcp.v2.tools.json +46 -46
  176. package/app/.next/server/chunks/ssr/_0g3y1u9._.js +0 -3
  177. package/app/.next/server/chunks/ssr/app_agents_[id]_conversations_page_tsx_15zl_c8._.js +0 -3
  178. package/app/.next/static/chunks/10i-rrea371m2.js +0 -1
  179. package/app/.next/static/chunks/17qi6hcgg0nlz.css +0 -3
  180. package/app/.next/static/chunks/1ypwptc0fsn4w.js +0 -1
  181. package/app/.next/static/chunks/2myfan3i8z-jy.js +0 -1
  182. package/app/.next/static/chunks/34v8aumua0x5n.js +0 -1
  183. /package/app/.next/static/{92gsyY5d-nMkxJ7iQxKkY → eBmHBBldHWytVvYPu0zHc}/_buildManifest.js +0 -0
  184. /package/app/.next/static/{92gsyY5d-nMkxJ7iQxKkY → eBmHBBldHWytVvYPu0zHc}/_clientMiddlewareManifest.js +0 -0
  185. /package/app/.next/static/{92gsyY5d-nMkxJ7iQxKkY → eBmHBBldHWytVvYPu0zHc}/_ssgManifest.js +0 -0
@@ -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,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+=`
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
 
@@ -1,4 +1,4 @@
1
- module.exports=[10014,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(71987),e=a.i(38246),f=a.i(50944),g=a.i(36391),h=a.i(60193),i=a.i(15752),j=a.i(20851),k=a.i(59807);function l(a){if(!a)return"";let b=(0,i.parseRun)(a);if(b)return(0,i.runLine)(b);let c=(0,k.classifyRuntimeFailure)(a);if(c)return c.title;let d=(0,j.agentEventDisplay)(a);return d?`${d.label} ${d.detail}`.replace(/\s+/g," ").trim():a.replace(/\s+/g," ").trim()}function m(a){return"chief-of-staff"===a.name.toLowerCase()}function n(a){return m(a)?0:a.pinned?1:2}a.s(["default",0,function({agents:a,activeAgentId:i,workingIds:k=[],beatClock:o,now:p,status:q="",logoDrop:r=!1,onAgentsChange:s,onNew:t,onManage:u,onDeleted:v,newButtonRef:w,manageButtonRef:x}){let y=(0,f.useRouter)(),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(""),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),J=(0,c.useRef)(null),K=(0,c.useRef)(null),L=a.filter(a=>!a.hidden).sort((a,b)=>n(a)-n(b)),M=a.filter(a=>a.hidden),N=async(b,c)=>{let d=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:b.id,...c})});if(!d.ok)return null;let e=await d.json();return s(a.map(a=>a.id===e.id?{...a,...e}:a)),e},O=(a,b=30)=>requestAnimationFrame(()=>{let c=document.querySelector(`[data-open-bot="${a}"]`);c?c.focus():b>0&&O(a,b-1)}),P=(a=!0)=>{let b=H?.returnTo;I(null),a&&b&&requestAnimationFrame(()=>{b.isConnected&&b.focus()})};(0,c.useEffect)(()=>{if(!H)return;let a=a=>{"Escape"===a.key&&(I(null),H.returnTo?.focus())},b=a=>{J.current?.contains(a.target)||I(null)};return document.addEventListener("keydown",a),document.addEventListener("pointerdown",b),()=>{document.removeEventListener("keydown",a),document.removeEventListener("pointerdown",b)}},[H]);let Q=async a=>{let b=B.trim();A(null),b&&b!==a.name&&await N(a,{name:b})},R=(a,c)=>(0,b.jsx)("input",{className:"bot-name","aria-label":`Rename ${a.name}`,value:B,autoFocus:!0,onChange:a=>C(a.target.value),onBlur:()=>{Q(a)},onKeyDown:b=>{"Enter"===b.key&&(b.preventDefault(),b.currentTarget.blur(),O(a.id)),"Escape"===b.key&&(A(null),O(a.id))},style:c}),S=(a,c)=>(0,b.jsx)("button",{type:"button",className:"bot-name row-open","data-open-bot":a.id,"aria-current":i===a.id?"true":void 0,onClick:()=>y.push(`/agents/${encodeURIComponent(a.id)}`),style:c,children:a.name}),T=a=>(0,b.jsx)("button",{type:"button",className:"row-actions","aria-haspopup":"menu","aria-expanded":H?.agent.id===a.id,"aria-label":`Actions for ${a.name}`,title:`Actions for ${a.name}`,onClick:b=>{let c=b.currentTarget.getBoundingClientRect();I({agent:a,x:c.left,y:c.bottom+4,returnTo:b.currentTarget})},children:"⋯"}),U=a=>(0,b.jsxs)("div",{className:"row-tip",children:[a.unread&&i!==a.id?(0,b.jsx)("div",{className:"card-role",children:"Unread"}):null,(0,b.jsx)("div",{className:"card-role",children:function(a,b,c,d){if(!a||!b||d-c+(b-a)>15e3)return"Stopped";let e=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"2-digit",second:"2-digit"}).format(new Date(a));return`Heartbeat ${e}`}(a.last_seen,o.serverNow,o.fetchedAt,p)})]}),V=(a,b)=>{a.preventDefault(),I({agent:b,x:a.clientX,y:a.clientY,returnTo:a.currentTarget.querySelector("[data-open-bot]")})},W=a=>(0,b.jsxs)("div",{className:i===a.id?"bot-row is-open":"bot-row",onContextMenu:b=>V(b,a),children:[(0,b.jsxs)("span",{className:"mark-avatar mark-avatar-sm",children:[(0,b.jsx)(g.default,{bot:a,size:40,title:`${a.name} avatar`}),k.includes(a.id)?(0,b.jsx)("span",{className:"mark-dot"}):null]}),(0,b.jsxs)("div",{className:"bot-copy",children:[z===a.id?R(a):S(a),l(a.latest)?(0,b.jsx)("div",{className:"bot-preview",children:l(a.latest)}):null,(0,b.jsx)("div",{className:"bot-runtime",title:(0,j.rosterRuntimeLine)(a),children:(0,j.rosterRuntimeLine)(a)})]}),T(a),U(a)]},a.id);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("aside",{className:"rail agent-rail",children:[(0,b.jsxs)(e.default,{href:"/",className:"brand agent-brand","aria-label":"Botmancers home",children:[(0,b.jsx)("span",{className:r?"logo-shape is-settling":"logo-shape",children:(0,b.jsx)(d.default,{src:"/brand/botmancers-logo-filled-256.png",alt:"",width:40,height:40})}),(0,b.jsx)("span",{className:"logo-word",children:"botmancers"})]}),(0,b.jsxs)("div",{className:"bar",children:[(0,b.jsx)("button",{ref:w,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:t,children:"New"}),a.length?(0,b.jsx)("button",{ref:x,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:u,children:"Manage agents"}):null,(0,b.jsx)(e.default,{className:"add-btn settings-link",href:"/settings",children:"Settings"})]}),a.length?(0,b.jsx)("nav",{className:"rail-nav","aria-label":"Workspace",children:(0,b.jsx)(e.default,{href:"/exchanges",className:"add-btn rail-nav-link",children:"Exchanges"})}):null,(0,b.jsx)("p",{className:"roster-status",role:"status",children:q}),a.length?(0,b.jsx)("div",{className:H?"roster menu-open":"roster",children:L.map(a=>m(a)?(0,b.jsxs)("div",{className:"card",onContextMenu:b=>V(b,a),children:[(0,b.jsxs)("div",{className:"row-head",children:[(0,b.jsxs)("span",{className:"mark-avatar",children:[(0,b.jsx)(g.default,{bot:a,size:48,title:`${a.name} avatar`}),k.includes(a.id)?(0,b.jsx)("span",{className:"mark-dot"}):null]}),z===a.id?R(a,{color:"#D5D0C3",fontSize:26}):S(a,{fontSize:26}),T(a)]}),l(a.latest)?(0,b.jsx)("div",{className:"bot-preview",children:l(a.latest)}):null,(0,b.jsx)("div",{className:"bot-runtime",title:(0,j.rosterRuntimeLine)(a),children:(0,j.rosterRuntimeLine)(a)}),U(a)]},a.id):W(a))}):null,M.length?(0,b.jsxs)("div",{className:H?"roster menu-open":"roster",children:[(0,b.jsx)("button",{ref:K,type:"button",className:"pin-word","aria-expanded":D,onClick:()=>E(a=>!a),children:"Hidden"}),D?M.map(W):null]}):null]}),F?(0,b.jsx)(h.default,{ids:[F.id],onCancel:()=>{O(F.id),G(null)},onDeleted:b=>{G(null),s(a.filter(a=>!b.some(b=>b.id===a.id))),v(b)}}):null,H?(0,b.jsxs)("div",{ref:J,className:"row-menu",role:"menu","aria-label":`Actions for ${H.agent.name}`,style:{left:H.x,top:H.y},onPointerDown:a=>a.stopPropagation(),onClick:a=>a.stopPropagation(),onContextMenu:a=>a.preventDefault(),onKeyDown:a=>{let b=Array.from(a.currentTarget.querySelectorAll("[role=menuitem]")),c=b.indexOf(document.activeElement),d=c=>{a.preventDefault(),b[(c+b.length)%b.length]?.focus()};"ArrowDown"===a.key?d(c+1):"ArrowUp"===a.key?d(c-1):"Home"===a.key?d(0):"End"===a.key?d(b.length-1):"Tab"===a.key&&(a.preventDefault(),P())},children:[(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,autoFocus:!0,onClick:()=>{P(),N(H.agent,{pinned:+!H.agent.pinned})},children:H.agent.pinned?"Unpin":"Pin"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{P(),N(H.agent,{unread:1})},children:"Mark as Unread"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),A(a.id),C(a.name)},children:"Rename Agent"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),N(a,{hidden:+!a.hidden}).then(()=>a.hidden?O(a.id):K.current?.focus())},children:H.agent.hidden?"Unhide":"Hide from sidebar"}),(0,b.jsx)(e.default,{role:"menuitem",tabIndex:-1,href:`/agents/${H.agent.id}/config`,onClick:()=>I(null),children:"Config"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),G(a)},children:"Delete agent…"})]}):null]})}],10014)},15752,a=>{"use strict";a.s(["parseRun",0,function(a){let b,c=a.match(/^\s*\[run\]\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,e="string"==typeof d.page?d.page:"string"==typeof d.html?d.html:void 0,f=void 0===e?{}:{page:e,html:e};return"running"===d.state||"stopped"===d.state?{state:d.state,...f}:"done"===d.state&&"string"==typeof d.output?{state:"done",output:d.output,...f}:null},"runLine",0,function(a){return"done"===a.state?a.output??"":"stopped"===a.state?"The command was stopped.":"The command is running"}])},59807,a=>{"use strict";let b={error:"Error"},c=[{kind:"hermes-config-missing",severity:"error",pattern:/^\[Hermes configuration missing: [^\n]*\]$/,title:"Hermes needs configuration",recovery:"This agent can’t reply until the Hermes API key is set on the Botmancers server. Set it, restart, then send your message again."},{kind:"hermes-turn-failed",severity:"error",pattern:/^\[Hermes turn failed for [\s\S]*\]$/,title:"Hermes couldn’t complete the turn",recovery:"Check that the Hermes gateway is running and reachable, then send your message again."}];a.s(["classifyRuntimeFailure",0,function(a){let b=String(a??"").trim();if(!b)return null;let d=c.find(a=>a.pattern.test(b));return d?{kind:d.kind,severity:d.severity,title:d.title,recovery:d.recovery,detail:b}:null},"severityLabel",0,function(a){return b[a]}])},67161,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"Image",{enumerable:!0,get:function(){return v}});let d=a.r(33354),e=a.r(46058),f=a.r(87924),g=e._(a.r(72131)),h=d._(a.r(35112)),i=d._(a.r(58018)),j=a.r(94915),k=a.r(345),l=a.r(4486),m=a.r(53773),n=d._(a.r(2305)),o=a.r(8591),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function q(a,b,c,d,e,f,g){let h=a?.src;a&&a["data-loaded-src"]!==h&&(a["data-loaded-src"]=h,("decode"in a?a.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(a.parentElement&&a.isConnected){if("empty"!==b&&e(!0),c?.current){let b=new Event("load");Object.defineProperty(b,"target",{writable:!1,value:a});let d=!1,e=!1;c.current({...b,nativeEvent:b,currentTarget:a,target:a,isDefaultPrevented:()=>d,isPropagationStopped:()=>e,persist:()=>{},preventDefault:()=>{d=!0,b.preventDefault()},stopPropagation:()=>{e=!0,b.stopPropagation()}})}d?.current&&d.current(a)}}))}function r(a){return g.use?{fetchPriority:a}:{fetchpriority:a}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let s=g.useEffect,t=(0,g.forwardRef)(({src:a,srcSet:b,sizes:c,height:d,width:e,decoding:h,className:i,style:j,fetchPriority:k,placeholder:l,loading:m,unoptimized:n,fill:p,onLoadRef:t,onLoadingCompleteRef:u,setBlurComplete:v,setShowAltText:w,sizesInput:x,onLoad:y,onError:z,...A},B)=>{let C=(0,g.useRef)(!1),D=(0,g.useRef)(null);s(()=>{let{current:a}=C,{current:b}=D;a||null===b||(z&&(b.src=b.src),b.complete&&q(b,l,t,u,v,n,x),C.current=!0)},[a,l,t,u,z,n,x]);let E=(0,o.useMergedRef)(B,D);return(0,f.jsx)("img",{...A,...r(k),loading:m,width:e,height:d,decoding:h,"data-nimg":p?"fill":"1",className:i,style:j,sizes:c,srcSet:b,src:a,ref:E,onLoad:a=>{q(a.currentTarget,l,t,u,v,n,x)},onError:a=>{w(!0),"empty"!==l&&v(!0),z&&z(a)}})});function u({isAppRouter:a,imgAttributes:b}){let c={as:"image",imageSrcSet:b.srcSet,imageSizes:b.sizes,crossOrigin:b.crossOrigin,referrerPolicy:b.referrerPolicy,...r(b.fetchPriority)};return a&&h.default.preload?(h.default.preload(b.src,c),null):(0,f.jsx)(i.default,{children:(0,f.jsx)("link",{rel:"preload",href:b.srcSet?void 0:b.src,...c},"__nimg-"+b.src+b.srcSet+b.sizes)})}let v=(0,g.forwardRef)((a,b)=>{let c=(0,g.useContext)(m.RouterContext),d=(0,g.useContext)(l.ImageConfigContext),e=(0,g.useMemo)(()=>{let a=p||d||k.imageConfigDefault,b=[...a.deviceSizes,...a.imageSizes].sort((a,b)=>a-b),c=a.deviceSizes.sort((a,b)=>a-b),e=a.qualities?.sort((a,b)=>a-b);return{...a,allSizes:b,deviceSizes:c,qualities:e,localPatterns:d?.localPatterns}},[d]),{onLoad:h,onLoadingComplete:i}=a,o=(0,g.useRef)(h);(0,g.useEffect)(()=>{o.current=h},[h]);let q=(0,g.useRef)(i);(0,g.useEffect)(()=>{q.current=i},[i]);let[r,s]=(0,g.useState)(!1),[v,w]=(0,g.useState)(!1),{props:x,meta:y}=(0,j.getImgProps)(a,{defaultLoader:n.default,imgConf:e,blurComplete:r,showAltText:v});return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(t,{...x,unoptimized:y.unoptimized,placeholder:y.placeholder,fill:y.fill,onLoadRef:o,onLoadingCompleteRef:q,setBlurComplete:s,setShowAltText:w,sizesInput:a.sizes,ref:b}),y.preload?(0,f.jsx)(u,{isAppRouter:!c,imgAttributes:x}):null]})});("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)},33095,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return k},getImageProps:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(33354),g=a.r(94915),h=a.r(67161),i=f._(a.r(2305));function j(a){let{props:b}=(0,g.getImgProps)(a,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[a,c]of Object.entries(b))void 0===c&&delete b[a];return{props:b}}let k=h.Image},71987,(a,b,c)=>{b.exports=a.r(33095)},92966,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HeadManagerContext},58018,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return p},defaultHead:function(){return l}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(33354),g=a.r(46058),h=a.r(87924),i=g._(a.r(72131)),j=f._(a.r(94613)),k=a.r(92966);function l(){return[(0,h.jsx)("meta",{charSet:"utf-8"},"charset"),(0,h.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function m(a,b){return"string"==typeof b||"number"==typeof b?a:b.type===i.default.Fragment?a.concat(i.default.Children.toArray(b.props.children).reduce((a,b)=>"string"==typeof b||"number"==typeof b?a:a.concat(b),[])):a.concat(b)}let n=["name","httpEquiv","charSet","itemProp"];function o(a){let b,c,d,e;return a.reduce(m,[]).reverse().concat(l().reverse()).filter((b=new Set,c=new Set,d=new Set,e={},a=>{let f=!0,g=!1;if(a.key&&"number"!=typeof a.key&&a.key.indexOf("$")>0){g=!0;let c=a.key.slice(a.key.indexOf("$")+1);b.has(c)?f=!1:b.add(c)}switch(a.type){case"title":case"base":c.has(a.type)?f=!1:c.add(a.type);break;case"meta":for(let b=0,c=n.length;b<c;b++){let c=n[b];if(a.props.hasOwnProperty(c))if("charSet"===c)d.has(c)?f=!1:d.add(c);else{let b=a.props[c],d=e[c]||new Set;("name"!==c||!g)&&d.has(b)?f=!1:(d.add(b),e[c]=d)}}}return f})).reverse().map((a,b)=>{let c=a.key||b;return i.default.cloneElement(a,{key:c})})}let p=function({children:a}){let b=(0,i.useContext)(k.HeadManagerContext);return(0,h.jsx)(j.default,{reduceComponentsToState:o,headManager:b,children:a})};("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)},4486,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ImageConfigContext},53773,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.RouterContext},35444,(a,b,c)=>{"use strict";function d(a,b){let c=a||75;return b?.qualities?.length?b.qualities.reduce((a,b)=>Math.abs(b-c)<Math.abs(a-c)?b:a,b.qualities[0]):c}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findClosestQuality",{enumerable:!0,get:function(){return d}})},2305,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return g}});let d=a.r(35444),e=a.r(68063);function f({config:a,src:b,width:c,quality:g}){let h=(0,e.getDeploymentId)();if(b.startsWith("/")&&!b.startsWith("//"))if(b.includes("/_next/static/immutable")&&!(0,e.getAssetToken)())h=void 0;else{let a=b.indexOf("?");if(-1!==a){let c=new URLSearchParams(b.slice(a+1)),d=c.get("dpl");if(d){h=d,c.delete("dpl");let e=c.toString();b=b.slice(0,a)+(e?"?"+e:"")}}}if(b.startsWith("/")&&b.includes("?")&&a.localPatterns?.length===1&&"**"===a.localPatterns[0].pathname&&""===a.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${b}" is using a query string which is not configured in images.localPatterns.
1
+ module.exports=[10014,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(71987),e=a.i(38246),f=a.i(50944),g=a.i(36391),h=a.i(60193),i=a.i(15752),j=a.i(20851),k=a.i(59807);function l(a){if(!a)return"";let b=(0,i.parseRun)(a);if(b)return(0,i.runLine)(b);let c=(0,k.classifyRuntimeFailure)(a);if(c)return c.title;let d=(0,j.agentEventDisplay)(a);return d?`${d.label} ${d.detail}`.replace(/\s+/g," ").trim():a.replace(/\s+/g," ").trim()}function m(a){return"chief-of-staff"===a.name.toLowerCase()}function n(a){return m(a)?0:a.pinned?1:2}a.s(["default",0,function({agents:a,activeAgentId:i,workingIds:k=[],beatClock:o,now:p,status:q="",logoDrop:r=!1,onAgentsChange:s,onNew:t,onManage:u,onDeleted:v,newButtonRef:w,manageButtonRef:x}){let y=(0,f.useRouter)(),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(""),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),J=(0,c.useRef)(null),K=(0,c.useRef)(null),L=a.filter(a=>!a.hidden).sort((a,b)=>n(a)-n(b)),M=a.filter(a=>a.hidden),N=async(b,c)=>{let d=await fetch("/api/bots",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:b.id,...c})});if(!d.ok)return null;let e=await d.json();return s(a.map(a=>a.id===e.id?{...a,...e}:a)),e},O=(a,b=30)=>requestAnimationFrame(()=>{let c=document.querySelector(`[data-open-bot="${a}"]`);c?c.focus():b>0&&O(a,b-1)}),P=(a=!0)=>{let b=H?.returnTo;I(null),a&&b&&requestAnimationFrame(()=>{b.isConnected&&b.focus()})};(0,c.useEffect)(()=>{if(!H)return;let a=a=>{"Escape"===a.key&&(I(null),H.returnTo?.focus())},b=a=>{J.current?.contains(a.target)||I(null)};return document.addEventListener("keydown",a),document.addEventListener("pointerdown",b),()=>{document.removeEventListener("keydown",a),document.removeEventListener("pointerdown",b)}},[H]);let Q=async a=>{let b=B.trim();A(null),b&&b!==a.name&&await N(a,{name:b})},R=(a,c)=>(0,b.jsx)("input",{className:"bot-name","aria-label":`Rename ${a.name}`,value:B,autoFocus:!0,onChange:a=>C(a.target.value),onBlur:()=>{Q(a)},onKeyDown:b=>{"Enter"===b.key&&(b.preventDefault(),b.currentTarget.blur(),O(a.id)),"Escape"===b.key&&(A(null),O(a.id))},style:c}),S=(a,c)=>(0,b.jsx)("button",{type:"button",className:"bot-name row-open","data-open-bot":a.id,"aria-current":i===a.id?"true":void 0,onClick:()=>y.push(`/agents/${encodeURIComponent(a.id)}`),style:c,children:a.name}),T=a=>(0,b.jsx)("button",{type:"button",className:"row-actions","aria-haspopup":"menu","aria-expanded":H?.agent.id===a.id,"aria-label":`Actions for ${a.name}`,title:`Actions for ${a.name}`,onClick:b=>{let c=b.currentTarget.getBoundingClientRect();I({agent:a,x:c.left,y:c.bottom+4,returnTo:b.currentTarget})},children:"⋯"}),U=a=>(0,b.jsxs)("div",{className:"row-tip",children:[a.unread&&i!==a.id?(0,b.jsx)("div",{className:"card-role",children:"Unread"}):null,(0,b.jsx)("div",{className:"card-role",children:function(a,b,c,d){if(!a||!b||d-c+(b-a)>15e3)return"Stopped";let e=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",hour:"numeric",minute:"2-digit",second:"2-digit"}).format(new Date(a));return`Heartbeat ${e}`}(a.last_seen,o.serverNow,o.fetchedAt,p)})]}),V=(a,b)=>{a.preventDefault(),I({agent:b,x:a.clientX,y:a.clientY,returnTo:a.currentTarget.querySelector("[data-open-bot]")})},W=a=>(0,b.jsxs)("div",{className:i===a.id?"bot-row is-open":"bot-row",onContextMenu:b=>V(b,a),children:[(0,b.jsxs)("span",{className:"mark-avatar mark-avatar-sm",children:[(0,b.jsx)(g.default,{bot:a,size:40,title:`${a.name} avatar`}),k.includes(a.id)?(0,b.jsx)("span",{className:"mark-dot"}):null]}),(0,b.jsxs)("div",{className:"bot-copy",children:[z===a.id?R(a):S(a),l(a.latest)?(0,b.jsx)("div",{className:"bot-preview",children:l(a.latest)}):null,(0,b.jsx)("div",{className:"bot-runtime",title:(0,j.rosterRuntimeLine)(a),children:(0,j.rosterRuntimeLine)(a)})]}),T(a),U(a)]},a.id);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("aside",{className:"rail agent-rail",children:[(0,b.jsxs)(e.default,{href:"/",className:"brand agent-brand","aria-label":"Botmancers home",children:[(0,b.jsx)("span",{className:r?"logo-shape is-settling":"logo-shape",children:(0,b.jsx)(d.default,{src:"/brand/botmancers-logo-filled-256.png",alt:"",width:40,height:40})}),(0,b.jsx)("span",{className:"logo-word",children:"botmancers"})]}),(0,b.jsxs)("div",{className:"bar",children:[(0,b.jsx)("button",{ref:w,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:t,children:"New"}),a.length?(0,b.jsx)("button",{ref:x,type:"button",className:"add-btn","aria-haspopup":"dialog",onClick:u,children:"Manage agents"}):null,(0,b.jsx)(e.default,{className:"add-btn settings-link",href:"/settings",children:"Settings"})]}),a.length?(0,b.jsx)("nav",{className:"rail-nav","aria-label":"Workspace",children:(0,b.jsx)(e.default,{href:"/exchanges",className:"add-btn rail-nav-link",children:"Exchanges"})}):null,(0,b.jsx)("p",{className:"roster-status",role:"status",children:q}),a.length?(0,b.jsx)("div",{className:H?"roster menu-open":"roster",children:L.map(a=>m(a)?(0,b.jsxs)("div",{className:"card",onContextMenu:b=>V(b,a),children:[(0,b.jsxs)("div",{className:"row-head",children:[(0,b.jsxs)("span",{className:"mark-avatar",children:[(0,b.jsx)(g.default,{bot:a,size:48,title:`${a.name} avatar`}),k.includes(a.id)?(0,b.jsx)("span",{className:"mark-dot"}):null]}),z===a.id?R(a,{color:"#D5D0C3",fontSize:26}):S(a,{fontSize:26}),T(a)]}),l(a.latest)?(0,b.jsx)("div",{className:"bot-preview",children:l(a.latest)}):null,(0,b.jsx)("div",{className:"bot-runtime",title:(0,j.rosterRuntimeLine)(a),children:(0,j.rosterRuntimeLine)(a)}),U(a)]},a.id):W(a))}):null,M.length?(0,b.jsxs)("div",{className:H?"roster menu-open":"roster",children:[(0,b.jsx)("button",{ref:K,type:"button",className:"pin-word","aria-expanded":D,onClick:()=>E(a=>!a),children:"Hidden"}),D?M.map(W):null]}):null]}),F?(0,b.jsx)(h.default,{ids:[F.id],onCancel:()=>{O(F.id),G(null)},onDeleted:b=>{G(null),s(a.filter(a=>!b.some(b=>b.id===a.id))),v(b)}}):null,H?(0,b.jsxs)("div",{ref:J,className:"row-menu",role:"menu","aria-label":`Actions for ${H.agent.name}`,style:{left:H.x,top:H.y},onPointerDown:a=>a.stopPropagation(),onClick:a=>a.stopPropagation(),onContextMenu:a=>a.preventDefault(),onKeyDown:a=>{let b=Array.from(a.currentTarget.querySelectorAll("[role=menuitem]")),c=b.indexOf(document.activeElement),d=c=>{a.preventDefault(),b[(c+b.length)%b.length]?.focus()};"ArrowDown"===a.key?d(c+1):"ArrowUp"===a.key?d(c-1):"Home"===a.key?d(0):"End"===a.key?d(b.length-1):"Tab"===a.key&&(a.preventDefault(),P())},children:[(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,autoFocus:!0,onClick:()=>{P(),N(H.agent,{pinned:+!H.agent.pinned})},children:H.agent.pinned?"Unpin":"Pin"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{P(),N(H.agent,{unread:1})},children:"Mark as Unread"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),A(a.id),C(a.name)},children:"Rename agent"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),N(a,{hidden:+!a.hidden}).then(()=>a.hidden?O(a.id):K.current?.focus())},children:H.agent.hidden?"Unhide":"Hide from sidebar"}),(0,b.jsx)(e.default,{role:"menuitem",tabIndex:-1,href:`/agents/${H.agent.id}/config`,onClick:()=>I(null),children:"Config"}),(0,b.jsx)("button",{type:"button",role:"menuitem",tabIndex:-1,onClick:()=>{let a=H.agent;P(!1),G(a)},children:"Delete agent…"})]}):null]})}],10014)},15752,a=>{"use strict";a.s(["parseRun",0,function(a){let b,c=a.match(/^\s*\[run\]\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,e="string"==typeof d.page?d.page:"string"==typeof d.html?d.html:void 0,f=void 0===e?{}:{page:e,html:e};return"running"===d.state||"stopped"===d.state?{state:d.state,...f}:"done"===d.state&&"string"==typeof d.output?{state:"done",output:d.output,...f}:null},"runLine",0,function(a){return"done"===a.state?a.output??"":"stopped"===a.state?"The command was stopped.":"The command is running"}])},59807,a=>{"use strict";let b={error:"Error"},c=[{kind:"hermes-config-missing",severity:"error",pattern:/^\[Hermes configuration missing: [^\n]*\]$/,title:"Hermes needs configuration",recovery:"This agent can’t reply until the Hermes API key is set on the Botmancers server. Set it, restart, then send your message again."},{kind:"hermes-turn-failed",severity:"error",pattern:/^\[Hermes turn failed for [\s\S]*\]$/,title:"Hermes couldn’t complete the turn",recovery:"Check that the Hermes gateway is running and reachable, then send your message again."}];a.s(["classifyRuntimeFailure",0,function(a){let b=String(a??"").trim();if(!b)return null;let d=c.find(a=>a.pattern.test(b));return d?{kind:d.kind,severity:d.severity,title:d.title,recovery:d.recovery,detail:b}:null},"severityLabel",0,function(a){return b[a]}])},67161,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"Image",{enumerable:!0,get:function(){return v}});let d=a.r(33354),e=a.r(46058),f=a.r(87924),g=e._(a.r(72131)),h=d._(a.r(35112)),i=d._(a.r(58018)),j=a.r(94915),k=a.r(345),l=a.r(4486),m=a.r(53773),n=d._(a.r(2305)),o=a.r(8591),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function q(a,b,c,d,e,f,g){let h=a?.src;a&&a["data-loaded-src"]!==h&&(a["data-loaded-src"]=h,("decode"in a?a.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(a.parentElement&&a.isConnected){if("empty"!==b&&e(!0),c?.current){let b=new Event("load");Object.defineProperty(b,"target",{writable:!1,value:a});let d=!1,e=!1;c.current({...b,nativeEvent:b,currentTarget:a,target:a,isDefaultPrevented:()=>d,isPropagationStopped:()=>e,persist:()=>{},preventDefault:()=>{d=!0,b.preventDefault()},stopPropagation:()=>{e=!0,b.stopPropagation()}})}d?.current&&d.current(a)}}))}function r(a){return g.use?{fetchPriority:a}:{fetchpriority:a}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let s=g.useEffect,t=(0,g.forwardRef)(({src:a,srcSet:b,sizes:c,height:d,width:e,decoding:h,className:i,style:j,fetchPriority:k,placeholder:l,loading:m,unoptimized:n,fill:p,onLoadRef:t,onLoadingCompleteRef:u,setBlurComplete:v,setShowAltText:w,sizesInput:x,onLoad:y,onError:z,...A},B)=>{let C=(0,g.useRef)(!1),D=(0,g.useRef)(null);s(()=>{let{current:a}=C,{current:b}=D;a||null===b||(z&&(b.src=b.src),b.complete&&q(b,l,t,u,v,n,x),C.current=!0)},[a,l,t,u,z,n,x]);let E=(0,o.useMergedRef)(B,D);return(0,f.jsx)("img",{...A,...r(k),loading:m,width:e,height:d,decoding:h,"data-nimg":p?"fill":"1",className:i,style:j,sizes:c,srcSet:b,src:a,ref:E,onLoad:a=>{q(a.currentTarget,l,t,u,v,n,x)},onError:a=>{w(!0),"empty"!==l&&v(!0),z&&z(a)}})});function u({isAppRouter:a,imgAttributes:b}){let c={as:"image",imageSrcSet:b.srcSet,imageSizes:b.sizes,crossOrigin:b.crossOrigin,referrerPolicy:b.referrerPolicy,...r(b.fetchPriority)};return a&&h.default.preload?(h.default.preload(b.src,c),null):(0,f.jsx)(i.default,{children:(0,f.jsx)("link",{rel:"preload",href:b.srcSet?void 0:b.src,...c},"__nimg-"+b.src+b.srcSet+b.sizes)})}let v=(0,g.forwardRef)((a,b)=>{let c=(0,g.useContext)(m.RouterContext),d=(0,g.useContext)(l.ImageConfigContext),e=(0,g.useMemo)(()=>{let a=p||d||k.imageConfigDefault,b=[...a.deviceSizes,...a.imageSizes].sort((a,b)=>a-b),c=a.deviceSizes.sort((a,b)=>a-b),e=a.qualities?.sort((a,b)=>a-b);return{...a,allSizes:b,deviceSizes:c,qualities:e,localPatterns:d?.localPatterns}},[d]),{onLoad:h,onLoadingComplete:i}=a,o=(0,g.useRef)(h);(0,g.useEffect)(()=>{o.current=h},[h]);let q=(0,g.useRef)(i);(0,g.useEffect)(()=>{q.current=i},[i]);let[r,s]=(0,g.useState)(!1),[v,w]=(0,g.useState)(!1),{props:x,meta:y}=(0,j.getImgProps)(a,{defaultLoader:n.default,imgConf:e,blurComplete:r,showAltText:v});return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(t,{...x,unoptimized:y.unoptimized,placeholder:y.placeholder,fill:y.fill,onLoadRef:o,onLoadingCompleteRef:q,setBlurComplete:s,setShowAltText:w,sizesInput:a.sizes,ref:b}),y.preload?(0,f.jsx)(u,{isAppRouter:!c,imgAttributes:x}):null]})});("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)},33095,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return k},getImageProps:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(33354),g=a.r(94915),h=a.r(67161),i=f._(a.r(2305));function j(a){let{props:b}=(0,g.getImgProps)(a,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[a,c]of Object.entries(b))void 0===c&&delete b[a];return{props:b}}let k=h.Image},71987,(a,b,c)=>{b.exports=a.r(33095)},92966,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HeadManagerContext},58018,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return p},defaultHead:function(){return l}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(33354),g=a.r(46058),h=a.r(87924),i=g._(a.r(72131)),j=f._(a.r(94613)),k=a.r(92966);function l(){return[(0,h.jsx)("meta",{charSet:"utf-8"},"charset"),(0,h.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function m(a,b){return"string"==typeof b||"number"==typeof b?a:b.type===i.default.Fragment?a.concat(i.default.Children.toArray(b.props.children).reduce((a,b)=>"string"==typeof b||"number"==typeof b?a:a.concat(b),[])):a.concat(b)}let n=["name","httpEquiv","charSet","itemProp"];function o(a){let b,c,d,e;return a.reduce(m,[]).reverse().concat(l().reverse()).filter((b=new Set,c=new Set,d=new Set,e={},a=>{let f=!0,g=!1;if(a.key&&"number"!=typeof a.key&&a.key.indexOf("$")>0){g=!0;let c=a.key.slice(a.key.indexOf("$")+1);b.has(c)?f=!1:b.add(c)}switch(a.type){case"title":case"base":c.has(a.type)?f=!1:c.add(a.type);break;case"meta":for(let b=0,c=n.length;b<c;b++){let c=n[b];if(a.props.hasOwnProperty(c))if("charSet"===c)d.has(c)?f=!1:d.add(c);else{let b=a.props[c],d=e[c]||new Set;("name"!==c||!g)&&d.has(b)?f=!1:(d.add(b),e[c]=d)}}}return f})).reverse().map((a,b)=>{let c=a.key||b;return i.default.cloneElement(a,{key:c})})}let p=function({children:a}){let b=(0,i.useContext)(k.HeadManagerContext);return(0,h.jsx)(j.default,{reduceComponentsToState:o,headManager:b,children:a})};("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)},4486,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ImageConfigContext},53773,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.RouterContext},35444,(a,b,c)=>{"use strict";function d(a,b){let c=a||75;return b?.qualities?.length?b.qualities.reduce((a,b)=>Math.abs(b-c)<Math.abs(a-c)?b:a,b.qualities[0]):c}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findClosestQuality",{enumerable:!0,get:function(){return d}})},2305,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return g}});let d=a.r(35444),e=a.r(68063);function f({config:a,src:b,width:c,quality:g}){let h=(0,e.getDeploymentId)();if(b.startsWith("/")&&!b.startsWith("//"))if(b.includes("/_next/static/immutable")&&!(0,e.getAssetToken)())h=void 0;else{let a=b.indexOf("?");if(-1!==a){let c=new URLSearchParams(b.slice(a+1)),d=c.get("dpl");if(d){h=d,c.delete("dpl");let e=c.toString();b=b.slice(0,a)+(e?"?"+e:"")}}}if(b.startsWith("/")&&b.includes("?")&&a.localPatterns?.length===1&&"**"===a.localPatterns[0].pathname&&""===a.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${b}" is using a query string which is not configured in images.localPatterns.
2
2
  Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let i=(0,d.findClosestQuality)(g,a);return`${a.path}?url=${encodeURIComponent(b)}&w=${c}&q=${i}${b.startsWith("/")&&h?`&dpl=${h}`:""}`}f.__next_img_default=!0;let g=f},4987,(a,b,c)=>{"use strict";function d({widthInt:a,heightInt:b,blurWidth:c,blurHeight:e,blurDataURL:f,objectFit:g}){let h=c?40*c:a,i=e?40*e:b,j=h&&i?`viewBox='0 0 ${h} ${i}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${j}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${j?"none":"contain"===g?"xMidYMid":"cover"===g?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${f}'/%3E%3C/svg%3E`}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImageBlurSvg",{enumerable:!0,get:function(){return d}})},345,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={VALID_LOADERS:function(){return f},imageConfigDefault:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=["default","imgix","cloudinary","akamai","custom"],g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},94915,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getImgProps",{enumerable:!0,get:function(){return j}});let d=a.r(68063),e=a.r(4987),f=a.r(345),g=["-moz-initial","fill","none","scale-down",void 0];function h(a){return void 0!==a.default}function i(a){return void 0===a?a:"number"==typeof a?Number.isFinite(a)?a:NaN:"string"==typeof a&&/^[0-9]+$/.test(a)?parseInt(a,10):NaN}function j({src:a,sizes:b,unoptimized:c=!1,priority:k=!1,preload:l=!1,loading:m,className:n,quality:o,width:p,height:q,fill:r=!1,style:s,overrideSrc:t,onLoad:u,onLoadingComplete:v,placeholder:w="empty",blurDataURL:x,fetchPriority:y,decoding:z="async",layout:A,objectFit:B,objectPosition:C,lazyBoundary:D,lazyRoot:E,...F},G){var H;let I,J,K,{imgConf:L,showAltText:M,blurComplete:N,defaultLoader:O}=G,P=L||f.imageConfigDefault;if("allSizes"in P)I=P;else{let a=[...P.deviceSizes,...P.imageSizes].sort((a,b)=>a-b),b=P.deviceSizes.sort((a,b)=>a-b),c=P.qualities?.sort((a,b)=>a-b);I={...P,allSizes:a,deviceSizes:b,qualities:c}}if(void 0===O)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let Q=F.loader||O;delete F.loader,delete F.srcSet;let R="__next_img_default"in Q;if(R){if("custom"===I.loader)throw Object.defineProperty(Error(`Image with src "${a}" is missing "loader" prop.
3
3
  Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let a=Q;Q=b=>{let{config:c,...d}=b;return a(d)}}if(A){"fill"===A&&(r=!0);let a={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[A];a&&(s={...s,...a});let c={responsive:"100vw",fill:"100vw"}[A];c&&!b&&(b=c)}let S="",T=i(p),U=i(q);if((H=a)&&"object"==typeof H&&(h(H)||void 0!==H.src)){let b=h(a)?a.default:a;if(!b.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!b.height||!b.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(b)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(J=b.blurWidth,K=b.blurHeight,x=x||b.blurDataURL,S=b.src,!r)if(T||U){if(T&&!U){let a=T/b.width;U=Math.round(b.height*a)}else if(!T&&U){let a=U/b.height;T=Math.round(b.width*a)}}else T=b.width,U=b.height}let V=!k&&!l&&("lazy"===m||void 0===m);(!(a="string"==typeof a?a:S)||a.startsWith("data:")||a.startsWith("blob:"))&&(c=!0,V=!1),I.unoptimized&&(c=!0),R&&!I.dangerouslyAllowSVG&&a.split("?",1)[0].endsWith(".svg")&&(c=!0);let W=i(o),X=Object.assign(r?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:B,objectPosition:C}:{},M?{}:{color:"transparent"},s),Y=N||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,e.getImageBlurSvg)({widthInt:T,heightInt:U,blurWidth:J,blurHeight:K,blurDataURL:x||"",objectFit:X.objectFit})}")`:`url("${w}")`,Z=g.includes(X.objectFit)?"fill"===X.objectFit?"100% 100%":"cover":X.objectFit,$=Y?{backgroundSize:Z,backgroundPosition:X.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Y}:{},_=function({config:a,src:b,unoptimized:c,width:e,quality:f,sizes:g,loader:h}){if(c){if(b.startsWith("/")&&!b.startsWith("//")){let a=(0,d.getDeploymentId)();if(b.includes("/_next/static/immutable")&&!(0,d.getAssetToken)())a=void 0;else if(a){let c=b.indexOf("?");if(-1!==c){let d=new URLSearchParams(b.slice(c+1));d.get("dpl")||(d.append("dpl",a),b=b.slice(0,c)+"?"+d.toString())}else b+=`?dpl=${a}`}}return{src:b,srcSet:void 0,sizes:void 0}}let{widths:i,kind:j}=function({deviceSizes:a,allSizes:b},c,d){if(d){let c=/(^|\s)(1?\d?\d)vw/g,e=[];for(let a;a=c.exec(d);)e.push(parseInt(a[2]));if(e.length){let c=.01*Math.min(...e);return{widths:b.filter(b=>b>=a[0]*c),kind:"w"}}return{widths:b,kind:"w"}}return"number"!=typeof c?{widths:a,kind:"w"}:{widths:[...new Set([c,2*c].map(a=>b.find(b=>b>=a)||b[b.length-1]))],kind:"x"}}(a,e,g),k=i.length-1;return{sizes:g||"w"!==j?g:"100vw",srcSet:i.map((c,d)=>`${h({config:a,src:b,quality:f,width:c})} ${"w"===j?c:d+1}${j}`).join(", "),src:h({config:a,src:b,quality:f,width:i[k]})}}({config:I,src:a,unoptimized:c,width:T,quality:W,sizes:b,loader:Q}),aa=V?"lazy":m;return{props:{...F,loading:aa,fetchPriority:y,width:T,height:U,decoding:z,className:n,style:{...X,...$},sizes:_.sizes,srcSet:_.srcSet,src:t||_.src},meta:{unoptimized:c,preload:l||k,placeholder:w,fill:r}}}},94613,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return f}});let d=a.r(72131),e=()=>{};function f(a){let{headManager:b,reduceComponentsToState:c}=a;return b?.mountedInstances?.add(a.children),function(){if(b&&b.mountedInstances){let a=d.Children.toArray(Array.from(b.mountedInstances).filter(Boolean));b.updateHead(c(a))}}(),e(),e(),null}}];
4
4