agent-relay-server 0.120.0 → 0.120.2

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 (129) hide show
  1. package/docs/openapi.json +1 -1
  2. package/package.json +3 -3
  3. package/public/assets/MessageBubble-DazQ9Rn-.js +2 -0
  4. package/public/assets/{MessageBubble-BJXjk3GB.js.map → MessageBubble-DazQ9Rn-.js.map} +1 -1
  5. package/public/assets/PlanGraphPanel-DpTiGCkz.js +2 -0
  6. package/public/assets/PlanGraphPanel-DpTiGCkz.js.map +1 -0
  7. package/public/assets/{activity-BUt4FiFQ.js → activity-DReCE2mK.js} +2 -2
  8. package/public/assets/{activity-BUt4FiFQ.js.map → activity-DReCE2mK.js.map} +1 -1
  9. package/public/assets/{agent-profiles-C1dvEaGS.js → agent-profiles-D3ba8Xpe.js} +2 -2
  10. package/public/assets/{agent-profiles-C1dvEaGS.js.map → agent-profiles-D3ba8Xpe.js.map} +1 -1
  11. package/public/assets/agents-BcsIxadm.js +2 -0
  12. package/public/assets/{agents-DvJZ0Tcz.js.map → agents-BcsIxadm.js.map} +1 -1
  13. package/public/assets/{analytics-DMLoMwta.js → analytics-0lOlkaib.js} +2 -2
  14. package/public/assets/{analytics-DMLoMwta.js.map → analytics-0lOlkaib.js.map} +1 -1
  15. package/public/assets/{automation-DICpRUGK.js → automation-D66mthBn.js} +2 -2
  16. package/public/assets/{automation-DICpRUGK.js.map → automation-D66mthBn.js.map} +1 -1
  17. package/public/assets/{branch-state-badge-BYE2U_y4.js → branch-state-badge-NH-l2Eh3.js} +2 -2
  18. package/public/assets/{branch-state-badge-BYE2U_y4.js.map → branch-state-badge-NH-l2Eh3.js.map} +1 -1
  19. package/public/assets/{channels-3SlDQL3j.js → channels-BlHLMQVk.js} +2 -2
  20. package/public/assets/{channels-3SlDQL3j.js.map → channels-BlHLMQVk.js.map} +1 -1
  21. package/public/assets/chat-rwffRsPX.js +2 -0
  22. package/public/assets/chat-rwffRsPX.js.map +1 -0
  23. package/public/assets/{connectors-CrEW591Q.js → connectors-CdsiaLD3.js} +2 -2
  24. package/public/assets/{connectors-CrEW591Q.js.map → connectors-CdsiaLD3.js.map} +1 -1
  25. package/public/assets/{formatted-body-ChERiS0y.js → formatted-body-C1AprxyU.js} +3 -3
  26. package/public/assets/{formatted-body-ChERiS0y.js.map → formatted-body-C1AprxyU.js.map} +1 -1
  27. package/public/assets/formatted-body-impl-D_ZJQVNk.js +3 -0
  28. package/public/assets/formatted-body-impl-D_ZJQVNk.js.map +1 -0
  29. package/public/assets/{index-CtBqO8vm.js → index-DfPouNiV.js} +10 -10
  30. package/public/assets/index-DfPouNiV.js.map +1 -0
  31. package/public/assets/{insights-DBjaf3N5.js → insights-BJf1vwrf.js} +2 -2
  32. package/public/assets/{insights-DBjaf3N5.js.map → insights-BJf1vwrf.js.map} +1 -1
  33. package/public/assets/{integrations-B-bdliwU.js → integrations-BZSHasnY.js} +2 -2
  34. package/public/assets/{integrations-B-bdliwU.js.map → integrations-BZSHasnY.js.map} +1 -1
  35. package/public/assets/{maintenance-EWlKbynM.js → maintenance-uEI1lArh.js} +2 -2
  36. package/public/assets/{maintenance-EWlKbynM.js.map → maintenance-uEI1lArh.js.map} +1 -1
  37. package/public/assets/{managed-agents-DzjKwBh4.js → managed-agents-mX3hHpOP.js} +4 -4
  38. package/public/assets/{managed-agents-DzjKwBh4.js.map → managed-agents-mX3hHpOP.js.map} +1 -1
  39. package/public/assets/{markdown-preview-impl-bwLB6Gc-.js → markdown-preview-impl-ClNwMC48.js} +2 -2
  40. package/public/assets/{markdown-preview-impl-bwLB6Gc-.js.map → markdown-preview-impl-ClNwMC48.js.map} +1 -1
  41. package/public/assets/{memory-DEwJsFNK.js → memory-OfusEzGh.js} +2 -2
  42. package/public/assets/{memory-DEwJsFNK.js.map → memory-OfusEzGh.js.map} +1 -1
  43. package/public/assets/messages-DsQGj0gU.js +2 -0
  44. package/public/assets/{messages-BSMkT9X2.js.map → messages-DsQGj0gU.js.map} +1 -1
  45. package/public/assets/{orchestrators-Bl8k3KxQ.js → orchestrators-BwWyl4mB.js} +2 -2
  46. package/public/assets/{orchestrators-Bl8k3KxQ.js.map → orchestrators-BwWyl4mB.js.map} +1 -1
  47. package/public/assets/overview-CED1SeTY.js +2 -0
  48. package/public/assets/{overview-CdFe7Dmc.js.map → overview-CED1SeTY.js.map} +1 -1
  49. package/public/assets/{pairs-0ewxtvFZ.js → pairs-BNu6ZWg4.js} +2 -2
  50. package/public/assets/{pairs-0ewxtvFZ.js.map → pairs-BNu6ZWg4.js.map} +1 -1
  51. package/public/assets/{projects-DEn85LQb.js → projects-BmopRiUD.js} +2 -2
  52. package/public/assets/{projects-DEn85LQb.js.map → projects-BmopRiUD.js.map} +1 -1
  53. package/public/assets/{prompt-settings-CMQ2tHe0.js → prompt-settings-Ci2n1cFt.js} +2 -2
  54. package/public/assets/{prompt-settings-CMQ2tHe0.js.map → prompt-settings-Ci2n1cFt.js.map} +1 -1
  55. package/public/assets/{registry-DntwLc8a.js → registry-DwXnDIql.js} +2 -2
  56. package/public/assets/{registry-DntwLc8a.js.map → registry-DwXnDIql.js.map} +1 -1
  57. package/public/assets/security-AW5EbdOm.js +3 -0
  58. package/public/assets/security-AW5EbdOm.js.map +1 -0
  59. package/public/assets/{select-B19D5ToH.js → select-CEeWX4hp.js} +2 -2
  60. package/public/assets/{select-B19D5ToH.js.map → select-CEeWX4hp.js.map} +1 -1
  61. package/public/assets/settings-DYUdGz4G.js +6 -0
  62. package/public/assets/{settings-BzYvlKIL.js.map → settings-DYUdGz4G.js.map} +1 -1
  63. package/public/assets/store-BaslPLIP.js +9 -0
  64. package/public/assets/store-BaslPLIP.js.map +1 -0
  65. package/public/assets/{tasks-vZ5VRoO8.js → tasks-DxCsrY4g.js} +2 -2
  66. package/public/assets/{tasks-vZ5VRoO8.js.map → tasks-DxCsrY4g.js.map} +1 -1
  67. package/public/assets/{teams-E3rI5gkA.js → teams-CF7vi-oM.js} +2 -2
  68. package/public/assets/{teams-E3rI5gkA.js.map → teams-CF7vi-oM.js.map} +1 -1
  69. package/public/assets/{terminal-viewer-impl-24nB6STe.js → terminal-viewer-impl-Dy3vqOnW.js} +2 -2
  70. package/public/assets/{terminal-viewer-impl-24nB6STe.js.map → terminal-viewer-impl-Dy3vqOnW.js.map} +1 -1
  71. package/public/assets/types-uVOXgvMT.js.map +1 -1
  72. package/public/assets/{work-queue-Bql5E-C3.js → work-queue-BPaGXrCE.js} +2 -2
  73. package/public/assets/{work-queue-Bql5E-C3.js.map → work-queue-BPaGXrCE.js.map} +1 -1
  74. package/public/assets/{workspaces-DjQ6EdrZ.js → workspaces-BLEXgnlj.js} +2 -2
  75. package/public/assets/{workspaces-DjQ6EdrZ.js.map → workspaces-BLEXgnlj.js.map} +1 -1
  76. package/public/index.html +3 -3
  77. package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
  78. package/runner/src/config.ts +24 -3
  79. package/src/automations/reconcile.ts +69 -4
  80. package/src/branch-landed.ts +18 -7
  81. package/src/bus.ts +23 -16
  82. package/src/db/connection.ts +29 -1
  83. package/src/db/maintenance-worker.ts +25 -0
  84. package/src/db/message-reads.ts +69 -44
  85. package/src/db/migrations.ts +1 -0
  86. package/src/db/provider-quotas.ts +6 -7
  87. package/src/db/schema.ts +2 -1
  88. package/src/maintenance/jobs.ts +3 -3
  89. package/src/mcp/index.ts +5 -5
  90. package/src/mcp/tools-workspace.ts +8 -3
  91. package/src/routes/orchestrator-proxy.ts +7 -6
  92. package/src/routes/tasks.ts +29 -0
  93. package/src/routes/workspaces.ts +9 -2
  94. package/src/runtime-tokens.ts +4 -0
  95. package/src/security.ts +31 -7
  96. package/src/server.ts +40 -18
  97. package/src/services/git-remote.ts +29 -0
  98. package/src/services/issue-lifecycle.ts +6 -6
  99. package/src/services/project.ts +47 -1
  100. package/src/services/send-message.ts +2 -4
  101. package/src/services/spawn-agent.ts +2 -2
  102. package/src/services/task-lifecycle.ts +6 -5
  103. package/src/settings/registry.ts +6 -4
  104. package/src/spawn-targets.ts +2 -2
  105. package/src/sse.ts +37 -18
  106. package/src/steward.ts +10 -6
  107. package/src/terminal-authz.ts +50 -0
  108. package/src/token-db.ts +3 -3
  109. package/src/validation.ts +1 -1
  110. package/src/workspace-actions.ts +46 -4
  111. package/src/workspace-auto-merge.ts +120 -13
  112. package/src/workspace-orphans.ts +1 -1
  113. package/src/workspace-probe.ts +19 -10
  114. package/public/assets/MessageBubble-BJXjk3GB.js +0 -2
  115. package/public/assets/PlanGraphPanel-DI5JOnm1.js +0 -2
  116. package/public/assets/PlanGraphPanel-DI5JOnm1.js.map +0 -1
  117. package/public/assets/agents-DvJZ0Tcz.js +0 -2
  118. package/public/assets/chat-_I9nvxj2.js +0 -2
  119. package/public/assets/chat-_I9nvxj2.js.map +0 -1
  120. package/public/assets/formatted-body-impl-CiaUIrP3.js +0 -3
  121. package/public/assets/formatted-body-impl-CiaUIrP3.js.map +0 -1
  122. package/public/assets/index-CtBqO8vm.js.map +0 -1
  123. package/public/assets/messages-BSMkT9X2.js +0 -2
  124. package/public/assets/overview-CdFe7Dmc.js +0 -2
  125. package/public/assets/security-CYwC-26O.js +0 -3
  126. package/public/assets/security-CYwC-26O.js.map +0 -1
  127. package/public/assets/settings-BzYvlKIL.js +0 -6
  128. package/public/assets/store-BuuJUn70.js +0 -9
  129. package/public/assets/store-BuuJUn70.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{Gn as t,Kn as n,S as r,Sn as i,Ut as a,a as o,bn as s,en as c,er as l,hr as u,ir as d,l as f,nr as p,pn as m,pt as h,r as g}from"./lucide-react-Dc3ZwCBi.js";import{t as _,y as v}from"./store-BuuJUn70.js";import{o as y}from"./types-uVOXgvMT.js";import{V as b,_ as x,f as S,k as C,v as ee}from"./display-exQDWum3.js";import{t as w}from"./agent-type-icon-BEz393ra.js";import{t as T}from"./formatted-body-ChERiS0y.js";import{A as E,L as D,M as O,O as te,P as ne,T as k,h as A,k as j,l as M,n as N,o as P,t as F,w as I}from"./index-CtBqO8vm.js";import{t as L}from"./user-avatar-DuwCFrER.js";var R=e(u(),1);function re(){return(0,R.useSyncExternalStore)(e=>v.subscribe(e),()=>v.getPlayingKey(),()=>null)}var z=p();function ie({msg:e,peer:t}){return(0,z.jsx)(A,{msg:e,issueRepo:_(e=>e.agentsById[t]?.issueRepo)})}function B({agent:e,onClick:t}){let n=!!(t&&e);return(0,z.jsx)(`button`,{type:`button`,title:e?e.label||e.name||e.id:void 0,onClick:t,disabled:!n,className:l(`shrink-0 self-end transition-opacity`,n?`cursor-pointer hover:opacity-80`:`cursor-default opacity-60`),children:(0,z.jsx)(w,{agent:e})})}function ae({agentId:e,onOpen:t}){let n=_(t=>t.agentsById[e]??null);return(0,z.jsx)(B,{agent:n,onClick:n?()=>t(n):void 0})}function V({attachment:e,outbound:t}){let n=e.kind===`image`,r=e.title||e.artifactId,[i,u]=(0,R.useState)(null),[f,p]=(0,R.useState)(null),[m,_]=(0,R.useState)(!1),[v,y]=(0,R.useState)(!1);(0,R.useEffect)(()=>{let t=!1,n=null;async function r(){_(!0),p(null),u(null);try{let r=await d(`/artifacts/${encodeURIComponent(e.artifactId)}/content`);if(t)return;n=URL.createObjectURL(r),u(n)}catch(e){t||p(e.message)}finally{t||_(!1)}}return r(),()=>{t=!0,n&&URL.revokeObjectURL(n)}},[e.artifactId]);function b(){if(!i)return;let e=document.createElement(`a`);e.href=i,e.download=r,document.body.appendChild(e),e.click(),e.remove()}return n?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,onClick:()=>i&&y(!0),disabled:!i,className:`group/img mt-2 block overflow-hidden rounded-md border border-foreground/10 bg-black/10 text-left disabled:cursor-default relative`,children:i?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`img`,{src:i,alt:r,loading:`lazy`,className:`block max-h-72 max-w-full object-contain`}),(0,z.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/0 group-hover/img:bg-black/30 transition-colors`,children:(0,z.jsx)(g,{className:`w-6 h-6 text-white opacity-0 group-hover/img:opacity-100 transition-opacity drop-shadow-md`})})]}):(0,z.jsxs)(`span`,{className:l(`flex min-h-20 items-center gap-2 px-3 py-2 text-xs`,f?`text-red-400`:`text-muted-foreground`),children:[m?(0,z.jsx)(h,{className:`h-4 w-4 animate-spin`}):(0,z.jsx)(s,{className:`h-4 w-4`}),f||`Loading image`]})}),i&&(0,z.jsx)(F,{open:v,onOpenChange:y,children:(0,z.jsxs)(N,{className:`max-w-[95vw] max-h-[95vh] w-auto p-0 bg-black/95 border-zinc-800 gap-0 overflow-hidden`,showCloseButton:!1,children:[(0,z.jsx)(P,{className:`sr-only`,children:r}),(0,z.jsxs)(`div`,{className:`relative flex items-center justify-center min-h-[200px]`,children:[(0,z.jsx)(`img`,{src:i,alt:r,className:`max-w-[93vw] max-h-[90vh] object-contain`}),(0,z.jsxs)(`div`,{className:`absolute top-2 right-2 flex gap-1`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:b,className:`rounded-md bg-black/60 hover:bg-black/80 p-2 text-white transition-colors`,title:`Download`,children:(0,z.jsx)(c,{className:`w-4 h-4`})}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>y(!1),className:`rounded-md bg-black/60 hover:bg-black/80 p-2 text-white transition-colors`,title:`Close`,children:(0,z.jsx)(o,{className:`w-4 h-4`})})]})]})]})})]}):(0,z.jsxs)(`button`,{type:`button`,onClick:b,disabled:!i,className:l(`mt-2 flex w-full items-center gap-2 rounded-md border px-2.5 py-2 text-left text-xs transition-colors disabled:cursor-default disabled:opacity-70`,t?`border-primary-foreground/20 bg-primary-foreground/10 hover:bg-primary-foreground/15`:`border-border bg-background hover:bg-muted`),children:[m?(0,z.jsx)(h,{className:`h-4 w-4 shrink-0 animate-spin`}):f?(0,z.jsx)(s,{className:`h-4 w-4 shrink-0 text-red-400`}):(0,z.jsx)(a,{className:`h-4 w-4 shrink-0`}),(0,z.jsx)(`span`,{className:l(`min-w-0 flex-1 truncate`,f&&`text-red-400`),children:f||r}),(0,z.jsx)(c,{className:`h-3.5 w-3.5 shrink-0`})]})}function H({open:e,onToggle:t,onReact:n}){return(0,z.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,z.jsx)(`button`,{type:`button`,title:`Add reaction`,onClick:t,className:l(`inline-flex h-5 w-6 items-center justify-center rounded-full border border-border bg-popover text-muted-foreground shadow-sm transition hover:bg-muted hover:text-foreground`,e?`opacity-100`:`opacity-0 pointer-events-none md:group-hover/msg:opacity-100 md:group-hover/msg:pointer-events-auto`),children:(0,z.jsx)(r,{className:`h-3 w-3`})}),e&&(0,z.jsx)(`div`,{className:`absolute bottom-full left-0 z-30 mb-1 flex gap-0.5 rounded-full border border-border bg-popover p-0.5 shadow-md`,children:I.map(e=>(0,z.jsx)(`button`,{type:`button`,title:`React ${e}`,onClick:()=>n(e),className:`inline-flex h-6 w-7 items-center justify-center rounded-full text-xs transition-colors hover:bg-muted`,children:e},e))})]})}function U({msg:e,peer:r}){let[a,o]=(0,R.useState)(!1),s=_(e=>e.agentsById),c=_(e=>e.openAgentDetail),u=e.from===r,d=(u?e.to:e.from)||``,f=s[u?r:d]?.issueRepo??s[r]?.issueRepo,p=!d||d===`broadcast`||d.includes(`:`),m=C(e),h=k(e.occurredAt??e.createdAt),g=u?t:n,v=s[e.from??``]??null;function y(e){e.stopPropagation(),v&&c(v)}return(0,z.jsx)(`div`,{"data-msg-id":e.id,className:`flex justify-center mb-1.5`,children:(0,z.jsxs)(`div`,{className:`w-full max-w-[94%] rounded-md border border-border/50 bg-muted/15 px-2.5 py-1`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs cursor-pointer select-none`,onClick:()=>o(e=>!e),children:[(0,z.jsx)(i,{className:l(`h-3 w-3 shrink-0 text-muted-foreground/60 transition-transform`,a&&`rotate-90`)}),(0,z.jsx)(`button`,{type:`button`,title:v?v.label||v.name||v.id:void 0,disabled:!v,onClick:y,className:l(`shrink-0 transition-opacity`,v?`cursor-pointer hover:opacity-80`:`cursor-default opacity-60`),children:(0,z.jsx)(w,{agent:v,className:`!w-4 !h-4 !rounded-sm opacity-70`})}),(0,z.jsx)(g,{className:`h-3 w-3 shrink-0 text-muted-foreground/70`}),(0,z.jsxs)(`span`,{className:`shrink-0 text-muted-foreground`,children:[`Message `,u?`to`:`from`]}),p?(0,z.jsx)(`span`,{className:`shrink-0 font-medium text-muted-foreground`,children:S(d,s)}):(0,z.jsx)(M,{agentId:d,className:`shrink-0 px-0.5 text-foreground/80`,noIcon:!0}),!a&&(0,z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-muted-foreground/50`,children:m}),(0,z.jsx)(`span`,{className:`ml-auto shrink-0 text-muted-foreground/40`,children:h})]}),a&&(0,z.jsx)(`div`,{className:`mt-1.5 pl-5`,children:(0,z.jsx)(T,{text:m,rawBody:e.body,issueRepo:f,className:`text-sm leading-relaxed text-foreground/90`})})]})})}var W=(0,R.memo)(function({msg:e,peer:t,showAvatar:n=!1,onOpenReferencedPath:r,onPreviewReferencedPath:i,onPreviewReferencedPathEnd:a}){if(!y(e.from)&&!y(e.to))return(0,z.jsx)(U,{msg:e,peer:t});let o=e.kind===`session`?e.payload?.session:void 0;if(o?.type===`prompt`&&o?.origin===`provider`)return(0,z.jsx)(ie,{msg:e,peer:t});let s=y(e.from),c=_(e=>e.reactToMessage),u=_(e=>e.voiceTtsEnabled),d=re(),p=_(e=>{let n=e.agentsById[t]?.meta?.cwd;return typeof n==`string`?n:``}),h=_(e=>e.agentsById[t]?.issueRepo),g=_(e=>e.usersById),S=_(e=>e.users.length>1),w=s?b(e.from,g):void 0,A=_(e=>e.openAgentDetail);_(e=>e.openTaskDetailById);let[M,N]=(0,R.useState)(!1),P=(0,R.useRef)(null),F=(0,R.useRef)(null),I=(0,R.useRef)(!1),B=C(e),W=k(e.occurredAt??e.createdAt),G=O(e),K=te(e),q=s?ne(e,t):null,J=q?.icon,Y=d===String(e.id),oe=u&&!s&&!E(e)&&B.trim().length>0;function se(t){t.stopPropagation(),Y?v.bargeIn():v.speak(e.body,String(e.id))}(0,R.useEffect)(()=>{if(!M)return;function e(e){j()||P.current&&!P.current.contains(e.target)&&N(!1)}return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[M]);function X(e){return D(p||`/`,e)}function Z(e,t){let n=X(e);r?.(n,t)}function ce(e,t,n){let r=X(e);i?.(r,t,n)}function Q(t){c(e,t),N(!1)}function le(e){e.button===0&&(F.current={x:e.clientX,y:e.clientY},I.current=!1)}function ue(e){let t=F.current;t&&(Math.abs(e.clientX-t.x)>3||Math.abs(e.clientY-t.y)>3)&&(I.current=!0)}function de(t){if(!(E(e)||s)&&!t.target.closest(`a,button,input,textarea,select,[role="button"]`)){if(I.current||j()){I.current=!1;return}N(e=>!e)}}let $=n&&!E(e);return(0,z.jsxs)(`div`,{"data-msg-id":e.id,className:l(`group/msg flex mb-3 items-end`,s?`justify-end`:`justify-start`,$&&`gap-1.5`),children:[!s&&$&&(0,z.jsx)(ae,{agentId:t,onOpen:A}),(0,z.jsxs)(`div`,{ref:P,className:l(`relative`,$?`max-w-[calc(85%-2rem)] md:max-w-[calc(75%-2rem)]`:`max-w-[85%] md:max-w-[75%]`),children:[oe&&(0,z.jsx)(`button`,{type:`button`,title:Y?`Stop playback`:`Play aloud`,onClick:se,className:l(`absolute -top-2 -right-2 z-20 inline-flex h-6 w-6 items-center justify-center rounded-full border bg-popover shadow-sm transition`,Y?`border-primary/50 text-primary opacity-100`:`border-border text-muted-foreground opacity-70 hover:bg-muted hover:text-foreground hover:opacity-100 [@media(hover:hover)]:md:opacity-0 [@media(hover:hover)]:md:group-hover/msg:opacity-100`),children:Y?(0,z.jsx)(m,{className:`h-3.5 w-3.5 animate-pulse`}):(0,z.jsx)(f,{className:`h-3.5 w-3.5`})}),(0,z.jsxs)(`div`,{className:l(`rounded-2xl px-3.5 py-2 text-sm select-text`,!s&&!E(e)&&`cursor-pointer`,s?`bg-primary text-primary-foreground rounded-br-sm`:`bg-card ring-1 ring-foreground/10 rounded-bl-sm`),onPointerDown:le,onPointerMove:ue,onClick:de,children:[s&&S&&(0,z.jsx)(`p`,{className:l(`text-[11px] font-semibold mb-0.5 text-right`,x(e.from)),children:ee(e.from,g)}),e.subject&&(0,z.jsx)(`p`,{className:l(`text-xs font-semibold mb-1`,s?`text-primary-foreground/70`:`text-muted-foreground`),children:e.subject}),(0,z.jsx)(T,{text:B,rawBody:e.body,issueRepo:h,className:`leading-relaxed`,onPrimary:s,onOpenPath:Z,onPreviewPath:ce,onPreviewPathEnd:a,resolvePathTitle:(e,t)=>`${X(e)}${t?`:${t}`:``}`}),G.map(t=>(0,z.jsx)(V,{attachment:t,outbound:s},`${e.id}-${t.artifactId}-${t.role||``}`)),(0,z.jsxs)(`p`,{className:l(`text-xs mt-1 flex items-center gap-1.5`,s?`justify-end text-primary-foreground/60`:`justify-end text-muted-foreground`),children:[(0,z.jsxs)(`span`,{className:`opacity-40`,children:[`#`,e.id]}),(0,z.jsx)(`span`,{children:W}),q&&J&&(0,z.jsxs)(`span`,{className:l(`inline-flex items-center gap-1`,q.tone===`ok`&&`text-emerald-300`,q.tone===`warn`&&`text-amber-200`,q.tone===`danger`&&`text-red-200`),title:q.title,children:[(0,z.jsx)(J,{className:`h-3 w-3`}),q.label]})]})]}),!E(e)&&K.length>0&&(0,z.jsxs)(`div`,{className:l(`flex flex-wrap items-center gap-0.5 -mt-1 relative z-10`,s?`justify-end pr-2`:`justify-start pl-2`),children:[!s&&(0,z.jsx)(H,{open:M,onToggle:()=>N(e=>!e),onReact:Q}),K.map(e=>(0,z.jsxs)(`button`,{type:`button`,title:e.actors.join(`, `),onClick:()=>Q(e.emoji),className:l(`inline-flex h-5 items-center gap-0.5 rounded-full border px-1.5 text-[11px] shadow-sm transition-colors`,e.mine?`border-primary/40 bg-primary/10 text-primary`:`border-border bg-background hover:bg-muted text-foreground`),children:[(0,z.jsx)(`span`,{children:e.emoji}),e.count>1&&(0,z.jsx)(`span`,{children:e.count})]},e.emoji))]}),!E(e)&&!s&&K.length===0&&(0,z.jsx)(`div`,{className:`absolute -bottom-2.5 left-1 z-20`,children:(0,z.jsx)(H,{open:M,onToggle:()=>N(e=>!e),onReact:Q})})]}),s&&$&&(0,z.jsx)(`span`,{className:`shrink-0 self-end opacity-60`,children:(0,z.jsx)(L,{user:w,address:e.from,distinct:S})})]})});export{W as t};
2
- //# sourceMappingURL=MessageBubble-BJXjk3GB.js.map
@@ -1,2 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{Mt as t,Qn as n,Zn as r,er as i,hr as a,mt as o,nr as s,rr as c,wn as l,xn as u}from"./lucide-react-Dc3ZwCBi.js";import{i as d,r as f,t as p}from"./store-BuuJUn70.js";import{t as m}from"./task-chip-kxk4eNm1.js";import{J as h}from"./index-CtBqO8vm.js";var g=e(a(),1),_=`(max-width: 767px)`;function v(e){if(typeof window>`u`)return()=>{};let t=window.matchMedia(_);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function y(){return(0,g.useSyncExternalStore)(v,()=>typeof window<`u`?window.matchMedia(_).matches:!1,()=>!1)}var b=s(),x=196,S=84,C=52,w=16,T=14,E=[`landed`,`in-progress`,`pending`,`blocked`],D={landed:{label:`landed`,dot:`bg-emerald-400`,accent:`border-l-emerald-400`,text:`text-emerald-300`,wire:`#34d399`},"in-progress":{label:`in progress`,dot:`bg-sky-400`,accent:`border-l-sky-400`,text:`text-sky-300`,wire:`#38bdf8`},pending:{label:`pending`,dot:`bg-amber-400`,accent:`border-l-amber-400`,text:`text-amber-300`,wire:`#fbbf24`},blocked:{label:`blocked`,dot:`bg-red-400`,accent:`border-l-red-400`,text:`text-red-300`,wire:`#f87171`}},O=new Set([`done`,`completed`]);function k(e){return O.has(e.status)}function A(e,t){return t?e:e.filter(e=>!k(e))}function j(e){return e?e.label||(e.policyName?`policy:${e.policyName}`:e.agentId||``):``}function M(e){let t=new Map(e.nodes.map(e=>[e.id,e])),n=new Map(e.nodes.map((e,t)=>[e.id,t])),r=new Map,i=new Map(e.nodes.map(e=>[e.id,0]));for(let n of e.edges)!t.has(n.from)||!t.has(n.to)||(r.set(n.from,[...r.get(n.from)??[],n.to]),i.set(n.to,(i.get(n.to)??0)+1));let a=new Map(e.nodes.map(e=>[e.id,0])),o=e.nodes.filter(e=>(i.get(e.id)??0)===0).map(e=>e.id),s=new Set;for(;o.length;){let e=o.shift();s.add(e);let t=a.get(e)??0;for(let n of r.get(e)??[])a.set(n,Math.max(a.get(n)??0,t+1)),i.set(n,(i.get(n)??0)-1),(i.get(n)??0)===0&&o.push(n)}let c=Math.max(0,...Array.from(a.values()))+1;for(let t of e.nodes)s.has(t.id)||a.set(t.id,c++);let l=new Map;for(let t of e.nodes){let e=a.get(t.id)??0;l.set(e,[...l.get(e)??[],t])}let u=[...l.entries()].sort(([e],[t])=>e-t),d=Math.max(1,...u.map(([,e])=>e.length)),f=S+w,p=[];u.forEach(([e,t],r)=>{let i=[...t].sort((e,t)=>(e.lane||``).localeCompare(t.lane||``)||(n.get(e.id)??0)-(n.get(t.id)??0)),a=(d-i.length)*f/2;i.forEach((t,n)=>{p.push({node:t,layer:e,x:T+r*(x+C),y:T+a+n*f})})});let m=u.length;return{nodes:p,width:Math.max(320,T*2+m*x+Math.max(0,m-1)*C),height:Math.max(S+T*2,T*2+d*S+Math.max(0,d-1)*w)}}function N(e,t){let n=e.x+x,r=e.y+S/2,i=t.x,a=t.y+S/2,o=n+Math.max(20,(i-n)/2);return`M ${n} ${r} C ${o} ${r}, ${o} ${a}, ${i} ${a}`}function P({threadId:e,teamId:a,channel:o}){let s=a?d(a,o):e?f(e,o):``,c=p(e=>a?e.plansByTeam[s]:s?e.plansByThread[s]:null),_=p(e=>e.fetchPlan),v=p(e=>e.setPlanArchived),C=p(e=>e.planCollapsed),w=p(e=>e.setPlanCollapsed),T=p(e=>e.issueRefsById),O=p(e=>e.deliverableTasks),k=p(e=>e.openTaskDetailById),A=y(),[P,F]=(0,g.useState)(!1),I=C??A;(0,g.useEffect)(()=>{if(a){_({teamId:a,channel:o});return}e&&_({threadId:e,channel:o})},[o,_,a,e]);let L=(0,g.useMemo)(()=>c?M(c):null,[c]),R=(0,g.useMemo)(()=>new Map(L?.nodes.map(e=>[e.node.id,e])??[]),[L]),z=(0,g.useMemo)(()=>{if(!c)return[];let e=new Map;for(let t of c.nodes)e.set(t.status,(e.get(t.status)??0)+1);return E.filter(t=>e.has(t)).map(t=>({status:t,count:e.get(t)??0}))},[c]);if(!c||!L)return null;if(c.archived&&!P)return(0,b.jsx)(`section`,{className:`shrink-0 border-b border-border bg-card/45 px-3 py-2`,children:(0,b.jsxs)(`button`,{type:`button`,onClick:()=>F(!0),className:`flex min-w-0 items-center gap-2 text-left text-muted-foreground hover:text-foreground`,"aria-expanded":`false`,children:[(0,b.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60`,children:(0,b.jsx)(r,{className:`h-3 w-3`})}),(0,b.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[11px] font-semibold uppercase tracking-wider`,children:`Show archived plan (1)`}),(0,b.jsx)(l,{className:`h-3.5 w-3.5 shrink-0`})]})});if(c.archived)return(0,b.jsx)(`section`,{className:`shrink-0 border-b border-border bg-card/45 px-3 py-2`,children:(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60`,children:(0,b.jsx)(r,{className:`h-3 w-3 text-muted-foreground`})}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,b.jsx)(`div`,{className:`truncate text-[13px] font-semibold leading-tight text-muted-foreground`,children:c.title||`Plan`}),(0,b.jsx)(`div`,{className:`truncate text-[11px] leading-tight text-muted-foreground`,children:`Archived plan`})]}),(0,b.jsx)(`span`,{className:`shrink-0 rounded border border-border bg-muted/40 px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground`,children:`archived`}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>F(!1),className:`shrink-0 rounded border border-border bg-muted/40 px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground hover:bg-muted/60 hover:text-foreground`,"aria-expanded":`true`,children:`Hide`}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>void v(c.id,!1),title:`Unarchive plan`,"aria-label":`Unarchive plan`,className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground`,children:(0,b.jsx)(n,{className:`h-3.5 w-3.5`})})]})});let B=c.nodes.length,V=z.find(e=>e.status===`landed`)?.count??0,H=`${B} node${B===1?``:`s`}${V>0?` · ${V} landed`:``}`;return(0,b.jsxs)(`section`,{className:`shrink-0 border-b border-border bg-card/45 px-3 py-2`,children:[(0,b.jsxs)(`div`,{className:i(`flex min-w-0 items-center gap-2`,!I&&`mb-2`),children:[(0,b.jsxs)(`button`,{type:`button`,onClick:()=>w(!I),"aria-expanded":!I,"aria-label":I?`Expand plan graph`:`Collapse plan graph`,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,b.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60`,children:(0,b.jsx)(t,{className:`h-3 w-3 text-muted-foreground`})}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,b.jsx)(`div`,{className:`truncate text-[13px] font-semibold leading-tight text-foreground`,children:c.title||`Plan`}),(0,b.jsx)(`div`,{className:`truncate text-[11px] leading-tight text-muted-foreground`,children:I?H:c.objective||H})]})]}),z.length>0&&(0,b.jsx)(`div`,{className:`hidden shrink-0 items-center gap-2.5 sm:flex`,children:z.map(({status:e,count:t})=>(0,b.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,b.jsx)(`span`,{className:i(`h-1.5 w-1.5 rounded-full`,D[e].dot)}),(0,b.jsx)(`span`,{className:i(`font-medium tabular-nums`,D[e].text),children:t}),(0,b.jsx)(`span`,{children:D[e].label})]},e))}),(0,b.jsxs)(`span`,{className:`shrink-0 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] font-medium tabular-nums text-muted-foreground`,children:[`v`,c.version]}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>void v(c.id,!0),title:`Archive plan`,"aria-label":`Archive plan`,className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground`,children:(0,b.jsx)(r,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>w(!I),"aria-expanded":!I,"aria-label":I?`Expand plan graph`:`Collapse plan graph`,className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground`,children:I?(0,b.jsx)(l,{className:`h-3.5 w-3.5`}):(0,b.jsx)(u,{className:`h-3.5 w-3.5`})})]}),I?null:c.nodes.length===0?(0,b.jsx)(`div`,{className:`rounded-md border border-dashed border-border px-3 py-3 text-center text-xs text-muted-foreground`,children:`No nodes yet — the plan graph fills in as the team is composed.`}):(0,b.jsx)(`div`,{className:`max-h-[min(46vh,360px)] overflow-auto`,children:(0,b.jsxs)(`div`,{className:`relative`,style:{width:L.width,height:L.height},children:[(0,b.jsxs)(`svg`,{className:`pointer-events-none absolute inset-0`,width:L.width,height:L.height,"aria-hidden":`true`,children:[(0,b.jsx)(`defs`,{children:E.map(e=>(0,b.jsx)(`marker`,{id:`plan-arrow-${e}`,viewBox:`0 0 8 8`,refX:`6.5`,refY:`4`,markerWidth:`6`,markerHeight:`6`,orient:`auto-start-reverse`,children:(0,b.jsx)(`path`,{d:`M0 0 L8 4 L0 8 z`,fill:D[e].wire})},e))}),c.edges.map(e=>{let t=R.get(e.from),n=R.get(e.to);if(!t||!n)return null;let r=D[t.node.status];return(0,b.jsx)(`path`,{d:N(t,n),stroke:r.wire,strokeOpacity:.7,strokeWidth:2,fill:`none`,strokeLinecap:`round`,markerEnd:`url(#plan-arrow-${t.node.status})`},`${e.from}->${e.to}`)})]}),L.nodes.map(({node:e,x:t,y:n})=>{let r=D[e.status],a=j(e.ownerRef),o=e.refs?.issueId?T[e.refs.issueId]:null,s=e.refs?.taskId?parseInt(e.refs.taskId,10):null,c=s==null?void 0:O.find(e=>e.id===s)?.title;return(0,b.jsxs)(`article`,{className:i(`group absolute flex flex-col justify-between rounded-md border border-l-[3px] bg-background/95 p-2`,`shadow-sm transition-all hover:-translate-y-px hover:border-border hover:shadow-md hover:bg-background`,r.accent),style:{left:t,top:n,width:x,height:S},title:e.scopeBlurb||e.label,children:[(0,b.jsx)(`div`,{className:`truncate text-xs font-semibold leading-tight text-foreground`,children:e.label}),(e.scopeBlurb||e.id)&&(0,b.jsx)(`div`,{className:`truncate text-[10px] leading-tight text-muted-foreground`,children:e.scopeBlurb||e.id}),(o||s!=null)&&(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-1`,children:[o&&(0,b.jsx)(h,{issueRef:o,compact:!0,className:`max-w-full`}),s!=null&&(0,b.jsx)(m,{id:s,title:c,onClick:()=>k(s),className:`max-w-full`})]}),(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-1.5`,children:[(0,b.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,b.jsx)(`span`,{className:i(`h-1.5 w-1.5 shrink-0 rounded-full`,r.dot)}),(0,b.jsx)(`span`,{className:i(`text-[10px] font-medium`,r.text),children:r.label})]}),(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[a&&(0,b.jsx)(`span`,{className:`truncate text-[10px] text-muted-foreground`,children:a}),e.lane&&(0,b.jsx)(`span`,{className:`shrink-0 rounded-sm bg-muted/70 px-1 py-px text-[9px] font-medium uppercase tracking-wide text-muted-foreground`,children:e.lane})]})]})]},e.id)})]})})]})}function F({agentId:e}){let t=p(e=>e.openTaskDetailById),n=p(e=>e.sessionTasksCollapsed),r=p(e=>e.setSessionTasksCollapsed),[a,s]=(0,g.useState)([]),[d,f]=(0,g.useState)(!1);if((0,g.useEffect)(()=>{c(`GET`,`/task-entities?createdBy=`+encodeURIComponent(e)).then(e=>s(e)).catch(()=>{})},[e]),a.length===0)return null;let h=a.filter(k).length,_=A(a,d);return(0,b.jsxs)(`section`,{className:`shrink-0 border-b border-border bg-card/45 px-3 py-2`,children:[(0,b.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),"aria-expanded":!n,"aria-label":n?`Expand session tasks`:`Collapse session tasks`,className:i(`flex w-full min-w-0 items-center gap-2 text-left`,!n&&`mb-1.5`),children:[(0,b.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60`,children:(0,b.jsx)(o,{className:`h-3 w-3 text-muted-foreground`})}),(0,b.jsxs)(`span`,{className:`flex-1 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[`Tasks from this session (`,_.length,`)`]}),(0,b.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground`,children:n?(0,b.jsx)(l,{className:`h-3.5 w-3.5`}):(0,b.jsx)(u,{className:`h-3.5 w-3.5`})})]}),!n&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:_.map(e=>(0,b.jsx)(m,{id:e.id,title:e.title,status:e.status,onClick:()=>t(e.id),compact:!0},e.id))}),h>0&&(0,b.jsx)(`button`,{type:`button`,onClick:()=>f(!d),className:`mt-1.5 rounded border border-border bg-muted/30 px-2 py-0.5 text-[10px] font-medium text-muted-foreground hover:bg-muted/50 hover:text-foreground`,"aria-pressed":d,children:d?`Hide ${h} completed`:`+ ${h} completed`})]})]})}export{F as n,P as t};
2
- //# sourceMappingURL=PlanGraphPanel-DI5JOnm1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlanGraphPanel-DI5JOnm1.js","names":[],"sources":["../../dashboard/src/components/chat/hooks/useIsMobile.ts","../../dashboard/src/components/chat/PlanGraphPanel.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react'\n\n// Reactive narrow-viewport flag. Subscribes to the same `max-width: 767px`\n// breakpoint the chat single-pane layout uses, via useSyncExternalStore — an\n// external-store subscription, not effect-driven derived state — so it stays\n// correct across resize/rotate without a useEffect.\nconst QUERY = '(max-width: 767px)'\n\nfunction subscribe(cb: () => void): () => void {\n if (typeof window === 'undefined') return () => {}\n const mql = window.matchMedia(QUERY)\n mql.addEventListener('change', cb)\n return () => mql.removeEventListener('change', cb)\n}\n\nexport function useIsMobile(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => (typeof window !== 'undefined' ? window.matchMedia(QUERY).matches : false),\n () => false,\n )\n}\n","import { useEffect, useMemo, useState } from 'react'\nimport { Archive, ArchiveRestore, ChevronDown, ChevronUp, GitBranch, ListTodo } from 'lucide-react'\nimport { useRelayStore } from '@/store'\nimport type { Plan, PlanNode, PlanOwnerRef, PlanStatus, Task } from '@/types'\nimport { cn } from '@/lib/utils'\nimport { planLookupKey, planTeamLookupKey } from '@/store/slices/plans'\nimport { IssueRefChip } from '@/components/shared/issue-ref-chip'\nimport { TaskChip } from '@/components/shared/task-chip'\nimport { useIsMobile } from './hooks/useIsMobile'\nimport { api } from '@/lib/api'\n\n// Left-to-right DAG: dependency depth flows along x (sequential gates), nodes\n// that share a depth stack along y (parallel lanes). This keeps the panel SHORT\n// — it's an operator overlay above the chat, not a full view — and lets the\n// gate-vs-lane structure read at a glance. Height is capped + scrollable below.\nconst NODE_W = 196\nconst NODE_H = 84\nconst COL_GAP = 52\nconst ROW_GAP = 16\nconst PAD = 14\n\nconst STATUS_ORDER: PlanStatus[] = ['landed', 'in-progress', 'pending', 'blocked']\n\nconst STATUS_STYLE: Record<\n PlanStatus,\n { label: string; dot: string; accent: string; text: string; wire: string }\n> = {\n landed: { label: 'landed', dot: 'bg-emerald-400', accent: 'border-l-emerald-400', text: 'text-emerald-300', wire: '#34d399' },\n 'in-progress': { label: 'in progress', dot: 'bg-sky-400', accent: 'border-l-sky-400', text: 'text-sky-300', wire: '#38bdf8' },\n pending: { label: 'pending', dot: 'bg-amber-400', accent: 'border-l-amber-400', text: 'text-amber-300', wire: '#fbbf24' },\n blocked: { label: 'blocked', dot: 'bg-red-400', accent: 'border-l-red-400', text: 'text-red-300', wire: '#f87171' },\n}\n\nconst COMPLETED_TASK_STATUSES = new Set(['done', 'completed'])\n\nexport function isCompletedSessionTask(task: Pick<Task, 'status'>): boolean {\n return COMPLETED_TASK_STATUSES.has(task.status)\n}\n\nexport function visibleSessionTasks(tasks: Task[], showCompleted: boolean): Task[] {\n return showCompleted ? tasks : tasks.filter((task) => !isCompletedSessionTask(task))\n}\n\ninterface LayoutNode {\n node: PlanNode\n x: number\n y: number\n layer: number\n}\n\nfunction ownerLabel(owner?: PlanOwnerRef): string {\n if (!owner) return ''\n return owner.label || (owner.policyName ? `policy:${owner.policyName}` : owner.agentId || '')\n}\n\nfunction layerPlan(plan: Plan): { nodes: LayoutNode[]; width: number; height: number } {\n const nodeById = new Map(plan.nodes.map((node) => [node.id, node]))\n const indexById = new Map(plan.nodes.map((node, index) => [node.id, index]))\n const outgoing = new Map<string, string[]>()\n const indegree = new Map(plan.nodes.map((node) => [node.id, 0]))\n for (const edge of plan.edges) {\n if (!nodeById.has(edge.from) || !nodeById.has(edge.to)) continue\n outgoing.set(edge.from, [...(outgoing.get(edge.from) ?? []), edge.to])\n indegree.set(edge.to, (indegree.get(edge.to) ?? 0) + 1)\n }\n\n const layerById = new Map(plan.nodes.map((node) => [node.id, 0]))\n const queue = plan.nodes\n .filter((node) => (indegree.get(node.id) ?? 0) === 0)\n .map((node) => node.id)\n const visited = new Set<string>()\n\n while (queue.length) {\n const id = queue.shift()!\n visited.add(id)\n const fromLayer = layerById.get(id) ?? 0\n for (const to of outgoing.get(id) ?? []) {\n layerById.set(to, Math.max(layerById.get(to) ?? 0, fromLayer + 1))\n indegree.set(to, (indegree.get(to) ?? 0) - 1)\n if ((indegree.get(to) ?? 0) === 0) queue.push(to)\n }\n }\n\n let fallbackLayer = Math.max(0, ...Array.from(layerById.values())) + 1\n for (const node of plan.nodes) {\n if (visited.has(node.id)) continue\n layerById.set(node.id, fallbackLayer++)\n }\n\n const layers = new Map<number, PlanNode[]>()\n for (const node of plan.nodes) {\n const layer = layerById.get(node.id) ?? 0\n layers.set(layer, [...(layers.get(layer) ?? []), node])\n }\n\n const orderedLayers = [...layers.entries()].sort(([a], [b]) => a - b)\n const maxRows = Math.max(1, ...orderedLayers.map(([, nodes]) => nodes.length))\n const rowPitch = NODE_H + ROW_GAP\n\n const layoutNodes: LayoutNode[] = []\n orderedLayers.forEach(([layer, nodes], col) => {\n const ordered = [...nodes].sort((a, b) => {\n const lane = (a.lane || '').localeCompare(b.lane || '')\n return lane || ((indexById.get(a.id) ?? 0) - (indexById.get(b.id) ?? 0))\n })\n // Center each column vertically against the tallest column so the spine\n // runs through the middle and the parallel fan reads as a fan.\n const offset = ((maxRows - ordered.length) * rowPitch) / 2\n ordered.forEach((node, row) => {\n layoutNodes.push({\n node,\n layer,\n x: PAD + col * (NODE_W + COL_GAP),\n y: PAD + offset + row * rowPitch,\n })\n })\n })\n\n const cols = orderedLayers.length\n return {\n nodes: layoutNodes,\n width: Math.max(320, PAD * 2 + cols * NODE_W + Math.max(0, cols - 1) * COL_GAP),\n height: Math.max(NODE_H + PAD * 2, PAD * 2 + maxRows * NODE_H + Math.max(0, maxRows - 1) * ROW_GAP),\n }\n}\n\nfunction edgePath(from: LayoutNode, to: LayoutNode): string {\n const x1 = from.x + NODE_W\n const y1 = from.y + NODE_H / 2\n const x2 = to.x\n const y2 = to.y + NODE_H / 2\n const midX = x1 + Math.max(20, (x2 - x1) / 2)\n return `M ${x1} ${y1} C ${midX} ${y1}, ${midX} ${y2}, ${x2} ${y2}`\n}\n\nexport function PlanGraphPanel({ threadId, teamId, channel }: { threadId?: string | number | null; teamId?: string | null; channel?: string }) {\n const key = teamId ? planTeamLookupKey(teamId, channel) : threadId ? planLookupKey(threadId, channel) : ''\n const plan = useRelayStore((s) => teamId ? s.plansByTeam[key] : key ? s.plansByThread[key] : null)\n const fetchPlan = useRelayStore((s) => s.fetchPlan)\n const setPlanArchived = useRelayStore((s) => s.setPlanArchived)\n const planCollapsed = useRelayStore((s) => s.planCollapsed)\n const setPlanCollapsed = useRelayStore((s) => s.setPlanCollapsed)\n const issueRefsById = useRelayStore((s) => s.issueRefsById)\n const deliverableTasks = useRelayStore((s) => s.deliverableTasks)\n const openTaskDetailById = useRelayStore((s) => s.openTaskDetailById)\n const isMobile = useIsMobile()\n const [showArchivedPlan, setShowArchivedPlan] = useState(false)\n // null = no manual toggle yet → follow the viewport default. The graph\n // dominates a phone screen, so it starts collapsed there and expanded on\n // desktop; an explicit user toggle (persisted) overrides the default.\n const collapsed = planCollapsed ?? isMobile\n\n useEffect(() => {\n if (teamId) {\n void fetchPlan({ teamId, channel })\n return\n }\n if (threadId) void fetchPlan({ threadId, channel })\n }, [channel, fetchPlan, teamId, threadId])\n\n const layout = useMemo(() => plan ? layerPlan(plan) : null, [plan])\n const nodeById = useMemo(() => new Map(layout?.nodes.map((node) => [node.node.id, node]) ?? []), [layout])\n\n const legend = useMemo(() => {\n if (!plan) return []\n const counts = new Map<PlanStatus, number>()\n for (const node of plan.nodes) counts.set(node.status, (counts.get(node.status) ?? 0) + 1)\n return STATUS_ORDER.filter((status) => counts.has(status)).map((status) => ({\n status,\n count: counts.get(status) ?? 0,\n }))\n }, [plan])\n\n if (!plan || !layout) return null\n\n if (plan.archived && !showArchivedPlan) {\n return (\n <section className=\"shrink-0 border-b border-border bg-card/45 px-3 py-2\">\n <button\n type=\"button\"\n onClick={() => setShowArchivedPlan(true)}\n className=\"flex min-w-0 items-center gap-2 text-left text-muted-foreground hover:text-foreground\"\n aria-expanded=\"false\"\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60\">\n <Archive className=\"h-3 w-3\" />\n </span>\n <span className=\"min-w-0 flex-1 truncate text-[11px] font-semibold uppercase tracking-wider\">\n Show archived plan (1)\n </span>\n <ChevronDown className=\"h-3.5 w-3.5 shrink-0\" />\n </button>\n </section>\n )\n }\n\n if (plan.archived) {\n return (\n <section className=\"shrink-0 border-b border-border bg-card/45 px-3 py-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60\">\n <Archive className=\"h-3 w-3 text-muted-foreground\" />\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] font-semibold leading-tight text-muted-foreground\">{plan.title || 'Plan'}</div>\n <div className=\"truncate text-[11px] leading-tight text-muted-foreground\">Archived plan</div>\n </div>\n <span className=\"shrink-0 rounded border border-border bg-muted/40 px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground\">\n archived\n </span>\n <button\n type=\"button\"\n onClick={() => setShowArchivedPlan(false)}\n className=\"shrink-0 rounded border border-border bg-muted/40 px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground hover:bg-muted/60 hover:text-foreground\"\n aria-expanded=\"true\"\n >\n Hide\n </button>\n <button\n type=\"button\"\n onClick={() => void setPlanArchived(plan.id, false)}\n title=\"Unarchive plan\"\n aria-label=\"Unarchive plan\"\n className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground\"\n >\n <ArchiveRestore className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </section>\n )\n }\n\n const nodeCount = plan.nodes.length\n const landedCount = legend.find((entry) => entry.status === 'landed')?.count ?? 0\n // Thin summary for the collapsed bar (the legend dots are hidden on mobile),\n // e.g. \"5 nodes · 4 landed\".\n const summary = `${nodeCount} node${nodeCount === 1 ? '' : 's'}${landedCount > 0 ? ` · ${landedCount} landed` : ''}`\n\n return (\n <section className=\"shrink-0 border-b border-border bg-card/45 px-3 py-2\">\n <div className={cn('flex min-w-0 items-center gap-2', !collapsed && 'mb-2')}>\n <button\n type=\"button\"\n onClick={() => setPlanCollapsed(!collapsed)}\n aria-expanded={!collapsed}\n aria-label={collapsed ? 'Expand plan graph' : 'Collapse plan graph'}\n className=\"flex min-w-0 flex-1 items-center gap-2 text-left\"\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60\">\n <GitBranch className=\"h-3 w-3 text-muted-foreground\" />\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] font-semibold leading-tight text-foreground\">{plan.title || 'Plan'}</div>\n <div className=\"truncate text-[11px] leading-tight text-muted-foreground\">\n {collapsed ? summary : (plan.objective || summary)}\n </div>\n </div>\n </button>\n {legend.length > 0 && (\n <div className=\"hidden shrink-0 items-center gap-2.5 sm:flex\">\n {legend.map(({ status, count }) => (\n <span key={status} className=\"flex items-center gap-1 text-[10px] text-muted-foreground\">\n <span className={cn('h-1.5 w-1.5 rounded-full', STATUS_STYLE[status].dot)} />\n <span className={cn('font-medium tabular-nums', STATUS_STYLE[status].text)}>{count}</span>\n <span>{STATUS_STYLE[status].label}</span>\n </span>\n ))}\n </div>\n )}\n <span className=\"shrink-0 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] font-medium tabular-nums text-muted-foreground\">\n v{plan.version}\n </span>\n <button\n type=\"button\"\n onClick={() => void setPlanArchived(plan.id, true)}\n title=\"Archive plan\"\n aria-label=\"Archive plan\"\n className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground\"\n >\n <Archive className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setPlanCollapsed(!collapsed)}\n aria-expanded={!collapsed}\n aria-label={collapsed ? 'Expand plan graph' : 'Collapse plan graph'}\n className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground\"\n >\n {collapsed ? <ChevronDown className=\"h-3.5 w-3.5\" /> : <ChevronUp className=\"h-3.5 w-3.5\" />}\n </button>\n </div>\n {collapsed ? null : plan.nodes.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-border px-3 py-3 text-center text-xs text-muted-foreground\">\n No nodes yet — the plan graph fills in as the team is composed.\n </div>\n ) : (\n <div className=\"max-h-[min(46vh,360px)] overflow-auto\">\n <div className=\"relative\" style={{ width: layout.width, height: layout.height }}>\n <svg className=\"pointer-events-none absolute inset-0\" width={layout.width} height={layout.height} aria-hidden=\"true\">\n <defs>\n {STATUS_ORDER.map((status) => (\n <marker\n key={status}\n id={`plan-arrow-${status}`}\n viewBox=\"0 0 8 8\"\n refX=\"6.5\"\n refY=\"4\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n >\n <path d=\"M0 0 L8 4 L0 8 z\" fill={STATUS_STYLE[status].wire} />\n </marker>\n ))}\n </defs>\n {plan.edges.map((edge) => {\n const from = nodeById.get(edge.from)\n const to = nodeById.get(edge.to)\n if (!from || !to) return null\n const wire = STATUS_STYLE[from.node.status]\n return (\n <path\n key={`${edge.from}->${edge.to}`}\n d={edgePath(from, to)}\n stroke={wire.wire}\n strokeOpacity={0.7}\n strokeWidth={2}\n fill=\"none\"\n strokeLinecap=\"round\"\n markerEnd={`url(#plan-arrow-${from.node.status})`}\n />\n )\n })}\n </svg>\n {layout.nodes.map(({ node, x, y }) => {\n const status = STATUS_STYLE[node.status]\n const owner = ownerLabel(node.ownerRef)\n const issueRef = node.refs?.issueId ? issueRefsById[node.refs.issueId] : null\n const taskNumId = node.refs?.taskId ? parseInt(node.refs.taskId, 10) : null\n const taskTitle = taskNumId != null ? deliverableTasks.find((t) => t.id === taskNumId)?.title : undefined\n return (\n <article\n key={node.id}\n className={cn(\n 'group absolute flex flex-col justify-between rounded-md border border-l-[3px] bg-background/95 p-2',\n 'shadow-sm transition-all hover:-translate-y-px hover:border-border hover:shadow-md hover:bg-background',\n status.accent,\n )}\n style={{ left: x, top: y, width: NODE_W, height: NODE_H }}\n title={node.scopeBlurb || node.label}\n >\n <div className=\"truncate text-xs font-semibold leading-tight text-foreground\">{node.label}</div>\n {(node.scopeBlurb || node.id) && (\n <div className=\"truncate text-[10px] leading-tight text-muted-foreground\">{node.scopeBlurb || node.id}</div>\n )}\n {(issueRef || taskNumId != null) && (\n <div className=\"flex min-w-0 flex-wrap gap-1\">\n {issueRef && <IssueRefChip issueRef={issueRef} compact className=\"max-w-full\" />}\n {taskNumId != null && (\n <TaskChip id={taskNumId} title={taskTitle} onClick={() => openTaskDetailById(taskNumId)} className=\"max-w-full\" />\n )}\n </div>\n )}\n <div className=\"flex min-w-0 items-center justify-between gap-1.5\">\n <div className=\"flex shrink-0 items-center gap-1.5\">\n <span className={cn('h-1.5 w-1.5 shrink-0 rounded-full', status.dot)} />\n <span className={cn('text-[10px] font-medium', status.text)}>{status.label}</span>\n </div>\n <div className=\"flex min-w-0 items-center gap-1.5\">\n {owner && <span className=\"truncate text-[10px] text-muted-foreground\">{owner}</span>}\n {node.lane && (\n <span className=\"shrink-0 rounded-sm bg-muted/70 px-1 py-px text-[9px] font-medium uppercase tracking-wide text-muted-foreground\">\n {node.lane}\n </span>\n )}\n </div>\n </div>\n </article>\n )\n })}\n </div>\n </div>\n )}\n </section>\n )\n}\n\n// Tasks created/triggered from a session (#856, #860). Fetches server-side via createdBy filter.\nexport function SessionTasksPanel({ agentId }: { agentId: string }) {\n const openTaskDetailById = useRelayStore((s) => s.openTaskDetailById)\n const sessionTasksCollapsed = useRelayStore((s) => s.sessionTasksCollapsed)\n const setSessionTasksCollapsed = useRelayStore((s) => s.setSessionTasksCollapsed)\n const [sessionTasks, setSessionTasks] = useState<Task[]>([])\n const [showCompletedTasks, setShowCompletedTasks] = useState(false)\n useEffect(() => {\n void api<import('@/types').Task[]>('GET', '/task-entities?createdBy=' + encodeURIComponent(agentId))\n .then((tasks) => setSessionTasks(tasks))\n .catch(() => {})\n }, [agentId])\n if (sessionTasks.length === 0) return null\n const completedCount = sessionTasks.filter(isCompletedSessionTask).length\n const shownTasks = visibleSessionTasks(sessionTasks, showCompletedTasks)\n return (\n <section className=\"shrink-0 border-b border-border bg-card/45 px-3 py-2\">\n <button\n type=\"button\"\n onClick={() => setSessionTasksCollapsed(!sessionTasksCollapsed)}\n aria-expanded={!sessionTasksCollapsed}\n aria-label={sessionTasksCollapsed ? 'Expand session tasks' : 'Collapse session tasks'}\n className={cn('flex w-full min-w-0 items-center gap-2 text-left', !sessionTasksCollapsed && 'mb-1.5')}\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted/60\">\n <ListTodo className=\"h-3 w-3 text-muted-foreground\" />\n </span>\n <span className=\"flex-1 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Tasks from this session ({shownTasks.length})\n </span>\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted/60 hover:text-foreground\">\n {sessionTasksCollapsed ? <ChevronDown className=\"h-3.5 w-3.5\" /> : <ChevronUp className=\"h-3.5 w-3.5\" />}\n </span>\n </button>\n {!sessionTasksCollapsed && (\n <>\n <div className=\"flex flex-wrap gap-1\">\n {shownTasks.map((task) => (\n <TaskChip\n key={task.id}\n id={task.id}\n title={task.title}\n status={task.status}\n onClick={() => openTaskDetailById(task.id)}\n compact\n />\n ))}\n </div>\n {completedCount > 0 && (\n <button\n type=\"button\"\n onClick={() => setShowCompletedTasks(!showCompletedTasks)}\n className=\"mt-1.5 rounded border border-border bg-muted/30 px-2 py-0.5 text-[10px] font-medium text-muted-foreground hover:bg-muted/50 hover:text-foreground\"\n aria-pressed={showCompletedTasks}\n >\n {showCompletedTasks ? `Hide ${completedCount} completed` : `+ ${completedCount} completed`}\n </button>\n )}\n </>\n )}\n </section>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{$ as t,K as n,V as r,Vt as i,Wn as a,Yn as o,Zt as s,_ as c,a as l,er as u,g as d,gt as f,hr as p,nr as m,nt as h,u as g,z as _}from"./lucide-react-Dc3ZwCBi.js";import{f as ee,t as v}from"./store-BuuJUn70.js";import{h as y,p as b}from"./types-uVOXgvMT.js";import{J as x,K as S,W as C,Y as w,a as T,d as E,i as te,n as ne}from"./display-exQDWum3.js";import{o as D,r as O}from"./dist-Cs8X0P1d.js";import{t as k}from"./dist-CQ0Z-TDi.js";import{i as re,n as A}from"./dist-ChDX_t12.js";import{t as j}from"./dist-CBMWGhWc.js";import{t as M}from"./dist-CmFeEXMe.js";import{a as N,i as P,n as F,o as I,r as L,s as ie,t as ae}from"./es2015-VnZ2kVIz.js";import{a as R,i as oe,n as se,r as z,t as B}from"./dist-DV83j9tm.js";import{t as V}from"./badge-BhUZ1cAb.js";import{t as H}from"./button-C-V4oij1.js";import{t as ce}from"./copy-button-BStzXgtd.js";import{t as U}from"./agent-type-icon-BEz393ra.js";import{$ as le,Dt as W,Et as ue,G as de,K as fe,Q as pe,Tt as me,Y as he,et as ge,ot as G,q as _e,tt as ve,vt as ye,wt as be}from"./index-CtBqO8vm.js";import{r as xe,t as Se}from"./card-Br1JLjTH.js";import{i as Ce,n as we,r as Te,t as Ee}from"./branch-state-badge-BYE2U_y4.js";var K=e(p(),1),q=m(),J=`Popover`,[De,Oe]=re(J,[R]),Y=R(),[ke,X]=De(J),Ae=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=Y(t),c=K.useRef(null),[l,u]=K.useState(!1),[d,f]=j({prop:r,defaultProp:i??!1,onChange:a,caller:J});return(0,q.jsx)(oe,{...s,children:(0,q.jsx)(ke,{scope:t,contentId:ie(),triggerRef:c,open:d,onOpenChange:f,onOpenToggle:K.useCallback(()=>f(e=>!e),[f]),hasCustomAnchor:l,onCustomAnchorAdd:K.useCallback(()=>u(!0),[]),onCustomAnchorRemove:K.useCallback(()=>u(!1),[]),modal:o,children:n})})};Ae.displayName=J;var je=`PopoverAnchor`,Me=K.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=X(je,n),a=Y(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return K.useEffect(()=>(o(),()=>s()),[o,s]),(0,q.jsx)(B,{...a,...r,ref:t})});Me.displayName=je;var Ne=`PopoverTrigger`,Z=K.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=X(Ne,n),a=Y(n),o=D(t,i.triggerRef),s=(0,q.jsx)(k.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Ke(i.open),...r,ref:o,onClick:A(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,q.jsx)(B,{asChild:!0,...a,children:s})});Z.displayName=Ne;var Q=`PopoverPortal`,[Pe,Fe]=De(Q,{forceMount:void 0}),Ie=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=X(Q,t);return(0,q.jsx)(Pe,{scope:t,forceMount:n,children:(0,q.jsx)(M,{present:n||a.open,children:(0,q.jsx)(P,{asChild:!0,container:i,children:r})})})};Ie.displayName=Q;var $=`PopoverContent`,Le=K.forwardRef((e,t)=>{let n=Fe($,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=X($,e.__scopePopover);return(0,q.jsx)(M,{present:r||a.open,children:a.modal?(0,q.jsx)(ze,{...i,ref:t}):(0,q.jsx)(Be,{...i,ref:t})})});Le.displayName=$;var Re=O(`PopoverContent.RemoveScroll`),ze=K.forwardRef((e,t)=>{let n=X($,e.__scopePopover),r=K.useRef(null),i=D(t,r),a=K.useRef(!1);return K.useEffect(()=>{let e=r.current;if(e)return ae(e)},[]),(0,q.jsx)(F,{as:Re,allowPinchZoom:!0,children:(0,q.jsx)(Ve,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:A(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:A(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;a.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:A(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),Be=K.forwardRef((e,t)=>{let n=X($,e.__scopePopover),r=K.useRef(!1),i=K.useRef(!1);return(0,q.jsx)(Ve,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),Ve=K.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=X($,n),p=Y(n);return L(),(0,q.jsx)(N,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,q.jsx)(I,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),children:(0,q.jsx)(z,{"data-state":Ke(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),He=`PopoverClose`,Ue=K.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=X(He,n);return(0,q.jsx)(k.button,{type:`button`,...r,ref:t,onClick:A(e.onClick,()=>i.onOpenChange(!1))})});Ue.displayName=He;var We=`PopoverArrow`,Ge=K.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=Y(n);return(0,q.jsx)(se,{...i,...r,ref:t})});Ge.displayName=We;function Ke(e){return e?`open`:`closed`}var qe=Ae,Je=Z,Ye=Ie,Xe=Le;function Ze({...e}){return(0,q.jsx)(qe,{"data-slot":`popover`,...e})}function Qe({...e}){return(0,q.jsx)(Je,{"data-slot":`popover-trigger`,...e})}function $e({className:e,align:t=`center`,sideOffset:n=4,...r}){return(0,q.jsx)(Ye,{children:(0,q.jsx)(Xe,{"data-slot":`popover-content`,align:t,sideOffset:n,className:u(`z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...r})})}function et({className:e,...t}){return(0,q.jsx)(`div`,{"data-slot":`popover-header`,className:u(`flex flex-col gap-0.5 text-sm`,e),...t})}function tt({className:e,...t}){return(0,q.jsx)(`div`,{"data-slot":`popover-title`,className:u(`font-medium`,e),...t})}function nt({agent:e,childAgents:r=[],parentAgent:a}){let o=ee();v(e=>e.set);let l=v(e=>e.switchView),u=v(e=>e.openInboxThread),p=v(e=>e.openAgentDetail),m=v(e=>e.openPairInvite),y=v(e=>e.openRename),b=v(e=>e.openConfirm),D=v(e=>e.doAgentAction),O=v(e=>e.doDeleteAgent),k=v(e=>e.openFilesForAgent),re=v(e=>e.workspaceAction),A=v(e=>e.openWorkspaceFocus),{terminalOpen:j,terminalTarget:M,terminalOpening:N,openTerminal:P,closeTerminal:F}=Ce(e.id),I=be(),L=te(o,e,ye(e),I[e.id]||null),ie=T(e,`shutdown`),ae=T(e,`compact`),R=T(e,`clearContext`),oe=!!(e.providerCapabilities?.terminal?.live?.read||e.providerCapabilities?.terminal?.attach?.create),se=!!e.providerCapabilities?.terminal?.live?.write,z=ne(e),B=a?E(a):e.spawnedBy,W=r.length>0;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Se,{className:`group hover:border-zinc-600 transition-colors cursor-pointer`,onClick:()=>p(e),children:(0,q.jsxs)(xe,{className:`p-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-2.5 mb-2.5`,children:[(0,q.jsx)(G,{agent:e,now:o,className:`mt-0.5`}),(0,q.jsx)(U,{agent:e}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,q.jsx)(we,{profile:Te(e),className:`text-sm shrink-0`}),(0,q.jsx)(`span`,{className:`text-sm font-medium truncate`,children:E(e)})]}),(0,q.jsx)(`div`,{className:`text-xs mt-0.5 ${x(L.tone)}`,children:L.label}),typeof e.meta?.cwd==`string`&&e.meta.cwd&&(0,q.jsx)(`button`,{type:`button`,className:`mt-0.5 block max-w-full truncate font-mono text-[10px] text-muted-foreground hover:text-foreground`,title:`Open ${e.meta.cwd} in Files`,onClick:t=>{t.stopPropagation(),k(e)},children:C(e.meta.cwd)}),(0,q.jsx)(he,{agent:e,className:`mt-1`})]}),e.branchState&&e.branchWorkspaceId&&(0,q.jsx)(Ee,{state:e.branchState,className:`mt-0.5 shrink-0`,onClick:t=>{t.stopPropagation(),A(e.branchWorkspaceId)}})]}),L.badges.length>0&&(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-2`,children:L.badges.map(e=>(0,q.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded-full font-medium ${e.className}`,children:e.label},e.label))}),(W||e.spawnedBy&&B)&&(0,q.jsxs)(`div`,{className:`mb-2 flex flex-wrap gap-1.5`,onClick:e=>e.stopPropagation(),children:[W&&(0,q.jsxs)(Ze,{children:[(0,q.jsx)(Qe,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,className:`inline-flex h-6 max-w-full items-center gap-1.5 rounded-full border border-sky-500/30 bg-sky-500/10 px-2 text-[10px] font-medium text-sky-300 transition-colors hover:bg-sky-500/15`,title:`${r.length} live child ${r.length===1?`agent`:`agents`}`,children:[(0,q.jsx)(g,{className:`h-3 w-3`}),(0,q.jsx)(`span`,{children:r.length}),(0,q.jsx)(`span`,{className:`flex -space-x-1`,children:r.slice(0,4).map(e=>(0,q.jsx)(G,{agent:e,now:o,className:`h-2 w-2 ring-1 ring-background`},e.id))})]})}),(0,q.jsxs)($e,{align:`start`,className:`w-80`,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(et,{children:(0,q.jsx)(tt,{children:`Team`})}),(0,q.jsx)(`div`,{className:`space-y-1.5`,children:r.map(e=>(0,q.jsxs)(`div`,{className:`rounded-md border border-border bg-card/60 p-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(G,{agent:e,now:o,className:`mt-1`}),(0,q.jsx)(U,{agent:e}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`truncate text-xs font-medium`,children:E(e)}),(0,q.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:e.providerCapabilities?.model?.alias||e.providerCapabilities?.model?.id||e.providerCapabilities?.model?.provider||e.status})]}),(0,q.jsx)(V,{variant:`outline`,className:`h-4 px-1.5 text-[9px]`,children:e.status})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex gap-1`,children:[(0,q.jsx)(H,{size:`xs`,variant:`outline`,onClick:()=>p(e),children:`Open`}),(0,q.jsxs)(H,{size:`xs`,variant:`ghost`,onClick:()=>{u(e.id),l(`chat`)},children:[(0,q.jsx)(h,{className:`h-3 w-3`}),`Chat`]})]})]},e.id))})]})]}),e.spawnedBy&&B&&(0,q.jsx)(V,{variant:`outline`,className:`max-w-full text-[10px] text-muted-foreground`,children:(0,q.jsxs)(`span`,{className:`truncate`,children:[`spawned by `,B]})})]}),(e.tags.length>0||w(e.capabilities).length>0)&&(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-1 mb-2`,children:[e.tags.slice(0,3).map(e=>(0,q.jsx)(V,{variant:`outline`,className:`text-[9px] px-1 py-0 h-4`,children:e},e)),w(e.capabilities).slice(0,2).map(e=>(0,q.jsx)(V,{variant:`secondary`,className:`text-[9px] px-1 py-0 h-4`,children:e},e))]}),(0,q.jsxs)(`div`,{className:`space-y-2 mb-2`,children:[(0,q.jsx)(ge,{agent:e}),(0,q.jsx)(le,{agent:e,compact:!0}),(0,q.jsx)(ve,{agent:e})]}),(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.id!==`user`&&e.id!==`system`&&S(o,e.lastSeen)}),(0,q.jsxs)(`div`,{className:`flex gap-1 mt-2.5 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity`,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(ce,{value:e.id,label:`Copy agent ID`,size:`icon`,className:`h-7 w-7`,iconClassName:`w-3 h-3`}),(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Chat`,onClick:()=>{u(e.id),l(`chat`)},children:(0,q.jsx)(h,{className:`w-3 h-3`})}),(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Pair`,onClick:()=>m(e.id),children:(0,q.jsx)(f,{className:`w-3 h-3`})}),(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Rename`,onClick:()=>y(e),children:(0,q.jsx)(n,{className:`w-3 h-3`})}),oe&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Terminal`,disabled:N,onClick:()=>void P(),children:(0,q.jsx)(c,{className:`w-3 h-3`})}),(e.branchState===`changes`||e.branchState===`idle`)&&e.branchWorkspaceId&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7 text-amber-400 hover:text-amber-300`,title:`Mark workspace ready — hand off to the auto-merge`,onClick:()=>b(`Mark Workspace Ready`,`Mark ${E(e)}'s branch ready to land? The relay auto-merge will rebase and land it.`,()=>re(e.branchWorkspaceId,`ready`)),children:(0,q.jsx)(i,{className:`w-3 h-3`})}),ae&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Compact`,onClick:()=>b(`Compact Agent`,`Compact context for ${E(e)}?`,()=>D(e,`compact`,`agents-grid`)),children:(0,q.jsx)(t,{className:`w-3 h-3`})}),R&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Clear Context`,onClick:()=>b(`Clear Context`,`Clear context for ${E(e)}?`,()=>D(e,`clearContext`,`agents-grid`)),children:(0,q.jsx)(s,{className:`w-3 h-3`})}),ie&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7 text-red-400 hover:text-red-300`,title:`Shutdown`,onClick:()=>b(`Shutdown Agent`,`Shutdown ${E(e)}?`,()=>D(e,`shutdown`,`agents-grid`)),children:(0,q.jsx)(_,{className:`w-3 h-3`})}),z&&(0,q.jsx)(H,{size:`icon`,variant:`ghost`,className:`h-7 w-7 text-red-400 hover:text-red-300`,title:`Forget stale agent`,onClick:()=>b(`Forget Agent`,`Forget ${E(e)}?`,()=>O(e.id)),children:(0,q.jsx)(d,{className:`w-3 h-3`})})]})]})}),M&&(0,q.jsx)(pe,{open:j,onOpenChange:F,orchestratorId:M.orchestratorId,session:M.session,interactive:M.interactive||se})]})}function rt(){let e=v(e=>e.agentPresetFilter),t=v(e=>e.agentStatusFilter),n=v(e=>e.agentTagFilter),i=v(e=>e.agentHostFilter),s=v(e=>e.agentSort),c=v(e=>e.agentSortDir),u=v(e=>e.showOffline),d=v(e=>e.set),f=v(e=>e.openAgentSpawn),p=v(e=>e.agentsById),m=ee(),h=me(),g=W(),_=ue(),x=de(h,m),S=_e(h,m),C=e||t||n||i;function w(){d({agentPresetFilter:``,agentStatusFilter:``,agentTagFilter:``,agentHostFilter:``})}function T(){d({agentSortDir:c===`asc`?`desc`:`asc`})}return(0,q.jsxs)(`div`,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsxs)(`select`,{value:e,onChange:e=>d({agentPresetFilter:e.target.value}),className:`h-8 rounded-md border border-border bg-card text-sm px-2 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`All agents`}),(0,q.jsx)(`option`,{value:`active`,children:`Active`}),b().map(e=>(0,q.jsx)(`option`,{value:e,children:y(e)},e)),(0,q.jsx)(`option`,{value:`paired`,children:`Paired`}),(0,q.jsx)(`option`,{value:`unpaired`,children:`Unpaired`}),(0,q.jsx)(`option`,{value:`offline_stale`,children:`Offline / Stale`})]}),(0,q.jsxs)(`select`,{value:t,onChange:e=>d({agentStatusFilter:e.target.value}),className:`h-8 rounded-md border border-border bg-card text-sm px-2 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`Any status`}),(0,q.jsx)(`option`,{value:`online`,children:`Online`}),(0,q.jsx)(`option`,{value:`idle`,children:`Idle`}),(0,q.jsx)(`option`,{value:`busy`,children:`Busy`}),(0,q.jsx)(`option`,{value:`offline`,children:`Offline`}),(0,q.jsx)(`option`,{value:`starting`,children:`Starting`})]}),g.length>0&&(0,q.jsxs)(`select`,{value:n,onChange:e=>d({agentTagFilter:e.target.value}),className:`h-8 rounded-md border border-border bg-card text-sm px-2 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`Any tag`}),g.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]}),_.length>1&&(0,q.jsxs)(`select`,{value:i,onChange:e=>d({agentHostFilter:e.target.value}),className:`h-8 rounded-md border border-border bg-card text-sm px-2 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`Any host`}),_.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]}),(0,q.jsxs)(`select`,{value:s,onChange:e=>d({agentSort:e.target.value}),className:`h-8 rounded-md border border-border bg-card text-sm px-2 text-foreground`,children:[(0,q.jsx)(`option`,{value:`status`,children:`Sort: Status`}),(0,q.jsx)(`option`,{value:`name`,children:`Sort: Name`}),(0,q.jsx)(`option`,{value:`lastSeen`,children:`Sort: Last seen`}),(0,q.jsx)(`option`,{value:`created`,children:`Sort: Created`})]}),(0,q.jsx)(H,{size:`icon`,variant:`outline`,className:`h-8 w-8`,title:`Toggle sort direction`,onClick:T,children:c===`asc`?(0,q.jsx)(a,{className:`w-3.5 h-3.5`}):(0,q.jsx)(o,{className:`w-3.5 h-3.5`})}),(0,q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm text-muted-foreground cursor-pointer select-none`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d({showOffline:e.target.checked}),className:`rounded`}),`Show offline`]}),C&&(0,q.jsxs)(H,{size:`sm`,variant:`ghost`,className:`h-8 text-muted-foreground hover:text-foreground gap-1`,onClick:w,children:[(0,q.jsx)(l,{className:`w-3 h-3`}),`Clear filters`]}),(0,q.jsx)(`div`,{className:`ml-auto`,children:(0,q.jsxs)(H,{size:`sm`,onClick:f,className:`gap-1`,children:[(0,q.jsx)(r,{className:`w-3.5 h-3.5`}),`Spawn`]})})]}),S.length===0?(0,q.jsx)(`div`,{className:`text-center py-16 text-muted-foreground text-sm`,children:`No agents match the current filters.`}):(0,q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-3`,children:S.map(e=>(0,q.jsx)(nt,{agent:e,parentAgent:e.spawnedBy?p[e.spawnedBy]??null:null,childAgents:fe(x.get(e.id)??[])},e.id))})]})}export{rt as AgentsView};
2
- //# sourceMappingURL=agents-DvJZ0Tcz.js.map
@@ -1,2 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{$ as t,A as n,At as r,C as i,Cn as a,G as o,J as s,Jt as c,Kn as l,Ln as u,Pt as d,Qt as f,Rt as p,Sn as m,Tn as h,Ut as g,V as _,Vn as v,Vt as y,Wn as b,Xn as x,Yn as S,Zt as C,_ as ee,a as w,at as T,bn as E,c as te,ct as ne,en as re,er as D,et as ie,hr as ae,ht as oe,in as se,k as ce,l as le,lt as ue,nr as O,nt as de,pn as fe,pr as pe,pt as k,r as me,rr as he,sr as ge,v as _e,wn as ve,xn as ye,z as be}from"./lucide-react-Dc3ZwCBi.js";import{t as xe}from"./react-dom-cLkVFBsS.js";import{_ as Se,a as Ce,f as we,h as Te,o as Ee,t as A,v as De,y as Oe}from"./store-BuuJUn70.js";import{g as ke,h as Ae,o as je,p as Me}from"./types-uVOXgvMT.js";import{A as Ne,E as Pe,K as j,M as Fe,W as Ie,X as Le,Y as Re,Z as ze,a as Be,d as Ve,h as He,k as Ue,o as We,q as Ge,r as Ke,v as qe,z as Je}from"./display-exQDWum3.js";import{t as Ye}from"./badge-BhUZ1cAb.js";import{t as M}from"./button-C-V4oij1.js";import{t as Xe}from"./input-CtLT7WXi.js";import{t as Ze}from"./copy-button-BStzXgtd.js";import{t as Qe}from"./agent-type-icon-BEz393ra.js";import{t as $e}from"./formatted-body-ChERiS0y.js";import{B as et,C as tt,D as nt,E as rt,Et as it,F as at,H as ot,I as st,N as ct,Q as lt,R as ut,S as dt,W as ft,_ as pt,at as mt,b as ht,c as gt,ct as _t,d as vt,dt as yt,et as bt,f as xt,ft as St,g as Ct,h as wt,ht as Tt,it as Et,j as Dt,m as Ot,mt as kt,n as At,nt as jt,o as Mt,ot as Nt,p as Pt,pt as Ft,rt as It,s as Lt,st as Rt,t as zt,u as Bt,v as Vt,x as Ht,y as Ut,yt as Wt,z as Gt}from"./index-CtBqO8vm.js";import{t as Kt}from"./use-keyboard-viewport-B06XtRUZ.js";import{t as qt}from"./MessageBubble-BJXjk3GB.js";import{i as Jt,n as Yt,r as Xt,t as Zt}from"./branch-state-badge-BYE2U_y4.js";import{n as Qt,t as $t}from"./PlanGraphPanel-DI5JOnm1.js";var N=e(ae(),1);function en(e,t,n,r,i){if(i.includes(e))return!1;if(r.includes(e)||n)return!0;let a=t[e];return!!(a&&je(a.spawnedBy??``))}function tn(){let e=A(e=>e.agents),t=A(e=>e.agentsById),n=A(e=>e.showBuiltIns),r=A(e=>e.showOffline),i=A(e=>e.chatAgentSearch),a=A(e=>e.chatAgentProviderFilter),o=A(e=>e.chatAgentStatusFilter),s=A(e=>e.chatAgentTagFilter),c=A(e=>e.chatAgentCapFilter),l=A(e=>e.chatAgentHostFilter),u=A(e=>e.chatAgentSort),d=A(e=>e.chatAgentSortDir),f=A(e=>e.managedPolicies),p=A(e=>e.feedObserveAll),m=A(e=>e.coordinatorFollows),h=A(e=>e.coordinatorMutes),g=Wt();return(0,N.useMemo)(()=>{let _=new Set(g.map(e=>e.peer)),v=Le(e,n,f);if(r||(v=v.filter(e=>e.status!==`offline`)),v=p?v.filter(e=>!h.includes(e.id)):v.filter(e=>en(e.id,t,_.has(e.id),m,h)),i){let e=i.toLowerCase();v=v.filter(t=>t.id.toLowerCase().includes(e)||(t.name||``).toLowerCase().includes(e)||(t.label||``).toLowerCase().includes(e)||(t.tags||[]).some(t=>t.toLowerCase().includes(e))||(t.capabilities||[]).some(t=>t.toLowerCase().includes(e)))}a&&(v=v.filter(e=>We(e)===a)),o&&(v=v.filter(e=>e.status===o)),s&&(v=v.filter(e=>(e.tags||[]).includes(s))),c&&(v=v.filter(e=>(e.capabilities||[]).includes(c))),l&&(v=v.filter(e=>(e.machine||``)===l));let y=d===`desc`?-1:1;return[...v].sort((e,t)=>u===`name`?Ve(e).localeCompare(Ve(t))*y:u===`lastSeen`?rt(Ge(e.lastSeen),Ge(t.lastSeen),y)||Ve(e).localeCompare(Ve(t)):((ze[e.status]??9)-(ze[t.status]??9))*y||Ve(e).localeCompare(Ve(t)))},[e,t,n,r,f,i,a,o,s,c,l,u,d,p,m,h,g])}var P=O(),nn=[{re:/`([^`]+)`/,recurse:!1,wrap:(e,t)=>(0,P.jsx)(`code`,{className:`rounded bg-muted px-1 font-mono text-[0.9em]`,children:e},t)},{re:/\*\*([^*]+)\*\*/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`strong`,{className:`font-semibold text-foreground/90`,children:e},t)},{re:/__([^_]+)__/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`strong`,{className:`font-semibold text-foreground/90`,children:e},t)},{re:/~~([^~]+)~~/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`s`,{children:e},t)},{re:/\*([^*]+)\*/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`em`,{children:e},t)},{re:/_([^_]+)_/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`em`,{children:e},t)},{re:/\[([^\]]+)\]\([^)]+\)/,recurse:!0,wrap:(e,t)=>(0,P.jsx)(`span`,{className:`underline decoration-dotted underline-offset-2`,children:e},t)}];function rn(e,t=`i`){let n=null;for(let t of nn){let r=t.re.exec(e);r&&r[1]&&(n===null||r.index<n.index)&&(n={index:r.index,length:r[0].length,inner:r[1],pattern:t})}if(!n)return[e];let r=[];n.index>0&&r.push(e.slice(0,n.index));let i=n.pattern.recurse?rn(n.inner,`${t}x`):n.inner;r.push(n.pattern.wrap(i,`${t}m`));let a=e.slice(n.index+n.length);return a&&r.push(...rn(a,`${t}r`)),r}function an({threads:e,onSelectAgent:t}){let r=A(e=>e.set),a=A(e=>e.openInboxThread),o=A(e=>e.openAgentSpawn),s=A(e=>e.selectedInboxThread),l=A(e=>e.chatAgentSearch),f=A(e=>e.chatAgentSort),p=A(e=>e.chatAgentSortDir),h=A(e=>e.chatAgentProviderFilter),g=A(e=>e.chatAgentStatusFilter),y=A(e=>e.chatAgentTagFilter),x=A(e=>e.chatAgentCapFilter),C=A(e=>e.chatAgentHostFilter),ee=A(e=>e.chatAgentGroupBy),w=A(e=>e.chatAgentFiltersCollapsed),T=A(e=>e.agentsById),te=A(e=>e.chatCollapsedChildren),ne=A(e=>e.toggleChatChildrenCollapsed),re=A(e=>e.feedObserveAll),ie=A(e=>e.setFeedObserveAll),ae=A(e=>e.coordinatorFollows),oe=A(e=>e.coordinatorMutes),ce=A(e=>e.toggleCoordinatorFollow),le=A(e=>e.toggleCoordinatorMute),ue=we(),O=tn(),de=(0,N.useMemo)(()=>new Set(te),[te]),fe=(0,N.useMemo)(()=>{let t=new Map;for(let n of e)t.set(n.peer,n);return t},[e]),pe=(0,N.useMemo)(()=>{if(f!==`lastMessage`)return O;let e=p===`desc`?-1:1;return[...O].sort((t,n)=>rt(et(fe.get(t.id)),et(fe.get(n.id)),e)||Ve(t).localeCompare(Ve(n)))},[O,f,p,fe]),k=(0,N.useMemo)(()=>[...new Set(O.flatMap(e=>e.tags||[]))],[O]),me=(0,N.useMemo)(()=>[...new Set(O.flatMap(e=>Re(e.capabilities||[])))],[O]),he=it(),ge=(0,N.useMemo)(()=>{if(ee!==`project`)return null;let e=new Map;for(let t of pe){let n=Et(t)||`No project`,r=e.get(n);r?r.push(t):e.set(n,[t])}return[...e.entries()].sort((e,t)=>e[0].localeCompare(t[0]))},[pe,ee]),be=[h,g,y,x,C].filter(Boolean).length,xe=(0,N.useMemo)(()=>ft(pe,T,ue),[pe,T,ue]);function Se(e){a(e,fe.get(e)?.messages),t?.(e)}function Ce(e){let{agent:t}=e;if(e.depth===1&&e.parent&&de.has(e.parent.id))return null;let n=fe.get(t.id),r=n?.attention.unread||0,i=Ke(t),a=n?.previewMessage,o=Dt(n)||et(n),c=s===t.id,l=mt(t),u=Et(t),d=l.Icon,f=e.parent?Ve(e.parent):t.spawnedBy,p=e.children.length,h=e.depth===0&&p>0,g=de.has(t.id),_=oe.includes(t.id),y=ae.includes(t.id);return(0,P.jsxs)(`li`,{className:D(`relative group`,e.depth===1&&`pl-4`),children:[e.depth===1&&(0,P.jsx)(`div`,{className:`absolute left-2 top-3.5 text-muted-foreground/55`,children:(0,P.jsx)(se,{className:`h-3.5 w-3.5`})}),(0,P.jsxs)(`div`,{className:`absolute right-1.5 top-1.5 z-10 hidden items-center gap-0.5 rounded-md border border-border/60 bg-popover/95 px-0.5 py-0.5 shadow-sm backdrop-blur-sm group-hover:flex`,children:[(0,P.jsx)(`button`,{type:`button`,title:y?`Unfollow (stop pinning into scoped view)`:`Follow (keep visible even in scoped view)`,onClick:e=>{e.stopPropagation(),ce(t.id)},className:D(`rounded p-1 transition-colors`,y?`text-primary bg-primary/15 hover:bg-primary/25`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:(0,P.jsx)(_e,{className:`h-3 w-3`})}),(0,P.jsx)(`button`,{type:`button`,title:_?`Unmute`:`Mute (hide from all views)`,onClick:e=>{e.stopPropagation(),le(t.id)},className:D(`rounded p-1 transition-colors`,_?`text-orange-400 bg-orange-500/15 hover:bg-orange-500/25`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:(0,P.jsx)(v,{className:`h-3 w-3`})})]}),(0,P.jsxs)(`button`,{className:D(`w-full text-left px-3 py-2.5 flex items-start gap-2.5 hover:bg-muted/50 transition-colors border-b border-border/50`,e.depth===1&&`bg-muted/15`,c&&`bg-muted/60`,_&&`opacity-50`),onClick:()=>Se(t.id),children:[(0,P.jsxs)(`div`,{className:`relative shrink-0 mt-0.5`,children:[(0,P.jsx)(Qe,{agent:t}),(0,P.jsx)(Nt,{agent:t,now:ue,className:`absolute -bottom-0.5 -right-0.5 w-2 h-2`})]}),(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-1 mb-0.5`,children:[(0,P.jsxs)(`span`,{className:`flex items-center gap-1 min-w-0`,children:[(0,P.jsx)(Yt,{profile:Xt(t),className:`text-xs shrink-0`}),(0,P.jsx)(`span`,{className:`text-xs font-medium truncate`,children:Ve(t)})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 transition-opacity group-hover:opacity-0`,children:[y&&(0,P.jsx)(_e,{className:`h-3 w-3 text-primary`,"aria-label":`Followed`}),o>0&&(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,title:He(o),children:j(ue,o)}),r>0&&(0,P.jsx)(Ye,{className:`bg-red-500 text-white text-[11px] font-semibold leading-none tabular-nums min-w-[18px] h-[18px] flex items-center justify-center shrink-0 px-1 rounded-full`,children:r}),!r&&i&&(0,P.jsx)(Ye,{className:`bg-amber-500 text-black min-w-[18px] h-[18px] flex items-center justify-center shrink-0 px-1 rounded-full`,title:`Needs response`,children:(0,P.jsx)(E,{className:`h-3 w-3`})})]})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 mb-0.5 text-[10px] text-muted-foreground`,children:[(0,P.jsx)(`span`,{title:l.title,className:`inline-flex shrink-0`,children:(0,P.jsx)(d,{className:D(`h-3 w-3`,l.iconColor)})}),(0,P.jsx)(`span`,{className:`truncate`,children:u||l.label}),It(t)&&(0,P.jsx)(`span`,{className:`ml-auto shrink-0`,children:(0,P.jsx)(jt,{context:t.context,expected:!0,size:18})})]}),e.depth===0&&t.spawnedBy&&f&&(0,P.jsx)(`div`,{className:`mb-0.5`,children:(0,P.jsx)(Ye,{variant:`outline`,className:`max-w-full text-[9px] h-4 px-1.5 text-muted-foreground`,children:(0,P.jsxs)(`span`,{className:`truncate`,children:[`spawned by `,f]})})}),a&&(0,P.jsxs)(`p`,{className:`text-xs text-muted-foreground truncate leading-tight`,children:[a.from===`user`?`You: `:``,rn(Fe(a).replace(/\s+/g,` `))]})]})]}),h&&(0,P.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),ne(t.id)},className:`flex w-full items-center gap-1.5 border-b border-border/50 bg-muted/20 py-1 pl-8 pr-3 text-[10px] text-muted-foreground transition-colors hover:bg-muted/40 hover:text-foreground`,"aria-expanded":!g,title:g?`Show ${p} child ${p===1?`agent`:`agents`}`:`Hide children`,children:[g?(0,P.jsx)(m,{className:`h-3.5 w-3.5 shrink-0`}):(0,P.jsx)(ve,{className:`h-3.5 w-3.5 shrink-0`}),(0,P.jsxs)(`span`,{className:`font-medium`,children:[p,` child `,p===1?`agent`:`agents`]})]})]},t.id)}return(0,P.jsxs)(`div`,{className:`flex flex-col h-full border-r border-border min-w-0`,children:[(0,P.jsxs)(`div`,{className:`p-3 border-b border-border space-y-2`,children:[(0,P.jsxs)(`div`,{className:`relative`,children:[(0,P.jsx)(n,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground pointer-events-none`}),(0,P.jsx)(Xe,{placeholder:`Search agents...`,value:l,onChange:e=>r({chatAgentSearch:e.target.value}),className:`pl-8 h-7 text-xs`})]}),(0,P.jsxs)(`div`,{className:`flex h-7 items-center rounded-md border border-border bg-background p-0.5 text-xs`,children:[(0,P.jsxs)(`button`,{type:`button`,onClick:()=>ie(!1),title:`Show only conversations where you're in the audience (agents you spawned or messaged)`,"aria-pressed":!re,className:D(`flex h-full flex-1 items-center justify-center gap-1.5 rounded-[5px] transition-colors`,re?`text-muted-foreground hover:text-foreground`:`bg-primary/15 text-primary font-medium`),children:[(0,P.jsx)(d,{className:`h-3.5 w-3.5`}),`Scoped`]}),(0,P.jsxs)(`button`,{type:`button`,onClick:()=>ie(!0),title:`Show every agent conversation, including agent-to-agent chatter`,"aria-pressed":re,className:D(`flex h-full flex-1 items-center justify-center gap-1.5 rounded-[5px] transition-colors`,re?`bg-primary/15 text-primary font-medium`:`text-muted-foreground hover:text-foreground`),children:[(0,P.jsx)(c,{className:`h-3.5 w-3.5`}),`All`]})]}),(0,P.jsxs)(`button`,{type:`button`,onClick:()=>r({chatAgentFiltersCollapsed:!w}),className:`sm:hidden flex w-full items-center justify-between h-6 px-1.5 text-xs rounded-md border border-border bg-background text-muted-foreground`,children:[(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,P.jsx)(i,{className:`w-3.5 h-3.5`}),`Filters & sort`,be>0&&(0,P.jsx)(Ye,{className:`bg-primary/20 text-primary text-[10px] h-4 min-w-4 px-1 flex items-center justify-center`,children:be})]}),w?(0,P.jsx)(ve,{className:`w-3.5 h-3.5`}):(0,P.jsx)(ye,{className:`w-3.5 h-3.5`})]}),(0,P.jsxs)(`div`,{className:D(`space-y-2`,w?`hidden`:`block`,`sm:block`),children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,P.jsxs)(`select`,{value:f,onChange:e=>r({chatAgentSort:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:`status`,children:`By status`}),(0,P.jsx)(`option`,{value:`name`,children:`By name`}),(0,P.jsx)(`option`,{value:`lastSeen`,children:`By last seen`}),(0,P.jsx)(`option`,{value:`lastMessage`,children:`By last activity`})]}),(0,P.jsx)(M,{variant:`ghost`,size:`icon-xs`,onClick:()=>r({chatAgentSortDir:p===`asc`?`desc`:`asc`}),children:p===`asc`?(0,P.jsx)(b,{className:`w-3.5 h-3.5`}):(0,P.jsx)(S,{className:`w-3.5 h-3.5`})})]}),(0,P.jsxs)(`select`,{value:ee,onChange:e=>r({chatAgentGroupBy:e.target.value}),className:`w-full h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`No grouping`}),(0,P.jsx)(`option`,{value:`project`,children:`Group by project`})]}),(0,P.jsxs)(`div`,{className:`flex gap-1`,children:[(0,P.jsxs)(`select`,{value:h,onChange:e=>r({chatAgentProviderFilter:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`All types`}),Me().map(e=>(0,P.jsx)(`option`,{value:e,children:Ae(e)},e)),(0,P.jsx)(`option`,{value:`agent`,children:`Agent`}),(0,P.jsx)(`option`,{value:`user`,children:`User`})]}),(0,P.jsxs)(`select`,{value:g,onChange:e=>r({chatAgentStatusFilter:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`All status`}),(0,P.jsx)(`option`,{value:`online`,children:`Online`}),(0,P.jsx)(`option`,{value:`idle`,children:`Idle`}),(0,P.jsx)(`option`,{value:`busy`,children:`Busy`}),(0,P.jsx)(`option`,{value:`offline`,children:`Offline`})]}),he.length>1&&(0,P.jsxs)(`select`,{value:C,onChange:e=>r({chatAgentHostFilter:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`All hosts`}),he.map(e=>(0,P.jsx)(`option`,{value:e,children:e},e))]})]}),(k.length>0||me.length>0)&&(0,P.jsxs)(`div`,{className:`flex gap-1`,children:[k.length>0&&(0,P.jsxs)(`select`,{value:y,onChange:e=>r({chatAgentTagFilter:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`All tags`}),k.map(e=>(0,P.jsxs)(`option`,{value:e,children:[`#`,e]},e))]}),me.length>0&&(0,P.jsxs)(`select`,{value:x,onChange:e=>r({chatAgentCapFilter:e.target.value}),className:`flex-1 h-6 text-xs rounded-md border border-border bg-background px-1.5 text-foreground`,children:[(0,P.jsx)(`option`,{value:``,children:`All caps`}),me.map(e=>(0,P.jsx)(`option`,{value:e,children:e},e))]})]})]})]}),(0,P.jsxs)(`button`,{type:`button`,className:`flex w-full shrink-0 items-center gap-2.5 border-b border-border px-3 py-2 text-left transition-colors hover:bg-muted/50`,onClick:o,children:[(0,P.jsx)(`div`,{className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-full border border-dashed border-primary/50 bg-primary/10 text-primary`,children:(0,P.jsx)(_,{className:`h-3.5 w-3.5`})}),(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium`,children:`New Agent`}),(0,P.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:`Spawn a fresh chat agent`})]})]}),(0,P.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:pe.length===0?!re&&!l&&be===0?(0,P.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-10 text-center px-6`,children:[(0,P.jsx)(_e,{className:`w-8 h-8 text-muted-foreground/40 mb-3`}),(0,P.jsx)(`p`,{className:`text-xs font-medium text-foreground/80`,children:`No conversations in your audience`}),(0,P.jsx)(`p`,{className:`mt-1 text-[11px] text-muted-foreground`,children:`Agents you spawn or message show up here.`}),(0,P.jsxs)(`button`,{type:`button`,onClick:()=>ie(!0),className:`mt-3 inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-2.5 py-1 text-[11px] text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground`,children:[(0,P.jsx)(c,{className:`h-3.5 w-3.5`}),` Show all agents`]})]}):(0,P.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-10 text-center px-4`,children:[(0,P.jsx)(u,{className:`w-8 h-8 text-muted-foreground/40 mb-2`}),(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No agents match filters`})]}):ge?ge.map(([e,t])=>(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center gap-1.5 border-b border-border/50 bg-background/95 px-3 py-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground backdrop-blur`,children:[(0,P.jsx)(`span`,{className:`truncate`,children:e}),(0,P.jsx)(`span`,{className:`text-muted-foreground/50`,children:t.length})]}),(0,P.jsx)(`ul`,{children:ft(t,T,ue).map(Ce)})]},e)):(0,P.jsx)(`ul`,{children:xe.map(Ce)})})]})}var on=[{name:`/reply`,source:`skill`,description:`Reply to a relay message by id`,argumentHint:`<messageId> <body>`},{name:`/message`,source:`skill`,description:`Send a relay message to an agent, label, tag, or broadcast`,argumentHint:`<target> <body>`},{name:`/pair`,source:`skill`,description:`Start or manage a two-agent pair session`},{name:`/react`,source:`skill`,description:`Add a reaction to a relay message`,argumentHint:`<messageId> <emoji>`},{name:`/read-message`,source:`skill`,description:`Fetch a full relay message by id`,argumentHint:`<messageId>`},{name:`/send-claimable`,source:`skill`,description:`Enqueue a claimable work item for one agent to claim`},{name:`/status`,source:`skill`,description:`Show this agent's relay status`},{name:`/tags`,source:`skill`,description:`List or update this agent's relay tags`},{name:`/label`,source:`skill`,description:`Read, set, or clear this agent's relay label`},{name:`/disconnect`,source:`skill`,description:`End the current relay pair session`}],sn={"/clear":{description:`Clear conversation history and free up context`},"/compact":{description:`Compact the conversation to reclaim context`,argumentHint:`[instructions]`},"/model":{description:`Switch the active model`,argumentHint:`[model]`},"/help":{description:`Show help`},"/new":{description:`Start a new thread`}};function cn(e){return[...((e?ke(e):void 0)?.slashCommands??[]).map(e=>({name:e,source:`builtin`,...sn[e]})),...on]}function ln({agentId:e,className:t}){let n=A(t=>t.presenceByAgent[e]),r=A(e=>e.usersById),i=pe(),a=(n??[]).filter(e=>e.clientId!==i);if(a.length===0)return null;let s=Array.from(new Set(a.map(e=>qe(e.userId,r)))),l=a.some(e=>e.typing),u=s.length===1?s[0]:`${s.length} viewers`,d=l?o:c;return(0,P.jsxs)(`span`,{title:`${s.join(`, `)}${l?` · typing`:` · viewing`}`,className:D(`inline-flex items-center gap-1 rounded-full bg-muted/40 px-2 py-0.5 text-[11px] text-muted-foreground`,t),children:[(0,P.jsx)(d,{className:D(`h-3 w-3 shrink-0`,l&&`text-emerald-400`)}),(0,P.jsxs)(`span`,{className:`truncate max-w-[12ch]`,children:[u,l&&s.length===1?` is typing…`:``]})]})}function un({selectedInboxThread:e,agent:i,now:a,blockedState:o,thread:s,exportableThread:c,importedHistory:u,showBackButton:d,onBack:m,openAgentDetail:h,openWorkspaceFocus:g,voiceTtsEnabled:_,setVoiceTtsEnabled:v,canOpenTerminal:b,terminalOpening:x,handleOpenTerminal:S,canInterrupt:w,interruptAgent:T,canCompact:E,canClearContext:D,canShutdown:ie,openConfirm:ae,workspaceAction:oe,doAgentAction:se,openFilesForAgent:ce,forkFromAgent:O,markInboxThreadUnread:de,markInboxThreadRead:pe,exportThread:k,onOpenSearch:me}){return(0,P.jsxs)(`div`,{className:`flex items-center justify-between px-3 md:px-4 py-2.5 md:py-3 border-b border-border shrink-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 md:gap-2.5 min-w-0`,children:[d&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,onClick:m,className:`shrink-0 -ml-1`,children:(0,P.jsx)(l,{className:`w-4 h-4`})}),(0,P.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 md:gap-2.5 min-w-0 hover:opacity-80 transition-opacity`,onClick:()=>i&&h(i),disabled:!i,children:[(0,P.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,P.jsx)(Qe,{agent:i}),(0,P.jsx)(Nt,{agent:i,now:a,className:`absolute -bottom-0.5 -right-0.5 w-2 h-2`})]}),(0,P.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,P.jsxs)(`p`,{className:`flex items-center gap-1 text-sm font-medium truncate`,children:[i&&(0,P.jsx)(Yt,{profile:Xt(i),className:`shrink-0`}),(0,P.jsx)(`span`,{className:`truncate`,children:i?Ve(i):e})]}),i&&(0,P.jsxs)(`p`,{className:`text-xs text-muted-foreground truncate`,children:[o?`blocked: ${o.label}`:i.status,i.machine&&` · ${i.machine}`,typeof i.meta?.cwd==`string`&&i.meta.cwd&&` · ${Ie(i.meta.cwd,1)}`]})]})]}),i&&(0,P.jsx)(bt,{agent:i,compact:!0,className:`hidden @4xl/chat:flex shrink-0`}),i&&It(i)&&(0,P.jsx)(jt,{context:i.context,expected:!0}),i?.branchState&&i.branchWorkspaceId&&(0,P.jsx)(Zt,{state:i.branchState,className:`shrink-0`,onClick:()=>void g(i.branchWorkspaceId)}),s?.attention.unread?(0,P.jsxs)(Ye,{className:`bg-red-500/20 text-red-400 text-xs shrink-0 hidden @2xl/chat:flex`,children:[s.attention.unread,` unread`]}):null,i&&(0,P.jsx)(ln,{agentId:i.id,className:`shrink-0 hidden @3xl/chat:inline-flex`})]}),(0,P.jsx)(`div`,{className:`flex items-center gap-0.5 md:gap-1 shrink-0`,children:i&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(Ze,{value:i.id,label:`Copy agent ID`,size:`icon-sm`}),me&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,title:`Search this chat`,onClick:me,children:(0,P.jsx)(n,{className:`w-3.5 h-3.5`})}),Oe.available&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,title:_?`Speaking agent responses aloud — click to mute (engine & voice in Settings)`:`Speak agent responses aloud (active chat) — engine & voice in Settings`,className:_?`text-primary`:``,onClick:()=>v(!_),children:_?(0,P.jsx)(le,{className:`w-3.5 h-3.5`}):(0,P.jsx)(te,{className:`w-3.5 h-3.5`})}),b&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,disabled:x,title:`Terminal`,onClick:()=>void S(),children:(0,P.jsx)(ee,{className:`w-3.5 h-3.5`})}),w&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`text-red-400 hover:text-red-300`,title:`Interrupt`,onClick:T,children:(0,P.jsx)(fe,{className:`w-3.5 h-3.5`})}),(i.branchState===`changes`||i.branchState===`idle`)&&i.branchWorkspaceId&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex text-amber-400 hover:text-amber-300`,title:`Mark workspace ready — hand off to the auto-merge`,onClick:()=>ae(`Mark Workspace Ready`,`Mark ${Ve(i)}'s branch ready to land? The relay auto-merge will rebase and land it.`,()=>oe(i.branchWorkspaceId,`ready`)),children:(0,P.jsx)(y,{className:`w-3.5 h-3.5`})}),E&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Compact`,onClick:()=>ae(`Compact Agent`,`Compact context for ${Ve(i)}?`,()=>se(i,`compact`)),children:(0,P.jsx)(t,{className:`w-3.5 h-3.5`})}),D&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Clear context`,onClick:()=>ae(`Clear Context`,`Clear context for ${Ve(i)}?`,()=>se(i,`clearContext`)),children:(0,P.jsx)(C,{className:`w-3.5 h-3.5`})}),ie&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Shutdown`,onClick:()=>ae(`Shutdown Agent`,`Shutdown ${Ve(i)}?`,()=>se(i,`shutdown`)),children:(0,P.jsx)(be,{className:`w-3.5 h-3.5`})}),i&&typeof i.meta?.cwd==`string`&&i.meta.cwd&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Open ${i.meta.cwd} in Files`,onClick:()=>void ce(i),children:(0,P.jsx)(p,{className:`w-3.5 h-3.5`})}),i&&s&&s.messages.length>0&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Fork — spawn new agent with this chat history`,onClick:()=>O(i.id,s.messages),children:(0,P.jsx)(r,{className:`w-3.5 h-3.5`})}),s&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Mark unread`,onClick:()=>de(e),children:(0,P.jsx)(ne,{className:`w-3.5 h-3.5`})}),s&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Mark read`,onClick:()=>pe(s.peer,s.messages),children:(0,P.jsx)(ue,{className:`w-3.5 h-3.5`})}),c&&(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`hidden @4xl/chat:inline-flex`,title:`Export thread`,onClick:()=>k({...c,importedHistory:u},`json`),children:(0,P.jsx)(re,{className:`w-3.5 h-3.5`})}),(0,P.jsxs)(yt,{children:[(0,P.jsx)(Tt,{asChild:!0,children:(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`@4xl/chat:hidden`,children:(0,P.jsx)(f,{className:`w-3.5 h-3.5`})})}),(0,P.jsxs)(St,{align:`end`,children:[b&&(0,P.jsxs)(Ft,{disabled:x,onClick:()=>void S(),children:[(0,P.jsx)(ee,{className:`w-3.5 h-3.5`}),`Terminal`]}),w&&(0,P.jsxs)(Ft,{onClick:T,children:[(0,P.jsx)(fe,{className:`w-3.5 h-3.5`}),`Interrupt`]}),(i.branchState===`changes`||i.branchState===`idle`)&&i.branchWorkspaceId&&(0,P.jsxs)(Ft,{onClick:()=>ae(`Mark Workspace Ready`,`Mark ${Ve(i)}'s branch ready to land? The relay auto-merge will rebase and land it.`,()=>oe(i.branchWorkspaceId,`ready`)),children:[(0,P.jsx)(y,{className:`w-3.5 h-3.5`}),`Mark Ready`]}),E&&(0,P.jsxs)(Ft,{onClick:()=>ae(`Compact Agent`,`Compact context for ${Ve(i)}?`,()=>se(i,`compact`)),children:[(0,P.jsx)(t,{className:`w-3.5 h-3.5`}),`Compact`]}),D&&(0,P.jsxs)(Ft,{onClick:()=>ae(`Clear Context`,`Clear context for ${Ve(i)}?`,()=>se(i,`clearContext`)),children:[(0,P.jsx)(C,{className:`w-3.5 h-3.5`}),`Clear Context`]}),ie&&(0,P.jsxs)(Ft,{onClick:()=>ae(`Shutdown Agent`,`Shutdown ${Ve(i)}?`,()=>se(i,`shutdown`)),children:[(0,P.jsx)(be,{className:`w-3.5 h-3.5`}),`Shutdown`]}),i&&typeof i.meta?.cwd==`string`&&i.meta.cwd&&(0,P.jsxs)(Ft,{onClick:()=>void ce(i),children:[(0,P.jsx)(p,{className:`w-3.5 h-3.5`}),`Open Files`]}),i&&s&&s.messages.length>0&&(0,P.jsxs)(Ft,{onClick:()=>O(i.id,s.messages),children:[(0,P.jsx)(r,{className:`w-3.5 h-3.5`}),`Fork`]}),(b||E||D||ie)&&(0,P.jsx)(kt,{}),s&&(0,P.jsxs)(Ft,{onClick:()=>de(e),children:[(0,P.jsx)(ne,{className:`w-3.5 h-3.5`}),`Mark Unread`]}),s&&(0,P.jsxs)(Ft,{onClick:()=>pe(s.peer,s.messages),children:[(0,P.jsx)(ue,{className:`w-3.5 h-3.5`}),`Mark Read`]}),c&&(0,P.jsxs)(Ft,{onClick:()=>k({...c,importedHistory:u},`json`),children:[(0,P.jsx)(re,{className:`w-3.5 h-3.5`}),`Download`]})]})]})]})})]})}function dn({query:e,position:t,total:r,onQueryChange:i,onNext:a,onPrev:o,onClose:s}){let c=(0,N.useRef)(null),l=e.trim().length>0,u=l&&r===0;function d(e){if(e.key===`Escape`){e.preventDefault(),s();return}e.key===`Enter`&&(e.preventDefault(),e.shiftKey?o():a())}return(0,P.jsxs)(`section`,{className:`flex shrink-0 items-center gap-2 border-b border-border bg-card/45 px-3 py-2`,children:[(0,P.jsx)(n,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,P.jsx)(Xe,{ref:c,autoFocus:!0,value:e,onChange:e=>i(e.target.value),onKeyDown:d,placeholder:`Search this chat…`,"aria-label":`Search this chat`,className:`h-7 flex-1 text-sm`}),(0,P.jsx)(`span`,{className:`shrink-0 tabular-nums text-xs `+(u?`text-red-400`:`text-muted-foreground`),children:l?u?`No results`:`${t}/${r}`:``}),(0,P.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[(0,P.jsx)(M,{type:`button`,variant:`ghost`,size:`icon-sm`,title:`Previous match (Shift+Enter)`,disabled:r===0,onClick:o,children:(0,P.jsx)(ye,{className:`h-3.5 w-3.5`})}),(0,P.jsx)(M,{type:`button`,variant:`ghost`,size:`icon-sm`,title:`Next match (Enter)`,disabled:r===0,onClick:a,children:(0,P.jsx)(ve,{className:`h-3.5 w-3.5`})}),(0,P.jsx)(M,{type:`button`,variant:`ghost`,size:`icon-sm`,title:`Close search (Esc)`,onClick:s,children:(0,P.jsx)(w,{className:`h-3.5 w-3.5`})})]})]})}function fn({matches:e,activeIndex:t,onAccept:n,onHover:r}){return e.length===0?null:(0,P.jsx)(`div`,{className:`absolute bottom-full left-3 right-3 md:left-4 md:right-4 mb-2 z-20 max-h-64 overflow-auto rounded-xl border border-border bg-popover shadow-lg`,children:e.map((e,i)=>(0,P.jsxs)(`button`,{onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:()=>r(i),className:D(`flex w-full items-baseline gap-2 px-3 py-1.5 text-left text-sm`,i===t?`bg-accent`:`hover:bg-accent/50`),children:[(0,P.jsx)(`span`,{className:`font-medium shrink-0`,children:e.name}),e.argumentHint&&(0,P.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:e.argumentHint}),e.description&&(0,P.jsx)(`span`,{className:`ml-auto truncate text-xs text-muted-foreground/70`,children:e.description})]},e.name))})}function pn({value:e,onChange:t,onKeyDown:n,onPaste:r,placeholder:i,className:a}){let o=(0,N.useRef)(null);return(0,N.useEffect)(()=>{let e=o.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,200)+`px`)},[e]),(0,N.useEffect)(()=>{let e=window.visualViewport;if(!e)return;function t(){let e=o.current;!e||document.activeElement!==e||requestAnimationFrame(()=>{e.scrollIntoView({block:`nearest`,behavior:`smooth`})})}return e.addEventListener(`resize`,t),()=>e.removeEventListener(`resize`,t)},[]),(0,P.jsx)(`textarea`,{ref:o,value:e,onChange:t,onKeyDown:n,onPaste:r,placeholder:i,rows:1,className:D(`w-full resize-none rounded-xl border border-border bg-background px-3.5 py-2.5 text-sm`,`placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`min-h-[42px] max-h-[200px] overflow-y-auto`,a)})}function mn({item:e,onRemove:t}){let[n,r]=(0,N.useState)(!1),i=!!(e.previewUrl&&!e.error);return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border border-border bg-card px-2.5 py-2 text-xs`,children:[(0,P.jsx)(`button`,{type:`button`,disabled:!i,onClick:()=>r(!0),className:`group/pending relative flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded bg-muted disabled:cursor-default`,title:i?`Preview image`:e.fileName,children:e.previewUrl?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`img`,{src:e.previewUrl,alt:e.fileName,className:`h-full w-full object-cover`}),(0,P.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/0 group-hover/pending:bg-black/30 transition-colors`,children:(0,P.jsx)(me,{className:`h-3.5 w-3.5 text-white opacity-0 group-hover/pending:opacity-100 transition-opacity drop-shadow-md`})})]}):e.error?(0,P.jsx)(E,{className:`h-4 w-4 text-red-400`}):e.uploading?(0,P.jsx)(k,{className:`h-4 w-4 animate-spin text-muted-foreground`}):(0,P.jsx)(g,{className:`h-4 w-4 text-muted-foreground`})}),(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsx)(`p`,{className:`truncate font-medium`,children:e.fileName}),(0,P.jsx)(`p`,{className:D(`truncate text-muted-foreground`,e.error&&`text-red-400`),children:e.error||(e.uploading?`Uploading`:nt(e.size))})]}),(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,title:`Remove attachment`,onClick:t,children:(0,P.jsx)(w,{className:`h-3.5 w-3.5`})})]}),e.previewUrl&&(0,P.jsx)(zt,{open:n,onOpenChange:r,children:(0,P.jsxs)(At,{className:`max-w-[95vw] max-h-[95vh] w-auto p-0 bg-black/95 border-zinc-800 gap-0 overflow-hidden`,showCloseButton:!1,children:[(0,P.jsx)(Mt,{className:`sr-only`,children:e.fileName}),(0,P.jsxs)(`div`,{className:`relative flex items-center justify-center min-h-[200px]`,children:[(0,P.jsx)(`img`,{src:e.previewUrl,alt:e.fileName,className:`max-w-[93vw] max-h-[90vh] object-contain`}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>r(!1),className:`absolute top-2 right-2 rounded-md bg-black/60 hover:bg-black/80 p-2 text-white transition-colors`,title:`Close`,children:(0,P.jsx)(w,{className:`w-4 h-4`})})]})]})})]})}function hn({draft:e,placeholder:t,chatSending:n,disabled:r,hasPendingUploads:i,readyAttachmentCount:a,pendingAttachments:o,micAvailable:c,micState:l,slashMatches:u,slashActiveIndex:d,onDraftChange:f,onKeyDown:p,onPaste:m,onUploadFiles:h,onRemovePendingAttachment:g,onSend:_,onAcceptSlash:v,onSlashHover:y,onStartPtt:b,onStopPtt:x,footerText:S}){let C=(0,N.useRef)(null),[ee,w]=(0,N.useState)(!1),T=!e.trim()&&a===0||i||n||r;return(0,P.jsxs)(`div`,{className:D(`relative shrink-0 border-t border-border px-3 md:px-4 py-2.5 md:py-3 safe-area-bottom`,ee&&`bg-primary/5 ring-1 ring-primary/40`),onDragOver:e=>{e.preventDefault(),w(!0)},onDragLeave:()=>w(!1),onDrop:e=>{e.preventDefault(),w(!1),h(e.dataTransfer.files)},children:[o.length>0&&(0,P.jsx)(`div`,{className:`mb-2 grid gap-2 sm:grid-cols-2`,children:o.map(e=>(0,P.jsx)(mn,{item:e,onRemove:()=>g(e.id)},e.id))}),(0,P.jsx)(`input`,{ref:C,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{e.target.files&&h(e.target.files),e.currentTarget.value=``}}),(0,P.jsx)(fn,{matches:u,activeIndex:d,onAccept:v,onHover:y}),(0,P.jsxs)(`div`,{className:`hidden md:flex items-end gap-2`,children:[(0,P.jsx)(M,{variant:`ghost`,size:`icon`,title:`Attach files`,disabled:n,onClick:()=>C.current?.click(),className:`shrink-0 mb-0.5 rounded-xl h-[42px] w-[42px]`,children:(0,P.jsx)(s,{className:`w-4 h-4`})}),(0,P.jsx)(pn,{value:e,onChange:e=>f(e.target.value),onKeyDown:p,onPaste:m,placeholder:t,className:`flex-1`}),c&&(0,P.jsx)(M,{variant:`ghost`,size:`icon`,title:l===`recording`?`Release to transcribe`:`Hold to talk`,disabled:n||l===`transcribing`,onPointerDown:e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),b()},onPointerUp:e=>{e.preventDefault();try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}x()},className:`shrink-0 mb-0.5 rounded-xl h-[42px] w-[42px] ${l===`recording`?`text-red-400 animate-pulse`:``}`,children:l===`transcribing`?(0,P.jsx)(k,{className:`w-4 h-4 animate-spin`}):(0,P.jsx)(ie,{className:`w-4 h-4`})}),(0,P.jsx)(M,{size:`icon`,disabled:T,onClick:_,className:`shrink-0 mb-0.5 rounded-xl h-[42px] w-[42px]`,children:(0,P.jsx)(ce,{className:`w-4 h-4`})})]}),(0,P.jsxs)(`div`,{className:`md:hidden space-y-2`,children:[(0,P.jsx)(pn,{value:e,onChange:e=>f(e.target.value),onKeyDown:p,onPaste:m,placeholder:t,className:`w-full`}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(M,{variant:`ghost`,size:`icon`,title:`Attach files`,disabled:n,onClick:()=>C.current?.click(),className:`rounded-xl h-9 w-9`,children:(0,P.jsx)(s,{className:`w-4 h-4`})}),c&&(0,P.jsx)(M,{variant:`ghost`,size:`icon`,title:l===`recording`?`Release to transcribe`:`Hold to talk`,disabled:n||l===`transcribing`,onPointerDown:e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),b()},onPointerUp:e=>{e.preventDefault();try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}x()},className:`rounded-xl h-9 w-9 ${l===`recording`?`text-red-400 animate-pulse`:``}`,children:l===`transcribing`?(0,P.jsx)(k,{className:`w-4 h-4 animate-spin`}):(0,P.jsx)(ie,{className:`w-4 h-4`})})]}),(0,P.jsx)(M,{size:`icon`,disabled:T,onClick:_,className:`rounded-xl h-9 w-9`,children:(0,P.jsx)(ce,{className:`w-4 h-4`})})]})]}),S&&(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1.5 hidden md:block`,children:S})]})}var gn=e(xe(),1);function _n({preview:e,error:t,onReadError:n,onMouseEnter:r,onMouseLeave:i}){let{anchor:a}=e,o=Math.min(560,window.innerWidth-24),s=Math.min(380,window.innerHeight-24),c=Math.max(12,Math.min(a.left,window.innerWidth-o-12));return(0,gn.createPortal)((0,P.jsxs)(`div`,{className:`fixed z-50 flex flex-col overflow-hidden rounded-lg border border-border bg-background shadow-xl`,style:{top:window.innerHeight-a.bottom>=s+8?a.bottom+8:a.top-8-s>=12?a.top-8-s:Math.max(12,window.innerHeight-s-12),left:c,width:o,height:s},onMouseEnter:r,onMouseLeave:i,children:[(0,P.jsxs)(`div`,{className:`flex h-8 shrink-0 items-center gap-2 border-b border-border px-2.5`,children:[(0,P.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[11px] font-medium text-muted-foreground`,children:e.path}),t&&(0,P.jsx)(`span`,{className:`max-w-[12rem] truncate text-[11px] text-red-400`,children:t}),(0,P.jsx)(`span`,{className:`shrink-0 text-[10px] text-muted-foreground/70`,children:`click to pin`})]}),(0,P.jsx)(`div`,{className:`min-h-0 flex-1`,children:e.type===`directory`?(0,P.jsx)(Rt,{orchestratorId:e.orchestratorId,selectedPath:e.path,onReadError:n}):(0,P.jsx)(_t,{orchestratorId:e.orchestratorId,selectedPath:e.path,line:e.line,onReadError:n})})]}),document.body)}var vn=[];function yn(e){return A(t=>t.chatStatusEvents[e]??vn)}function bn(e,t){let n=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!e)return;n.current||=(window.history.pushState({chatGuard:!0},``),!0);function r(e){(e.state?.chatGuard!==void 0||!n.current)&&(window.history.pushState({chatGuard:!0},``),t())}function i(e){e.preventDefault()}return window.addEventListener(`popstate`,r),window.addEventListener(`beforeunload`,i),()=>{window.removeEventListener(`popstate`,r),window.removeEventListener(`beforeunload`,i)}},[e,t]),(0,N.useEffect)(()=>{!e&&n.current&&(n.current=!1)},[e])}function xn(e,t){let n=e.toLowerCase(),r=t.trim().toLowerCase();return r?n.includes(r)?!0:/\s/.test(r)||r.length<4?!1:Sn(n,r):!1}function Sn(e,t,n=4){let r=0,i=-1;for(let a=0;a<e.length&&r<t.length;a+=1)if(e[a]===t[r]){if(i!==-1&&a-i-1>n)return!1;i=a,r+=1}return r===t.length}function Cn(e,t){let n=t.trim();if(!n)return[];let r=[];for(let t of e){let e=tt(t);e&&xn(e,n)&&r.push(dt(t))}return r}function wn(e){let[t,n]=(0,N.useState)(!1),[r,i]=(0,N.useState)(``),[a,o]=(0,N.useState)(0),s=(0,N.useMemo)(()=>t?Cn(e,r):[],[t,r,e]),c=(0,N.useMemo)(()=>new Set(s),[s]),l=s.length,u=l?Math.min(a,l-1):0,d=l?s[u]??null:null,f=(0,N.useCallback)(()=>n(!0),[]),p=(0,N.useCallback)(()=>{n(!1),i(``),o(0)},[]),m=(0,N.useCallback)(e=>{i(e),o(0)},[]),h=(0,N.useCallback)(()=>{o(e=>l?(e+1)%l:0)},[l]),g=(0,N.useCallback)(()=>{o(e=>l?(e-1+l)%l:0)},[l]);return{open:t,query:r,matchKeys:s,matchKeySet:c,total:l,position:l?u+1:0,currentKey:d,openSearch:f,close:p,setQuery:m,next:h,prev:g}}var Tn=1e4;function En(e,t){let n=A(e=>e.announcePresence),r=(0,N.useRef)(t);r.current=t,(0,N.useEffect)(()=>{if(!e)return;n(e,r.current);let t=setInterval(()=>{n(e,r.current)},Tn);return()=>{clearInterval(t),n(e,!1,!0)}},[e,n]),(0,N.useEffect)(()=>{e&&n(e,t)},[e,t,n])}var Dn=0,On=1,kn=2,An=4;function jn(e){return()=>e}function Mn(e){e()}function Nn(e,t){return n=>e(t(n))}function Pn(e,t){return()=>e(t)}function Fn(e,t){return n=>e(t,n)}function In(e){return e!==void 0}function Ln(...e){return()=>{e.map(Mn)}}function Rn(){}function zn(e,t){return t(e),e}function Bn(e,t){return t(e)}function F(...e){return e}function I(e,t){return e(On,t)}function L(e,t){e(Dn,t)}function Vn(e){e(kn)}function R(e){return e(An)}function z(e,t){return I(e,Fn(t,Dn))}function Hn(e,t){let n=e(On,e=>{n(),t(e)});return n}function Un(e){let t,n;return r=>i=>{t=i,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function Wn(e,t){return e===t}function B(e=Wn){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function V(e){return t=>n=>{e(n)&&t(n)}}function H(e){return t=>Nn(t,e)}function Gn(e){return t=>()=>{t(e)}}function U(e,...t){let n=Yn(...t);return((t,r)=>{switch(t){case kn:Vn(e);return;case On:return I(e,n(r))}})}function Kn(e,t){return n=>r=>{n(t=e(t,r))}}function qn(e){return t=>n=>{e>0?e--:t(n)}}function Jn(e){let t=null,n;return r=>i=>{t=i,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function W(...e){let t=Array(e.length),n=0,r=null,i=2**e.length-1;return e.forEach((e,a)=>{let o=2**a;I(e,e=>{let s=n;n|=o,t[a]=e,s!==i&&n===i&&r&&(r(),r=null)})}),e=>a=>{let o=()=>{e([a].concat(t))};n===i?o():r=o}}function Yn(...e){return t=>e.reduceRight(Bn,t)}function Xn(e){let t,n,r=()=>t?.();return function(i,a){switch(i){case On:return a?n===a?void 0:(r(),n=a,t=I(e,a),t):(r(),Rn);case kn:r(),n=null;return}}}function G(e){let t=e,n=K();return((e,r)=>{switch(e){case Dn:t=r;break;case On:r(t);break;case An:return t}return n(e,r)})}function Zn(e,t){return zn(G(t),t=>z(e,t))}function K(){let e=[];return((t,n)=>{switch(t){case Dn:e.slice().forEach(e=>{e(n)});return;case kn:e.splice(0,e.length);return;case On:return e.push(n),()=>{let t=e.indexOf(n);t>-1&&e.splice(t,1)}}})}function Qn(e){return zn(K(),t=>z(e,t))}function q(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:$n(),singleton:n}}var $n=()=>Symbol();function er(e){let t=new Map,n=({constructor:e,dependencies:r,id:i,singleton:a})=>{if(a&&t.has(i))return t.get(i);let o=e(r.map(e=>n(e)));return a&&t.set(i,o),o};return n(e)}function tr(...e){let t=K(),n=Array(e.length),r=0,i=2**e.length-1;return e.forEach((e,a)=>{let o=2**a;I(e,e=>{n[a]=e,r|=o,r===i&&L(t,n)})}),function(e,a){switch(e){case kn:Vn(t);return;case On:return r===i&&a(n),I(t,a)}}}function J(e,t=Wn){return U(e,B(t))}function nr(...e){return function(t,n){switch(t){case kn:return;case On:return Ln(...e.map(e=>I(e,n)))}}}var rr={DEBUG:0,INFO:1,WARN:2,ERROR:3},ir={[rr.DEBUG]:`debug`,[rr.ERROR]:`error`,[rr.INFO]:`log`,[rr.WARN]:`warn`},ar=()=>typeof globalThis>`u`?window:globalThis,or=q(()=>{let e=G(rr.ERROR);return{log:G((t,n,r=rr.INFO)=>{r>=(ar().VIRTUOSO_LOG_LEVEL??R(e))&&console[ir[r]](`%creact-virtuoso: %c%s %o`,`color: #0253b3; font-weight: bold`,`color: initial`,t,n)}),logLevel:e}},[],{singleton:!0}),sr=new WeakMap;function cr(e){return`self`in e?e.document.documentElement:e}function lr(e){let t=cr(e),n=sr.get(t);if(n!==void 0)return n;let r=t.ownerDocument.defaultView.getComputedStyle(t).direction===`rtl`;return sr.set(t,r),r}function ur(e){sr.delete(cr(e))}function dr(e,t){return lr(e)?-t:t}var fr=dr;function pr(e,t){return dr(e,t)}function mr(e,t,n){return hr(e,t,n).callbackRef}function hr(e,t,n){let r=N.useRef(null),i=e=>{},a=N.useMemo(()=>typeof ResizeObserver<`u`?new ResizeObserver(t=>{let r=()=>{let n=t[0].target;n.offsetParent!==null&&e(n)};n?r():requestAnimationFrame(r)}):null,[e,n]);return i=e=>{e&&t?(a?.observe(e),r.current=e):(r.current&&a?.unobserve(r.current),r.current=null)},{callbackRef:i,ref:r}}function gr(e,t,n,r,i,a,o,s,c){return hr(N.useCallback(n=>{let c=_r(n.children,t,s?`offsetWidth`:`offsetHeight`,i),l=n.parentElement;for(;l.dataset.virtuosoScroller===void 0;)l=l.parentElement;let u=l.lastElementChild.dataset.viewportType===`window`,d;u&&(d=l.ownerDocument.defaultView);let f=o?s?o.scrollWidth:o.scrollHeight:u?s?d.document.documentElement.scrollWidth:d.document.documentElement.scrollHeight:s?l.scrollWidth:l.scrollHeight,p=o?s?o.offsetWidth:o.offsetHeight:u?s?d.innerWidth:d.innerHeight:s?l.offsetWidth:l.offsetHeight,m=o?s?fr(o,o.scrollLeft):o.scrollTop:u?s?fr(d,d.scrollX||d.document.documentElement.scrollLeft):d.scrollY||d.document.documentElement.scrollTop:s?fr(l,l.scrollLeft):l.scrollTop;r({scrollHeight:f,scrollTop:Math.max(m,0),viewportHeight:p}),a?.(s?vr(`column-gap`,getComputedStyle(n).columnGap,i):vr(`row-gap`,getComputedStyle(n).rowGap,i)),c!==null&&e(c)},[e,t,i,a,o,r,s]),n,c)}function _r(e,t,n,r){let i=e.length;if(i===0)return null;let a=[];for(let o=0;o<i;o++){let i=e.item(o);if(i.dataset.index===void 0)continue;let s=parseInt(i.dataset.index),c=parseFloat(i.dataset.knownSize),l=t(i,n);if(l===0&&r(`Zero-sized element, this should not happen`,{child:i},rr.ERROR),l===c)continue;let u=a[a.length-1];a.length===0||u.size!==l||u.endIndex!==s-1?a.push({endIndex:s,size:l,startIndex:s}):a[a.length-1].endIndex++}return a}function vr(e,t,n){return t!==`normal`&&t?.endsWith(`px`)!==!0&&n(`${e} was not resolved to pixel value correctly`,t,rr.WARN),t===`normal`?0:parseInt(t??`0`,10)}function yr(e,t,n){let r=N.useRef(null),i=N.useCallback(n=>{if(!n?.offsetParent)return;let i=n.getBoundingClientRect(),a=i.width,s,c;if(t){let e=t.getBoundingClientRect(),n=i.top-e.top;c=e.height-Math.max(0,n),s=n+t.scrollTop}else{let e=o.current.ownerDocument.defaultView;c=e.innerHeight-Math.max(0,i.top),s=i.top+e.scrollY}r.current={listHeight:i.height,offsetTop:s,visibleHeight:c,visibleWidth:a},e(r.current)},[e,t]),{callbackRef:a,ref:o}=hr(i,!0,n),s=N.useCallback(()=>{i(o.current)},[i,o]);return N.useEffect(()=>{if(t){t.addEventListener(`scroll`,s);let e=new ResizeObserver(()=>{requestAnimationFrame(s)});return e.observe(t),()=>{t.removeEventListener(`scroll`,s),e.unobserve(t)}}let e=o.current?.ownerDocument.defaultView;return e?.addEventListener(`scroll`,s),e?.addEventListener(`resize`,s),()=>{e?.removeEventListener(`scroll`,s),e?.removeEventListener(`resize`,s)}},[s,t,o]),a}var br=q(()=>{let e=K(),t=K(),n=G(0),r=K(),i=G(0),a=K(),o=K(),s=G(0),c=G(0),l=G(0),u=G(0),d=K(),f=K(),p=G(!1),m=G(!1),h=G(!1);return z(U(e,H(({scrollTop:e})=>e)),t),z(U(e,H(({scrollHeight:e})=>e)),o),z(t,i),{deviation:n,fixedFooterHeight:l,fixedHeaderHeight:c,footerHeight:u,headerHeight:s,horizontalDirection:m,scrollBy:f,scrollContainerState:e,scrollHeight:o,scrollingInProgress:p,scrollTo:d,scrollTop:t,skipAnimationFrameInResizeObserver:h,smoothScrollTargetReached:r,statefulScrollTop:i,viewportHeight:a}},[],{singleton:!0}),xr={lvl:0};function Sr(e,t){let n=e.length;if(n===0)return[];let{index:r,value:i}=t(e[0]),a=[];for(let o=1;o<n;o++){let{index:n,value:s}=t(e[o]);a.push({end:n-1,start:r,value:i}),r=n,i=s}return a.push({end:1/0,start:r,value:i}),a}function Y(e){return e===xr}function Cr(e,t){if(!Y(e))return t===e.k?e.v:t<e.k?Cr(e.l,t):Cr(e.r,t)}function wr(e,t,n=`k`){if(Y(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){let r=wr(e.r,t,n);return r[0]===-1/0?[e.k,e.v]:r}return wr(e.l,t,n)}function Tr(e,t,n){return Y(e)?Ir(t,n,1):t===e.k?Mr(e,{k:t,v:n}):t<e.k?Lr(Mr(e,{l:Tr(e.l,t,n)})):Lr(Mr(e,{r:Tr(e.r,t,n)}))}function Er(){return xr}function Dr(e,t,n){if(Y(e))return[];let r=wr(e,t)[0];return Br(Ar(e,r,n))}function Or(e,t){if(Y(e))return xr;let{k:n,l:r,r:i}=e;if(t===n){if(Y(r))return i;if(Y(i))return r;let[t,n]=Fr(r);return jr(Mr(e,{k:t,l:Nr(r),v:n}))}return jr(t<n?Mr(e,{l:Or(r,t)}):Mr(e,{r:Or(i,t)}))}function kr(e){return Y(e)?[]:[...kr(e.l),{k:e.k,v:e.v},...kr(e.r)]}function Ar(e,t,n){if(Y(e))return[];let{k:r,l:i,r:a,v:o}=e,s=[];return r>t&&(s=s.concat(Ar(i,t,n))),r>=t&&r<=n&&s.push({k:r,v:o}),r<=n&&(s=s.concat(Ar(a,t,n))),s}function jr(e){let{l:t,lvl:n,r}=e;if(r.lvl>=n-1&&t.lvl>=n-1)return e;if(n>r.lvl+1){if(Pr(t))return Rr(Mr(e,{lvl:n-1}));if(!Y(t)&&!Y(t.r))return Mr(t.r,{l:Mr(t,{r:t.r.l}),lvl:n,r:Mr(e,{l:t.r.r,lvl:n-1})});throw Error(`Unexpected empty nodes`)}if(Pr(e))return zr(Mr(e,{lvl:n-1}));if(!Y(r)&&!Y(r.l)){let t=r.l,i=Pr(t)?r.lvl-1:r.lvl;return Mr(t,{l:Mr(e,{lvl:n-1,r:t.l}),lvl:t.lvl+1,r:zr(Mr(r,{l:t.r,lvl:i}))})}throw Error(`Unexpected empty nodes`)}function Mr(e,t){return Ir(t.k===void 0?e.k:t.k,t.v===void 0?e.v:t.v,t.lvl===void 0?e.lvl:t.lvl,t.l===void 0?e.l:t.l,t.r===void 0?e.r:t.r)}function Nr(e){return Y(e.r)?e.l:jr(Mr(e,{r:Nr(e.r)}))}function Pr(e){return Y(e)||e.lvl>e.r.lvl}function Fr(e){return Y(e.r)?[e.k,e.v]:Fr(e.r)}function Ir(e,t,n,r=xr,i=xr){return{k:e,l:r,lvl:n,r:i,v:t}}function Lr(e){return zr(Rr(e))}function Rr(e){let{l:t}=e;return!Y(t)&&t.lvl===e.lvl?Mr(t,{r:Mr(e,{l:t.r})}):e}function zr(e){let{lvl:t,r:n}=e;return!Y(n)&&!Y(n.r)&&n.lvl===t&&n.r.lvl===t?Mr(n,{l:Mr(e,{r:n.l}),lvl:t+1}):e}function Br(e){return Sr(e,({k:e,v:t})=>({index:e,value:t}))}function Vr(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function Hr(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}var Ur=q(()=>({recalcInProgress:G(!1)}),[],{singleton:!0});function Wr(e,t,n){return e[Gr(e,t,n)]}function Gr(e,t,n,r=0){let i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=e[a],s=n(o,t);if(s===0)return a;if(s===-1){if(i-r<2)return a-1;i=a-1}else{if(i===r)return a;r=a+1}}throw Error(`Failed binary finding record in array - ${e.join(`,`)}, searched for ${t}`)}function Kr(e,t,n,r){let i=Gr(e,t,r),a=Gr(e,n,r,i);return e.slice(i,a+1)}function qr(e,t){return Math.round(e.getBoundingClientRect()[t])}function Jr(e){return!Y(e.groupOffsetTree)}function Yr({index:e},t){return t===e?0:t<e?-1:1}function Xr(){return{groupIndices:[],groupOffsetTree:Er(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:Er()}}function Zr(e,t){let n=Y(e)?0:1/0;for(let r of t){let{endIndex:t,size:i,startIndex:a}=r;if(n=Math.min(n,a),Y(e)){e=Tr(e,0,i);continue}let o=Dr(e,a-1,t+1);if(o.some(li(r)))continue;let s=!1,c=!1;for(let{end:n,start:r,value:a}of o)s?(t>=r||i===a)&&(e=Or(e,r)):(c=a!==i,s=!0),n>t&&t>=r&&a!==i&&(e=Tr(e,t+1,a));c&&(e=Tr(e,a,i))}return[e,n]}function Qr(e){return typeof e.groupIndex<`u`}function $r({offset:e},t){return t===e?0:t<e?-1:1}function ei(e,t,n){if(t.length===0)return 0;let{index:r,offset:i,size:a}=Wr(t,e,Yr),o=e-r,s=a*o+(o-1)*n+i;return s>0?s+n:s}function ti(e,t){if(!Jr(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function ni(e,t,n){if(Qr(e))return t.groupIndices[e.groupIndex]+1;let r=ti(e.index===`LAST`?n:e.index,t);return r=Math.max(0,r,Math.min(n,r)),r}function ri(e,t,n,r=0){return r>0&&(t=Math.max(t,Wr(e,r,Yr).offset)),Sr(Kr(e,t,n,$r),ci)}function ii(e,[t,n,r,i]){t.length>0&&r(`received item sizes`,t,rr.DEBUG);let a=e.sizeTree,o=a,s=0;if(n.length>0&&Y(a)&&t.length===2){let e=t[0].size,r=t[1].size;o=n.reduce((t,n)=>Tr(Tr(t,n,e),n+1,r),o)}else [o,s]=Zr(o,t);if(o===a)return e;let{lastIndex:c,lastOffset:l,lastSize:u,offsetTree:d}=si(e.offsetTree,s,o,i);return{groupIndices:n,groupOffsetTree:n.reduce((e,t)=>Tr(e,t,ei(t,d,i)),Er()),lastIndex:c,lastOffset:l,lastSize:u,offsetTree:d,sizeTree:o}}function ai(e){return kr(e).map(({k:e,v:t},n,r)=>{let i=r[n+1];return{endIndex:i===void 0?1/0:i.k-1,size:t,startIndex:e}})}function oi(e,t){let n=0,r=0;for(;n<e;)n+=t[r+1]-t[r]-1,r++;return r-(n===e?0:1)}function si(e,t,n,r){let i=e,a=0,o=0,s=0,c=0;if(t!==0){c=Gr(i,t-1,Yr),s=i[c].offset;let e=wr(n,t-1);a=e[0],o=e[1],i.length&&i[c].size===wr(n,t)[1]&&--c,i=i.slice(0,c+1)}else i=[];for(let{start:e,value:c}of Dr(n,t,1/0)){let t=e-a,n=t*o+s+t*r;i.push({index:e,offset:n,size:c}),a=e,s=n,o=c}return{lastIndex:a,lastOffset:s,lastSize:o,offsetTree:i}}function ci(e){return{index:e.index,value:e}}function li(e){let{endIndex:t,size:n,startIndex:r}=e;return e=>e.start===r&&(e.end===t||e.end===1/0)&&e.value===n}var ui={offsetHeight:`height`,offsetWidth:`width`},di=q(([{log:e},{recalcInProgress:t}])=>{let n=K(),r=K(),i=Zn(r,0),a=K(),o=K(),s=G(0),c=G([]),l=G(void 0),u=G(void 0),d=G(void 0),f=G(void 0),p=G((e,t)=>qr(e,ui[t])),m=G(void 0),h=G(0),g=Xr(),_=Zn(U(n,W(c,e,h),Kn(ii,g),B()),g),v=Zn(U(c,B(),Kn((e,t)=>({current:t,prev:e.current}),{current:[],prev:[]}),H(({prev:e})=>e)),[]);z(U(c,V(e=>e.length>0),W(_,h),H(([e,t,n])=>{let r=e.reduce((e,r,i)=>Tr(e,r,ei(r,t.offsetTree,n)||i),Er());return{...t,groupIndices:e,groupOffsetTree:r}})),_),z(U(r,W(_),V(([e,{lastIndex:t}])=>e<t),H(([e,{lastIndex:t,lastSize:n}])=>[{endIndex:t,size:n,startIndex:e}])),n),z(l,u);let y=Zn(U(l,H(e=>e===void 0)),!0);z(U(u,V(e=>e!==void 0&&Y(R(_).sizeTree)),H(e=>{let t=R(d),n=R(c).length>0;return t!==void 0&&t!==0?n?[{endIndex:0,size:t,startIndex:0},{endIndex:1,size:e,startIndex:1}]:[]:[{endIndex:0,size:e,startIndex:0}]})),n),z(U(f,V(e=>e!==void 0&&e.length>0&&Y(R(_).sizeTree)),H(e=>{let t=[],n=e[0],r=0;for(let i=1;i<e.length;i++){let a=e[i];a!==n&&(t.push({endIndex:i-1,size:n,startIndex:r}),n=a,r=i)}return t.push({endIndex:e.length-1,size:n,startIndex:r}),t})),n),z(U(c,W(d,u),V(([,e,t])=>e!==void 0&&t!==void 0),H(([e,t,n])=>{let r=[];for(let i=0;i<e.length;i++){let a=e[i],o=e[i+1];r.push({startIndex:a,endIndex:a,size:t}),o!==void 0&&r.push({startIndex:a+1,endIndex:o-1,size:n})}return r})),n);let b=Qn(U(n,W(_),Kn(({sizes:e},[t,n])=>({changed:n!==e,sizes:n}),{changed:!1,sizes:g}),H(e=>e.changed)));I(U(s,Kn((e,t)=>({diff:e.prev-t,prev:t}),{diff:0,prev:0}),H(e=>e.diff)),e=>{let{groupIndices:n}=R(_);if(e>0)L(t,!0),L(a,e+oi(e,n));else if(e<0){let t=R(v);t.length>0&&(e-=oi(-e,t)),L(o,e)}}),I(U(s,W(e)),([e,t])=>{e<0&&t("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:s},rr.ERROR)});let x=Qn(a);z(U(a,W(_),H(([e,t])=>{let n=t.groupIndices.length>0,r=[],i=t.lastSize;if(n){let n=Cr(t.sizeTree,0),a=0,o=0;for(;a<e;){let e=t.groupIndices[o],s=t.groupIndices.length===o+1?1/0:t.groupIndices[o+1]-e-1;r.push({endIndex:e,size:n,startIndex:e}),r.push({endIndex:e+1+s-1,size:i,startIndex:e+1}),o++,a+=s+1}let s=kr(t.sizeTree);return a!==e&&s.shift(),s.reduce((t,{k:n,v:r})=>{let i=t.ranges;return t.prevSize!==0&&(i=[...t.ranges,{endIndex:n+e-1,size:t.prevSize,startIndex:t.prevIndex}]),{prevIndex:n+e,prevSize:r,ranges:i}},{prevIndex:e,prevSize:0,ranges:r}).ranges}return kr(t.sizeTree).reduce((t,{k:n,v:r})=>({prevIndex:n+e,prevSize:r,ranges:[...t.ranges,{endIndex:n+e-1,size:t.prevSize,startIndex:t.prevIndex}]}),{prevIndex:0,prevSize:i,ranges:[]}).ranges})),n);let S=Qn(U(o,W(_,h),H(([e,{offsetTree:t},n])=>ei(-e,t,n))));return z(U(o,W(_,h),H(([e,t,n])=>{if(t.groupIndices.length>0){if(Y(t.sizeTree))return t;let r=Er(),i=R(v),a=0,o=0,s=0;for(;a<-e;){s=i[o];let e=i[o+1]-s-1;o++,a+=e+1}if(r=kr(t.sizeTree).reduce((t,{k:n,v:r})=>Tr(t,Math.max(0,n+e),r),r),a!==-e){let n=Cr(t.sizeTree,s);r=Tr(r,0,n);let i=wr(t.sizeTree,-e+1)[1];r=Tr(r,1,i)}return{...t,sizeTree:r,...si(t.offsetTree,0,r,n)}}let r=kr(t.sizeTree).reduce((t,{k:n,v:r})=>Tr(t,Math.max(0,n+e),r),Er());return{...t,sizeTree:r,...si(t.offsetTree,0,r,n)}})),_),{beforeUnshiftWith:x,data:m,defaultItemSize:u,firstItemIndex:s,fixedItemSize:l,fixedGroupSize:d,gap:h,groupIndices:c,heightEstimates:f,itemSize:p,listRefresh:b,shiftWith:o,shiftWithOffset:S,sizeRanges:n,sizes:_,statefulTotalCount:i,totalCount:r,trackItemSizes:y,unshiftWith:a}},F(or,Ur),{singleton:!0});function fi(e){return e.reduce((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e),{groupIndices:[],totalCount:0})}var pi=q(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:r,scrollTop:i}])=>{let a=K(),o=K(),s=Qn(U(a,H(fi)));return z(U(s,H(e=>e.totalCount)),n),z(U(s,H(e=>e.groupIndices)),e),z(U(tr(i,t,r),V(([e,t])=>Jr(t)),H(([e,t,n])=>wr(t.groupOffsetTree,Math.max(e-n,0),`v`)[0]),B(),H(e=>[e])),o),{groupCounts:a,topItemsIndexes:o}},F(di,br)),mi=q(([{log:e}])=>{let t=G(!1),n=Qn(U(t,V(e=>e),B()));return I(t,t=>{t&&R(e)(`props updated`,{},rr.DEBUG)}),{didMount:n,propsReady:t}},F(or),{singleton:!0}),hi=typeof document<`u`&&`scrollBehavior`in document.documentElement.style;function gi(e){let t=typeof e==`number`?{index:e}:e;return t.align||=`start`,(!t.behavior||!hi)&&(t.behavior=`auto`),t.offset===void 0&&(t.offset=0),t}var _i=q(([{gap:e,listRefresh:t,sizes:n,totalCount:r},{fixedFooterHeight:i,fixedHeaderHeight:a,footerHeight:o,headerHeight:s,scrollingInProgress:c,scrollTo:l,smoothScrollTargetReached:u,viewportHeight:d},{log:f}])=>{let p=K(),m=K(),h=G(0),g=null,_=null,v=null;function y(){g!==null&&(g(),g=null),v!==null&&(v(),v=null),_&&=(clearTimeout(_),null),L(c,!1)}return z(U(p,W(n,d,r,h,s,o,f),W(e,a,i),H(([[e,n,r,i,a,o,s,l],d,f,h])=>{let b=gi(e),{align:x,behavior:S,offset:C}=b,ee=i-1,w=ni(b,n,ee),T=ei(w,n.offsetTree,d)+o;x===`end`?(T+=f+wr(n.sizeTree,w)[1]-r+h,w===ee&&(T+=s)):x===`center`?T+=(f+wr(n.sizeTree,w)[1]-r+h)/2:T-=a,C!==void 0&&C!==0&&(T+=C);let E=t=>{y(),t?(l(`retrying to scroll to`,{location:e},rr.DEBUG),L(p,e)):(L(m,!0),l(`list did not change, scroll successful`,{},rr.DEBUG))};if(y(),S===`smooth`){let e=!1;v=I(t,t=>{e||=t}),g=Hn(u,()=>{E(e)})}else g=Hn(U(t,vi(150)),E);return _=setTimeout(()=>{y()},1200),L(c,!0),l(`scrolling from index to`,{behavior:S,index:w,top:T},rr.DEBUG),{behavior:S,top:T}})),l),{scrollTargetReached:m,scrollToIndex:p,topListHeight:h}},F(di,br,or),{singleton:!0});function vi(e){return t=>{let n=setTimeout(()=>{t(!1)},e);return e=>{e&&(t(!0),clearTimeout(n))}}}function yi(e,t){e===0?t():requestAnimationFrame(()=>{yi(e-1,t)})}function bi(e,t){let n=t-1;return typeof e==`number`?e:e.index===`LAST`?n:e.index}var xi=q(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:r},{scrollTargetReached:i,scrollToIndex:a},{didMount:o}])=>{let s=G(!0),c=G(0),l=G(!0);return z(U(o,W(c),V(([e,t])=>t!==0),Gn(!1)),s),z(U(o,W(c),V(([e,t])=>t!==0),Gn(!1)),l),I(U(tr(t,o),W(s,n,e,l),V(([[,e],t,{sizeTree:n},r,i])=>e&&(!Y(n)||In(r))&&!t&&!i),W(c)),([,e])=>{Hn(i,()=>{L(l,!0)}),yi(4,()=>{Hn(r,()=>{L(s,!0)}),L(a,e)})}),{initialItemFinalLocationReached:l,initialTopMostItemIndex:c,scrolledToInitialItem:s}},F(di,br,_i,mi),{singleton:!0});function Si(e,t){return Math.abs(e-t)<1.01}var Ci=`up`,wi=`down`,Ti=`none`,Ei={atBottom:!1,notAtBottomBecause:`NOT_SHOWING_LAST_ITEM`,state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Di=0,Oi=q(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:r,scrollTop:i,viewportHeight:a}])=>{let o=G(!1),s=G(!0),c=K(),l=K(),u=G(4),d=G(Di),f=Zn(U(nr(U(J(i),qn(1),Gn(!0)),U(J(i),qn(1),Gn(!1),Un(100))),B()),!1),p=Zn(U(nr(U(n,Gn(!0)),U(n,Gn(!1),Un(200))),B()),!1);z(U(tr(J(i),J(d)),H(([e,t])=>e<=t),B()),s),z(U(s,Jn(50)),l);let m=Qn(U(tr(r,J(a),J(t),J(e),J(u)),Kn((e,[{scrollHeight:t,scrollTop:n},r,i,a,o])=>{let s=n+r-t>-o,c={scrollHeight:t,scrollTop:n,viewportHeight:r};if(s){let t,r;return n>e.state.scrollTop?(t=`SCROLLED_DOWN`,r=e.state.scrollTop-n):(t=`SIZE_DECREASED`,r=e.state.scrollTop-n||e.scrollTopDelta),{atBottom:!0,atBottomBecause:t,scrollTopDelta:r,state:c}}let l;return l=c.scrollHeight>e.state.scrollHeight?`SIZE_INCREASED`:r<e.state.viewportHeight?`VIEWPORT_HEIGHT_DECREASING`:n<e.state.scrollTop?`SCROLLING_UPWARDS`:`NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM`,{atBottom:!1,notAtBottomBecause:l,state:c}},Ei),B((e,t)=>e!==void 0&&e.atBottom===t.atBottom))),h=Zn(U(r,Kn((e,{scrollHeight:t,scrollTop:n,viewportHeight:r})=>{if(!Si(e.scrollHeight,t)){let i=t-(n+r)<1;return e.scrollTop!==n&&i?{changed:!0,jump:e.scrollTop-n,scrollHeight:t,scrollTop:n}:{changed:!0,jump:0,scrollHeight:t,scrollTop:n}}return{changed:!1,jump:0,scrollHeight:t,scrollTop:n}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),V(e=>e.changed),H(e=>e.jump)),0);z(U(m,H(e=>e.atBottom)),o),z(U(o,Jn(50)),c);let g=G(wi);z(U(r,H(({scrollTop:e})=>e),B(),Kn((e,t)=>R(p)?{direction:e.direction,prevScrollTop:t}:{direction:t<e.prevScrollTop?Ci:wi,prevScrollTop:t},{direction:wi,prevScrollTop:0}),H(e=>e.direction)),g),z(U(r,Jn(50),Gn(Ti)),g);let _=G(0);return z(U(f,V(e=>!e),Gn(0)),_),z(U(i,Jn(100),W(f),V(([e,t])=>t),Kn(([e,t],[n])=>[t,n],[0,0]),H(([e,t])=>t-e)),_),{atBottomState:m,atBottomStateChange:c,atBottomThreshold:u,atTopStateChange:l,atTopThreshold:d,isAtBottom:o,isAtTop:s,isScrolling:f,lastJumpDueToItemResize:h,scrollDirection:g,scrollVelocity:_}},F(br)),ki=`top`,Ai=`bottom`,ji=`none`;function Mi(e,t,n){return typeof e==`number`?n===Ci&&t===ki||n===wi&&t===Ai?e:0:n===Ci?t===ki?e.main:e.reverse:t===Ai?e.main:e.reverse}function Ni(e,t){return typeof e==`number`?e:e[t]??0}var Pi=q(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:r,viewportHeight:i}])=>{let a=K(),o=G(0),s=G(0),c=G(0);return{increaseViewportBy:s,listBoundary:a,overscan:c,topListHeight:o,visibleRange:Zn(U(tr(J(r),J(i),J(n),J(a,Hr),J(c),J(o),J(t),J(e),J(s)),H(([e,t,n,[r,i],a,o,s,c,l])=>{let u=e-c,d=o+s,f=Math.max(n-u,0),p=ji,m=Ni(l,ki),h=Ni(l,Ai);return r-=c,r+=n+s,i+=n+s,i-=c,r>e+d-m&&(p=Ci),i<e-f+t+h&&(p=wi),p===ji?null:[Math.max(u-n-Mi(a,ki,p)-m,0),u-f-s+t+Mi(a,Ai,p)+h]}),V(e=>e!==null),B(Hr)),[0,0])}},F(br),{singleton:!0});function Fi(e,t,n){if(Jr(t)){let r=ti(e,t);return[{index:wr(t.groupOffsetTree,r)[0],offset:0,size:0},{data:n?.[0],index:r,offset:0,size:0}]}return[{data:n?.[0],index:e,offset:0,size:0}]}var Ii={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Li(e,t,n,r,i,a){let{lastIndex:o,lastOffset:s,lastSize:c}=i,l=0,u=0;if(e.length>0){l=e[0].offset;let t=e[e.length-1];u=t.offset+t.size}let d=n-o,f=s+d*c+(d-1)*r,p=l,m=f-u;return{bottom:u,firstItemIndex:a,items:zi(e,i,a),offsetBottom:m,offsetTop:l,top:p,topItems:zi(t,i,a),topListHeight:t.reduce((e,t)=>t.size+e,0),totalCount:n}}function Ri(e,t,n,r,i,a){let o=0;if(n.groupIndices.length>0)for(let t of n.groupIndices){if(t-o>=e)break;o++}let s=e+o,c=bi(t,s);return Li(Array.from({length:s}).map((e,t)=>({data:a[t+c],index:t+c,offset:0,size:0})),[],s,i,n,r)}function zi(e,t,n){if(e.length===0)return[];if(!Jr(t))return e.map(e=>({...e,index:e.index+n,originalIndex:e.index}));let r=e[0].index,i=e[e.length-1].index,a=[],o=Dr(t.groupOffsetTree,r,i),s,c=0;for(let r of e){(!s||s.end<r.index)&&(s=o.shift(),c=t.groupIndices.indexOf(s.start));let e;e=r.index===s.start?{index:c,type:`group`}:{groupIndex:c,index:r.index-(c+1)+n},a.push({...e,data:r.data,offset:r.offset,originalIndex:r.index,size:r.size})}return a}function Bi(e,t){return e===void 0?0:typeof e==`number`?e:e[t]??0}var Vi=q(([{data:e,firstItemIndex:t,gap:n,sizes:r,totalCount:i},a,{listBoundary:o,topListHeight:s,visibleRange:c},{initialTopMostItemIndex:l,scrolledToInitialItem:u},{topListHeight:d},f,{didMount:p},{recalcInProgress:m}])=>{let h=G([]),g=G(0),_=K(),v=G(0);z(a.topItemsIndexes,h);let y=Zn(U(tr(p,m,J(c,Hr),J(i),J(r),J(l),u,J(h),J(t),J(n),J(v),e),V(([e,t,,n,,,,,,,,r])=>{let i=r!==void 0&&r.length!==n;return e&&!t&&!i}),H(([,,[e,t],n,r,i,a,o,s,c,l,u])=>{let d=r,{offsetTree:f,sizeTree:p}=d,m=R(g);if(n===0)return{...Ii,totalCount:n};if(e===0&&t===0)return m===0?{...Ii,totalCount:n}:Ri(m,i,r,s,c,u||[]);if(Y(p))return m>0?null:Li(Fi(bi(i,n),d,u),[],n,c,d,s);let h=[];if(o.length>0){let e=o[0],t=o[o.length-1],n=0;for(let r of Dr(p,e,t)){let i=r.value,a=Math.max(r.start,e),o=Math.min(r.end,t);for(let e=a;e<=o;e++)h.push({data:u?.[e],index:e,offset:n,size:i}),n+=i}}if(!a)return Li([],h,n,c,d,s);let _=o.length>0?o[o.length-1]+1:0,v=ri(f,e,t,_);if(v.length===0)return null;let y=n-1,b=zn([],n=>{for(let r of v){let i=r.value,a=i.offset,o=r.start,s=i.size;if(i.offset<e){o+=Math.floor((e-i.offset+c)/(s+c));let t=o-r.start;a+=t*s+t*c}o<_&&(a+=(_-o)*s,o=_);let l=Math.min(r.end,y);for(let e=o;e<=l&&!(a>=t);e++)n.push({data:u?.[e],index:e,offset:a,size:s}),a+=s+c}}),x=Bi(l,ki),S=Bi(l,Ai);if(b.length>0&&(x>0||S>0)){let e=b[0],t=b[b.length-1];if(x>0&&e.index>_){let t=Math.min(x,e.index-_),n=[],r=e.offset;for(let i=e.index-1;i>=e.index-t;i--){let t=Dr(p,i,i)[0]?.value??e.size;r-=t+c,n.unshift({data:u?.[i],index:i,offset:r,size:t})}b.unshift(...n)}if(S>0&&t.index<y){let e=Math.min(S,y-t.index),n=t.offset+t.size+c;for(let r=t.index+1;r<=t.index+e;r++){let e=Dr(p,r,r)[0]?.value??t.size;b.push({data:u?.[r],index:r,offset:n,size:e}),n+=e+c}}}return Li(b,h,n,c,d,s)}),V(e=>e!==null),B()),Ii);z(U(e,V(In),H(e=>e?.length)),i),z(U(y,H(e=>e.topListHeight)),d),z(d,s),z(U(y,H(e=>[e.top,e.bottom])),o),z(U(y,H(e=>e.items)),_);let b=Qn(U(y,V(({items:e})=>e.length>0),W(i,e),V(([{items:e},t])=>e[e.length-1].originalIndex===t-1),H(([,e,t])=>[e-1,t]),B(Hr),H(([e])=>e))),x=Qn(U(y,Jn(200),V(({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length),H(({items:e})=>e[0].index),B()));return{endReached:b,initialItemCount:g,itemsRendered:_,listState:y,minOverscanItemCount:v,rangeChanged:Qn(U(y,V(({items:e})=>e.length>0),H(({items:e})=>{let t=0,n=e.length-1;for(;e[t].type===`group`&&t<n;)t++;for(;e[n].type===`group`&&n>t;)n--;return{endIndex:e[n].index,startIndex:e[t].index}}),B(Vr))),startReached:x,topItemsIndexes:h,...f}},F(di,pi,Pi,xi,_i,Oi,mi,Ur),{singleton:!0}),Hi=q(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:r},{listState:i}])=>{let a=K(),o=Zn(U(tr(n,e,r,t,i),H(([e,t,n,r,i])=>e+t+n+r+i.offsetBottom+i.bottom)),0);return z(J(o),a),{totalListHeight:o,totalListHeightChanged:a}},F(br,Vi),{singleton:!0}),Ui=q(([{viewportHeight:e},{totalListHeight:t}])=>{let n=G(!1);return{alignToBottom:n,paddingTopAddition:Zn(U(tr(n,e,t),V(([e])=>e),H(([,e,t])=>Math.max(0,e-t)),Jn(0),B()),0)}},F(br,Hi),{singleton:!0}),Wi=q(()=>({context:G(null)})),Gi=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:r,...i},viewportBottom:a,viewportTop:o})=>t<o?{...i,align:n??`start`,...r===void 0?{}:{behavior:r}}:e>a?{...i,align:n??`end`,...r===void 0?{}:{behavior:r}}:null,Ki=q(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:r,fixedHeaderHeight:i,headerHeight:a,scrollingInProgress:o,scrollTop:s,viewportHeight:c},{scrollToIndex:l}])=>{let u=K();return z(U(u,W(t,c,n,a,i,r,s),W(e),H(([[e,t,n,r,i,a,s,c],l])=>{let{calculateViewLocation:u=Gi,done:d,...f}=e,p=ni(e,t,r-1),m=ei(p,t.offsetTree,l)+i+a,h=m+wr(t.sizeTree,p)[1],g=c+a,_=u({itemBottom:h,itemTop:m,locationParams:f,viewportBottom:c+n-s,viewportTop:g});return _===null?d?.():d&&Hn(U(o,V(e=>!e),qn(R(o)?1:2)),d),_}),V(e=>e!==null)),l),{scrollIntoView:u}},F(di,br,_i,Vi,or),{singleton:!0});function qi(e){return e===!1?!1:e===`smooth`?`smooth`:`auto`}var Ji=(e,t)=>typeof e==`function`?qi(e(t)):t&&qi(e),Yi=q(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:r},{atBottomState:i,isAtBottom:a},{scrollToIndex:o},{scrolledToInitialItem:s},{didMount:c,propsReady:l},{log:u},{scrollingInProgress:d},{context:f},{scrollIntoView:p}])=>{let m=G(!1),h=K(),g=null;function _(e){L(o,{align:`end`,behavior:e,index:`LAST`})}I(U(tr(U(J(t),qn(1)),c),W(J(m),a,s,d),H(([[e,t],n,r,i,a])=>{let o=t&&i,s=`auto`;return o&&(s=Ji(n,r||a),o&&=s!==!1),{followOutputBehavior:s,shouldFollow:o,totalCount:e}}),V(({shouldFollow:e})=>e)),({followOutputBehavior:t,totalCount:r})=>{g!==null&&(g(),g=null),R(n)===void 0?g=Hn(e,()=>{R(u)(`following output to `,{totalCount:r},rr.DEBUG),_(t),g=null}):requestAnimationFrame(()=>{R(u)(`following output to `,{totalCount:r},rr.DEBUG),_(t)})});function v(e){let t=Hn(i,t=>{e&&!t.atBottom&&t.notAtBottomBecause===`SIZE_INCREASED`&&g===null&&(R(u)(`scrolling to bottom due to increased size`,{},rr.DEBUG),_(`auto`))});setTimeout(t,100)}I(U(tr(J(m),t,l),V(([e,,t])=>e!==!1&&t),Kn(({value:e},[,t])=>({refreshed:e===t,value:t}),{refreshed:!1,value:0}),V(({refreshed:e})=>e),W(m,t)),([,e])=>{R(s)&&v(e!==!1)}),I(h,()=>{v(R(m)!==!1)}),I(tr(J(m),i),([e,t])=>{e!==!1&&!t.atBottom&&t.notAtBottomBecause===`VIEWPORT_HEIGHT_DECREASING`&&_(`auto`)});let y=G(null),b=K();return z(nr(U(J(r),H(e=>e?.length??0)),U(J(t))),b),I(U(tr(U(b,qn(1)),c),W(J(y),s,d,f),H(([[e,t],n,r,i,a])=>t&&r&&n?.({context:a,totalCount:e,scrollingInProgress:i})),V(e=>!!e),Jn(0)),t=>{g!==null&&(g(),g=null),R(n)===void 0?g=Hn(e,()=>{R(u)(`scrolling into view`,{}),L(p,t),g=null}):requestAnimationFrame(()=>{R(u)(`scrolling into view`,{}),L(p,t)})}),{autoscrollToBottom:h,followOutput:m,scrollIntoViewOnChange:y}},F(di,Oi,_i,xi,mi,or,br,Wi,Ki)),Xi=q(([{data:e,firstItemIndex:t,gap:n,sizes:r},{initialTopMostItemIndex:i},{initialItemCount:a,listState:o},{didMount:s}])=>(z(U(s,W(a),V(([,e])=>e!==0),W(i,r,t,n,e),H(([[,e],t,n,r,i,a=[]])=>Ri(e,t,n,r,i,a))),o),{}),F(di,xi,Vi,mi),{singleton:!0}),Zi=q(([{didMount:e},{scrollTo:t},{listState:n}])=>{let r=G(0);return I(U(e,W(r),V(([,e])=>e!==0),H(([,e])=>({top:e}))),e=>{Hn(U(n,qn(1),V(e=>e.items.length>1)),()=>{requestAnimationFrame(()=>{L(t,e)})})}),{initialScrollTop:r}},F(mi,br,Vi),{singleton:!0}),Qi=q(([{scrollVelocity:e}])=>{let t=G(!1),n=K(),r=G(!1);return z(U(e,W(r,t,n),V(([e,t])=>t!==!1&&t!==void 0),H(([e,t,n,r])=>{let{enter:i,exit:a}=t;if(n){if(a(e,r))return!1}else if(i(e,r))return!0;return n}),B()),t),I(U(tr(t,e,n),W(r)),([[e,t,n],r])=>{e&&r!==!1&&r!==void 0&&r.change&&r.change(t,n)}),{isSeeking:t,scrollSeekConfiguration:r,scrollSeekRangeChanged:n,scrollVelocity:e}},F(Oi),{singleton:!0}),$i=q(([{scrollContainerState:e,scrollTo:t}])=>{let n=K(),r=K(),i=K(),a=G(!1),o=G(void 0);return z(U(tr(n,r),H(([{scrollTop:e,viewportHeight:t},{offsetTop:n,listHeight:r}])=>({scrollHeight:r,scrollTop:Math.max(0,e-n),viewportHeight:t}))),e),z(U(t,W(r),H(([e,{offsetTop:t}])=>({...e,top:e.top+t}))),i),{customScrollParent:o,useWindowScroll:a,windowScrollContainerState:n,windowScrollTo:i,windowViewportRect:r}},F(br)),ea=q(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:r},{initialTopMostItemIndex:i},{didMount:a},{useWindowScroll:o,windowScrollContainerState:s,windowViewportRect:c}])=>{let l=K(),u=G(void 0),d=G(null),f=G(null);return z(s,d),z(c,f),I(U(l,W(t,r,o,d,f,n)),([e,t,n,r,i,a,o])=>{let s=ai(t.sizeTree);r&&i!==null&&a!==null&&(n=i.scrollTop-a.offsetTop),n-=o,e({ranges:s,scrollTop:n})}),z(U(u,V(In),H(ta)),i),z(U(a,W(u),V(([,e])=>e!==void 0),B(),H(([,e])=>e.ranges)),e),{getState:l,restoreStateFrom:u}},F(di,br,xi,mi,$i));function ta(e){return{align:`start`,index:0,offset:e.scrollTop}}var na=q(([{topItemsIndexes:e}])=>{let t=G(0);return z(U(t,V(e=>e>=0),H(e=>Array.from({length:e}).map((e,t)=>t))),e),{topItemCount:t}},F(Vi));function ra(e){let t=!1,n;return(()=>(t||(t=!0,n=e()),n))}var ia=ra(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),aa=q(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:r,fixedGroupSize:i,gap:a,groupIndices:o,heightEstimates:s,itemSize:c,sizeRanges:l,sizes:u,statefulTotalCount:d,totalCount:f,trackItemSizes:p},{initialItemFinalLocationReached:m,initialTopMostItemIndex:h,scrolledToInitialItem:g},_,v,y,b,{scrollToIndex:x},S,{topItemCount:C},{groupCounts:ee},w])=>{let{listState:T,minOverscanItemCount:E,topItemsIndexes:te,rangeChanged:ne,...re}=b;return z(ne,w.scrollSeekRangeChanged),z(U(w.windowViewportRect,H(e=>e.visibleHeight)),_.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:r,fixedGroupHeight:i,gap:a,groupCounts:ee,heightEstimates:s,initialItemFinalLocationReached:m,initialTopMostItemIndex:h,scrolledToInitialItem:g,sizeRanges:l,topItemCount:C,topItemsIndexes:te,totalCount:f,...y,groupIndices:o,itemSize:c,listState:T,minOverscanItemCount:E,scrollToIndex:x,statefulTotalCount:d,trackItemSizes:p,rangeChanged:ne,...re,...w,..._,sizes:u,...v}},F(di,xi,br,ea,Yi,Vi,_i,q(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:r},{isAtBottom:i,isScrolling:a,lastJumpDueToItemResize:o,scrollDirection:s},{listState:c},{beforeUnshiftWith:l,gap:u,shiftWithOffset:d,sizes:f},{log:p},{recalcInProgress:m}])=>{let h=Qn(U(c,W(o),Kn(([,e,t,n],[{bottom:r,items:i,offsetBottom:a,totalCount:o},s])=>{let c=r+a,l=0;return t===o&&e.length>0&&i.length>0&&(i[0].originalIndex===0&&e[0].originalIndex===0||(l=c-n,l!==0&&(l+=s))),[l,i,o,c]},[0,[],0,0]),V(([e])=>e!==0),W(r,s,n,i,p,m),V(([,e,t,n,,,r])=>!r&&!n&&e!==0&&t===Ci),H(([[e],,,,,t])=>(t(`Upward scrolling compensation`,{amount:e},rr.DEBUG),e))));function g(n){n>0?(L(t,{behavior:`auto`,top:-n}),L(e,0)):(L(e,0),L(t,{behavior:`auto`,top:-n}))}return I(U(h,W(e,a)),([t,n,r])=>{r&&ia()?L(e,n-t):g(-t)}),I(U(tr(Zn(a,!1),e,m),V(([e,t,n])=>!e&&!n&&t!==0),H(([e,t])=>t),Jn(1)),g),z(U(d,H(e=>({top:-e}))),t),I(U(l,W(f,u),H(([e,{groupIndices:t,lastSize:n,sizeTree:r},i])=>{function a(e){return e*(n+i)}if(t.length===0)return a(e);let o=0,s=Cr(r,0),c=0,l=0;for(;c<e;){c++,o+=s;let n=t.length===l+1?1/0:t[l+1]-t[l]-1;c+n>e&&(o-=s,n=e-c+1),c+=n,o+=a(n),l++}return o})),n=>{L(e,n),requestAnimationFrame(()=>{L(t,{top:n}),requestAnimationFrame(()=>{L(e,0),L(m,!1)})})}),{deviation:e}},F(br,Oi,Vi,di,or,Ur)),na,pi,q(([e,t,n,r,i,a,o,s,c,l,u])=>({...e,...t,...n,...r,...i,...a,...o,...s,...c,...l,...u}),F(Pi,Xi,mi,Qi,Hi,Zi,Ui,$i,Ki,or,Wi))));function oa(e,t){let n={},r={},i=0,a=e.length;for(;i<a;)r[e[i]]=1,i+=1;for(let e in t)Object.hasOwn(r,e)||(n[e]=t[e]);return n}var sa=typeof document<`u`?N.useLayoutEffect:N.useEffect;function ca(e,t,n){let r=Object.keys(t.required||{}),i=Object.keys(t.optional||{}),a=Object.keys(t.methods||{}),o=Object.keys(t.events||{}),s=N.createContext({});function c(e,n){e.propsReady!==void 0&&L(e.propsReady,!1);for(let i of r){let r=e[t.required[i]];L(r,n[i])}for(let r of i)if(r in n){let i=e[t.optional[r]];L(i,n[r])}e.propsReady!==void 0&&L(e.propsReady,!0)}function l(e){return a.reduce((n,r)=>(n[r]=n=>{let i=e[t.methods[r]];L(i,n)},n),{})}function u(e){return o.reduce((n,r)=>(n[r]=Xn(e[t.events[r]]),n),{})}return{Component:N.forwardRef(function(t,a){let{children:d,...f}=t,[p]=N.useState(()=>zn(er(e),e=>{c(e,f)})),[m]=N.useState(Pn(u,p));sa(()=>{for(let e of o)e in f&&I(m[e],f[e]);return()=>{Object.values(m).map(Vn)}},[f,m,p]),sa(()=>{c(p,f)}),N.useImperativeHandle(a,jn(l(p)));let h=n;return(0,P.jsx)(s.Provider,{value:p,children:n===void 0?d:(0,P.jsx)(h,{...oa([...r,...i,...o],f),children:d})})}),useEmitter:(e,t)=>{let n=N.useContext(s)[e];sa(()=>I(n,t),[t,n])},useEmitterValue:e=>{let t=N.useContext(s)[e],n=N.useCallback(e=>I(t,e),[t]);return N.useSyncExternalStore(n,()=>R(t),()=>R(t))},usePublisher:e=>{let t=N.useContext(s);return N.useCallback(n=>{L(t[e],n)},[t,e])}}}var la=N.createContext(void 0),ua=N.createContext(void 0),da=`-webkit-sticky`,fa=`sticky`,pa=ra(()=>{if(typeof document>`u`)return fa;let e=document.createElement(`div`);return e.style.position=da,e.style.position===da?da:fa}),ma=typeof document<`u`?N.useLayoutEffect:N.useEffect;function ha(e){return`self`in e}function ga(e){return`body`in e}function _a(e,t,n,r=Rn,i,a){let o=N.useRef(null),s=N.useRef(null),c=N.useRef(null),l=N.useCallback(n=>{let r,i,o,l=n.target;if(ga(l)||ha(l)){let e=ha(l)?l:l.defaultView;o=a===!0?fr(e,e.scrollX):e.scrollY,r=a===!0?e.document.documentElement.scrollWidth:e.document.documentElement.scrollHeight,i=a===!0?e.innerWidth:e.innerHeight}else o=a===!0?fr(l,l.scrollLeft):l.scrollTop,r=a===!0?l.scrollWidth:l.scrollHeight,i=a===!0?l.offsetWidth:l.offsetHeight;let u=()=>{e({scrollHeight:r,scrollTop:Math.max(o,0),viewportHeight:i})};n.suppressFlushSync===!0?u():gn.flushSync(u),s.current!==null&&(o===s.current||o<=0||o===r-i)&&(s.current=null,t(!0),c.current&&=(clearTimeout(c.current),null))},[e,t,a]);N.useEffect(()=>{let e=i||o.current;return ur(e),r(i||o.current),l({suppressFlushSync:!0,target:e}),e.addEventListener(`scroll`,l,{passive:!0}),()=>{ur(e),r(null),e.removeEventListener(`scroll`,l)}},[o,l,n,r,i]);function u(n){let r=o.current;if(!r||(a===!0?`offsetWidth`in r&&r.offsetWidth===0:`offsetHeight`in r&&r.offsetHeight===0))return;let i=n.behavior===`smooth`,l,u,d;ha(r)?(u=Math.max(qr(r.document.documentElement,a===!0?`width`:`height`),a===!0?r.document.documentElement.scrollWidth:r.document.documentElement.scrollHeight),l=a===!0?r.innerWidth:r.innerHeight,d=a===!0?fr(r,r.scrollX):r.scrollY):(u=r[a===!0?`scrollWidth`:`scrollHeight`],l=qr(r,a===!0?`width`:`height`),d=a===!0?fr(r,r.scrollLeft):r.scrollTop);let f=u-l;if(n.top===void 0){r.scrollTo(n);return}let p=Math.ceil(Math.max(Math.min(f,n.top),0));if(n.top=p,Si(l,u)||p===d){e({scrollHeight:u,scrollTop:d,viewportHeight:l}),i&&t(!0);return}i?(s.current=p,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,s.current=null,t(!0)},1e3)):s.current=null,a===!0&&(n={...n.behavior===void 0?{}:{behavior:n.behavior},left:pr(r,p)}),r.scrollTo(n)}function d(e){a===!0&&(e={...e.behavior===void 0?{}:{behavior:e.behavior},...e.top===void 0?{}:{left:pr(o.current,e.top)}}),o.current.scrollBy(e)}return{scrollByCallback:d,scrollerRef:o,scrollToCallback:u}}function va(e){return e}var ya=q(([e,t])=>({...e,...t}),F(aa,q(()=>{let e=G(e=>`Item ${e}`),t=G(e=>`Group ${e}`),n=G({}),r=G(va),i=G(`div`),a=G(Rn),o=(e,t=null)=>Zn(U(n,H(t=>t[e]),B()),t);return{components:n,computeItemKey:r,EmptyPlaceholder:o(`EmptyPlaceholder`),FooterComponent:o(`Footer`),GroupComponent:o(`Group`,`div`),groupContent:t,HeaderComponent:o(`Header`),HeaderFooterTag:i,ItemComponent:o(`Item`,`div`),itemContent:e,ListComponent:o(`List`,`div`),ScrollerComponent:o(`Scroller`,`div`),scrollerRef:a,ScrollSeekPlaceholder:o(`ScrollSeekPlaceholder`),TopItemListComponent:o(`TopItemList`)}}))),ba=({height:e})=>(0,P.jsx)(`div`,{style:{height:e}}),xa={overflowAnchor:`none`,position:pa(),zIndex:1},Sa={overflowAnchor:`none`},Ca={...Sa,display:`inline-block`,height:`100%`},wa=N.memo(function({showTopList:e=!1}){let t=Z(`listState`),n=Ba(`sizeRanges`),r=Z(`useWindowScroll`),i=Z(`customScrollParent`),a=Ba(`windowScrollContainerState`),o=Ba(`scrollContainerState`),s=i||r?a:o,c=Z(`itemContent`),l=Z(`context`),u=Z(`groupContent`),d=Z(`trackItemSizes`),f=Z(`itemSize`),p=Z(`log`),m=Ba(`gap`),h=Z(`horizontalDirection`),{callbackRef:g}=gr(n,f,d,e?Rn:s,p,m,i,h,Z(`skipAnimationFrameInResizeObserver`)),[_,v]=N.useState(0);za(`deviation`,e=>{_!==e&&v(e)});let y=Z(`EmptyPlaceholder`),b=Z(`ScrollSeekPlaceholder`)??ba,x=Z(`ListComponent`),S=Z(`ItemComponent`),C=Z(`GroupComponent`),ee=Z(`computeItemKey`),w=Z(`isSeeking`),T=Z(`groupIndices`).length>0,E=Z(`alignToBottom`),te=Z(`initialItemFinalLocationReached`),ne=e?{}:{boxSizing:`border-box`,...h?{display:`inline-block`,height:`100%`,marginInlineStart:_===0?E?`auto`:0:_,paddingInlineEnd:t.offsetBottom,paddingInlineStart:t.offsetTop,whiteSpace:`nowrap`}:{marginTop:_===0?E?`auto`:0:_,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...te?{}:{visibility:`hidden`}};return!e&&t.totalCount===0&&y!=null?(0,P.jsx)(y,{...X(y,l)}):(0,P.jsx)(x,{...X(x,l),"data-testid":e?`virtuoso-top-item-list`:`virtuoso-item-list`,ref:g,style:ne,children:(e?t.topItems:t.items).map(e=>{let n=e.originalIndex,r=ee(n+t.firstItemIndex,e.data,l);return w?(0,N.createElement)(b,{...X(b,l),height:e.size,index:e.index,key:r,type:e.type||`item`,...e.type===`group`?{}:{groupIndex:e.groupIndex}}):e.type===`group`?(0,N.createElement)(C,{...X(C,l),"data-index":n,"data-item-index":e.index,"data-known-size":e.size,key:r,style:xa},u(e.index,l)):(0,N.createElement)(S,{...X(S,l),...Aa(S,e.data),"data-index":n,"data-item-group-index":e.groupIndex,"data-item-index":e.index,"data-known-size":e.size,key:r,style:h?Ca:Sa},T?c(e.index,e.groupIndex,e.data,l):c(e.index,e.data,l))})})}),Ta={height:`100%`,outline:`none`,overflowY:`auto`,position:`relative`,WebkitOverflowScrolling:`touch`},Ea={outline:`none`,overflowX:`auto`,position:`relative`},Da=e=>({height:`100%`,position:`absolute`,top:0,width:`100%`,...e?{display:`flex`,flexDirection:`column`}:void 0}),Oa=(e,t,n=0)=>({...Da(e),position:t?`relative`:`absolute`,top:t?-n:0}),ka={position:pa(),top:0,width:`100%`,zIndex:1};function X(e,t){if(typeof e!=`string`)return{context:t}}function Aa(e,t){return{item:typeof e==`string`?void 0:t}}var ja=N.memo(function(){let e=Z(`HeaderComponent`),t=Ba(`headerHeight`),n=Z(`HeaderFooterTag`),r=mr(N.useMemo(()=>e=>{t(qr(e,`height`))},[t]),!0,Z(`skipAnimationFrameInResizeObserver`)),i=Z(`context`);return e==null?null:(0,P.jsx)(n,{ref:r,children:(0,P.jsx)(e,{...X(e,i)})})}),Ma=N.memo(function(){let e=Z(`FooterComponent`),t=Ba(`footerHeight`),n=Z(`HeaderFooterTag`),r=mr(N.useMemo(()=>e=>{t(qr(e,`height`))},[t]),!0,Z(`skipAnimationFrameInResizeObserver`)),i=Z(`context`);return e==null?null:(0,P.jsx)(n,{ref:r,children:(0,P.jsx)(e,{...X(e,i)})})});function Na({useEmitter:e,useEmitterValue:t,usePublisher:n}){return N.memo(function({children:r,style:i,context:a,...o}){let s=n(`scrollContainerState`),c=t(`ScrollerComponent`),l=n(`smoothScrollTargetReached`),u=t(`scrollerRef`),d=t(`horizontalDirection`)||!1,{scrollByCallback:f,scrollerRef:p,scrollToCallback:m}=_a(s,l,c,u,void 0,d);return e(`scrollTo`,m),e(`scrollBy`,f),(0,P.jsx)(c,{"data-testid":`virtuoso-scroller`,"data-virtuoso-scroller":!0,ref:p,style:{...d?Ea:Ta,...i},tabIndex:0,...o,...X(c,a),children:r})})}function Pa({useEmitter:e,useEmitterValue:t,usePublisher:n}){return N.memo(function({children:r,style:i,context:a,...o}){let s=n(`windowScrollContainerState`),c=t(`ScrollerComponent`),l=n(`smoothScrollTargetReached`),u=t(`totalListHeight`),d=t(`deviation`),f=t(`customScrollParent`),p=N.useRef(null),{scrollByCallback:m,scrollerRef:h,scrollToCallback:g}=_a(s,l,c,t(`scrollerRef`),f);return ma(()=>(h.current=f||p.current?.ownerDocument.defaultView,()=>{h.current=null}),[h,f]),e(`windowScrollTo`,g),e(`scrollBy`,m),(0,P.jsx)(c,{ref:p,"data-virtuoso-scroller":!0,style:{position:`relative`,...i,...u===0?void 0:{height:u+d}},...o,...X(c,a),children:r})})}var Fa=({children:e})=>{let t=N.useContext(la),n=Ba(`viewportHeight`),r=Ba(`fixedItemHeight`),i=Z(`alignToBottom`),a=Z(`horizontalDirection`),o=mr(N.useMemo(()=>Nn(n,e=>qr(e,a?`width`:`height`)),[n,a]),!0,Z(`skipAnimationFrameInResizeObserver`));return N.useEffect(()=>{t&&(n(t.viewportHeight),r(t.itemHeight))},[t,n,r]),(0,P.jsx)(`div`,{"data-viewport-type":`element`,ref:o,style:Da(i),children:e})},Ia=({children:e})=>{let t=N.useContext(la),n=Ba(`windowViewportRect`),r=Ba(`fixedItemHeight`),i=Z(`customScrollParent`),a=Z(`useWindowScroll`),o=Z(`topListHeight`),s=yr(n,i,Z(`skipAnimationFrameInResizeObserver`)),c=Z(`alignToBottom`);return N.useEffect(()=>{t&&(r(t.itemHeight),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,r]),(0,P.jsx)(`div`,{"data-viewport-type":`window`,ref:s,style:Oa(c,a,o),children:e})},La=({children:e})=>{let t=Z(`TopItemListComponent`)??`div`,n=Z(`headerHeight`);return(0,P.jsx)(t,{style:{...ka,marginTop:`${n}px`},...X(t,Z(`context`)),children:e})},{Component:Ra,useEmitter:za,useEmitterValue:Z,usePublisher:Ba}=ca(ya,{optional:{restoreStateFrom:`restoreStateFrom`,context:`context`,followOutput:`followOutput`,scrollIntoViewOnChange:`scrollIntoViewOnChange`,itemContent:`itemContent`,groupContent:`groupContent`,overscan:`overscan`,increaseViewportBy:`increaseViewportBy`,minOverscanItemCount:`minOverscanItemCount`,totalCount:`totalCount`,groupCounts:`groupCounts`,topItemCount:`topItemCount`,firstItemIndex:`firstItemIndex`,initialTopMostItemIndex:`initialTopMostItemIndex`,components:`components`,atBottomThreshold:`atBottomThreshold`,atTopThreshold:`atTopThreshold`,computeItemKey:`computeItemKey`,defaultItemHeight:`defaultItemHeight`,fixedGroupHeight:`fixedGroupHeight`,fixedItemHeight:`fixedItemHeight`,heightEstimates:`heightEstimates`,itemSize:`itemSize`,scrollSeekConfiguration:`scrollSeekConfiguration`,headerFooterTag:`HeaderFooterTag`,data:`data`,initialItemCount:`initialItemCount`,initialScrollTop:`initialScrollTop`,alignToBottom:`alignToBottom`,useWindowScroll:`useWindowScroll`,customScrollParent:`customScrollParent`,scrollerRef:`scrollerRef`,logLevel:`logLevel`,horizontalDirection:`horizontalDirection`,skipAnimationFrameInResizeObserver:`skipAnimationFrameInResizeObserver`},methods:{scrollToIndex:`scrollToIndex`,scrollIntoView:`scrollIntoView`,scrollTo:`scrollTo`,scrollBy:`scrollBy`,autoscrollToBottom:`autoscrollToBottom`,getState:`getState`},events:{isScrolling:`isScrolling`,endReached:`endReached`,startReached:`startReached`,rangeChanged:`rangeChanged`,atBottomStateChange:`atBottomStateChange`,atTopStateChange:`atTopStateChange`,totalListHeightChanged:`totalListHeightChanged`,itemsRendered:`itemsRendered`,groupIndices:`groupIndices`}},N.memo(function(e){let t=Z(`useWindowScroll`),n=Z(`topItemsIndexes`).length>0,r=Z(`customScrollParent`),i=Z(`context`);return(0,P.jsxs)(r||t?Ha:Va,{...e,context:i,children:[n&&(0,P.jsx)(La,{children:(0,P.jsx)(wa,{showTopList:!0})}),(0,P.jsxs)(r||t?Ia:Fa,{children:[(0,P.jsx)(ja,{}),(0,P.jsx)(wa,{}),(0,P.jsx)(Ma,{})]})]})})),Va=Na({useEmitter:za,useEmitterValue:Z,usePublisher:Ba}),Ha=Pa({useEmitter:za,useEmitterValue:Z,usePublisher:Ba}),Ua=Ra,Wa=q(([e,t])=>({...e,...t}),F(aa,q(()=>{let e=G(e=>(0,P.jsxs)(`td`,{children:[`Item $`,e]})),t=G(null),n=G(e=>(0,P.jsxs)(`td`,{colSpan:1e3,children:[`Group `,e]})),r=G(null),i=G(null),a=G({}),o=G(va),s=G(Rn),c=(e,t=null)=>Zn(U(a,H(t=>t[e]),B()),t);return{components:a,computeItemKey:o,context:t,EmptyPlaceholder:c(`EmptyPlaceholder`),FillerRow:c(`FillerRow`),fixedFooterContent:i,fixedHeaderContent:r,itemContent:e,groupContent:n,ScrollerComponent:c(`Scroller`,`div`),scrollerRef:s,ScrollSeekPlaceholder:c(`ScrollSeekPlaceholder`),TableBodyComponent:c(`TableBody`,`tbody`),TableComponent:c(`Table`,`table`),TableFooterComponent:c(`TableFoot`,`tfoot`),TableHeadComponent:c(`TableHead`,`thead`),TableRowComponent:c(`TableRow`,`tr`),GroupComponent:c(`Group`,`tr`)}}))),Ga=({height:e})=>(0,P.jsx)(`tr`,{children:(0,P.jsx)(`td`,{style:{height:e}})}),Ka=({height:e})=>(0,P.jsx)(`tr`,{children:(0,P.jsx)(`td`,{style:{border:0,height:e,padding:0}})}),qa={overflowAnchor:`none`},Ja={position:pa(),zIndex:2,overflowAnchor:`none`},Ya=N.memo(function({showTopList:e=!1}){let t=Q(`listState`),n=Q(`computeItemKey`),r=Q(`firstItemIndex`),i=Q(`context`),a=Q(`isSeeking`),o=Q(`fixedHeaderHeight`),s=Q(`groupIndices`).length>0,c=Q(`itemContent`),l=Q(`groupContent`),u=Q(`ScrollSeekPlaceholder`)??Ga,d=Q(`GroupComponent`),f=Q(`TableRowComponent`),p=(e?t.topItems:[]).reduce((e,t,n)=>(n===0?e.push(t.size):e.push(e[n-1]+t.size),e),[]);return(e?t.topItems:t.items).map(t=>{let m=t.originalIndex,h=n(m+r,t.data,i),g=e?m===0?0:p[m-1]:0;return a?(0,N.createElement)(u,{...X(u,i),height:t.size,index:t.index,key:h,type:t.type||`item`}):t.type===`group`?(0,N.createElement)(d,{...X(d,i),"data-index":m,"data-item-index":t.index,"data-known-size":t.size,key:h,style:{...Ja,top:o}},l(t.index,i)):(0,N.createElement)(f,{...X(f,i),...Aa(f,t.data),"data-index":m,"data-item-index":t.index,"data-known-size":t.size,"data-item-group-index":t.groupIndex,key:h,style:e?{...Ja,top:o+g}:qa},s?c(t.index,t.groupIndex,t.data,i):c(t.index,t.data,i))})}),Xa=N.memo(function(){let e=Q(`listState`),t=Q(`topItemsIndexes`).length>0,n=to(`sizeRanges`),r=Q(`useWindowScroll`),i=Q(`customScrollParent`),a=to(`windowScrollContainerState`),o=to(`scrollContainerState`),s=i||r?a:o,c=Q(`trackItemSizes`),{callbackRef:l,ref:u}=gr(n,Q(`itemSize`),c,s,Q(`log`),void 0,i,!1,Q(`skipAnimationFrameInResizeObserver`)),[d,f]=N.useState(0);eo(`deviation`,e=>{d!==e&&(u.current.style.marginTop=`${e}px`,f(e))});let p=Q(`EmptyPlaceholder`),m=Q(`FillerRow`)??Ka,h=Q(`TableBodyComponent`),g=Q(`paddingTopAddition`),_=Q(`statefulTotalCount`),v=Q(`context`);if(_===0&&p!=null)return(0,P.jsx)(p,{...X(p,v)});let y=(t?e.topItems:[]).reduce((e,t)=>e+t.size,0),b=e.offsetTop+g+d-y,x=e.offsetBottom,S=b>0?(0,P.jsx)(m,{context:v,height:b},`padding-top`):null,C=x>0?(0,P.jsx)(m,{context:v,height:x},`padding-bottom`):null;return(0,P.jsxs)(h,{"data-testid":`virtuoso-item-list`,ref:l,...X(h,v),children:[S,t&&(0,P.jsx)(Ya,{showTopList:!0}),(0,P.jsx)(Ya,{}),C]})}),Za=({children:e})=>{let t=N.useContext(la),n=to(`viewportHeight`),r=to(`fixedItemHeight`),i=mr(N.useMemo(()=>Nn(n,e=>qr(e,`height`)),[n]),!0,Q(`skipAnimationFrameInResizeObserver`));return N.useEffect(()=>{t&&(n(t.viewportHeight),r(t.itemHeight))},[t,n,r]),(0,P.jsx)(`div`,{"data-viewport-type":`element`,ref:i,style:Da(!1),children:e})},Qa=({children:e})=>{let t=N.useContext(la),n=to(`windowViewportRect`),r=to(`fixedItemHeight`),i=Q(`customScrollParent`),a=Q(`useWindowScroll`),o=yr(n,i,Q(`skipAnimationFrameInResizeObserver`));return N.useEffect(()=>{t&&(r(t.itemHeight),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,r]),(0,P.jsx)(`div`,{"data-viewport-type":`window`,ref:o,style:Oa(!1,a),children:e})},{Component:$a,useEmitter:eo,useEmitterValue:Q,usePublisher:to}=ca(Wa,{optional:{restoreStateFrom:`restoreStateFrom`,context:`context`,followOutput:`followOutput`,firstItemIndex:`firstItemIndex`,itemContent:`itemContent`,groupContent:`groupContent`,fixedHeaderContent:`fixedHeaderContent`,fixedFooterContent:`fixedFooterContent`,overscan:`overscan`,increaseViewportBy:`increaseViewportBy`,minOverscanItemCount:`minOverscanItemCount`,totalCount:`totalCount`,topItemCount:`topItemCount`,initialTopMostItemIndex:`initialTopMostItemIndex`,components:`components`,groupCounts:`groupCounts`,atBottomThreshold:`atBottomThreshold`,atTopThreshold:`atTopThreshold`,computeItemKey:`computeItemKey`,defaultItemHeight:`defaultItemHeight`,fixedGroupHeight:`fixedGroupHeight`,fixedItemHeight:`fixedItemHeight`,itemSize:`itemSize`,scrollSeekConfiguration:`scrollSeekConfiguration`,data:`data`,initialItemCount:`initialItemCount`,initialScrollTop:`initialScrollTop`,alignToBottom:`alignToBottom`,useWindowScroll:`useWindowScroll`,customScrollParent:`customScrollParent`,scrollerRef:`scrollerRef`,logLevel:`logLevel`},methods:{scrollToIndex:`scrollToIndex`,scrollIntoView:`scrollIntoView`,scrollTo:`scrollTo`,scrollBy:`scrollBy`,getState:`getState`},events:{isScrolling:`isScrolling`,endReached:`endReached`,startReached:`startReached`,rangeChanged:`rangeChanged`,atBottomStateChange:`atBottomStateChange`,atTopStateChange:`atTopStateChange`,totalListHeightChanged:`totalListHeightChanged`,itemsRendered:`itemsRendered`,groupIndices:`groupIndices`}},N.memo(function(e){let t=Q(`useWindowScroll`),n=Q(`customScrollParent`),r=to(`fixedHeaderHeight`),i=to(`fixedFooterHeight`),a=Q(`fixedHeaderContent`),o=Q(`fixedFooterContent`),s=Q(`context`),c=mr(N.useMemo(()=>Nn(r,e=>qr(e,`height`)),[r]),!0,Q(`skipAnimationFrameInResizeObserver`)),l=mr(N.useMemo(()=>Nn(i,e=>qr(e,`height`)),[i]),!0,Q(`skipAnimationFrameInResizeObserver`)),u=n||t?ro:no,d=n||t?Qa:Za,f=Q(`TableComponent`),p=Q(`TableHeadComponent`),m=Q(`TableFooterComponent`),h=a?(0,P.jsx)(p,{ref:c,style:{position:`sticky`,top:0,zIndex:2},...X(p,s),children:a()},`TableHead`):null,g=o?(0,P.jsx)(m,{ref:l,style:{bottom:0,position:`sticky`,zIndex:1},...X(m,s),children:o()},`TableFoot`):null;return(0,P.jsx)(u,{...e,...X(u,s),children:(0,P.jsx)(d,{children:(0,P.jsxs)(f,{style:{borderSpacing:0,overflowAnchor:`none`},...X(f,s),children:[h,(0,P.jsx)(Xa,{},`TableBody`),g]})})})})),no=Na({useEmitter:eo,useEmitterValue:Q,usePublisher:to}),ro=Pa({useEmitter:eo,useEmitterValue:Q,usePublisher:to}),io={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},ao={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:oo,floor:so,max:co,min:lo,round:uo}=Math;function fo(e,t,n){return Array.from({length:t-e+1}).map((t,r)=>({data:n===null?null:n[r+e],index:r+e}))}function po(e){return{...ao,items:e}}function mo(e,t){return e!==void 0&&e.width===t.width&&e.height===t.height}function ho(e,t){return e!==void 0&&e.column===t.column&&e.row===t.row}var go=q(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:r},{footerHeight:i,headerHeight:a,scrollBy:o,scrollContainerState:s,scrollTo:c,scrollTop:l,smoothScrollTargetReached:u,viewportHeight:d},f,p,{didMount:m,propsReady:h},{customScrollParent:g,useWindowScroll:_,windowScrollContainerState:v,windowScrollTo:y,windowViewportRect:b},x])=>{let S=G(0),C=G(0),ee=G(io),w=G({height:0,width:0}),T=G({height:0,width:0}),E=K(),te=K(),ne=G(0),re=G(null),D=G({column:0,row:0}),ie=K(),ae=K(),oe=G(!1),se=G(0),ce=G(!0),le=G(!1),ue=G(!1);I(U(m,W(se),V(([e,t])=>t!==0)),()=>{L(ce,!1)}),I(U(tr(m,ce,T,w,se,le),V(([e,t,n,r,,i])=>e&&!t&&n.height!==0&&r.height!==0&&!i)),([,,,,e])=>{L(le,!0),yi(1,()=>{L(E,e)}),Hn(U(l),()=>{L(t,[0,0]),L(ce,!0)})}),z(U(ae,V(e=>e!=null&&e.scrollTop>0),Gn(0)),C),I(U(m,W(ae),V(([,e])=>e!=null)),([,e])=>{e&&(L(w,e.viewport),L(T,e.item),L(D,e.gap),e.scrollTop>0&&(L(oe,!0),Hn(U(l,qn(1)),e=>{L(oe,!1)}),L(c,{top:e.scrollTop})))}),z(U(w,H(({height:e})=>e)),d),z(U(tr(J(w,mo),J(T,mo),J(D,(e,t)=>e!==void 0&&e.column===t.column&&e.row===t.row),J(l)),H(([e,t,n,r])=>({gap:n,item:t,scrollTop:r,viewport:e}))),ie),z(U(tr(J(S),r,J(D,ho),J(T,mo),J(w,mo),J(re),J(C),J(oe),J(ce),J(se)),V(([,,,,,,,e])=>!e),H(([e,[t,n],r,i,a,o,s,,c,l])=>{let{column:u,row:d}=r,{height:f,width:p}=i,{width:m}=a;if(s===0&&(e===0||m===0))return io;if(p===0){let t=bi(l,e);return po(fo(t,t+Math.max(s-1,0),o))}let h=_o(m,p,u),g,_;c?t===0&&n===0&&s>0?(g=0,_=s-1):(g=h*so((t+d)/(f+d)),_=h*oo((n+d)/(f+d))-1,_=lo(e-1,co(_,h-1)),g=lo(_,co(0,g))):(g=0,_=-1);let v=fo(g,_,o),{bottom:y,top:b}=vo(a,r,i,v),x=oo(e/h);return{bottom:y,itemHeight:f,items:v,itemWidth:p,offsetBottom:x*f+(x-1)*d-y,offsetTop:b,top:b}})),ee),z(U(re,V(e=>e!==null),H(e=>e.length)),S),z(U(tr(w,T,ee,D),V(([e,t,{items:n}])=>n.length>0&&t.height!==0&&e.height!==0),H(([e,t,{items:n},r])=>{let{bottom:i,top:a}=vo(e,r,t,n);return[a,i]}),B(Hr)),t);let O=G(!1);z(U(l,W(O),H(([e,t])=>t||e!==0)),O);let de=Qn(U(tr(ee,S),V(([{items:e}])=>e.length>0),W(O),V(([[e,t],n])=>{let r=e.items[e.items.length-1].index===t-1;return(n||e.bottom>0&&e.itemHeight>0&&e.offsetBottom===0&&e.items.length===t)&&r}),H(([[,e]])=>e-1),B())),fe=Qn(U(J(ee),V(({items:e})=>e.length>0&&e[0].index===0),Gn(0),B())),pe=Qn(U(J(ee),W(oe),V(([{items:e},t])=>e.length>0&&!t),H(([{items:e}])=>({endIndex:e[e.length-1].index,startIndex:e[0].index})),B(Vr),Jn(0)));z(pe,p.scrollSeekRangeChanged),z(U(E,W(w,T,S,D),H(([e,t,n,r,i])=>{let a=gi(e),{align:o,behavior:s,offset:c}=a,l=a.index;l===`LAST`&&(l=r-1),l=co(0,l,lo(r-1,l));let u=yo(t,i,n,l);return o===`end`?u=uo(u-t.height+n.height):o===`center`&&(u=uo(u-t.height/2+n.height/2)),c!==void 0&&c!==0&&(u+=c),{behavior:s,top:u}})),c);let k=Zn(U(ee,H(e=>e.offsetBottom+e.bottom)),0);return z(U(b,H(e=>({height:e.visibleHeight,width:e.visibleWidth}))),w),{customScrollParent:g,data:re,deviation:ne,footerHeight:i,gap:D,headerHeight:a,increaseViewportBy:e,initialItemCount:C,itemDimensions:T,overscan:n,restoreStateFrom:ae,scrollBy:o,scrollContainerState:s,scrollHeight:te,scrollTo:c,scrollToIndex:E,scrollTop:l,smoothScrollTargetReached:u,totalCount:S,useWindowScroll:_,viewportDimensions:w,windowScrollContainerState:v,windowScrollTo:y,windowViewportRect:b,...p,gridState:ee,horizontalDirection:ue,initialTopMostItemIndex:se,totalListHeight:k,...f,endReached:de,propsReady:h,rangeChanged:pe,startReached:fe,stateChanged:ie,stateRestoreInProgress:oe,...x}},F(Pi,br,Oi,Qi,mi,$i,or));function _o(e,t,n){return co(1,so((e+n)/(so(t)+n)))}function vo(e,t,n,r){let{height:i}=n;if(i===void 0||r.length===0)return{bottom:0,top:0};let a=yo(e,t,n,r[0].index);return{bottom:yo(e,t,n,r[r.length-1].index)+i,top:a}}function yo(e,t,n,r){let i=so(r/_o(e.width,n.width,t.column)),a=i*n.height+co(0,i-1)*t.row;return a>0?a+t.row:a}var bo=q(([e,t])=>({...e,...t}),F(go,q(()=>{let e=G(e=>`Item ${e}`),t=G({}),n=G(null),r=G(`virtuoso-grid-item`),i=G(`virtuoso-grid-list`),a=G(va),o=G(`div`),s=G(Rn),c=(e,n=null)=>Zn(U(t,H(t=>t[e]),B()),n),l=G(!1),u=G(!1);return z(J(u),l),{components:t,computeItemKey:a,context:n,FooterComponent:c(`Footer`),HeaderComponent:c(`Header`),headerFooterTag:o,itemClassName:r,ItemComponent:c(`Item`,`div`),itemContent:e,listClassName:i,ListComponent:c(`List`,`div`),readyStateChanged:l,reportReadyState:u,ScrollerComponent:c(`Scroller`,`div`),scrollerRef:s,ScrollSeekPlaceholder:c(`ScrollSeekPlaceholder`,`div`)}}))),xo=N.memo(function(){let e=$(`gridState`),t=$(`listClassName`),n=$(`itemClassName`),r=$(`itemContent`),i=$(`computeItemKey`),a=$(`isSeeking`),o=Oo(`scrollHeight`),s=$(`ItemComponent`),c=$(`ListComponent`),l=$(`ScrollSeekPlaceholder`),u=$(`context`),d=Oo(`itemDimensions`),f=Oo(`gap`),p=$(`log`),m=$(`stateRestoreInProgress`),h=Oo(`reportReadyState`),g=mr(N.useMemo(()=>e=>{let t=e.parentElement.parentElement.scrollHeight;o(t);let n=e.firstChild;if(n!==null){let{height:e,width:t}=n.getBoundingClientRect();d({height:e,width:t})}f({column:jo(`column-gap`,getComputedStyle(e).columnGap,p),row:jo(`row-gap`,getComputedStyle(e).rowGap,p)})},[o,d,f,p]),!0,!1);return ma(()=>{e.itemHeight>0&&e.itemWidth>0&&h(!0)},[e]),m?null:(0,P.jsx)(c,{className:t,ref:g,...X(c,u),"data-testid":`virtuoso-item-list`,style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(t=>{let o=i(t.index,t.data,u);return a?(0,P.jsx)(l,{...X(l,u),height:e.itemHeight,index:t.index,width:e.itemWidth},o):(0,N.createElement)(s,{...X(s,u),className:n,"data-index":t.index,key:o},r(t.index,t.data,u))})})}),So=N.memo(function(){let e=$(`HeaderComponent`),t=Oo(`headerHeight`),n=$(`headerFooterTag`),r=mr(N.useMemo(()=>e=>{t(qr(e,`height`))},[t]),!0,!1),i=$(`context`);return e==null?null:(0,P.jsx)(n,{ref:r,children:(0,P.jsx)(e,{...X(e,i)})})}),Co=N.memo(function(){let e=$(`FooterComponent`),t=Oo(`footerHeight`),n=$(`headerFooterTag`),r=mr(N.useMemo(()=>e=>{t(qr(e,`height`))},[t]),!0,!1),i=$(`context`);return e==null?null:(0,P.jsx)(n,{ref:r,children:(0,P.jsx)(e,{...X(e,i)})})}),wo=({children:e})=>{let t=N.useContext(ua),n=Oo(`itemDimensions`),r=Oo(`viewportDimensions`),i=mr(N.useMemo(()=>e=>{r(e.getBoundingClientRect())},[r]),!0,!1);return N.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),(0,P.jsx)(`div`,{ref:i,style:Da(!1),children:e})},To=({children:e})=>{let t=N.useContext(ua),n=Oo(`windowViewportRect`),r=Oo(`itemDimensions`),i=$(`customScrollParent`),a=$(`useWindowScroll`),o=yr(n,i,!1);return N.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),(0,P.jsx)(`div`,{ref:o,style:Oa(!1,a),children:e})},{Component:Eo,useEmitter:Do,useEmitterValue:$,usePublisher:Oo}=ca(bo,{optional:{context:`context`,totalCount:`totalCount`,overscan:`overscan`,itemContent:`itemContent`,components:`components`,computeItemKey:`computeItemKey`,data:`data`,initialItemCount:`initialItemCount`,scrollSeekConfiguration:`scrollSeekConfiguration`,headerFooterTag:`headerFooterTag`,listClassName:`listClassName`,itemClassName:`itemClassName`,useWindowScroll:`useWindowScroll`,customScrollParent:`customScrollParent`,scrollerRef:`scrollerRef`,logLevel:`logLevel`,restoreStateFrom:`restoreStateFrom`,initialTopMostItemIndex:`initialTopMostItemIndex`,increaseViewportBy:`increaseViewportBy`},methods:{scrollTo:`scrollTo`,scrollBy:`scrollBy`,scrollToIndex:`scrollToIndex`},events:{isScrolling:`isScrolling`,endReached:`endReached`,startReached:`startReached`,rangeChanged:`rangeChanged`,atBottomStateChange:`atBottomStateChange`,atTopStateChange:`atTopStateChange`,stateChanged:`stateChanged`,readyStateChanged:`readyStateChanged`}},N.memo(function({...e}){let t=$(`useWindowScroll`),n=$(`customScrollParent`),r=n||t?Ao:ko,i=n||t?To:wo,a=$(`context`);return(0,P.jsx)(r,{...e,...X(r,a),children:(0,P.jsxs)(i,{children:[(0,P.jsx)(So,{}),(0,P.jsx)(xo,{}),(0,P.jsx)(Co,{})]})})})),ko=Na({useEmitter:Do,useEmitterValue:$,usePublisher:Oo}),Ao=Pa({useEmitter:Do,useEmitterValue:$,usePublisher:Oo});function jo(e,t,n){return t!==`normal`&&t?.endsWith(`px`)!==!0&&n(`${e} was not resolved to pixel value correctly`,t,rr.WARN),t===`normal`?0:parseInt(t??`0`,10)}function Mo({agentId:e,approval:t}){let n=A(e=>e.sendPermissionDecision),[r,i]=(0,N.useState)(null);if(!t)return null;if(t.questions&&t.questions.length)return(0,P.jsx)(Fo,{agentId:e,approval:t,questions:t.questions});let a=t,o=t.choices.length?t.choices:[{id:`approve`,label:`Approve`},{id:`deny`,label:`Deny`}];async function s(t){if(!r){i(t.id);try{await n(e,a.id,t.id)}finally{i(null)}}}let c=t.kind===`plan`;return(0,P.jsx)(`div`,{className:`flex justify-start mb-3`,children:(0,P.jsx)(`div`,{className:`max-w-[92%] md:max-w-[78%] rounded-2xl rounded-bl-sm bg-card ring-1 ring-amber-500/35 px-3.5 py-3 text-sm`,children:(0,P.jsxs)(`div`,{className:`flex items-start gap-2`,children:[c?(0,P.jsx)(oe,{className:`mt-0.5 h-4 w-4 shrink-0 text-amber-400`}):(0,P.jsx)(E,{className:`mt-0.5 h-4 w-4 shrink-0 text-amber-400`}),(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900 dark:text-amber-100`,children:t.title}),t.body&&(c?(0,P.jsx)(`div`,{className:`mt-2 max-h-72 overflow-auto rounded-md bg-background/60 p-2.5 text-xs leading-relaxed`,children:(0,P.jsx)($e,{text:t.body,rawBody:t.body,className:`leading-relaxed`})}):(0,P.jsx)(`pre`,{className:`mt-2 max-h-44 overflow-auto whitespace-pre-wrap break-words rounded-md bg-background/80 p-2 font-mono text-xs leading-relaxed text-muted-foreground`,children:t.body})),(0,P.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:o.map(e=>(0,P.jsxs)(M,{size:`sm`,variant:e.id===`deny`||e.id===`abort`?`outline`:`default`,disabled:!!r,onClick:()=>void s(e),className:`h-7 px-2 text-xs`,children:[r===e.id&&(0,P.jsx)(k,{className:`mr-1.5 h-3 w-3 animate-spin`}),e.label]},e.id))})]})]})})})}function No(e){return e?e.otherActive&&e.other.trim()?!0:e.labels.length>0:!1}function Po(e){let t=[...e.labels];return e.otherActive&&e.other.trim()&&t.push(e.other.trim()),t.join(`, `)}function Fo({agentId:e,approval:t,questions:n}){let r=A(e=>e.sendPermissionDecision),[i,o]=(0,N.useState)(0),[s,c]=(0,N.useState)({}),[l,u]=(0,N.useState)(null),d=n[Math.min(i,n.length-1)],f=s[i];if(!d)return null;let p=!!d.multiSelect,g=n.length,_=i===g-1,v=No(f),y=n.every((e,t)=>No(s[t])),b=!!l;function x(e){c(t=>{let n=t[i]??{labels:[],other:``,otherActive:!1};return{...t,[i]:{...n,...e}}})}function S(e){if(p){let t=f?.labels.includes(e);x({labels:t?(f?.labels??[]).filter(t=>t!==e):[...f?.labels??[],e]})}else x({labels:[e],otherActive:!1})}function C(){x(p?{otherActive:!f?.otherActive}:{labels:[],otherActive:!0})}async function ee(){if(!(!y||b)){u(`answer`);try{let i={};n.forEach((e,t)=>{let n=s[t];n&&(i[e.question]=Po(n))}),await r(e,t.id,`answer`,i)}finally{u(null)}}}async function w(){if(!b){u(`dismiss`);try{await r(e,t.id,`deny`)}finally{u(null)}}}let E=!!f?.otherActive;return(0,P.jsx)(`div`,{className:`flex justify-start mb-3`,children:(0,P.jsxs)(`div`,{className:`w-full max-w-[92%] md:max-w-[78%] rounded-2xl rounded-bl-sm bg-card ring-1 ring-amber-500/35 px-3.5 py-3 text-sm`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(T,{className:`h-4 w-4 shrink-0 text-amber-400`}),(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900 dark:text-amber-100`,children:t.title}),g>1&&(0,P.jsxs)(Ye,{variant:`outline`,className:`ml-auto h-5 px-1.5 text-[10px] text-muted-foreground`,children:[i+1,` / `,g]})]}),(0,P.jsxs)(`div`,{className:`mt-3`,children:[d.header&&(0,P.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wide text-amber-700 dark:text-amber-300/80`,children:d.header}),(0,P.jsx)(`div`,{className:`mt-0.5 text-sm text-foreground whitespace-pre-wrap break-words`,children:d.question}),p&&(0,P.jsx)(`div`,{className:`mt-0.5 text-[11px] text-muted-foreground`,children:`Select all that apply`}),(0,P.jsxs)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:[d.options.map(e=>{let t=!!f?.labels.includes(e.label);return(0,P.jsxs)(`button`,{type:`button`,disabled:b,onClick:()=>S(e.label),className:D(`flex items-start gap-2 rounded-lg border px-2.5 py-2 text-left transition-colors`,t?`border-amber-500/60 bg-amber-500/10`:`border-border bg-background/60 hover:bg-background`,b&&`opacity-60`),children:[(0,P.jsx)(`span`,{className:D(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center border text-amber-300`,p?`rounded`:`rounded-full`,t?`border-amber-400 bg-amber-400/20`:`border-muted-foreground/40`),children:t&&(0,P.jsx)(h,{className:`h-3 w-3`})}),(0,P.jsxs)(`span`,{className:`min-w-0`,children:[(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:e.label}),e.description&&(0,P.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:e.description})]})]},e.label)}),(0,P.jsxs)(`button`,{type:`button`,disabled:b,onClick:C,className:D(`flex items-start gap-2 rounded-lg border px-2.5 py-2 text-left transition-colors`,E?`border-amber-500/60 bg-amber-500/10`:`border-border bg-background/60 hover:bg-background`,b&&`opacity-60`),children:[(0,P.jsx)(`span`,{className:D(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center border text-amber-300`,p?`rounded`:`rounded-full`,E?`border-amber-400 bg-amber-400/20`:`border-muted-foreground/40`),children:E&&(0,P.jsx)(h,{className:`h-3 w-3`})}),(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:`Other…`})]}),E&&(0,P.jsx)(ot,{autoFocus:!0,rows:2,disabled:b,value:f?.other??``,onChange:e=>x({other:e.target.value,otherActive:!0}),placeholder:`Type your answer`,className:`mt-1 text-sm`})]})]}),(0,P.jsxs)(`div`,{className:`mt-3 flex items-center gap-1.5`,children:[i>0&&(0,P.jsxs)(M,{size:`sm`,variant:`outline`,disabled:b,onClick:()=>o(e=>e-1),className:`h-7 px-2 text-xs`,children:[(0,P.jsx)(a,{className:`mr-1 h-3 w-3`}),`Back`]}),_?(0,P.jsxs)(M,{size:`sm`,disabled:b||!y,onClick:()=>void ee(),className:`h-7 px-2 text-xs`,children:[l===`answer`&&(0,P.jsx)(k,{className:`mr-1.5 h-3 w-3 animate-spin`}),`Send answer`,g>1?`s`:``]}):(0,P.jsxs)(M,{size:`sm`,disabled:b||!v,onClick:()=>o(e=>e+1),className:`h-7 px-2 text-xs`,children:[`Next`,(0,P.jsx)(m,{className:`ml-1 h-3 w-3`})]}),(0,P.jsxs)(M,{size:`sm`,variant:`ghost`,disabled:b,onClick:()=>void w(),className:`ml-auto h-7 px-2 text-xs text-muted-foreground`,children:[l===`dismiss`&&(0,P.jsx)(k,{className:`mr-1.5 h-3 w-3 animate-spin`}),`Dismiss`]})]})]})})}var Io=1e6,Lo=`px-3 md:px-4`;function Ro({context:e}){if(!e)return null;let{agentId:t,busy:n,pendingApproval:r,blockedLabel:i,canInterrupt:a,onInterrupt:o}=e,s=n&&!r;return!r&&!s?null:(0,P.jsxs)(`div`,{className:`${Lo} pb-3 md:pb-4`,children:[r&&(0,P.jsx)(Mo,{agentId:t,approval:r},r.id),s&&(0,P.jsx)(Bt,{blockedLabel:i,onInterrupt:a?o:void 0})]})}function zo(e){let t=e.findIndex(e=>e.type!==`date`&&e.type!==`created`),n=t>=0?t:0,r=e[n];return{key:r?dt(r):null,index:n}}function Bo(e,t){let[n,r]=(0,N.useState)(()=>Io-t.length),i=(0,N.useRef)({agentId:e,anchor:zo(t)});return(0,N.useLayoutEffect)(()=>{let n=zo(t),a=i.current;r(n=>{if(a.agentId!==e)return Io-t.length;if(!a.anchor.key)return n;let r=t.findIndex(e=>dt(e)===a.anchor.key)-a.anchor.index;return r>0?n-r:n}),i.current={agentId:e,anchor:n}},[e,t]),n}function Vo({agentId:e,agentStatus:t,timeline:n,hasMore:r,loading:i,loadedInitial:a,showReasoning:o,pendingApproval:s,blockedLabel:c,canInterrupt:l,searchActive:u,searchCurrentKey:d,searchMatchKeys:f,onAtBottomChange:p,onScrollerRef:m,onLoadOlder:h,onInterrupt:g,onOpenReferencedPath:_,onPreviewReferencedPath:v,onPreviewReferencedPathEnd:y}){let b=(0,N.useRef)(null),S=(0,N.useRef)(null),[C,ee]=(0,N.useState)(!0),w=t===`busy`,[T,E]=(0,N.useState)(w);(0,N.useLayoutEffect)(()=>{if(w){E(!0);return}let e=setTimeout(()=>E(!1),600);return()=>clearTimeout(e)},[w]);let te=Bo(e,n),ne=n.length>0?n[n.length-1]:null,re=ne?dt(ne):null,ie=(ne?.type===`message`||ne?.type===`initial-prompt`)&&ne.msg.from===`user`,ae=(0,N.useRef)(n);ae.current=n;let oe=(0,N.useRef)(te);oe.current=te;let se=(0,N.useRef)(e);se.current=e;let ce=(0,N.useRef)(!1),le=(0,N.useCallback)(()=>{ce.current||(ce.current=!0,requestAnimationFrame(()=>{ce.current=!1;let e=S.current;if(!e)return;let t=e.getBoundingClientRect().top,n=Array.from(e.querySelectorAll(`[data-item-index]`));for(let e of n){let n=e.getBoundingClientRect();if(n.bottom>t+1){let r=Number(e.getAttribute(`data-item-index`))-oe.current,i=ae.current[r];Ee(se.current,{stick:!1,topKey:i?dt(i):null,offset:Math.max(0,Math.round(t-n.top))});return}}}))},[]),ue=(0,N.useRef)(null);if(ue.current===null){let t=Ce(e),r=-1;t&&!t.stick&&t.topKey&&(r=n.findIndex(e=>dt(e)===t.topKey)),ue.current=r>=0?r:Math.max(0,n.length-1)}let O=(0,N.useRef)(re),fe=(0,N.useRef)(e);fe.current!==e&&(fe.current=e,O.current=re);let pe=O.current?n.findIndex(e=>dt(e)===O.current):-1,me=!C&&pe>=0?n.slice(pe+1).filter(e=>e.type===`message`&&e.msg.from!==`user`).length:0;(0,N.useLayoutEffect)(()=>{C&&(O.current=re)},[C,re]);let he=(0,N.useRef)(C);he.current=C;let ge=(0,N.useRef)(Ce(e)?.stick??!0),_e=(0,N.useRef)(!1),ve=(0,N.useRef)(!1),ye=(0,N.useRef)(null),be=(0,N.useRef)(0),xe=(0,N.useRef)(0),Se=(0,N.useCallback)(()=>{xe.current=performance.now()+150},[]),we=(0,N.useCallback)(()=>{Se(),b.current?.scrollToIndex({index:`LAST`,align:`end`});let e=performance.now(),t=0,n=!1,r=!1,i=()=>{if(n||!ge.current)return;let a=S.current;if(a){let e=a.scrollHeight-a.clientHeight-a.scrollTop,t=a.scrollHeight-a.clientHeight>64;if(e<=64&&t&&(r=!0,_e.current=!0),r&&e>300)return;Se(),a.scrollTo({top:a.scrollHeight,behavior:`auto`})}performance.now()-e>800||(t=requestAnimationFrame(i))};return t=requestAnimationFrame(i),()=>{n=!0,cancelAnimationFrame(t)}},[Se]);(0,N.useLayoutEffect)(()=>{if(ie&&(ge.current=!0,Ee(se.current,{stick:!0,topKey:null,offset:0})),ge.current)return we()},[re,ie,we]),(0,N.useLayoutEffect)(()=>{let t=Ce(e);if(!t||t.stick||!t.topKey)return;ge.current=!1;let n=t.topKey,r=t.offset,i=0,a=!1,o=0,s=performance.now();ve.current=!0;let c=()=>{a=!0,cancelAnimationFrame(i),ve.current=!1,ye.current=null};ye.current=c;let l=()=>{if(a)return;let e=ae.current.findIndex(e=>dt(e)===n);e>=0&&(o===0&&(o=performance.now()),Se(),b.current?.scrollToIndex({index:e,align:`start`,offset:r}));let t=performance.now();if(o===0){t-s<1500?i=requestAnimationFrame(l):c();return}t-o<800?i=requestAnimationFrame(l):c()};return i=requestAnimationFrame(l),c},[]);let Te=s?.id;(0,N.useLayoutEffect)(()=>{if(!T&&!Te||!ge.current)return;let e=0,t=performance.now(),n=()=>{let r=S.current;r&&ge.current&&r.scrollHeight-r.clientHeight-r.scrollTop>2&&(Se(),r.scrollTo({top:r.scrollHeight,behavior:`auto`})),performance.now()-t<300&&(e=requestAnimationFrame(n))};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[T,Te,Se]),(0,N.useLayoutEffect)(()=>{if(!u||!d)return;let e=ae.current.findIndex(e=>dt(e)===d);e<0||(ge.current=!1,Se(),b.current?.scrollToIndex({index:e,align:`center`}))},[u,d,Se]);let A=(0,N.useRef)(null),De=(0,N.useCallback)(e=>{let t=e instanceof HTMLElement?e:null;if(S.current=t,m?.(t),A.current?.(),A.current=null,!t)return;be.current=t.scrollTop;let n=()=>{ge.current=!1,ye.current?.()},r=()=>{let e=t.scrollTop,n=t.scrollHeight-t.clientHeight-e,r=performance.now()<xe.current;n<=64?(ge.current||Ee(se.current,{stick:!0,topKey:null,offset:0}),ge.current=!0,ye.current?.()):!r&&e<be.current-1&&(ge.current=!1,ye.current?.()),be.current=e,!ge.current&&!ve.current&&le()},i=e=>{ye.current?.(),e.deltaY<0&&n()},a=0,o=e=>{a=e.touches[0]?.clientY??0},s=e=>{let t=(e.touches[0]?.clientY??0)-a;Math.abs(t)>6&&ye.current?.(),t>6&&n()};t.addEventListener(`scroll`,r,{passive:!0}),t.addEventListener(`wheel`,i,{passive:!0}),t.addEventListener(`touchstart`,o,{passive:!0}),t.addEventListener(`touchmove`,s,{passive:!0}),A.current=()=>{t.removeEventListener(`scroll`,r),t.removeEventListener(`wheel`,i),t.removeEventListener(`touchstart`,o),t.removeEventListener(`touchmove`,s)}},[m,le]),Oe=(0,N.useCallback)(e=>{ee(e),e&&!ve.current&&(ge.current=!0),p?.(e)},[p]),ke=(0,N.useCallback)(()=>{!r||i||h()},[r,i,h]),Ae=(0,N.useCallback)(()=>{O.current=re,ge.current=!0,Ee(e,{stick:!0,topKey:null,offset:0}),we()},[e,re,we]),je=(0,N.useMemo)(()=>function(){return(0,P.jsx)(`div`,{className:Lo,children:(0,P.jsx)(Ho,{hasMore:r,loading:i,loadedInitial:a,hasItems:n.length>0})})},[r,a,i,n]),Me=(0,N.useMemo)(()=>({agentId:e,busy:T,pendingApproval:s,blockedLabel:c,canInterrupt:l,onInterrupt:g}),[e,T,c,l,g,s]),Ne=(0,N.useMemo)(()=>function(){return(0,P.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center text-center`,children:[i?(0,P.jsx)(k,{className:`mb-2 h-5 w-5 animate-spin text-muted-foreground`}):(0,P.jsx)(de,{className:`mb-2 h-8 w-8 text-zinc-600`}),(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i?`Loading messages`:`No messages yet`})]})},[i]),Pe=(0,N.useMemo)(()=>({Header:je,Footer:Ro,EmptyPlaceholder:Ne}),[Ne,je]);return(0,P.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[(0,P.jsx)(Ua,{ref:b,scrollerRef:De,className:`h-full py-3 md:py-4`,style:{height:`100%`,overflowX:`hidden`,overscrollBehavior:`contain`},context:Me,data:n,firstItemIndex:te,initialTopMostItemIndex:ue.current??Math.max(0,n.length-1),computeItemKey:(e,t)=>dt(t),itemContent:(t,r)=>{let i=u?dt(r):``,a=u&&f?.has(i),s=a&&i===d,c=t-te,l=r.type===`message`||r.type===`initial-prompt`?r.msg.from:null,p=n[c+1],m=p?.type===`message`||p?.type===`initial-prompt`?p.msg.from:null,h=l!==null&&l!==m;return(0,P.jsx)(`div`,{className:Lo,children:(0,P.jsx)(`div`,{className:D(a&&`rounded-xl ring-1 ring-amber-400/40 transition-shadow`,s&&`ring-2 ring-amber-400 bg-amber-400/5`),children:(0,P.jsx)(Uo,{entry:r,agentId:e,showReasoning:o,showAvatar:h,onOpenReferencedPath:_,onPreviewReferencedPath:v,onPreviewReferencedPathEnd:y})})})},components:Pe,startReached:ke,atBottomStateChange:Oe,atBottomThreshold:64,followOutput:()=>ge.current?`auto`:!1,totalListHeightChanged:()=>{if(!ge.current)return;let e=S.current;if(!e)return;let t=e.scrollHeight-e.clientHeight-e.scrollTop;t>=0&&t<=240&&(Se(),e.scrollTo({top:e.scrollHeight,behavior:`auto`}))},increaseViewportBy:{top:600,bottom:600}},e),!C&&n.length>0&&(0,P.jsxs)(M,{type:`button`,size:`sm`,variant:`secondary`,className:`absolute bottom-3 right-4 z-20 h-8 gap-1.5 rounded-full border border-border/70 bg-background/95 px-3 text-xs shadow-lg backdrop-blur`,onClick:Ae,children:[(0,P.jsx)(x,{className:`h-3.5 w-3.5`}),`Latest`,me>0&&(0,P.jsx)(`span`,{className:`ml-0.5 min-w-4 rounded-full bg-primary px-1.5 py-0.5 text-[10px] font-medium leading-none text-primary-foreground`,children:me>99?`99+`:me})]})]})}function Ho({hasMore:e,loading:t,loadedInitial:n,hasItems:r}){return t?(0,P.jsxs)(`div`,{className:`flex items-center justify-center gap-2 pb-3 text-xs text-muted-foreground`,children:[(0,P.jsx)(k,{className:`h-3.5 w-3.5 animate-spin`}),(0,P.jsx)(`span`,{children:`Loading earlier messages`})]}):!e&&n&&r?(0,P.jsxs)(`div`,{className:`flex items-center justify-center gap-2 pb-3 text-xs text-muted-foreground/70`,children:[(0,P.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,P.jsx)(`span`,{children:`Beginning of conversation`}),(0,P.jsx)(`div`,{className:`h-px flex-1 bg-border`})]}):null}function Uo({entry:e,agentId:t,showReasoning:n,showAvatar:r,onOpenReferencedPath:i,onPreviewReferencedPath:a,onPreviewReferencedPathEnd:o}){let s=A(e=>e.agentsById[t]?.issueRepo);return e.type===`message`?(0,P.jsx)(qt,{msg:e.msg,peer:t,showAvatar:r,onOpenReferencedPath:i,onPreviewReferencedPath:a,onPreviewReferencedPathEnd:o}):e.type===`initial-prompt`?(0,P.jsx)(wt,{msg:e.msg,issueRepo:s}):e.type===`notice`?(0,P.jsx)(Ct,{msg:e.msg}):e.type===`relay-injection`?(0,P.jsx)(Vt,{entry:e}):e.type===`prompt-resolution`?(0,P.jsx)(pt,{entry:e}):e.type===`agent-action`?(0,P.jsx)(gt,{entry:e}):e.type===`activity`?(0,P.jsx)(Lt,{steps:e.steps,showReasoning:n,issueRepo:s}):e.type===`import-boundary`?(0,P.jsx)(Pt,{history:e.history}):e.type===`imported-message`?(0,P.jsx)(Ot,{entry:e.entry,sourceLabel:e.history.sourceAgentLabel||e.history.sourcePeerId,issueRepo:s}):e.type===`status`?(0,P.jsx)(Ut,{event:e.event}):e.type===`date`?(0,P.jsx)(xt,{date:e.date}):(0,P.jsx)(vt,{timestamp:e.timestamp})}var Wo=[],Go=15e3;function Ko(e){return e.kind===`session`&&e.payload?.session?.type===`prompt`}function qo(e){let t=e.filter(e=>e.kind===`chat`&&e.from===`user`);return t.length?e.filter(e=>{if(!Ko(e)||e.from!==`user`)return!0;let n=Ue(e).trim();if(!n)return!0;let r=Ge(e.createdAt);return!t.some(e=>Ue(e).trim()===n&&Math.abs(Ge(e.createdAt)-r)<=Go)}):e}function Jo({threads:e,onBack:t,showBackButton:n}){let r=A(e=>e.selectedInboxThread),i=A(e=>e.agentsById),a=A(e=>e.inboxDrafts),o=we(),s=A(e=>e.sendChatMessage),c=A(e=>e.openFilesAt),l=A(e=>e.openFilesForAgent),u=A(e=>e.openAgentDetail),d=A(e=>e.chatSending),f=A(e=>e.markInboxThreadRead),p=A(e=>e.markInboxThreadUnread),m=A(e=>e.setReplyDraft),h=A(e=>e.exportThread),g=A(e=>e.doAgentAction),_=A(e=>e.workspaceAction),v=A(e=>e.openWorkspaceFocus),y=A(e=>e.forkFromAgent),b=A(e=>e.chatHistoryImports),x=A(e=>e.agentChatByAgent[e.selectedInboxThread]),S=x?.messages??Wo,C=A(e=>e.loadOlder),ee=A(e=>e.openConfirm),T=A(e=>e.showError),E=A(e=>e.orchestrators),te=A(e=>e.fetchOrchestrators),ne=A(e=>e.showReasoning),re=A(e=>e.voiceTtsEnabled),D=A(e=>e.setVoiceTtsEnabled),ie=A(e=>e.voiceInputMode),ae=A(e=>e.plansByThread);(0,N.useRef)(null);let oe=(0,N.useRef)(null),[se,ce]=(0,N.useState)(`idle`),le=(0,N.useRef)([]),[ue,O]=(0,N.useState)([]),[fe,pe]=(0,N.useState)(!1),[k,me]=(0,N.useState)(null),[_e,ve]=(0,N.useState)(null),[ye,be]=(0,N.useState)(``),xe=(0,N.useRef)(null),Ce=(0,N.useRef)(0),[Ee,ke]=(0,N.useState)(null),Ae=yn(r),je=(0,N.useMemo)(()=>e.find(e=>e.peer===r)||null,[e,r]),Me=(0,N.useMemo)(()=>qo(S.filter(e=>Ne(r,e)&&!Pe(e)).sort((e,t)=>e.id-t.id)),[S,r]),j=i[r]||null,Fe=typeof j?.meta?.lifecycleAction==`string`&&j.meta.lifecycleAction.startsWith(`finalizing-`),{terminalOpen:Ie,terminalTarget:Le,terminalOpening:Re,openTerminal:ze,closeTerminal:He}=Jt(j?.id),Ue=typeof j?.meta?.spawnRequestId==`string`?j.meta.spawnRequestId:``,We=(0,N.useMemo)(()=>b.filter(e=>e.targetAgentId===r||!!(Ue&&e.targetSpawnRequestId===Ue)),[Ue,b,r]),Ge=Je(j),Ke=Ge?.pendingApproval,qe=(0,N.useMemo)(()=>{if(!r||!je&&Me.length===0)return null;let e=Me[Me.length-1]??je?.lastMessage??null,t=je?.previewMessage&&Me.some(e=>e.id===je.previewMessage?.id)?je.previewMessage:e;return{id:je?.id??r,peer:r,messages:Me,lastMessage:e,previewMessage:t,attention:je?.attention??{unread:0,needsHumanResponse:!1,score:0},archived:je?.archived??!1,draft:je?.draft??``}},[r,je,Me]),Ye=qe||(We.length>0?{peer:r,messages:[],importedHistory:We}:null),Xe=a[r]||``,Ze=typeof j?.meta?.tmuxSession==`string`&&j.meta.tmuxSession.trim()?j.meta.tmuxSession:null,Qe=Ze?E.find(e=>e.managedAgents?.some(e=>e.agentId===j.id||e.tmuxSession===Ze))??null:null,$e=!!(Ze&&Qe?.status===`online`&&j?.providerCapabilities?.terminal?.live?.read),et=!!($e&&j?.providerCapabilities?.terminal?.live?.write),tt=j?.providerCapabilities?.terminal?.attach?.create===!0,nt=$e||tt,rt=Be(j,`compact`),it=Be(j,`clearContext`),ot=Be(j,`shutdown`),dt=Be(j,`interrupt`),ft=()=>{j&&g(j,`interrupt`)},[pt,mt]=(0,N.useState)(0),[gt,vt]=(0,N.useState)(!1),yt=j?.providerCapabilities?.liveSession?.slashCommands===!0,bt=j?.providerCapabilities?.model?.provider??(typeof j?.meta?.provider==`string`?j.meta.provider:void 0),xt=yt&&!gt&&/^\/\S*$/.test(Xe)?cn(bt).filter(e=>e.name.toLowerCase().startsWith(Xe.toLowerCase())):[],St=xt.length?Math.min(pt,xt.length-1):0;function Ct(e){m(r,`${e.name} `),mt(0)}function wt(e){m(r,e),gt&&vt(!1),mt(0)}let Tt=ue.some(e=>e.uploading),Et=ue.filter(e=>e.artifact),Dt=Xe.trim().length>0||ue.length>0;En(j?.id??``,Xe.trim().length>0),bn(Dt,(0,N.useCallback)(()=>{},[])),le.current=ue,(0,N.useEffect)(()=>()=>{ut(le.current)},[]),(0,N.useEffect)(()=>{j?.meta?.tmuxSession&&E.length===0&&te()},[j?.id,j?.meta?.tmuxSession,E.length]),(0,N.useEffect)(()=>()=>{xe.current!==null&&window.clearTimeout(xe.current)},[]);let Ot=typeof j?.spawnedBy==`string`?j.spawnedBy:void 0,kt=Ot?i[Ot]?.meta?.provider:void 0,At=(0,N.useMemo)(()=>Ht(Me,Ae,j?.createdAt,We,Ot?{spawnedBy:{agentId:Ot,provider:kt}}:void 0),[Me,Ae,j?.createdAt,We,Ot,kt]),jt=(0,N.useMemo)(()=>st(j,Me,qe?.lastMessage,ae),[j,qe?.lastMessage,ae,Me]),Mt=wn(At),Nt=(0,N.useCallback)(()=>{!r||!x?.hasMore||x.loading||C(r)},[x?.hasMore,x?.loading,C,r]),Pt=(0,N.useCallback)(()=>{xe.current!==null&&(window.clearTimeout(xe.current),xe.current=null)},[]),Ft=(0,N.useCallback)(async e=>{let t=ct(E,e);if(!t)return null;try{let n=await he(`GET`,`/orchestrators/${encodeURIComponent(t.id)}/files/stat?path=${encodeURIComponent(e)}`);return{orchestratorId:t.id,path:n.path,type:n.type}}catch{return null}},[E]),It=(0,N.useCallback)((e,t,n)=>{if(!Gt()||!n)return;let r=++Ce.current;Ft(e).then(e=>{Ce.current===r&&e&&(Pt(),ve({...e,line:t||0,anchor:n}),be(``))})},[Pt,Ft]),Lt=(0,N.useCallback)(()=>{Ce.current+=1,Pt(),xe.current=window.setTimeout(()=>{ve(null)},250)},[Pt]),zt=(0,N.useCallback)((e,t)=>{Ft(e).then(n=>{if(!n){T(`File Not Found`,e);return}if(Gt()){Ce.current+=1,Pt(),ve(null),me({...n,line:t||0}),be(``);return}n.type===`directory`?c({orchestratorId:n.orchestratorId,path:n.path,overlay:!0}):c({orchestratorId:n.orchestratorId,path:at(n.path),selectedPath:n.path,line:t,overlay:!0})})},[Pt,c,Ft,T]);function Bt(){me(null),be(``)}async function Vt(e){let t=Array.from(e).filter(e=>e.size>0);if(!t.length)return;let n=t.map(e=>({id:`${Date.now()}-${e.name}-${Math.random().toString(16).slice(2)}`,fileName:e.name,size:e.size,previewUrl:e.type.startsWith(`image/`)?URL.createObjectURL(e):void 0,uploading:!0}));O(e=>[...e,...n]);for(let e=0;e<t.length;e+=1){let r=t[e],i=n[e];try{let e=await ge(`/artifacts`,r,{filename:r.name,sensitivity:`normal`});O(t=>t.map(t=>t.id===i.id?{...t,artifact:e,uploading:!1}:t))}catch(e){O(t=>t.map(t=>t.id===i.id?{...t,error:e.message,uploading:!1}:t))}}}function Ut(e){O(t=>{let n=t.find(t=>t.id===e);return n?.previewUrl&&URL.revokeObjectURL(n.previewUrl),t.filter(t=>t.id!==e)})}function Wt(){ut(ue),O([])}function Kt(){if(!Xe.trim()&&Et.length===0||!r||d||Tt||Fe)return;let e=Et.map(e=>({artifactId:e.artifact.id,kind:e.artifact.kind,role:`media`,title:e.artifact.filename||e.fileName}));s(Xe,{peer:r,lastMessage:qe?.lastMessage||null},e),Wt()}function qt(e){if(xt.length){if(e.key===`ArrowDown`){e.preventDefault(),mt(e=>Math.min(e+1,xt.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),mt(e=>Math.max(e-1,0));return}if(e.key===`Escape`){e.preventDefault(),vt(!0);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault();let t=xt[St];t&&Ct(t);return}}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Kt())}function Yt(e){let t=Array.from(e.clipboardData.files).filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),Vt(t))}async function Xt(){if(!Se||se!==`idle`||!r)return;Oe.bargeIn();let e=new Te;try{await e.start(),oe.current=e,ce(`recording`)}catch(e){oe.current=null,ce(`idle`),T(`Microphone unavailable`,e?.message||`Could not access the microphone.`)}}async function Zt(){let e=oe.current;if(!(!e||se!==`recording`)){oe.current=null,ce(`transcribing`);try{let t=await e.stop();if(!t)return;let n=await De(t);if(!n)return;let i=Xe?`${Xe} ${n}`:n;if(ie===`autosend`&&!d&&!Tt){let e=Et.map(e=>({artifactId:e.artifact.id,kind:e.artifact.kind,role:`media`,title:e.artifact.filename||e.fileName}));s(i,{peer:r,lastMessage:qe?.lastMessage||null},e),Wt()}else m(r,i)}catch(e){T(`Transcription failed`,e?.message||`Could not transcribe audio.`)}finally{ce(`idle`)}}}return r?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex h-full min-w-0`,children:[(0,P.jsxs)(`div`,{className:`@container/chat flex h-full min-w-0 flex-1 flex-col`,children:[(0,P.jsx)(un,{selectedInboxThread:r,agent:j,now:o,blockedState:Ge,thread:qe,exportableThread:Ye,importedHistory:We,showBackButton:n,onBack:t,openAgentDetail:u,openWorkspaceFocus:v,voiceTtsEnabled:re,setVoiceTtsEnabled:D,canOpenTerminal:nt,terminalOpening:Re,handleOpenTerminal:ze,canInterrupt:dt,interruptAgent:ft,canCompact:rt,canClearContext:it,canShutdown:ot,openConfirm:ee,workspaceAction:_,doAgentAction:g,openFilesForAgent:l,forkFromAgent:y,markInboxThreadUnread:p,markInboxThreadRead:f,exportThread:h,onOpenSearch:Mt.openSearch}),(0,P.jsx)($t,{threadId:jt&&`threadId`in jt?jt.threadId:null,teamId:jt&&`teamId`in jt?jt.teamId:void 0,channel:jt?.channel}),r&&(0,P.jsx)(Qt,{agentId:r}),Mt.open&&(0,P.jsx)(dn,{query:Mt.query,position:Mt.position,total:Mt.total,onQueryChange:Mt.setQuery,onNext:Mt.next,onPrev:Mt.prev,onClose:Mt.close}),(0,P.jsx)(ht,{scrollEl:Ee,timeline:At}),(0,P.jsx)(Vo,{agentId:r,agentStatus:j?.status,timeline:At,hasMore:x?.hasMore??!1,loading:x?.loading??!1,loadedInitial:x?.loadedInitial??!1,showReasoning:ne,pendingApproval:Ke,blockedLabel:Ge?.label,canInterrupt:dt,searchActive:Mt.open,searchCurrentKey:Mt.currentKey,searchMatchKeys:Mt.matchKeySet,onScrollerRef:ke,onLoadOlder:Nt,onInterrupt:ft,onOpenReferencedPath:zt,onPreviewReferencedPath:It,onPreviewReferencedPathEnd:Lt}),(0,P.jsx)(hn,{draft:Xe,placeholder:`Message ${j?Ve(j):r}…`,chatSending:d,disabled:Fe,hasPendingUploads:Tt,readyAttachmentCount:Et.length,pendingAttachments:ue,micAvailable:Se,micState:se,slashMatches:xt,slashActiveIndex:St,onDraftChange:wt,onKeyDown:qt,onPaste:Yt,onUploadFiles:e=>{Vt(e)},onRemovePendingAttachment:Ut,onSend:Kt,onAcceptSlash:Ct,onSlashHover:mt,onStartPtt:()=>{Xt()},onStopPtt:()=>{Zt()},footerText:Fe?`${j?Ve(j):`Agent`} is wrapping up (${(j?.meta?.lifecycleAction).slice(11)}) — messaging paused`:`Enter to send · Shift+Enter for newline`})]}),k&&(0,P.jsxs)(`aside`,{className:`hidden h-full w-[min(44vw,720px)] min-w-[360px] shrink-0 flex-col border-l border-border bg-background xl:flex`,children:[(0,P.jsxs)(`div`,{className:`flex h-10 shrink-0 items-center gap-2 border-b border-border px-3`,children:[(0,P.jsx)(`span`,{className:`min-w-0 flex-1 text-xs font-medium text-muted-foreground`,children:`File preview`}),ye&&(0,P.jsx)(`span`,{className:`max-w-[18rem] truncate text-xs text-red-400`,children:ye}),(0,P.jsx)(M,{variant:`ghost`,size:`icon-sm`,title:`Close preview`,onClick:Bt,children:(0,P.jsx)(w,{className:`h-3.5 w-3.5`})})]}),(0,P.jsx)(`div`,{className:`min-h-0 flex-1`,children:k.type===`directory`?(0,P.jsx)(Rt,{orchestratorId:k.orchestratorId,selectedPath:k.path,onReadError:be}):(0,P.jsx)(_t,{orchestratorId:k.orchestratorId,selectedPath:k.path,line:k.line,onReadError:be})})]})]}),_e&&(0,P.jsx)(_n,{preview:_e,error:ye,onReadError:be,onMouseEnter:Pt,onMouseLeave:Lt}),Le&&(0,P.jsx)(lt,{open:Ie,onOpenChange:He,orchestratorId:Le.orchestratorId,session:Le.session,interactive:Le.interactive||et})]}):(0,P.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-center px-4`,children:[(0,P.jsx)(de,{className:`w-12 h-12 text-zinc-600 mb-3`}),(0,P.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Select an agent to start chatting`})]})}function Yo(){let e=A(e=>e.inboxDrafts),t=A(e=>e.agentsById),n=A(e=>e.set);(0,N.useEffect)(()=>{let r=Object.keys(e);if(r.length===0)return;let i=r.filter(e=>!t[e]&&e!==`user`);if(i.length===0)return;let a=setTimeout(()=>{let e=A.getState().agentsById,t={...A.getState().inboxDrafts},r=!1;for(let n of i)e[n]||(delete t[n],r=!0);r&&n({inboxDrafts:t})},3e4);return()=>clearTimeout(a)},[])}function Xo(e,t){(0,N.useEffect)(()=>{if(typeof window>`u`||!e||!window.matchMedia(`(max-width: 767px)`).matches)return;window.history.pushState({chatOpen:!0},``);function n(e){e.state?.chatOpen||t()}return window.addEventListener(`popstate`,n),()=>{window.removeEventListener(`popstate`,n),window.history.state?.chatOpen&&window.history.back()}},[e,t])}function Zo(){let e=Wt(),t=A(e=>e.selectedInboxThread),n=A(e=>e.set),r=A(e=>e.loadAgentChat),i=A(e=>e.agentsById),a=!!t;Yo(),(0,N.useEffect)(()=>{t&&r(t)},[t,r]),(0,N.useEffect)(()=>{t&&(i[t]||n({selectedInboxThread:``}))},[t,i,n]);let o=(0,N.useCallback)(()=>{n({selectedInboxThread:``})},[n]);return Xo(a,o),(0,P.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,P.jsxs)(`div`,{className:`hidden md:flex w-full`,children:[(0,P.jsx)(`div`,{className:`w-1/3 min-w-[240px] max-w-xs flex flex-col overflow-hidden`,children:(0,P.jsx)(an,{threads:e})}),(0,P.jsx)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:(0,P.jsx)(Jo,{threads:e},t||`empty`)})]}),(0,P.jsx)(`div`,{className:`md:hidden flex w-full overflow-hidden`,children:a?(0,P.jsx)(Qo,{children:(0,P.jsx)(Jo,{threads:e,onBack:o,showBackButton:!0},t||`empty`)}):(0,P.jsx)(`div`,{className:`w-full flex flex-col overflow-hidden`,children:(0,P.jsx)(an,{threads:e})})})]})}function Qo({children:e}){let t=Kt();return(0,P.jsx)(`div`,{className:`fixed inset-x-0 top-0 z-40 flex flex-col bg-background pt-[var(--sat)]`,style:{height:t?`${t}px`:`100dvh`},children:e})}export{Zo as ChatView};
2
- //# sourceMappingURL=chat-_I9nvxj2.js.map