@straiffi/archon 1.0.12 → 1.0.13

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.
@@ -169,8 +169,9 @@ ${s.join(`
169
169
  `).trim(),eQ=(e,t)=>e.ticket_id===t.ticket_id&&e.role===`user`&&t.role===`user`&&e.kind===`follow_up`&&t.kind===`follow_up`&&$Z(e.content)===$Z(t.content),tQ=(e,t)=>{if(t.length===0)return e;let n=new Set,r=new Set,i=new Map,a=[];for(let a of t){let t=[...e].reverse().find(e=>!r.has(e.id)&&!n.has(a.id)&&eQ(a,e));t&&(r.add(t.id),n.add(a.id),i.set(t.id,a))}for(let t of e){let e=i.get(t.id);if(e){a.push(e);continue}a.push(t)}for(let e of t)n.has(e.id)||a.push(e);return a},nQ=(e,t)=>e?t.get(e)??e:null,rQ=(e,t=[])=>{let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>{let r=n.get(e.id)??e.bundle_execution_position??2**53-1,i=n.get(t.id)??t.bundle_execution_position??2**53-1;if(r!==i)return r-i;if(e.created_at!==t.created_at)return e.created_at.localeCompare(t.created_at);let a=e.title.localeCompare(t.title,void 0,{sensitivity:`base`});return a===0?e.id.localeCompare(t.id):a})},iQ=(e,t)=>nQ(e,t)??`Agent`,aQ=(e,t)=>{let n={};for(let r of e){let e=nQ(r.model,t);e&&(n[r.id]=e)}return n},oQ=e=>e.kind===`planning_follow_up`||e.kind===`planning_response`?0:e.kind===`description`?1:2,sQ=(e,t,n,r=[])=>{let i=rQ(e,r),a=new Map(i.map((e,t)=>[e.id,t]));return i.flatMap(e=>{let r=e.messages??[],i=e.agent_status!==null||e.session_id!==null||r.some(e=>e.kind!==`description`&&VM(e)),o=r.filter(e=>VM(e)&&(i||e.kind!==`description`)),s=n[e.id]??iQ(e.model,t);return o.map(t=>t.role===`assistant`?{...t,displayTitle:s,ticketOrder:a.get(e.id)??2**53-1}:t.kind===`follow_up`?{...t,displayTitle:`You`,ticketOrder:a.get(e.id)??2**53-1}:{...t,displayTitle:e.title,ticketOrder:a.get(e.id)??2**53-1})}).sort((e,t)=>{if(e.ticket_id===t.ticket_id){let n=oQ(e)-oQ(t);if(n!==0)return n}let n=QZ(e),r=QZ(t);if(n!==r)return n.localeCompare(r);if(e.ticket_id!==t.ticket_id&&e.ticketOrder!==t.ticketOrder)return e.ticketOrder-t.ticketOrder;let i=oQ(e)-oQ(t);return i===0?e.id.localeCompare(t.id):i}).map(e=>{let{ticketOrder:t,...n}=e;return n})},cQ=e=>fv(e.tickets,{targetTicketId:e.target_ticket_id,reviewOwnerTicketId:e.review_owner_ticket_id,latestSessionTicketId:e.latest_session_ticket_id}),lQ=e=>e?e.startsWith(`ses_`)?`opencode --session ${e}`:`claude --resume ${e}`:null,uQ=(e,t)=>e.latest_session_id?lQ(e.latest_session_id):lQ(t?.session_id??null),dQ=(e,t)=>t?.diff_stats?t.diff_stats:e.find(e=>e.diff_stats)?.diff_stats??null,fQ=({details:e,activeColumn:t=null,isLoading:n=!1,actionState:r,canOpenIde:i,projectMemoryEnabled:a=!1,memorySuggestionsRefreshKey:o=0,runDisabled:s=!1,showModelSelector:c=!1,availableModels:l=[],availableSkills:u=[],onClose:d,onOpenTicketDetails:f,onOpenIde:p,onRefresh:m,onUpdateTicket:h,onBuildBundle:g,onStopBuildTicket:_,onResumeBuildTicket:v,onReviewBundle:y,onRunBundle:x,onStopBundle:C,onFollowUpBundle:w})=>{let[T,E]=(0,b.useState)(!1),[D,O]=(0,b.useState)(``),[k,A]=(0,b.useState)(!1),[j,M]=(0,b.useState)(!1),[N,P]=(0,b.useState)(!1),[F,I]=(0,b.useState)(``),[L,R]=(0,b.useState)(``),[z,ee]=(0,b.useState)([]),[B,V]=(0,b.useState)(null),[H,te]=(0,b.useState)(!1),[U,ne]=(0,b.useState)(!1),[W,re]=(0,b.useState)({}),[ie,ae]=(0,b.useState)([]),G=(0,b.useMemo)(()=>cQ(e),[e]),oe=(0,b.useMemo)(()=>new Map(l.map(e=>[e.id,e.label])),[l]),[se,ce]=(0,b.useState)(()=>aQ(e.tickets,oe)),ue=(0,b.useMemo)(()=>rQ(e.tickets,e.execution_order_ticket_ids),[e.execution_order_ticket_ids,e.tickets]),de=t??G?.state??null,K=de===`plan`,fe=(0,b.useMemo)(()=>tQ(sQ(e.tickets,oe,se,e.execution_order_ticket_ids),ie),[oe,e.execution_order_ticket_ids,e.tickets,ie,se]),pe=(0,b.useMemo)(()=>vM(e.tickets,de),[de,e.tickets]),me=(0,b.useMemo)(()=>(0,q.jsx)(pM,{status:pe}),[pe]),he=(0,b.useMemo)(()=>uQ(e,G),[e,G]),ge=(0,b.useMemo)(()=>dQ(e.tickets,G),[e.tickets,G]),_e=!K&&!!(G?.project_id&&G&&dv(G)),ve=!K&&!!(G?.project_id&&G),ye=ve&&!k,be=ve&&N&&G!==null,xe=de===`plan`&&e.tickets.some(e=>e.state===`plan`),Se=ue.find(e=>Fj(e)&&e.agent_status===`running`&&!!e.session_id)??null,Ce=ue.find(e=>Fj(e)&&e.agent_status===`stopped`&&!!e.session_id)??null,we=Se!==null,Te=!we&&Ce!==null,Ee=de===`build`&&e.tickets.some(e=>e.state===`build`)&&e.tickets.filter(e=>e.state===`build`).every(e=>e.agent_status===`done`),De=r.review||r.followUp,Oe=de===`review`&&e.can_re_review===!0&&!e.tickets.some(e=>e.agent_status===`running`)&&!De,ke=Ee||Oe,Ae=Oe?`Re-run review`:`Review Bundle`,je=e.tickets.some(e=>e.has_run_config&&tM(e)),Me=e.tickets.some(e=>e.is_running),Ne=e.tickets.find(e=>e.agent_status===`running`)??G,Pe=Ne?.streaming_response??null,Fe=Ne?.agent_log??null,Ie=Ne?.id??G?.id??null,Le=l.find(e=>e.id===F)??null,Re=G?.project_id??e.tickets.find(e=>e.project_id)?.project_id??null,ze=(0,b.useMemo)(()=>e.tickets.map(e=>e.id).sort().join(`|`),[e.tickets]),Be=(0,b.useMemo)(()=>new Set(ze.length>0?ze.split(`|`):[]),[ze]),Ve=(0,b.useMemo)(()=>e.tickets.map(e=>`${e.id}:${e.build_completed_at??``}`).sort().join(`|`),[e.tickets]),He=Ne??G??e.tickets[0]??null,Ue=He??G,We=Ue?.id??null,Ge=Ne?se[Ne.id]??iQ(Ne.model,oe):`Agent`,Ke=Ne?.agent_status===`running`?Ge:null,qe=!K&&!!(G&&dv(G)),Je=Nj(t??G?.state??null),Ye=qe&&c&&Ue?.tool===`opencode`,Xe=r.followUp||U,Ze=e.tickets.some(e=>e.agent_status===`running`),Qe=Ze?`Wait for all bundle tickets to finish building before sending a follow-up prompt.`:void 0,$e=He?`Follow up on: ${He.title}`:`Follow up on this bundle`,et=[{label:e.bundle.kind===`project_root`?`Project root branch`:`Worktree`,value:e.bundle.branch},{label:`Session`,value:he??``}],tt=!K,nt=k&&!j,rt=e.bundle.id,it=k?j?`expanded`:`split`:`closed`,at=nt?`flex h-[92vh] w-[98vw] max-w-[110rem] flex-col gap-3 overflow-visible rounded-2xl border border-border bg-card p-4 shadow-2xl sm:p-5 lg:p-6`:`flex h-[92vh] w-[96vw] max-w-[100rem] flex-col gap-3 overflow-visible rounded-2xl border border-border bg-card p-4 shadow-2xl sm:p-5 lg:p-6`,ot=nt?`grid min-h-0 flex-1 grid-cols-[16rem_minmax(0,1fr)_minmax(30rem,1fr)] gap-3 2xl:grid-cols-[18rem_minmax(0,1fr)_minmax(30rem,1fr)]`:tt?`grid min-h-0 flex-1 grid-cols-[16rem_minmax(0,1fr)] gap-3 2xl:grid-cols-[18rem_minmax(0,1fr)]`:`flex min-h-0 flex-1 flex-col`,st=j?`fixed inset-0 z-[70] flex items-center justify-center bg-black/30 p-[5vh]`:`fixed inset-4 z-[70] flex items-stretch justify-end bg-black/30 backdrop-blur-sm 2xl:hidden sm:inset-6 lg:inset-8`;(0,b.useEffect)(()=>{if(!a||K||!Re||ze.length===0){re({});return}let e=new AbortController;return dt(Re,null,e.signal).then(t=>{e.signal.aborted||re(t.suggestions.reduce((e,t)=>(!t.ticket_id||!Be.has(t.ticket_id)||(e[t.ticket_id]=(e[t.ticket_id]??0)+1),e),{}))}).catch(t=>{if(!e.signal.aborted){if(t instanceof S&&(t.status===404||t.status===409)){re({});return}re({})}}),()=>{e.abort()}},[Ve,Re,Be,ze,K,o,a]),(0,b.useEffect)(()=>{ce(t=>{let n={...t},r=!1,i=new Set(e.tickets.map(e=>e.id));for(let t of e.tickets){let e=nQ(t.model,oe);!e||n[t.id]===e||(n[t.id]=e,r=!0)}for(let e of Object.keys(n))i.has(e)||(delete n[e],r=!0);return r?n:t})},[oe,e.tickets]),(0,b.useEffect)(()=>{if(We!==null&&B?.ticketId===We)if((Ue?.model??``)===B.model&&(Ue?.variant??``)===B.variant&&(Ue?.skills.length??0)===B.skills.length&&(Ue?.skills??[]).every((e,t)=>e===B.skills[t]))V(null);else return;I(Ue?.model??``),R(Ue?.variant??``),ee(Ue?.skills??[])},[Ue?.model,Ue?.skills,Ue?.variant,We,B]);let ct=async(e,t,n)=>{if(Ue){V({ticketId:Ue.id,model:e,variant:t,skills:n}),te(!0);try{let r=await le(Ue.id,Ue.project_id,{model:e.trim()||null,variant:t.trim()||null,skills:n});h?.(r)}catch(e){V(null),I(Ue.model??``),R(Ue.variant??``),ee(Ue.skills),X.error(e instanceof Error?e.message:`Unable to update the ticket right now.`,{id:`ticket-save-error`})}finally{te(!1)}}},lt=async()=>{let t=D.trim();if(!t||Xe||Ze)return;let n=He?{id:`optimistic-follow-up-${Date.now()}`,ticket_id:He.id,role:`user`,kind:`follow_up`,content:t,created_at:new Date().toISOString(),displayTitle:`You`}:null;ne(!0),O(``),n&&ae(e=>[...e,n]);try{await w(e.bundle.id,t)}catch{n&&ae(e=>e.filter(e=>e.id!==n.id)),O(t)}finally{ne(!1)}},ut=Ye?(0,q.jsx)(`div`,{className:`flex flex-col gap-2.5`,children:Ye&&(0,q.jsx)(sV,{model:F,variant:L,skills:z,showModelSelector:!0,showSkillsSelector:!0,availableModels:l,availableSkills:u,selectedModel:Le,onModelChange:e=>{let t=(l.find(t=>t.id===e)??null)?.variants.includes(L)?L:``;I(e),R(t),ct(e,t,z)},onVariantChange:e=>{R(e),ct(F,e,z)},onSkillsChange:e=>{ee(e),ct(F,L,e)},modelSelectId:`bundle-follow-up-model`,variantSelectId:`bundle-follow-up-variant`,skillsSelectId:`bundle-follow-up-skills`,disabled:H})}):void 0;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Lv,{onClose:d,overlayClassName:`bg-black/60 !z-40`,panelClassName:at,renderContent:({closeButton:t})=>(0,q.jsx)(q.Fragment,{children:(0,q.jsxs)(`div`,{"data-testid":`bundle-modal-layout`,"data-terminal-mode":it,className:`min-h-0 flex flex-1 flex-col gap-3`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:gv(e.bundle)}),me,e.bundle.pull_request&&(0,q.jsx)(Dj,{pullRequest:e.bundle.pull_request,asLink:!0}),(0,q.jsxs)(Z,{variant:`outline`,children:[e.tickets.length,` tickets`]})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[!K&&ge&&(0,q.jsx)(x_,{stats:ge,showFiles:!0,className:`text-xs`}),_e&&(0,q.jsxs)(Y,{type:`button`,"aria-label":`Changes`,onClick:()=>E(!0),variant:`outline`,className:`gap-2`,children:[(0,q.jsx)(S_,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:`Changes`})]}),!K&&i&&(0,q.jsxs)(Y,{type:`button`,"aria-label":`Open IDE`,onClick:p,variant:`outline`,className:`gap-2`,children:[(0,q.jsx)(C_,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:`Open IDE`})]}),ye&&(0,q.jsxs)(Y,{type:`button`,"aria-label":`Open terminal`,onClick:()=>{P(!0),A(!0)},variant:`outline`,className:`gap-2`,children:[(0,q.jsx)(O_,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:`Terminal`})]}),t]})]}),(0,q.jsxs)(`div`,{className:ot,children:[tt&&(0,q.jsxs)(`aside`,{"data-testid":`bundle-modal-sidebar`,className:`flex min-h-0 flex-col gap-4`,children:[(0,q.jsx)(RM,{ariaLabel:`Ticket metadata`,items:et,className:`flex-col items-stretch gap-3`}),(0,q.jsx)(XZ,{tickets:e.tickets,onOpenTicketDetails:f,highlightedTicketId:He?.id??null,pendingMemorySuggestionCounts:W})]}),(0,q.jsxs)(`div`,{"data-testid":`bundle-modal-main`,className:`min-h-0 flex flex-1 flex-col gap-3 overflow-hidden`,children:[!K&&(0,q.jsx)(qZ,{projectId:G?.project_id??null,followUpTicketId:e.target_ticket_id,messages:fe,internalLog:Fe,thinkingTicketId:Ie,pendingAgentTitle:Ke,streamingResponse:Pe,isRunning:Ne?.agent_status===`running`,isLoading:n,canShowComposer:qe,layoutKey:rt,scrollLayoutKey:it,composerControls:ut,composerTheme:Je,followUpPrompt:D,followUpPlaceholder:$e,isSendingFollowUp:Xe,followUpDisabledReason:Qe,onFollowUpPromptChange:O,onFollowUpKeyDown:e=>{e.key!==`Enter`||e.shiftKey||Ze||Xe||(e.preventDefault(),lt())},onFollowUpSubmit:()=>{lt()}}),K&&(0,q.jsx)(XZ,{tickets:e.tickets,onOpenTicketDetails:f,pendingMemorySuggestionCounts:W}),(0,q.jsx)(JZ,{bundleId:e.bundle.id,actionState:r,runDisabled:s,canBuild:xe,canStopBuild:we,runningBuildTicketId:Se?.id??null,canResumeBuild:Te,resumableBuildTicketId:Ce?.id??null,isRunning:Me,canRun:je,canReview:ke,reviewActionLabel:Ae,onClose:d,onBuildBundle:g,onStopBuildTicket:_,onResumeBuildTicket:v,onRunBundle:x,onStopBundle:C,onReviewBundle:y})]}),be&&G&&(0,q.jsx)(`div`,{className:k?nt?`min-h-0 flex flex-col overflow-hidden`:st:`hidden`,children:(0,q.jsx)(AZ,{createSession:()=>kM(G.id,G.project_id),isExpanded:j,isVisible:k,ariaLabel:`Bundle terminal`,title:`Terminal`,className:nt||j?`h-full w-full max-w-none rounded-2xl shadow-2xl`:`h-full w-full max-w-5xl rounded-2xl shadow-2xl`,onClose:()=>{A(!1),M(!1),P(!1),m(e.bundle.id)},onToggleExpanded:()=>{M(e=>!e)}})})]})]})})}),T&&G&&(0,q.jsx)(b.Suspense,{fallback:null,children:(0,q.jsx)(ZZ,{ticketId:G.id,projectId:G.project_id,reviewCommentsBundleId:e.bundle.id,title:gv(e.bundle),onSubmitReviewPrompt:t=>w(e.bundle.id,t),canSubmitReviewPrompt:!Ze,reviewSubmitDisabledReason:Qe,canAddReviewComments:!Ze,canModifyChanges:!Ze,changesDisabledReason:Qe,onClose:()=>{E(!1),m(e.bundle.id)}})})]})},pQ=wt(`group/toggle inline-flex cursor-pointer items-center justify-center gap-1 rounded-3xl text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent hover:bg-muted`},size:{default:`h-9 min-w-9 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5`,sm:`h-8 min-w-8 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,lg:`h-10 min-w-10 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3`}},defaultVariants:{variant:`default`,size:`default`}}),mQ=b.createContext({size:`default`,variant:`default`,spacing:0,orientation:`horizontal`});function hQ({className:e,variant:t,size:n,spacing:r=0,orientation:i=`horizontal`,children:a,...o}){return(0,q.jsx)(_f,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:J(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[spacing=0]:data-[variant=outline]:rounded-3xl data-vertical:flex-col data-vertical:items-stretch`,e),...o,children:(0,q.jsx)(mQ.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function gQ({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=b.useContext(mQ);return(0,q.jsx)(vf,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:J(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-3 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-2.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-2.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-3xl group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-3xl group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-3xl group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-3xl data-[state=on]:bg-muted group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,pQ({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var _Q=`border-sky-400/30 bg-sky-400/10 text-sky-100`,vQ=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,yQ=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,bQ=e=>e.subject_type===`file`,xQ=({reviewComments:e,reviewFindings:t=[],githubComments:n=[],pendingFixCount:r,triggerMode:i=`full`,canSendReview:a,isSubmittingReview:o,reviewSubmitDisabledReason:s,onClearPendingFixes:c,onSubmitReview:l})=>(0,q.jsxs)(Ug,{children:[(0,q.jsx)(Wg,{asChild:!0,children:(0,q.jsxs)(Y,{type:`button`,variant:`default`,size:`sm`,className:i===`compact`?`gap-1.5 px-2.5`:`gap-2`,"aria-label":`Pending fixes`,disabled:r===0,children:[i===`compact`?(0,q.jsx)(fx,{className:`h-4 w-4`}):(0,q.jsx)(`span`,{children:`Pending fixes`}),(0,q.jsx)(Z,{variant:`outline`,className:`h-5 min-w-5 px-1.5 text-[10px]`,children:r}),(0,q.jsx)(h_,{className:`h-4 w-4`})]})}),(0,q.jsxs)(Gg,{align:`end`,className:`z-[90] w-[30rem] max-w-[calc(100vw-2rem)] p-4`,children:[(0,q.jsxs)(Kg,{className:`flex-row items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(qg,{children:`Pending fixes`}),(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Review selected comments and findings before sending them back to the agent.`})]}),(0,q.jsx)(Z,{variant:`outline`,children:r})]}),r===0?(0,q.jsx)(`div`,{className:`rounded-xl border border-border bg-background/40 px-4 py-3 text-sm text-muted-foreground`,children:`No pending fixes selected yet.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`max-h-80 space-y-2 overflow-auto pr-1`,children:[e.map(e=>(0,q.jsx)(`div`,{className:`rounded-xl border border-sky-500/20 bg-sky-500/8 px-3 py-3 shadow-sm`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(fx,{className:`mt-0.5 h-4 w-4 flex-shrink-0 text-sky-200`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:`Manual comment`}),(0,q.jsx)(Z,{variant:`outline`,className:_Q,children:`Manual`})]}),(0,q.jsxs)(`div`,{className:`mt-1 text-xs text-sky-100/70`,children:[mD(e.scope),` · `,e.filePath,` · `,pD(e)]}),(0,q.jsx)(`div`,{className:`mt-2 rounded-lg border border-sky-500/15 bg-background/60 px-3 py-2`,children:(0,q.jsx)(`p`,{className:`whitespace-pre-wrap text-xs text-foreground`,children:e.comment})})]})]})},`${e.filePath}:${e.changeKey}`)),t.map(e=>(0,q.jsx)(`div`,{className:`rounded-xl border border-border bg-background/40 px-3 py-3`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(ly,{className:`mt-0.5 h-4 w-4 flex-shrink-0 text-muted-foreground`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsxs)(`div`,{className:`text-sm font-medium text-foreground`,children:[`Finding `,e.ordinal]}),(0,q.jsx)(Z,{variant:`outline`,className:`capitalize`,children:e.severity})]}),(0,q.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[e.file_path,vQ(e)].filter(Boolean).join(` · `)}),(0,q.jsx)(`div`,{className:`mt-2 text-xs font-medium text-foreground`,children:e.title}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap text-xs text-foreground`,children:e.what_text})]})]})},e.id)),n.map(e=>(0,q.jsx)(`div`,{className:`rounded-xl border border-border bg-background/40 px-3 py-3`,children:(0,q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(E_,{className:`mt-0.5 h-4 w-4 flex-shrink-0 text-muted-foreground`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:e.kind===`review`?`GitHub review summary`:`GitHub review comment`}),(0,q.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[e.file_path,e.kind===`inline`&&!bQ(e)?yQ(e):e.author].filter(Boolean).join(` · `)}),(0,q.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-xs text-foreground`,children:e.body})]})]})},e.id))]}),(0,q.jsxs)(`div`,{className:`flex justify-between gap-2 pt-2`,children:[(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,disabled:r===0||o,onClick:c,children:`Clear`}),(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`default`,disabled:!a,title:s,onClick:l,className:`gap-2`,children:[(0,q.jsx)(kj,{className:`h-4 w-4`}),o?`Sending...`:`Send fixes (${r})`]})]})]})]})]}),SQ=({commitMessage:e,onCommitMessageChange:t,commitMessageRef:n,selectedFileCount:r,changesDisabledReason:i,canEditCommitMessage:a=!0,canGenerateCommitMessage:o,canCommit:s,isGeneratingCommitMessage:c,isCommitting:l,onGenerateCommitMessage:u,onCommit:d})=>{let f=e.trim()===``;return(0,q.jsx)(`div`,{className:`rounded-2xl border border-border bg-background/40 px-4 py-4`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 xl:flex-row xl:items-center xl:gap-4`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 xl:w-56`,children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:`Commit selected files`}),(0,q.jsx)(`div`,{className:`mt-1 flex items-center gap-3 text-xs text-muted-foreground`,children:(0,q.jsxs)(Z,{variant:`outline`,children:[r,` file`,r===1?``:`s`,` selected`]})})]}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,q.jsxs)(Ag,{"data-disabled":!a,className:`flex-1`,children:[(0,q.jsx)(Fg,{"aria-label":`Commit message`,id:`ticket-changes-commit-message`,ref:n,value:e,onChange:e=>{t(e.target.value)},placeholder:`Commit message`,disabled:!a||c,title:i}),f&&(0,q.jsx)(Mg,{align:`inline-end`,children:(0,q.jsx)(Pg,{"aria-label":`Generate commit message`,disabled:!o,onClick:u,title:i,children:c?`Generating...`:`Generate`})})]}),(0,q.jsxs)(Y,{type:`button`,onClick:d,disabled:!s,title:i,className:`w-full gap-2 sm:w-auto sm:min-w-32`,children:[(0,q.jsx)(S_,{className:`h-4 w-4`}),l?`Committing...`:`Commit`]})]})]})})},CQ=({isCommitsLoading:e,commitsError:t,unpushedCommits:n,canUndoLatestCommit:r,isUndoing:i,aheadCount:a,onUndoLatestCommit:o})=>{if(!e&&n.length===0&&!t)return null;let s=n.length||a;return(0,q.jsxs)(Ug,{children:[(0,q.jsx)(Wg,{asChild:!0,children:(0,q.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,className:`gap-2`,children:[(0,q.jsx)(`span`,{children:`Local commits`}),(0,q.jsx)(Z,{variant:`outline`,className:`h-5 min-w-5 px-1.5 text-[10px]`,children:s}),(0,q.jsx)(h_,{className:`h-4 w-4`})]})}),(0,q.jsxs)(Gg,{align:`end`,className:`z-[90] w-[28rem] p-4`,children:[(0,q.jsxs)(Kg,{className:`flex-row items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(qg,{children:`Local commits`}),(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Review what will be pushed from this branch.`})]}),!e&&!t&&(0,q.jsx)(Z,{variant:`outline`,children:n.length})]}),e?(0,q.jsx)(`div`,{className:`rounded-xl border border-border bg-background/40 px-4 py-3 text-sm text-muted-foreground`,children:`Loading branch commits...`}):t?(0,q.jsx)(`div`,{className:`rounded-xl border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100`,children:t}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,onClick:o,disabled:!r,children:[(0,q.jsx)(qy,{className:`h-3.5 w-3.5`}),i?`Undoing...`:`Undo latest commit`]})}),(0,q.jsx)(`div`,{className:`max-h-72 space-y-2 overflow-auto`,children:n.map(e=>(0,q.jsxs)(`div`,{className:`rounded-xl border border-border bg-background/40 px-3 py-3`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.subject}),(0,q.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,q.jsx)(Z,{variant:`outline`,className:`font-mono`,children:e.short_hash}),(0,q.jsx)(`span`,{children:new Date(e.committed_at).toLocaleString()})]})]},e.hash))})]})]})]})};function wQ(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length<t;)e=` `+e;return e};console.info(`%c⏱ ${i(t,5)} /${i(e,5)} ms`,`
170
170
  font-size: .6rem;
171
171
  font-weight: bold;
172
- color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,n?.key)}return n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i}return o.updateDeps=e=>{r=e},o}function TQ(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var EQ=(e,t)=>Math.abs(e-t)<1.01,DQ=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},OQ=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},kQ=e=>e,AQ=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},jQ=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(OQ(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(OQ(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},MQ={passive:!0},NQ=typeof window>`u`?!0:`onscrollend`in window,PQ=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&NQ?()=>void 0:DQ(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,MQ);let l=e.options.useScrollendEvent&&NQ;return l&&n.addEventListener(`scrollend`,c,MQ),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},FQ=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},IQ=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},LQ=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:kQ,rangeExtractor:AQ,onChange:()=>{},measureElement:FQ,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=wQ(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=wQ(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=wQ(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let c=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,c),u=Array(a).fill(void 0);for(let e=0;e<c;e++){let t=l[e];t&&(u[t.lane]=e)}for(let i=c;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),c,d,f=o===`estimate`||s.has(e);if(a!==void 0&&this.options.lanes>1){c=a;let e=u[c],r=e===void 0?void 0:l[e];d=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?l[i-1]:this.getFurthestMeasurement(l,i);d=e?e.end+this.options.gap:t+n,c=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,c)}let p=s.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=d+m;l[i]={index:i,start:d,size:m,end:h,key:e,lane:c},u[c]=i}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=wQ(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?zQ({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=wQ(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start<this.getScrollOffset()+this.scrollAdjustments:this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this))&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=wQ(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return TQ(t[RQ(0,t.length-1,e=>TQ(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&EQ(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,n&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior=`auto`,this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}));this.scheduleScrollReconcile()}},RQ=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function zQ({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=RQ(0,i,a,n),s=o;if(r===1)for(;s<i&&e[s].end<n+t;)s++;else if(r>1){let a=Array(r).fill(0);for(;s<i&&a.some(e=>e<n+t);){let t=e[s];a[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var BQ=typeof document<`u`?b.useLayoutEffect:b.useEffect;function VQ({useFlushSync:e=!0,...t}){let n=b.useReducer(()=>({}),{})[1],r={...t,onChange:(r,i)=>{var a;e&&i?(0,At.flushSync)(n):n(),(a=t.onChange)==null||a.call(t,r,i)}},[i]=b.useState(()=>new LQ(r));return i.setOptions(r),BQ(()=>i._didMount(),[]),BQ(()=>i._willUpdate()),i}function HQ(e){return VQ({observeElementRect:jQ,observeElementOffset:PQ,scrollToFn:IQ,...e})}var UQ=8,WQ=520,GQ=2,KQ=()=>(0,q.jsx)(`div`,{"data-testid":`ticket-diff-resize-placeholder`,className:`space-y-4 px-3 py-3`,children:[{gutter:`w-8`,code:`w-[68%]`},{gutter:`w-10`,code:`w-[54%]`},{gutter:`w-8`,code:`w-[74%]`},{gutter:`w-6`,code:`w-[38%]`},{gutter:`w-10`,code:`w-[82%]`},{gutter:`w-7`,code:`w-[61%]`},{gutter:`w-9`,code:`w-[48%]`},{gutter:`w-8`,code:`w-[71%]`},{gutter:`w-11`,code:`w-[57%]`},{gutter:`w-7`,code:`w-[66%]`},{gutter:`w-9`,code:`w-[43%]`},{gutter:`w-8`,code:`w-[76%]`}].map((e,t)=>(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-resize-placeholder-row`,className:`flex items-center gap-4`,children:[(0,q.jsx)(`div`,{className:J(`h-4 rounded bg-muted/80`,e.gutter)}),(0,q.jsx)(`div`,{className:J(`h-4 rounded bg-muted/60`,e.code)})]},`${e.gutter}-${e.code}-${t}`))}),qQ=({additions:e,deletions:t,fileCount:n})=>n===null?[{key:`additions`,content:`+${e}`,className:`font-mono text-emerald-400`},{key:`deletions`,content:`-${t}`,className:`font-mono text-rose-400`}]:[{key:`files`,content:`${n} file${n===1?``:`s`}`,className:`text-muted-foreground`},{key:`additions`,content:`+${e}`,className:`font-mono text-emerald-400`},{key:`deletions`,content:`-${t}`,className:`font-mono text-rose-400`}],JQ=({control:e,mode:t})=>typeof e==`function`?e(t):e??null,YQ=e=>e.reduce((e,t)=>e+t.hunks.reduce((e,t)=>e+t.changes.length,0),0),XQ=e=>sD(e),ZQ=(e,t)=>{let n=`oldPath`in e&&typeof e.oldPath==`string`?t(e.oldPath):``,r=`newPath`in e&&typeof e.newPath==`string`?t(e.newPath):``;return[...new Set([r,n].filter(e=>e&&e!==`/dev/null`))]},QQ=e=>e.subject_type===`file`,$Q=e=>e.subject_type===`line`,e$=`border-sky-400/30 bg-sky-400/10 text-sky-100`,t$=({context:e,comment:t,reviewDraftInput:n,canEdit:r,autoFocus:i,isReadOnly:a,hasSavedComment:o,onReviewDraftInputChange:s,onCancelReviewDraft:c,onEditReviewDraft:l,onRemoveReviewDraft:u,onSaveReviewDraft:d})=>{let f=(0,b.useRef)(null),[p,m]=(0,b.useState)(()=>n),h=XQ(e.change);return(0,b.useEffect)(()=>{!i||a||f.current?.focus({preventScroll:!0})},[i,a]),(0,q.jsxs)(`div`,{className:`rounded-xl border border-sky-500/20 bg-sky-500/8 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(Z,{variant:`outline`,className:e$,children:`Manual`}),(0,q.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wide text-sky-100/80`,children:o?`Comment on line ${h}`:`Add a comment to line ${h}`})]}),(0,q.jsxs)(`div`,{className:`mt-2 space-y-3`,children:[a?(0,q.jsx)(`div`,{className:`whitespace-pre-wrap rounded-xl border border-sky-500/15 bg-background/70 px-3 py-2.5 text-xs text-foreground`,children:t}):(0,q.jsx)(kg,{ref:f,"aria-label":`Review comment for ${e.filePath}`,value:p,onChange:e=>{m(e.target.value),s(e.target.value)},disabled:!r,className:`min-h-20 text-xs`,placeholder:`Add a review comment for this change`}),(0,q.jsx)(`div`,{className:`flex gap-2`,children:a?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:`outline`,onClick:()=>{l(e.commentKey)},disabled:!r,children:[(0,q.jsx)(Wy,{className:`h-3.5 w-3.5`}),`Edit`]}),(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:()=>{u(e.commentKey)},disabled:!r,children:`Remove`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Y,{type:`button`,size:`xs`,onClick:()=>{d(e,p)},disabled:!r||!p.trim(),children:`Add comment`}),(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:c,children:`Cancel`})]})})]})]})},n$=e=>e===`high`?`destructive`:e===`medium`?`warning`:`outline`,r$=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,i$=({finding:e,isSelected:t,onToggle:n})=>{let[r,i]=(0,b.useState)(!1);return(0,q.jsxs)(`div`,{className:`rounded-xl border border-slate-400/30 bg-slate-400/10 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,q.jsx)(ly,{className:`h-3.5 w-3.5 flex-shrink-0`}),(0,q.jsx)(`div`,{children:`Finding ${e.ordinal}`}),(0,q.jsx)(Z,{variant:n$(e.severity),className:`normal-case`,children:e.severity})]}),(0,q.jsx)(`div`,{className:`mt-2 text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap text-xs text-foreground`,children:e.what_text})]}),(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:t?`default`:`outline`,onClick:n,className:`gap-1.5`,children:[!t&&(0,q.jsx)(Dv,{className:`h-3.5 w-3.5`}),t?`Selected`:`Fix`]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:r$(e)}),e.file_path&&(0,q.jsx)(`span`,{children:e.file_path})]}),(e.why_text||e.fix_text)&&(0,q.jsxs)(`div`,{className:`mt-3`,children:[(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:()=>{i(e=>!e)},children:r?`Hide details`:`Details`}),r&&(0,q.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-xl border border-border bg-background/60 p-3 text-xs text-foreground`,children:[e.why_text&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:`Why it matters`}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap`,children:e.why_text})]}),e.fix_text&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:`Requested fix`}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap`,children:e.fix_text})]})]})]})]})},a$=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,o$=e=>e.old_line_number!==null||e.new_line_number!==null,s$=e=>e.kind===`review`?`Review summary`:QQ(e)?`File comment`:o$(e)||$Q(e)?`Inline comment`:`File comment`,c$=({comment:e,isSelected:t,onToggle:n})=>(0,q.jsxs)(`div`,{className:`rounded-xl border border-violet-400/30 bg-violet-400/10 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,q.jsx)(Z,{variant:`outline`,className:`border-violet-400/40 bg-violet-400/10 text-violet-100`,children:`GitHub`}),(0,q.jsx)(`span`,{children:s$(e)}),e.is_outdated&&(0,q.jsx)(Z,{variant:`warning`,className:`normal-case`,children:`Outdated`})]}),(0,q.jsx)(`div`,{className:`mt-2 text-sm font-medium text-foreground`,children:e.author}),(0,q.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-xs text-foreground`,children:e.body})]}),(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:t?`default`:`outline`,onClick:n,className:`gap-1.5`,children:[!t&&(0,q.jsx)(Dv,{className:`h-3.5 w-3.5`}),t?`Selected`:`Fix`]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[e.file_path&&(0,q.jsx)(`span`,{children:e.file_path}),e.kind===`inline`&&!QQ(e)&&o$(e)&&(0,q.jsx)(`span`,{children:a$(e)}),(0,q.jsx)(`span`,{children:new Date(e.updated_at).toLocaleString()}),(0,q.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-violet-200 underline underline-offset-2 transition-colors hover:text-violet-100`,children:`Open on GitHub`})]})]}),l$=({allDiffFiles:e,resolveFilePath:t,normalizeDiffPath:n,reviewFindings:r})=>{let i=new Map,a=new Map,o=[],s=new Map;for(let t of e)for(let e of ZQ(t,n))s.has(e)||s.set(e,t);for(let e of r){let n=e.file_path,r=n?s.get(n):null;if(!r||!n){o.push(e);continue}let c=t(r),l=null;for(let t of r.hunks){for(let n of t.changes)if(lD(e,n)){l=yT(n);break}if(l)break}if(l){let t=i.get(c)??new Map,n=t.get(l)??[];t.set(l,[...n,e]),i.set(c,t);continue}a.set(c,[...a.get(c)??[],e])}return{inlineByFilePath:i,fileLevelByFilePath:a,globalFindings:o}},u$=({allDiffFiles:e,resolveFilePath:t,normalizeDiffPath:n,githubComments:r})=>{let i=new Map,a=new Map,o=[],s=new Map;for(let t of e)for(let e of ZQ(t,n))s.has(e)||s.set(e,t);for(let e of r){if(e.kind===`review`||!e.file_path){o.push(e);continue}let n=s.get(e.file_path);if(!n){o.push(e);continue}let r=t(n);if(QQ(e)||!e.subject_type&&!o$(e)){a.set(r,[...a.get(r)??[],e]);continue}let c=null;for(let t of n.hunks){for(let n of t.changes)if(cD(e,n)){c=yT(n);break}if(c)break}if(!c){o.push(e);continue}let l=i.get(r)??new Map,u=l.get(c)??[];l.set(c,[...u,e]),i.set(r,l)}return{inlineByFilePath:i,fileLevelByFilePath:a,fallbackComments:o}},d$=({filePath:e,hunks:t,activeReviewTarget:n,editingReviewCommentKey:r,reviewDraftInstanceKey:i,reviewDraftInput:a,reviewComments:o,reviewFindingsByChangeKey:s,githubCommentsByChangeKey:c,selectedReviewFindingIds:l,selectedGitHubCommentIds:u,canEditActiveReviewDraft:d,onToggleReviewFindingSelection:f,onToggleGitHubCommentSelection:p,onReviewDraftInputChange:m,onCancelReviewDraft:h,onEditReviewDraft:g,onRemoveReviewDraft:_,onSaveReviewDraft:v})=>{let y=new Map(o.map(e=>[hD(e.filePath,e.changeKey),e]));return t.reduce((t,o)=>{for(let b of o.changes){let x=yT(b),S=hD(e,x),C=n?.commentKey===S,w=y.get(S),T=r===S,E=s.get(x)??[],D=c.get(x)??[];if(!C&&!w&&E.length===0&&D.length===0)continue;let O={filePath:e,changeKey:x,commentKey:S,hunk:o,change:b},k=!!w&&!T&&!C,A=k?w?.comment??``:a;t[x]=(0,q.jsxs)(`div`,{className:`space-y-3`,children:[E.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:l.includes(e.id),onToggle:()=>{f(e.id)}},e.id)),D.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:u.includes(e.id),onToggle:()=>{p(e.id)}},e.id)),(C||w)&&(0,q.jsx)(t$,{context:O,comment:w?.comment??``,reviewDraftInput:A,canEdit:d,autoFocus:C||T,isReadOnly:k,hasSavedComment:!!w,onReviewDraftInputChange:m,onCancelReviewDraft:h,onEditReviewDraft:g,onRemoveReviewDraft:_,onSaveReviewDraft:v},`${i??O.commentKey}:${k?`readonly`:`editable`}`)]})}return t},{})},f$=e=>e.reduce((e,t)=>{for(let n of t.changes)e.set(yT(n),{hunk:t,change:n});return e},new Map),p$=(0,b.memo)(({selectedDiffPath:e,sidebarFiles:t,diffResponse:n,isDiffLoading:r,diffError:i,allDiffFiles:a,renderedFiles:o,viewType:s,onViewTypeChange:c,onRetry:l,activeReviewTarget:u,editingReviewCommentKey:d,reviewDraftInstanceKey:f,reviewDraftInput:p,reviewComments:m,reviewFindings:h,githubComments:g,selectedReviewFindingIds:_,selectedGitHubCommentIds:v,canSelectReviewTarget:y,canEditActiveReviewDraft:x,reviewFindingsError:S,gitHubCommentsError:C,hasStaleReviewFindings:w,onSelectReviewTarget:T,onToggleReviewFindingSelection:E,onToggleGitHubCommentSelection:D,onReviewDraftInputChange:O,onCancelReviewDraft:k,onEditReviewDraft:A,onRemoveReviewDraft:j,onSaveReviewDraft:M,diffThemeClassName:N,resolveFilePath:P,normalizeDiffPath:F,emptyStateTitle:I=`No changes to show.`,emptyStateDescription:L=null,filePickerControl:R,reviewSummaryControl:z,extraHeaderControl:ee,headerLayout:B=`stacked`,surfaceVariant:V=`default`,showViewTypeToggle:H=!0,gutterVariant:te=`default`,isResizing:U=!1,resizePlaceholderLineThreshold:ne=1/0,onVisibleFilePathsChange:W})=>{let re=(0,b.useRef)(null),{mode:ie,ref:ae}=Qb({compactAt:V===`flat`?460:620,tightAt:V===`flat`?360:500}),G=!!n?.diff?.trim()||o.length>0||(n?.files.length??0)>0,oe=(0,b.useMemo)(()=>YQ(o),[o]),se=e===`all`&&o.length>=UQ,ce=U&&oe>ne,le=HQ({count:se?o.length:0,getScrollElement:()=>re.current,estimateSize:()=>WQ,overscan:GQ,initialRect:{width:0,height:900}}),ue=(0,b.useMemo)(()=>new Map(n?.files.map(e=>[e.path,e])??[]),[n?.files]),de=(0,b.useMemo)(()=>l$({allDiffFiles:a,resolveFilePath:P,normalizeDiffPath:F,reviewFindings:w?[]:h}),[a,w,F,P,h]),K=(0,b.useMemo)(()=>u$({allDiffFiles:a,resolveFilePath:P,normalizeDiffPath:F,githubComments:g}),[a,g,F,P]);(0,b.useEffect)(()=>{let e=re.current;e&&(e.scrollTop=0)},[e]),(0,b.useEffect)(()=>{let e=re.current;return()=>{let t=le;t.elementsCache?.forEach(e=>e.remove()),t.elementsCache?.clear(),window.getSelection()?.removeAllRanges(),e?.replaceChildren()}},[le]);let fe=le.getVirtualItems(),pe=(0,b.useMemo)(()=>se?fe.map(e=>P(o[e.index])):o.map(e=>P(e)),[o,P,se,fe]);(0,b.useEffect)(()=>{W?.(pe)},[W,pe]);let me=se&&fe.length>0?fe[0]?.start??0:0,he=se&&fe.length>0?Math.max(0,le.getTotalSize()-(fe[fe.length-1]?.end??0)):0,ge=se?fe.map(e=>({file:o[e.index],virtualItem:e})):o.map(e=>({file:e,virtualItem:null})),_e=e===`all`?null:t.find(t=>t.path===e)??null,ve=e===`all`?qQ({additions:n?.stats?.additions??0,deletions:n?.stats?.deletions??0,fileCount:n?.stats?.files_changed??null}):_e?qQ({additions:_e.additions,deletions:_e.deletions,fileCount:null}):[],ye=(0,b.useMemo)(()=>H?(0,q.jsxs)(hQ,{type:`single`,size:`sm`,variant:`outline`,value:s,onValueChange:e=>{(e===`split`||e===`unified`)&&c(e)},children:[(0,q.jsx)(gQ,{value:`unified`,children:`Unified`}),(0,q.jsx)(gQ,{value:`split`,children:`Split`})]}):null,[c,H,s]),be=(0,b.useMemo)(()=>[JQ({control:R,mode:ie}),JQ({control:z,mode:ie})].filter(Boolean),[R,ie,z]),xe=ye||be.length>0||ee;return(0,q.jsxs)(`section`,{className:J(`flex min-h-0 flex-1 flex-col overflow-hidden`,V===`default`?`rounded-2xl border border-border bg-background/30`:`bg-transparent`),children:[(0,q.jsx)(`div`,{ref:ae,"data-responsive-mode":ie,"data-testid":`ticket-diff-header`,className:J(`grid min-w-0 items-start gap-x-3 gap-y-2 border-b px-4 py-3`,V===`default`?`border-border`:`border-border/70 px-3`,B===`stacked`?ee?`grid-cols-[minmax(0,1fr)_auto]`:`grid-cols-[minmax(0,1fr)]`:xe?`grid-cols-[minmax(0,1fr)_auto]`:`grid-cols-[minmax(0,1fr)]`),children:B===`stacked`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-left`,className:`grid min-w-0 gap-2`,children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-info`,className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e===`all`?`All changes`:e}),ve.length>0&&(0,q.jsx)(`div`,{className:`mt-1 flex items-center gap-3 whitespace-nowrap text-xs`,children:ve.map(e=>(0,q.jsx)(`span`,{className:e.className,children:e.content},e.key))})]}),ye||be.length>0?(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-controls`,className:`flex min-w-0 flex-wrap items-center gap-2 justify-start`,children:[ye?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-primary-controls`,className:`shrink-0`,children:ye}):null,be.length>0?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-secondary-controls`,className:`flex min-w-0 items-center gap-2 justify-start`,children:be.map((e,t)=>(0,q.jsx)(`div`,{className:`min-w-0 shrink-0`,children:e},`header-secondary-control-${t+1}`))}):null]}):null]}),ee?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-close`,className:`flex shrink-0 items-start justify-end`,children:ee}):null]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-info`,className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e===`all`?`All changes`:e}),ve.length>0&&(0,q.jsx)(`div`,{className:`mt-1 flex items-center gap-3 whitespace-nowrap text-xs`,children:ve.map(e=>(0,q.jsx)(`span`,{className:e.className,children:e.content},e.key))})]}),xe?(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-inline-controls`,className:`flex min-w-0 flex-wrap items-start justify-end gap-2`,children:[ye?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-primary-controls`,className:`shrink-0`,children:ye}):null,be.length>0?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-secondary-controls`,className:`flex min-w-0 flex-wrap items-center justify-end gap-2`,children:be.map((e,t)=>(0,q.jsx)(`div`,{className:`min-w-0 shrink-0`,children:e},`header-secondary-control-${t+1}`))}):null,ee?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-close`,className:`flex shrink-0 items-start justify-end`,children:ee}):null]}):null]})}),(0,q.jsx)(`div`,{ref:re,"data-testid":`ticket-diff-scroll-region`,className:`min-h-0 flex-1 overflow-auto`,children:(0,q.jsxs)(`div`,{className:J(`min-h-full pb-4 pt-4`,V===`default`?`px-4`:`px-0`),children:[r&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`Loading diff...`}),!r&&i&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-4 text-center`,children:[(0,q.jsx)(`p`,{className:`max-w-md text-sm text-rose-300`,children:i}),(0,q.jsx)(Y,{type:`button`,variant:`outline`,onClick:l,children:`Retry`})]}),!r&&!i&&n&&!G&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-2 text-center`,children:[(0,q.jsx)(`div`,{className:`text-sm text-foreground`,children:I}),L&&(0,q.jsx)(`div`,{className:`max-w-md text-xs text-muted-foreground`,children:L})]}),!r&&!i&&n&&G&&e!==`all`&&o.length===0&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-3 text-center`,children:[(0,q.jsx)(`div`,{className:`text-sm text-foreground`,children:`No renderable diff for this file in the UI.`}),(0,q.jsx)(`div`,{className:`max-w-md text-xs text-muted-foreground`,children:e})]}),!r&&!i&&n&&G&&o.length>0&&ce&&(0,q.jsx)(KQ,{}),!r&&!i&&n&&G&&o.length>0&&!ce&&(0,q.jsxs)(`div`,{className:J(`archon-diff-viewer`,te===`compact`&&`archon-diff-viewer--compact-gutter`,e===`all`&&V===`default`&&`space-y-6`,e===`all`&&V===`flat`&&`space-y-0`,N),children:[S&&(0,q.jsx)(`div`,{className:`rounded-xl border border-dashed border-border bg-background/40 px-4 py-3 text-xs text-muted-foreground`,children:S}),C&&(0,q.jsx)(`div`,{className:`rounded-xl border border-dashed border-border bg-background/40 px-4 py-3 text-xs text-muted-foreground`,children:C}),de.globalFindings.length>0&&(0,q.jsxs)(`section`,{className:`rounded-xl border border-border bg-card/70 p-3`,children:[(0,q.jsx)(`div`,{className:`mb-3 text-sm font-semibold text-foreground`,children:`Review findings`}),(0,q.jsx)(`div`,{className:`space-y-3`,children:de.globalFindings.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))})]}),e===`all`&&K.fallbackComments.length>0&&(0,q.jsxs)(`section`,{className:`rounded-xl border border-border bg-card/70 p-3`,children:[(0,q.jsx)(`div`,{className:`mb-3 text-sm font-semibold text-foreground`,children:`GitHub review comments`}),(0,q.jsx)(`div`,{className:`space-y-3`,children:K.fallbackComments.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))})]}),me>0&&(0,q.jsx)(`div`,{style:{height:me}}),ge.map(({file:t,virtualItem:n})=>{let r=P(t),i=ue.get(r),a=f$(t.hunks),o=de.inlineByFilePath.get(r)??new Map,c=K.inlineByFilePath.get(r)??new Map,l=de.fileLevelByFilePath.get(r)??[],h=K.fileLevelByFilePath.get(r)??[],g=d?m.find(e=>hD(e.filePath,e.changeKey)===d)??null:null,b=[...m.filter(e=>e.filePath===r).map(e=>e.changeKey),...u?.filePath===r?[u.changeKey]:[],...g?.filePath===r?[g.changeKey]:[]],S=d$({filePath:r,hunks:t.hunks,activeReviewTarget:u,editingReviewCommentKey:d,reviewDraftInstanceKey:f,reviewDraftInput:p,reviewComments:m,reviewFindingsByChangeKey:o,githubCommentsByChangeKey:c,selectedReviewFindingIds:_,selectedGitHubCommentIds:v,canEditActiveReviewDraft:x,onToggleReviewFindingSelection:E,onToggleGitHubCommentSelection:D,onReviewDraftInputChange:O,onCancelReviewDraft:k,onEditReviewDraft:A,onRemoveReviewDraft:j,onSaveReviewDraft:M}),C=(0,q.jsx)(aE,{diffType:t.type,hunks:t.hunks,tokens:t.tokens,viewType:s,selectedChanges:[...new Set(b)],widgets:S,renderGutter:({change:e,side:t,renderDefault:n,wrapInAnchor:r,inHoverState:i})=>{if(!e)return r(n());let a=yT(e),o=t===`new`,c=y&&t===`new`,l=s===`unified`&&e.type===`normal`&&t===`new`?null:r(n());return(0,q.jsxs)(`div`,{className:J(`flex items-center justify-end pr-1`,te===`compact`?`gap-1 pr-0.5`:`gap-2`),children:[l,o&&(0,q.jsx)(`span`,{"data-diff-gutter-action-slot":`true`,className:[te===`compact`?`flex size-5 shrink-0 items-center justify-center rounded-md border border-emerald-300/80 bg-emerald-400 text-[#07130d] shadow-[0_8px_20px_rgba(16,185,129,0.22)] transition-all`:`flex size-6 shrink-0 items-center justify-center rounded-md border border-emerald-300/80 bg-emerald-400 text-[#07130d] shadow-[0_8px_20px_rgba(16,185,129,0.22)] transition-all`,c&&i?`border-emerald-200 bg-emerald-300 opacity-100`:`opacity-0`,!c&&`pointer-events-none`].join(` `),"aria-hidden":`true`,children:(0,q.jsx)(Dv,{className:te===`compact`?`h-3 w-3`:`h-3.5 w-3.5`})}),(0,q.jsx)(`span`,{className:`sr-only`,children:a})]})},gutterEvents:{onClick:({change:e})=>{if(!y||!e)return;let t=a.get(yT(e));t&&T({filePath:r,changeKey:yT(e),commentKey:hD(r,yT(e)),hunk:t.hunk,change:t.change})}},codeEvents:{onClick:({change:e})=>{if(!y||!e)return;let t=a.get(yT(e));t&&T({filePath:r,changeKey:yT(e),commentKey:hD(r,yT(e)),hunk:t.hunk,change:t.change})}},children:e=>e.map(e=>(0,q.jsx)(eE,{hunk:e},`${r}-${e.content}`))});return e===`all`?(0,q.jsx)(`div`,{"data-index":n?.index,ref:n?le.measureElement:void 0,children:(0,q.jsxs)(`section`,{className:J(V===`default`?`rounded-xl border border-border bg-card/70`:`border-t border-border/70 bg-transparent first:border-t-0`),children:[(0,q.jsxs)(`div`,{className:J(`sticky top-0 z-20 border-b text-xs font-medium text-foreground`,V===`default`?`rounded-t-xl border-border bg-card px-4 py-3`:`border-border/70 bg-background/95 px-3 py-2.5 backdrop-blur-sm`),children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[`oldPath`in t&&typeof t.oldPath==`string`&&F(t.oldPath)===`/dev/null`&&(0,q.jsx)(Z,{variant:`success`,className:`shrink-0`,children:`New file`}),(0,q.jsx)(`span`,{children:r})]}),i&&(0,q.jsxs)(`div`,{className:`mt-1 flex items-center gap-2 text-xs`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-emerald-400`,children:[`+`,i.additions]}),(0,q.jsxs)(`span`,{className:`font-mono text-rose-400`,children:[`-`,i.deletions]})]})]}),(0,q.jsxs)(`div`,{className:J(`overflow-x-auto`,V===`default`?`p-3`:`px-0 py-3`),children:[l.length>0&&(0,q.jsx)(`div`,{className:J(`mb-3 space-y-3`,V===`flat`&&`px-3`),children:l.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))}),h.length>0&&(0,q.jsx)(`div`,{className:J(`mb-3 space-y-3`,V===`flat`&&`px-3`),children:h.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))}),C]})]})},`${r}-${t.type??`modify`}`):(0,q.jsxs)(`div`,{"data-index":n?.index,ref:n?le.measureElement:void 0,children:[l.length>0&&(0,q.jsx)(`div`,{className:`mb-3 space-y-3`,children:l.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))}),h.length>0&&(0,q.jsx)(`div`,{className:`mb-3 space-y-3`,children:h.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))}),C]},`${r}-${t.type??`modify`}`)}),he>0&&(0,q.jsx)(`div`,{style:{height:he}})]})]})})]})});p$.displayName=`TicketChangesDiffPanel`;var m$=e=>J(`group`,e?`border-sky-700 bg-card/95 shadow-sm`:`border-border/50 bg-transparent text-muted-foreground hover:border-border/80 hover:bg-accent/60 hover:text-accent-foreground hover:shadow-sm`),h$={modified:`border-amber-500/40 bg-amber-500/10 text-amber-200`,added:`border-emerald-500/40 bg-emerald-500/10 text-emerald-200`,deleted:`border-rose-500/40 bg-rose-500/10 text-rose-200`,renamed:`border-sky-500/40 bg-sky-500/10 text-sky-200`,untracked:`border-violet-500/40 bg-violet-500/10 text-violet-200`,typechanged:`border-slate-500/40 bg-slate-500/10 text-slate-200`},g$={modified:`Modified`,added:`Added`,deleted:`Deleted`,renamed:`Renamed`,untracked:`Untracked`,typechanged:`Type changed`},_$=e=>{let t=e.split(/[\\/]/);return t[t.length-1]||e},v$=({selectionWarning:e,gitError:t,sidebarFiles:n,commentCountByPath:r,commentCountTone:i,isGitStatusLoading:a,selectedPaths:o,selectedDiffPath:s,allFilesSelected:c,diffStats:l,title:u=`Changed files`,allChangesDescription:d=`Review the full workspace diff.`,enableSelection:f=!0,onToggleSelectAll:p,onSelectDiffPath:m,onTogglePath:h})=>{let g=i===`bundle_diff`?`rounded-full border border-violet-400/40 bg-violet-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-violet-100`:`rounded-full border border-sky-400/40 bg-sky-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-sky-100`;return(0,q.jsxs)(`aside`,{className:`flex min-h-0 h-full flex-col between overflow-hidden rounded-2xl border border-border bg-background/40`,children:[(e||t)&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-border p-4`,children:[e&&(0,q.jsx)(`div`,{className:`rounded-xl border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100`,children:e}),t&&(0,q.jsx)(`div`,{className:`rounded-xl border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100`,children:t})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-b border-border px-4 py-3`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:u}),(0,q.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[n.length,` file`,n.length===1?``:`s`,` changed`]})]}),f&&(0,q.jsx)(Y,{type:`button`,variant:`outline`,size:`sm`,onClick:p,disabled:n.length===0,children:c?`Unselect all`:`Select all`})]}),(0,q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:[a&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`Loading file list...`}),!a&&n.length===0&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`No changes to review.`}),!a&&n.length>0&&(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>{m(`all`)},className:J(`flex w-full items-start justify-between gap-3 rounded-xl border px-2.5 py-2 text-left transition-colors`,m$(s===`all`)),children:(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,q.jsx)(`div`,{className:`text-xs font-semibold text-foreground`,children:`All changes`}),l&&(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`text-muted-foreground transition-colors group-hover:text-foreground/70`,children:[l.files_changed,` file`,l.files_changed===1?``:`s`]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,l.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,l.deletions]})]})]}),(0,q.jsx)(`div`,{className:`mt-1 flex w-full flex-1 text-xs text-muted-foreground transition-colors group-hover:text-foreground/70`,children:d})]})}),n.map(e=>{let t=f&&o.has(e.path),n=s===e.path,i=r.get(e.path)??0;return(0,q.jsxs)(`div`,{className:J(`flex items-start gap-2.5 rounded-xl border px-2.5 py-2 transition-colors`,m$(n)),children:[f&&(0,q.jsx)(`input`,{type:`checkbox`,"aria-label":e.path,checked:t,onChange:()=>{h(e.path)},className:`mt-0.5 h-4 w-4 rounded border-border bg-background text-primary`}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{m(e.path)},className:`min-w-0 flex-1 text-left cursor-pointer`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex flex-1 items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,children:_$(e.path)}),i>0&&(0,q.jsx)(`span`,{"aria-label":`${i} comment${i===1?``:`s`} in ${e.path}`,className:g,children:i})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,e.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,e.deletions]})]})]}),(0,q.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-1.5 text-[11px]`,children:[e.status&&(0,q.jsx)(Z,{variant:`outline`,className:h$[e.status],children:g$[e.status]}),e.staged&&(0,q.jsx)(Z,{variant:`outline`,children:`Staged`}),e.unstaged&&(0,q.jsx)(Z,{variant:`outline`,children:`Unstaged`}),e.conflicted&&(0,q.jsx)(Z,{variant:`destructive`,children:`Conflicted`}),e.originalPath&&(0,q.jsx)(`span`,{className:`break-all font-mono text-[11px] text-muted-foreground transition-colors group-hover:text-foreground/70`,children:e.status===`renamed`?`from ${e.originalPath}`:e.originalPath})]})]})]},`${e.path}:${e.originalPath??``}`)})]})]})]})},y$=[`[--diff-background-color:transparent]`,`[--diff-text-color:rgb(226_232_240)]`,`[--diff-selection-background-color:rgba(148,163,184,0.2)]`,`[--diff-gutter-insert-background-color:rgba(34,197,94,0.16)]`,`[--diff-gutter-delete-background-color:rgba(244,63,94,0.16)]`,`[--diff-gutter-selected-background-color:rgba(148,163,184,0.12)]`,`[--diff-code-insert-background-color:rgba(34,197,94,0.08)]`,`[--diff-code-delete-background-color:rgba(244,63,94,0.08)]`,`[--diff-code-insert-edit-background-color:rgba(34,197,94,0.22)]`,`[--diff-code-delete-edit-background-color:rgba(244,63,94,0.22)]`,`[--diff-code-selected-background-color:rgba(148,163,184,0.12)]`,`[--diff-font-family:var(--font-mono)]`,`[&_.diff]:w-full`,`[&_.diff]:border-collapse`,`[&_.diff]:font-mono`,`[&_.diff-code]:whitespace-pre-wrap`,`[&_.diff-code]:break-words`,`[&_.diff-gutter]:select-none`].join(` `),b$=25e4,x$=2e3,S$=new Map,C$=e=>e?e.split(`
172
+ color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,n?.key)}return n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i}return o.updateDeps=e=>{r=e},o}function TQ(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var EQ=(e,t)=>Math.abs(e-t)<1.01,DQ=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},OQ=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},kQ=e=>e,AQ=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},jQ=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(OQ(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(OQ(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},MQ={passive:!0},NQ=typeof window>`u`?!0:`onscrollend`in window,PQ=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&NQ?()=>void 0:DQ(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,MQ);let l=e.options.useScrollendEvent&&NQ;return l&&n.addEventListener(`scrollend`,c,MQ),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},FQ=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},IQ=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},LQ=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:kQ,rangeExtractor:AQ,onChange:()=>{},measureElement:FQ,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=wQ(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=wQ(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=wQ(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let c=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,c),u=Array(a).fill(void 0);for(let e=0;e<c;e++){let t=l[e];t&&(u[t.lane]=e)}for(let i=c;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),c,d,f=o===`estimate`||s.has(e);if(a!==void 0&&this.options.lanes>1){c=a;let e=u[c],r=e===void 0?void 0:l[e];d=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?l[i-1]:this.getFurthestMeasurement(l,i);d=e?e.end+this.options.gap:t+n,c=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,c)}let p=s.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=d+m;l[i]={index:i,start:d,size:m,end:h,key:e,lane:c},u[c]=i}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=wQ(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?zQ({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=wQ(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start<this.getScrollOffset()+this.scrollAdjustments:this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this))&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=wQ(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return TQ(t[RQ(0,t.length-1,e=>TQ(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&EQ(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,n&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior=`auto`,this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}));this.scheduleScrollReconcile()}},RQ=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function zQ({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=RQ(0,i,a,n),s=o;if(r===1)for(;s<i&&e[s].end<n+t;)s++;else if(r>1){let a=Array(r).fill(0);for(;s<i&&a.some(e=>e<n+t);){let t=e[s];a[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var BQ=typeof document<`u`?b.useLayoutEffect:b.useEffect;function VQ({useFlushSync:e=!0,...t}){let n=b.useReducer(()=>({}),{})[1],r={...t,onChange:(r,i)=>{var a;e&&i?(0,At.flushSync)(n):n(),(a=t.onChange)==null||a.call(t,r,i)}},[i]=b.useState(()=>new LQ(r));return i.setOptions(r),BQ(()=>i._didMount(),[]),BQ(()=>i._willUpdate()),i}function HQ(e){return VQ({observeElementRect:jQ,observeElementOffset:PQ,scrollToFn:IQ,...e})}var UQ=8,WQ=520,GQ=2,KQ=()=>(0,q.jsx)(`div`,{"data-testid":`ticket-diff-resize-placeholder`,className:`space-y-4 px-3 py-3`,children:[{gutter:`w-8`,code:`w-[68%]`},{gutter:`w-10`,code:`w-[54%]`},{gutter:`w-8`,code:`w-[74%]`},{gutter:`w-6`,code:`w-[38%]`},{gutter:`w-10`,code:`w-[82%]`},{gutter:`w-7`,code:`w-[61%]`},{gutter:`w-9`,code:`w-[48%]`},{gutter:`w-8`,code:`w-[71%]`},{gutter:`w-11`,code:`w-[57%]`},{gutter:`w-7`,code:`w-[66%]`},{gutter:`w-9`,code:`w-[43%]`},{gutter:`w-8`,code:`w-[76%]`}].map((e,t)=>(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-resize-placeholder-row`,className:`flex items-center gap-4`,children:[(0,q.jsx)(`div`,{className:J(`h-4 rounded bg-muted/80`,e.gutter)}),(0,q.jsx)(`div`,{className:J(`h-4 rounded bg-muted/60`,e.code)})]},`${e.gutter}-${e.code}-${t}`))}),qQ=({additions:e,deletions:t,fileCount:n})=>n===null?[{key:`additions`,content:`+${e}`,className:`font-mono text-emerald-400`},{key:`deletions`,content:`-${t}`,className:`font-mono text-rose-400`}]:[{key:`files`,content:`${n} file${n===1?``:`s`}`,className:`text-muted-foreground`},{key:`additions`,content:`+${e}`,className:`font-mono text-emerald-400`},{key:`deletions`,content:`-${t}`,className:`font-mono text-rose-400`}],JQ=({control:e,mode:t})=>typeof e==`function`?e(t):e??null,YQ=e=>e.reduce((e,t)=>e+t.hunks.reduce((e,t)=>e+t.changes.length,0),0),XQ=e=>sD(e),ZQ=(e,t)=>{let n=`oldPath`in e&&typeof e.oldPath==`string`?t(e.oldPath):``,r=`newPath`in e&&typeof e.newPath==`string`?t(e.newPath):``;return[...new Set([r,n].filter(e=>e&&e!==`/dev/null`))]},QQ=e=>e.subject_type===`file`,$Q=e=>e.subject_type===`line`,e$=`border-sky-400/30 bg-sky-400/10 text-sky-100`,t$=({context:e,comment:t,reviewDraftInput:n,canEdit:r,autoFocus:i,isReadOnly:a,hasSavedComment:o,onReviewDraftInputChange:s,onCancelReviewDraft:c,onEditReviewDraft:l,onRemoveReviewDraft:u,onSaveReviewDraft:d})=>{let f=(0,b.useRef)(null),[p,m]=(0,b.useState)(()=>n),h=XQ(e.change);return(0,b.useEffect)(()=>{!i||a||f.current?.focus({preventScroll:!0})},[i,a]),(0,q.jsxs)(`div`,{className:`rounded-xl border border-sky-500/20 bg-sky-500/8 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(Z,{variant:`outline`,className:e$,children:`Manual`}),(0,q.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wide text-sky-100/80`,children:o?`Comment on line ${h}`:`Add a comment to line ${h}`})]}),(0,q.jsxs)(`div`,{className:`mt-2 space-y-3`,children:[a?(0,q.jsx)(`div`,{className:`whitespace-pre-wrap rounded-xl border border-sky-500/15 bg-background/70 px-3 py-2.5 text-xs text-foreground`,children:t}):(0,q.jsx)(kg,{ref:f,"aria-label":`Review comment for ${e.filePath}`,value:p,onChange:e=>{m(e.target.value),s(e.target.value)},disabled:!r,className:`min-h-20 text-xs`,placeholder:`Add a review comment for this change`}),(0,q.jsx)(`div`,{className:`flex gap-2`,children:a?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:`outline`,onClick:()=>{l(e.commentKey)},disabled:!r,children:[(0,q.jsx)(Wy,{className:`h-3.5 w-3.5`}),`Edit`]}),(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:()=>{u(e.commentKey)},disabled:!r,children:`Remove`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Y,{type:`button`,size:`xs`,onClick:()=>{d(e,p)},disabled:!r||!p.trim(),children:`Add comment`}),(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:c,children:`Cancel`})]})})]})]})},n$=e=>e===`high`?`destructive`:e===`medium`?`warning`:`outline`,r$=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,i$=({finding:e,isSelected:t,onToggle:n})=>{let[r,i]=(0,b.useState)(!1);return(0,q.jsxs)(`div`,{className:`rounded-xl border border-slate-400/30 bg-slate-400/10 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,q.jsx)(ly,{className:`h-3.5 w-3.5 flex-shrink-0`}),(0,q.jsx)(`div`,{children:`Finding ${e.ordinal}`}),(0,q.jsx)(Z,{variant:n$(e.severity),className:`normal-case`,children:e.severity})]}),(0,q.jsx)(`div`,{className:`mt-2 text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap text-xs text-foreground`,children:e.what_text})]}),(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:t?`default`:`outline`,onClick:n,className:`gap-1.5`,children:[!t&&(0,q.jsx)(Dv,{className:`h-3.5 w-3.5`}),t?`Selected`:`Fix`]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:r$(e)}),e.file_path&&(0,q.jsx)(`span`,{children:e.file_path})]}),(e.why_text||e.fix_text)&&(0,q.jsxs)(`div`,{className:`mt-3`,children:[(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`ghost`,onClick:()=>{i(e=>!e)},children:r?`Hide details`:`Details`}),r&&(0,q.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-xl border border-border bg-background/60 p-3 text-xs text-foreground`,children:[e.why_text&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:`Why it matters`}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap`,children:e.why_text})]}),e.fix_text&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`font-medium text-muted-foreground`,children:`Requested fix`}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap`,children:e.fix_text})]})]})]})]})},a$=e=>e.old_line_number!==null&&e.new_line_number!==null?`old ${e.old_line_number}, new ${e.new_line_number}`:e.new_line_number===null?e.old_line_number===null?`line unavailable`:`old ${e.old_line_number}`:`new ${e.new_line_number}`,o$=e=>e.old_line_number!==null||e.new_line_number!==null,s$=e=>e.kind===`review`?`Review summary`:QQ(e)?`File comment`:o$(e)||$Q(e)?`Inline comment`:`File comment`,c$=({comment:e,isSelected:t,onToggle:n})=>(0,q.jsxs)(`div`,{className:`rounded-xl border border-violet-400/30 bg-violet-400/10 p-3 shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,q.jsx)(Z,{variant:`outline`,className:`border-violet-400/40 bg-violet-400/10 text-violet-100`,children:`GitHub`}),(0,q.jsx)(`span`,{children:s$(e)}),e.is_outdated&&(0,q.jsx)(Z,{variant:`warning`,className:`normal-case`,children:`Outdated`})]}),(0,q.jsx)(`div`,{className:`mt-2 text-sm font-medium text-foreground`,children:e.author}),(0,q.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-xs text-foreground`,children:e.body})]}),(0,q.jsxs)(Y,{type:`button`,size:`xs`,variant:t?`default`:`outline`,onClick:n,className:`gap-1.5`,children:[!t&&(0,q.jsx)(Dv,{className:`h-3.5 w-3.5`}),t?`Selected`:`Fix`]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[e.file_path&&(0,q.jsx)(`span`,{children:e.file_path}),e.kind===`inline`&&!QQ(e)&&o$(e)&&(0,q.jsx)(`span`,{children:a$(e)}),(0,q.jsx)(`span`,{children:new Date(e.updated_at).toLocaleString()}),(0,q.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-violet-200 underline underline-offset-2 transition-colors hover:text-violet-100`,children:`Open on GitHub`})]})]}),l$=({allDiffFiles:e,resolveFilePath:t,normalizeDiffPath:n,reviewFindings:r})=>{let i=new Map,a=new Map,o=[],s=new Map;for(let t of e)for(let e of ZQ(t,n))s.has(e)||s.set(e,t);for(let e of r){let n=e.file_path,r=n?s.get(n):null;if(!r||!n){o.push(e);continue}let c=t(r),l=null;for(let t of r.hunks){for(let n of t.changes)if(lD(e,n)){l=yT(n);break}if(l)break}if(l){let t=i.get(c)??new Map,n=t.get(l)??[];t.set(l,[...n,e]),i.set(c,t);continue}a.set(c,[...a.get(c)??[],e])}return{inlineByFilePath:i,fileLevelByFilePath:a,globalFindings:o}},u$=({allDiffFiles:e,resolveFilePath:t,normalizeDiffPath:n,githubComments:r})=>{let i=new Map,a=new Map,o=[],s=new Map;for(let t of e)for(let e of ZQ(t,n))s.has(e)||s.set(e,t);for(let e of r){if(e.kind===`review`||!e.file_path){o.push(e);continue}let n=s.get(e.file_path);if(!n){o.push(e);continue}let r=t(n);if(QQ(e)||!e.subject_type&&!o$(e)){a.set(r,[...a.get(r)??[],e]);continue}let c=null;for(let t of n.hunks){for(let n of t.changes)if(cD(e,n)){c=yT(n);break}if(c)break}if(!c){o.push(e);continue}let l=i.get(r)??new Map,u=l.get(c)??[];l.set(c,[...u,e]),i.set(r,l)}return{inlineByFilePath:i,fileLevelByFilePath:a,fallbackComments:o}},d$=({filePath:e,hunks:t,activeReviewTarget:n,editingReviewCommentKey:r,reviewDraftInstanceKey:i,reviewDraftInput:a,reviewComments:o,reviewFindingsByChangeKey:s,githubCommentsByChangeKey:c,selectedReviewFindingIds:l,selectedGitHubCommentIds:u,canEditActiveReviewDraft:d,onToggleReviewFindingSelection:f,onToggleGitHubCommentSelection:p,onReviewDraftInputChange:m,onCancelReviewDraft:h,onEditReviewDraft:g,onRemoveReviewDraft:_,onSaveReviewDraft:v})=>{let y=new Map(o.map(e=>[hD(e.filePath,e.changeKey),e]));return t.reduce((t,o)=>{for(let b of o.changes){let x=yT(b),S=hD(e,x),C=n?.commentKey===S,w=y.get(S),T=r===S,E=s.get(x)??[],D=c.get(x)??[];if(!C&&!w&&E.length===0&&D.length===0)continue;let O={filePath:e,changeKey:x,commentKey:S,hunk:o,change:b},k=!!w&&!T&&!C,A=k?w?.comment??``:a;t[x]=(0,q.jsxs)(`div`,{className:`space-y-3`,children:[E.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:l.includes(e.id),onToggle:()=>{f(e.id)}},e.id)),D.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:u.includes(e.id),onToggle:()=>{p(e.id)}},e.id)),(C||w)&&(0,q.jsx)(t$,{context:O,comment:w?.comment??``,reviewDraftInput:A,canEdit:d,autoFocus:C||T,isReadOnly:k,hasSavedComment:!!w,onReviewDraftInputChange:m,onCancelReviewDraft:h,onEditReviewDraft:g,onRemoveReviewDraft:_,onSaveReviewDraft:v},`${i??O.commentKey}:${k?`readonly`:`editable`}`)]})}return t},{})},f$=e=>e.reduce((e,t)=>{for(let n of t.changes)e.set(yT(n),{hunk:t,change:n});return e},new Map),p$=(0,b.memo)(({selectedDiffPath:e,sidebarFiles:t,diffResponse:n,isDiffLoading:r,diffError:i,allDiffFiles:a,renderedFiles:o,viewType:s,onViewTypeChange:c,onRetry:l,activeReviewTarget:u,editingReviewCommentKey:d,reviewDraftInstanceKey:f,reviewDraftInput:p,reviewComments:m,reviewFindings:h,githubComments:g,selectedReviewFindingIds:_,selectedGitHubCommentIds:v,canSelectReviewTarget:y,canEditActiveReviewDraft:x,reviewFindingsError:S,gitHubCommentsError:C,hasStaleReviewFindings:w,onSelectReviewTarget:T,onToggleReviewFindingSelection:E,onToggleGitHubCommentSelection:D,onReviewDraftInputChange:O,onCancelReviewDraft:k,onEditReviewDraft:A,onRemoveReviewDraft:j,onSaveReviewDraft:M,diffThemeClassName:N,resolveFilePath:P,normalizeDiffPath:F,emptyStateTitle:I=`No changes to show.`,emptyStateDescription:L=null,filePickerControl:R,reviewSummaryControl:z,extraHeaderControl:ee,headerLayout:B=`stacked`,surfaceVariant:V=`default`,showViewTypeToggle:H=!0,gutterVariant:te=`default`,isResizing:U=!1,resizePlaceholderLineThreshold:ne=1/0,onVisibleFilePathsChange:W})=>{let re=(0,b.useRef)(null),{mode:ie,ref:ae}=Qb({compactAt:V===`flat`?460:620,tightAt:V===`flat`?360:500}),G=!!n?.diff?.trim()||o.length>0||(n?.files.length??0)>0,oe=(0,b.useMemo)(()=>YQ(o),[o]),se=e===`all`&&o.length>=UQ,ce=U&&oe>ne,le=(0,b.useMemo)(()=>o.map(e=>P(e)).join(`
173
+ `),[o,P]),ue=HQ({count:se?o.length:0,getScrollElement:()=>re.current,estimateSize:()=>WQ,overscan:GQ,getItemKey:e=>{let t=o[e];return t?`${P(t)}:${t.type??`modify`}`:e},initialRect:{width:0,height:900}}),de=(0,b.useMemo)(()=>new Map(n?.files.map(e=>[e.path,e])??[]),[n?.files]),K=(0,b.useMemo)(()=>l$({allDiffFiles:a,resolveFilePath:P,normalizeDiffPath:F,reviewFindings:w?[]:h}),[a,w,F,P,h]),fe=(0,b.useMemo)(()=>u$({allDiffFiles:a,resolveFilePath:P,normalizeDiffPath:F,githubComments:g}),[a,g,F,P]);(0,b.useEffect)(()=>{let e=re.current;e&&(e.scrollTop=0)},[e]),(0,b.useEffect)(()=>{let e=re.current;return()=>{window.getSelection()?.removeAllRanges(),e&&(e.scrollTop=0)}},[le]);let pe=ue.getVirtualItems(),me=(0,b.useMemo)(()=>se?pe.map(e=>P(o[e.index])):o.map(e=>P(e)),[o,P,se,pe]);(0,b.useEffect)(()=>{W?.(me)},[W,me]);let he=se&&pe.length>0?pe[0]?.start??0:0,ge=se&&pe.length>0?Math.max(0,ue.getTotalSize()-(pe[pe.length-1]?.end??0)):0,_e=se?pe.map(e=>({file:o[e.index],virtualItem:e})):o.map(e=>({file:e,virtualItem:null})),ve=e===`all`?null:t.find(t=>t.path===e)??null,ye=e===`all`?qQ({additions:n?.stats?.additions??0,deletions:n?.stats?.deletions??0,fileCount:n?.stats?.files_changed??null}):ve?qQ({additions:ve.additions,deletions:ve.deletions,fileCount:null}):[],be=(0,b.useMemo)(()=>H?(0,q.jsxs)(hQ,{type:`single`,size:`sm`,variant:`outline`,value:s,onValueChange:e=>{(e===`split`||e===`unified`)&&c(e)},children:[(0,q.jsx)(gQ,{value:`unified`,children:`Unified`}),(0,q.jsx)(gQ,{value:`split`,children:`Split`})]}):null,[c,H,s]),xe=(0,b.useMemo)(()=>[JQ({control:R,mode:ie}),JQ({control:z,mode:ie})].filter(Boolean),[R,ie,z]),Se=be||xe.length>0||ee;return(0,q.jsxs)(`section`,{className:J(`flex min-h-0 flex-1 flex-col overflow-hidden`,V===`default`?`rounded-2xl border border-border bg-background/30`:`bg-transparent`),children:[(0,q.jsx)(`div`,{ref:ae,"data-responsive-mode":ie,"data-testid":`ticket-diff-header`,className:J(`grid min-w-0 items-start gap-x-3 gap-y-2 border-b px-4 py-3`,V===`default`?`border-border`:`border-border/70 px-3`,B===`stacked`?ee?`grid-cols-[minmax(0,1fr)_auto]`:`grid-cols-[minmax(0,1fr)]`:Se?`grid-cols-[minmax(0,1fr)_auto]`:`grid-cols-[minmax(0,1fr)]`),children:B===`stacked`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-left`,className:`grid min-w-0 gap-2`,children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-info`,className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e===`all`?`All changes`:e}),ye.length>0&&(0,q.jsx)(`div`,{className:`mt-1 flex items-center gap-3 whitespace-nowrap text-xs`,children:ye.map(e=>(0,q.jsx)(`span`,{className:e.className,children:e.content},e.key))})]}),be||xe.length>0?(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-controls`,className:`flex min-w-0 flex-wrap items-center gap-2 justify-start`,children:[be?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-primary-controls`,className:`shrink-0`,children:be}):null,xe.length>0?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-secondary-controls`,className:`flex min-w-0 items-center gap-2 justify-start`,children:xe.map((e,t)=>(0,q.jsx)(`div`,{className:`min-w-0 shrink-0`,children:e},`header-secondary-control-${t+1}`))}):null]}):null]}),ee?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-close`,className:`flex shrink-0 items-start justify-end`,children:ee}):null]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-info`,className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e===`all`?`All changes`:e}),ye.length>0&&(0,q.jsx)(`div`,{className:`mt-1 flex items-center gap-3 whitespace-nowrap text-xs`,children:ye.map(e=>(0,q.jsx)(`span`,{className:e.className,children:e.content},e.key))})]}),Se?(0,q.jsxs)(`div`,{"data-testid":`ticket-diff-header-inline-controls`,className:`flex min-w-0 flex-wrap items-start justify-end gap-2`,children:[be?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-primary-controls`,className:`shrink-0`,children:be}):null,xe.length>0?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-secondary-controls`,className:`flex min-w-0 flex-wrap items-center justify-end gap-2`,children:xe.map((e,t)=>(0,q.jsx)(`div`,{className:`min-w-0 shrink-0`,children:e},`header-secondary-control-${t+1}`))}):null,ee?(0,q.jsx)(`div`,{"data-testid":`ticket-diff-header-close`,className:`flex shrink-0 items-start justify-end`,children:ee}):null]}):null]})}),(0,q.jsx)(`div`,{ref:re,"data-testid":`ticket-diff-scroll-region`,className:`min-h-0 flex-1 overflow-auto`,children:(0,q.jsxs)(`div`,{className:J(`min-h-full pb-4 pt-4`,V===`default`?`px-4`:`px-0`),children:[r&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`Loading diff...`}),!r&&i&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-4 text-center`,children:[(0,q.jsx)(`p`,{className:`max-w-md text-sm text-rose-300`,children:i}),(0,q.jsx)(Y,{type:`button`,variant:`outline`,onClick:l,children:`Retry`})]}),!r&&!i&&n&&!G&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-2 text-center`,children:[(0,q.jsx)(`div`,{className:`text-sm text-foreground`,children:I}),L&&(0,q.jsx)(`div`,{className:`max-w-md text-xs text-muted-foreground`,children:L})]}),!r&&!i&&n&&G&&e!==`all`&&o.length===0&&(0,q.jsxs)(`div`,{className:`flex h-full min-h-48 flex-col items-center justify-center gap-3 text-center`,children:[(0,q.jsx)(`div`,{className:`text-sm text-foreground`,children:`No renderable diff for this file in the UI.`}),(0,q.jsx)(`div`,{className:`max-w-md text-xs text-muted-foreground`,children:e})]}),!r&&!i&&n&&G&&o.length>0&&ce&&(0,q.jsx)(KQ,{}),!r&&!i&&n&&G&&o.length>0&&!ce&&(0,q.jsxs)(`div`,{className:J(`archon-diff-viewer`,te===`compact`&&`archon-diff-viewer--compact-gutter`,e===`all`&&V===`default`&&`space-y-6`,e===`all`&&V===`flat`&&`space-y-0`,N),children:[S&&(0,q.jsx)(`div`,{className:`rounded-xl border border-dashed border-border bg-background/40 px-4 py-3 text-xs text-muted-foreground`,children:S}),C&&(0,q.jsx)(`div`,{className:`rounded-xl border border-dashed border-border bg-background/40 px-4 py-3 text-xs text-muted-foreground`,children:C}),K.globalFindings.length>0&&(0,q.jsxs)(`section`,{className:`rounded-xl border border-border bg-card/70 p-3`,children:[(0,q.jsx)(`div`,{className:`mb-3 text-sm font-semibold text-foreground`,children:`Review findings`}),(0,q.jsx)(`div`,{className:`space-y-3`,children:K.globalFindings.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))})]}),e===`all`&&fe.fallbackComments.length>0&&(0,q.jsxs)(`section`,{className:`rounded-xl border border-border bg-card/70 p-3`,children:[(0,q.jsx)(`div`,{className:`mb-3 text-sm font-semibold text-foreground`,children:`GitHub review comments`}),(0,q.jsx)(`div`,{className:`space-y-3`,children:fe.fallbackComments.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))})]}),he>0&&(0,q.jsx)(`div`,{style:{height:he}}),_e.map(({file:t,virtualItem:n})=>{let r=P(t),i=de.get(r),a=f$(t.hunks),o=K.inlineByFilePath.get(r)??new Map,c=fe.inlineByFilePath.get(r)??new Map,l=K.fileLevelByFilePath.get(r)??[],h=fe.fileLevelByFilePath.get(r)??[],g=d?m.find(e=>hD(e.filePath,e.changeKey)===d)??null:null,b=[...m.filter(e=>e.filePath===r).map(e=>e.changeKey),...u?.filePath===r?[u.changeKey]:[],...g?.filePath===r?[g.changeKey]:[]],S=d$({filePath:r,hunks:t.hunks,activeReviewTarget:u,editingReviewCommentKey:d,reviewDraftInstanceKey:f,reviewDraftInput:p,reviewComments:m,reviewFindingsByChangeKey:o,githubCommentsByChangeKey:c,selectedReviewFindingIds:_,selectedGitHubCommentIds:v,canEditActiveReviewDraft:x,onToggleReviewFindingSelection:E,onToggleGitHubCommentSelection:D,onReviewDraftInputChange:O,onCancelReviewDraft:k,onEditReviewDraft:A,onRemoveReviewDraft:j,onSaveReviewDraft:M}),C=(0,q.jsx)(aE,{diffType:t.type,hunks:t.hunks,tokens:t.tokens,viewType:s,selectedChanges:[...new Set(b)],widgets:S,renderGutter:({change:e,side:t,renderDefault:n,wrapInAnchor:r,inHoverState:i})=>{if(!e)return r(n());let a=yT(e),o=t===`new`,c=y&&t===`new`,l=s===`unified`&&e.type===`normal`&&t===`new`?null:r(n());return(0,q.jsxs)(`div`,{className:J(`flex items-center justify-end pr-1`,te===`compact`?`gap-1 pr-0.5`:`gap-2`),children:[l,o&&(0,q.jsx)(`span`,{"data-diff-gutter-action-slot":`true`,className:[te===`compact`?`flex size-5 shrink-0 items-center justify-center rounded-md border border-emerald-300/80 bg-emerald-400 text-[#07130d] shadow-[0_8px_20px_rgba(16,185,129,0.22)] transition-all`:`flex size-6 shrink-0 items-center justify-center rounded-md border border-emerald-300/80 bg-emerald-400 text-[#07130d] shadow-[0_8px_20px_rgba(16,185,129,0.22)] transition-all`,c&&i?`border-emerald-200 bg-emerald-300 opacity-100`:`opacity-0`,!c&&`pointer-events-none`].join(` `),"aria-hidden":`true`,children:(0,q.jsx)(Dv,{className:te===`compact`?`h-3 w-3`:`h-3.5 w-3.5`})}),(0,q.jsx)(`span`,{className:`sr-only`,children:a})]})},gutterEvents:{onClick:({change:e})=>{if(!y||!e)return;let t=a.get(yT(e));t&&T({filePath:r,changeKey:yT(e),commentKey:hD(r,yT(e)),hunk:t.hunk,change:t.change})}},codeEvents:{onClick:({change:e})=>{if(!y||!e)return;let t=a.get(yT(e));t&&T({filePath:r,changeKey:yT(e),commentKey:hD(r,yT(e)),hunk:t.hunk,change:t.change})}},children:e=>e.map(e=>(0,q.jsx)(eE,{hunk:e},`${r}-${e.content}`))});return e===`all`?(0,q.jsx)(`div`,{"data-index":n?.index,ref:n?ue.measureElement:void 0,children:(0,q.jsxs)(`section`,{className:J(V===`default`?`rounded-xl border border-border bg-card/70`:`border-t border-border/70 bg-transparent first:border-t-0`),children:[(0,q.jsxs)(`div`,{className:J(`sticky top-0 z-20 border-b text-xs font-medium text-foreground`,V===`default`?`rounded-t-xl border-border bg-card px-4 py-3`:`border-border/70 bg-background/95 px-3 py-2.5 backdrop-blur-sm`),children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[`oldPath`in t&&typeof t.oldPath==`string`&&F(t.oldPath)===`/dev/null`&&(0,q.jsx)(Z,{variant:`success`,className:`shrink-0`,children:`New file`}),(0,q.jsx)(`span`,{children:r})]}),i&&(0,q.jsxs)(`div`,{className:`mt-1 flex items-center gap-2 text-xs`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-emerald-400`,children:[`+`,i.additions]}),(0,q.jsxs)(`span`,{className:`font-mono text-rose-400`,children:[`-`,i.deletions]})]})]}),(0,q.jsxs)(`div`,{className:J(`overflow-x-auto`,V===`default`?`p-3`:`px-0 py-3`),children:[l.length>0&&(0,q.jsx)(`div`,{className:J(`mb-3 space-y-3`,V===`flat`&&`px-3`),children:l.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))}),h.length>0&&(0,q.jsx)(`div`,{className:J(`mb-3 space-y-3`,V===`flat`&&`px-3`),children:h.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))}),C]})]})},`${r}-${t.type??`modify`}`):(0,q.jsxs)(`div`,{"data-index":n?.index,ref:n?ue.measureElement:void 0,children:[l.length>0&&(0,q.jsx)(`div`,{className:`mb-3 space-y-3`,children:l.map(e=>(0,q.jsx)(i$,{finding:e,isSelected:_.includes(e.id),onToggle:()=>{E(e.id)}},e.id))}),h.length>0&&(0,q.jsx)(`div`,{className:`mb-3 space-y-3`,children:h.map(e=>(0,q.jsx)(c$,{comment:e,isSelected:v.includes(e.id),onToggle:()=>{D(e.id)}},e.id))}),C]},`${r}-${t.type??`modify`}`)}),ge>0&&(0,q.jsx)(`div`,{style:{height:ge}})]})]})})]})});p$.displayName=`TicketChangesDiffPanel`;var m$=e=>J(`group`,e?`border-sky-700 bg-card/95 shadow-sm`:`border-border/50 bg-transparent text-muted-foreground hover:border-border/80 hover:bg-accent/60 hover:text-accent-foreground hover:shadow-sm`),h$={modified:`border-amber-500/40 bg-amber-500/10 text-amber-200`,added:`border-emerald-500/40 bg-emerald-500/10 text-emerald-200`,deleted:`border-rose-500/40 bg-rose-500/10 text-rose-200`,renamed:`border-sky-500/40 bg-sky-500/10 text-sky-200`,untracked:`border-violet-500/40 bg-violet-500/10 text-violet-200`,typechanged:`border-slate-500/40 bg-slate-500/10 text-slate-200`},g$={modified:`Modified`,added:`Added`,deleted:`Deleted`,renamed:`Renamed`,untracked:`Untracked`,typechanged:`Type changed`},_$=e=>{let t=e.split(/[\\/]/);return t[t.length-1]||e},v$=({selectionWarning:e,gitError:t,sidebarFiles:n,commentCountByPath:r,commentCountTone:i,isGitStatusLoading:a,selectedPaths:o,selectedDiffPath:s,allFilesSelected:c,diffStats:l,title:u=`Changed files`,allChangesDescription:d=`Review the full workspace diff.`,enableSelection:f=!0,onToggleSelectAll:p,onSelectDiffPath:m,onTogglePath:h})=>{let g=i===`bundle_diff`?`rounded-full border border-violet-400/40 bg-violet-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-violet-100`:`rounded-full border border-sky-400/40 bg-sky-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-sky-100`;return(0,q.jsxs)(`aside`,{className:`flex min-h-0 h-full flex-col between overflow-hidden rounded-2xl border border-border bg-background/40`,children:[(e||t)&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-border p-4`,children:[e&&(0,q.jsx)(`div`,{className:`rounded-xl border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100`,children:e}),t&&(0,q.jsx)(`div`,{className:`rounded-xl border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100`,children:t})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-b border-border px-4 py-3`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:u}),(0,q.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[n.length,` file`,n.length===1?``:`s`,` changed`]})]}),f&&(0,q.jsx)(Y,{type:`button`,variant:`outline`,size:`sm`,onClick:p,disabled:n.length===0,children:c?`Unselect all`:`Select all`})]}),(0,q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:[a&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`Loading file list...`}),!a&&n.length===0&&(0,q.jsx)(`div`,{className:`flex h-full min-h-48 items-center justify-center text-sm text-muted-foreground`,children:`No changes to review.`}),!a&&n.length>0&&(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>{m(`all`)},className:J(`flex w-full items-start justify-between gap-3 rounded-xl border px-2.5 py-2 text-left transition-colors`,m$(s===`all`)),children:(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,q.jsx)(`div`,{className:`text-xs font-semibold text-foreground`,children:`All changes`}),l&&(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`text-muted-foreground transition-colors group-hover:text-foreground/70`,children:[l.files_changed,` file`,l.files_changed===1?``:`s`]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,l.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,l.deletions]})]})]}),(0,q.jsx)(`div`,{className:`mt-1 flex w-full flex-1 text-xs text-muted-foreground transition-colors group-hover:text-foreground/70`,children:d})]})}),n.map(e=>{let t=f&&o.has(e.path),n=s===e.path,i=r.get(e.path)??0;return(0,q.jsxs)(`div`,{className:J(`flex items-start gap-2.5 rounded-xl border px-2.5 py-2 transition-colors`,m$(n)),children:[f&&(0,q.jsx)(`input`,{type:`checkbox`,"aria-label":e.path,checked:t,onChange:()=>{h(e.path)},className:`mt-0.5 h-4 w-4 rounded border-border bg-background text-primary`}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{m(e.path)},className:`min-w-0 flex-1 text-left cursor-pointer`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex flex-1 items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,children:_$(e.path)}),i>0&&(0,q.jsx)(`span`,{"aria-label":`${i} comment${i===1?``:`s`} in ${e.path}`,className:g,children:i})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,e.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,e.deletions]})]})]}),(0,q.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-1.5 text-[11px]`,children:[e.status&&(0,q.jsx)(Z,{variant:`outline`,className:h$[e.status],children:g$[e.status]}),e.staged&&(0,q.jsx)(Z,{variant:`outline`,children:`Staged`}),e.unstaged&&(0,q.jsx)(Z,{variant:`outline`,children:`Unstaged`}),e.conflicted&&(0,q.jsx)(Z,{variant:`destructive`,children:`Conflicted`}),e.originalPath&&(0,q.jsx)(`span`,{className:`break-all font-mono text-[11px] text-muted-foreground transition-colors group-hover:text-foreground/70`,children:e.status===`renamed`?`from ${e.originalPath}`:e.originalPath})]})]})]},`${e.path}:${e.originalPath??``}`)})]})]})]})},y$=[`[--diff-background-color:transparent]`,`[--diff-text-color:rgb(226_232_240)]`,`[--diff-selection-background-color:rgba(148,163,184,0.2)]`,`[--diff-gutter-insert-background-color:rgba(34,197,94,0.16)]`,`[--diff-gutter-delete-background-color:rgba(244,63,94,0.16)]`,`[--diff-gutter-selected-background-color:rgba(148,163,184,0.12)]`,`[--diff-code-insert-background-color:rgba(34,197,94,0.08)]`,`[--diff-code-delete-background-color:rgba(244,63,94,0.08)]`,`[--diff-code-insert-edit-background-color:rgba(34,197,94,0.22)]`,`[--diff-code-delete-edit-background-color:rgba(244,63,94,0.22)]`,`[--diff-code-selected-background-color:rgba(148,163,184,0.12)]`,`[--diff-font-family:var(--font-mono)]`,`[&_.diff]:w-full`,`[&_.diff]:border-collapse`,`[&_.diff]:font-mono`,`[&_.diff-code]:whitespace-pre-wrap`,`[&_.diff-code]:break-words`,`[&_.diff-gutter]:select-none`].join(` `),b$=25e4,x$=2e3,S$=new Map,C$=e=>e?e.split(`
173
174
  `).length:0,w$=e=>{let t=e.diff??``;return t?t.length<=b$&&C$(t)<=x$:!0},T$=({scope:e,projectId:t,ticketId:n})=>e===`project_root`?t?`project_root:${t}`:null:n?`ticket:${t??`none`}:${n}`:null,E$=e=>e?S$.get(e)??null:null,D$=({cacheKey:e,diffResponse:t,gitStatus:n})=>{let r=n.workspace_signature?.trim();if(!(!e||!r)){if(!w$(t)){S$.delete(e);return}S$.set(e,{diffResponse:t,gitStatus:n,workspaceSignature:r})}},O$=e=>{e&&S$.delete(e)},k$={css:`css`,html:`markup`,htm:`markup`,js:`javascript`,jsx:`jsx`,json:`json`,md:`markdown`,markdown:`markdown`,sh:`bash`,ts:`typescript`,tsx:`tsx`,yaml:`yaml`,yml:`yaml`},A$=e=>{if(!e)return null;let t=e.split(` -> `),n=t[t.length-1]??e,r=n.split(`/`),i=r[r.length-1]??n,a=``;if(i.includes(`.`)){let e=i.split(`.`);a=e[e.length-1]?.toLowerCase()??``}return k$[a]??null},j$=new Set,M$=e=>{e&&j$.forEach(t=>t(e))},N$=e=>(j$.add(e),()=>{j$.delete(e)}),P$=300,F$=(e,t={})=>{let n=t.dedupeMs??P$,r=0,i=()=>{if(document.visibilityState!==`visible`)return;let t=Date.now();t-r<n||(r=t,e())};return window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,i),()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,i)}},I$=s(((e,t)=>{t.exports=r;var n=Object.prototype.hasOwnProperty;function r(){for(var e={},t=0;t<arguments.length;t++){var r=arguments[t];for(var i in r)n.call(r,i)&&(e[i]=r[i])}return e}})),L$=s(((e,t)=>{t.exports=r;var n=r.prototype;n.space=null,n.normal={},n.property={};function r(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}})),R$=s(((e,t)=>{var n=I$(),r=L$();t.exports=i;function i(e){for(var t=e.length,i=[],a=[],o=-1,s,c;++o<t;)s=e[o],i.push(s.property),a.push(s.normal),c=s.space;return new r(n.apply(null,i),n.apply(null,a),c)}})),z$=s(((e,t)=>{t.exports=n;function n(e){return e.toLowerCase()}})),B$=s(((e,t)=>{t.exports=r;var n=r.prototype;n.space=null,n.attribute=null,n.property=null,n.boolean=!1,n.booleanish=!1,n.overloadedBoolean=!1,n.number=!1,n.commaSeparated=!1,n.spaceSeparated=!1,n.commaOrSpaceSeparated=!1,n.mustUseProperty=!1,n.defined=!1;function r(e,t){this.property=e,this.attribute=t}})),V$=s((e=>{var t=0;e.boolean=n(),e.booleanish=n(),e.overloadedBoolean=n(),e.number=n(),e.spaceSeparated=n(),e.commaSeparated=n(),e.commaOrSpaceSeparated=n();function n(){return 2**++t}})),H$=s(((e,t)=>{var n=B$(),r=V$();t.exports=o,o.prototype=new n,o.prototype.defined=!0;var i=[`boolean`,`booleanish`,`overloadedBoolean`,`number`,`commaSeparated`,`spaceSeparated`,`commaOrSpaceSeparated`],a=i.length;function o(e,t,o,c){var l=-1,u;for(s(this,`space`,c),n.call(this,e,t);++l<a;)u=i[l],s(this,u,(o&r[u])===r[u])}function s(e,t,n){n&&(e[t]=n)}})),U$=s(((e,t)=>{var n=z$(),r=L$(),i=H$();t.exports=a;function a(e){var t=e.space,a=e.mustUseProperty||[],o=e.attributes||{},s=e.properties,c=e.transform,l={},u={},d,f;for(d in s)f=new i(d,c(o,d),s[d],t),a.indexOf(d)!==-1&&(f.mustUseProperty=!0),l[d]=f,u[n(d)]=d,u[n(f.attribute)]=d;return new r(l,u,t)}})),W$=s(((e,t)=>{t.exports=U$()({space:`xlink`,transform:n,properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}});function n(e,t){return`xlink:`+t.slice(5).toLowerCase()}})),G$=s(((e,t)=>{t.exports=U$()({space:`xml`,transform:n,properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});function n(e,t){return`xml:`+t.slice(3).toLowerCase()}})),K$=s(((e,t)=>{t.exports=n;function n(e,t){return t in e?e[t]:t}})),q$=s(((e,t)=>{var n=K$();t.exports=r;function r(e,t){return n(e,t.toLowerCase())}})),J$=s(((e,t)=>{t.exports=U$()({space:`xmlns`,attributes:{xmlnsxlink:`xmlns:xlink`},transform:q$(),properties:{xmlns:null,xmlnsXLink:null}})})),Y$=s(((e,t)=>{var n=V$(),r=U$(),i=n.booleanish,a=n.number,o=n.spaceSeparated;t.exports=r({transform:s,properties:{ariaActiveDescendant:null,ariaAtomic:i,ariaAutoComplete:null,ariaBusy:i,ariaChecked:i,ariaColCount:a,ariaColIndex:a,ariaColSpan:a,ariaControls:o,ariaCurrent:null,ariaDescribedBy:o,ariaDetails:null,ariaDisabled:i,ariaDropEffect:o,ariaErrorMessage:null,ariaExpanded:i,ariaFlowTo:o,ariaGrabbed:i,ariaHasPopup:null,ariaHidden:i,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:o,ariaLevel:a,ariaLive:null,ariaModal:i,ariaMultiLine:i,ariaMultiSelectable:i,ariaOrientation:null,ariaOwns:o,ariaPlaceholder:null,ariaPosInSet:a,ariaPressed:i,ariaReadOnly:i,ariaRelevant:null,ariaRequired:i,ariaRoleDescription:o,ariaRowCount:a,ariaRowIndex:a,ariaRowSpan:a,ariaSelected:i,ariaSetSize:a,ariaSort:null,ariaValueMax:a,ariaValueMin:a,ariaValueNow:a,ariaValueText:null,role:null}});function s(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}})),X$=s(((e,t)=>{var n=V$(),r=U$(),i=q$(),a=n.boolean,o=n.overloadedBoolean,s=n.booleanish,c=n.number,l=n.spaceSeparated,u=n.commaSeparated;t.exports=r({space:`html`,attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},transform:i,mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:u,acceptCharset:l,accessKey:l,action:null,allow:null,allowFullScreen:a,allowPaymentRequest:a,allowUserMedia:a,alt:null,as:null,async:a,autoCapitalize:null,autoComplete:l,autoFocus:a,autoPlay:a,capture:a,charSet:null,checked:a,cite:null,className:l,cols:c,colSpan:null,content:null,contentEditable:s,controls:a,controlsList:l,coords:c|u,crossOrigin:null,data:null,dateTime:null,decoding:null,default:a,defer:a,dir:null,dirName:null,disabled:a,download:o,draggable:s,encType:null,enterKeyHint:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:a,formTarget:null,headers:l,height:c,hidden:a,high:c,href:null,hrefLang:null,htmlFor:l,httpEquiv:l,id:null,imageSizes:null,imageSrcSet:u,inputMode:null,integrity:null,is:null,isMap:a,itemId:null,itemProp:l,itemRef:l,itemScope:a,itemType:l,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:a,low:c,manifest:null,max:null,maxLength:c,media:null,method:null,min:null,minLength:c,multiple:a,muted:a,name:null,nonce:null,noModule:a,noValidate:a,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforePrint:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextMenu:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:a,optimum:c,pattern:null,ping:l,placeholder:null,playsInline:a,poster:null,preload:null,readOnly:a,referrerPolicy:null,rel:l,required:a,reversed:a,rows:c,rowSpan:c,sandbox:l,scope:null,scoped:a,seamless:a,selected:a,shape:null,size:c,sizes:null,slot:null,span:c,spellCheck:s,src:null,srcDoc:null,srcLang:null,srcSet:u,start:c,step:null,style:null,tabIndex:c,target:null,title:null,translate:null,type:null,typeMustMatch:a,useMap:null,value:s,width:c,wrap:null,align:null,aLink:null,archive:l,axis:null,background:null,bgColor:null,border:c,borderColor:null,bottomMargin:c,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:a,declare:a,event:null,face:null,frame:null,frameBorder:null,hSpace:c,leftMargin:c,link:null,longDesc:null,lowSrc:null,marginHeight:c,marginWidth:c,noResize:a,noHref:a,noShade:a,noWrap:a,object:null,profile:null,prompt:null,rev:null,rightMargin:c,rules:null,scheme:null,scrolling:s,standby:null,summary:null,text:null,topMargin:c,valueType:null,version:null,vAlign:null,vLink:null,vSpace:c,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:a,disableRemotePlayback:a,prefix:null,property:null,results:c,security:null,unselectable:null}})})),Z$=s(((e,t)=>{var n=R$(),r=W$();t.exports=n([G$(),r,J$(),Y$(),X$()])})),Q$=s(((e,t)=>{var n=z$(),r=H$(),i=B$(),a=`data`;t.exports=l;var o=/^data[-\w.:]+$/i,s=/-[a-z]/g,c=/[A-Z]/g;function l(e,t){var s=n(t),c=t,l=i;return s in e.normal?e.property[e.normal[s]]:(s.length>4&&s.slice(0,4)===a&&o.test(t)&&(t.charAt(4)===`-`?c=u(t):t=d(t),l=r),new l(c,t))}function u(e){var t=e.slice(5).replace(s,p);return a+t.charAt(0).toUpperCase()+t.slice(1)}function d(e){var t=e.slice(4);return s.test(t)?e:(t=t.replace(c,f),t.charAt(0)!==`-`&&(t=`-`+t),a+t)}function f(e){return`-`+e.toLowerCase()}function p(e){return e.charAt(1).toUpperCase()}})),$$=s(((e,t)=>{t.exports=r;var n=/[#.]/g;function r(e,t){for(var r=e||``,i=t||`div`,a={},o=0,s,c,l;o<r.length;)n.lastIndex=o,l=n.exec(r),s=r.slice(o,l?l.index:r.length),s&&(c?c===`#`?a.id=s:a.className?a.className.push(s):a.className=[s]:i=s,o+=s.length),l&&(c=l[0],o++);return{type:`element`,tagName:i,properties:a,children:[]}}})),e1=s((e=>{e.parse=i,e.stringify=a;var t=``,n=` `,r=/[ \t\n\r\f]+/g;function i(e){var n=String(e||t).trim();return n===t?[]:n.split(r)}function a(e){return e.join(n).trim()}})),t1=s((e=>{e.parse=i,e.stringify=a;var t=`,`,n=` `,r=``;function i(e){for(var n=[],i=String(e||r),a=i.indexOf(t),o=0,s=!1,c;!s;)a===-1&&(a=i.length,s=!0),c=i.slice(o,a).trim(),(c||!s)&&n.push(c),o=a+1,a=i.indexOf(t,o);return n}function a(e,i){var a=i||{},o=a.padLeft===!1?r:n,s=a.padRight?n:r;return e[e.length-1]===r&&(e=e.concat(r)),e.join(s+t+o).trim()}})),n1=s(((e,t)=>{var n=Q$(),r=z$(),i=$$(),a=e1().parse,o=t1().parse;t.exports=c;var s={}.hasOwnProperty;function c(e,t,r){var c=r?h(r):null;return u;function u(e,n){var r=i(e,t),a=Array.prototype.slice.call(arguments,2),o=r.tagName.toLowerCase(),u;if(r.tagName=c&&s.call(c,o)?c[o]:o,n&&l(n,r)&&(a.unshift(n),n=null),n)for(u in n)p(r.properties,u,n[u]);return d(r.children,a),r.tagName===`template`&&(r.content={type:`root`,children:r.children},r.children=[]),r}function p(t,r,i){var s,c,l;i==null||i!==i||(s=n(e,r),c=s.property,l=i,typeof l==`string`&&(s.spaceSeparated?l=a(l):s.commaSeparated?l=o(l):s.commaOrSpaceSeparated&&(l=a(o(l).join(` `)))),c===`style`&&typeof i!=`string`&&(l=m(l)),c===`className`&&t.className&&(l=t.className.concat(l)),t[c]=f(s,c,l))}}function l(e,t){return typeof e==`string`||`length`in e||u(t.tagName,e)}function u(e,t){var n=t.type;return e===`input`||!n||typeof n!=`string`?!1:typeof t.children==`object`&&`length`in t.children?!0:(n=n.toLowerCase(),e===`button`?n!==`menu`&&n!==`submit`&&n!==`reset`&&n!==`button`:`value`in t)}function d(e,t){var n,r;if(typeof t==`string`||typeof t==`number`){e.push({type:`text`,value:String(t)});return}if(typeof t==`object`&&`length`in t){for(n=-1,r=t.length;++n<r;)d(e,t[n]);return}if(typeof t!=`object`||!(`type`in t))throw Error("Expected node, nodes, or string, got `"+t+"`");e.push(t)}function f(e,t,n){var r,i,a;if(typeof n!=`object`||!(`length`in n))return p(e,t,n);for(i=n.length,r=-1,a=[];++r<i;)a[r]=p(e,t,n[r]);return a}function p(e,t,n){var i=n;return e.number||e.positiveNumber?!isNaN(i)&&i!==``&&(i=Number(i)):(e.boolean||e.overloadedBoolean)&&typeof i==`string`&&(i===``||r(n)===r(t))&&(i=!0),i}function m(e){var t=[],n;for(n in e)t.push([n,e[n]].join(`: `));return t.join(`; `)}function h(e){for(var t=e.length,n=-1,r={},i;++n<t;)i=e[n],r[i.toLowerCase()]=i;return r}})),r1=s(((e,t)=>{var n=Z$(),r=n1()(n,`div`);r.displayName=`html`,t.exports=r})),i1=s(((e,t)=>{t.exports=r1()})),a1=c({AElig:()=>`Æ`,AMP:()=>`&`,Aacute:()=>`Á`,Acirc:()=>`Â`,Agrave:()=>`À`,Aring:()=>`Å`,Atilde:()=>`Ã`,Auml:()=>`Ä`,COPY:()=>`©`,Ccedil:()=>`Ç`,ETH:()=>`Ð`,Eacute:()=>`É`,Ecirc:()=>`Ê`,Egrave:()=>`È`,Euml:()=>`Ë`,GT:()=>`>`,Iacute:()=>`Í`,Icirc:()=>`Î`,Igrave:()=>`Ì`,Iuml:()=>`Ï`,LT:()=>`<`,Ntilde:()=>`Ñ`,Oacute:()=>`Ó`,Ocirc:()=>`Ô`,Ograve:()=>`Ò`,Oslash:()=>`Ø`,Otilde:()=>`Õ`,Ouml:()=>`Ö`,QUOT:()=>`"`,REG:()=>`®`,THORN:()=>`Þ`,Uacute:()=>`Ú`,Ucirc:()=>`Û`,Ugrave:()=>`Ù`,Uuml:()=>`Ü`,Yacute:()=>`Ý`,aacute:()=>`á`,acirc:()=>`â`,acute:()=>`´`,aelig:()=>`æ`,agrave:()=>`à`,amp:()=>`&`,aring:()=>`å`,atilde:()=>`ã`,auml:()=>`ä`,brvbar:()=>`¦`,ccedil:()=>`ç`,cedil:()=>`¸`,cent:()=>`¢`,copy:()=>`©`,curren:()=>`¤`,default:()=>o1,deg:()=>`°`,divide:()=>`÷`,eacute:()=>`é`,ecirc:()=>`ê`,egrave:()=>`è`,eth:()=>`ð`,euml:()=>`ë`,frac12:()=>`½`,frac14:()=>`¼`,frac34:()=>`¾`,gt:()=>`>`,iacute:()=>`í`,icirc:()=>`î`,iexcl:()=>`¡`,igrave:()=>`ì`,iquest:()=>`¿`,iuml:()=>`ï`,laquo:()=>`«`,lt:()=>`<`,macr:()=>`¯`,micro:()=>`µ`,middot:()=>`·`,nbsp:()=>`\xA0`,not:()=>`¬`,ntilde:()=>`ñ`,oacute:()=>`ó`,ocirc:()=>`ô`,ograve:()=>`ò`,ordf:()=>`ª`,ordm:()=>`º`,oslash:()=>`ø`,otilde:()=>`õ`,ouml:()=>`ö`,para:()=>`¶`,plusmn:()=>`±`,pound:()=>`£`,quot:()=>`"`,raquo:()=>`»`,reg:()=>`®`,sect:()=>`§`,shy:()=>`­`,sup1:()=>`¹`,sup2:()=>`²`,sup3:()=>`³`,szlig:()=>`ß`,thorn:()=>`þ`,times:()=>`×`,uacute:()=>`ú`,ucirc:()=>`û`,ugrave:()=>`ù`,uml:()=>`¨`,uuml:()=>`ü`,yacute:()=>`ý`,yen:()=>`¥`,yuml:()=>`ÿ`}),o1,s1=o((()=>{o1={AElig:`Æ`,AMP:`&`,Aacute:`Á`,Acirc:`Â`,Agrave:`À`,Aring:`Å`,Atilde:`Ã`,Auml:`Ä`,COPY:`©`,Ccedil:`Ç`,ETH:`Ð`,Eacute:`É`,Ecirc:`Ê`,Egrave:`È`,Euml:`Ë`,GT:`>`,Iacute:`Í`,Icirc:`Î`,Igrave:`Ì`,Iuml:`Ï`,LT:`<`,Ntilde:`Ñ`,Oacute:`Ó`,Ocirc:`Ô`,Ograve:`Ò`,Oslash:`Ø`,Otilde:`Õ`,Ouml:`Ö`,QUOT:`"`,REG:`®`,THORN:`Þ`,Uacute:`Ú`,Ucirc:`Û`,Ugrave:`Ù`,Uuml:`Ü`,Yacute:`Ý`,aacute:`á`,acirc:`â`,acute:`´`,aelig:`æ`,agrave:`à`,amp:`&`,aring:`å`,atilde:`ã`,auml:`ä`,brvbar:`¦`,ccedil:`ç`,cedil:`¸`,cent:`¢`,copy:`©`,curren:`¤`,deg:`°`,divide:`÷`,eacute:`é`,ecirc:`ê`,egrave:`è`,eth:`ð`,euml:`ë`,frac12:`½`,frac14:`¼`,frac34:`¾`,gt:`>`,iacute:`í`,icirc:`î`,iexcl:`¡`,igrave:`ì`,iquest:`¿`,iuml:`ï`,laquo:`«`,lt:`<`,macr:`¯`,micro:`µ`,middot:`·`,nbsp:`\xA0`,not:`¬`,ntilde:`ñ`,oacute:`ó`,ocirc:`ô`,ograve:`ò`,ordf:`ª`,ordm:`º`,oslash:`ø`,otilde:`õ`,ouml:`ö`,para:`¶`,plusmn:`±`,pound:`£`,quot:`"`,raquo:`»`,reg:`®`,sect:`§`,shy:`­`,sup1:`¹`,sup2:`²`,sup3:`³`,szlig:`ß`,thorn:`þ`,times:`×`,uacute:`ú`,ucirc:`û`,ugrave:`ù`,uml:`¨`,uuml:`ü`,yacute:`ý`,yen:`¥`,yuml:`ÿ`}})),c1=c({default:()=>l1}),l1,u1=o((()=>{l1={0:`�`,128:`€`,130:`‚`,131:`ƒ`,132:`„`,133:`…`,134:`†`,135:`‡`,136:`ˆ`,137:`‰`,138:`Š`,139:`‹`,140:`Œ`,142:`Ž`,145:`‘`,146:`’`,147:`“`,148:`”`,149:`•`,150:`–`,151:`—`,152:`˜`,153:`™`,154:`š`,155:`›`,156:`œ`,158:`ž`,159:`Ÿ`}})),d1=s(((e,t)=>{t.exports=n;function n(e){var t=typeof e==`string`?e.charCodeAt(0):e;return t>=48&&t<=57}})),f1=s(((e,t)=>{t.exports=n;function n(e){var t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}})),p1=s(((e,t)=>{t.exports=n;function n(e){var t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}})),m1=s(((e,t)=>{var n=p1(),r=d1();t.exports=i;function i(e){return n(e)||r(e)}})),h1=s(((e,t)=>{var n,r=59;t.exports=i;function i(e){var t=`&`+e+`;`,i;return n||=document.createElement(`i`),n.innerHTML=t,i=n.textContent,i.charCodeAt(i.length-1)===r&&e!==`semi`||i===t?!1:i}})),g1=s(((e,t)=>{var n=(s1(),d(a1).default),r=(u1(),d(c1).default),i=d1(),a=f1(),o=m1(),s=h1();t.exports=R;var c={}.hasOwnProperty,l=String.fromCharCode,u=Function.prototype,f={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},p=9,m=10,h=12,g=32,_=38,v=59,y=60,b=61,x=35,S=88,C=120,w=65533,T=`named`,E=`hexadecimal`,D=`decimal`,O={};O[E]=16,O[D]=10;var k={};k[T]=o,k[D]=i,k[E]=a;var A=1,j=2,M=3,N=4,P=5,F=6,I=7,L={};L[A]=`Named character references must be terminated by a semicolon`,L[j]=`Numeric character references must be terminated by a semicolon`,L[M]=`Named character references cannot be empty`,L[N]=`Numeric character references cannot be empty`,L[P]=`Named character references must be known`,L[F]=`Numeric character references cannot be disallowed`,L[I]=`Numeric character references cannot be outside the permissible Unicode range`;function R(e,t){var n={},r,i;for(i in t||={},f)r=t[i],n[i]=r??f[i];return(n.position.indent||n.position.start)&&(n.indent=n.position.indent||[],n.position=n.position.start),z(e,n)}function z(e,t){var i=t.additional,a=t.nonTerminated,d=t.text,f=t.reference,R=t.warning,z=t.textContext,V=t.referenceContext,H=t.warningContext,te=t.position,U=t.indent||[],ne=e.length,W=0,re=-1,ie=te.column||1,ae=te.line||1,G=``,oe=[],se,ce,le,ue,de,K,fe,pe,me,he,ge,_e,ve,ye,be,xe,Se,Ce,we;for(typeof i==`string`&&(i=i.charCodeAt(0)),xe=Te(),pe=R?Ee:u,W--,ne++;++W<ne;)if(de===m&&(ie=U[re]||1),de=e.charCodeAt(W),de===_){if(fe=e.charCodeAt(W+1),fe===p||fe===m||fe===h||fe===g||fe===_||fe===y||fe!==fe||i&&fe===i){G+=l(de),ie++;continue}for(ve=W+1,_e=ve,we=ve,fe===x?(we=++_e,fe=e.charCodeAt(we),fe===S||fe===C?(ye=E,we=++_e):ye=D):ye=T,se=``,ge=``,ue=``,be=k[ye],we--;++we<ne&&(fe=e.charCodeAt(we),be(fe));)ue+=l(fe),ye===T&&c.call(n,ue)&&(se=ue,ge=n[ue]);le=e.charCodeAt(we)===v,le&&(we++,ce=ye===T?s(ue):!1,ce&&(se=ue,ge=ce)),Ce=1+we-ve,!le&&!a||(ue?ye===T?(le&&!ge?pe(P,1):(se!==ue&&(we=_e+se.length,Ce=1+we-_e,le=!1),le||(me=se?A:M,t.attribute?(fe=e.charCodeAt(we),fe===b?(pe(me,Ce),ge=null):o(fe)?ge=null:pe(me,Ce)):pe(me,Ce))),K=ge):(le||pe(j,Ce),K=parseInt(ue,O[ye]),ee(K)?(pe(I,Ce),K=l(w)):K in r?(pe(F,Ce),K=r[K]):(he=``,B(K)&&pe(F,Ce),K>65535&&(K-=65536,he+=l(K>>>10|55296),K=56320|K&1023),K=he+l(K))):ye!==T&&pe(N,Ce)),K?(De(),xe=Te(),W=we-1,ie+=we-ve+1,oe.push(K),Se=Te(),Se.offset++,f&&f.call(V,K,{start:xe,end:Se},e.slice(ve-1,we)),xe=Se):(ue=e.slice(ve-1,we),G+=ue,ie+=ue.length,W=we-1)}else de===10&&(ae++,re++,ie=0),de===de?(G+=l(de),ie++):De();return oe.join(``);function Te(){return{line:ae,column:ie,offset:W+(te.offset||0)}}function Ee(e,t){var n=Te();n.column+=t,n.offset+=t,R.call(H,L[e],n,e)}function De(){G&&=(oe.push(G),d&&d.call(z,G,{start:xe,end:Te()}),``)}}function ee(e){return e>=55296&&e<=57343||e>1114111}function B(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534}})),_1=s(((e,t)=>{var n=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},i={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/\u00a0/g,` `)},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,`__id`,{value:++n}),e.__id},clone:function e(t,n){n||={};var r,a;switch(i.util.type(t)){case`Object`:if(a=i.util.objId(t),n[a])return n[a];for(var o in r={},n[a]=r,t)t.hasOwnProperty(o)&&(r[o]=e(t[o],n));return r;case`Array`:return a=i.util.objId(t),n[a]?n[a]:(r=[],n[a]=r,t.forEach(function(t,i){r[i]=e(t,n)}),r);default:return t}},getLanguage:function(e){for(;e;){var n=t.exec(e.className);if(n)return n[1].toLowerCase();e=e.parentElement}return`none`},setLanguage:function(e,n){e.className=e.className.replace(RegExp(t,`gi`),``),e.classList.add(`language-`+n)},currentScript:function(){if(typeof document>`u`)return null;if(`currentScript`in document)return document.currentScript;try{throw Error()}catch(r){var e=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(r.stack)||[])[1];if(e){var t=document.getElementsByTagName(`script`);for(var n in t)if(t[n].src==e)return t[n]}return null}},isActive:function(e,t,n){for(var r=`no-`+t;e;){var i=e.classList;if(i.contains(t))return!0;if(i.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,t){var n=i.util.clone(i.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){r||=i.languages;var a=r[e],o={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var c in n)n.hasOwnProperty(c)&&(o[c]=n[c]);n.hasOwnProperty(s)||(o[s]=a[s])}var l=r[e];return r[e]=o,i.languages.DFS(i.languages,function(t,n){n===l&&t!=e&&(this[t]=o)}),o},DFS:function e(t,n,r,a){a||={};var o=i.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],r||s);var c=t[s],l=i.util.type(c);l===`Object`&&!a[o(c)]?(a[o(c)]=!0,e(c,n,null,a)):l===`Array`&&!a[o(c)]&&(a[o(c)]=!0,e(c,n,s,a))}}},plugins:{},highlightAll:function(e,t){i.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:`code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code`};i.hooks.run(`before-highlightall`,r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),i.hooks.run(`before-all-elements-highlight`,r);for(var a=0,o;o=r.elements[a++];)i.highlightElement(o,t===!0,r.callback)},highlightElement:function(t,n,r){var a=i.util.getLanguage(t),o=i.languages[a];i.util.setLanguage(t,a);var s=t.parentElement;s&&s.nodeName.toLowerCase()===`pre`&&i.util.setLanguage(s,a);var c={element:t,language:a,grammar:o,code:t.textContent};function l(e){c.highlightedCode=e,i.hooks.run(`before-insert`,c),c.element.innerHTML=c.highlightedCode,i.hooks.run(`after-highlight`,c),i.hooks.run(`complete`,c),r&&r.call(c.element)}if(i.hooks.run(`before-sanity-check`,c),s=c.element.parentElement,s&&s.nodeName.toLowerCase()===`pre`&&!s.hasAttribute(`tabindex`)&&s.setAttribute(`tabindex`,`0`),!c.code){i.hooks.run(`complete`,c),r&&r.call(c.element);return}if(i.hooks.run(`before-highlight`,c),!c.grammar){l(i.util.encode(c.code));return}if(n&&e.Worker){var u=new Worker(i.filename);u.onmessage=function(e){l(e.data)},u.postMessage(JSON.stringify({language:c.language,code:c.code,immediateClose:!0}))}else l(i.highlight(c.code,c.grammar,c.language))},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};if(i.hooks.run(`before-tokenize`,r),!r.grammar)throw Error(`The language "`+r.language+`" has no grammar.`);return r.tokens=i.tokenize(r.code,r.grammar),i.hooks.run(`after-tokenize`,r),a.stringify(i.util.encode(r.tokens),r.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new c;return l(i,i.head,e),s(e,i,t,i.head,0),d(i)},hooks:{all:{},add:function(e,t){var n=i.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=i.hooks.all[e];if(!(!n||!n.length))for(var r=0,a;a=n[r++];)a(t)}},Token:a};e.Prism=i;function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=(r||``).length|0}a.stringify=function e(t,n){if(typeof t==`string`)return t;if(Array.isArray(t)){var r=``;return t.forEach(function(t){r+=e(t,n)}),r}var a={type:t.type,content:e(t.content,n),tag:`span`,classes:[`token`,t.type],attributes:{},language:n},o=t.alias;o&&(Array.isArray(o)?Array.prototype.push.apply(a.classes,o):a.classes.push(o)),i.hooks.run(`wrap`,a);var s=``;for(var c in a.attributes)s+=` `+c+`="`+(a.attributes[c]||``).replace(/"/g,`&quot;`)+`"`;return`<`+a.tag+` class="`+a.classes.join(` `)+`"`+s+`>`+a.content+`</`+a.tag+`>`};function o(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function s(e,t,n,r,c,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+`,`+m)return;var h=p[m],g=h.inside,_=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var b=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,b+`g`)}for(var x=h.pattern||h,S=r.next,C=c;S!==t.tail&&!(d&&C>=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof a)){var T=1,E;if(v){if(E=o(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof a)continue;for(var A=S;A!==t.tail&&(k<O||typeof A.value==`string`);A=A.next)T++,k+=A.value.length;T--,w=e.slice(C,k),E.index-=C}else if(E=o(x,0,w,_),!E)continue;var D=E.index,j=E[0],M=w.slice(0,D),N=w.slice(D+j.length),P=C+w.length;d&&P>d.reach&&(d.reach=P);var F=S.prev;M&&(F=l(t,F,M),C+=M.length),u(t,F,T);var I=new a(f,g?i.tokenize(j,g):j,y,j);if(S=l(t,F,I),N&&l(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};s(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function c(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}function d(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}if(!e.document)return e.addEventListener&&(i.disableWorkerMessageHandler||e.addEventListener(`message`,function(t){var n=JSON.parse(t.data),r=n.language,a=n.code,o=n.immediateClose;e.postMessage(i.highlight(a,i.languages[r],r)),o&&e.close()},!1)),i;var f=i.util.currentScript();f&&(i.filename=f.src,f.hasAttribute(`data-manual`)&&(i.manual=!0));function p(){i.manual||i.highlightAll()}if(!i.manual){var m=document.readyState;m===`loading`||m===`interactive`&&f&&f.defer?document.addEventListener(`DOMContentLoaded`,p):window.requestAnimationFrame?window.requestAnimationFrame(p):window.setTimeout(p,16)}return i}(typeof window<`u`?window:typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope?self:{});t!==void 0&&t.exports&&(t.exports=n),typeof global<`u`&&(global.Prism=n)})),v1=s(((e,t)=>{t.exports=n,n.displayName=`markup`,n.aliases=[`html`,`mathml`,`svg`,`xml`,`ssml`,`atom`,`rss`];function n(e){e.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:`named-entity`},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside[`attr-value`].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside[`internal-subset`].inside=e.languages.markup,e.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.value.replace(/&amp;/,`&`))}),Object.defineProperty(e.languages.markup.tag,`addInlined`,{value:function(t,n){var r={};r[`language-`+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:e.languages[n]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};i[`language-`+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(`(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)`.replace(/__/g,function(){return t}),`i`),lookbehind:!0,greedy:!0,inside:i},e.languages.insertBefore(`markup`,`cdata`,a)}}),Object.defineProperty(e.languages.markup.tag,`addAttribute`,{value:function(t,n){e.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+t+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,`i`),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,`language-`+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend(`markup`,{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}})),y1=s(((e,t)=>{t.exports=n,n.displayName=`css`,n.aliases=[];function n(e){(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:`selector`},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp(`\\burl\\((?:`+t.source+`|(?:[^\\\\\\r\\n()"']|\\\\[\\s\\S])*)\\)`,`i`),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp(`^`+t.source+`$`),alias:`url`}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+`)*(?=\\s*\\{)`),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined(`style`,`css`),n.tag.addAttribute(`style`,`css`))})(e)}})),b1=s(((e,t)=>{t.exports=n,n.displayName=`clike`,n.aliases=[];function n(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}})),x1=s(((e,t)=>{t.exports=n,n.displayName=`javascript`,n.aliases=[`js`];function n(e){e.languages.javascript=e.languages.extend(`clike`,{"class-name":[e.languages.clike[`class-name`],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(`(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])`),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore(`javascript`,`keyword`,{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore(`javascript`,`string`,{hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:`property`}}),e.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),e.languages.markup&&(e.languages.markup.tag.addInlined(`script`,`javascript`),e.languages.markup.tag.addAttribute(`on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)`,`javascript`)),e.languages.js=e.languages.javascript}})),S1=s(((e,t)=>{var n=typeof globalThis==`object`?globalThis:typeof self==`object`?self:typeof window==`object`?window:typeof global==`object`?global:{},r=C();n.Prism={manual:!0,disableWorkerMessageHandler:!0};var i=i1(),a=g1(),o=_1(),s=v1(),c=y1(),l=b1(),u=x1();r();var d={}.hasOwnProperty;function f(){}f.prototype=o;var p=new f;t.exports=p,p.highlight=g,p.register=m,p.alias=h,p.registered=_,p.listLanguages=v,m(s),m(c),m(l),m(u),p.util.encode=x,p.Token.stringify=y;function m(e){if(typeof e!=`function`||!e.displayName)throw Error("Expected `function` for `grammar`, got `"+e+"`");p.languages[e.displayName]===void 0&&e(p)}function h(e,t){var n=p.languages,r=e,i,a,o,s;for(i in t&&(r={},r[e]=t),r)for(a=r[i],a=typeof a==`string`?[a]:a,o=a.length,s=-1;++s<o;)n[a[s]]=n[i]}function g(e,t){var n=o.highlight,r;if(typeof e!=`string`)throw Error("Expected `string` for `value`, got `"+e+"`");if(p.util.type(t)===`Object`)r=t,t=null;else{if(typeof t!=`string`)throw Error("Expected `string` for `name`, got `"+t+"`");if(d.call(p.languages,t))r=p.languages[t];else throw Error("Unknown language: `"+t+"` is not registered")}return n.call(this,e,r,t)}function _(e){if(typeof e!=`string`)throw Error("Expected `string` for `language`, got `"+e+"`");return d.call(p.languages,e)}function v(){var e=p.languages,t=[],n;for(n in e)d.call(e,n)&&typeof e[n]==`object`&&t.push(n);return t}function y(e,t,n){var r;return typeof e==`string`?{type:`text`,value:e}:p.util.type(e)===`Array`?b(e,t):(r={type:e.type,content:p.Token.stringify(e.content,t,n),tag:`span`,classes:[`token`,e.type],attributes:{},language:t,parent:n},e.alias&&(r.classes=r.classes.concat(e.alias)),p.hooks.run(`wrap`,r),i(r.tag+`.`+r.classes.join(`.`),S(r.attributes),r.content))}function b(e,t){for(var n=[],r=e.length,i=-1,a;++i<r;)a=e[i],a!==``&&a!=null&&n.push(a);for(i=-1,r=n.length;++i<r;)a=n[i],n[i]=p.Token.stringify(a,t,n);return n}function x(e){return e}function S(e){for(var t in e)e[t]=a(e[t]);return e}function C(){var e=`Prism`in n,t=e?n.Prism:void 0;return r;function r(){e?n.Prism=t:delete n.Prism,e=void 0,t=void 0}}})),C1=s(((e,t)=>{t.exports=n,n.displayName=`bash`,n.aliases=[`shell`];function n(e){(function(e){var t=`\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b`,n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:`punctuation`,inside:null},r={bash:n,environment:{pattern:RegExp(`\\$`+t),alias:`constant`},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp(`(\\{)`+t),lookbehind:!0,alias:`constant`}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:`important`},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:`function`},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:`function`}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:`variable`,lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp(`(^|[\\s;|&]|[<>]\\()`+t),lookbehind:!0,alias:`constant`}},alias:`variable`,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp(`\\$?`+t),alias:`constant`},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:`class-name`},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:`important`},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:`important`}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var i=[`comment`,`function-name`,`for-or-select`,`assign-left`,`string`,`environment`,`function`,`keyword`,`builtin`,`boolean`,`file-descriptor`,`operator`,`punctuation`,`number`],a=r.variable[1].inside,o=0;o<i.length;o++)a[i[o]]=e.languages.bash[i[o]];e.languages.shell=e.languages.bash})(e)}})),w1=s(((e,t)=>{t.exports=n,n.displayName=`json`,n.aliases=[`webmanifest`];function n(e){e.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:`keyword`}},e.languages.webmanifest=e.languages.json}})),T1=s(((e,t)=>{t.exports=n,n.displayName=`jsx`,n.aliases=[];function n(e){(function(e){var t=e.util.clone(e.languages.javascript),n=`(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)`,r=`(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})`,i=`(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})`;function a(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return i}),RegExp(e,t)}i=a(i).source,e.languages.jsx=e.languages.extend(`markup`,t),e.languages.jsx.tag.pattern=a(`<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[\\s\\S]|[^\\\\"])*"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside[`attr-value`].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside[`class-name`]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore(`inside`,`attr-name`,{spread:{pattern:a(`<SPREAD>`),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore(`inside`,`special-attr`,{script:{pattern:a(`=<BRACES>`),alias:`language-javascript`,inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:`punctuation`},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?typeof e==`string`?e:typeof e.content==`string`?e.content:e.content.map(o).join(``):``},s=function(t){for(var n=[],r=0;r<t.length;r++){var i=t[r],a=!1;if(typeof i!=`string`&&(i.type===`tag`&&i.content[0]&&i.content[0].type===`tag`?i.content[0].content[0].content===`</`?n.length>0&&n[n.length-1].tagName===o(i.content[0].content[1])&&n.pop():i.content[i.content.length-1].content===`/>`||n.push({tagName:o(i.content[0].content[1]),openedBraces:0}):n.length>0&&i.type===`punctuation`&&i.content===`{`?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&i.type===`punctuation`&&i.content===`}`?n[n.length-1].openedBraces--:a=!0),(a||typeof i==`string`)&&n.length>0&&n[n.length-1].openedBraces===0){var c=o(i);r<t.length-1&&(typeof t[r+1]==`string`||t[r+1].type===`plain-text`)&&(c+=o(t[r+1]),t.splice(r+1,1)),r>0&&(typeof t[r-1]==`string`||t[r-1].type===`plain-text`)&&(c=o(t[r-1])+c,t.splice(r-1,1),r--),t[r]=new e.Token(`plain-text`,c,null,c)}i.content&&typeof i.content!=`string`&&s(i.content)}};e.hooks.add(`after-tokenize`,function(e){e.language!==`jsx`&&e.language!==`tsx`||s(e.tokens)})})(e)}})),E1=s(((e,t)=>{t.exports=n,n.displayName=`markdown`,n.aliases=[`md`];function n(e){(function(e){var t=`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`;function n(e){return e=e.replace(/<inner>/g,function(){return t}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var r="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",i=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return r}),a=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`;e.languages.markdown=e.languages.extend(`markup`,{}),e.languages.insertBefore(`markdown`,`prolog`,{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:[`yaml`,`language-yaml`],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:`punctuation`},table:{pattern:RegExp(`^`+i+a+`(?:`+i+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+i+a+`)(?:`+i+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+i+`)`+a+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+i+`$`),inside:{"table-header":{pattern:RegExp(r),alias:`important`,inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:`keyword`},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:`important`,inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:`important`,inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:`punctuation`},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:`punctuation`},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:`url`},bold:{pattern:n(`\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(`\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(`(~~?)(?:(?!~)<inner>)+\\2`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[`code`,`keyword`]},url:{pattern:n(`!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])`),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),[`url`,`bold`,`italic`,`strike`].forEach(function(t){[`url`,`bold`,`italic`,`strike`,`code-snippet`].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add(`after-tokenize`,function(e){if(e.language!==`markdown`&&e.language!==`md`)return;function t(e){if(!(!e||typeof e==`string`))for(var n=0,r=e.length;n<r;n++){var i=e[n];if(i.type!==`code`){t(i.content);continue}var a=i.content[1],o=i.content[3];if(a&&o&&a.type===`code-language`&&o.type===`code-block`&&typeof a.content==`string`){var s=a.content.replace(/\b#/g,`sharp`).replace(/\b\+\+/g,`pp`);s=(/[a-z][\w-]*/i.exec(s)||[``])[0].toLowerCase();var c=`language-`+s;o.alias?typeof o.alias==`string`?o.alias=[o.alias,c]:o.alias.push(c):o.alias=[c]}}}t(e.tokens)}),e.hooks.add(`wrap`,function(t){if(t.type===`code-block`){for(var n=``,r=0,i=t.classes.length;r<i;r++){var a=t.classes[r],o=/language-(.+)/.exec(a);if(o){n=o[1];break}}var s=e.languages[n];if(s)t.content=e.highlight(l(t.content.value),s,n);else if(n&&n!==`none`&&e.plugins.autoloader){var c=`md-`+new Date().valueOf()+`-`+Math.floor(Math.random()*0x2386f26fc10000);t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})}}});var o=RegExp(e.languages.markup.tag.pattern.source,`gi`),s={amp:`&`,lt:`<`,gt:`>`,quot:`"`},c=String.fromCodePoint||String.fromCharCode;function l(e){var t=e.replace(o,``);return t=t.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){return t=t.toLowerCase(),t[0]===`#`?c(t[1]===`x`?parseInt(t.slice(2),16):Number(t.slice(1))):s[t]||e}),t}e.languages.md=e.languages.markdown})(e)}})),D1=s(((e,t)=>{t.exports=n,n.displayName=`typescript`,n.aliases=[`ts`];function n(e){(function(e){e.languages.typescript=e.languages.extend(`javascript`,{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[`literal-property`];var t=e.languages.extend(`typescript`,{});delete t[`class-name`],e.languages.typescript[`class-name`].inside=t,e.languages.insertBefore(`typescript`,`function`,{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:`operator`},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:t}}}}),e.languages.ts=e.languages.typescript})(e)}})),O1=s(((e,t)=>{var n=T1(),r=D1();t.exports=i,i.displayName=`tsx`,i.aliases=[];function i(e){e.register(n),e.register(r),(function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(`jsx`,t),delete e.languages.tsx.parameter,delete e.languages.tsx[`literal-property`];var n=e.languages.tsx.tag;n.pattern=RegExp(`(^|[^\\w$]|(?=<\\/))(?:`+n.pattern.source+`)`,n.pattern.flags),n.lookbehind=!0})(e)}})),k1=s(((e,t)=>{t.exports=n,n.displayName=`yaml`,n.aliases=[`yml`];function n(e){(function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r=`(?:`+n.source+`(?:[ ]+`+t.source+`)?|`+t.source+`(?:[ ]+`+n.source+`)?)`,i=`(?:[^\\s\\x00-\\x08\\x0e-\\x1f!"#%&'*,\\-:>?@[\\]\`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*`.replace(/<PLAIN>/g,function(){return`[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]`}),a=`"(?:[^"\\\\\\r\\n]|\\\\.)*"|'(?:[^'\\\\\\r\\n]|\\\\.)*'`;function o(e,t){t=(t||``).replace(/m/g,``)+`m`;var n=`([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))`.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(`([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)`.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:`string`},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)`.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return`(?:`+i+`|`+a+`)`})),lookbehind:!0,greedy:!0,alias:`atrule`},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:`important`},datetime:{pattern:o(`\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?`),lookbehind:!0,alias:`number`},boolean:{pattern:o(`false|true`,`i`),lookbehind:!0,alias:`important`},null:{pattern:o(`null|~`,`i`),lookbehind:!0,alias:`important`},string:{pattern:o(a),lookbehind:!0,greedy:!0},number:{pattern:o(`[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)`,`i`),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml})(e)}})),A1=u(S1(),1),j1=u(C1(),1),M1=u(y1(),1),N1=u(x1(),1),P1=u(w1(),1),F1=u(T1(),1),I1=u(E1(),1),L1=u(v1(),1),R1=u(O1(),1),z1=u(D1(),1),B1=u(k1(),1),V1=e=>{let t=e.displayName;!t||A1.default.registered(t)||A1.default.register(e)};V1(L1.default),V1(M1.default),V1(N1.default),V1(z1.default),V1(R1.default),V1(P1.default),V1(F1.default),V1(I1.default),V1(B1.default),V1(j1.default);var H1=c({TicketChangesModal:()=>_0}),U1=4,W1=1500,G1=`archon.ticket-changes.review-comments`,K1=[],q1=[],J1=[],Y1=e=>new Set(e.map(e=>e.path)),X1=(e,t)=>{if(!e)return null;if(e.blocked_reason)return e.blocked_reason;let n=e.files.find(e=>!t.has(e.path)&&e.staged);return n?`"${n.path}" already has staged changes. Finish that commit in the terminal first.`:null},Z1=e=>e.replace(/^[ab]\//,``),Q1=e=>{let t=`oldPath`in e&&typeof e.oldPath==`string`?Z1(e.oldPath):``,n=`newPath`in e&&typeof e.newPath==`string`?Z1(e.newPath):``;return[...new Set([n,t].filter(e=>e&&e!==`/dev/null`))]},$1=e=>{let[t,n]=Q1(e);return!t&&!n?`Unknown file`:t&&n&&t!==n?`${n} -> ${t}`:t??n??`Unknown file`},e0=e=>{let[t,n]=Q1(e);return t??n??null},t0=e=>e.hunks.reduce((e,t)=>e+t.changes.length,0),n0=e=>{if(t0(e)>W1)return null;let t=A$(e0(e));if(!t)return null;try{return aD(e.hunks,{highlight:!0,refractor:A1.default,language:t,enhancers:[rD(e.hunks)]})}catch{return null}},r0=(e,t)=>e instanceof Error?e.message:t,i0=(e,t)=>`${G1}:${e}:${t}`,a0=()=>({activeTarget:null,editingCommentKey:null,draftInput:``,comments:new Map,signature:null}),o0=()=>({uncommitted:a0(),bundle_diff:a0()}),s0=e=>({uncommitted:e(),bundle_diff:e()}),c0=()=>s0(()=>new Map),l0=e=>{let t=5381;for(let n=0;n<e.length;n+=1)t=(t<<5)+t^e.charCodeAt(n);return`${e.length}:${t>>>0}`},u0=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return(t.scope===void 0||t.scope===`uncommitted`||t.scope===`bundle_diff`)&&typeof t.filePath==`string`&&typeof t.changeKey==`string`&&typeof t.changeType==`string`&&(typeof t.oldLineNumber==`number`||t.oldLineNumber===null)&&(typeof t.newLineNumber==`number`||t.newLineNumber===null)&&typeof t.hunkHeader==`string`&&typeof t.lineContent==`string`&&typeof t.diffSnippet==`string`&&typeof t.comment==`string`},d0=e=>{try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return null;let n=t;if(typeof n.diffSignature!=`string`||!Array.isArray(n.comments))return null;let r=n.comments.filter(u0).map(e=>({scope:e.scope??`uncommitted`,filePath:e.filePath,changeKey:e.changeKey,changeType:e.changeType,oldLineNumber:e.oldLineNumber,newLineNumber:e.newLineNumber,hunkHeader:e.hunkHeader,lineContent:e.lineContent,diffSnippet:e.diffSnippet,comment:e.comment}));return r.length===n.comments.length?{diffSignature:n.diffSignature,comments:r}:null}catch{return null}},f0=e=>new Map(e.map(e=>[hD(e.filePath,e.changeKey),e])),p0=(e,t)=>{e.set(t,(e.get(t)??0)+1)},m0=e=>e.find(e=>e.trim())||``,h0=({pullRequest:e,isLoading:t,isOpen:n,canCreate:r,disabledReason:i,isCreating:a,isSyncing:o,isGeneratingDescription:s,title:c,body:l,baseBranch:u,onOpenChange:d,onTitleChange:f,onBodyChange:p,onBaseBranchChange:m,showGenerateDescription:h,onGenerateDescription:g,onCreate:_})=>t?(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`outline`,disabled:!0,className:`gap-2`,children:`Loading PR...`}):o?(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`outline`,disabled:!0,className:`gap-2`,children:[(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}),`Checking PR...`]}):e?(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded-xl border border-border/80 bg-background/50 px-3 py-2`,children:[(0,q.jsx)(Dj,{pullRequest:e}),(0,q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-xs font-medium text-sky-300 underline underline-offset-2 hover:text-sky-200`,children:[`PR #`,e.number]})]}):(0,q.jsxs)(Ug,{open:n,onOpenChange:d,children:[(0,q.jsx)(Wg,{asChild:!0,children:(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`default`,disabled:!r,title:i,className:`gap-2`,children:[a?(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}):(0,q.jsx)(E_,{className:`h-4 w-4`}),a?`Creating PR...`:`Create PR`]})}),(0,q.jsxs)(Gg,{align:`end`,className:`z-[90] w-[36rem] max-w-[calc(100vw-2rem)] p-4`,children:[(0,q.jsx)(Kg,{children:(0,q.jsx)(qg,{children:`Create pull request`})}),(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(qv,{label:`Title`,htmlFor:`bundle-pr-title`,children:(0,q.jsx)(Og,{id:`bundle-pr-title`,value:c,onChange:e=>f(e.target.value),placeholder:`Bundle title`,disabled:a})}),(0,q.jsx)(qv,{label:`Base branch`,htmlFor:`bundle-pr-base-branch`,description:`Optional. Leave blank to use the repository default branch.`,children:(0,q.jsx)(Og,{id:`bundle-pr-base-branch`,value:u,onChange:e=>m(e.target.value),placeholder:`main`,disabled:a})}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(`label`,{className:`text-xs font-medium uppercase tracking-[0.22em] text-muted-foreground`,htmlFor:`bundle-pr-body`,children:`Description`}),h&&(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`outline`,className:`gap-2`,disabled:a||s,onClick:g,children:[s?(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}):null,s?`Generating...`:`Generate`]})]}),(0,q.jsx)(kg,{id:`bundle-pr-body`,value:l,onChange:e=>p(e.target.value),placeholder:`Summarize the bundle changes for reviewers.`,className:`min-h-40`,disabled:a})]}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(Y,{type:`button`,size:`sm`,disabled:!c.trim()||a,onClick:_,children:a?`Creating...`:`Create PR`})})]})]})]}),g0=(e,t,n)=>{if(n)return Y1(t);let r=new Set(t.map(e=>e.path));return new Set([...e].filter(e=>r.has(e)))},_0=e=>{let{projectId:t,reviewCommentsBundleId:n=null,title:r,onClose:i,onSubmitReviewPrompt:a,canSubmitReviewPrompt:o=!1,reviewSubmitDisabledReason:s,canAddReviewComments:c=!0,canModifyChanges:l=!0,changesDisabledReason:u}=e,d=e.scope??`ticket`,{isGitHubConnected:f}=Ay(t),p=e.scope===`project_root`?null:e.ticketId,m=e.scope===`project_root`?void 0:e.onTicketUpdate,h=e.scope===`project_root`?void 0:e.onRequestTicketRefresh,[g,_]=(0,b.useState)(`uncommitted`),[v,y]=(0,b.useState)(null),[x,S]=(0,b.useState)(null),[C,w]=(0,b.useState)(null),[T,E]=(0,b.useState)([]),[D,O]=(0,b.useState)(new Set),[k,A]=(0,b.useState)(`all`),[M,I]=(0,b.useState)(``),[L,R]=(0,b.useState)(null),[z,H]=(0,b.useState)(null),[te,U]=(0,b.useState)(null),[ne,W]=(0,b.useState)(null),[re,ie]=(0,b.useState)(!0),[ae,G]=(0,b.useState)(!1),[oe,se]=(0,b.useState)(!0),[ce,le]=(0,b.useState)(!1),[ue,_e]=(0,b.useState)(!1),[ve,ye]=(0,b.useState)(!1),[be,xe]=(0,b.useState)(!1),[Se,Ce]=(0,b.useState)(!1),[we,Te]=(0,b.useState)(`unified`),[Ee,De]=(0,b.useState)(new Map),[Oe,ke]=(0,b.useState)(J1),[Ae,je]=(0,b.useState)(o0),[Me,Ne]=(0,b.useState)(null),[Pe,Fe]=(0,b.useState)([]),[Ie,Le]=(0,b.useState)(null),[Re,ze]=(0,b.useState)(null),[Be,Ve]=(0,b.useState)(new Set),[He,Ue]=(0,b.useState)(new Set),[We,Ge]=(0,b.useState)(!1),[Ke,qe]=(0,b.useState)(null),[Ye,nt]=(0,b.useState)(!1),[rt,it]=(0,b.useState)(!1),[at,ot]=(0,b.useState)(``),[st,ct]=(0,b.useState)(``),[lt,ut]=(0,b.useState)(``),[dt,ft]=(0,b.useState)([]),[pt,mt]=(0,b.useState)(!1),[ht,gt]=(0,b.useState)(!1),[_t,vt]=(0,b.useState)(!1),yt=(0,b.useRef)(null),bt=(0,b.useRef)(!1),xt=(0,b.useRef)(null),St=(0,b.useRef)(null),Ct=(0,b.useRef)(0),wt=(0,b.useRef)(0),Tt=(0,b.useRef)(s0(()=>null)),Et=(0,b.useRef)(c0()),Dt=(0,b.useMemo)(()=>T$({scope:d,projectId:t,ticketId:p}),[t,d,p]),Ot=(0,b.useCallback)(()=>{if(!p)throw Error(`Ticket changes require a ticket id.`);return p},[p]),kt=(0,b.useCallback)(e=>{xt.current=e,y(e),R(null)},[]),At=(0,b.useCallback)((e,t)=>{D$({cacheKey:Dt,diffResponse:e,gitStatus:t})},[Dt]),jt=(0,b.useCallback)(e=>{xt.current&&D$({cacheKey:Dt,diffResponse:xt.current,gitStatus:e})},[Dt]),Mt=(0,b.useCallback)(async()=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await Je(t)}return await de(Ot(),t)},[t,Ot,d]),Nt=(0,b.useCallback)(async()=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await Xe(t)}return await K(Ot(),t)},[t,Ot,d]),Pt=(0,b.useCallback)(async()=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await Ze(t)}return await he(Ot(),t)},[t,Ot,d]),Ft=(0,b.useCallback)(async e=>d===`project_root`||!n||!t?null:await ee(t,n,e),[t,n,d]),It=(0,b.useCallback)(async e=>d===`project_root`||!n||!t?null:await j(t,n,e),[t,n,d]),Lt=(0,b.useCallback)(async e=>d===`project_root`||!n||!t?null:await B(t,n,e),[t,n,d]),Rt=(0,b.useCallback)(async e=>d===`project_root`||!n||!t?null:await V(t,n,e),[t,n,d]),zt=(0,b.useCallback)((e,t)=>{je(n=>({...n,[e]:t(n[e])}))},[]),Bt=(0,b.useCallback)(async e=>{if(d===`project_root`||!n||!t)throw Error(`Pull request description generation requires a bundle context.`);return await P(t,n,e)},[t,n,d]),Vt=(0,b.useCallback)(async e=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await Qe(t,e)}return await fe(Ot(),t,e)},[t,Ot,d]),Ht=(0,b.useCallback)(async e=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await $e(t,e)}return await pe(Ot(),t,e)},[t,Ot,d]),Ut=(0,b.useCallback)(async()=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await et(t)}return await me(Ot(),t)},[t,Ot,d]),Wt=(0,b.useCallback)(async()=>{if(d===`project_root`){if(!t)throw Error(`Project changes require a project id.`);return await tt(t)}return await ge(Ot(),t)},[t,Ot,d]),Gt=(0,b.useCallback)(async(e,t={})=>{let n=t.preserveContent??!1,r=Ct.current+1;Ct.current=r,le(!0),n||W(null);try{let t=await Pt();if(!e()||Ct.current!==r)return;E(t.commits),W(null)}catch(t){if(!e()||Ct.current!==r)return;W(r0(t,`Unable to load local commits right now.`)),n||E([])}finally{e()&&Ct.current===r&&le(!1)}},[Pt]),Kt=(0,b.useCallback)(()=>{Ct.current+=1,E([]),W(null),le(!1)},[]),qt=(0,b.useCallback)((e,t={})=>{let n=t.resetSelection??!1;St.current=e,w(e),U(null),O(t=>{let r=g0(t,e.files,n||!bt.current);return bt.current=!0,r})},[]),Jt=(0,b.useCallback)(async(e={})=>{let t=e.preserveContent??!1,n=e.gitStatusForCache??null;t||R(null),ie(!0);try{let e=await Mt();kt(e),n&&At(e,n)}catch(e){n&&O$(Dt),(!t||!xt.current)&&R(r0(e,`Unable to load the diff right now.`))}finally{ie(!1)}},[kt,Dt,Mt,At]),Yt=(0,b.useCallback)(async(e={})=>{let r=e.preserveContent??!1;if(d===`project_root`||!n||!t){S(null),H(null),G(!1);return}r||H(null),G(!0);try{S(await Lt()),H(null)}catch(e){(!r||!x)&&H(r0(e,`Unable to load the branch diff right now.`))}finally{G(!1)}},[x,t,Lt,n,d]),Xt=(0,b.useCallback)(async(e,t={})=>{let n=t.preserveContent??!1,r=t.resetSelection??!1,i=t.allowCache??!0?E$(Dt):null;if(n||(R(null),U(null)),se(!0),i){kt(i.diffResponse),qt(i.gitStatus,{resetSelection:r}),ie(!1);try{let t=await Nt();if(!e())return;qt(t,{resetSelection:r}),se(!1),(t.ahead??0)>0?Gt(e,{preserveContent:!0}):Kt();let n=t.workspace_signature??null;if(n&&n===i.workspaceSignature){At(i.diffResponse,t);return}O$(Dt),await Jt({preserveContent:!0,gitStatusForCache:t});return}catch(t){if(!e())return;U(r0(t,`Unable to load git status right now.`)),w(null),se(!1),Kt();return}}ie(!0);let[a,o]=await Promise.allSettled([Mt(),Nt()]);e()&&(a.status===`fulfilled`?kt(a.value):(!n||!xt.current)&&R(r0(a.reason,`Unable to load the diff right now.`)),ie(!1),o.status===`fulfilled`?qt(o.value,{resetSelection:r}):(U(r0(o.reason,`Unable to load git status right now.`)),n||w(null)),se(!1),a.status===`fulfilled`&&o.status===`fulfilled`&&At(a.value,o.value),o.status===`fulfilled`&&(o.value.ahead??0)>0?Gt(e,{preserveContent:n}):Kt())},[kt,qt,Dt,Kt,Gt,Jt,Mt,Nt,At]),Zt=(0,b.useCallback)(async()=>{if(!t)return;let e=wt.current+1;wt.current=e,se(!0);try{let t=await Nt();if(wt.current!==e)return;let n=St.current?.workspace_signature??null,r=t.workspace_signature??null,i=!xt.current||n!==r;if(qt(t),(t.ahead??0)>0?Gt(()=>wt.current===e,{preserveContent:!0}):Kt(),!i){jt(t);return}await Jt({preserveContent:!0,gitStatusForCache:t})}catch{return}finally{wt.current===e&&se(!1)}},[qt,Kt,Gt,Jt,t,Nt,jt]);(0,b.useEffect)(()=>{xt.current=v},[v]),(0,b.useEffect)(()=>{St.current=C},[C]),(0,b.useEffect)(()=>{let e=!0;return Xt(()=>e,{resetSelection:!0}),()=>{e=!1}},[Xt]),(0,b.useEffect)(()=>{if(t)return N$(e=>{e===t&&Zt()})},[t,Zt]),(0,b.useEffect)(()=>{if(!t)return;let e=F$(()=>{document.visibilityState===`visible`&&Zt()});return()=>{e()}},[t,Zt]),(0,b.useEffect)(()=>{if(d===`project_root`){Ne(null),Le(null),Ve(new Set);return}let e=new AbortController,t=!0;return Le(null),Ft(e.signal).then(e=>{t&&(Ne(e),Ve(t=>{let n=new Set((e?.findings??[]).map(e=>e.id));return new Set([...t].filter(e=>n.has(e)))}))}).catch(n=>{!t||e.signal.aborted||(Le(r0(n,`Unable to load review findings right now.`)),Ne(null),Ve(new Set))}),()=>{t=!1,e.abort()}},[v?.diff,Ft,d]),(0,b.useEffect)(()=>{_(`uncommitted`),Tt.current=s0(()=>null),Et.current=c0(),je(o0()),S(null),H(null),G(!1),Fe([]),ze(null),Ue(new Set),qe(null),nt(!1),it(!1),ot(``),ct(``),ut(``),ft([]),mt(!1),gt(!1),vt(!1)},[n]),(0,b.useEffect)(()=>{if(d===`project_root`||!n||!t){qe(null),nt(!1);return}let e=new AbortController,i=!0;return nt(!0),It(e.signal).then(e=>{i&&(qe(e),ot(t=>t.trim()?t:e?.bundle?.name??r),ct(t=>t.trim()?t:m0(e?.recent_commit_subjects??dt)),ut(t=>t.trim()?t:e?.bundle.pull_request?.base_branch??``))}).catch(()=>{!i||e.signal.aborted||qe(null)}).finally(()=>{i&&nt(!1)}),()=>{i=!1,e.abort()}},[dt,t,It,n,d,r]),(0,b.useEffect)(()=>{if(d===`project_root`||!n||!t){S(null),H(null),G(!1);return}let e=new AbortController,r=!0;return G(!0),H(null),Lt(e.signal).then(e=>{r&&(S(e),H(null))}).catch(t=>{!r||e.signal.aborted||(H(r0(t,`Unable to load the branch diff right now.`)),S(null))}).finally(()=>{r&&G(!1)}),()=>{r=!1,e.abort()}},[t,Lt,n,d]),(0,b.useEffect)(()=>{let e=Ke?.bundle.pull_request??null;if(d===`project_root`||!n||!t||!f||!e){Fe([]),ze(null),Ue(new Set);return}let r=new AbortController,i=!0;return ze(null),Rt(r.signal).then(e=>{!i||!e||(Fe(e.comments),ze(e.error),Ue(t=>{let n=new Set(e.comments.map(e=>e.id));return new Set([...t].filter(e=>n.has(e)))}))}).catch(e=>{!i||r.signal.aborted||(Fe([]),ze(r0(e,`Unable to load GitHub review comments right now.`)),Ue(new Set))}),()=>{i=!1,r.abort()}},[Ke?.bundle.pull_request,f,t,Rt,n,d]),(0,b.useEffect)(()=>{oe&&C===null||yt.current?.focus()},[C,oe]);let Qt=(0,b.useMemo)(()=>{let e=typeof v?.diff==`string`?v.diff:``;return e.trim()?Xx(e,{nearbySequences:`zip`}).map(e=>({...e,pathCandidates:Q1(e)})):[]},[v]),$t=(0,b.useMemo)(()=>{let e=typeof x?.diff==`string`?x.diff:``;return e.trim()?Xx(e,{nearbySequences:`zip`}).map(e=>({...e,pathCandidates:Q1(e)})):[]},[x]),en=(0,b.useMemo)(()=>{let e=v?.diff??``;return e?l0(e):null},[v?.diff]),tn=(0,b.useMemo)(()=>{let e=x?.diff??``;return e?l0(e):null},[x?.diff]),nn=g===`bundle_diff`?x:v,rn=g===`bundle_diff`?$t:Qt,an=(0,b.useMemo)(()=>n?{uncommitted:i0(n,`uncommitted`),bundle_diff:i0(n,`bundle_diff`)}:{uncommitted:null,bundle_diff:null},[n]),on=(0,b.useMemo)(()=>({uncommitted:en,bundle_diff:tn}),[tn,en]),sn=(0,b.useMemo)(()=>{let e=new Map;for(let t of nn?.files??[])e.set(t.path,t);return e},[nn]),cn=(0,b.useMemo)(()=>{let e=new Map;for(let t of rn)for(let n of t.pathCandidates)e.has(n)||e.set(n,t);return e},[rn]),ln=(0,b.useCallback)(e=>{ke(t=>t.length===e.length&&t.every((t,n)=>t===e[n])?t:e)},[]),un=(0,b.useMemo)(()=>g===`bundle_diff`?(x?.files??[]).map(e=>({path:e.path,originalPath:null,status:null,staged:!1,unstaged:!1,conflicted:!1,additions:e.additions,deletions:e.deletions})):C?(C.files??[]).map(e=>{let t=sn.get(e.path)??(e.original_path?sn.get(e.original_path):void 0);return{path:e.path,originalPath:e.original_path,status:e.status,staged:e.staged,unstaged:e.unstaged,conflicted:e.conflicted,additions:t?.additions??0,deletions:t?.deletions??0}}):(v?.files??[]).map(e=>({path:e.path,originalPath:null,status:null,staged:!1,unstaged:!1,conflicted:!1,additions:e.additions,deletions:e.deletions})),[g,x?.files,sn,v?.files,C]);(0,b.useEffect)(()=>{k!==`all`&&(un.some(e=>e.path===k)||A(`all`))},[k,un]);let dn=g===`bundle_diff`?0:D.size,fn=g===`bundle_diff`?un.length:C?.files?.length??un.length,pn=fn>0&&dn===fn,mn=(0,b.useMemo)(()=>g===`bundle_diff`?null:X1(C,D),[g,C,D]),hn=g===`uncommitted`&&!oe&&!ue&&l&&!!C&&dn>0&&M.trim().length>0&&mn===null,gn=g===`uncommitted`&&!oe&&!re&&!ve&&!ue&&!be&&l&&!We&&!!C&&dn>0,_n=!oe&&(be||!!C?.can_push&&(C?.ahead??0)>0),vn=_n&&l&&!be&&!ue,yn=l&&!ce&&!Se&&!ue&&!be&&(T?.length??0)>0,bn=(C?.ahead??0)>0?`${C?.ahead??0} to push`:`Up to date`,xn=(C?.behind??0)>0?`${C?.behind??0} behind`:`In sync`,Sn=C?.branch??null,Cn=k===`all`?null:cn.get(k)??null,wn=(0,b.useMemo)(()=>k===`all`?rn:Cn?[Cn]:[],[rn,k,Cn]);(0,b.useEffect)(()=>{De(new Map),ke(J1)},[g,rn]),(0,b.useEffect)(()=>{let e={uncommitted:an.uncommitted&&on.uncommitted?`${an.uncommitted}:${on.uncommitted}`:null,bundle_diff:an.bundle_diff&&on.bundle_diff?`${an.bundle_diff}:${on.bundle_diff}`:null};Tt.current.uncommitted===e.uncommitted&&Tt.current.bundle_diff===e.bundle_diff||(Tt.current=e,Et.current=c0(),je(e=>{let t={...e};return[`uncommitted`,`bundle_diff`].forEach(e=>{let n=on[e],r=an[e];if(!n){t[e]=a0();return}let i=new Map;if(r){let t=window.localStorage.getItem(r),a=t?d0(t):null;a?.diffSignature===n?i=f0(a.comments.map(t=>({...t,scope:e}))):t!==null&&window.localStorage.removeItem(r)}t[e]={activeTarget:null,editingCommentKey:null,draftInput:``,comments:i,signature:n}}),t}))},[on,an]),(0,b.useEffect)(()=>{[`uncommitted`,`bundle_diff`].forEach(e=>{let t=an[e],n=on[e],r=Ae[e];if(!t||!n||r.signature!==n)return;if(r.comments.size===0){window.localStorage.removeItem(t);return}let i={diffSignature:n,comments:[...r.comments.values()]};window.localStorage.setItem(t,JSON.stringify(i))})},[on,an,Ae]),(0,b.useEffect)(()=>{if(rn.length===0)return;let e=!1,t=null,n=(()=>{if(!Cn){let e=[],t=new Set;for(let n of Oe){let r=cn.get(n);if(!r)continue;let i=$1(r);t.has(i)||(t.add(i),e.push(r))}return e.length>0?e:rn.slice(0,U1)}return[Cn]})(),r=0,i=()=>{if(e)return;let a=n.slice(r,r+U1);a.length!==0&&(De(e=>{let t=new Map(e);for(let e of a){let n=$1(e);t.has(n)||t.set(n,n0(e))}return t}),r+=U1,r<n.length&&(t=window.setTimeout(i,0)))};return n.length<=U1?i():t=window.setTimeout(i,0),()=>{e=!0,t!==null&&window.clearTimeout(t)}},[rn,cn,Cn,Oe]);let Tn=(0,b.useMemo)(()=>wn.map(e=>({...e,tokens:Ee.get($1(e))??null})),[Ee,wn]),En=(0,b.useMemo)(()=>rn.map(e=>({...e,tokens:null})),[rn]),Dn=(0,b.useMemo)(()=>{let e=new Map;for(let t of rn){let n=$1(t);e.set(n,n);for(let r of Q1(t))e.set(r,n)}return e},[rn]),On=(0,b.useMemo)(()=>[...Ae.uncommitted.comments.values()],[Ae.uncommitted.comments]),kn=(0,b.useMemo)(()=>[...Ae.bundle_diff.comments.values()],[Ae.bundle_diff.comments]),An=Ae[g],jn=An.activeTarget,Mn=An.editingCommentKey,Nn=jn?.commentKey??Mn,Pn=Nn?`${g}:${Nn}`:g,Fn=Nn?Et.current[g].get(Nn)??An.draftInput:An.draftInput,In=g===`bundle_diff`?kn:On,Ln=(0,b.useMemo)(()=>[...On,...kn],[kn,On]),Rn=(0,b.useMemo)(()=>Me?.findings??[],[Me]),zn=(0,b.useMemo)(()=>Me?.is_current_diff?Rn.filter(e=>Be.has(e.id)):[],[Rn,Me?.is_current_diff,Be]),Bn=(0,b.useMemo)(()=>[...Be],[Be]),Vn=(0,b.useMemo)(()=>Pe.filter(e=>He.has(e.id)),[Pe,He]),Hn=(0,b.useMemo)(()=>[...He],[He]),Un=Ln.length+zn.length+Vn.length,Wn=!!(Me?.review_run&&Rn.length>0&&!Me.is_current_diff),Gn=Ke?.bundle.pull_request??null,Kn=(0,b.useMemo)(()=>dt.length>0?dt:Ke?.recent_commit_subjects??[],[Ke?.recent_commit_subjects,dt]),qn=Ke?.has_helper_model===!0,Jn=d!==`project_root`&&!!n&&!!t,Yn=g===`bundle_diff`?z:L,Xn=re&&v===null,Zn=ae&&x===null,Qn=oe&&C===null,$n=Ye&&Ke===null,er=g===`bundle_diff`?Zn:Xn,tr=g===`uncommitted`?Rn:K1,nr=g===`uncommitted`?Bn:J1,rr=g===`bundle_diff`?Pe:q1,ir=g===`bundle_diff`?Hn:J1,ar=g===`bundle_diff`?`bundle_diff`:`uncommitted`,or=(0,b.useMemo)(()=>{let e=new Map,t=e=>e?Dn.get(e)??e:null;for(let n of In){let r=t(n.filePath);r&&p0(e,r)}if(g===`uncommitted`){if(Wn)return e;for(let n of Rn){let r=t(n.file_path);r&&p0(e,r)}return e}for(let n of Pe){let r=t(n.file_path);r&&p0(e,r)}return e},[g,Dn,In,Pe,Wn,Rn]),sr=(Wn?0:Rn.length)+On.length,cr=Pe.length+kn.length,lr=g===`bundle_diff`?`No branch diff to show.`:`No uncommitted changes to show.`,ur=g===`uncommitted`&&(x?.files.length??0)>0?`Switch to Branch diff to review the full branch diff.`:null,dr=Jn&&!$n&&!!Ke&&Ke?.bundle.kind!==`project_root`&&C?.has_upstream===!0&&f,fr=dr&&!Gn&&!pt&&!ht&&!_t&&!We&&!be&&!ue&&!Se&&(C?.ahead??0)===0&&!!C?.branch,pr=(0,b.useCallback)(e=>{if(!e){it(!1);return}if(!t||!n||!dr||Gn||ht){it(e);return}gt(!0),F(t,n).then(e=>{qe(e),ut(t=>t.trim()?t:e.bundle.pull_request?.base_branch??``),it(!e.bundle.pull_request)}).catch(e=>{X.error(r0(e,`Unable to check for an existing pull request right now.`),{id:`ticket-changes-sync-pr-error`}),it(!0)}).finally(()=>{gt(!1)})},[Gn,ht,t,n,dr]),mr=(0,b.useMemo)(()=>{if(dr)return(C?.ahead??0)>0?`Push the branch before creating a pull request.`:C?.branch?u:`Bundle branch information is not available right now.`},[u,C?.ahead,C?.branch,dr]),hr=c&&!er&&(g===`bundle_diff`||!Qn)&&!ue&&!be&&!Se,gr=jn?hr||An.comments.has(jn.commentKey):hr,_r=!!a&&o&&Un>0&&!We,vr=(0,b.useCallback)(e=>{Ve(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),yr=(0,b.useCallback)(e=>{Ue(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),br=(0,b.useCallback)(()=>{Et.current=c0(),je(e=>({uncommitted:{...e.uncommitted,activeTarget:null,editingCommentKey:null,draftInput:``,comments:new Map},bundle_diff:{...e.bundle_diff,activeTarget:null,editingCommentKey:null,draftInput:``,comments:new Map}}))},[]),xr=(0,b.useCallback)(()=>{br(),Ve(new Set),Ue(new Set)},[br]),Sr=(0,b.useCallback)(async()=>{if(!(!t||!n||!fr)){mt(!0);try{let e=await N(t,n,{title:at.trim(),body:st.trim(),base_branch:lt.trim()||null});qe(e),ut(e.bundle.pull_request?.base_branch??lt.trim()),it(!1),X.success(`Pull request created.`,{id:`ticket-changes-create-pr-success`})}catch(e){X.error(r0(e,`Unable to create the pull request right now.`),{id:`ticket-changes-create-pr-error`})}finally{mt(!1)}}},[fr,t,lt,st,at,n]),Cr=(0,b.useCallback)(async()=>{if(!(!t||!n||!dr||_t)){vt(!0);try{ct((await Bt({title:at.trim(),commit_subjects:Kn})).description)}catch(e){X.error(r0(e,`Unable to generate the pull request description right now.`),{id:`ticket-changes-generate-pr-description-error`})}finally{vt(!1)}}},[_t,t,Kn,at,Bt,n,dr]),wr=(0,b.useCallback)(({filePath:e,changeKey:t,commentKey:n})=>{let r=An.comments.get(n),i=Et.current[g].get(n)??r?.comment??``;if(r){A(r.filePath),zt(g,e=>({...e,activeTarget:null,editingCommentKey:n,draftInput:i}));return}hr&&zt(g,r=>({...r,activeTarget:{filePath:e,changeKey:t,commentKey:n},editingCommentKey:null,draftInput:i}))},[g,An.comments,hr,zt]),Tr=(0,b.useCallback)(()=>{Nn&&Et.current[g].delete(Nn),zt(g,e=>({...e,activeTarget:null,editingCommentKey:null,draftInput:``}))},[g,Nn,zt]),Er=(0,b.useCallback)(e=>{Nn&&Et.current[g].set(Nn,e)},[g,Nn]),Dr=(0,b.useCallback)((e,t)=>{let n=An.comments.has(e.commentKey);if(!hr&&!n)return;let r=t.trim();if(!r)return;let i=e.change.type===`insert`?null:`oldLineNumber`in e.change?e.change.oldLineNumber:e.change.lineNumber,a=e.change.type===`delete`?null:`newLineNumber`in e.change?e.change.newLineNumber:e.change.lineNumber;zt(g,t=>{let n=new Map(t.comments);return n.set(e.commentKey,{scope:g,filePath:e.filePath,changeKey:e.changeKey,changeType:e.change.type,oldLineNumber:i,newLineNumber:a,hunkHeader:e.hunk.content,lineContent:e.change.content,diffSnippet:gD(e.hunk,e.change),comment:r}),{...t,activeTarget:null,editingCommentKey:null,draftInput:``,comments:n}}),Et.current[g].delete(e.commentKey)},[g,An.comments,hr,zt]),Or=(0,b.useCallback)(e=>{let t=An.comments.get(e);if(!t)return;A(t.filePath);let n=Et.current[g].get(e)??t.comment;zt(g,t=>({...t,activeTarget:null,editingCommentKey:e,draftInput:n}))},[g,An.comments,zt]),kr=(0,b.useCallback)(e=>{Et.current[g].delete(e),zt(g,t=>{let n=new Map(t.comments);return n.delete(e),{...t,activeTarget:t.activeTarget?.commentKey===e?null:t.activeTarget,editingCommentKey:t.editingCommentKey===e?null:t.editingCommentKey,draftInput:t.activeTarget?.commentKey===e||t.editingCommentKey===e?``:t.draftInput,comments:n}})},[g,zt]),Ar=(0,b.useCallback)(async()=>{if(!a||!_r)return;Ge(!0);let e=TD({drafts:Ln,findings:zn,githubComments:Vn,uncommittedFiles:Qt,bundleFiles:$t});try{await a(e),br(),Ve(new Set),Ue(new Set),Ne(e=>e&&{...e,findings:[],is_current_diff:!1}),X.success(`Fixes submitted.`,{id:`ticket-diff-review-submit-success`}),i()}catch(e){X.error(r0(e,`Unable to submit the review right now.`),{id:`ticket-diff-review-submit-error`})}finally{Ge(!1)}},[Ln,$t,_r,br,i,a,Vn,zn,Qt]),jr=(0,b.useCallback)(()=>{if(g===`bundle_diff`){Yt();return}Xt(()=>!0,{allowCache:!1,resetSelection:!bt.current})},[g,Yt,Xt]),Mr=(0,b.useMemo)(()=>a?(0,q.jsx)(xQ,{reviewComments:Ln,reviewFindings:zn,githubComments:Vn,pendingFixCount:Un,canSendReview:_r,isSubmittingReview:We,reviewSubmitDisabledReason:s,onClearPendingFixes:xr,onSubmitReview:()=>{Ar()}}):null,[Ln,_r,xr,Ar,We,a,Un,s,Vn,zn]),Nr=e=>{O(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Pr=()=>{C&&O(pn?new Set:Y1(C.files))},Fr=async()=>{if(hn){_e(!0);try{let e=await Vt({message:M.trim(),selected_paths:[...D]});e.ticket&&m?.(e.ticket),qt(e.git_status,{resetSelection:!0}),I(``),d===`project_root`&&M$(t),p&&h?.(p),await Jt({preserveContent:!0,gitStatusForCache:e.git_status}),await Yt({preserveContent:!0}),(e.git_status.ahead??0)>0?await Gt(()=>!0):Kt(),X.success(`Commit created.`,{id:`ticket-git-commit-success`})}catch(e){X.error(r0(e,`Unable to create the commit right now.`),{id:`ticket-git-commit-error`})}finally{_e(!1)}}},Ir=async()=>{if(gn){ye(!0);try{I((await Ht({selected_paths:[...D]})).message),yt.current?.focus()}catch(e){X.error(r0(e,`Unable to generate a commit message right now.`),{id:`ticket-git-commit-message-error`})}finally{ye(!1)}}},Lr=async()=>{if(vn){xe(!0);try{let e=T.map(e=>e.subject.trim()).filter(Boolean),a=await Ut();if(a.ticket&&m?.(a.ticket),qt(a.git_status,{resetSelection:!0}),jt(a.git_status),ft(e),Kt(),d===`project_root`&&M$(t),p&&h?.(p),X.success(a.git_status.ahead===0?`Branch pushed.`:`Push completed.`,{id:`ticket-git-push-success`}),a.git_status.ahead===0)if(d!==`project_root`&&t&&n)try{let i=await j(t,n);qe(i),ot(e=>e.trim()?e:i.bundle.name??r),ct(t=>t.trim()?t:m0(e)),ut(e=>e.trim()?e:i.bundle.pull_request?.base_branch??``)}catch{}else i()}catch(e){X.error(r0(e,`Unable to push the branch right now.`),{id:`ticket-git-push-error`})}finally{xe(!1)}}},Rr=async()=>{if(yn){Ce(!0);try{let e=await Wt();e.ticket&&m?.(e.ticket),qt(e.git_status,{resetSelection:!0}),E(e.commits),W(null),le(!1),d===`project_root`&&M$(t),p&&h?.(p),await Jt({preserveContent:!0,gitStatusForCache:e.git_status}),await Yt({preserveContent:!0}),X.success(`Latest local commit undone.`,{id:`ticket-git-undo-success`})}catch(e){X.error(r0(e,`Unable to undo the latest local commit right now.`),{id:`ticket-git-undo-error`})}finally{Ce(!1)}}};return(0,q.jsx)(Lv,{onClose:i,overlayClassName:`z-[70] bg-black/30 p-[5vh]`,panelClassName:`flex h-[92vh] w-full max-w-none flex-col overflow-hidden rounded-2xl border border-border bg-card p-6 shadow-2xl`,renderContent:({closeButton:e})=>(0,q.jsxs)(q.Fragment,{children:[be&&(0,q.jsx)(`div`,{className:`absolute inset-0 z-10 flex items-center justify-center rounded-2xl bg-black/45 backdrop-blur-sm`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-border bg-card/95 px-4 py-3 text-sm text-foreground shadow-xl`,children:[(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}),(0,q.jsx)(`span`,{children:`Pushing branch...`})]})}),(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-widest text-muted-foreground`,children:`Changes`}),Sn?(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,q.jsx)(`h2`,{className:`max-w-full truncate font-mono text-lg font-semibold text-foreground`,children:Sn}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(Z,{variant:(C?.ahead??0)>0?`info`:`outline`,children:bn}),(0,q.jsx)(Z,{variant:(C?.behind??0)>0?`warning`:`outline`,children:xn}),(0,q.jsx)(Z,{variant:C?.is_dirty?`warning`:`success`,children:C?.is_dirty?`Dirty`:`Clean`})]})]}):(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`h-7 w-56 animate-pulse rounded-md bg-muted/70`,"aria-hidden":`true`}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsx)(`div`,{className:`h-6 w-32 animate-pulse rounded-full bg-muted/60`,"aria-hidden":`true`}),(0,q.jsx)(`div`,{className:`h-6 w-20 animate-pulse rounded-full bg-muted/60`,"aria-hidden":`true`}),(0,q.jsx)(`div`,{className:`h-6 w-20 animate-pulse rounded-full bg-muted/60`,"aria-hidden":`true`})]})]})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2 text-xs text-muted-foreground`,children:[(Gn||dr)&&(0,q.jsx)(h0,{pullRequest:Gn,isLoading:$n,isOpen:rt,canCreate:fr,disabledReason:mr,isCreating:pt,isSyncing:ht,isGeneratingDescription:_t,title:at,body:st,baseBranch:lt,onOpenChange:pr,onTitleChange:ot,onBodyChange:ct,onBaseBranchChange:ut,showGenerateDescription:qn,onGenerateDescription:()=>{Cr()},onCreate:()=>{Sr()}}),(0,q.jsx)(CQ,{isCommitsLoading:ce,commitsError:ne,unpushedCommits:T,canUndoLatestCommit:yn,isUndoing:Se,aheadCount:C?.ahead??0,onUndoLatestCommit:()=>{Rr()}}),_n&&(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`default`,onClick:()=>{Lr()},disabled:!vn,title:u,className:`gap-2`,children:[be?(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}):(0,q.jsx)(E_,{className:`h-4 w-4`}),be?`Pushing...`:`Push branch`]}),e]})]}),(0,q.jsxs)(`div`,{"data-testid":`ticket-changes-layout`,className:`grid min-h-0 flex-1 gap-4 lg:grid-cols-[18rem_minmax(0,1fr)] xl:grid-cols-[20rem_minmax(0,1fr)]`,children:[(0,q.jsxs)(`aside`,{className:`flex min-h-0 flex-col`,children:[Jn&&(0,q.jsxs)(hQ,{type:`single`,size:`sm`,variant:`outline`,value:g,onValueChange:e=>{(e===`uncommitted`||e===`bundle_diff`)&&_(e)},className:`mb-3 self-start`,children:[(0,q.jsxs)(gQ,{value:`uncommitted`,className:`gap-2`,children:[(0,q.jsx)(`span`,{children:`Uncommitted`}),sr>0&&(0,q.jsx)(`span`,{className:`rounded-full border border-sky-400/40 bg-sky-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-sky-100`,children:sr})]}),(0,q.jsxs)(gQ,{value:`bundle_diff`,className:`gap-2`,children:[(0,q.jsx)(`span`,{children:`Branch diff`}),cr>0&&(0,q.jsx)(`span`,{className:`rounded-full border border-violet-400/40 bg-violet-400/12 px-1.5 py-0.5 text-[10px] font-semibold leading-none text-violet-100`,children:cr})]})]}),(0,q.jsx)(v$,{selectionWarning:g===`uncommitted`?mn:null,gitError:g===`uncommitted`?te:z,sidebarFiles:un,commentCountByPath:or,commentCountTone:ar,isGitStatusLoading:g===`bundle_diff`?Zn:Qn,selectedPaths:D,selectedDiffPath:k,allFilesSelected:pn,diffStats:nn?.stats??null,title:g===`bundle_diff`?`Branch diff files`:`Changed files`,allChangesDescription:g===`bundle_diff`?`Review the full branch diff against the review base.`:`Review the full workspace diff.`,enableSelection:g===`uncommitted`,onToggleSelectAll:Pr,onSelectDiffPath:A,onTogglePath:Nr})]}),(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-3`,children:[(0,q.jsx)(p$,{selectedDiffPath:k,sidebarFiles:un,diffResponse:nn,isDiffLoading:er,diffError:Yn,allDiffFiles:En,renderedFiles:Tn,viewType:we,onViewTypeChange:Te,onRetry:jr,activeReviewTarget:jn,editingReviewCommentKey:Mn,reviewDraftInstanceKey:Pn,reviewDraftInput:Fn,reviewComments:In,reviewFindings:tr,githubComments:rr,selectedReviewFindingIds:nr,selectedGitHubCommentIds:ir,canSelectReviewTarget:hr,canEditActiveReviewDraft:gr,reviewFindingsError:g===`uncommitted`?Ie:null,gitHubCommentsError:g===`bundle_diff`?Re:null,hasStaleReviewFindings:g===`uncommitted`?Wn:!1,onSelectReviewTarget:wr,onToggleReviewFindingSelection:vr,onToggleGitHubCommentSelection:yr,onReviewDraftInputChange:Er,onCancelReviewDraft:Tr,onEditReviewDraft:Or,onRemoveReviewDraft:kr,onSaveReviewDraft:Dr,diffThemeClassName:y$,resolveFilePath:$1,normalizeDiffPath:Z1,onVisibleFilePathsChange:ln,emptyStateTitle:lr,emptyStateDescription:ur,reviewSummaryControl:Mr,headerLayout:`inline-controls`}),g===`uncommitted`&&(0,q.jsx)(`div`,{className:`mt-auto shrink-0`,children:(0,q.jsx)(SQ,{commitMessage:M,onCommitMessageChange:I,commitMessageRef:yt,selectedFileCount:dn,changesDisabledReason:u,canEditCommitMessage:l&&!We,canGenerateCommitMessage:gn,canCommit:hn,isGeneratingCommitMessage:ve,isCommitting:ue,onGenerateCommitMessage:()=>{Ir()},onCommit:()=>{Fr()}})})]})]})]})]})})},v0={blocked:{className:`stroke-red-400/80`,markerId:`dependency-arrowhead-blocked`},ready:{className:`stroke-emerald-400/80`,markerId:`dependency-arrowhead-ready`},preview:{className:`stroke-amber-300/80`,markerId:`dependency-arrowhead-preview`}},y0=e=>eM(e)?`ready`:`blocked`,b0=180,x0=560,S0=88,C0=12,w0=18,T0=(e,t,n)=>Math.min(Math.max(e,t),n),E0=(e,t,n)=>n&&n.width>0&&n.height>0?n:Object.values(e).reduce((e,t)=>({width:Math.max(e.width,t.left+t.width),height:Math.max(e.height,t.top+t.height)}),{width:t.x,height:t.y}),D0=(e,t)=>{let n=T0(Math.round(e.length*7.2)+24,b0,x0),r=Math.max(b0,t-C0*2);return Math.min(n,r)},O0=(e,t,n,r,i)=>{let a=n.get(e.blockerTicketId);if(!a)return null;let o=e.hoveredTicketId&&e.hoveredTicketId!==e.blockerTicketId?r[e.hoveredTicketId]:null,s=e.hoveredTicketId&&e.hoveredTicketId!==e.blockerTicketId?n.get(e.hoveredTicketId):null,c=s?`${a.title} is blocking ${s.title}`:`${a.title} is blocking...`,{start:l,end:u}=cM(t,o??{left:e.pointer.x,top:e.pointer.y,width:0,height:0}),d=E0(r,e.pointer,i),f=o&&s?{x:l.x+(u.x-l.x)*.6,y:l.y+(u.y-l.y)*.6-28}:{x:u.x,y:u.y-28},p=D0(c,d.width);return{text:c,x:o&&s?T0(f.x-p/2,C0,Math.max(C0,d.width-p-C0)):(()=>{let e=f.x+w0,t=f.x-w0-p;return e+p<=d.width-C0?e:t>=C0?t:T0(e,C0,Math.max(C0,d.width-p-C0))})(),y:T0(f.y,C0,Math.max(C0,d.height-S0-C0)),width:p}},k0=({blockerRect:e,dependentRect:t,className:n,testId:r,markerEnd:i})=>{let{start:a,end:o}=cM(e,t),{path:s}=lM(a,o);return(0,q.jsx)(`g`,{"data-testid":r,children:(0,q.jsx)(`path`,{d:s,className:n,fill:`none`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,markerEnd:i})})},A0=({preview:e,cardRects:t,ticketsById:n,overlaySize:r})=>{if(!e)return null;let i=t[e.blockerTicketId];if(!i)return null;let a=(e.hoveredTicketId&&e.hoveredTicketId!==e.blockerTicketId&&t[e.hoveredTicketId]?t[e.hoveredTicketId]:null)??{left:e.pointer.x,top:e.pointer.y,width:0,height:0},o=O0(e,i,n,t,r);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(k0,{blockerRect:i,dependentRect:a,className:v0.preview.className,testId:`dependency-preview`,markerEnd:`url(#${v0.preview.markerId})`}),(e=>o?(0,q.jsx)(`foreignObject`,{x:o.x,y:o.y,width:o.width,height:S0,"data-testid":`dependency-preview-label`,children:e}):null)((0,q.jsx)(`div`,{className:`pointer-events-none flex h-full w-full items-start`,children:(0,q.jsx)(`div`,{className:`max-w-full rounded-md border border-amber-300/60 bg-stone-950/85 px-3 py-1.5 text-xs font-medium leading-5 text-amber-100 shadow-lg shadow-stone-950/20 whitespace-normal break-words`,children:o?.text})}))]})},j0=({dependencies:e,cardRects:t,preview:n,ticketsById:r,overlaySize:i})=>(0,q.jsxs)(`svg`,{className:`pointer-events-none absolute inset-0 z-10 h-full w-full overflow-visible`,children:[(0,q.jsx)(`defs`,{children:Object.values(v0).map(e=>(0,q.jsx)(`marker`,{id:e.markerId,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`4`,orient:`auto`,markerUnits:`userSpaceOnUse`,children:(0,q.jsx)(`path`,{d:`M 0 0 L 8 4 L 0 8`,className:e.className,fill:`none`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`})},e.markerId))}),e.map(e=>{let n=r.get(e.blocker_ticket_id),i=r.get(e.dependent_ticket_id),a=t[e.blocker_ticket_id],o=t[e.dependent_ticket_id];if(n?.parked_at||i?.parked_at)return null;let s=v0[y0(n)];return!a||!o?null:(0,q.jsx)(k0,{blockerRect:a,dependentRect:o,className:s.className,testId:`dependency-edge-${e.blocker_ticket_id}-${e.dependent_ticket_id}`,markerEnd:`url(#${s.markerId})`},`${e.blocker_ticket_id}:${e.dependent_ticket_id}`)}),(0,q.jsx)(A0,{preview:n,cardRects:t,ticketsById:r,overlaySize:i})]}),M0=({onSubmit:e,bundles:t,projectId:n=null,projectBranchState:r=null,tool:i,showModelSelector:a=!1,availableModels:o=[],availableSkills:s=[],initialModel:c=``,initialVariant:l=``,initialSkills:u=[],onCreateBundle:d,onDeleteBundle:f,onRefreshBundles:p,onClose:m})=>{let{jiraImportState:h,importFromJira:g}=Ny(n);return(0,q.jsx)(Lv,{onClose:m,overlayClassName:`bg-black/60`,panelClassName:`h-[92vh] w-[96vw] max-w-6xl overflow-y-auto rounded-2xl border border-border bg-card p-4 shadow-2xl sm:p-5 lg:p-6`,renderContent:({closeButton:_})=>(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`absolute right-4 top-4 z-10 sm:right-5 sm:top-5 lg:right-6 lg:top-6`,children:_}),(0,q.jsx)(KB,{heading:`New Ticket`,bundles:t,showModelSelector:a,availableModels:o,availableSkills:s,projectId:n,initialModel:c,initialVariant:l,initialSkills:u,projectBranchState:r,jiraImportState:h,onImportFromJira:g,onCancel:m,onCreateBundle:d,onDeleteBundle:f,onRefreshBundles:p,titleInputId:`title`,descriptionInputId:`description`,bundleSelectId:`new-ticket-bundle`,modelSelectId:`new-model`,variantSelectId:`new-variant`,skillsSelectId:`new-skills`,showEmptyBundleOption:!0,planAction:i?{label:`Plan`,onClick:async({title:t,description:n,model:r,variant:i,skills:a,worktree_bundle_id:o,external_source:s})=>{await e(t,n,`plan`,r,i,a,{worktree_bundle_id:o??void 0,...s?{external_source:s}:{}}),m()}}:void 0,primaryAction:{label:`Create Ticket`,variant:`subtle`,onClick:async({title:t,description:n,model:r,variant:i,skills:a,worktree_bundle_id:o,external_source:s})=>{await e(t,n,`create`,r,i,a,{worktree_bundle_id:o??void 0,...s?{external_source:s}:{}}),m()}},secondaryAction:{label:`Create & Build`,variant:`brand`,showAdvanceIcon:!0,onClick:async({title:t,description:n,model:r,variant:i,skills:a,worktree_bundle_id:o,external_source:s})=>{await e(t,n,`build`,r,i,a,{worktree_bundle_id:o??void 0,...s?{external_source:s}:{}}),m()}}})]})})},N0=e=>{let t=Math.max(0,Date.now()-e),n=Math.floor(t/1e3);return n<60?`${n}s`:`${Math.floor(n/60)}m ${n%60}s`},P0=e=>e.status===`error`?`border-red-500/35 bg-red-500/10`:e.status===`done`?e.boardState===`fading`?`border-emerald-500/25 bg-emerald-500/10 opacity-0 transition-opacity duration-700`:`border-emerald-500/35 bg-emerald-500/10`:`border-violet-500/30 bg-card/60`,F0=({run:e})=>(0,q.jsxs)(Bv,{"data-testid":`planning-run-card-${e.id}`,className:`relative overflow-hidden rounded-xl border shadow-none ${P0(e)}`,children:[e.status===`running`&&(0,q.jsx)(`div`,{"aria-hidden":`true`,className:`absolute inset-x-0 top-0 h-1 animate-pulse bg-gradient-to-r from-violet-500/0 via-violet-300/80 to-violet-500/0`}),(0,q.jsxs)(Gv,{className:`space-y-3 p-3`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[e.status===`running`?(0,q.jsx)(fM,{label:`Planning...`}):e.status===`done`?(0,q.jsx)(fM,{label:`Done`,className:`bg-emerald-500/85 text-emerald-50`}):(0,q.jsx)(fM,{label:`Planning failed`,className:`bg-red-500/85 text-red-50`}),(0,q.jsx)(`span`,{className:`text-[11px] uppercase tracking-[0.16em] text-muted-foreground`,children:N0(e.submittedAt)})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`line-clamp-2 text-sm font-medium text-foreground`,children:e.description}),e.status===`done`&&e.summary&&(0,q.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[`Created `,e.summary.ticketCount,` tickets, `,e.summary.dependencyCount,` dependencies`,e.summary.ticketsWithOpenQuestions>0?`, ${e.summary.ticketsWithOpenQuestions} open question${e.summary.ticketsWithOpenQuestions===1?``:`s`}`:``]}),e.status===`error`&&e.error&&(0,q.jsx)(`p`,{className:`mt-2 text-xs text-red-200`,children:e.error})]})]})]}),I0={idle:`bg-secondary`,running:`bg-sky-400`,done:`bg-emerald-400`,error:`bg-red-400`},L0=e=>e.some(e=>e.status===`running`)?`running`:e.some(e=>e.status===`error`)?`error`:e.some(e=>e.status===`done`)?`done`:`idle`,R0=e=>{let t=Math.max(0,Date.now()-e),n=Math.floor(t/1e3);return n<60?`${n}s`:`${Math.floor(n/60)}m ${n%60}s`},z0=({status:e})=>e===`running`?(0,q.jsx)(fM,{label:`Planning...`,className:`px-2.5 py-0.5 text-[11px]`}):e===`done`?(0,q.jsx)(Z,{className:`bg-emerald-500/85 px-2.5 py-0.5 text-[11px] text-emerald-50`,children:`Done`}):(0,q.jsx)(Z,{className:`bg-red-500/85 px-2.5 py-0.5 text-[11px] text-red-50`,children:`Failed`}),B0=({heading:e,runs:t})=>t.length===0?null:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,q.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,q.jsx)(`div`,{className:`flex flex-col gap-2.5`,children:t.map(e=>(0,q.jsx)(Bv,{className:`rounded-2xl border-border bg-card/70 shadow-none`,children:(0,q.jsxs)(Gv,{className:`space-y-2 p-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,q.jsx)(`p`,{className:`line-clamp-2 text-sm font-medium text-foreground`,children:e.description}),(0,q.jsx)(z0,{status:e.status})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:R0(e.submittedAt)}),e.summary&&(0,q.jsxs)(`span`,{children:[e.summary.ticketCount,` tickets, `,e.summary.dependencyCount,` dependencies`,e.summary.ticketsWithOpenQuestions>0?`, ${e.summary.ticketsWithOpenQuestions} open question${e.summary.ticketsWithOpenQuestions===1?``:`s`}`:``]})]}),e.error&&(0,q.jsx)(`div`,{className:`rounded-xl border border-red-500/30 bg-destructive/15 px-3 py-2 text-xs text-red-200`,children:e.error})]})},e.id))})]}),V0=({projectId:e=null,state:t,bundles:n,showModelSelector:r,availableModels:i,availableSkills:a,onManageBundles:o,onToggle:s,onDescriptionChange:c,onModelChange:l,onVariantChange:u,onSkillsChange:d,onBundleChange:f,onGenerate:p})=>{let m=i.find(e=>e.id===t.composer.model)??null,{jiraImportState:h,importFromJira:g}=Ny(t.isOpen?e:null),_=(0,b.useRef)(null),v=(0,b.useRef)(t.isOpen),y=(0,b.useRef)(t.isOpen),x=L0(t.runs),S=t.runs.filter(e=>e.status===`running`),C=t.runs.filter(e=>e.status!==`running`),w=t.composer.description.trim().length>0;(0,b.useEffect)(()=>{if(t.isOpen&&!v.current&&(y.current=!0),t.isOpen||(y.current=!1),v.current=t.isOpen,!t.isOpen||!y.current)return;let e=window.requestAnimationFrame(()=>{let e=document.activeElement,t=e instanceof HTMLElement&&e.closest(`[data-testid="planning-agent-rail"]`)!==null;if(e instanceof HTMLElement&&e!==document.body&&e!==_.current&&!t){y.current=!1;return}_.current?.focus({preventScroll:!0}),y.current=!1});return()=>{window.cancelAnimationFrame(e)}},[t.isOpen]),(0,b.useEffect)(()=>{if(!t.isOpen)return;let e=e=>{e.key!==`Escape`||e.defaultPrevented||(e.preventDefault(),s())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[s,t.isOpen]);let T=(0,q.jsxs)(Y,{type:`button`,"aria-label":t.isOpen?`Close planning agent`:`Open planning agent`,"aria-pressed":t.isOpen,onClick:s,variant:`outline`,className:`relative flex h-14 w-11 flex-col items-center justify-center gap-1 p-0`,children:[(0,q.jsx)(ly,{className:`size-5`}),(0,q.jsx)(v_,{"aria-hidden":`true`,children:`A`}),(0,q.jsx)(`span`,{className:`absolute top-1 right-1 h-2.5 w-2.5 rounded-full ring-2 ring-card ${I0[x]}`})]});return(0,q.jsxs)(`aside`,{"aria-label":`Planning agent sidebar`,className:`relative z-20 h-full w-16 shrink-0 overflow-visible border-r border-border bg-background`,children:[(0,q.jsx)(`div`,{"data-testid":`planning-agent-rail`,className:`relative z-40 flex h-full w-16 shrink-0 flex-col items-center border-r border-border bg-background py-4`,children:t.isOpen?T:(0,q.jsx)(d_,{content:`Planning agent`,children:T})}),(0,q.jsx)(`div`,{"data-testid":`planning-agent-drawer`,"aria-hidden":!t.isOpen,inert:!t.isOpen||void 0,className:J(`absolute inset-y-0 left-16 z-30 w-[min(36rem,calc(100vw-5rem))] overflow-hidden transition-transform duration-200 ease-out motion-reduce:transition-none`,t.isOpen?`pointer-events-auto translate-x-0`:`pointer-events-none -translate-x-full`),children:(0,q.jsxs)(`div`,{className:`flex h-full w-[min(36rem,calc(100vw-5rem))] flex-col border-r border-border bg-background`,children:[(0,q.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-border px-6 py-5`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`h2`,{className:`text-sm font-semibold text-foreground`,children:`Planning agent`}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:`Turn a larger initiative into plan-stage tickets with dependencies and bundle context.`})]}),(0,q.jsx)(Y,{type:`button`,"aria-label":`Close planning agent panel`,onClick:s,variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground hover:text-foreground`,children:(0,q.jsx)(Av,{className:`h-4 w-4`})})]}),(0,q.jsx)(`div`,{"data-testid":`planning-agent-scroll-body`,className:`min-h-0 flex-1 overflow-y-auto`,children:(0,q.jsxs)(`div`,{className:`space-y-5 px-6 py-5`,children:[(0,q.jsx)(HB,{jiraImportState:h,onImportFromJira:g,onImported:e=>{c(e.description)},inputId:`planning-agent-jira-import`}),(0,q.jsx)(qv,{label:`Description`,htmlFor:`planning-agent-description`,className:`gap-2`,children:(0,q.jsx)(`div`,{className:`relative`,children:(0,q.jsx)(lx,{ref:_,projectId:e,suggestionAnchor:`caret`,id:`planning-agent-description`,"aria-label":`Planning description`,value:t.composer.description,onValueChange:c,rows:14,className:`min-h-[18rem] resize-y text-sm leading-6`,placeholder:`Describe the task, acceptance criteria, context...`})})}),(0,q.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsx)(UB,{bundles:n,value:t.composer.worktreeBundleId,onChange:f,selectId:`planning-agent-bundle`,emptyLabel:`Auto-create bundle`,hideProjectRootBundles:!0,label:``})}),o&&(0,q.jsx)(Y,{type:`button`,onClick:o,variant:`outline`,size:`sm`,className:`shrink-0 whitespace-nowrap border-sky-500/30 bg-sky-500/10 text-sky-200 hover:border-sky-400 hover:bg-sky-500/20 hover:text-sky-100`,children:`Manage bundles`})]}),(0,q.jsx)(`div`,{className:`space-y-3`,children:(0,q.jsx)(zB,{model:t.composer.model,variant:t.composer.variant,skills:t.composer.skills,showModelSelector:r,showSkillsSelector:r,availableModels:i,availableSkills:a,selectedModel:m,onModelChange:l,onVariantChange:u,onSkillsChange:d,modelSelectId:`planning-agent-model`,variantSelectId:`planning-agent-variant`,skillsSelectId:`planning-agent-skills`,layout:`stacked`})}),(0,q.jsx)(`div`,{"data-testid":`planning-agent-runs`,className:`border-t border-border/80 px-0 pt-5`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(B0,{heading:`Active planning runs`,runs:S}),(0,q.jsx)(B0,{heading:`Recent runs`,runs:C})]})})]})}),(0,q.jsx)(`div`,{className:`shrink-0 border-t border-border px-6 py-4`,children:(0,q.jsx)(Y,{type:`button`,onClick:p,disabled:!w,className:`w-full`,children:`Plan tickets`})})]})})]})},H0=({className:e=``})=>{let{setNodeRef:t,isOver:n}=sj({id:`trash`});return(0,q.jsxs)(`div`,{ref:t,"data-testid":`delete-drop-zone`,className:`${e} flex min-w-[13rem] select-none items-center justify-between gap-4 rounded-2xl border px-4 py-3 backdrop-blur-sm transition-all duration-150 ${n?`scale-[1.02] border-red-400/70 bg-destructive/35 text-red-100 shadow-lg shadow-red-950/30`:`border-red-500/30 bg-background/82 text-red-200/85`}`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(Z,{variant:`destructive`,className:`text-[11px] uppercase tracking-[0.28em]`,children:`Delete`}),(0,q.jsx)(`div`,{className:`mt-1 text-sm font-medium`,children:n?`Release to delete`:`Drop here to delete`})]}),(0,q.jsx)(`div`,{className:`rounded-xl border p-2 transition-colors ${n?`border-red-400/60 bg-red-500/20`:`border-red-500/20 bg-background/60`}`,children:(0,q.jsx)(Jv,{className:`h-5 w-5 transition-colors ${n?`text-red-100`:`text-red-300/70`}`})})]})},U0=(e,t)=>O(w(`/ticket-dependencies`,e),{signal:t}),W0=(e,t)=>O(w(`/ticket-dependencies`,e),{method:`POST`,body:t,fallbackErrorMessage:`Unable to create the dependency right now.`}),G0=(e,t,n)=>D(w(`/ticket-dependencies/${t}/${n}`,e),{method:`DELETE`,fallbackErrorMessage:`Unable to remove the dependency right now.`}),K0=(e,t)=>{let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(!n||!i||n.left!==i.left||n.top!==i.top||n.width!==i.width||n.height!==i.height)return!1}return!0},q0=(e,t)=>e===t?!0:!e||!t?!1:e.projectId===t.projectId&&e.blockerTicketId===t.blockerTicketId&&e.hoveredTicketId===t.hoveredTicketId&&e.pointer.x===t.pointer.x&&e.pointer.y===t.pointer.y,J0=({activeProjectId:e,tickets:t,dependencies:n,setDependencies:r,activeTicket:i,activeOverlayNode:a,dragOffset:o})=>{let[s,c]=(0,b.useState)({}),[l,u]=(0,b.useState)({width:0,height:0}),[d,f]=(0,b.useState)(null),[p,m]=(0,b.useState)(null),h=(0,b.useRef)(null),g=(0,b.useRef)(null),_=(0,b.useRef)(null),v=(0,b.useRef)(new Map),y=(0,b.useRef)({}),x=(0,b.useRef)(null),C=(0,b.useRef)(null),w=(0,b.useRef)(null),T=(0,b.useRef)(null),E=(0,b.useRef)(null),D=(0,b.useRef)(null),O=(0,b.useMemo)(()=>new Map(t.map(e=>[e.id,e])),[t]);(0,b.useEffect)(()=>{T.current=p},[p]),(0,b.useLayoutEffect)(()=>{if(!i||!a||!g.current)return;let e=window.requestAnimationFrame(()=>{let e=g.current?.getBoundingClientRect(),t=a.getBoundingClientRect();e&&f({ticketId:i.id,rect:{left:t.left-e.left,top:t.top-e.top,width:t.width,height:t.height}})});return()=>{window.cancelAnimationFrame(e)}},[a,i,o.x,o.y]);let k=(0,b.useCallback)(()=>{x.current===null&&(x.current=window.requestAnimationFrame(()=>{x.current=null;let e=g.current;if(!e){_.current=null,y.current={},c({}),u({width:0,height:0});return}let t=e.getBoundingClientRect(),n={};_.current={left:t.left,top:t.top},u(e=>e.width===t.width&&e.height===t.height?e:{width:t.width,height:t.height});for(let[e,r]of v.current){let i=r.getBoundingClientRect();n[e]={left:i.left-t.left,top:i.top-t.top,width:i.width,height:i.height}}y.current=n,c(e=>K0(e,n)?e:n)}))},[]);(0,b.useEffect)(()=>{let e=h.current;if(!e)return;let t=()=>{k()};return e.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t)}},[k]),(0,b.useEffect)(()=>{if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(()=>{k()});C.current=e;for(let t of v.current.values())e.observe(t);return()=>{e.disconnect(),C.current===e&&(C.current=null)}},[k]),(0,b.useEffect)(()=>{let e=h.current,t=g.current;if(!e&&!t)return;let n=new ResizeObserver(()=>{k()});return e&&n.observe(e),t&&t!==e&&n.observe(t),()=>{n.disconnect()}},[k]),(0,b.useEffect)(()=>(k(),()=>{x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null)}),[n,k,t]);let A=(0,b.useCallback)((e,t)=>{let n=v.current.get(e);if(t){if(n===t)return;v.current.set(e,t),C.current?.observe(t)}else{if(!n)return;v.current.delete(e),C.current?.unobserve(n)}k()},[k]),j=(0,b.useCallback)(e=>{q0(T.current,e)||(T.current=e,m(e))},[]),M=(0,b.useCallback)(()=>{E.current!==null&&(window.cancelAnimationFrame(E.current),E.current=null),D.current=null},[]),N=(0,b.useCallback)(e=>{D.current=e,E.current===null&&(E.current=window.requestAnimationFrame(()=>{E.current=null;let e=D.current;D.current=null,j(e)}))},[j]),P=(0,b.useCallback)((e,t)=>{let n=_.current;if(!n&&g.current){let e=g.current.getBoundingClientRect();n={left:e.left,top:e.top},_.current=n}return n?{x:e-n.left,y:t-n.top}:{x:e,y:t}},[]),F=(0,b.useCallback)((e,t,n)=>{for(let[r,i]of Object.entries(y.current))if(r!==n&&e>=i.left&&e<=i.left+i.width&&t>=i.top&&t<=i.top+i.height)return r;return null},[]),I=(0,b.useCallback)(async t=>{if(e)try{await G0(e,t.blocker_ticket_id,t.dependent_ticket_id),r(e=>Xj(e,t.blocker_ticket_id,t.dependent_ticket_id))}catch(e){X.error(e instanceof S?e.message:`Unable to remove the dependency right now.`,{id:`board-dependency-error`})}},[e,r]),L=(0,b.useCallback)((t,i)=>{if(!e)return;i.preventDefault(),w.current?.();let a=(n,r,i=!1)=>{let a=P(n,r),o={projectId:e,blockerTicketId:t,hoveredTicketId:F(a.x,a.y,t),pointer:a};if(i){M(),j(o);return}N(o)};a(i.clientX,i.clientY,!0);let o=e=>{a(e.clientX,e.clientY)},s=async i=>{let a=P(i.clientX,i.clientY),o=F(a.x,a.y,t),s=o?Qj(n,t,o):null;if(w.current?.(),w.current=null,j(null),!(!o||!s)){if(!s.valid){X.error($j(s.reason),{id:`board-dependency-error`});return}try{let n=await W0(e,{blocker_ticket_id:t,dependent_ticket_id:o});r(e=>Yj(e,n))}catch(e){X.error(e instanceof S?e.message:`Unable to create the dependency right now.`,{id:`board-dependency-error`})}}};w.current=()=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),M()},window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s,{once:!0})},[e,M,n,F,P,N,r,j]);(0,b.useEffect)(()=>{w.current?.(),w.current=null,M(),T.current=null},[e,M]),(0,b.useEffect)(()=>()=>{w.current?.(),E.current!==null&&(window.cancelAnimationFrame(E.current),E.current=null)},[]);let R=(0,b.useMemo)(()=>{let r=p?.blockerTicketId;if(!r||p.projectId!==e||!O.has(r))return null;let i=new Map;for(let e of t){if(e.id===r){i.set(e.id,`source`);continue}let t=Qj(n,r,e.id);i.set(e.id,t.valid?`valid`:`idle`)}return i},[e,n,p,O,t]),z=(0,b.useCallback)(e=>{if(!R||!p)return`idle`;let t=R.get(e)??`idle`;return e===p.hoveredTicketId&&t===`idle`?`invalid`:t},[R,p]),ee=(0,b.useMemo)(()=>!p||p.projectId!==e||!O.has(p.blockerTicketId)?null:{blockerTicketId:p.blockerTicketId,hoveredTicketId:p.hoveredTicketId,pointer:p.pointer},[e,p,O]);return{boardViewportRef:h,boardContentRef:g,registerTicketNode:A,measuredCardRects:(0,b.useMemo)(()=>{if(!i)return s;let e=s[i.id];return e?d?.ticketId===i.id?{...s,[i.id]:d.rect}:{...s,[i.id]:{...e,left:e.left+o.x,top:e.top+o.y}}:s},[d,i,s,o.x,o.y]),overlayPreview:ee,overlaySize:l,getDependencyTargetState:z,handleDependencyStart:L,handleDeleteDependency:I}},Y0=`[data-terminal-pane="true"]`,X0=e=>{if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||e.isContentEditable},Z0=e=>e instanceof HTMLElement?e.closest(Y0)!==null:!1,Q0=e=>X0(e)||Z0(e),$0=(e,t={})=>{let{isBlocked:n}=t;(0,b.useEffect)(()=>{let t=t=>{if(t.defaultPrevented||t.repeat)return;let r=e.find(e=>!e.disabled&&e.key.toLowerCase()===t.key.toLowerCase()&&(e.ctrlKey??!1)===t.ctrlKey&&(e.altKey??!1)===t.altKey&&(e.metaKey??!1)===t.metaKey&&(e.shiftKey===void 0||e.shiftKey===t.shiftKey));r&&(n?.(document.activeElement)||(t.preventDefault(),r.onKeyDown()))};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t)}},[e,n])},e2=e=>({...e,messages:void 0,agent_log:void 0,streaming_response:void 0}),t2=(e,t)=>e?e.state!==t.state||e.parked_at!==t.parked_at||e.worktree_bundle_id!==t.worktree_bundle_id:!0,n2=(e,t)=>{if(!e)return t;let n=t.worktree_bundle_id!==null&&e.worktree_bundle_id===t.worktree_bundle_id,r=t.bundle??(n&&e.bundle?.id===t.worktree_bundle_id?e.bundle:null),i=t.bundle_execution_position??(n?e.bundle_execution_position??null:null);return{...e,...t,bundle:r,bundle_execution_position:i}},r2=(e,t)=>{let n=e=>Ij(t)?Ij(e):e.state===t.state&&!Ij(e),r=e.findIndex(e=>n(e));if(r===-1)return[...e,t];let i=[...e];return i.splice(r,0,t),i},i2=(e,t)=>{let n=e.find(e=>e.id===t.id);return[n&&n.pull_request!==void 0&&t.pull_request===void 0?{...n,...t,pull_request:n.pull_request}:t,...e.filter(e=>e.id!==t.id)]},a2=(e,t)=>{let n=e.find(e=>e.id===t.id);if(!n)return[...e,t];let r=n2(n,t);return e.map(e=>e.id===t.id?r:e)},o2=(e,t)=>{let n=n2(e.find(e=>e.id===t.id),t);return r2(c2(e,t.id),n)},s2=(e,t)=>{if(e.length===0)return[...t];let n=[...e];for(let e of t)n=t2(n.find(t=>t.id===e.id),e)?o2(n,e):a2(n,e);let r=new Set(t.map(e=>e.id));return n.filter(e=>r.has(e.id))},c2=(e,t)=>e.filter(e=>e.id!==t),l2=(e,t,n,r={},i={})=>{let a=e.findIndex(e=>e.id===t);if(a===-1)return e;let o={...e[a],state:n,...r},s=c2(e,t);if(i.preferredIndex!==void 0){let e=Math.max(0,Math.min(i.preferredIndex,s.length));return s.splice(e,0,o),s}return r2(s,o)},u2=async(e,t)=>{`Notification`in window&&Notification.permission!==`denied`&&(Notification.permission===`default`&&await Notification.requestPermission(),Notification.permission===`granted`&&new Notification(e,{body:t}))},d2=(0,b.createContext)(null),f2=15*1e3,p2=1e3,m2=async e=>u2(`Ticket done`,e),h2=e=>e2(e),g2=(e,t)=>t===`running`&&e.agent_status===`done`?`Finished ${e.state} for "${e.title}"`:t===`running`&&e.agent_status===`error`?`Failed ${e.state} for "${e.title}"`:t!==`running`&&e.agent_status===`running`?`Running ${e.state} for "${e.title}"`:null,_2=({activeProjectId:e,refreshKey:t=0,onLoadedProjectIdChange:n,onProjectUsageChange:r,onBundlesChange:i,onBundlesLoadingChange:a,children:o})=>{let[s,c]=(0,b.useState)([]),[l,u]=(0,b.useState)([]),[d,f]=(0,b.useState)([]),[p,m]=(0,b.useState)(null),[h,g]=(0,b.useState)(null),[_,v]=(0,b.useState)(null),[y,x]=(0,b.useState)(null),[S,C]=(0,b.useState)(null),w=(0,b.useRef)(0),E=(0,b.useRef)(0),D=(0,b.useRef)(new Map),O=(0,b.useRef)(new Map),A=(0,b.useRef)(e),j=(0,b.useRef)(new Map),M=(0,b.useRef)(new Map),N=(0,b.useRef)(new Map),P=(0,b.useCallback)((e,t)=>{let n=M.current.get(t.id);return!n||!e||t.state===n?t:e},[]),F=(0,b.useCallback)((e,t)=>{if(e.length===0)return;let n=new Map(M.current);for(let r of e)n.set(r,t);M.current=n},[]),I=(0,b.useCallback)(e=>{if(e.length===0||M.current.size===0)return;let t=new Map(M.current);for(let n of e)t.delete(n);M.current=t},[]),L=(0,b.useCallback)((e,t)=>{if(e.length===0)return;let n=new Map(N.current);for(let r of e)n.set(r,t);N.current=n},[]),R=(0,b.useCallback)(e=>{if(e.length===0||N.current.size===0)return;let t=new Map(N.current);for(let n of e)t.delete(n);N.current=t},[]),z=(0,b.useCallback)((e,t)=>{if(j.current.has(t.id))return null;let n=P(e,t);return N.current.has(t.id)?{...n,parked_at:N.current.get(t.id)??null}:n},[P]),ee=(0,b.useCallback)((e,t)=>{if(j.current.size===0&&M.current.size===0&&N.current.size===0)return t;let n=new Map(e.map(e=>[e.id,e]));return t.flatMap(e=>{let t=z(n.get(e.id),e);return t?[t]:[]})},[z]),B=(0,b.useCallback)(async(e,t)=>{let n=await ae(e,t,{detail:`board`});return Array.isArray(n)?(!t?.aborted&&A.current===e&&c(e=>s2(e,ee(e,n).map(h2))),n):null},[ee]),V=(0,b.useCallback)(async(e,t)=>{await B(e,t)},[B]),H=(0,b.useCallback)(async(e,t)=>{let n=++E.current,r=await G(e,t);if(!Array.isArray(r)||t?.aborted||A.current!==e||E.current!==n)return;let i=new Map(r.map(e=>[e.id,e]));c(e=>e.map(e=>{let t=i.get(e.id);return t?{...e,diff_stats:t.diff_stats??null,is_stale:t.is_stale}:e}))},[]),te=(0,b.useCallback)(e=>e.some(e=>e.is_stale===void 0),[]),U=(0,b.useCallback)(async e=>{let t=A.current;if(!t)return null;try{let n=await oe(e,t);if(A.current!==t)return null;let r=O.current.get(n.id),i=z(r,n);if(!i)return null;let a=h2(i),o=t2(r,a);return c(e=>o?o2(e,a):a2(e,a)),n}catch{return null}},[z]),ne=(0,b.useCallback)(async t=>{if(!e){f([]);return}f(await k(e,t))},[e]),W=(0,b.useMemo)(()=>new Map(s.map(e=>[e.id,e])),[s]),re=(0,b.useMemo)(()=>{let e=s.filter(e=>e.agent_status===`running`),t=new Set(e.map(e=>e.worktree_bundle_id).filter(e=>typeof e==`string`&&e.trim().length>0));return{total_running:e.length,running_plan_count:e.filter(e=>e.state===`plan`).length,running_build_count:e.filter(e=>e.state===`build`).length,running_review_count:e.filter(e=>e.state===`review`).length,active_bundle_count:t.size,latest_message:S}},[S,s]);(0,b.useEffect)(()=>{O.current=W},[W]),(0,b.useEffect)(()=>{A.current=e,j.current.clear(),M.current.clear(),N.current.clear(),C(null),m(null),D.current.clear()},[e]),(0,b.useEffect)(()=>{n?.(_?null:h)},[h,_,n]),(0,b.useEffect)(()=>{if(i){if(!e){i(null,[]);return}if(h!==e){i(e,[]);return}i(e,d)}},[e,d,h,i]),(0,b.useEffect)(()=>{if(a){if(!e){a(null,!1);return}a(e,y===e)}},[e,y,a]),(0,b.useEffect)(()=>{let t=new AbortController,n=++w.current,r=null,i=async()=>{try{if(!e){c([]),u([]),f([]),g(null),v(null);return}c([]),u([]),f([]),g(null),v(e),x(e);let[n,i,a]=await Promise.allSettled([B(e,t.signal),U0(e,t.signal),k(e,t.signal)]);if(t.signal.aborted)return;n.status!==`fulfilled`&&!T(n.reason)&&c([]),i.status===`fulfilled`?u(i.value):T(i.reason)||u([]),a.status===`fulfilled`?f(a.value):T(a.reason)||f([]),g(n.status===`fulfilled`&&i.status===`fulfilled`&&a.status===`fulfilled`?e:null),n.status===`fulfilled`&&n.value!==null&&te(n.value)&&(r=window.setTimeout(()=>{t.signal.aborted||H(e,t.signal)},p2))}finally{!t.signal.aborted&&w.current===n&&(v(null),x(null))}},a=t=>{t.project_id===e&&(m(t),!j.current.has(t.id)&&(t.bundle&&f(e=>i2(e,t.bundle)),c(e=>o2(e,h2(t)))))},o=t=>{if(t.project_id===e&&m(t),c(n=>{if(t.project_id!==e)return c2(n,t.id);let r=n.find(e=>e.id===t.id),i=z(r,t);if(!i)return n;let a=h2(i);return t2(r,a)?o2(n,a):a2(n,a)}),t.project_id!==e){u(e=>Jj(e,t.id));return}t.bundle&&f(e=>i2(e,t.bundle))},s=({id:e})=>{j.current.delete(e),N.current.delete(e),M.current.delete(e),c(t=>c2(t,e)),u(t=>Jj(t,e))},l=e=>{if(!e)return;let t=O.current.get(e.blocker_ticket_id),n=O.current.get(e.dependent_ticket_id);!t||!n||t.project_id!==A.current||n.project_id!==A.current||u(t=>Yj(t,e))},d=e=>{u(t=>Xj(t,e.blocker_ticket_id,e.dependent_ticket_id))};return i(),DZ.on(`ticket:created`,a),DZ.on(`ticket:updated`,o),DZ.on(`ticket:deleted`,s),DZ.on(`ticket-dependency:created`,l),DZ.on(`ticket-dependency:deleted`,d),()=>{t.abort(),r!==null&&window.clearTimeout(r),DZ.off(`ticket:created`,a),DZ.off(`ticket:updated`,o),DZ.off(`ticket:deleted`,s),DZ.off(`ticket-dependency:created`,l),DZ.off(`ticket-dependency:deleted`,d)}},[e,H,t,te,B,z]),(0,b.useEffect)(()=>{if(!e)return;let t=new AbortController,n=()=>{document.visibilityState===`visible`&&Promise.allSettled([B(e,t.signal),ne(t.signal)]).then(n=>{n[0]?.status===`fulfilled`&&n[0].value!==null&&te(n[0].value)&&H(e,t.signal)}).catch(()=>{})},r=window.setInterval(n,f2),i=F$(n);return()=>{t.abort(),window.clearInterval(r),i()}},[e,ne,H,te,B]),(0,b.useEffect)(()=>{if(!e||!r||h!==e)return;let t=s.filter(e=>{let t=e.bundle?.branch??e.branch;return typeof t==`string`&&t.trim()!==``}).length;r({projectId:e,ticketCount:s.length,worktreeCount:t,repoPathLocked:s.length>0||t>0||d.length>0})},[e,d.length,h,r,s]),(0,b.useEffect)(()=>{for(let e of s){let t=D.current.get(e.id),n=g2(e,t);n&&C(n),t!==void 0&&t===`running`&&e.agent_status===`done`&&(e.state===`plan`||e.state===`build`||e.state===`review`)&&m2(e.title),D.current.set(e.id,e.agent_status)}},[s]);let ie=(0,b.useCallback)(()=>{m(null)},[]),se=(0,b.useMemo)(()=>({tickets:s,setTickets:c,dependencies:l,setDependencies:u,bundles:d,setBundles:f,latestDetailedTicketUpdate:p,clearLatestDetailedTicketUpdate:ie,loadedProjectId:h,loadingProjectId:_,activeProjectIdRef:A,pendingDeletedTicketsRef:j,pendingOptimisticMovesRef:M,pendingParkedTicketsRef:N,refreshTickets:V,requestSingleTicketRefresh:U,refreshBundles:ne,resolvePendingTicket:z,resolvePendingTickets:ee,markPendingOptimisticMoves:F,clearPendingOptimisticMoves:I,markPendingParkedTickets:L,clearPendingParkedTickets:R,liveActivity:re}),[d,ie,I,R,l,re,h,p,_,F,L,ne,V,U,z,ee,s]);return(0,q.jsx)(d2.Provider,{value:se,children:o})},v2=()=>{let e=(0,b.useContext)(d2);if(!e)throw Error(`useProjectWorkspace must be used inside ProjectWorkspaceProvider`);return e},y2=e=>e===1?`1 ticket created`:`${e} tickets created`,b2=async e=>u2(`Planning done`,y2(e)),x2=`archon.last-model-selection`,S2=`archon.last-variant-selection`,C2=`archon.last-skills-selection`,w2=()=>{try{let e=window.localStorage.getItem(C2),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},T2=e=>[e.title,e.description,e.bundle?.name??``,e.bundle?.branch??``,e.branch??``].map(e=>e.toLowerCase()),E2=(e,t)=>{let n=e.bundle_execution_position??2**53-1,r=t.bundle_execution_position??2**53-1;if(n!==r)return n-r;if(e.created_at!==t.created_at)return e.created_at.localeCompare(t.created_at);let i=e.title.localeCompare(t.title,void 0,{sensitivity:`base`});return i===0?e.id.localeCompare(t.id):i},D2=(e,t)=>t?{...e,...t,messages:t.messages===void 0?e.messages:t.messages,agent_log:t.agent_log===void 0?e.agent_log:t.agent_log,streaming_response:t.streaming_response===void 0?e.streaming_response:t.streaming_response}:e,O2=(e,t)=>{let n=e.toLowerCase().trim().split(/\s+/).filter(Boolean);if(n.length===0)return!0;let r=T2(t);return n.every(e=>r.some(t=>t.includes(e)))},k2=[`plan`,`build`,`review`],A2=`done`,j2=()=>({build:!1,stopBuild:!1,resumeBuild:!1,review:!1,undoReview:!1,run:!1,stop:!1,followUp:!1,bundleRefresh:!1}),M2=({bundleId:e,activeRunContextKey:t,isProjectRootRunActive:n})=>n?!0:t!==null&&t!==e,N2=(e,t)=>{if(!e)return null;let n=t.find(t=>t.id===e.ticket_id);return n?Pj(n):e.ticket_id},P2=()=>({description:``,model:window.localStorage.getItem(x2)??``,variant:window.localStorage.getItem(S2)??``,skills:w2(),worktreeBundleId:``}),F2=()=>({isOpen:!1,composer:P2(),runs:[]}),I2=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`planning-run-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,L2=e=>({ticketCount:e.tickets.length,dependencyCount:e.dependencies.length,ticketsWithOpenQuestions:e.tickets.filter(e=>(e.planning_context?.open_questions.length??0)>0).length,ticketTitles:e.tickets.map(e=>e.title),ticketIds:e.tickets.map(e=>e.id)}),R2=(e,t,n)=>e.map(e=>e.id===t?n(e):e),z2=(e,t,n)=>{e?window.localStorage.setItem(x2,e):window.localStorage.removeItem(x2),t?window.localStorage.setItem(S2,t):window.localStorage.removeItem(S2),n.length>0?window.localStorage.setItem(C2,JSON.stringify(n)):window.localStorage.removeItem(C2)},B2=(e,t={})=>fv(e,t),V2=()=>({model:window.localStorage.getItem(x2)??``,variant:window.localStorage.getItem(S2)??``,skills:w2()}),H2=(e,t)=>{let n=c2(e,t.ticket.id),r=Math.max(0,Math.min(t.index,n.length));return n.splice(r,0,t.ticket),n},U2=e=>e.tickets.length>0&&e.tickets.every(e=>Uj(e,`trash`)),W2=e=>e.tickets.length>0&&e.tickets.every(e=>Uj(e,A2)),G2=e=>e.column===A2&&e.tickets.length>0&&e.tickets.every(e=>e.state!==`plan`),K2=(e,t,n)=>n||t!==null&&t!==Pj(e)?`Stop the currently running ticket before starting another run.`:nM(e),q2=(e,t)=>t===`build`?{agent_status:null,agent_log:null,streaming_response:null,build_completed_at:null,planning_context:e.planning_context?{...e.planning_context,open_questions:[]}:null}:t===`review`?{agent_status:null,agent_log:null,streaming_response:null}:{},J2=(e,t)=>e===`plan`&&t===`build`?`build`:e===`build`&&t===`review`?`review`:e===`review`&&t===`build`?`undoReview`:null,Y2=(e,t,n)=>t===`review`&&n===`build`?{}:q2(e,n),X2=({activeProjectId:e,activeProject:t=null,activeProjectBranchState:n=null,activeRun:r,activeTool:i,onPreviewReviewCapabilityChange:a,onRunStopped:o,onRunStatusChange:s,refreshKey:c=0})=>{let l=ek($O(nA,{activationConstraint:{distance:5}})),{tickets:u,setTickets:d,dependencies:f,setDependencies:p,bundles:m,setBundles:h,latestDetailedTicketUpdate:g,clearLatestDetailedTicketUpdate:_,loadedProjectId:v,loadingProjectId:y,activeProjectIdRef:x,pendingDeletedTicketsRef:C,requestSingleTicketRefresh:w,refreshBundles:E,resolvePendingTicket:D,markPendingOptimisticMoves:O,clearPendingOptimisticMoves:k,markPendingParkedTickets:N,clearPendingParkedTickets:P}=v2(),[F,ee]=(0,b.useState)(null),[B,V]=(0,b.useState)(null),[ne,W]=(0,b.useState)(null),[re,ie]=(0,b.useState)({x:0,y:0}),[ae,G]=(0,b.useState)(!1),[oe,le]=(0,b.useState)(!1),[de,K]=(0,b.useState)([]),[fe,pe]=(0,b.useState)([]),[me,he]=(0,b.useState)(!1),[ge,Pe]=(0,b.useState)({}),[Fe,Ie]=(0,b.useState)(!1),[Le,Re]=(0,b.useState)(!1),[ze,Be]=(0,b.useState)(null),[Ve,He]=(0,b.useState)(null),[Ue,We]=(0,b.useState)(null),[Ge,Ke]=(0,b.useState)(null),[qe,Je]=(0,b.useState)(null),[Ye,Xe]=(0,b.useState)(null),[Ze,Qe]=(0,b.useState)(null),[$e,et]=(0,b.useState)(null),[tt,nt]=(0,b.useState)(!1),[rt,it]=(0,b.useState)(j2()),[at,ot]=(0,b.useState)(0),[st,ct]=(0,b.useState)(``),[lt,ut]=(0,b.useState)(!1),dt=i===`opencode`||Ue?.tool===`opencode`||!!Ye?.tickets.some(e=>e.tool===`opencode`),ft=i===`opencode`&&de.length>0,pt=Ue?.tool===`opencode`&&de.length>0,mt=!!Ye?.tickets.some(e=>e.tool===`opencode`)&&de.length>0,ht=(0,b.useRef)(e),gt=(0,b.useRef)(null),vt=(0,b.useRef)(null),yt=u.find(e=>e.is_running)??null,bt=yt?Pj(yt):null,xt=r?.context_key??null,St=r?.kind===`ticket`?N2(r,u)??bt:bt,Ct=r?.kind===`project`,wt=(0,b.useCallback)(e=>M2({bundleId:e,activeRunContextKey:St,isProjectRootRunActive:Ct}),[St,Ct]),Tt=F!==null&&Uj(F,`trash`)||B!==null&&U2(B),Et=y===e,Dt=(0,b.useMemo)(()=>new Map(u.map(e=>[e.id,e])),[u]);(0,b.useEffect)(()=>{if(!Ve){We(null);return}let e=Dt.get(Ve)??null;e&&We(t=>!t||t.id!==Ve?e:D2(t,e))},[Ve,Dt]),(0,b.useEffect)(()=>{g&&(We(e=>!e||e.id!==g.id?e:D2(e,g)),Xe(e=>{if(!e)return e;let t=g.worktree_bundle_id;if(!t||e.bundle.id!==t)return e;let n=e.tickets.some(e=>e.id===g.id)?e.tickets.map(e=>e.id===g.id?D2(e,g):e):[...e.tickets,g];return{...e,tickets:n}}))},[g]),(0,b.useEffect)(()=>{g===null||Ve!==null||Ge!==null||_()},[_,g,Ge,Ve]);let Ot=(0,b.useCallback)(async e=>{let t=await w(e);if(!t)return null;let n=Dt.get(e),r=n?D2(t,n):t;return We(t=>t&&t.id!==e||Ve&&Ve!==e?t:r),r},[w,Ve,Dt]),kt=(0,b.useCallback)(e=>{We(e),He(e.id),Ot(e.id)},[Ot]),At=(0,b.useMemo)(()=>new Map(m.map(e=>[e.id,e])),[m]),jt=(0,b.useMemo)(()=>{if(!Ye)return null;let e=Ye.bundle.id,t=g?.worktree_bundle_id===e?g:null,n=u.filter(t=>t.worktree_bundle_id===e),r=new Map(n.map(e=>[e.id,e])),i=Ye.tickets.filter(e=>!C.current.has(e.id)).map(e=>t&&e.id===t.id?D2(e,t):e);t&&!i.some(e=>e.id===t.id)&&!C.current.has(t.id)&&i.push(t);let a=i.map(e=>D2(e,r.get(e.id)));for(let e of n)a.some(t=>t.id===e.id)||a.push(e);a.sort(E2);let o=Ye.execution_order_ticket_ids??[],s=a.map(e=>e.id),c=[...o,...s].filter((e,t,n)=>s.includes(e)&&n.indexOf(e)===t),l=n.some(e=>e.can_re_review!==void 0||e.has_completed_review!==void 0||e.has_follow_up_since_last_review!==void 0),d=n.some(e=>e.agent_status===`running`),f={has_completed_review:n.some(e=>e.has_completed_review===!0),has_follow_up_since_last_review:n.some(e=>e.has_follow_up_since_last_review===!0),can_re_review:!d&&n.some(e=>e.can_re_review===!0)},p=lv(a),m=a.find(e=>e.id===Ye.review_owner_ticket_id&&e.state===`review`)??a.find(e=>e.state===`review`)??null,h=fv(a,{targetTicketId:Ye.target_ticket_id,reviewOwnerTicketId:m?.id??Ye.review_owner_ticket_id,latestSessionTicketId:p?.id??Ye.latest_session_ticket_id});return{...Ye,bundle:At.get(e)??Ye.bundle,tickets:a,execution_order_ticket_ids:c,latest_session_ticket_id:p?.id??null,latest_session_id:p?.session_id??null,review_owner_ticket_id:m?.id??null,target_ticket_id:h?.id??null,has_completed_review:l?f.has_completed_review:Ye.has_completed_review,has_follow_up_since_last_review:l?f.has_follow_up_since_last_review:Ye.has_follow_up_since_last_review,can_re_review:l?f.can_re_review:Ye.can_re_review}},[At,g,C,Ye,u]),Mt=(0,b.useMemo)(()=>u.filter(e=>lt&&Rj(e)?!1:O2(st,e)),[lt,st,u]),Nt=(0,b.useMemo)(()=>Mt.filter(e=>Ij(e)),[Mt]),Pt=(0,b.useMemo)(()=>pv(Nt,m,A2),[m,Nt]),{boardViewportRef:Ft,boardContentRef:It,registerTicketNode:Lt,measuredCardRects:Rt,overlayPreview:zt,overlaySize:Bt,getDependencyTargetState:Vt,handleDependencyStart:Ht,handleDeleteDependency:Ut}=J0({activeProjectId:e,tickets:u,dependencies:f,setDependencies:p,activeTicket:F,activeOverlayNode:ne,dragOffset:re}),Wt=e?ge[e]??F2():F2(),Gt=Wt.composer.worktreeBundleId&&m.some(e=>e.id===Wt.composer.worktreeBundleId)?Wt.composer.worktreeBundleId:``,Kt=Gt===Wt.composer.worktreeBundleId?Wt:{...Wt,composer:{...Wt.composer,worktreeBundleId:Gt}},qt=V2(),Jt=!!t?.run_ide?.trim(),Yt=Kt.runs.filter(e=>e.boardVisible),Xt=(0,b.useCallback)((e,t,n=u)=>{let r=pv(n,m,t).find(t=>t.kind===`bundle`&&t.group.bundle.id===e);return r?.kind===`bundle`?r.group:null},[m,u]),Zt=(0,b.useCallback)(e=>(0,q.jsx)(UZ,{ticket:e,allTickets:u,dependencies:f,bundles:m,projectMemoryEnabled:!!t?.memory_enabled,overlay:!0,showModelSelector:e.tool===`opencode`&&de.length>0,availableModels:de,runDisabled:!0,hideBundleScopedControls:!0}),[t?.memory_enabled,de,m,f,u]),Qt=Yt.length>0?(0,q.jsx)(`div`,{className:`mb-0.5 flex flex-col gap-2.5`,children:Yt.map(e=>(0,q.jsx)(F0,{run:e},e.id))}):null,$t=(0,b.useCallback)(t=>dv(t)?t.project_id===e?Jt:!!t.has_run_ide:!1,[Jt,e]),en=(0,b.useCallback)(e=>!!e.project_id&&!!(e.bundle?.branch??e.branch)&&dv(e),[]),tn=(0,b.useCallback)(e=>{let t=e?.tickets.find(t=>t.id===e.target_ticket_id)??e?.tickets.find(e=>e.has_worktree)??null;return t?$t(t):!1},[$t]),nn=(0,b.useCallback)(e=>{let t=u.filter(t=>t.worktree_bundle_id===e).sort(E2);return Ye?.bundle.id===e?B2(Ye.tickets.map(e=>t.find(t=>t.id===e.id)??e).sort(E2),{targetTicketId:Ye.target_ticket_id,reviewOwnerTicketId:Ye.review_owner_ticket_id,latestSessionTicketId:Ye.latest_session_ticket_id}):B2(t)},[Ye,u]),rn=(0,b.useCallback)((e,t)=>{Pe(n=>({...n,[e]:t(n[e]??F2())}))},[]);(0,b.useEffect)(()=>{Ie(!1),Re(!1),ht.current!==e&&(gt.current=e),e||(gt.current=null,ct(``)),ht.current=e},[e,c]),(0,b.useLayoutEffect)(()=>{!e||v!==e||gt.current===e&&(gt.current=null,ct(``))},[e,v]),(0,b.useEffect)(()=>{if(!dt){pe([]);return}let t=new AbortController;return(async()=>{try{K(await _t(`opencode`,t.signal))}catch(e){T(e)||K(e=>e)}})(),(async()=>{try{pe(await bj(`opencode`,t.signal,e))}catch(e){T(e)||pe([])}})(),()=>{t.abort()}},[e,dt]);let an=({active:e})=>{he(!1),W(null),ie({x:0,y:0});let t=hv(String(e.id));if(t){V(Xt(t.bundleId,t.column)),ee(null);return}V(null),ee(u.find(t=>t.id===e.id)??null)},on=()=>{he(!1),W(null),ie({x:0,y:0}),ee(null),V(null)},sn=(0,b.useCallback)(e=>{d(t=>e.reduce((e,t)=>o2(e,t),t))},[d]),cn=(0,b.useCallback)((e,t)=>{if(e.length===0)return;let n=e[0]?.state;n&&d(r=>e.reduce((e,r)=>l2(e,r.id,t,Y2(r,n,t)),r))},[d]),ln=(0,b.useCallback)((e,t=u)=>!e.worktree_bundle_id||!e.project_id||e.state!==`build`?[]:t.filter(t=>t.project_id===e.project_id&&t.worktree_bundle_id===e.worktree_bundle_id&&t.state===`build`&&t.parked_at===null).sort(E2),[u]),un=async({active:e,over:t})=>{let n=hv(String(e.id)),r=u.find(t=>t.id===e.id),i=n?Xt(n.bundleId,n.column):null,a=t?.id===`trash`&&(r!==void 0&&Uj(r,`trash`)||i!==null&&U2(i)),o=t?.id&&k2.includes(t.id)?t.id:null;if(he(a),W(null),ie({x:0,y:0}),ee(null),V(null),t){if(n){if(t.id===`trash`){if(!i||!U2(i))return;await Sn(i);return}if(t.id===A2){if(!i||!W2(i))return;await yn(i);return}if(o){if(n.column===A2){if(!i||!G2(i))return;await bn(i);return}await Yn(n.bundleId,n.column,o)}return}if(t.id===`trash`){if(!r||!Uj(r,`trash`))return;Tn(e.id);return}if(t.id===A2){if(!r||!Uj(r,A2))return;await _n(e.id);return}if(o){if(r&&Hj(r,o)){await vn(e.id);return}if(!(!r||!Uj(r,o)))try{await hn(r,o,{optimistic:!0})}catch(e){X.error(e instanceof S?e.message:`Unable to move the ticket right now.`,{id:`board-move-error`})}}}},dn=async(t,n,r,a,o,s,c)=>{let l=await se({title:t,description:n,tool:i,model:a,variant:o,skills:s,project_id:e,...c});if(z2(a,o,s),d(e=>o2(e,e2(l))),l.bundle&&h(e=>i2(e,l.bundle)),r===`build`)try{await hn(l,`build`)}catch(e){X.error(e instanceof S?e.message:`Unable to move the ticket right now.`,{id:`board-move-error`})}r===`plan`&&Ne(l.id,l.project_id)},fn=async t=>{if(!e)throw Error(`Cannot create a bundle without an active project.`);let n=await A(e,{name:t,prepare:!0});return h(e=>i2(e,n)),n},pn=e=>{d(t=>[...e.tickets].reverse().reduce((e,t)=>o2(e,e2(t)),t)),p(t=>e.dependencies.reduce((e,t)=>Yj(e,t),t));for(let t of e.tickets)t.bundle&&h(e=>i2(e,t.bundle))},mn=(0,b.useCallback)((e,t={})=>{let n=e2(e);d(e=>t.reorderInState?o2(e,n):a2(e,n)),We(t=>!t||t.id!==e.id?t:D2(e,n)),e.bundle&&h(t=>i2(t,e.bundle))},[h,d]),hn=async(e,t,n={})=>{let r=u.findIndex(t=>t.id===e.id),i=t===`review`?ln(e):[],a=t===`review`&&i.length>1,o=n.optimistic?a?i.map(e=>e.id):[e.id]:[];n.optimistic&&(O(o,t),a?cn(i,t):d(n=>l2(n,e.id,t,q2(e,t))));try{if(a&&e.project_id&&e.worktree_bundle_id){let t=await L(e.project_id,e.worktree_bundle_id);Rn(t);let n=t.tickets.find(t=>t.id===e.id);if(!n)throw Error(`Requested ticket was not returned from the bundle review response.`);return k(o),n}let n=await ue(e.id,e.project_id,t);return d(r=>{let i=r.find(t=>t.id===e.id);return i?.state===t&&n.state===t&&i.agent_status!==n.agent_status&&n.agent_status===e.agent_status?r:t2(i,n)?o2(r,n):a2(r,n)}),n.bundle&&h(e=>i2(e,n.bundle)),k(o),n}catch(t){throw n.optimistic&&(a?sn(i):d(t=>l2(t,e.id,e.state,{agent_status:e.agent_status,agent_log:e.agent_log,build_completed_at:e.build_completed_at},{preferredIndex:r})),k(o)),t}},gn=(e,t)=>{d(n=>n.map(n=>n.id===e?{...n,...t}:n))},_n=async t=>{let n=u.find(e=>e.id===t);if(n)try{let r=new Date().toISOString();N([t],r),gn(t,{parked_at:r}),mn(await xe(t,n.project_id??e),{reorderInState:!0}),P([t])}catch(e){P([t]),gn(t,{parked_at:n.parked_at}),X.error(e instanceof S?e.message:`Unable to park the ticket right now.`,{id:`board-park-error`})}},vn=async t=>{let n=u.find(e=>e.id===t);if(n)try{N([t],null),gn(t,{parked_at:null}),mn(await Se(t,n.project_id??e),{reorderInState:!0}),P([t])}catch(e){P([t]),gn(t,{parked_at:n.parked_at}),X.error(e instanceof S?e.message:`Unable to return the ticket right now.`,{id:`board-unpark-error`})}},yn=(0,b.useCallback)(async e=>{let t=new Set(e.tickets.map(e=>e.id)),n=e.tickets.map(e=>({id:e.id,parked_at:e.parked_at})),r=new Date().toISOString();N(e.tickets.map(e=>e.id),r),d(e=>e.map(e=>t.has(e.id)?{...e,parked_at:r}:e));let i=await Promise.allSettled(e.tickets.map(e=>xe(e.id,e.project_id??x.current))),a=new Set;if(i.forEach((t,n)=>{if(t.status===`fulfilled`){P([t.value.id]),mn(t.value,{reorderInState:!0});return}let r=e.tickets[n];r&&a.add(r.id)}),a.size===0)return;P([...a]),d(e=>e.map(e=>{if(!a.has(e.id))return e;let t=n.find(t=>t.id===e.id);return t?{...e,parked_at:t.parked_at}:e}));let o=i.find(e=>e.status===`rejected`),s=a.size===e.tickets.length?o?.reason instanceof S?o.reason.message:`Unable to move the bundle to Done right now.`:`Moved ${e.tickets.length-a.size} of ${e.tickets.length} bundle tickets to Done.`;X.error(s,{id:`board-bundle-park-error`})},[x,mn,P,N,d]),bn=(0,b.useCallback)(async e=>{let t=new Set(e.tickets.map(e=>e.id)),n=e.tickets.map(e=>({id:e.id,parked_at:e.parked_at}));N(e.tickets.map(e=>e.id),null),d(e=>e.map(e=>t.has(e.id)?{...e,parked_at:null}:e));let r=await Promise.allSettled(e.tickets.map(e=>Se(e.id,e.project_id??x.current))),i=new Set;if(r.forEach((t,n)=>{if(t.status===`fulfilled`){P([t.value.id]),mn(t.value,{reorderInState:!0});return}let r=e.tickets[n];r&&i.add(r.id)}),i.size===0)return;P([...i]),d(e=>e.map(e=>{if(!i.has(e.id))return e;let t=n.find(t=>t.id===e.id);return t?{...e,parked_at:t.parked_at}:e}));let a=r.find(e=>e.status===`rejected`),o=i.size===e.tickets.length?a?.reason instanceof S?a.reason.message:`Unable to restore the bundle right now.`:`Restored ${e.tickets.length-i.size} of ${e.tickets.length} bundle tickets.`;X.error(o,{id:`board-bundle-unpark-error`})},[x,mn,P,N,d]),xn=async t=>{e&&(await U(e,t),h(e=>e.filter(e=>e.id!==t)))},Sn=(0,b.useCallback)(async t=>{let n=t.tickets.map(e=>({ticket:e,index:u.findIndex(t=>t.id===e.id)})).filter(e=>e.index!==-1);if(n.length===0)return;for(let e of n)C.current.set(e.ticket.id,e);let r=new Set(n.map(e=>e.ticket.id));d(e=>e.filter(e=>!r.has(e.id))),p(e=>e.filter(e=>!r.has(e.blocker_ticket_id)&&!r.has(e.dependent_ticket_id)));let i=await Promise.allSettled(n.map(async t=>(await ye(t.ticket.id,t.ticket.project_id??e),C.current.delete(t.ticket.id),t.ticket.id)));t.tickets.some(e=>e.project_id===x.current)&&E().catch(()=>{});let a=n.filter((e,t)=>i[t]?.status===`rejected`);if(a.length===0)return;for(let e of a)C.current.delete(e.ticket.id);a.some(e=>e.ticket.project_id===x.current)&&d(e=>[...a].sort((e,t)=>e.index-t.index).reduce((e,t)=>H2(e,t),e));let o=i.find(e=>e.status===`rejected`),s=a.length===n.length?o?.reason instanceof S?o.reason.message:`Unable to delete the bundle tickets right now.`:`Deleted ${n.length-a.length} of ${n.length} bundle tickets.`;X.error(s,{id:`board-delete-bundle-wrapper-error`})},[e,x,C,E,p,d,u]),Cn=e=>{let t=Dt.get(e.id);mn(e,{reorderInState:t?t.state!==e.state||t.parked_at!==e.parked_at||t.worktree_bundle_id!==e.worktree_bundle_id:!1}),t?.worktree_bundle_id&&t.worktree_bundle_id!==e.worktree_bundle_id&&t.bundle?.ticket_count===1&&h(e=>e.filter(e=>e.id!==t.worktree_bundle_id)),(t?.worktree_bundle_id!==e.worktree_bundle_id||t?.bundle?.ticket_count!==e.bundle?.ticket_count)&&e.project_id===x.current&&E().catch(()=>{})},wn=async()=>{if(!e)return;let t=e,n=Wt.composer.description.trim();if(!n)return;let r=I2(),a=ft?Wt.composer.model.trim():``,o=ft&&a?Wt.composer.variant.trim():``,s=ft?Wt.composer.skills:[],c=Date.now();rn(t,e=>({...e,isOpen:!1,composer:{...e.composer,description:``,worktreeBundleId:``},runs:[{id:r,description:n,model:a,variant:o,skills:s,worktreeBundleId:Gt,status:`running`,error:null,submittedAt:c,completedAt:null,boardVisible:!0,boardState:`visible`,summary:null},...e.runs]}));try{let e=await ce({description:n,tool:i,model:a||null,variant:a&&o||null,skills:s,project_id:t,worktree_bundle_id:Gt||null});z2(a||null,a&&o||null,s);let c=L2(e);rn(t,e=>({...e,runs:R2(e.runs,r,e=>({...e,status:`done`,error:null,completedAt:Date.now(),summary:c,boardVisible:!1}))})),X.success(`${c.ticketCount} ${c.ticketCount===1?`card`:`cards`} created`,{id:`planning-agent-success-${r}`}),b2(e.tickets.length),x.current===t&&pn(e)}catch(e){let n=e instanceof S?e.message:`Unable to generate tickets right now.`;rn(t,e=>({...e,runs:R2(e.runs,r,e=>({...e,status:`error`,error:n,completedAt:Date.now()}))})),X.error(n,{id:`planning-agent-error`})}},Tn=async t=>{let n=u.find(e=>e.id===t),r=u.findIndex(e=>e.id===t);if(!(!n||r===-1)){C.current.set(t,{ticket:n,index:r}),d(e=>c2(e,t)),p(e=>Jj(e,t));try{await ye(t,n.project_id??e),n.project_id===x.current&&E().catch(()=>{}),C.current.delete(t)}catch(e){let n=C.current.get(t);C.current.delete(t),n&&n.ticket.project_id===x.current&&(d(e=>H2(e,n)),X.error(e instanceof S?e.message:`Unable to delete the ticket right now.`,{id:`board-delete-error`}))}}},En=async t=>{let n=u.find(e=>e.id===t);if(!n)return;let r=n.state===`review`?`review`:`build`;try{if(Be(r),n.project_id&&n.worktree_bundle_id&&n.state===`review`){Rn(await R(n.project_id,n.worktree_bundle_id));return}mn(await be(t,n.project_id??e),{reorderInState:!0})}catch(e){throw X.error(e instanceof S?e.message:`Unable to undo the ticket right now.`,{id:`board-undo-error`}),e}finally{Be(e=>e===r?null:e)}},Dn=t=>{we(t,u.find(e=>e.id===t)?.project_id??e)},On=async t=>{let n=u.find(e=>e.id===t);try{await Te(t,n?.project_id??e),s?.()}catch(e){X.error(e instanceof S?e.message:`Unable to start the run right now.`,{id:`board-run-error`})}},kn=(0,b.useCallback)(async t=>{let n=u.find(e=>e.id===t);try{await Ee(t,n?.project_id??e)}catch(e){X.error(e instanceof S?e.message:`Unable to open the IDE right now.`,{id:`board-open-ide-error`})}},[e,u]),An=async t=>{let n=u.find(e=>e.id===t),i=r?.kind===`ticket`&&n&&St===Pj(n)?xt:null;try{await De(t,n?.project_id??e),o?.(i),s?.()}catch{}},jn=t=>{Oe(t,u.find(e=>e.id===t)?.project_id??e).then(()=>{d(e=>e.map(e=>e.id===t?{...e,agent_status:`stopped`,is_running:!1}:e))})},Mn=t=>{ke(t,u.find(e=>e.id===t)?.project_id??e).then(()=>{d(e=>e.map(e=>e.id===t?{...e,agent_status:`running`}:e))})},Nn=(0,b.useCallback)(e=>{let t=nn(e);!t||!$t(t)||kn(t.id)},[$t,nn,kn]),Pn=(0,b.useCallback)(e=>{let t=nn(e);t&&et({bundleId:e,ticketId:t.id,projectId:t.project_id,title:t.bundle?.name??t.title})},[nn]),Fn=(0,b.useCallback)(e=>{let t=u.find(t=>t.id===e);!t||!en(t)||Qe({ticketId:t.id,projectId:t.project_id,title:t.title})},[en,u]),In=(0,b.useCallback)(async(t,n)=>{let r=u.find(e=>e.id===t);if(r)try{mn(r.state===`plan`?await Me(t,r.project_id??e,n):await Ae(t,r.project_id??e,n))}catch(e){throw X.error(e instanceof S?e.message:`Unable to send the follow-up prompt right now.`,{id:`board-follow-up-error`}),e}},[e,mn,u]),Ln=(0,b.useCallback)(e=>{d(t=>e.reduce((e,t)=>{let n=e.find(e=>e.id===t.id),r=D(n,t);if(!r)return e;let i=e2(n&&n.state===r.state&&n.agent_status===`running`&&r.agent_status===null?{...r,agent_status:n.agent_status,session_id:n.session_id,is_running:n.is_running}:r);return t2(n,i)?o2(e,i):a2(e,i)},t))},[D,d]),Rn=(0,b.useCallback)(e=>{Xe(e),h(t=>i2(t,e.bundle)),Ln(e.tickets)},[Ln,h]),zn=(0,b.useCallback)((e,t)=>{Array.isArray(t.tickets)&&Xe(n=>!n||n.bundle.id!==e?n:{...n,tickets:t.tickets,execution_order_ticket_ids:t.execution_order_ticket_ids,latest_session_ticket_id:t.latest_session_ticket_id,latest_session_id:t.latest_session_id,review_owner_ticket_id:t.review_owner_ticket_id,target_ticket_id:t.target_ticket_id})},[]),Bn=(0,b.useCallback)(async e=>{let t=x.current;if(!t)return null;let n=await j(t,e);return x.current===t?(Rn(n),n):null},[x,Rn]),Vn=(0,b.useCallback)(async e=>{let t=x.current;if(!t)return null;let n=await M(t,e);return x.current===t?(zn(e,n),n):null},[x,zn]),Hn=(0,b.useCallback)(async(e,t=null)=>{let n=x.current;if(!n)return;He(null),We(null),Ke(e),Je(t),it(j2());let r=At.get(e)??null,i=u.filter(t=>t.worktree_bundle_id===e);if(r&&i.length>0){let e=lv(i),t=fv(i,{reviewOwnerTicketId:i.find(e=>e.state===`review`)?.id??null,latestSessionTicketId:e?.id??null});Xe({bundle:r,tickets:i,latest_session_ticket_id:e?.id??null,latest_session_id:e?.session_id??null,review_owner_ticket_id:i.find(e=>e.state===`review`)?.id??null,target_ticket_id:t?.id??null})}else Xe(null);nt(!0);try{await Vn(e)}catch{}finally{x.current===n&&nt(!1)}},[x,At,Vn,u]),Un=(0,b.useCallback)(async(e,t)=>{it(t=>({...t,[e]:!0}));try{return await t()}finally{it(t=>({...t,[e]:!1}))}},[]),Wn=(0,b.useCallback)(async t=>{await Un(`stopBuild`,async()=>{let n=u.find(e=>e.id===t);await Oe(t,n?.project_id??e),d(e=>e.map(e=>e.id===t?{...e,agent_status:`stopped`,is_running:!1}:e)),n?.worktree_bundle_id&&await Bn(n.worktree_bundle_id)})},[e,Bn,Un,d,u]),Gn=(0,b.useCallback)(async t=>{await Un(`resumeBuild`,async()=>{let n=u.find(e=>e.id===t);await ke(t,n?.project_id??e),d(e=>e.map(e=>e.id===t?{...e,agent_status:`running`}:e)),n?.worktree_bundle_id&&await Bn(n.worktree_bundle_id)})},[e,Bn,Un,d,u]),Kn=(0,b.useCallback)(async t=>{if(e)try{Rn(await Un(`build`,()=>I(e,t))),Ge===t&&Je(`build`),s?.()}catch(e){throw X.error(e instanceof S?e.message:`Unable to build the bundle right now.`,{id:`board-bundle-build-error`}),e}},[e,Rn,s,Un,Ge]),qn=(0,b.useCallback)(async t=>{if(e)try{Rn(await Un(`review`,()=>L(e,t))),Ge===t&&Je(`review`)}catch(e){throw X.error(e instanceof S?e.message:`Unable to review the bundle right now.`,{id:`board-bundle-review-error`}),e}},[e,Rn,Un,Ge]),Jn=(0,b.useCallback)(async t=>{if(e)try{Be(`review`),Rn(await Un(`undoReview`,()=>R(e,t))),Ge===t&&Je(`build`)}catch(e){throw X.error(e instanceof S?e.message:`Unable to undo the bundle review right now.`,{id:`board-bundle-undo-review-error`}),e}finally{Be(e=>e===`review`?null:e)}},[e,Rn,Un,Ge]),Yn=(0,b.useCallback)(async(e,t,n)=>{if(t===A2||n===A2)return;let r=J2(t,n);if(!r)return;let i=u.filter(n=>n.worktree_bundle_id===e&&n.state===t&&n.parked_at===null);if(i.length===0)return;let a=i.map(e=>e.id);O(a,n),cn(i,n);try{if(r===`build`){await Kn(e),k(a);return}if(r===`review`){await qn(e),k(a);return}await Jn(e),k(a)}catch(e){sn(i),k(a),X.error(e instanceof S?e.message:`Unable to move the bundle right now.`,{id:`board-bundle-move-error`})}},[k,Kn,qn,Jn,O,cn,sn,u]),Xn=async t=>{e&&(Rn(await Un(`run`,()=>H(e,t))),s?.())},Zn=async t=>{if(!e)return;let n=r?.kind===`ticket`&&St===t?xt:null,i=await Un(`stop`,()=>te(e,t));o?.(n),Rn(i),s?.()},Qn=(0,b.useCallback)(async(t,n)=>{e&&Rn(await Un(`followUp`,()=>z(e,t,n)))},[e,Rn,Un]);(0,b.useEffect)(()=>()=>{a?.(null)},[a]),(0,b.useEffect)(()=>{if(!a)return;if(!r){a(null);return}if(r.kind===`project`){a({target:null,canSelect:!1,disabledReason:`Preview selection is unavailable for project root runs.`,submitPrompt:null});return}let e=u.find(e=>e.id===r.ticket_id);if(!e){a({target:null,canSelect:!1,disabledReason:`Preview selection is only available for build-capable ticket runs.`,submitPrompt:null});return}if(e.state===`plan`){a({target:{kind:`ticket`,id:e.id},canSelect:!1,disabledReason:`Preview selection is unavailable while this ticket is in Plan mode.`,submitPrompt:null});return}if(e.worktree_bundle_id){a({target:{kind:`bundle`,id:e.worktree_bundle_id,ticket_id:e.id},canSelect:!0,disabledReason:null,promptPlaceholder:`Follow up on this bundle`,submitPrompt:t=>Qn(e.worktree_bundle_id,t)});return}a({target:{kind:`ticket`,id:e.id},canSelect:!0,disabledReason:null,promptPlaceholder:`Follow up on this ticket`,submitPrompt:t=>In(e.id,t)})},[r,In,Qn,a,u]);let $n=async t=>{let n=u.find(e=>e.id===t),r=n?Mj(n.state):null;if(n)try{if(n.state===`review`&&n.can_re_review&&n.agent_status!==`running`){let t=await je(n.id,n.project_id??e);mn(t),t.worktree_bundle_id&&await Bn(t.worktree_bundle_id);return}if(!r)return;if(n.worktree_bundle_id&&r===`review`){await qn(n.worktree_bundle_id);return}await hn(n,r)}catch(e){throw X.error(e instanceof S?e.message:`Unable to move the ticket right now.`,{id:`board-move-error`}),e}},er=async t=>{let n=u.find(e=>e.id===t);try{mn(await _e(t,n?.project_id??e))}catch(e){throw X.error(e instanceof S?e.message:`Unable to start the build chain right now.`,{id:`board-build-chain-error`}),e}},tr=async t=>{let n=u.find(e=>e.id===t);try{await ve(t,n?.project_id??e)}catch(e){throw X.error(e instanceof S?e.message:`Unable to stop the build chain right now.`,{id:`board-stop-build-chain-error`}),e}},nr=async()=>{if(!(!e||Le)){Re(!0);try{let t=await Ce(e);d(e=>e.filter(e=>!t.deleted_ticket_ids.includes(e.id))),p(e=>t.deleted_ticket_ids.reduce(Jj,e)),await E(),Ie(!1),t.failed_count>0?X.error(`Deleted ${t.deleted_count} done ticket${t.deleted_count===1?``:`s`}, but ${t.failed_count} failed.`,{id:`board-delete-parked-error`}):X.success(`Deleted ${t.deleted_count} done ticket${t.deleted_count===1?``:`s`}.`,{id:`board-delete-parked-success`})}catch(e){X.error(e instanceof S?e.message:`Unable to empty Done right now.`,{id:`board-delete-parked-error`})}finally{Re(!1)}}},rr=({delta:e})=>{ie(e)},ir=(0,b.useCallback)(()=>{e&&G(!0)},[e]),ar=(0,b.useCallback)(()=>{e&&rn(e,e=>e.isOpen?e:{...e,isOpen:!0})},[e,rn]),or=(0,b.useCallback)(()=>{vt.current?.focus({preventScroll:!0})},[]);return $0([{key:`n`,onKeyDown:ir,disabled:!e},{key:`a`,onKeyDown:ar,disabled:!e},{key:`k`,ctrlKey:!0,onKeyDown:or}],{isBlocked:Q0}),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)($A,{sensors:l,collisionDetection:dk,onDragStart:an,onDragMove:rr,onDragCancel:on,onDragEnd:un,children:[(0,q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 overflow-hidden`,children:[(0,q.jsx)(V0,{projectId:e,state:Kt,bundles:m,projectBranchState:n,showModelSelector:ft,availableModels:de,availableSkills:fe,onManageBundles:e?()=>{(async()=>{try{await E()}catch{}le(!0)})()}:void 0,onToggle:()=>{e&&rn(e,e=>({...e,isOpen:!e.isOpen}))},onDescriptionChange:t=>{e&&rn(e,e=>({...e,composer:{...e.composer,description:t}}))},onModelChange:t=>{if(!e)return;let n=de.find(e=>e.id===t)??null;rn(e,e=>({...e,composer:{...e.composer,model:t,variant:n?.variants.includes(e.composer.variant)?e.composer.variant:``}}))},onSkillsChange:t=>{e&&rn(e,e=>({...e,composer:{...e.composer,skills:t}}))},onVariantChange:t=>{e&&rn(e,e=>({...e,composer:{...e.composer,variant:t}}))},onBundleChange:t=>{e&&rn(e,e=>({...e,composer:{...e.composer,worktreeBundleId:t}}))},onGenerate:()=>{wn()}}),(0,q.jsx)(`div`,{"aria-hidden":`true`,className:J(`absolute inset-y-0 left-16 right-0 z-10 bg-black/60 transition-opacity duration-200 ease-out motion-reduce:transition-none`,Kt.isOpen?`opacity-100`:`pointer-events-none opacity-0`)}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-4 overflow-hidden p-6`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col items-start gap-3 sm:flex-row sm:items-center`,children:[(0,q.jsxs)(`div`,{className:`relative w-full max-w-sm`,children:[(0,q.jsx)(Og,{id:`board-ticket-search`,ref:vt,type:`search`,value:st,onChange:e=>ct(e.target.value),placeholder:`Search tickets`,"aria-label":`Search tickets`,className:`pr-32`}),st.length>0?(0,q.jsx)(Y,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Clear search`,className:`absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>{ct(``),vt.current?.focus()},children:(0,q.jsx)(Av,{className:`size-4`})}):(0,q.jsxs)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-0.5 text-[10px] leading-none`,children:[(0,q.jsx)(v_,{children:`CTRL`}),(0,q.jsx)(`span`,{children:`+`}),(0,q.jsx)(v_,{children:`K`})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(cy,{id:`board-hide-stale-tickets`,checked:lt,onCheckedChange:ut,"aria-label":`Hide stale tickets`}),(0,q.jsx)(Hg,{htmlFor:`board-hide-stale-tickets`,className:`text-sm text-muted-foreground`,children:`Hide stale tickets`})]})]}),(0,q.jsx)(`div`,{ref:Ft,className:`flex min-h-0 flex-1 overflow-x-auto overflow-y-hidden`,children:(0,q.jsxs)(`div`,{ref:It,className:`relative flex min-h-0 w-max min-w-full gap-4`,children:[(0,q.jsx)(j0,{dependencies:f,cardRects:Rt,preview:zt,ticketsById:Dt,overlaySize:Bt}),k2.map(t=>{let n=u.filter(e=>e.state===t&&!Ij(e)),r=Mt.filter(e=>e.state===t&&!Ij(e)),i=pv(r,m,t),a=Et&&n.length===0?t===`plan`?1:t===`build`?2:0:0;return(0,q.jsx)(GZ,{id:t,title:t.charAt(0).toUpperCase()+t.slice(1),pinnedContent:t===`plan`?Qt:null,items:i,ticketCount:r.length,allTickets:u,dependencies:f,showModelSelector:ft,availableModels:de,bundles:m,activeRunContextKey:St,isProjectRootRunActive:Ct,isBundleRunDisabled:wt,getDependencyTargetState:Vt,onDependencyStart:Ht,onDeleteDependency:Ut,onRegisterTicketNode:Lt,onAddTicket:t===`plan`&&e?ir:void 0,onCreateBundle:t===`plan`&&e?fn:void 0,onDeleteBundle:t===`plan`&&e?xn:void 0,onDeleteBundleWrapper:Sn,onRefreshBundles:t===`plan`&&e?E:void 0,onUpdateTicket:Cn,onDeleteTicket:Tn,onUndoTicket:En,undoingColumn:ze,onRetryTicket:Dn,onAdvanceTicket:$n,onParkTicket:_n,onUnparkTicket:vn,onBuildChainTicket:er,onRunTicket:On,canOpenChangesForTicket:en,onOpenChangesTicket:Fn,canOpenIdeForTicket:$t,onOpenIdeTicket:kn,onStopTicket:An,onStopBuildTicket:jn,onStopBuildChainTicket:tr,onResumeBuildTicket:Mn,onOpenBundleChanges:Pn,onOpenBundleIde:Nn,onFollowUpTicket:In,bundleActionState:rt,onBuildBundle:Kn,onReviewBundle:qn,onUndoBundleReview:Jn,onRunBundle:Xn,onStopBundle:Zn,onParkBundleWrapper:yn,onUnparkBundleWrapper:bn,onOpenTicketDetails:kt,onOpenBundleDetails:(e,t)=>{Hn(e,t)},onRequestBundleRefresh:e=>{Un(`bundleRefresh`,()=>Bn(e))},onRequestTicketRefresh:w,loadingSkeletonCount:a},t)}),(0,q.jsx)(GZ,{id:A2,title:`Done`,items:Pt,ticketCount:Nt.length,allTickets:u,dependencies:f,showModelSelector:ft,availableModels:de,bundles:m,activeRunContextKey:St,isProjectRootRunActive:Ct,isBundleRunDisabled:wt,getDependencyTargetState:Vt,onDependencyStart:Ht,onDeleteDependency:Ut,onRegisterTicketNode:Lt,onUpdateTicket:Cn,onDeleteTicket:Tn,onUndoTicket:En,undoingColumn:ze,onRetryTicket:Dn,onAdvanceTicket:$n,onParkTicket:_n,onUnparkTicket:vn,onBuildChainTicket:er,onRunTicket:On,canOpenChangesForTicket:en,onOpenChangesTicket:Fn,canOpenIdeForTicket:$t,onOpenIdeTicket:kn,onStopTicket:An,onStopBuildTicket:jn,onStopBuildChainTicket:tr,onResumeBuildTicket:Mn,onOpenBundleChanges:Pn,onOpenBundleIde:Nn,onFollowUpTicket:In,bundleActionState:rt,onBuildBundle:Kn,onReviewBundle:qn,onUndoBundleReview:Jn,onRunBundle:Xn,onStopBundle:Zn,onParkBundleWrapper:yn,onUnparkBundleWrapper:bn,onOpenTicketDetails:kt,onOpenBundleDetails:(e,t)=>{Hn(e,t)},onRequestBundleRefresh:e=>{Un(`bundleRefresh`,()=>Bn(e))},onRequestTicketRefresh:w,className:`min-w-[272px] max-w-[272px] flex-[0.98] bg-card/65`,headerAccessory:(0,q.jsxs)(Y,{type:`button`,variant:`destructive`,size:`xs`,className:`gap-1.5`,disabled:Nt.length===0||Le,onClick:()=>Ie(!0),children:[(0,q.jsx)(Jv,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:`Empty`})]})})]})})]})]}),(0,q.jsxs)(yj,{zIndex:5,dropAnimation:me?null:void 0,children:[F&&(0,q.jsx)(UZ,{ticket:F,allTickets:u,dependencies:f,bundles:m,projectMemoryEnabled:!!t?.memory_enabled,overlay:!0,showModelSelector:F.tool===`opencode`&&de.length>0,availableModels:de,runDisabled:K2(F,St,Ct)!==void 0,runDisabledReason:K2(F,St,Ct),onDependencyStart:Ht,onDeleteDependency:Ut,onRegisterOverlayNode:W,onCreateBundle:fn,onDeleteBundle:xn,onRefreshBundles:E,onUpdate:Cn,onDelete:()=>Tn(F.id),onUndo:()=>En(F.id),undoInProgress:ze===F.state&&(F.state===`build`||F.state===`review`),onRetry:()=>Dn(F.id),onAdvance:()=>$n(F.id),onPark:()=>_n(F.id),onUnpark:()=>vn(F.id),onBuildChain:()=>er(F.id),onRun:F.worktree_bundle_id===null&&dv(F)&&F.has_run_config?()=>On(F.id):void 0,onOpenIde:F.worktree_bundle_id===null&&$t(F)?()=>kn(F.id):void 0,onStop:F.worktree_bundle_id===null?()=>An(F.id):void 0,onStopBuild:()=>jn(F.id),onStopBuildChain:()=>tr(F.id),onResumeBuild:()=>Mn(F.id),onFollowUp:e=>In(F.id,e),onRequestTicketRefresh:w}),!F&&B&&(0,q.jsx)(CM,{group:B,overlay:!0,renderTicket:Zt})]}),Tt&&(0,q.jsx)(H0,{className:`pointer-events-auto fixed left-1/2 top-4 z-20 w-[min(14rem,calc(100vw-2rem))] -translate-x-1/2`})]}),ae&&(0,q.jsx)(M0,{onSubmit:dn,bundles:m,projectId:e,projectBranchState:n,tool:i,showModelSelector:ft,availableModels:de,availableSkills:fe,initialModel:ft?qt.model:``,initialVariant:ft&&qt.model?qt.variant:``,initialSkills:ft?qt.skills:[],onCreateBundle:fn,onDeleteBundle:xn,onRefreshBundles:E,onClose:()=>G(!1)}),oe&&e&&(0,q.jsx)(Zv,{bundles:m,selectedBundleId:Kt.composer.worktreeBundleId||null,onSelectBundle:t=>{rn(e,e=>({...e,composer:{...e.composer,worktreeBundleId:t??``}}))},onCreateBundle:fn,onDeleteBundle:xn,onClose:()=>le(!1)}),Fe&&(0,q.jsx)(KZ,{ticketCount:Nt.length,isDeleting:Le,onCancel:()=>Ie(!1),onConfirm:()=>{nr()}}),Ue&&(0,q.jsx)(HZ,{ticket:Ue,allTickets:u,dependencies:f,bundles:m,projectMemoryEnabled:!!t?.memory_enabled,projectBranchState:n,onClose:()=>{let e=Ue.id;He(null),We(null),d(t=>t.map(t=>t.id===e?e2(t):t))},showModelSelector:pt,availableModels:de,availableSkills:fe,runDisabled:K2(Ue,St,Ct)!==void 0,runDisabledReason:K2(Ue,St,Ct),onDeleteDependency:Ut,onCreateBundle:fn,onDeleteBundle:xn,onRefreshBundles:E,onUpdate:Cn,onAdvance:()=>$n(Ue.id),onBuildChain:()=>er(Ue.id),onRun:dv(Ue)&&Ue.has_run_config?()=>On(Ue.id):void 0,onOpenIde:$t(Ue)?()=>kn(Ue.id):void 0,onStop:()=>An(Ue.id),onStopBuild:()=>jn(Ue.id),onStopBuildChain:()=>tr(Ue.id),onResumeBuild:()=>Mn(Ue.id),onFollowUp:e=>In(Ue.id,e),onProjectMemorySuggestionsChanged:()=>{ot(e=>e+1)},onRequestTicketRefresh:e=>{Ot(e)}}),$e&&(0,q.jsx)(_0,{ticketId:$e.ticketId,projectId:$e.projectId,reviewCommentsBundleId:$e.bundleId,title:$e.title,onSubmitReviewPrompt:e=>Qn($e.bundleId,e),canSubmitReviewPrompt:!u.some(e=>e.worktree_bundle_id===$e.bundleId&&e.agent_status===`running`),reviewSubmitDisabledReason:u.some(e=>e.worktree_bundle_id===$e.bundleId&&e.agent_status===`running`)?`Wait for all bundle tickets to finish building before sending a follow-up prompt.`:void 0,canAddReviewComments:!u.some(e=>e.worktree_bundle_id===$e.bundleId&&e.agent_status===`running`),canModifyChanges:!u.some(e=>e.worktree_bundle_id===$e.bundleId&&e.agent_status===`running`),changesDisabledReason:u.some(e=>e.worktree_bundle_id===$e.bundleId&&e.agent_status===`running`)?`Wait for all bundle tickets to finish building before modifying changes.`:void 0,onClose:()=>{let{bundleId:e}=$e;et(null),Bn(e)},onTicketUpdate:Cn,onRequestTicketRefresh:w}),Ze&&(0,q.jsx)(_0,{ticketId:Ze.ticketId,projectId:Ze.projectId,title:Ze.title,onClose:()=>{let{ticketId:e}=Ze;Qe(null),Ot(e)},onTicketUpdate:Cn,onRequestTicketRefresh:e=>{Ot(e)}}),Ge&&jt&&(0,q.jsx)(fQ,{details:jt,activeColumn:qe,isLoading:tt||rt.bundleRefresh,actionState:rt,canOpenIde:tn(jt),projectMemoryEnabled:!!t?.memory_enabled,memorySuggestionsRefreshKey:at,runDisabled:wt(jt.bundle.id),showModelSelector:mt,availableModels:de,availableSkills:fe,onClose:()=>{let e=jt.bundle.id;Ke(null),Je(null),Xe(null),nt(!1),it(j2()),d(t=>t.map(t=>t.worktree_bundle_id===e&&t.id!==Ve?e2(t):t))},onOpenTicketDetails:kt,onUpdateTicket:Cn,onOpenIde:()=>{let e=jt.tickets.find(e=>e.id===jt.target_ticket_id)??jt.tickets.find(e=>e.has_worktree);e&&kn(e.id)},onRefresh:e=>{Un(`bundleRefresh`,()=>Bn(e))},onBuildBundle:Kn,onStopBuildTicket:Wn,onResumeBuildTicket:Gn,onReviewBundle:qn,onUndoBundleReview:Jn,onRunBundle:Xn,onStopBundle:Zn,onFollowUpBundle:Qn})]})},Z2=({className:e})=>(0,q.jsx)(fh,{"aria-hidden":`true`,className:e}),Q2=({className:e})=>(0,q.jsx)(ph,{"aria-hidden":`true`,className:e}),$2=({state:e,className:t})=>e?(0,q.jsx)(`span`,{"aria-hidden":`true`,"data-activity-indicator":`true`,"data-state":e,"data-testid":`workspace-activity-indicator`,className:J(`h-2 w-2 flex-shrink-0 rounded-full`,e===`running`?`animate-pulse bg-amber-300`:e===`interrupted`?`bg-amber-400/80 ring-1 ring-amber-400/30`:e===`error`?`bg-rose-400/90 ring-1 ring-rose-400/30`:`bg-emerald-400/80 ring-1 ring-emerald-400/30`,t)}):null,e4=4,t4=5e3,n4=e=>e.replace(/^[ab]\//,``),r4=e=>{let t=`oldPath`in e&&typeof e.oldPath==`string`?n4(e.oldPath):``,n=`newPath`in e&&typeof e.newPath==`string`?n4(e.newPath):``;return[...new Set([n,t].filter(e=>e&&e!==`/dev/null`))]},i4=e=>{let[t,n]=r4(e);return!t&&!n?`Unknown file`:t&&n&&t!==n?`${n} -> ${t}`:t??n??`Unknown file`},a4=e=>{let t=A$((()=>{let[t,n]=r4(e);return t??n??null})());if(!t)return null;try{return aD(e.hunks,{highlight:!0,refractor:A1.default,language:t,enhancers:[rD(e.hunks)]})}catch{return null}},o4=(e,t)=>e instanceof Error?e.message:t,s4=(e,t)=>{if(!t)return e;let n=i4(t);return[t,...e.filter(e=>i4(e)!==n)]},c4=e=>[...e].sort((e,t)=>{if(e.filePath!==t.filePath)return e.filePath.localeCompare(t.filePath);let n=e.newLineNumber??e.oldLineNumber??2**53-1,r=t.newLineNumber??t.oldLineNumber??2**53-1;return n===r?e.changeKey.localeCompare(t.changeKey):n-r}),l4=({diffResponse:e,gitStatus:t})=>{let n=new Map;for(let t of e?.files??[])n.set(t.path,t);return t?t.files.map(e=>{let t=n.get(e.path)??(e.original_path?n.get(e.original_path):void 0);return{path:e.path,originalPath:e.original_path,status:e.status,staged:e.staged,unstaged:e.unstaged,conflicted:e.conflicted,additions:t?.additions??0,deletions:t?.deletions??0}}):(e?.files??[]).map(e=>({path:e.path,originalPath:null,status:null,staged:!1,unstaged:!1,conflicted:!1,additions:e.additions,deletions:e.deletions}))},u4=e=>{let t=e.split(/[\\/]/);return t[t.length-1]||e},d4={modified:`border-amber-500/40 bg-amber-500/10 text-amber-200`,added:`border-emerald-500/40 bg-emerald-500/10 text-emerald-200`,deleted:`border-rose-500/40 bg-rose-500/10 text-rose-200`,renamed:`border-sky-500/40 bg-sky-500/10 text-sky-200`,untracked:`border-violet-500/40 bg-violet-500/10 text-violet-200`,typechanged:`border-slate-500/40 bg-slate-500/10 text-slate-200`},f4={modified:`Modified`,added:`Added`,deleted:`Deleted`,renamed:`Renamed`,untracked:`Untracked`,typechanged:`Type changed`},p4=({selectedDiffPath:e,sidebarFiles:t,diffStats:n,triggerMode:r=`full`,onSelectDiffPath:i})=>{let[a,o]=(0,b.useState)(!1),s=t.find(t=>t.path===e)??null,c=r===`compact`?e===`all`?`Diff`:s?u4(s.path):`File`:e===`all`?`All changes`:s?u4(s.path):e;return(0,q.jsxs)(Ug,{open:a,onOpenChange:o,children:[(0,q.jsx)(Wg,{asChild:!0,children:(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`outline`,className:J(`max-w-full gap-2`,r===`full`?`min-w-0 max-w-[18rem]`:`min-w-0 px-2.5`),"aria-label":`Open changed files`,title:e===`all`?void 0:s?.path??e,children:[(0,q.jsx)(`span`,{className:`truncate`,children:c}),r===`full`&&(0,q.jsxs)(Z,{variant:`outline`,className:`shrink-0 text-[10px] uppercase tracking-wide`,children:[t.length,` file`,t.length===1?``:`s`]}),(0,q.jsx)(h_,{className:`h-4 w-4 shrink-0 text-muted-foreground`})]})}),(0,q.jsxs)(Gg,{align:`start`,className:`z-[90] w-[28rem] max-w-[calc(100vw-2rem)] p-0`,children:[(0,q.jsx)(`div`,{className:`border-b border-border/80 px-4 py-3`,children:(0,q.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:`Changed files`})}),(0,q.jsx)(`div`,{className:`max-h-[min(28rem,calc(100vh-10rem))] overflow-y-auto p-3`,children:(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(`all`),o(!1)},className:J(`flex w-full cursor-pointer items-start gap-3 rounded-xl border px-3 py-2.5 text-left transition-colors`,m$(e===`all`),`justify-between`),children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:`All changes`}),(0,q.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground transition-colors group-hover:text-foreground/70`,children:`Review the full workspace diff.`})]}),n&&(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`text-muted-foreground transition-colors group-hover:text-foreground/70`,children:[n.files_changed,` file`,n.files_changed===1?``:`s`]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,n.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,n.deletions]})]})]}),t.map(t=>(0,q.jsx)(`button`,{type:`button`,onClick:()=>{i(t.path),o(!1)},className:J(`flex w-full cursor-pointer items-start gap-3 rounded-xl border px-3 py-2.5 text-left transition-colors`,m$(e===t.path)),children:(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:u4(t.path)}),(0,q.jsx)(`div`,{className:`mt-0.5 break-all font-mono text-[11px] text-muted-foreground transition-colors group-hover:text-foreground/70`,children:t.path})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 text-[11px]`,children:[(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-emerald-400`,children:[`+`,t.additions]}),(0,q.jsxs)(`span`,{className:`font-mono tabular-nums text-rose-400`,children:[`-`,t.deletions]})]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px]`,children:[t.status&&(0,q.jsx)(Z,{variant:`outline`,className:d4[t.status],children:f4[t.status]}),t.staged&&(0,q.jsx)(Z,{variant:`outline`,children:`Staged`}),t.unstaged&&(0,q.jsx)(Z,{variant:`outline`,children:`Unstaged`}),t.conflicted&&(0,q.jsx)(Z,{variant:`destructive`,children:`Conflicted`}),t.originalPath&&(0,q.jsx)(`span`,{className:`break-all font-mono text-[11px] text-muted-foreground transition-colors group-hover:text-foreground/70`,children:t.status===`renamed`?`from ${t.originalPath}`:t.originalPath})]})]})},`${t.path}:${t.originalPath??``}`))]})})]})]})},m4=(0,b.memo)(({projectId:e,chatSessionId:t=null,canSubmitReviewPrompt:n,reviewSubmitDisabledReason:r,onSubmitReviewPrompt:i,state:a,onStateChange:o,isResizing:s=!1,onClose:c,desktopWidth:l,panelElementRef:u})=>{let[d,f]=(0,b.useState)(null),[p,m]=(0,b.useState)(null),[h,g]=(0,b.useState)(null),[_,v]=(0,b.useState)(!1),[,y]=(0,b.useState)(!1),[x,S]=(0,b.useState)(new Map),[C,w]=(0,b.useState)(!1),T=(0,b.useRef)(0),E=(0,b.useRef)(0),D=(0,b.useRef)(null),O=(0,b.useRef)(null),k=a.selectedDiffPath,A=a.activeReviewTarget,j=a.editingReviewCommentKey,M=A?.commentKey??j??`chat`,N=a.reviewDraftInput,P=(0,b.useMemo)(()=>new Map(a.reviewComments.map(e=>[hD(e.filePath,e.changeKey),e])),[a.reviewComments]),F=(0,b.useCallback)(async()=>{if(!e)throw Error(`Project id is required`);return t?await dO(e,t):await Je(e)},[t,e]),I=(0,b.useCallback)(async()=>{if(!e)throw Error(`Project id is required`);return t?await fO(e,t):await Xe(e)},[t,e]);(0,b.useEffect)(()=>{D.current=d},[d]),(0,b.useEffect)(()=>{O.current=p},[p]);let L=(0,b.useCallback)(async()=>{if(!e){E.current+=1,f(null),m(null),g(null),v(!1),y(!1);return}let t=T.current+1,n=E.current+1;T.current=t,E.current=n,v(!0),y(!0);let[r,i]=await Promise.allSettled([F(),I()]);T.current===t&&(r.status===`fulfilled`?(D.current=r.value,f(r.value),g(null)):g(o4(r.reason,`Unable to load the diff right now.`)),i.status===`fulfilled`&&(O.current=i.value,m(i.value)),E.current===n&&v(!1),y(!1))},[F,I,e]),R=(0,b.useCallback)(async(t={})=>{if(!e)return;let{broadcastOnSignatureChange:n=!1}=t,r=T.current+1;T.current=r,y(!0);try{let t=await I();if(T.current!==r)return;let i=O.current?.workspace_signature??null,a=t.workspace_signature??null,o=!D.current||i!==a;if(O.current=t,m(t),!o){E.current+=1,v(!1);return}let s=!D.current,c=E.current+1;E.current=c,s&&v(!0);try{let t=await F();if(T.current!==r)return;D.current=t,f(t),g(null),n&&i!==a&&M$(e)}catch(e){if(T.current!==r)return;D.current||g(o4(e,`Unable to load the diff right now.`))}finally{s&&E.current===c&&v(!1)}}catch{D.current||(E.current+=1,v(!1));return}finally{T.current===r&&y(!1)}},[F,I,e]);(0,b.useEffect)(()=>{L()},[L]),(0,b.useEffect)(()=>{if(e)return N$(t=>{t===e&&R()})},[e,R]),(0,b.useEffect)(()=>{if(!e)return;let t=F$(()=>{document.visibilityState===`visible`&&R({broadcastOnSignatureChange:!0})});return()=>{t()}},[e,R]),(0,b.useEffect)(()=>{if(!e)return;let t=window.setInterval(()=>{document.visibilityState===`visible`&&R({broadcastOnSignatureChange:!0})},t4);return()=>{window.clearInterval(t)}},[e,R]);let z=(0,b.useMemo)(()=>{let e=typeof d?.diff==`string`?d.diff:``;return e.trim()?Xx(e,{nearbySequences:`zip`}).map(e=>({...e,pathCandidates:r4(e)})):[]},[d]),ee=(0,b.useMemo)(()=>{let e=new Map;for(let t of z)for(let n of t.pathCandidates)e.has(n)||e.set(n,t);return e},[z]),B=(0,b.useMemo)(()=>l4({diffResponse:d,gitStatus:p}),[d,p]);(0,b.useEffect)(()=>{if(k!==`all`&&!(!d&&!p)){if(B.length===0){o(e=>({...e,selectedDiffPath:`all`}));return}B.some(e=>e.path===k)||o(e=>({...e,selectedDiffPath:`all`}))}},[d,p,o,k,B]);let V=k===`all`?null:ee.get(k)??null,H=(0,b.useMemo)(()=>s4(z,V),[z,V]),te=(0,b.useMemo)(()=>k===`all`?z:V?[V]:[],[z,k,V]);(0,b.useEffect)(()=>{S(new Map)},[z]),(0,b.useEffect)(()=>{if(H.length===0)return;let e=!1,t=null,n=0,r=()=>{if(e)return;let i=H.slice(n,n+e4);i.length!==0&&(S(e=>{let t=new Map(e);for(let e of i){let n=i4(e);t.has(n)||t.set(n,a4(e))}return t}),n+=e4,n<H.length&&(t=window.setTimeout(r,0)))};return t=window.setTimeout(r,0),()=>{e=!0,t!==null&&window.clearTimeout(t)}},[H]);let U=(0,b.useMemo)(()=>{let e=new Map;for(let t of H.slice(0,e4))e.set(i4(t),a4(t));return e},[H]),ne=(0,b.useMemo)(()=>te.map(e=>({...e,tokens:x.get(i4(e))??U.get(i4(e))??null})),[U,x,te]),W=(0,b.useMemo)(()=>z.map(e=>({...e,tokens:null})),[z]),re=(0,b.useMemo)(()=>c4(a.reviewComments),[a.reviewComments]),ie=re.length,ae=n&&!C&&ie>0,G=(0,b.useCallback)(()=>{o(e=>({...e,activeReviewTarget:null,editingReviewCommentKey:null,reviewDraftInput:``,reviewComments:[]}))},[o]),oe=(0,b.useCallback)(({filePath:e,changeKey:t,commentKey:r})=>{let i=P.get(r);if(i){o(e=>({...e,selectedDiffPath:i.filePath,activeReviewTarget:null,editingReviewCommentKey:r,reviewDraftInput:i.comment}));return}n&&o(n=>({...n,activeReviewTarget:{filePath:e,changeKey:t,commentKey:r},editingReviewCommentKey:null,reviewDraftInput:``}))},[n,o,P]),se=(0,b.useCallback)(()=>{o(e=>({...e,activeReviewTarget:null,editingReviewCommentKey:null,reviewDraftInput:``}))},[o]),ce=(0,b.useCallback)(e=>{let t=P.has(e.commentKey);if(!n&&!t)return;let r=N.trim();if(!r)return;let i=e.change.type===`insert`?null:`oldLineNumber`in e.change?e.change.oldLineNumber:e.change.lineNumber,a=e.change.type===`delete`?null:`newLineNumber`in e.change?e.change.newLineNumber:e.change.lineNumber;o(t=>{let n=new Map(t.reviewComments.map(e=>[hD(e.filePath,e.changeKey),e]));return n.set(e.commentKey,{scope:`uncommitted`,filePath:e.filePath,changeKey:e.changeKey,changeType:e.change.type,oldLineNumber:i,newLineNumber:a,hunkHeader:e.hunk.content,lineContent:e.change.content,diffSnippet:gD(e.hunk,e.change),comment:r}),{...t,activeReviewTarget:null,editingReviewCommentKey:null,reviewDraftInput:``,reviewComments:[...n.values()]}})},[n,o,P,N]),le=(0,b.useCallback)(e=>{let t=P.get(e);t&&o(n=>({...n,selectedDiffPath:t.filePath,activeReviewTarget:null,editingReviewCommentKey:e,reviewDraftInput:t.comment}))},[o,P]),ue=(0,b.useCallback)(e=>{o(t=>({...t,activeReviewTarget:t.activeReviewTarget?.commentKey===e?null:t.activeReviewTarget,editingReviewCommentKey:t.editingReviewCommentKey===e?null:t.editingReviewCommentKey,reviewDraftInput:t.activeReviewTarget?.commentKey===e||t.editingReviewCommentKey===e?``:t.reviewDraftInput,reviewComments:t.reviewComments.filter(t=>hD(t.filePath,t.changeKey)!==e)}))},[o]),de=(0,b.useCallback)(async()=>{if(!ae)return;w(!0);let e=TD({drafts:re,findings:[],githubComments:[],uncommittedFiles:z});try{await i(e),G(),X.success(`Changes sent to chat.`,{id:`chat-diff-review-submit-success`})}catch(e){X.error(o4(e,`Unable to send the changes right now.`),{id:`chat-diff-review-submit-error`})}finally{w(!1)}},[ae,G,i,z,re]),K=(0,b.useCallback)(e=>(0,q.jsx)(xQ,{reviewComments:re,pendingFixCount:ie,triggerMode:e===`wide`?`full`:`compact`,canSendReview:ae,isSubmittingReview:C,reviewSubmitDisabledReason:r??void 0,onClearPendingFixes:G,onSubmitReview:()=>{de()}}),[ae,G,de,C,ie,re,r]),fe=c?(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Close diff panel`,className:`text-muted-foreground hover:text-foreground`,onClick:c,children:(0,q.jsx)(Av,{className:`h-4 w-4`})}):null,pe=l?{"--chat-changes-panel-width":`${l}px`}:void 0;return(0,q.jsx)(`aside`,{"data-testid":`chat-changes-panel`,"data-desktop-width":l?String(l):void 0,ref:u,style:pe,className:J(`flex h-[26rem] min-h-0 w-full shrink-0 flex-col overflow-hidden border-t border-border/70 bg-background/20 xl:h-full xl:border-l xl:border-t-0`,l?`xl:w-[var(--chat-changes-panel-width)]`:`xl:w-[32rem]`),children:(0,q.jsx)(p$,{selectedDiffPath:k,sidebarFiles:B,diffResponse:d,isDiffLoading:_,diffError:h,allDiffFiles:W,renderedFiles:ne,viewType:`unified`,onViewTypeChange:()=>{},onRetry:()=>{L()},activeReviewTarget:A,editingReviewCommentKey:j,reviewDraftInstanceKey:M,reviewDraftInput:N,reviewComments:re,reviewFindings:[],githubComments:[],selectedReviewFindingIds:[],selectedGitHubCommentIds:[],canSelectReviewTarget:n,canEditActiveReviewDraft:n,reviewFindingsError:null,gitHubCommentsError:null,hasStaleReviewFindings:!1,onSelectReviewTarget:oe,onToggleReviewFindingSelection:()=>{},onToggleGitHubCommentSelection:()=>{},onReviewDraftInputChange:e=>{o(t=>({...t,reviewDraftInput:e}))},onCancelReviewDraft:se,onEditReviewDraft:le,onRemoveReviewDraft:ue,onSaveReviewDraft:ce,diffThemeClassName:y$,resolveFilePath:i4,normalizeDiffPath:n4,emptyStateTitle:`No uncommitted changes.`,emptyStateDescription:`The current project branch is clean.`,filePickerControl:e=>(0,q.jsx)(p4,{selectedDiffPath:k,sidebarFiles:B,diffStats:d?.stats??null,triggerMode:e===`wide`?`full`:`compact`,onSelectDiffPath:e=>{o(t=>({...t,selectedDiffPath:e}))}}),reviewSummaryControl:K,extraHeaderControl:fe,surfaceVariant:`flat`,showViewTypeToggle:!1,gutterVariant:`compact`,isResizing:s,resizePlaceholderLineThreshold:200})})});m4.displayName=`ChatChangesPanel`;var h4=({projectId:e,messages:t,internalLog:n,pendingAgentTitle:r,streamingResponse:i,isRunning:a,isLoading:o=!1,canShowComposer:s,isExternallyResizing:c=!1,pendingAgentRevealKey:l=null,pendingAgentRevealDelayMs:u=0,composerFocusNonce:d=0,header:f,composerControls:p,composerInlineControls:m,composerTheme:h=`default`,layoutKey:g,scrollLayoutKey:_,followUpPrompt:v,followUpPlaceholder:y,emptyStateText:b=null,renderMessageFooter:x,isSendingFollowUp:S,followUpDisabledReason:C,onFollowUpPromptChange:w,onFollowUpKeyDown:T,onFollowUpSubmit:E})=>(0,q.jsx)(AB,{projectId:e,messages:t,internalLog:n,pendingAgentTitle:r,streamingResponse:i,isRunning:a,isLoading:o,autoScrollBehavior:`sticky`,surfaceVariant:`chat`,canShowComposer:s,header:f,composerControls:p,composerInlineControls:m,composerTheme:h,composerSize:`compact-on-laptop`,showThinkingPlacement:`header`,pinComposerToBottom:!0,isExternallyResizing:c,pendingAgentRevealKey:l,pendingAgentRevealDelayMs:u,composerFocusNonce:d,layoutKey:g,scrollLayoutKey:_,followUpPrompt:v,followUpPlaceholder:y,emptyStateText:b,autoFocusComposer:!0,renderMessageFooter:x,isSendingFollowUp:S,followUpDisabledReason:C,onFollowUpPromptChange:w,onFollowUpKeyDown:T,onFollowUpSubmit:E}),g4={default:`h-5 rounded-md border-amber-500/40 bg-amber-500/10 px-1.5 text-[10px] uppercase tracking-[0.16em] text-amber-200`,muted:`h-5 rounded-md border-amber-500/40 bg-amber-500/10 px-1.5 text-[10px] uppercase tracking-[0.16em] text-amber-100`},_4=({tone:e=`default`,className:t,children:n,...r})=>(0,q.jsx)(Z,{variant:`outline`,className:J(g4[e],t),...r,children:n}),v4=()=>({kind:`decision`,title:``,scope:``,content:``,rationale:``,implications:``,stages:``,priority:`normal`}),y4=e=>e.kind===`convention`?{kind:`convention`,title:e.title,scope:e.scope??``,content:e.instruction,rationale:e.rationale??``,implications:``,stages:e.stages.join(`
174
175
  `),priority:e.priority}:{kind:`decision`,title:e.title,scope:e.scope??``,content:e.decision,rationale:e.rationale??``,implications:e.implications.join(`
175
176
  `),stages:``,priority:`normal`},b4=e=>e.split(`
176
- `).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t),x4=e=>{let t=[`plan`,`build`,`review`,`follow_up`,`plan_follow_up`,`chat`];return e.split(/\n|,/).map(e=>e.trim()).filter(e=>t.includes(e)).filter((e,t,n)=>n.indexOf(e)===t)},S4=({suggestion:e,isPending:t,onReview:n,onAccept:r,onDismiss:i})=>{let a=e.kind===`decision`?e.duplicate_match?.decision??null:null,o=a?`Save as new decision`:`Accept`,s=e.kind===`decision`?e.decision:e.instruction;return(0,q.jsx)(`li`,{className:`rounded-xl border border-border/60 bg-background/40`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 p-3`,children:[(0,q.jsx)(`div`,{className:`flex items-start justify-between gap-3`,children:(0,q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`truncate text-sm font-semibold text-foreground`,children:e.title}),(0,q.jsxs)(_4,{children:[`Suggested `,e.kind]}),a?(0,q.jsx)(_4,{tone:`muted`,children:`Possible duplicate`}):null]}),(0,q.jsx)(`p`,{className:`line-clamp-2 text-sm text-muted-foreground`,children:s})]})}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`outline`,disabled:t,onClick:()=>n(e),children:`Review`}),(0,q.jsx)(Y,{type:`button`,size:`sm`,disabled:t,onClick:()=>void r(e),children:o}),(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,disabled:t,onClick:()=>void i(e),children:`Dismiss`})]})]})})},C4=({suggestion:e,isOpen:t,isEditing:n,isPending:r,draft:i,onOpenChange:a,onStartEdit:o,onDraftChange:s,onCancelEdit:c,onAccept:l,onDismiss:u})=>{if(!e)return null;let d=e.kind===`decision`?e.duplicate_match?.decision??null:null,f=d?`Save as new decision`:`Accept as ${e.kind}`;return(0,q.jsx)(yg,{open:t,onOpenChange:a,children:(0,q.jsxs)(Cg,{className:`max-h-[85vh] overflow-y-auto sm:max-w-2xl`,children:[(0,q.jsxs)(wg,{children:[(0,q.jsx)(Eg,{children:e.title}),(0,q.jsx)(Dg,{children:`Review this suggestion before saving it into project memory.`})]}),(0,q.jsxs)(`div`,{className:`space-y-4`,children:[d?(0,q.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-5 text-amber-100`,children:[(0,q.jsx)(`p`,{className:`font-medium text-amber-50`,children:`Possible duplicate`}),(0,q.jsxs)(`p`,{children:[(0,q.jsxs)(`span`,{className:`font-medium`,children:[d.title,`:`]}),` `,d.decision]})]}):null,n?(0,q.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Suggestion title`}),(0,q.jsx)(`input`,{"aria-label":`Suggestion title`,value:i.title,onChange:e=>s({...i,title:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Scope`}),(0,q.jsx)(`input`,{"aria-label":`Scope`,value:i.scope,onChange:e=>s({...i,scope:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:i.kind===`decision`?`Decision`:`Instruction`}),(0,q.jsx)(`textarea`,{"aria-label":i.kind===`decision`?`Decision`:`Instruction`,value:i.content,onChange:e=>s({...i,content:e.target.value}),rows:5,className:`min-h-32 rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Rationale`}),(0,q.jsx)(`textarea`,{"aria-label":`Rationale`,value:i.rationale,onChange:e=>s({...i,rationale:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),i.kind===`decision`?(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Implications (one per line)`}),(0,q.jsx)(`textarea`,{"aria-label":`Implications`,value:i.implications,onChange:e=>s({...i,implications:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:`Stages (comma or newline separated)`}),(0,q.jsx)(`textarea`,{"aria-label":`Stages`,value:i.stages,onChange:e=>s({...i,stages:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:`Priority`}),(0,q.jsxs)(`select`,{"aria-label":`Priority`,value:i.priority,onChange:e=>s({...i,priority:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`,children:[(0,q.jsx)(`option`,{value:`low`,children:`Low`}),(0,q.jsx)(`option`,{value:`normal`,children:`Normal`}),(0,q.jsx)(`option`,{value:`high`,children:`High`})]})]})]})]}):(0,q.jsxs)(`div`,{className:`space-y-4 text-sm`,children:[(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:e.kind===`decision`?`Decision`:`Instruction`}),(0,q.jsx)(`p`,{className:`whitespace-pre-wrap text-foreground`,children:e.kind===`decision`?e.decision:e.instruction})]}),e.rationale?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Rationale`}),(0,q.jsx)(`p`,{className:`whitespace-pre-wrap text-muted-foreground`,children:e.rationale})]}):null,e.kind===`decision`&&e.implications.length>0?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Implications`}),(0,q.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-muted-foreground`,children:e.implications.map(e=>(0,q.jsx)(`li`,{children:e},e))})]}):null,e.kind===`convention`?(0,q.jsxs)(`div`,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Stages`}),(0,q.jsx)(`p`,{className:`text-muted-foreground`,children:e.stages.join(`, `)||`None specified`})]}),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Priority`}),(0,q.jsx)(`p`,{className:`text-muted-foreground`,children:e.priority})]})]}):null]})]}),(0,q.jsxs)(Tg,{className:`flex flex-wrap gap-2 sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n?(0,q.jsx)(Y,{type:`button`,variant:`ghost`,disabled:r,onClick:c,children:`Cancel edits`}):(0,q.jsx)(Y,{type:`button`,variant:`outline`,disabled:r,onClick:()=>o(e),children:`Edit`}),(0,q.jsx)(Y,{type:`button`,variant:`ghost`,disabled:r,onClick:()=>void u(e),children:`Dismiss`})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[d?(0,q.jsx)(Y,{type:`button`,variant:`outline`,disabled:r,onClick:()=>void l(e,!0),children:`Update existing decision`}):null,(0,q.jsx)(Y,{type:`button`,disabled:r,onClick:()=>void l(e,!1),children:f})]})]})]})})},w4=({projectId:e,suggestions:t,title:n,description:r,emptyState:i=null,onSuggestionsChanged:a})=>{let[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)(v4),[f,p]=(0,b.useState)(null);(0,b.useEffect)(()=>{l(e=>e&&!t.some(t=>t.id===e)?null:e),s(e=>e&&!t.some(t=>t.id===e)?null:e)},[t]);let m=o?t.find(e=>e.id===o)??null:null,h=()=>{l(null),d(v4())},g=e=>{s(e.id),l(e.id),d(y4(e))},_=e=>{c&&c!==e.id&&h(),s(e.id)},v=e=>{e||(s(null),c&&h())},y=async(t,n)=>{let r=c===t.id?u:y4(t),i=r.kind===`decision`?{title:r.title.trim(),scope:r.scope.trim()||null,decision:r.content.trim(),rationale:r.rationale.trim()||null,implications:b4(r.implications)}:{title:r.title.trim(),scope:r.scope.trim()||null,instruction:r.content.trim(),rationale:r.rationale.trim()||null,stages:x4(r.stages),priority:r.priority};p(t.id);try{if(n){if(t.kind!==`decision`)throw Error(`Only decision suggestions can update an existing memory.`);let n=t.duplicate_match?.decision;if(!n)throw Error(`No existing decision is available for this suggestion.`);await mt(e,t.id,n.id,i)}else await ft(e,t.id,i);h(),s(null),a?.()}catch(e){X.error(e instanceof Error?e.message:`Unable to save the memory suggestion right now.`,{id:`project-memory-suggestion-error`})}finally{p(null)}},x=async t=>{p(t.id);try{await pt(e,t.id),c===t.id&&h(),o===t.id&&s(null),a?.()}catch(e){X.error(e instanceof Error?e.message:`Unable to dismiss the memory suggestion right now.`,{id:`project-memory-suggestion-error`})}finally{p(null)}};return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[n||r?(0,q.jsx)(`div`,{className:`flex items-center justify-between gap-3`,children:(0,q.jsxs)(`div`,{children:[n?(0,q.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:n}):null,r?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r}):null]})}):null,t.length>0?(0,q.jsx)(`ul`,{className:`space-y-2`,children:t.map(e=>(0,q.jsx)(S4,{suggestion:e,isPending:f===e.id,onReview:_,onAccept:e=>y(e,!1),onDismiss:x},e.id))}):i?(0,q.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/70 px-3 py-4 text-sm text-muted-foreground`,children:i}):null,(0,q.jsx)(C4,{suggestion:m,isOpen:!!m,isEditing:c===m?.id,isPending:f===m?.id,draft:c===m?.id?u:m?y4(m):u,onOpenChange:v,onStartEdit:g,onDraftChange:d,onCancelEdit:h,onAccept:y,onDismiss:x})]})},T4=()=>({selectedDiffPath:`all`,activeReviewTarget:null,editingReviewCommentKey:null,reviewDraftInput:``,reviewComments:[]}),E4=[{key:`today`,label:`Today`},{key:`yesterday`,label:`Yesterday`},{key:`last_7_days`,label:`Last 7 Days`},{key:`older`,label:`Older`}],D4=e=>{if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},O4=e=>e.activity_at??e.last_user_message_at??e.created_at,k4=(e,t)=>{let n=O4(e),r=O4(t);return n===r?e.created_at===t.created_at?t.id.localeCompare(e.id):t.created_at.localeCompare(e.created_at):r.localeCompare(n)},A4=e=>[...e].sort(k4),j4=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),M4=(e,t=new Date)=>{let n=D4(O4(e));if(!n)return`older`;let r=j4(t),i=new Date(r);i.setDate(i.getDate()-1);let a=new Date(r);return a.setDate(a.getDate()-6),n>=r?`today`:n>=i?`yesterday`:n>=a?`last_7_days`:`older`},N4=(e,t=new Date)=>{let n=new Map;for(let r of A4(e)){let e=M4(r,t);n.set(e,[...n.get(e)??[],r])}return E4.flatMap(e=>{let t=n.get(e.key)??[];return t.length===0?[]:[{key:e.key,label:e.label,sessions:t}]})},P4=1500,F4=`archon.chat-run-config`,I4=`archon.chat-changes-panel-layout`,L4=`archon.chat-session-list-layout`,R4=`archon.chat-draft`,z4=512,B4=360,V4=.6,H4=6,U4=`.`,W4=`/`,G4=`Slash`,K4=`NumpadDivide`,q4=600,J4=(e,t)=>{let n=Number.isFinite(e)?Math.round(e):z4;if(!Number.isFinite(t))return Math.max(B4,n);let r=Math.max(B4,Math.round(t*V4));return Math.max(B4,Math.min(r,n))},Y4=e=>e===`claude`?`Claude`:`OpenCode`,X4=({availableModelsById:e,model:t})=>t?e.get(t)??t:null,Z4=e=>e===`plan`?`Plan`:`Build`,Q4=e=>e===`plan`?`Ask Archon to scope, sequence, or reason through project work`:`Ask Archon to build, change, or verify something in this project`,$4=e=>`${e} pending memory suggestion${e===1?``:`s`}`,e3=e=>e===`plan`?`build`:`plan`,t3=e=>!e.defaultPrevented&&!e.altKey&&!e.shiftKey&&!e.repeat&&(e.ctrlKey||e.metaKey)&&e.key===U4,n3=e=>!e.defaultPrevented&&!e.altKey&&!e.repeat&&(e.ctrlKey||e.metaKey)&&(e.key===W4||e.code===G4||e.code===K4),r3=()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData?.platform??navigator.platform??navigator.userAgent;return/mac/i.test(e)},i3=()=>r3()?`CMD`:`CTRL`,a3=({modifierLabel:e,keys:t,ariaHidden:n=!1})=>(0,q.jsxs)(`span`,{"aria-hidden":n,className:`flex items-center gap-0.5 text-[10px] leading-none`,children:[(0,q.jsx)(v_,{"aria-hidden":n,children:e}),t.map(e=>(0,q.jsxs)(`span`,{className:`contents`,children:[(0,q.jsx)(`span`,{children:`+`}),(0,q.jsx)(v_,{"aria-hidden":n,children:e})]},e))]}),o3=({label:e,modifierLabel:t,keys:n})=>(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e}),(0,q.jsx)(a3,{modifierLabel:t,keys:n,ariaHidden:!0})]}),s3=({modelLabel:e,tool:t})=>e??Y4(t),c3=()=>`You`,l3=e=>{if(!Number.isFinite(e))return`0`;if(e>=1e6){let t=e/1e6,n=t<10?2:1;return`${t.toFixed(n)}M`}return e>=1e3?`${(e/1e3).toFixed(1)}K`:`${Math.round(e)}`},u3=({totalTokens:e,contextWindow:t})=>!Number.isFinite(e)||!Number.isFinite(t)||t<=0?null:Math.round(e/t*100),d3=({tool:e,model:t,availableModels:n,fallbackContextWindow:r})=>e===`opencode`?(n.find(e=>e.id===t)??null)?.context_window??r:r,f3=({projectId:e,tool:t})=>`${F4}:${e}:${t}`,p3=({projectId:e,tool:t,chatSessionId:n})=>n?`${R4}:${e}:session:${n}`:`${R4}:${e}:draft:${t}`,m3=e=>`${I4}:${e}`,h3=e=>`${L4}:${e}`,g3=e=>{if(!e)return``;try{return window.localStorage.getItem(e)??``}catch{return``}},_3=({storageKey:e,value:t})=>{if(e)try{if(t){window.localStorage.setItem(e,t);return}window.localStorage.removeItem(e)}catch{}},v3=e=>{if(!e)return{isOpen:!0,width:z4};try{let t=window.localStorage.getItem(m3(e));if(!t)return{isOpen:!0,width:z4};let n=JSON.parse(t),r=typeof n.width==`number`&&Number.isFinite(n.width)?Math.max(B4,Math.round(n.width)):z4;return{isOpen:n.isOpen!==!1,width:r}}catch{return{isOpen:!0,width:z4}}},y3=e=>{if(!e)return{isOpen:!0};try{let t=window.localStorage.getItem(h3(e));return t?{isOpen:JSON.parse(t).isOpen!==!1}:{isOpen:!0}}catch{return{isOpen:!0}}},b3=({projectId:e,isOpen:t,width:n})=>{if(e)try{window.localStorage.setItem(m3(e),JSON.stringify({isOpen:t,width:n}))}catch{}},x3=({projectId:e,isOpen:t})=>{if(e)try{window.localStorage.setItem(h3(e),JSON.stringify({isOpen:t}))}catch{}},S3=({projectId:e,tool:t})=>{if(!e||t!==`opencode`)return null;try{let n=window.localStorage.getItem(f3({projectId:e,tool:t}));if(!n)return null;let r=JSON.parse(n),i=(typeof r.model==`string`?r.model.trim():``)||null,a=r.mode===`plan`||r.mode===`build`?r.mode:null;return!i&&!a?null:{model:i,variant:i&&typeof r.variant==`string`&&r.variant.trim()||null,mode:a}}catch{return null}},C3=({projectId:e,tool:t,model:n,variant:r,mode:i})=>{if(!(!e||t!==`opencode`||!n&&!i))try{window.localStorage.setItem(f3({projectId:e,tool:t}),JSON.stringify({model:n,variant:n?r:null,mode:i}))}catch{}},w3=({projectId:e,tool:t})=>S3({projectId:e,tool:t})?.mode??`plan`,T3=({activeProjectId:e,helperModel:t,helperVariant:n,activeTool:r,availableModels:i})=>{let a=S3({projectId:e,tool:r}),o=new Set(i.map(e=>e.id)),s=e=>e?o.size===0?!0:o.has(e):!1,c=t??``,l=a?.model??``,u=s(l)?l:s(c)?c:``,d=u===l?a?.variant??null:u&&u===c?n??null:null,f=i.find(e=>e.id===u)??null;return{model:u,variant:f?f.variants.includes(d??``)?d??``:``:u?d??``:``,mode:a?.mode??`plan`}},E3=e=>e&&e.replace(/\s+/g,` `).trim()||null,D3=e=>{let t=E3(e.first_user_message_preview);if(t)return t;let n=e.messages?.find(e=>e.role===`user`)?.content;return E3(n)},O3=({chatSessionId:e,instruction:t,createdAt:n})=>({id:`optimistic:${e}:${n}`,chat_session_id:e,role:`user`,kind:`prompt`,content:t,created_at:n}),k3=({session:e,instruction:t,createdAt:n})=>({...e,messages:[...e.messages??[],O3({chatSessionId:e.id,instruction:t,createdAt:n})],activity_at:n,last_user_message_at:n,updated_at:n}),A3=e=>!!(e.first_user_message_preview||e.last_user_message_at||e.messages?.some(e=>e.role===`user`)),j3=({activeProject:e,activeProjectBranchState:t,session:n})=>!e||n.target_available===!1?!1:n.target_kind===`bundle`?e.active_target_kind===`bundle`&&!!n.target_bundle_id&&e.active_target_bundle_id===n.target_bundle_id:e.active_target_kind===`bundle`?!1:t?!n.target_branch_snapshot||t?.status!==`ready`||!t.branch?!1:t.branch===n.target_branch_snapshot:!0,M3=e=>e.target_kind===`bundle`?e.target_label_snapshot||`Bundle target`:null,N3=e=>e.target_kind===`bundle`?M3(e)||`Bundle target`:e.target_branch_snapshot?`Repo root (${e.target_branch_snapshot})`:`Repo root`,P3=({activeProject:e,activeProjectBranchState:t})=>e?e.active_target_kind===`bundle`?`selected bundle target`:t?.branch?`Repo root (${t.branch})`:`Repo root`:`current target`,F3=({title:e,isDeleting:t,onConfirm:n,onCancel:r})=>(0,q.jsxs)(Lv,{onClose:r,overlayClassName:`bg-black/60`,panelClassName:`max-w-sm rounded-2xl border border-border bg-card p-6 shadow-2xl`,children:[(0,q.jsx)(`h2`,{className:`mb-3 text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:`Delete chat session`}),(0,q.jsx)(`p`,{className:`mb-1 text-sm text-foreground`,children:e}),(0,q.jsx)(`p`,{className:`mb-6 text-xs text-muted-foreground`,children:`This permanently removes the transcript history for this chat session.`}),(0,q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,q.jsx)(Y,{type:`button`,variant:`ghost`,onClick:r,disabled:t,children:`Cancel`}),(0,q.jsx)(Y,{type:`button`,variant:`destructive`,onClick:n,disabled:t,children:t?`Deleting...`:`Delete`})]})]}),I3=({activeProject:e,activeSessionId:t,chatModeShortcutModifierLabel:n,confirmingDeleteSessionId:r,deletingSessionId:i,finishedBackgroundSessionIds:a,isCreatingSession:o,isDraftOpen:s,isLoadingSessions:c,isOpen:l,isSendingPrompt:u,sessionGroups:d,sessions:f,onConfirmDeleteSession:p,onDraftOpen:m,onSessionSelect:h,onToggleOpen:g})=>(0,q.jsx)(`aside`,{"data-testid":`chat-sessions-sidebar`,"data-state":l?`expanded`:`collapsed`,"aria-label":`Chat sessions sidebar`,className:J(`relative z-20 flex h-full shrink-0 flex-col overflow-hidden border-r border-border/70 bg-background/40 transition-[width] duration-200 ease-out motion-reduce:transition-none`,l?`w-72`:`w-16`),children:l?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-start gap-2 border-b border-border/70 px-4 py-3`,children:[(0,q.jsxs)(Y,{type:`button`,size:`sm`,className:`gap-2`,onClick:m,disabled:o||u,children:[(0,q.jsx)(Dv,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:`New session`}),(0,q.jsx)(a3,{modifierLabel:n,keys:[W4],ariaHidden:!0})]}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Collapse sessions panel`,"aria-expanded":l,className:`ml-auto`,onClick:g,children:(0,q.jsx)(Z2,{className:`h-4 w-4`})})]}),(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-2`,children:c&&f.length===0?(0,q.jsx)(`div`,{className:`px-2 py-4 text-sm text-muted-foreground`,children:`Loading chat sessions...`}):f.length===0?(0,q.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/70 px-3 py-4 text-sm text-muted-foreground`,children:`No chat sessions yet.`}):(0,q.jsx)(`div`,{className:`flex flex-col gap-3`,children:d.map(n=>(0,q.jsxs)(`section`,{"aria-label":n.label,className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(`div`,{className:`px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/80`,children:n.label}),n.sessions.map(n=>{let o=!s&&n.id===t,c=D3(n),l=M3(n),u=n.agent_status===`running`?`Wait for the current chat response to finish before deleting this session.`:null,d=r===n.id||i===n.id,f=!!u||i===n.id,m=n.agent_status===`running`?`running`:n.agent_status===`stopped`?`interrupted`:a.has(n.id)?`finished`:null,g=m===`interrupted`?null:m;return(0,q.jsxs)(`div`,{className:J(`group relative rounded-xl border transition-colors`,o?`border-sky-400/40 bg-sky-500/10 text-foreground ring-1 ring-sky-400/40`:`border-border/50 bg-card/35 text-muted-foreground hover:border-border/80 hover:bg-card/60 hover:text-foreground`),children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":[n.title,Z4(n.mode),Y4(n.tool),e?.memory_enabled&&n.pending_memory_suggestion_count>0?$4(n.pending_memory_suggestion_count):null,m===`running`?`Running`:m===`interrupted`?`Interrupted`:m===`finished`?`Finished`:null].filter(Boolean).join(` `),className:`flex w-full min-w-0 cursor-pointer items-start gap-2 rounded-xl px-3 py-2 pr-11 text-left transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:outline-none`,onClick:()=>{h(n)},children:(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[l?(0,q.jsx)(`div`,{className:`mb-1 truncate text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground/75`,children:l}):null,(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-[13px] font-medium leading-5`,children:n.title}),e?.memory_enabled&&n.pending_memory_suggestion_count>0?(0,q.jsx)(_4,{tone:o?`default`:`muted`,className:`shrink-0`,"aria-label":$4(n.pending_memory_suggestion_count),title:$4(n.pending_memory_suggestion_count),children:n.pending_memory_suggestion_count}):null]}),c?(0,q.jsx)(`div`,{className:J(`mt-0.5 line-clamp-1 text-xs leading-4`,o?`text-foreground/70`:`text-muted-foreground`),children:c}):null,n.target_available===!1?(0,q.jsx)(`div`,{className:`mt-1 line-clamp-1 text-[11px] leading-4 text-amber-200/90`,children:n.target_unavailable_reason??`Target unavailable`}):null]}),(0,q.jsx)($2,{state:g,className:`mt-1`})]})}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Delete chat session`,className:J(`absolute top-2 right-2 h-7 w-7 shrink-0 rounded-md border border-transparent text-muted-foreground transition-all duration-150 hover:border-border/70 hover:bg-card/80 hover:text-foreground focus-visible:border-border/70 focus-visible:bg-card/80 focus-visible:text-foreground`,`opacity-100 sm:opacity-0 sm:pointer-events-none sm:group-hover:pointer-events-auto sm:group-focus-within:pointer-events-auto sm:group-hover:opacity-100 sm:group-focus-within:opacity-100`,f&&`sm:disabled:opacity-0 sm:group-hover:disabled:opacity-50 sm:group-focus-within:disabled:opacity-50`,(o||d)&&`sm:pointer-events-auto sm:opacity-100 sm:disabled:opacity-50`,u&&`cursor-not-allowed text-muted-foreground/50 hover:border-transparent hover:bg-transparent hover:text-muted-foreground/50 focus-visible:border-transparent focus-visible:bg-transparent focus-visible:text-muted-foreground/50`),title:u??`Delete ${n.title}`,disabled:f,onClick:e=>{e.stopPropagation(),p(n.id)},children:(0,q.jsx)(Jv,{className:`h-4 w-4`})})]},n.id)})]},n.key))})})]}):(0,q.jsxs)(`div`,{"data-testid":`chat-sessions-rail`,className:`flex h-full w-full flex-col items-center gap-2 bg-background/80 py-3`,children:[(0,q.jsx)(d_,{content:(0,q.jsx)(o3,{label:`Start new session`,modifierLabel:n,keys:[W4]}),side:`right`,children:(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,"aria-label":`New session`,className:`h-9 w-9`,onClick:m,disabled:o||u,children:(0,q.jsx)(Dv,{className:`h-4 w-4`})})}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Open sessions panel`,"aria-expanded":l,className:`h-9 w-9`,onClick:g,children:(0,q.jsx)(Q2,{className:`h-4 w-4`})})]})}),L3=({proposals:e,isApplying:t,onApply:n})=>e.status===`applied`?(0,q.jsxs)(`div`,{className:`w-full rounded-md border border-emerald-500/30 bg-emerald-500/10 px-3 py-3 text-sm`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Tickets created`}),(0,q.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[`Created `,e.created_tickets.length,` ticket`,e.created_tickets.length===1?``:`s`,` from this proposal.`]}),e.created_tickets.length>0?(0,q.jsx)(`ul`,{className:`mt-3 space-y-1 text-foreground`,children:e.created_tickets.map(e=>(0,q.jsx)(`li`,{children:e.title},e.ticket_id))}):null]}):(0,q.jsxs)(`div`,{className:`w-full rounded-md border border-sky-500/30 bg-sky-500/10 px-3 py-3 text-sm`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Proposed tickets`}),(0,q.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:`Review these tickets before adding them to the board.`}),(0,q.jsx)(`ul`,{className:`mt-3 space-y-3`,children:e.tickets.map(e=>(0,q.jsxs)(`li`,{className:`rounded border border-border/60 bg-background/80 px-3 py-2`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:e.title}),(0,q.jsx)(`div`,{className:`mt-1 whitespace-pre-wrap text-muted-foreground`,children:e.description})]},e.key))}),e.dependencies.length>0?(0,q.jsxs)(`div`,{className:`mt-3 text-muted-foreground`,children:[`Dependencies: `,e.dependencies.map(e=>`${e.blocker_key} -> ${e.dependent_key}`).join(`, `)]}):null,(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(Y,{type:`button`,size:`sm`,onClick:n,disabled:t,children:t?`Creating tickets...`:`Create tickets`})})]}),R3=({activeProjectId:e,activeProject:t,activeProjectBranchState:n=null,activeTool:r,onRestoreSessionTarget:i,onReviewCapabilityChange:a,isExternallyResizing:o=!1,showChangesPanel:s=!0})=>{let[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)(null),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(()=>w3({projectId:e,tool:r})),[x,S]=(0,b.useState)({}),[C,w]=(0,b.useState)([]),[E,D]=(0,b.useState)([]),[O,k]=(0,b.useState)(``),[A,j]=(0,b.useState)(``),[M,N]=(0,b.useState)([]),[P,F]=(0,b.useState)(!1),[I,L]=(0,b.useState)(!1),[R,z]=(0,b.useState)(!1),[ee,B]=(0,b.useState)(!1),[V,H]=(0,b.useState)(!1),[te,U]=(0,b.useState)(null),[ne,W]=(0,b.useState)(null),[re,ie]=(0,b.useState)(null),[ae,G]=(0,b.useState)(!1),[oe,se]=(0,b.useState)(!1),[ce,le]=(0,b.useState)(null),[ue,de]=(0,b.useState)([]),[K,fe]=(0,b.useState)(!1),[pe,me]=(0,b.useState)(!1),[he,ge]=(0,b.useState)(0),[_e,ve]=(0,b.useState)(T4),[ye,be]=(0,b.useState)(()=>y3(e).isOpen),[xe,Se]=(0,b.useState)(()=>v3(e).isOpen),[Ce,we]=(0,b.useState)(!1),[Te,Ee]=(0,b.useState)(!1),[De,Oe]=(0,b.useState)(()=>v3(e).width),[ke,Ae]=(0,b.useState)(0),[je,Me]=(0,b.useState)(null),[Ne,Pe]=(0,b.useState)(()=>new Set),Fe=(0,b.useRef)({model:``,variant:``,skills:[],showModelSelector:!1}),Ie=(0,b.useRef)(!1),Le=(0,b.useRef)(null),Re=(0,b.useRef)(null),ze=(0,b.useRef)(null),Be=(0,b.useRef)(null),Ve=(0,b.useRef)(null),He=(0,b.useRef)(null),Ue=(0,b.useRef)(null),We=(0,b.useRef)(!1),Ge=(0,b.useRef)(!1),Ke=(0,b.useRef)(0),qe=(0,b.useRef)(z4),Je=(0,b.useRef)(z4),Ye=(0,b.useRef)(!1),Xe=(0,b.useRef)(0),Ze=(0,b.useRef)({id:null,status:null}),Qe=(0,b.useRef)(new Map),$e=(0,b.useRef)({}),et=(0,b.useRef)(new Set),tt=(0,b.useRef)(!1),nt=e?p3({projectId:e,tool:g?r:f?.tool??r,chatSessionId:g?null:u}):null,rt=nt?x[nt]??``:``,it=g?r:f?.tool??r;(0,b.useEffect)(()=>{Ie.current=g},[g]),(0,b.useEffect)(()=>{$e.current=x},[x]),(0,b.useEffect)(()=>{if(!nt||et.current.has(nt))return;et.current.add(nt);let e=g3(nt);e&&S(t=>Object.prototype.hasOwnProperty.call(t,nt)?t:{...t,[nt]:e})},[nt]),(0,b.useEffect)(()=>{!nt||!Object.prototype.hasOwnProperty.call(x,nt)||_3({storageKey:nt,value:x[nt]??``})},[nt,x]),(0,b.useEffect)(()=>{Le.current=u},[u]),(0,b.useEffect)(()=>{if(!tt.current){tt.current=!0;return}let t=v3(e),n=y3(e);Ie.current=!1,Ye.current=!1,et.current=new Set,d(null),p(null),_(!1),S({}),U(null),W(null),ie(null),Me(null),de([]),me(!1),L(!1),ve(T4()),Pe(new Set),Qe.current=new Map,Je.current=t.width,be(n.isOpen),Oe(t.width),Se(t.isOpen)},[e]),(0,b.useEffect)(()=>{Ce||(Je.current=De,Be.current&&(Be.current.style.setProperty(`--chat-changes-panel-width`,`${De}px`),Be.current.setAttribute(`data-desktop-width`,String(De))))},[De,Ce]),(0,b.useEffect)(()=>{if(!s||!Re.current)return;let e=Re.current.getBoundingClientRect().width;if(e<=0)return;let t=J4(De,e);t!==De&&(Je.current=t,Oe(t))},[De,s]),(0,b.useEffect)(()=>{x3({projectId:e,isOpen:ye})},[e,ye]),(0,b.useEffect)(()=>{s&&b3({projectId:e,isOpen:xe,width:De})},[e,De,xe,s]),(0,b.useEffect)(()=>{me(!1)},[u,g]);let at=(0,b.useCallback)(e=>{l(t=>{let n=t.findIndex(t=>t.id===e.id);if(n===-1)return A4([...t,e]);let r=[...t];return r[n]=e,A4(r)})},[]),ot=(0,b.useCallback)(t=>{let n=Le.current,i=e?p3({projectId:e,tool:r,chatSessionId:t}):null;S(e=>{if(!i||!Object.prototype.hasOwnProperty.call(e,i))return e;let t={...e};return delete t[i],t}),_3({storageKey:i,value:``}),l(e=>{let r=e.filter(e=>e.id!==t);if(n===t){let e=r[0]??null;d(e?.id??null),p(null),_(e===null),de([]),fe(!1),me(!1)}return r}),Pe(e=>{if(!e.has(t))return e;let n=new Set(e);return n.delete(t),n}),Me(e=>e?.sessionId===t?null:e),U(e=>e===t?null:e),W(e=>e===t?null:e),ie(e=>e===t?null:e)},[e,r]),st=(0,b.useCallback)((e,t)=>{e&&S(n=>n[e]===t?n:{...n,[e]:t})},[]),ct=(0,b.useCallback)(e=>{e&&(S(t=>t[e]===``?t:{...t,[e]:``}),_3({storageKey:e,value:``}))},[]),lt=(0,b.useCallback)(({fromStorageKey:e,toStorageKey:t})=>{if(!e||!t||e===t)return;let n=Object.prototype.hasOwnProperty.call($e.current,e)?$e.current[e]??``:g3(e);S(r=>{let i={...r,[t]:n};return delete i[e],i}),_3({storageKey:t,value:n}),_3({storageKey:e,value:``})},[]),ut=(0,b.useCallback)((e,t)=>{l(n=>{let r=n.findIndex(t=>t.id===e);if(r===-1)return n;let i=n[r];if(i.pending_memory_suggestion_count===t)return n;let a=[...n];return a[r]={...i,pending_memory_suggestion_count:t},a}),p(n=>!n||n.id!==e||n.pending_memory_suggestion_count===t?n:{...n,pending_memory_suggestion_count:t})},[]),ft=(0,b.useCallback)(async r=>{if(!e){l([]),d(null),p(null),_(!1),L(!1);return}F(!0);try{let i=await iO(e,r);if(r?.aborted)return;let a=A4(i),o=a[0]??null,s=t?.active_target_kind===`bundle`||n?.status!==`loading`;l(a),d(e=>Ie.current?null:e&&a.some(t=>t.id===e)?e:e?a[0]?.id??null:Ye.current?null:o?s?(Ye.current=!0,j3({activeProject:t,activeProjectBranchState:n,session:o})?o.id:null):null:(Ye.current=!0,null)),a.length===0&&_(!0)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load chat sessions right now.`)}finally{r?.aborted||(F(!1),L(!0))}},[t,n,e]),pt=(0,b.useCallback)(async(t,n)=>{if(!e){p(null);return}z(!0);try{let r=await oO(e,t,n);if(n?.aborted)return;p(r),at(r)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load the chat session right now.`)}finally{n?.aborted||z(!1)}},[e,at]),mt=(0,b.useCallback)(async(n,r)=>{if(!e||!t?.memory_enabled){de([]),fe(!1);return}fe(!0);try{let t=await dt(e,null,r,n);if(r?.aborted)return;de(t.suggestions),ut(n,t.suggestions.length)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load chat memory suggestions right now.`)}finally{r?.aborted||fe(!1)}},[t?.memory_enabled,e,ut]),ht=(0,b.useCallback)(()=>{de(e=>{let t=e.length>0?e.slice(0,-1):e;return u&&ut(u,t.length),t}),ge(e=>e+1),ft(),u&&pt(u)},[u,pt,ft,ut]);(0,b.useEffect)(()=>{let e=new AbortController;return ft(e.signal),()=>{e.abort()}},[ft]),(0,b.useEffect)(()=>{if(Ie.current||g||u||Ye.current||c.length===0||t?.active_target_kind!==`bundle`&&n?.status===`loading`)return;Ye.current=!0;let e=c[0]??null;e&&j3({activeProject:t,activeProjectBranchState:n,session:e})&&d(e.id)},[t,n,u,g,c]),(0,b.useEffect)(()=>{if(it!==`opencode`){w([]),D([]),se(!1);return}let t=new AbortController;return(async()=>{se(!0);try{let[n,r]=await Promise.all([_t(it,t.signal),bj(it,t.signal,e)]);w(n),D(r)}catch(e){T(e)||(w(e=>e),D(e=>e))}finally{t.signal.aborted||se(!1)}})(),()=>{t.abort()}},[e,it]),(0,b.useEffect)(()=>{if(g||!u){p(null);return}if(f?.id===u)return;p(null);let e=new AbortController;return pt(u,e.signal),()=>{e.abort()}},[f,u,g,pt]),(0,b.useEffect)(()=>{if(!t?.memory_enabled||g||!u){de([]),fe(!1);return}let e=new AbortController;return mt(u,e.signal),()=>{e.abort()}},[t?.memory_enabled,u,g,mt,he]),(0,b.useEffect)(()=>{!pe||K||ue.length>0||me(!1)},[K,pe,ue.length]),(0,b.useEffect)(()=>{if(!u||f?.agent_status!==`running`)return;let e=new AbortController,t=window.setInterval(()=>{Promise.all([ft(e.signal),pt(u,e.signal)])},P4);return()=>{e.abort(),window.clearInterval(t)}},[f?.agent_status,u,pt,ft]),(0,b.useEffect)(()=>{if(!e)return;let t=t=>{!t||t.project_id!==e||(t.id===u&&p(t),A3(t)&&at(t))},n=t=>{!t||t.project_id!==e||ot(t.id)};return DZ.on(`chat-session:created`,t),DZ.on(`chat-session:updated`,t),DZ.on(`chat-session:deleted`,n),()=>{DZ.off(`chat-session:created`,t),DZ.off(`chat-session:updated`,t),DZ.off(`chat-session:deleted`,n)}},[e,u,ot,at]),(0,b.useEffect)(()=>{g&&y(w3({projectId:e,tool:r}))},[e,r,g]),(0,b.useEffect)(()=>{if(it!==`opencode`){k(``),j(``),N([]);return}if(g){let n=T3({activeProjectId:e,helperModel:t?.helper_model??null,helperVariant:t?.helper_variant??null,activeTool:it,availableModels:C});k(n.model),j(n.variant),N([]);return}k(f?.model??t?.helper_model??``),j(f?.variant??t?.helper_variant??``),N(f?.skills??[])},[e,t?.helper_model,t?.helper_variant,f?.id,f?.model,f?.skills,f?.variant,C,it,g]),(0,b.useEffect)(()=>{let e=C.find(e=>e.id===O)??null;j(t=>e?e.variants.includes(t)?t:``:t)},[C,O]),(0,b.useEffect)(()=>{if(it!==`opencode`||!g||!O||A)return;let n=T3({activeProjectId:e,helperModel:t?.helper_model??null,helperVariant:t?.helper_variant??null,activeTool:it,availableModels:C});n.model===O&&n.variant&&j(n.variant)},[e,t?.helper_model,t?.helper_variant,it,C,g,O,A]),(0,b.useEffect)(()=>{if(!te)return;let e=f?.id===te?f:c.find(e=>e.id===te)??null;(!e||e.agent_status!==`running`)&&U(null)},[f,te,c]),(0,b.useEffect)(()=>{let e=Ze.current,n=f?.id??null,r=f?.agent_status??null;e.id===n&&e.status===`running`&&r===`done`&&t?.memory_enabled&&n&&ge(e=>e+1),Ze.current={id:n,status:r}},[t?.memory_enabled,e,f?.agent_status,f?.id,f?.title]),(0,b.useEffect)(()=>{u&&Pe(e=>{if(!e.has(u))return e;let t=new Set(e);return t.delete(u),t})},[u]),(0,b.useEffect)(()=>{je&&je.sessionId!==u&&Me(null)},[u,je]),(0,b.useEffect)(()=>{let e=Qe.current,t=new Map,n=[];for(let r of c){let i=e.get(r.id)??null,a=r.agent_status??null;i===`running`&&a===`done`&&r.id!==u&&n.push(r),t.set(r.id,a)}Qe.current=t,Pe(e=>{let t=new Set(e),r=!1,i=new Set(c.map(e=>e.id));for(let e of t)i.has(e)||(t.delete(e),r=!0);for(let e of c){let i=e.agent_status??null,a=n.some(t=>t.id===e.id);if((e.id===u||i!==`done`)&&t.delete(e.id)){r=!0;continue}a&&!t.has(e.id)&&(t.add(e.id),r=!0)}return r?t:e})},[e,u,c]);let gt=(0,b.useMemo)(()=>new Map(C.map(e=>[e.id,e.label])),[C]),vt=(0,b.useMemo)(()=>N4(c),[c]),yt=(0,b.useMemo)(()=>ne?c.find(e=>e.id===ne)??(f?.id===ne?f:null):null,[f,ne,c]);(0,b.useEffect)(()=>{ne&&!yt&&W(null)},[ne,yt]);let bt=(0,b.useMemo)(()=>f?s3({modelLabel:X4({availableModelsById:gt,model:f.model}),tool:f.tool}):null,[f,gt]),xt=(0,b.useMemo)(()=>f?(f.messages??[]).map(e=>({id:e.id,role:e.role,kind:e.kind,content:e.content,ticket_proposals:e.ticket_proposals??null,created_at:e.created_at,displayTitle:e.role===`assistant`?bt??Y4(f.tool):c3()})):[],[f,bt]),St=f?.id&&f.agent_status===`running`&&je?.sessionId===f.id?je.turnKey:null,Ct=it===`opencode`&&C.length>0,wt=it===`opencode`&&!Ct&&oe;(0,b.useEffect)(()=>{Fe.current={model:O,variant:A,skills:M,showModelSelector:Ct}},[O,M,A,Ct]);let Tt=(0,b.useMemo)(()=>C.find(e=>e.id===O)??null,[C,O]),Et=g?v:f?.mode??`build`,Dt=g?`New chat`:f?.title??`Chat`,Ot=g?r:f?.tool??r,kt=(0,b.useMemo)(()=>i3(),[]),At=Ct?O||null:f?.model??null,jt=X4({availableModelsById:gt,model:At}),Mt=(0,b.useMemo)(()=>{let e=f?.usage_snapshot_total_tokens??null;if(e===null)return null;let t=d3({tool:Ot,model:At,availableModels:C,fallbackContextWindow:f?.usage_snapshot_context_window??null});if(t===null)return null;let n=u3({totalTokens:e,contextWindow:t});return n===null?null:`${l3(e)} (${n}%)`},[f?.usage_snapshot_context_window,f?.usage_snapshot_total_tokens,C,At,Ot]),Nt=g?`draft:${e??`none`}:${r}`:f?.id,Pt=(0,b.useCallback)(()=>{Ie.current=!0,_(!0),y(w3({projectId:e,tool:r})),h(null),d(null),p(null),U(null),Me(null)},[e,r]),Ft=(0,b.useCallback)((e,t=null)=>{Ie.current=!1,_(!1),h(null),d(e),p(t)},[]),It=(0,b.useCallback)(async()=>{if(!(!f||!i)){h(f.id);try{await i(f)}catch(e){X.error(e instanceof Error?e.message:`Unable to restore the chat target right now.`)}finally{h(e=>e===f.id?null:e)}}},[f,i]),Lt=!!(f&&f.target_available!==!1&&!g&&!j3({activeProject:t,activeProjectBranchState:n,session:f})),Rt=Lt&&f?`This session targets ${N3(f)}, but the current target is ${P3({activeProject:t,activeProjectBranchState:n})}. Restore the session target to continue.`:null,zt=Lt&&m===null,Bt=(0,b.useCallback)(async r=>{h(r.id);let a=r;if(e)try{let t=await oO(e,r.id);a=t,at(t)}catch(e){X.error(e instanceof Error?e.message:`Unable to load the chat session right now.`),h(e=>e===r.id?null:e);return}if(a.target_available===!1){Ft(a.id,a);return}if(!j3({activeProject:t,activeProjectBranchState:n,session:a})&&i)try{if(!await i(a)){h(e=>e===a.id?null:e);return}}catch(e){X.error(e instanceof Error?e.message:`Unable to restore the chat target right now.`),h(e=>e===a.id?null:e);return}Ft(a.id,a)},[t,n,e,i,Ft,at]),Vt=(0,b.useCallback)(()=>{Ae(e=>e+1)},[]),Ht=(0,b.useCallback)(async t=>{if(g){let n=Fe.current;y(t),C3({projectId:e,tool:r,model:n.showModelSelector&&n.model||null,variant:n.showModelSelector&&n.model&&n.variant||null,mode:t}),Vt();return}if(!(!e||!f||f.mode===t||ae)){G(!0);try{let n=await sO(e,f.id,{mode:t});C3({projectId:e,tool:n.tool,model:n.model,variant:n.variant,mode:n.mode}),p(n),at(n),Vt()}catch(e){X.error(e instanceof Error?e.message:`Unable to update the chat mode right now.`)}finally{G(!1)}}},[e,f,r,Vt,g,ae,at]),Ut=(0,b.useCallback)(async({instruction:t,targetSession:n})=>{if(!e)return null;let r=Fe.current;Xe.current+=1;let i={sessionId:n.id,turnKey:`${n.id}:${Xe.current}`};Me(i);try{let i=await cO(e,n.id,{instruction:t,tool:n.tool,model:r.showModelSelector&&r.model||null,variant:r.showModelSelector&&r.model&&r.variant||null,skills:r.showModelSelector?r.skills:[]});return C3({projectId:e,tool:i.tool,model:i.model,variant:i.variant,mode:i.mode}),Ie.current=!1,p(i),d(i.id),_(!1),at(i),i}catch(e){throw Me(e=>e?.turnKey===i.turnKey?null:e),e}},[e,at]),Wt=(0,b.useCallback)(async()=>{if(!e)return null;let t=Fe.current,n=await aO(e,{mode:Et,tool:r,model:t.showModelSelector&&t.model||null,variant:t.showModelSelector&&t.model&&t.variant||null,skills:t.showModelSelector?t.skills:[]});return Ie.current=!1,_(!1),d(n.id),p(n),n},[e,r,Et]),Gt=(0,b.useCallback)(async t=>{if(!e||V||ee||f?.agent_status===`running`||f?.target_available===!1||zt)return!1;let n=t.trim();if(!n)return!1;H(!0);let r=null,i=f,a=e&&f?p3({projectId:e,tool:f.tool,chatSessionId:f.id}):null;try{let t=f;if(t||(B(!0),r=await Wt(),t=r,a=e&&r?p3({projectId:e,tool:r.tool,chatSessionId:r.id}):null,lt({fromStorageKey:nt,toStorageKey:a})),!t)return!1;ct(a??nt);let i=k3({session:t,instruction:n,createdAt:new Date().toISOString()});p(i),d(i.id),at(i);let o=await Ut({instruction:n,targetSession:t});return ct(o&&e?p3({projectId:e,tool:o.tool,chatSessionId:o.id}):a),!0}catch(e){throw st(a??nt,n),r?(p(r),d(r.id),_(!1),at(r)):i&&(p(i),at(i)),e}finally{B(!1),H(!1)}},[e,f,ct,Wt,nt,ee,V,lt,Ut,st,zt,at]),Kt=(0,b.useCallback)(async e=>{await Gt(e)},[Gt]),qt=!!(e&&(g||f&&f.target_available!==!1&&!zt)),Jt=f?.agent_status===`running`,Yt=f?.agent_status===`stopped`,Xt=Jt&&te===f?.id,Zt=qt&&!Jt&&!V&&!ee,Qt=qt?f?.target_available===!1?f.target_unavailable_reason??`Target unavailable for this chat session.`:zt?Rt??`Restore the session target to continue.`:Jt?`Wait for the current chat turn to finish before sending review comments.`:ee||V?`Wait for the current chat prompt to finish sending before submitting review comments.`:null:`Open or create a chat session to send review comments.`,$t=(0,b.useCallback)(async()=>{if(!(!e||!f||f.agent_status!==`running`||Xt)){U(f.id);try{await lO(e,f.id)}catch(e){U(e=>e===f.id?null:e),X.error(e instanceof Error?e.message:`Unable to interrupt the chat response right now.`)}}},[e,f,Xt]),en=(0,b.useCallback)(async()=>{if(!(!e||!yt||re)){ie(yt.id);try{await uO(e,yt.id),ot(yt.id)}catch(e){X.error(e instanceof Error?e.message:`Unable to delete the chat session right now.`),ie(e=>e===yt.id?null:e)}}},[e,re,ot,yt]),tn=(0,b.useMemo)(()=>(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(f_,{value:Et,items:[{value:`plan`,label:`Plan`,activeVariant:`ghost`,activeClassName:`border-transparent bg-sky-300 text-[#07111a] shadow-[0_10px_30px_rgba(125,211,252,0.24)] hover:bg-sky-200 hover:text-[#07111a]`,inactiveClassName:`border-transparent text-white/85 hover:bg-white/8 hover:text-white`,inactiveTooltip:(0,q.jsx)(o3,{label:`Switch to Plan`,modifierLabel:kt,keys:[U4]})},{value:`build`,label:`Build`,activeVariant:`ghost`,activeClassName:`border-transparent bg-emerald-400 text-[#07130d] shadow-[0_10px_30px_rgba(16,185,129,0.28)] hover:bg-emerald-300 hover:text-[#07130d]`,inactiveClassName:`border-transparent text-white/85 hover:bg-white/8 hover:text-white`,inactiveTooltip:(0,q.jsx)(o3,{label:`Switch to Build`,modifierLabel:kt,keys:[U4]})}],disabled:ae,onChange:e=>{Ht(e)}}),Jt?(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`outline`,className:`gap-2`,disabled:Xt,onClick:()=>{$t()},children:[Xt?(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}):(0,q.jsx)(D_,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:Xt?`Interrupting...`:`Interrupt`})]}):null]}),[kt,Et,$t,Ht,Xt,Jt,ae]),nn=(0,b.useMemo)(()=>Ct?(0,q.jsx)(sV,{model:O,variant:A,skills:M,showModelSelector:!0,showSkillsSelector:!0,availableModels:C,availableSkills:E,selectedModel:Tt,onModelChange:e=>{let t=C.find(t=>t.id===e)??null;k(e),j(e=>t&&t.variants.includes(e)?e:``)},onVariantChange:j,onSkillsChange:N,modelSelectId:`project-chat-model-selector`,variantSelectId:`project-chat-variant-selector`,skillsSelectId:`project-chat-skills-selector`,disabled:V||ee||f?.agent_status===`running`}):wt?(0,q.jsx)(oV,{dataTestId:`chat-model-selector-skeleton`}):null,[f?.agent_status,C,E,ee,V,Tt,O,M,A,Ct,wt]);(0,b.useEffect)(()=>{if(a)return()=>{a(null)}},[a]),(0,b.useEffect)(()=>{if(a){if(!e||!qt){a(null);return}a({chatSessionId:f?.id??null,canSubmitReviewPrompt:Zt,reviewSubmitDisabledReason:Qt,mode:Et,onModeChange:Ht,isUpdatingMode:ae,promptPlaceholder:Q4(Et),promptComposerControls:tn,promptComposerInlineControls:nn,submitPrompt:Kt})}},[e,f,Zt,Et,Ht,Kt,qt,ae,a,tn,nn,Qt]);let rn=async()=>{if(rt.trim())try{if(!await Gt(rt))return}catch(e){X.error(e instanceof Error?e.message:`Unable to send the chat prompt right now.`)}},an=e=>{e.key!==`Enter`||e.shiftKey||f?.agent_status===`running`||ee||V||(e.preventDefault(),rn())};(0,b.useEffect)(()=>{let t=t=>{if(n3(t)){if(!e||ee||V)return;t.preventDefault(),Pt(),Vt();return}t3(t)&&(!e||!g&&!f||(t.preventDefault(),Ht(e3(Et))))};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t)}},[e,f,Et,Vt,Pt,Ht,ee,g,V]);let on=(0,b.useCallback)(async t=>{if(!(!e||!f)){le(t);try{let n=await pO(e,f.id,t);p(n.chatSession),at(n.chatSession),X.success(`Created ${n.created_tickets.length} ticket${n.created_tickets.length===1?``:`s`} from chat.`)}catch(e){X.error(e instanceof Error?e.message:`Unable to create tickets from the chat proposal right now.`)}finally{le(e=>e===t?null:e)}}},[e,f,at]),sn=(0,b.useCallback)(e=>{if(!Re.current)return;let t=Re.current.getBoundingClientRect().width,n=J4(e,t);Je.current=n,Be.current&&(Be.current.style.setProperty(`--chat-changes-panel-width`,`${n}px`),Be.current.setAttribute(`data-desktop-width`,String(n)))},[]),cn=(0,b.useCallback)(()=>{Ue.current?.(),Ue.current=null},[]),ln=(0,b.useCallback)(e=>{let t=Ve.current,n=He.current,r=We.current;if(t!==null){if(Ve.current=null,He.current=null,We.current=!1,we(!1),Ee(!1),cn(),e!==null&&typeof ze.current?.hasPointerCapture==`function`&&ze.current.hasPointerCapture(e)&&typeof ze.current.releasePointerCapture==`function`&&ze.current.releasePointerCapture(e),n===`collapsed`){if(!r)return;Oe(Je.current),Se(!0);return}Oe(Je.current)}},[cn]),un=(0,b.useCallback)((e,t)=>{if(Ve.current!==e)return;let n=t-Ke.current,r=qe.current-n;if(He.current===`collapsed`){if(!We.current&&r<H4)return;We.current||(We.current=!0,Ge.current=!0,Ee(!0),we(!0))}sn(r)},[sn]),dn=(0,b.useCallback)((e,t)=>{if(Ve.current===e){if(t!==null&&(He.current===`inline`||We.current)){let e=t-Ke.current;sn(qe.current-e)}ln(e)}},[ln,sn]),fn=(0,b.useCallback)(e=>{if(!s)return;e.preventDefault(),Ve.current=e.pointerId,He.current=xe?`inline`:`collapsed`,We.current=!1,Ge.current=!1,Ke.current=e.clientX,qe.current=xe?Je.current:0,we(xe),cn(),typeof e.currentTarget.setPointerCapture==`function`&&e.currentTarget.setPointerCapture(e.pointerId);let t=e=>{un(e.pointerId,e.clientX)},n=e=>{dn(e.pointerId,e.clientX)},r=e=>{dn(e.pointerId,e.clientX)};window.addEventListener(`pointermove`,t),window.addEventListener(`pointerup`,n),window.addEventListener(`pointercancel`,r),Ue.current=()=>{window.removeEventListener(`pointermove`,t),window.removeEventListener(`pointerup`,n),window.removeEventListener(`pointercancel`,r)}},[dn,un,xe,s,cn]),pn=(0,b.useCallback)(e=>{un(e.pointerId,e.clientX)},[un]),mn=(0,b.useCallback)(e=>{dn(e.pointerId,e.clientX)},[dn]),hn=(0,b.useCallback)(e=>{dn(e.pointerId,e.clientX)},[dn]),gn=(0,b.useCallback)(e=>{Ve.current===e.pointerId&&ln(e.pointerId)},[ln]),_n=(0,b.useCallback)(()=>{if(Ge.current){Ge.current=!1;return}Se(!0)},[]),vn=(0,b.useCallback)(()=>{Se(!1)},[]),yn=(0,b.useCallback)(e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),_n())},[_n]);(0,b.useEffect)(()=>{s||(Ve.current=null,He.current=null,We.current=!1,Ge.current=!1,we(!1),Ee(!1),cn())},[s,cn]),(0,b.useEffect)(()=>()=>{cn()},[cn]);let bn=!!u,xn=f?.target_available===!1,Sn=xn?f?.target_unavailable_reason??`Target unavailable for this chat session.`:null,Cn=g||!!(f&&f.target_available!==!1&&!zt),wn=!!(t?.memory_enabled&&f&&(ue.length>0||K)),Tn=s&&(g||bn)&&!xn&&!zt,En=Tn&&!xe&&!Te,Dn=Tn&&(xe||Te),On=`${Nt??`none`}:${Tn?`changes-enabled`:`changes-disabled`}:${Dn?`panel-visible`:`panel-hidden`}`,kn=f||g?(0,q.jsx)(q.Fragment,{children:(0,q.jsx)(h4,{projectId:e,messages:f?xt:[],internalLog:f?.agent_log??null,pendingAgentTitle:bt,streamingResponse:f?.streaming_response??null,isRunning:f?.agent_status===`running`,isLoading:!g&&R,canShowComposer:Cn,isExternallyResizing:o||Ce,pendingAgentRevealKey:St,pendingAgentRevealDelayMs:q4,composerFocusNonce:ke,header:(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`h3`,{className:`truncate text-sm font-semibold text-foreground`,children:Dt}),(0,q.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[g?null:(0,q.jsx)(PM,{tool:f?.tool,className:`text-[11px]`}),jt?(0,q.jsx)(`p`,{children:jt}):null,Yt?(0,q.jsx)(`div`,{className:`inline-flex items-center rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-100`,children:`Interrupted`}):null,Mt?(0,q.jsx)(`div`,{"data-testid":`chat-context-usage-badge`,className:`inline-flex items-center rounded-full border border-border/80 bg-muted/40 px-2 py-0.5 text-[11px] font-medium text-foreground`,children:Mt}):null]})]}),wn?(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`outline`,className:`gap-2`,onClick:()=>me(!0),children:K?`Loading memory...`:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:`Memory suggestions`}),(0,q.jsx)(_4,{children:ue.length})]})}):null]}),zt&&Rt?(0,q.jsx)(`div`,{className:`w-fit max-w-md rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-50`,children:(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`div`,{children:Rt}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>{It()},children:`Switch back`}),(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,onClick:Pt,children:`New session`})]})]})}):null,xn&&Sn?(0,q.jsx)(`div`,{className:`w-fit max-w-md rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-50`,children:Sn}):null]}),composerControls:tn,composerInlineControls:nn,composerTheme:Et,layoutKey:Nt,scrollLayoutKey:On,followUpPrompt:rt,followUpPlaceholder:Q4(Et),emptyStateText:null,renderMessageFooter:e=>e.ticket_proposals?(0,q.jsx)(L3,{proposals:e.ticket_proposals,isApplying:ce===e.id,onApply:()=>{on(e.id)}}):null,isSendingFollowUp:V||ee,followUpDisabledReason:xn?Sn??void 0:f?.agent_status===`running`?`Wait for the current chat turn to finish.`:void 0,onFollowUpPromptChange:e=>{st(nt,e)},onFollowUpKeyDown:an,onFollowUpSubmit:()=>{rn()}})}):bn?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-sm text-muted-foreground`,children:`Loading chat session...`}):!I||P?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-sm text-muted-foreground`,children:`Loading chat sessions...`}):(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6`,children:(0,q.jsxs)(Bv,{className:`w-full max-w-lg border-dashed border-border/70 bg-card/40`,children:[(0,q.jsxs)(Vv,{children:[(0,q.jsx)(Hv,{children:`No session selected`}),(0,q.jsx)(Uv,{children:`Select a chat session to restore its saved target, or start a new session on the current target.`})]}),(0,q.jsx)(Gv,{children:(0,q.jsx)(Y,{type:`button`,onClick:Pt,disabled:!e||ee||V,children:`Start new session`})})]})}),An=Tn?(0,q.jsx)(`div`,{ref:ze,"aria-label":En?`Open diff`:`Resize diff panel`,"aria-orientation":En?void 0:`vertical`,className:J(En?`group flex h-8 w-full shrink-0 touch-none select-none items-center justify-center border-t border-border/70 bg-background/90 text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground xl:h-auto xl:w-7 xl:cursor-col-resize xl:border-l xl:border-t-0`:`group hidden w-5 shrink-0 cursor-col-resize touch-none select-none items-center justify-center border-l border-border/70 bg-background/80 transition-colors xl:flex`,Ce&&!En&&`bg-background`),"data-testid":En?`collapsed-changes-rail`:void 0,onLostPointerCapture:gn,onPointerCancel:hn,onPointerDown:fn,onPointerMove:pn,onPointerUp:mn,onClick:En?_n:void 0,onKeyDown:En?yn:void 0,role:En?`button`:`separator`,tabIndex:En?0:void 0,children:En?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`hidden h-full w-full items-center justify-center xl:flex`,children:(0,q.jsxs)(`span`,{className:`relative flex h-full w-full items-center justify-center`,children:[(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-[2.65rem] items-center justify-center text-sky-400/80 transition-colors group-hover:text-sky-300`,children:(0,q.jsx)(S_,{className:`h-3 w-3 shrink-0`})}),(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 h-14 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-muted-foreground/70 transition-colors group-hover:bg-sky-300/90`})]})}),(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-xs font-medium xl:hidden`,children:[(0,q.jsx)(S_,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:`Diff`})]})]}):(0,q.jsx)(`div`,{className:J(`h-14 w-1.5 rounded-full transition-colors`,Ce?`bg-sky-300/90`:`bg-muted-foreground/70 group-hover:bg-sky-300/90`)})}):null,jn=pe&&e&&t?.memory_enabled?(0,q.jsx)(Lv,{onClose:()=>me(!1),overlayClassName:`bg-background/45 p-4 backdrop-blur-sm`,panelClassName:`w-full max-w-3xl`,renderContent:({closeButton:t})=>(0,q.jsxs)(Bv,{size:`sm`,className:`max-h-[calc(100vh-2rem)] w-full gap-0 overflow-hidden border-border/80 bg-card/95 shadow-2xl`,children:[(0,q.jsxs)(Vv,{className:`border-b border-border/80 pb-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(Hv,{children:`Memory suggestions`}),(0,q.jsx)(Uv,{children:`Review pending suggestions from this chat before saving them into project memory.`})]}),(0,q.jsx)(Wv,{children:t})]}),(0,q.jsx)(Gv,{className:`min-h-0 flex-1 overflow-y-auto pt-4`,children:(0,q.jsx)(w4,{projectId:e,suggestions:ue,emptyState:`No pending memory suggestions for this chat session.`,onSuggestionsChanged:ht})})]}),closeButtonLabel:`Close memory suggestions`}):null,Mn=yt?(0,q.jsx)(F3,{title:yt.title,isDeleting:re===yt.id,onConfirm:()=>{en()},onCancel:()=>{re!==yt.id&&W(null)}}):null;return(0,q.jsxs)(`div`,{"data-testid":`chat-view-shell`,className:`relative flex min-h-0 flex-1 overflow-hidden border-t border-border/70`,children:[(0,q.jsx)(I3,{activeProject:t,activeSessionId:u,chatModeShortcutModifierLabel:kt,confirmingDeleteSessionId:ne,deletingSessionId:re,finishedBackgroundSessionIds:Ne,isCreatingSession:ee||!e,isDraftOpen:g,isLoadingSessions:P,isOpen:ye,isSendingPrompt:V,sessionGroups:vt,sessions:c,onConfirmDeleteSession:e=>{W(e)},onDraftOpen:Pt,onSessionSelect:e=>{Bt(e)},onToggleOpen:()=>{be(e=>!e)}}),(0,q.jsxs)(`div`,{ref:Re,className:`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden xl:flex-row`,children:[(0,q.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:kn}),Tn?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(d_,{content:`Open diff`,disabled:!En,side:`left`,children:An}),Dn?(0,q.jsx)(m4,{projectId:e,chatSessionId:g?null:u,canSubmitReviewPrompt:Zt,reviewSubmitDisabledReason:Qt,onSubmitReviewPrompt:Kt,state:_e,onStateChange:ve,isResizing:Ce,onClose:vn,desktopWidth:De,panelElementRef:Be}):null]}):null]}),jn,Mn]})},z3=({className:e})=>(0,q.jsx)(dh,{"aria-hidden":`true`,className:e}),B3=({activeProject:e})=>e?(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-6`,children:(0,q.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,q.jsx)(`div`,{className:`border-b border-border/60 pb-4`,children:(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.24em] text-muted-foreground`,children:`Memory archive`}),(0,q.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:e.name})]})}),(0,q.jsx)(jb,{mode:`edit`,projectId:e.id,memoryEnabled:e.memory_enabled,persistedMemoryEnabled:e.memory_enabled,onMemoryEnabledChange:()=>{},showActivationControls:!1,archiveLayout:!0})]})}):(0,q.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Select a project to view memory.`}),V3=()=>({hasRunning:!1,hasFinishedUnseen:!1,hasErrorUnseen:!1}),H3=()=>({board:V3(),memory:V3(),chat:V3()}),U3=(e,t)=>{let n=e[t];return!n.hasFinishedUnseen&&!n.hasErrorUnseen?e:{...e,[t]:{...n,hasFinishedUnseen:!1,hasErrorUnseen:!1}}},W3=e=>({hasRunning:e.board.hasRunning||e.chat.hasRunning,hasFinishedUnseen:e.board.hasFinishedUnseen||e.chat.hasFinishedUnseen,hasErrorUnseen:e.board.hasErrorUnseen||e.chat.hasErrorUnseen}),G3=e=>e.hasErrorUnseen?`error`:e.hasRunning?`running`:e.hasFinishedUnseen?`finished`:null,K3=(e,t)=>t?null:G3(e),q3=320,J3=.7,Y3=28,X3=6,Z3=(e,t)=>{let n=Math.max(q3,Math.round(t*J3));return Math.max(q3,Math.min(n,Math.round(e)))},Q3=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[...e,t];let r=e.slice();return r[n]=t,r},$3=(e,t)=>{if(t.type===`reset`)return H3();if(t.type===`mark-workspace-visible`)return U3(e,t.workspace);let n=e[t.workspace],r={...n,hasRunning:t.activity.hasRunning,hasFinishedUnseen:t.visibleWorkspace===t.workspace?!1:n.hasFinishedUnseen||t.activity.didFinish,hasErrorUnseen:t.visibleWorkspace===t.workspace?!1:n.hasErrorUnseen||t.activity.didError};return n.hasRunning===r.hasRunning&&n.hasFinishedUnseen===r.hasFinishedUnseen&&n.hasErrorUnseen===r.hasErrorUnseen?e:{...e,[t.workspace]:r}},e6=({activeProjectId:e,onActivity:t})=>{let{tickets:n}=v2(),r=(0,b.useRef)(new Map);return(0,b.useEffect)(()=>{r.current=new Map},[e]),(0,b.useEffect)(()=>{let e=r.current,i=new Map,a=!1,o=!1;for(let t of n){let n=e.get(t.id)??null,r=t.agent_status??null;n===`running`&&r===`done`&&(a=!0),n===`running`&&r===`error`&&(o=!0),i.set(t.id,r)}r.current=i,t({hasRunning:n.some(e=>e.agent_status===`running`),didFinish:a,didError:o})},[t,n]),null},t6=({activeProjectId:e,onActivity:t})=>{let[n,r]=(0,b.useState)([]),i=(0,b.useRef)(new Map);return(0,b.useEffect)(()=>{if(!e)return;let t=new AbortController;return(async()=>{try{let n=await iO(e,t.signal);if(t.signal.aborted)return;r(n)}catch(e){T(e)}})(),()=>{t.abort()}},[e]),(0,b.useEffect)(()=>{if(!e)return;let t=new AbortController,n=F$(()=>{document.visibilityState===`visible`&&iO(e,t.signal).then(e=>{t.signal.aborted||r(e)}).catch(e=>{T(e)})});return()=>{t.abort(),n()}},[e]),(0,b.useEffect)(()=>{if(!e)return;let t=t=>{!t||t.project_id!==e||r(e=>Q3(e,t))},n=t=>{!t||t.project_id!==e||r(e=>e.filter(e=>e.id!==t.id))};return DZ.on(`chat-session:created`,t),DZ.on(`chat-session:updated`,t),DZ.on(`chat-session:deleted`,n),()=>{DZ.off(`chat-session:created`,t),DZ.off(`chat-session:updated`,t),DZ.off(`chat-session:deleted`,n)}},[e]),(0,b.useEffect)(()=>{let r=i.current,a=new Map,o=[],s=!1;for(let e of n){let t=r.get(e.id)??null,n=e.agent_status??null;t===`running`&&n===`done`&&o.push(e),t===`running`&&n===`error`&&(s=!0),a.set(e.id,n)}i.current=a;for(let e of o)e.title&&u2(`Chat response ready`,e.title);o.length>0&&e&&M$(e),t({hasRunning:n.some(e=>e.agent_status===`running`),didFinish:o.length>0,didError:s})},[e,t,n]),null},n6=({activeProjectId:e,activeProject:t=null,activeProjectBranchState:n=null,activeRun:r,activeTool:i,onRestoreChatSessionTarget:a,onChatReviewCapabilityChange:o,onPreviewReviewCapabilityChange:s,previewDisplayMode:c=`hidden`,previewPane:l=null,previewPaneWidth:u=480,isPreviewButtonDisabled:d=!1,previewButtonTitle:f,visibleWorkspace:p,onProjectUsageChange:m,onBundlesChange:h,onBundlesLoadingChange:g,onBoardLoadedProjectIdChange:_,onPreviewToggle:v,onPreviewPaneWidthChange:y,onRunStopped:x,onRunStatusChange:S,onWorkspaceActivityChange:C,onWorkspaceActivityEvent:w,refreshKey:T=0})=>{let E=(0,b.useRef)(null),D=(0,b.useRef)(null),O=(0,b.useRef)(null),k=(0,b.useRef)(null),A=(0,b.useRef)(!1),j=(0,b.useRef)(!1),M=(0,b.useRef)(0),N=(0,b.useRef)(u),P=(0,b.useRef)(u),F=p===`board`||p===`chat`,I=l!==null,[L,R]=(0,b.useState)(!1),[z,ee]=(0,b.useState)(!1),[B,V]=(0,b.useState)(u),[H,te]=(0,b.useReducer)($3,void 0,H3),U=F&&I&&c===`expanded`,ne=F&&I&&c===`inline`,W=F&&I&&c===`hidden`&&!z,re=(ne||z)&&!U,ie=U||re,ae=F&&I&&!U,G=L?B:u,oe=p!==`chat`||!re,se=e=>{let t=O.current,n=k.current,r=A.current;if(t!==null){if(O.current=null,k.current=null,A.current=!1,R(!1),ee(!1),e!==null&&D.current?.hasPointerCapture(e)&&D.current.releasePointerCapture(e),n===`collapsed`){if(!r)return;y?.(P.current),v?.();return}y?.(P.current)}},ce=e=>{if(!E.current)return;let t=E.current.getBoundingClientRect().width,n=Z3(e,t);P.current=n,V(n)},le=e=>{y&&(W&&d||(e.preventDefault(),O.current=e.pointerId,k.current=W?`collapsed`:`inline`,A.current=!1,j.current=!1,M.current=e.clientX,N.current=W?0:P.current,R(!W),e.currentTarget.setPointerCapture(e.pointerId)))},ue=e=>{if(O.current!==e.pointerId)return;let t=e.clientX-M.current,n=N.current-t;if(k.current===`collapsed`){if(!A.current&&n<X3)return;A.current||(A.current=!0,j.current=!0,ee(!0),R(!0))}ce(n)},de=e=>{if(O.current===e.pointerId){if(k.current===`inline`||A.current){let t=e.clientX-M.current;ce(N.current-t)}se(e.pointerId)}},K=e=>{O.current===e.pointerId&&se(e.pointerId)},fe=(0,b.useCallback)((e,t)=>{w?.(e,t),te({type:`update-workspace`,workspace:e,activity:t,visibleWorkspace:p})},[w,p]);(0,b.useEffect)(()=>{te({type:`reset`})},[e]),(0,b.useEffect)(()=>{p!==`memory`&&te({type:`mark-workspace-visible`,workspace:p})},[p]),(0,b.useEffect)(()=>{C?.(H)},[C,H]),(0,b.useEffect)(()=>{L||(P.current=u),!I&&(O.current=null,k.current=null,A.current=!1,j.current=!1,P.current=u)},[I,L,u]);let pe=()=>{if(j.current){j.current=!1;return}d||v?.()};return(0,q.jsx)(_2,{activeProjectId:e,refreshKey:T,onLoadedProjectIdChange:_,onProjectUsageChange:m,onBundlesChange:h,onBundlesLoadingChange:g,children:(0,q.jsxs)(`div`,{ref:E,className:`flex min-h-0 flex-1 flex-col`,children:[(0,q.jsx)(e6,{activeProjectId:e,onActivity:e=>{fe(`board`,e)}}),(0,q.jsx)(t6,{activeProjectId:e,onActivity:e=>{fe(`chat`,e)}}),p===`memory`?(0,q.jsx)(`div`,{id:`project-workspace-panel-memory`,role:`tabpanel`,"aria-labelledby":`project-workspace-tab-memory`,className:`flex min-h-0 flex-1 flex-col`,children:(0,q.jsx)(B3,{activeProject:t})}):(0,q.jsxs)(`div`,{id:p===`chat`?`project-workspace-panel-chat`:`project-workspace-panel-board`,role:`tabpanel`,"aria-labelledby":p===`chat`?`project-workspace-tab-chat`:`project-workspace-tab-board`,className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:[(0,q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:p===`chat`?(0,q.jsx)(R3,{activeProjectId:e,activeProject:t,activeProjectBranchState:n,activeTool:i,isExternallyResizing:L,onRestoreSessionTarget:a,onReviewCapabilityChange:o,showChangesPanel:oe}):(0,q.jsx)(X2,{activeProjectId:e,activeProject:t,activeProjectBranchState:n,activeRun:r,activeTool:i,onPreviewReviewCapabilityChange:s,onRunStopped:x,onRunStatusChange:S,refreshKey:T})}),[ae?(0,q.jsx)(d_,{content:d?f??`Preview unavailable`:`Open preview`,disabled:!W,side:`left`,children:(0,q.jsx)(`div`,{"aria-label":W?f??`Show preview`:`Resize preview pane`,"aria-orientation":W?void 0:`vertical`,className:W?`group flex shrink-0 touch-none select-none items-center justify-center border-l border-border/70 bg-background/90 transition-colors ${d?`cursor-not-allowed text-muted-foreground/60`:`cursor-col-resize text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`:`group flex w-5 shrink-0 cursor-col-resize touch-none select-none items-center justify-center border-l border-border/70 bg-background/80 ${L?`bg-background`:``}`,"data-preview-divider":`true`,"data-testid":W?`collapsed-preview-rail`:void 0,onLostPointerCapture:K,onPointerCancel:de,onPointerDown:le,onPointerMove:ue,onPointerUp:de,onClick:W?pe:void 0,onKeyDown:W?e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),pe())}:void 0,ref:D,role:W?`button`:`separator`,style:W?{width:`${Y3}px`}:void 0,tabIndex:W?d?-1:0:void 0,children:W?(0,q.jsxs)(`span`,{className:`relative flex h-full w-full items-center justify-center`,children:[(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-[2.65rem] items-center justify-center text-sky-400/80 transition-colors group-hover:text-sky-300`,children:(0,q.jsx)(z3,{className:`h-3 w-3 shrink-0`})}),(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 h-14 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-muted-foreground/70 transition-colors group-hover:bg-sky-300/90`})]}):(0,q.jsx)(`div`,{className:`h-14 w-1.5 rounded-full transition-colors ${L?`bg-sky-300/90`:`bg-muted-foreground/70 group-hover:bg-sky-300/90`}`})})},`preview-divider`):null,ie?(0,q.jsx)(`div`,{className:U?`fixed inset-0 z-50 bg-black/70 p-4 sm:p-6`:`min-h-0 shrink-0 border-l border-border/70 bg-[#11131a]`,style:U?void 0:{width:`${G}px`},children:(0,q.jsx)(`div`,{className:`h-full w-full`,children:l})},`preview-container`):null]]})]})})},r6=({isExpanded:e,isVisible:t,project:n,onClose:r,onToggleExpanded:i})=>(0,q.jsx)(`div`,{className:[`fixed inset-x-4 bottom-24 z-40`,e?`top-20`:`h-[min(28rem,calc(100vh-8rem))]`,t?`block`:`hidden`].join(` `),children:(0,q.jsx)(AZ,{createSession:()=>AM(n.id),isExpanded:e,isVisible:t,ariaLabel:`Project terminal for ${n.name}`,title:n.name,closeLabel:`Close terminal`,className:e?`h-full w-full rounded-2xl shadow-2xl`:`mx-auto h-full max-w-6xl shadow-2xl`,onClose:r,onToggleExpanded:i})}),i6=({activeWorkspace:e,activityByWorkspace:t,memoryEnabled:n=!1,onWorkspaceChange:r})=>(0,q.jsx)(`div`,{role:`tablist`,"aria-label":`Project workspace`,className:`inline-flex items-end gap-1 border-b border-border/70`,children:(n?[`board`,`chat`,`memory`]:[`board`,`chat`]).map(n=>{let i=e===n,a=K3(t[n],i),o=n===`board`?`border-sky-300/70 bg-sky-500/8 text-sky-200`:n===`memory`?`border-amber-300/70 bg-amber-500/8 text-amber-200`:`border-emerald-300/70 bg-emerald-500/8 text-emerald-200`;return(0,q.jsx)(`button`,{id:`project-workspace-tab-${n}`,type:`button`,role:`tab`,"aria-selected":i,"aria-controls":`project-workspace-panel-${n}`,tabIndex:i?0:-1,className:J(`cursor-pointer rounded-t-lg border-b-2 px-4 py-2.5 text-[15px] font-medium transition-colors duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60`,i?o:`border-transparent text-muted-foreground hover:border-border hover:bg-background/35 hover:text-foreground`),onClick:()=>r(n),children:(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:n===`board`?`Board`:n===`memory`?`Memory`:`Chat`}),(0,q.jsx)($2,{state:a,className:`mt-0`})]})},n)})}),a6=32,o6=5.5,s6=2,c6=24,l6=8,u6=new Map,d6={running:{fill:`#fcd34d`,stroke:`#f59e0b`},finished:{fill:`#34d399`,stroke:`#059669`},error:{fill:`#fb7185`,stroke:`#e11d48`}},f6=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`),p6=e=>{if(!e)return null;let t=e.trim().match(/^([0-9]+(?:\.[0-9]+)?)/);return t?Number(t[1]):null},m6=e=>{let t=new DOMParser().parseFromString(e,`image/svg+xml`);if(t.querySelector(`parsererror`))return null;let n=t.documentElement;if(n.nodeName.toLowerCase()!==`svg`)return null;let r=n.getAttribute(`viewBox`)?.trim(),i=p6(n.getAttribute(`width`)),a=p6(n.getAttribute(`height`)),o=r??(i&&a?`0 0 ${i} ${a}`:`0 0 ${a6} ${a6}`);return`<svg ${[Array.from(n.attributes).filter(e=>![`width`,`height`,`viewBox`,`x`,`y`,`preserveAspectRatio`].includes(e.name)).map(e=>`${e.name}="${f6(e.value)}"`).join(` `),`x="0"`,`y="0"`,`width="${a6}"`,`height="${a6}"`,`viewBox="${f6(o)}"`,`preserveAspectRatio="xMidYMid meet"`].filter(e=>e.length>0).join(` `)}>${n.innerHTML}</svg>`},h6=async e=>{if(!e)return null;let t=u6.get(e);if(t)return t;let n=(async()=>{try{if(e.startsWith(`data:image/svg+xml,`))return m6(decodeURIComponent(e.slice(19)));if(e.startsWith(`data:image/svg+xml;base64,`))return m6(atob(e.slice(26)));let t=await fetch(e);return t.ok?m6(await t.text()):null}catch{return null}})();return u6.set(e,n),n},g6=async(e,t)=>{let{fill:n,stroke:r}=d6[e],i=await h6(t);return i?[`<svg xmlns="http://www.w3.org/2000/svg" width="${a6}" height="${a6}" viewBox="0 0 ${a6} ${a6}">`,i,`<circle cx="${c6}" cy="${l6}" r="${o6}" fill="${n}" stroke="${r}" stroke-width="${s6}"/>`,`</svg>`].join(``):null},_6=async(e,t)=>{if(!e)return t;let n=await g6(e,t);return n?`data:image/svg+xml,${encodeURIComponent(n)}`:t},v6=()=>{let e=document.querySelector(`link[rel="icon"]`);if(e)return e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),t},y6=({defaultHref:e,state:t})=>{let n=v6(),r=Number(n.dataset.browserTabActivityRequestId??`0`)+1;if(n.dataset.browserTabActivityState=t??`default`,n.dataset.browserTabActivityRequestId=String(r),!t){if(e){n.href=e;return}n.removeAttribute(`href`);return}_6(t,e).then(e=>{if(n.dataset.browserTabActivityRequestId===String(r)){if(e){n.href=e;return}n.removeAttribute(`href`)}})},b6=`archon.active-project-id`,x6=`archon.workspace-by-project`,S6=`archon.preview-mode-by-project`,C6=`archon.dismissed-preview-run-context-by-project`,w6=5e3,T6=`archon.preview-pane-width`,E6=`archon.preview-viewport-preset`,D6=`archon.preview-zoom`,O6=480,k6=`responsive`,A6=1,j6={hasMounted:!1,isOpen:!1,isExpanded:!1},M6=`hidden`,N6=(0,b.lazy)(()=>PZ(()=>Promise.resolve().then(()=>H1).then(e=>({default:e.TicketChangesModal})),void 0)),P6=e=>{if(!e)return null;try{return JSON.parse(e)}catch{return null}},F6=e=>{let t=P6(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0):[]},I6=e=>{let t=P6(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=typeof t.name==`string`?t.name:``,r=typeof t.cmd==`string`?t.cmd:``,i=typeof t.cwd==`string`?t.cwd:``;return n.trim()===``&&r.trim()===``&&i.trim()===``?[]:[{name:n,cmd:r,cwd:i}]}):[]},L6=e=>{let t=P6(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=typeof t.source==`string`?t.source:``,r=typeof t.target==`string`?t.target:``,i=t.mode===`copy`||t.mode===`symlink`?t.mode:`copy`;return n.trim()===``&&r.trim()===``?[]:[{source:n,target:r,mode:i}]}):[]},R6=e=>({name:e.name,repoPath:e.repo_path,linkedProjectIds:e.linked_project_ids,runSetup:F6(e.run_setup),runServices:I6(e.run_services),runIde:e.run_ide??``,previewServiceName:e.preview_service_name??``,previewPath:e.preview_path??``,previewCapabilityMode:e.preview_capability_mode??`auto`,helperModel:e.helper_model??``,helperVariant:e.helper_variant??``,commitMessageRules:e.commit_message_rules??``,autoParkStaleTickets:e.auto_park_stale_tickets,memoryEnabled:e.memory_enabled,worktreeSync:L6(e.worktree_sync)}),z6=e=>{let t=e.previewServiceName?.trim()||null,n=e.previewPath?.trim()||``,r=n===``||n===`/`?null:n,i=t||r||e.previewCapabilityMode===`force_web`||e.previewCapabilityMode===`force_disabled`?e.previewCapabilityMode??`auto`:null;return{name:e.name,repo_path:e.repoPath,linked_project_ids:e.linkedProjectIds,run_setup:e.runSetup.length>0?e.runSetup:null,run_services:e.runServices.length>0?e.runServices.map(e=>({...e.name?{name:e.name}:{},cmd:e.cmd,...e.cwd?{cwd:e.cwd}:{}})):null,run_ide:e.runIde||null,preview_service_name:t,preview_path:r,preview_capability_mode:i,helper_model:e.helperModel||null,helper_variant:e.helperModel&&e.helperVariant||null,commit_message_rules:e.commitMessageRules||null,auto_park_stale_tickets:e.autoParkStaleTickets,memory_enabled:e.memoryEnabled,worktree_sync:e.worktreeSync.length>0?e.worktreeSync.map(e=>({source:e.source,...e.target?{target:e.target}:{},mode:e.mode})):null}},B6=e=>e?F6(e.run_setup).length>0||I6(e.run_services).length>0||(e.run_ide?.trim().length??0)>0:!1,V6=(e,t,n)=>`${e} ${e===1?t:n}`,H6=e=>{if(!e.repo_path_locked)return null;let t=[];return e.ticket_count>0&&t.push(V6(e.ticket_count,`ticket is attached`,`tickets are attached`)),e.worktree_count>0&&t.push(V6(e.worktree_count,`worktree exists`,`worktrees exist`)),t.length===0?`Repository path is locked for this project.`:`Repository path is locked because ${t.join(` and `)}.`},U6=(e,t)=>{if(t.length<=1)return`Keep at least one project in Archon.`;let n=[];e.ticket_count>0&&n.push(V6(e.ticket_count,`ticket is attached`,`tickets are attached`)),e.worktree_count>0&&n.push(V6(e.worktree_count,`worktree exists`,`worktrees exist`));let r=t.filter(t=>t.linked_project_ids.includes(e.id)).length;return r>0&&n.push(V6(r,`project links to it`,`projects link to it`)),n.length===0?null:`This project can't be deleted while ${n.join(` and `)}.`},W6=(e,t)=>e.id!==t.projectId||e.ticket_count===t.ticketCount&&e.worktree_count===t.worktreeCount&&e.repo_path_locked===t.repoPathLocked?e:{...e,ticket_count:t.ticketCount,worktree_count:t.worktreeCount,repo_path_locked:t.repoPathLocked},G6=(e,t)=>({projectId:e,branch:t.branch,status:t.status,ahead:t.ahead??0,behind:t.behind??0,hasUpstream:t.has_upstream??!1,canPull:t.can_pull??!1,diffStats:t.diff_stats??null}),K6=e=>({projectId:e,branch:null,status:`loading`,ahead:0,behind:0,hasUpstream:!1,canPull:!1,diffStats:null}),q6=(e,t)=>t?e[t]??j6:j6,J6=(e,t)=>t?e[t]??M6:M6,Y6=()=>{let e=window.localStorage.getItem(T6),t=Number(e);return Number.isFinite(t)&&t>=320?t:O6},X6=()=>{let e=window.localStorage.getItem(E6);return e===`phone`||e===`tablet`||e===`laptop`||e===`responsive`?e:k6},Z6=()=>{let e=Number(window.localStorage.getItem(D6));return Number.isFinite(e)&&e>0?e:A6},Q6=()=>{let e=P6(window.localStorage.getItem(x6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>e===`board`||e===`chat`||e===`memory`))},$6=()=>{let e=P6(window.localStorage.getItem(S6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>e===`hidden`||e===`inline`||e===`expanded`))},e8=()=>{let e=P6(window.localStorage.getItem(C6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>typeof e==`string`||e===null))},t8=e=>!!e?.preview_service_name?.trim()&&e?.preview_capability_mode!==`force_disabled`,n8=({activeRun:e,project:t})=>{if(!e||e.kind!==`project`||!t)return!1;let n=t.active_target_kind??`repo_root`,r=t.active_target_bundle_id??null;return e.project_id===t.id&&(e.target_kind??`repo_root`)===n&&((e.target_kind??`repo_root`)!==`bundle`||e.target_bundle_id===r)},r8=({activeRun:e,project:t,projectId:n})=>!e||!n?null:e.kind===`ticket`?e.project_id===n?e:null:n8({activeRun:e,project:t})?e:null,i8=`Project root has uncommitted changes. Confirm branch switch to continue.`,a8=({activeProject:e,activeProjectBranchState:t,nextTarget:n})=>e?n.kind===`bundle`?e.active_target_kind!==`bundle`||e.active_target_bundle_id!==n.bundleId:e.active_target_kind===`bundle`?!0:n.branch?t?.branch!==n.branch:!1:!1,o8=()=>{let[e,t]=(0,b.useState)(`opencode`),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(()=>window.localStorage.getItem(b6)),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)({}),[g,_]=(0,b.useState)({}),[v,y]=(0,b.useState)({}),[x,C]=(0,b.useState)(null),[w,E]=(0,b.useState)({}),[D,O]=(0,b.useState)($6),[k,j]=(0,b.useState)(e8),[M,N]=(0,b.useState)(Y6),[P,F]=(0,b.useState)(X6),[I,L]=(0,b.useState)(Z6),[R,z]=(0,b.useState)(null),[ee,B]=(0,b.useState)([]),[V,H]=(0,b.useState)(!1),[te,ae]=(0,b.useState)(``),[G,oe]=(0,b.useState)(``),[se,ce]=(0,b.useState)(!1),[le,ue]=(0,b.useState)(null),[de,K]=(0,b.useState)(null),[fe,pe]=(0,b.useState)({}),[me,he]=(0,b.useState)(Q6),[ge,_e]=(0,b.useState)(()=>H3()),[ve,ye]=(0,b.useState)(()=>V3()),[be,xe]=(0,b.useState)(0),[Se,Ce]=(0,b.useState)(null),[we,Te]=(0,b.useState)(null),[Ee,Oe]=(0,b.useState)({}),[ke,Ae]=(0,b.useState)({}),[je,Me]=(0,b.useState)({}),[Ne,Pe]=(0,b.useState)({}),[Ge,Je]=(0,b.useState)(!1),[Ye,Ze]=(0,b.useState)(null),Qe=(0,b.useRef)(null),$e=(0,b.useRef)(null),et=(0,b.useRef)(null),tt=i.find(e=>e.id===o)??null,nt=!!tt?.memory_enabled,rt=o?me[o]??`board`:`board`,it=rt===`memory`?nt?`memory`:`board`:rt,at=tt!==null,ot=B6(tt),st=!!tt?.run_ide?.trim(),ct=o!==null&&u===o,lt=o!==null&&(!ot||f===o),ut=o?m[o]??K6(o):null,dt=o?g[o]??null:null,ft=o?!!v[o]:!1,pt=o?Ee[o]??[]:[],mt=o?!!ke[o]:!1,ht=o?je[o]??{current_branch:null,default_branch:null,previous_branch:null}:{current_branch:null,default_branch:null,previous_branch:null},gt=o?!!Ne[o]:!1,bt=o?w[o]??null:null,xt=J6(D,o),St=xt!==`hidden`,Ct=r8({activeRun:c,project:tt,projectId:o}),wt=Ct?.context_key??null,Tt=o?k[o]??null:null,Et=t8(tt),Dt=wt===R,Ot=(0,b.useMemo)(()=>W3(ge),[ge]),kt=(0,b.useMemo)(()=>G3({hasRunning:Ot.hasRunning,hasFinishedUnseen:ve.hasFinishedUnseen,hasErrorUnseen:ve.hasErrorUnseen}),[Ot.hasRunning,ve.hasErrorUnseen,ve.hasFinishedUnseen]);(0,b.useEffect)(()=>{Ce(null),Te(null),$e.current=null},[o]),(0,b.useEffect)(()=>{Te(null)},[it]),(0,b.useEffect)(()=>{St||($e.current=null)},[St]),(0,b.useEffect)(()=>{let e=Se?.target?.kind??null;if(e===`ticket`||e===`bundle`){$e.current=Se;return}(it===`board`||!St)&&($e.current=Se)},[St,Se,it]),(0,b.useEffect)(()=>{_e(H3())},[o]),(0,b.useEffect)(()=>{ye(V3())},[o]);let At=(0,b.useCallback)((e,t)=>{document.visibilityState!==`visible`&&(!t.didFinish&&!t.didError||ye(e=>{let n={...e,hasFinishedUnseen:e.hasFinishedUnseen||t.didFinish,hasErrorUnseen:e.hasErrorUnseen||t.didError};return e.hasFinishedUnseen===n.hasFinishedUnseen&&e.hasErrorUnseen===n.hasErrorUnseen?e:n}))},[]);(0,b.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&ye(e=>!e.hasFinishedUnseen&&!e.hasErrorUnseen?e:{...e,hasFinishedUnseen:!1,hasErrorUnseen:!1})};return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[]),(0,b.useEffect)(()=>(Qe.current===null&&(Qe.current=document.querySelector(`link[rel="icon"]`)?.getAttribute(`href`)??`/favicon.svg`),y6({defaultHref:Qe.current,state:kt}),()=>{y6({defaultHref:Qe.current,state:null})}),[kt]);let jt=(0,b.useCallback)(async(e,t={})=>{let{refreshRemote:n=!1,signal:r}=t;try{let t=await Ke(e,r,{refreshRemote:n});if(r?.aborted)return;h(n=>({...n,[e]:G6(e,t)}))}catch(t){if(T(t))return;if(t instanceof S&&t.status===404){h(t=>({...t,[e]:{...K6(e),status:`unknown`}}));return}h(t=>({...t,[e]:{projectId:e,branch:t[e]?.branch??null,status:`unknown`,ahead:t[e]?.ahead??0,behind:t[e]?.behind??0,hasUpstream:t[e]?.hasUpstream??!1,canPull:t[e]?.canPull??!1,diffStats:t[e]?.diffStats??null}}))}},[]),Mt=(0,b.useCallback)(async(e,t={})=>{let{refreshRemote:n=!1,signal:r}=t;y(t=>({...t,[e]:!0}));try{let t=await Xe(e,{refreshRemote:n,signal:r});if(r?.aborted)return;_(n=>({...n,[e]:t}))}catch(t){if(T(t))return;t instanceof S&&t.status===404&&_(t=>({...t,[e]:null}))}finally{r?.aborted||y(t=>({...t,[e]:!1}))}},[]);(0,b.useEffect)(()=>{let e=new AbortController;return(async()=>{try{let{tool:n}=await vt(e.signal);t(n)}catch(e){T(e)}finally{e.signal.aborted||r(!0)}})(),()=>{e.abort()}},[]),(0,b.useEffect)(()=>{if(!se||i.length>0&&le===null||V)return;let e=new AbortController;return(async()=>{try{B(await _t(`opencode`,e.signal))}catch(e){T(e)||B(e=>e)}finally{e.signal.aborted||H(!0)}})(),()=>{e.abort()}},[V,le,i.length,se]),(0,b.useEffect)(()=>{let e=new AbortController,t=window.localStorage.getItem(b6);return(async()=>{try{let n=await Fe(e.signal);if(e.signal.aborted)return;a(n);let r=n[0]?.id??null;s(n.some(e=>e.id===t)?t:r)}catch(e){T(e)||a([])}finally{e.signal.aborted||ce(!0)}})(),()=>{e.abort()}},[]),(0,b.useEffect)(()=>{if(se){if(o){window.localStorage.setItem(b6,o);return}window.localStorage.removeItem(b6)}},[o,se]),(0,b.useEffect)(()=>{window.localStorage.setItem(x6,JSON.stringify(me))},[me]),(0,b.useEffect)(()=>{window.localStorage.setItem(S6,JSON.stringify(D))},[D]),(0,b.useEffect)(()=>{window.localStorage.setItem(C6,JSON.stringify(k))},[k]),(0,b.useEffect)(()=>{h(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),_(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),y(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{pe(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{let e=new Set(i.map(e=>e.id));Oe(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Ae(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Me(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Pe(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t))))},[i]),(0,b.useEffect)(()=>{E(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),O(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),j(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{se&&he(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i,se]),(0,b.useEffect)(()=>{if(!se||!o||!at)return;let e=!1,t=null,n=null;h(e=>e[o]?e:{...e,[o]:K6(o)});let r=async(r=!1)=>{let i=r?`remote`:`local`;if(t){if(n===`remote`||n===i)return;t.abort()}let a=new AbortController;t=a,n=i;try{await Promise.all([jt(o,{refreshRemote:r,signal:a.signal}),Mt(o,{refreshRemote:r,signal:a.signal})])}catch{if(e||a.signal.aborted)return}finally{t===a&&(t=null,n=null)}};r(!1);let i=F$(()=>{document.visibilityState===`visible`&&r(!1)});return()=>{e=!0,t?.abort(),i()}},[o,at,se,jt,Mt]),(0,b.useEffect)(()=>{if(o)return N$(e=>{e===o&&(jt(e),Mt(e))})},[o,jt,Mt]);let Nt=(0,b.useCallback)(async e=>{let t=o;if(!t){l(null),p(null);return}try{let n=await W(t,e);e?.aborted||(l(n.active_run),p(t))}catch(e){T(e)}},[o]),Pt=(0,b.useCallback)(async e=>{let t=o;if(t)try{let n=await ne(t,e);e?.aborted||E(e=>({...e,[t]:n}))}catch(e){T(e)}},[o]);(0,b.useEffect)(()=>{if(!se)return;if(!ot){l(null),p(null);return}if(!ct)return;let e=new AbortController;p(null),Nt(e.signal);let t=window.setInterval(()=>{Nt(e.signal)},w6),n=F$(()=>{document.visibilityState===`visible`&&Nt(e.signal)});return()=>{e.abort(),window.clearInterval(t),n()}},[ct,ot,se,Nt]),(0,b.useEffect)(()=>{if(!se||!o||!ct||!Et)return;let e=new AbortController;Pt(e.signal);let t=window.setInterval(()=>{Pt(e.signal)},w6),n=F$(()=>{document.visibilityState===`visible`&&Pt(e.signal)});return()=>{e.abort(),window.clearInterval(t),n()}},[o,ct,Et,se,Pt]),(0,b.useEffect)(()=>{window.localStorage.setItem(T6,String(M))},[M]),(0,b.useEffect)(()=>{window.localStorage.setItem(E6,P)},[P]),(0,b.useEffect)(()=>{window.localStorage.setItem(D6,String(I))},[I]),(0,b.useEffect)(()=>{o&&wt&&j(e=>{let t=e[o]??null;return!t||t===wt?e:{...e,[o]:null}})},[o,wt]),(0,b.useEffect)(()=>{!o||!Ct||!t8(tt)||Tt!==Ct.context_key&&O(e=>J6(e,o)===`hidden`?{...e,[o]:`inline`}:e)},[tt,o,Tt,Ct]);let Ft=async e=>{try{t((await yt(e)).tool)}catch{}},It=(0,b.useCallback)(e=>{a(t=>t.map(t=>t.id===e.id?e:t))},[]),Lt=(0,b.useCallback)((e,t)=>{Oe(n=>{let r=[t,...(n[e]??[]).filter(e=>e.id!==t.id)];return{...n,[e]:r}})},[]),Rt=(0,b.useCallback)(async e=>{Pe(t=>({...t,[e]:!0}));try{let t=await Be(e);Me(n=>({...n,[e]:t}))}catch(e){X.error(e instanceof S?e.message:`Unable to load the project target options right now.`,{id:`project-target-selector-load-error`})}finally{Pe(t=>({...t,[e]:!1}))}},[]),zt=async e=>{try{let t=await Ie(z6(e));return a(e=>[...e,t]),s(t.id),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to create the project right now.`}},Bt=async e=>{if(!tt)return`Select a project before editing settings.`;try{let t=await Le(tt.id,z6(e));return a(e=>e.map(e=>e.id===t.id?t:e)),xe(e=>e+1),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to update the project right now.`}},Vt=async()=>{if(!tt)return`Select a project before deleting it.`;try{await Re(tt.id);let e=i.filter(e=>e.id!==tt.id);return a(e),s(e[0]?.id??null),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to delete the project right now.`}},Ht=(0,b.useCallback)(e=>{a(t=>t.map(t=>W6(t,e)))},[]),Ut=(0,b.useCallback)((e,t)=>{e&&Oe(n=>({...n,[e]:t}))},[]),Wt=(0,b.useCallback)((e,t)=>{e&&Ae(n=>({...n,[e]:t}))},[]),Gt=async(e,t,n)=>await He({repo_path:e,helper_model:t||null,helper_variant:t&&n||null}),Kt=async()=>(await Ue()).repo_path,qt=(0,b.useCallback)(async e=>{let t=await We({repo_path:e});return{valid:t.valid,repoRoot:t.repo_root,error:t.error}},[]),Jt=(0,b.useCallback)((e,t)=>{O(t=>({...t,[e]:`hidden`})),t&&j(n=>({...n,[e]:t}))},[]),Yt=(0,b.useCallback)(()=>{o&&Jt(o,wt)},[o,Jt,wt]),Xt=(0,b.useCallback)(e=>{o&&(O(e=>({...e,[o]:`hidden`})),e&&l(t=>t?.context_key===e?null:t))},[o]),Zt=(0,b.useCallback)(async()=>{if(!Ct||R===Ct.context_key)return;let{context_key:e}=Ct;z(e);try{Ct.kind===`ticket`?await De(Ct.ticket_id,Ct.project_id):l((await ie(Ct.project_id)).active_run),Xt(e),await Promise.all([Nt(),Pt()])}catch(e){X.error(e instanceof S?e.message:`Unable to stop the preview run right now.`,{id:`app-preview-run-stop-error`})}finally{z(t=>t===e?null:t)}},[Xt,Ct,Pt,Nt,R]),Qt=(0,b.useCallback)(e=>{!e||!o||Rt(o)},[o,Rt]),$t=(0,b.useCallback)(e=>new Promise(t=>{et.current=t,Ze(e)}),[]),en=(0,b.useCallback)(e=>{let t=et.current;et.current=null,Ze(null),t?.(e)},[]),tn=(0,b.useCallback)(async e=>{if(!tt||!o)throw Error(`Select a project first.`);if(!a8({activeProject:tt,activeProjectBranchState:ut,nextTarget:e})||!c||c.kind!==`project`||c.project_id!==tt.id)return!0;if(!await $t({title:`Stop current run and switch target?`,description:`Switching targets will stop the current run and close its preview.`,confirmLabel:`Stop and switch`,cancelLabel:`Keep current target`,confirmVariant:`destructive`}))return!1;try{let e=c.context_key,t=await ie(tt.id);return Xt(e),l(t.active_run),await Pt(),!0}catch(e){return X.error(e instanceof S?e.message:`Unable to stop the project run right now.`,{id:`project-target-switch-stop-run-error`}),!1}},[tt,ut,o,c,Xt,Pt,$t]),nn=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);return await tn({kind:`bundle`,bundleId:e})?(It(await Ve(o,{kind:`bundle`,bundle_id:e})),_(e=>({...e,[o]:null})),await Promise.all([jt(o),Mt(o)]),!0):!1},[o,tn,jt,Mt,It]),rn=(0,b.useCallback)(async(e,t={})=>{if(!o)throw Error(`Select a project first.`);if(!await tn({kind:`repo_root`,branch:e}))return!1;let n=n=>Ve(o,{kind:`repo_root`,...e?{branch:e}:{},...t.createBranch===!1?{create_branch:!1}:{},...n?{confirm_dirty_switch:!0}:{}}),r;try{r=await n(t.confirmDirtySwitch===!0)}catch(e){if(!t.confirmDirtySwitch&&e instanceof S&&e.status===409&&e.message===i8){if(!await $t({title:`Switch repo root branch?`,description:`${i8}\n\nSwitch anyway?`,confirmLabel:`Switch anyway`,cancelLabel:`Keep current branch`}))return!1;r=await n(!0)}else throw e}return It(r),_(e=>({...e,[o]:null})),await Promise.all([jt(o),Mt(o),Rt(o)]),!0},[o,tn,Rt,jt,Mt,It,$t]),an=(0,b.useCallback)(async e=>!e.target_kind||e.target_available===!1?!0:e.target_kind===`bundle`?e.target_bundle_id?await nn(e.target_bundle_id):!1:await rn(e.target_branch_snapshot??null,{createBranch:!1}),[nn,rn]),on=(0,b.useCallback)(()=>{Je(!0)},[]),sn=(0,b.useCallback)(()=>{Je(!1)},[]),cn=(0,b.useCallback)(e=>{if(e){nn(e);return}rn(null)},[nn,rn]),ln=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);let t=await A(o,{name:e,prepare:!0});return Lt(o,t),xe(e=>e+1),t},[o,Lt]),un=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);await U(o,e),Oe(t=>({...t,[o]:(t[o]??[]).filter(t=>t.id!==e)})),xe(e=>e+1)},[o]),dn=(0,b.useCallback)(async()=>{if(!tt)return;let e=tt.active_target_kind??`repo_root`,t=tt.active_target_bundle_id??null,n=c?.kind===`project`&&c.project_id===tt.id&&(c.target_kind??`repo_root`)===e&&((c.target_kind??`repo_root`)!==`bundle`||c.target_bundle_id===t),r=n?c?.context_key??null:null,i=!n&&t8(tt)&&xt===`hidden`;i&&(O(e=>({...e,[tt.id]:`inline`})),j(e=>({...e,[tt.id]:null})));try{let e=n?await ie(tt.id):await re(tt.id);n&&Xt(r),l(e.active_run),Pt()}catch(e){i&&O(e=>({...e,[tt.id]:`hidden`})),X.error(e instanceof S?e.message:`Unable to update the project run right now.`,{id:`app-project-run-error`})}},[xt,tt,c,Xt,Pt]),fn=(0,b.useCallback)(async()=>{if(!(!tt||!st))try{await ze(tt.id)}catch(e){X.error(e instanceof Error?e.message:`Unable to open the IDE right now.`,{id:`app-project-open-ide-error`})}},[tt,st]),pn=(0,b.useCallback)(async()=>{if(tt){C(tt.id);try{let e=await qe(tt.id);_(t=>({...t,[tt.id]:e})),tt.active_target_kind!==`bundle`&&await jt(tt.id),M$(tt.id),X.success(e.behind===0?`Project branch synced.`:`Project branch updated.`,{id:`app-project-pull-success`})}catch(e){X.error(e instanceof S?e.message:`Unable to sync the current branch right now.`,{id:`app-project-pull-error`})}finally{C(e=>e===tt.id?null:e)}}},[tt,jt]),mn=(0,b.useCallback)(()=>{tt&&K({projectId:tt.id,title:tt.name})},[tt]),hn=(0,b.useCallback)(()=>{if(!de)return;let{projectId:e}=de;K(null),jt(e),Mt(e)},[jt,Mt,de]),gn=q6(fe,o),_n=it===`chat`?we:null,vn=$e.current,yn=vn?.target?.kind??null,bn=it===`chat`?yn===`ticket`||yn===`bundle`?{target:vn?.target??null,canSelect:!1,disabledReason:`This preview belongs to a ticket run. Return to Board to send preview comments.`,promptMode:vn?.promptMode??null,onPromptModeChange:vn?.onPromptModeChange??null,isUpdatingPromptMode:vn?.isUpdatingPromptMode??!1,promptPlaceholder:vn?.promptPlaceholder??null,promptComposerControls:vn?.promptComposerControls,promptComposerInlineControls:vn?.promptComposerInlineControls,submitPrompt:null}:_n?{target:{kind:`chat_session`,id:_n.chatSessionId??`draft:${o}`},canSelect:_n.canSubmitReviewPrompt,disabledReason:_n.canSubmitReviewPrompt?null:_n.reviewSubmitDisabledReason??`Wait for the current chat turn to finish before sending preview comments.`,promptMode:_n.mode,onPromptModeChange:_n.onModeChange,isUpdatingPromptMode:_n.isUpdatingMode,promptPlaceholder:_n.promptPlaceholder,promptComposerControls:_n.promptComposerControls,promptComposerInlineControls:_n.promptComposerInlineControls,submitPrompt:_n.canSubmitReviewPrompt?_n.submitPrompt:null}:{target:null,canSelect:!1,disabledReason:`Select a chat session to send preview comments.`,submitPrompt:null}:Se,xn=_n?.canSubmitReviewPrompt??!1,Sn=it===`chat`?_n?_n.reviewSubmitDisabledReason:`Select a chat session to send review comments.`:void 0,Cn=(0,b.useCallback)(()=>{o&&pe(e=>{let t=e[o]??j6;return{...e,[o]:{hasMounted:!0,isOpen:!t.isOpen,isExpanded:t.isExpanded}}})},[o]),wn=(0,b.useCallback)(e=>{pe(t=>{let n=t[e]??j6;return!n.hasMounted||!n.isOpen?t:{...t,[e]:j6}})},[]),Tn=(0,b.useCallback)(e=>{pe(t=>{let n=t[e]??j6;return{...t,[e]:{hasMounted:!0,isOpen:n.isOpen,isExpanded:!n.isExpanded}}})},[]),En=(0,b.useCallback)(()=>{o&&pe(e=>{let t=e[o]??j6;return t.isOpen?e:{...e,[o]:{hasMounted:!0,isOpen:!0,isExpanded:t.isExpanded}}})},[o]),Dn=(0,b.useCallback)(()=>{ue(`create`)},[]),On=(0,b.useCallback)(()=>{if(o){if(St){Yt();return}O(e=>({...e,[o]:`inline`})),j(e=>({...e,[o]:null}))}},[o,Yt,St]),kn=(0,b.useCallback)(()=>{o&&O(e=>{let t=J6(e,o);return{...e,[o]:t===`expanded`?`inline`:`expanded`}})},[o]),An=tt?tt.preview_service_name?.trim()?tt.preview_capability_mode===`force_disabled`?`Preview is disabled for this project.`:bt?.state===`unsupported`?bt.message??`Preview is unavailable for this project.`:St?`Hide preview`:`Show preview`:`Choose a named preview service in project settings first.`:`Select a project first.`,jn=!tt||!tt.preview_service_name?.trim()||tt.preview_capability_mode===`force_disabled`||bt?.state===`unsupported`,Mn=tt&&tt.preview_service_name?.trim()?(0,q.jsx)(rO,{project:tt,mode:xt===`expanded`?`expanded`:`inline`,status:bt,viewportPreset:P,zoom:I,activeRun:Ct,reviewCapability:bn,isStoppingActiveRun:Dt,onHide:Yt,onStopActiveRun:()=>{Zt()},onToggleExpanded:kn,onViewportPresetChange:F,onZoomChange:L}):null;return $0([{key:`t`,onKeyDown:En}],{isBlocked:Q0}),(0,q.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-[linear-gradient(180deg,_rgba(15,16,21,1),_rgba(9,10,14,1))] text-foreground`,children:[(0,q.jsx)(kv,{}),i.length>0&&(0,q.jsx)(`header`,{className:`border-b border-border bg-background/95 px-6 py-3 backdrop-blur`,children:(0,q.jsxs)(`div`,{className:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] lg:items-center`,children:[(0,q.jsx)(`div`,{className:`min-w-0 lg:justify-self-start`,children:(0,q.jsx)(`div`,{className:`min-w-0 w-full sm:min-w-[20rem] sm:max-w-[30rem]`,children:(0,q.jsx)(__,{activeProjectId:o,projects:i,onEditProject:()=>ue(`edit`),onProjectChange:s})})}),o&&(0,q.jsx)(`div`,{className:`flex justify-start lg:col-start-2 lg:row-start-1 lg:justify-center`,children:(0,q.jsx)(i6,{activeWorkspace:it,activityByWorkspace:ge,memoryEnabled:nt,onWorkspaceChange:e=>{o&&(he(t=>({...t,[o]:e})),_e(t=>U3(t,e)))}})}),(0,q.jsx)(`div`,{className:`w-full lg:col-start-3 lg:row-start-1 lg:w-auto lg:justify-self-end`,children:(0,q.jsx)(Ov,{activeTool:e,onCreateProject:Dn,onToolChange:Ft})})]})}),se?i.length===0?(0,q.jsx)(m_,{activeTool:e,availableHelperModels:ee,helperModel:te,helperVariant:G,isHelperModelsLoaded:V,isToolLoaded:n,onCreateProject:Dn,onHelperModelChange:e=>{ae(e),oe(``)},onHelperVariantChange:oe,onToolChange:Ft}):(0,q.jsx)(n6,{activeProjectId:o,activeProject:tt,activeProjectBranchState:ut,activeRun:c,activeTool:e,onRestoreChatSessionTarget:an,onChatReviewCapabilityChange:Te,isPreviewButtonDisabled:jn,onPreviewReviewCapabilityChange:Ce,onPreviewToggle:On,onRunStopped:Xt,onWorkspaceActivityChange:_e,onWorkspaceActivityEvent:At,previewDisplayMode:xt,previewPane:Mn,previewPaneWidth:M,previewButtonTitle:An,visibleWorkspace:it,refreshKey:be,onBoardLoadedProjectIdChange:d,onBundlesChange:Ut,onBundlesLoadingChange:Wt,onPreviewPaneWidthChange:N,onProjectUsageChange:Ht,onRunStatusChange:()=>{Nt(),Pt()}},o??`no-project`):(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Loading projects...`}),i.length>0&&(0,q.jsx)(Ev,{activeProject:tt,activeRun:c,branchState:ut,targetGitStatus:dt,isBoardLoadedForActiveProject:ct,isProjectSyncing:x===o,isProjectIdeAvailable:st,isProjectRunAvailable:ot,isRunStatusLoadedForActiveProject:lt,isTerminalOpen:gn.isOpen,targetBundles:pt,targetBranchSuggestions:ht,isTargetBundleLoading:mt,isTargetSelectorLoading:gt,isTargetGitStatusLoading:ft,onProjectIdeOpen:()=>{fn()},onProjectPull:()=>{pn()},onProjectRunToggle:()=>{dn()},onProjectChangesOpen:mn,onTerminalToggle:Cn,onTargetSelectorOpenChange:Qt,onSelectBundleTarget:nn,onSelectRepoRootTarget:rn,onManageBundles:on}),Ge&&tt&&(0,q.jsx)(Zv,{bundles:pt,selectedBundleId:tt.active_target_kind===`bundle`?tt.active_target_bundle_id??null:null,activeTargetBundleId:tt.active_target_kind===`bundle`?tt.active_target_bundle_id??null:null,onSelectBundle:cn,onCreateBundle:ln,onDeleteBundle:un,onClose:sn}),Ye&&(0,q.jsx)(Rv,{title:Ye.title,description:Ye.description,confirmLabel:Ye.confirmLabel,cancelLabel:Ye.cancelLabel,confirmVariant:Ye.confirmVariant,onConfirm:()=>en(!0),onCancel:()=>en(!1)}),i.map(e=>{let t=q6(fe,e.id);return t.hasMounted?(0,q.jsx)(r6,{project:e,isExpanded:t.isExpanded,isVisible:e.id===o&&t.isOpen,onClose:()=>wn(e.id),onToggleExpanded:()=>Tn(e.id)},e.id):null}),le&&(0,q.jsx)(Xb,{mode:le,projectId:le===`edit`&&tt?tt.id:null,availableHelperModels:ee,isLoadingHelperModels:!V,isAutoConfigReady:n,initialValues:le===`edit`&&tt?R6(tt):i.length===0?{name:``,repoPath:``,linkedProjectIds:[],runSetup:[],runServices:[],runIde:``,previewServiceName:``,previewPath:``,previewCapabilityMode:`auto`,helperModel:te,helperVariant:G,commitMessageRules:``,autoParkStaleTickets:!1,memoryEnabled:!1,worktreeSync:[]}:void 0,linkedProjectOptions:i.filter(e=>e.id!==tt?.id).map(e=>({id:e.id,name:e.name})),repoPathLocked:le===`edit`&&tt?tt.repo_path_locked:!1,repoPathLockedMessage:le===`edit`&&tt?H6(tt):null,deleteBlockedMessage:le===`edit`&&tt?U6(tt,i):null,onDelete:le===`edit`?Vt:void 0,onAutoConfig:Gt,onBrowseRepoPath:Kt,onValidateRepoPath:qt,onClose:()=>ue(null),onSubmit:le===`edit`?Bt:zt}),de&&de.projectId===o&&(0,q.jsx)(b.Suspense,{fallback:null,children:(0,q.jsx)(N6,{scope:`project_root`,projectId:de.projectId,title:de.title,onSubmitReviewPrompt:_n?.submitPrompt,canSubmitReviewPrompt:xn,reviewSubmitDisabledReason:Sn??void 0,canAddReviewComments:xn,canModifyChanges:!0,onClose:hn})})]})};document.documentElement.classList.add(`dark`),document.documentElement.style.colorScheme=`dark`,(0,y.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(o8,{}));
177
+ `).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t),x4=e=>{let t=[`plan`,`build`,`review`,`follow_up`,`plan_follow_up`,`chat`];return e.split(/\n|,/).map(e=>e.trim()).filter(e=>t.includes(e)).filter((e,t,n)=>n.indexOf(e)===t)},S4=({suggestion:e,isPending:t,onReview:n,onAccept:r,onDismiss:i})=>{let a=e.kind===`decision`?e.duplicate_match?.decision??null:null,o=a?`Save as new decision`:`Accept`,s=e.kind===`decision`?e.decision:e.instruction;return(0,q.jsx)(`li`,{className:`rounded-xl border border-border/60 bg-background/40`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 p-3`,children:[(0,q.jsx)(`div`,{className:`flex items-start justify-between gap-3`,children:(0,q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`truncate text-sm font-semibold text-foreground`,children:e.title}),(0,q.jsxs)(_4,{children:[`Suggested `,e.kind]}),a?(0,q.jsx)(_4,{tone:`muted`,children:`Possible duplicate`}):null]}),(0,q.jsx)(`p`,{className:`line-clamp-2 text-sm text-muted-foreground`,children:s})]})}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`outline`,disabled:t,onClick:()=>n(e),children:`Review`}),(0,q.jsx)(Y,{type:`button`,size:`sm`,disabled:t,onClick:()=>void r(e),children:o}),(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,disabled:t,onClick:()=>void i(e),children:`Dismiss`})]})]})})},C4=({suggestion:e,isOpen:t,isEditing:n,isPending:r,draft:i,onOpenChange:a,onStartEdit:o,onDraftChange:s,onCancelEdit:c,onAccept:l,onDismiss:u})=>{if(!e)return null;let d=e.kind===`decision`?e.duplicate_match?.decision??null:null,f=d?`Save as new decision`:`Accept as ${e.kind}`;return(0,q.jsx)(yg,{open:t,onOpenChange:a,children:(0,q.jsxs)(Cg,{className:`max-h-[85vh] overflow-y-auto sm:max-w-2xl`,children:[(0,q.jsxs)(wg,{children:[(0,q.jsx)(Eg,{children:e.title}),(0,q.jsx)(Dg,{children:`Review this suggestion before saving it into project memory.`})]}),(0,q.jsxs)(`div`,{className:`space-y-4`,children:[d?(0,q.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-5 text-amber-100`,children:[(0,q.jsx)(`p`,{className:`font-medium text-amber-50`,children:`Possible duplicate`}),(0,q.jsxs)(`p`,{children:[(0,q.jsxs)(`span`,{className:`font-medium`,children:[d.title,`:`]}),` `,d.decision]})]}):null,n?(0,q.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Suggestion title`}),(0,q.jsx)(`input`,{"aria-label":`Suggestion title`,value:i.title,onChange:e=>s({...i,title:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Scope`}),(0,q.jsx)(`input`,{"aria-label":`Scope`,value:i.scope,onChange:e=>s({...i,scope:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:i.kind===`decision`?`Decision`:`Instruction`}),(0,q.jsx)(`textarea`,{"aria-label":i.kind===`decision`?`Decision`:`Instruction`,value:i.content,onChange:e=>s({...i,content:e.target.value}),rows:5,className:`min-h-32 rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Rationale`}),(0,q.jsx)(`textarea`,{"aria-label":`Rationale`,value:i.rationale,onChange:e=>s({...i,rationale:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),i.kind===`decision`?(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground sm:col-span-2`,children:[(0,q.jsx)(`span`,{children:`Implications (one per line)`}),(0,q.jsx)(`textarea`,{"aria-label":`Implications`,value:i.implications,onChange:e=>s({...i,implications:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:`Stages (comma or newline separated)`}),(0,q.jsx)(`textarea`,{"aria-label":`Stages`,value:i.stages,onChange:e=>s({...i,stages:e.target.value}),rows:3,className:`rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition focus:border-primary/60`})]}),(0,q.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:`Priority`}),(0,q.jsxs)(`select`,{"aria-label":`Priority`,value:i.priority,onChange:e=>s({...i,priority:e.target.value}),className:`h-10 rounded-lg border border-border bg-background px-3 text-sm text-foreground outline-none transition focus:border-primary/60`,children:[(0,q.jsx)(`option`,{value:`low`,children:`Low`}),(0,q.jsx)(`option`,{value:`normal`,children:`Normal`}),(0,q.jsx)(`option`,{value:`high`,children:`High`})]})]})]})]}):(0,q.jsxs)(`div`,{className:`space-y-4 text-sm`,children:[(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:e.kind===`decision`?`Decision`:`Instruction`}),(0,q.jsx)(`p`,{className:`whitespace-pre-wrap text-foreground`,children:e.kind===`decision`?e.decision:e.instruction})]}),e.rationale?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Rationale`}),(0,q.jsx)(`p`,{className:`whitespace-pre-wrap text-muted-foreground`,children:e.rationale})]}):null,e.kind===`decision`&&e.implications.length>0?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Implications`}),(0,q.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-muted-foreground`,children:e.implications.map(e=>(0,q.jsx)(`li`,{children:e},e))})]}):null,e.kind===`convention`?(0,q.jsxs)(`div`,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Stages`}),(0,q.jsx)(`p`,{className:`text-muted-foreground`,children:e.stages.join(`, `)||`None specified`})]}),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Priority`}),(0,q.jsx)(`p`,{className:`text-muted-foreground`,children:e.priority})]})]}):null]})]}),(0,q.jsxs)(Tg,{className:`flex flex-wrap gap-2 sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n?(0,q.jsx)(Y,{type:`button`,variant:`ghost`,disabled:r,onClick:c,children:`Cancel edits`}):(0,q.jsx)(Y,{type:`button`,variant:`outline`,disabled:r,onClick:()=>o(e),children:`Edit`}),(0,q.jsx)(Y,{type:`button`,variant:`ghost`,disabled:r,onClick:()=>void u(e),children:`Dismiss`})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[d?(0,q.jsx)(Y,{type:`button`,variant:`outline`,disabled:r,onClick:()=>void l(e,!0),children:`Update existing decision`}):null,(0,q.jsx)(Y,{type:`button`,disabled:r,onClick:()=>void l(e,!1),children:f})]})]})]})})},w4=({projectId:e,suggestions:t,title:n,description:r,emptyState:i=null,onSuggestionsChanged:a})=>{let[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)(v4),[f,p]=(0,b.useState)(null);(0,b.useEffect)(()=>{l(e=>e&&!t.some(t=>t.id===e)?null:e),s(e=>e&&!t.some(t=>t.id===e)?null:e)},[t]);let m=o?t.find(e=>e.id===o)??null:null,h=()=>{l(null),d(v4())},g=e=>{s(e.id),l(e.id),d(y4(e))},_=e=>{c&&c!==e.id&&h(),s(e.id)},v=e=>{e||(s(null),c&&h())},y=async(t,n)=>{let r=c===t.id?u:y4(t),i=r.kind===`decision`?{title:r.title.trim(),scope:r.scope.trim()||null,decision:r.content.trim(),rationale:r.rationale.trim()||null,implications:b4(r.implications)}:{title:r.title.trim(),scope:r.scope.trim()||null,instruction:r.content.trim(),rationale:r.rationale.trim()||null,stages:x4(r.stages),priority:r.priority};p(t.id);try{if(n){if(t.kind!==`decision`)throw Error(`Only decision suggestions can update an existing memory.`);let n=t.duplicate_match?.decision;if(!n)throw Error(`No existing decision is available for this suggestion.`);await mt(e,t.id,n.id,i)}else await ft(e,t.id,i);h(),s(null),a?.()}catch(e){X.error(e instanceof Error?e.message:`Unable to save the memory suggestion right now.`,{id:`project-memory-suggestion-error`})}finally{p(null)}},x=async t=>{p(t.id);try{await pt(e,t.id),c===t.id&&h(),o===t.id&&s(null),a?.()}catch(e){X.error(e instanceof Error?e.message:`Unable to dismiss the memory suggestion right now.`,{id:`project-memory-suggestion-error`})}finally{p(null)}};return(0,q.jsxs)(`div`,{className:`space-y-2`,children:[n||r?(0,q.jsx)(`div`,{className:`flex items-center justify-between gap-3`,children:(0,q.jsxs)(`div`,{children:[n?(0,q.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:n}):null,r?(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r}):null]})}):null,t.length>0?(0,q.jsx)(`ul`,{className:`space-y-2`,children:t.map(e=>(0,q.jsx)(S4,{suggestion:e,isPending:f===e.id,onReview:_,onAccept:e=>y(e,!1),onDismiss:x},e.id))}):i?(0,q.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/70 px-3 py-4 text-sm text-muted-foreground`,children:i}):null,(0,q.jsx)(C4,{suggestion:m,isOpen:!!m,isEditing:c===m?.id,isPending:f===m?.id,draft:c===m?.id?u:m?y4(m):u,onOpenChange:v,onStartEdit:g,onDraftChange:d,onCancelEdit:h,onAccept:y,onDismiss:x})]})},T4=()=>({selectedDiffPath:`all`,activeReviewTarget:null,editingReviewCommentKey:null,reviewDraftInput:``,reviewComments:[]}),E4=[{key:`today`,label:`Today`},{key:`yesterday`,label:`Yesterday`},{key:`last_7_days`,label:`Last 7 Days`},{key:`older`,label:`Older`}],D4=e=>{if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},O4=e=>e.activity_at??e.last_user_message_at??e.created_at,k4=(e,t)=>{let n=O4(e),r=O4(t);return n===r?e.created_at===t.created_at?t.id.localeCompare(e.id):t.created_at.localeCompare(e.created_at):r.localeCompare(n)},A4=e=>[...e].sort(k4),j4=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),M4=(e,t=new Date)=>{let n=D4(O4(e));if(!n)return`older`;let r=j4(t),i=new Date(r);i.setDate(i.getDate()-1);let a=new Date(r);return a.setDate(a.getDate()-6),n>=r?`today`:n>=i?`yesterday`:n>=a?`last_7_days`:`older`},N4=(e,t=new Date)=>{let n=new Map;for(let r of A4(e)){let e=M4(r,t);n.set(e,[...n.get(e)??[],r])}return E4.flatMap(e=>{let t=n.get(e.key)??[];return t.length===0?[]:[{key:e.key,label:e.label,sessions:t}]})},P4=e=>{let t={...e};return delete t.messages,t.agent_log=null,t.streaming_response=null,t},F4=1500,I4=`archon.chat-run-config`,L4=`archon.chat-changes-panel-layout`,R4=`archon.chat-session-list-layout`,z4=`archon.chat-draft`,B4=512,V4=360,H4=.6,U4=6,W4=`.`,G4=`/`,K4=`Slash`,q4=`NumpadDivide`,J4=600,Y4=(e,t)=>{let n=Number.isFinite(e)?Math.round(e):B4;if(!Number.isFinite(t))return Math.max(V4,n);let r=Math.max(V4,Math.round(t*H4));return Math.max(V4,Math.min(r,n))},X4=e=>e===`claude`?`Claude`:`OpenCode`,Z4=({availableModelsById:e,model:t})=>t?e.get(t)??t:null,Q4=e=>e===`plan`?`Plan`:`Build`,$4=e=>e===`plan`?`Ask Archon to scope, sequence, or reason through project work`:`Ask Archon to build, change, or verify something in this project`,e3=e=>`${e} pending memory suggestion${e===1?``:`s`}`,t3=e=>e===`plan`?`build`:`plan`,n3=e=>!e.defaultPrevented&&!e.altKey&&!e.shiftKey&&!e.repeat&&(e.ctrlKey||e.metaKey)&&e.key===W4,r3=e=>!e.defaultPrevented&&!e.altKey&&!e.repeat&&(e.ctrlKey||e.metaKey)&&(e.key===G4||e.code===K4||e.code===q4),i3=()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData?.platform??navigator.platform??navigator.userAgent;return/mac/i.test(e)},a3=()=>i3()?`CMD`:`CTRL`,o3=({modifierLabel:e,keys:t,ariaHidden:n=!1})=>(0,q.jsxs)(`span`,{"aria-hidden":n,className:`flex items-center gap-0.5 text-[10px] leading-none`,children:[(0,q.jsx)(v_,{"aria-hidden":n,children:e}),t.map(e=>(0,q.jsxs)(`span`,{className:`contents`,children:[(0,q.jsx)(`span`,{children:`+`}),(0,q.jsx)(v_,{"aria-hidden":n,children:e})]},e))]}),s3=({label:e,modifierLabel:t,keys:n})=>(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:e}),(0,q.jsx)(o3,{modifierLabel:t,keys:n,ariaHidden:!0})]}),c3=({modelLabel:e,tool:t})=>e??X4(t),l3=()=>`You`,u3=e=>{if(!Number.isFinite(e))return`0`;if(e>=1e6){let t=e/1e6,n=t<10?2:1;return`${t.toFixed(n)}M`}return e>=1e3?`${(e/1e3).toFixed(1)}K`:`${Math.round(e)}`},d3=({totalTokens:e,contextWindow:t})=>!Number.isFinite(e)||!Number.isFinite(t)||t<=0?null:Math.round(e/t*100),f3=({tool:e,model:t,availableModels:n,fallbackContextWindow:r})=>e===`opencode`?(n.find(e=>e.id===t)??null)?.context_window??r:r,p3=({projectId:e,tool:t})=>`${I4}:${e}:${t}`,m3=({projectId:e,tool:t,chatSessionId:n})=>n?`${z4}:${e}:session:${n}`:`${z4}:${e}:draft:${t}`,h3=e=>`${L4}:${e}`,g3=e=>`${R4}:${e}`,_3=e=>{if(!e)return``;try{return window.localStorage.getItem(e)??``}catch{return``}},v3=({storageKey:e,value:t})=>{if(e)try{if(t){window.localStorage.setItem(e,t);return}window.localStorage.removeItem(e)}catch{}},y3=e=>{if(!e)return{isOpen:!0,width:B4};try{let t=window.localStorage.getItem(h3(e));if(!t)return{isOpen:!0,width:B4};let n=JSON.parse(t),r=typeof n.width==`number`&&Number.isFinite(n.width)?Math.max(V4,Math.round(n.width)):B4;return{isOpen:n.isOpen!==!1,width:r}}catch{return{isOpen:!0,width:B4}}},b3=e=>{if(!e)return{isOpen:!0};try{let t=window.localStorage.getItem(g3(e));return t?{isOpen:JSON.parse(t).isOpen!==!1}:{isOpen:!0}}catch{return{isOpen:!0}}},x3=({projectId:e,isOpen:t,width:n})=>{if(e)try{window.localStorage.setItem(h3(e),JSON.stringify({isOpen:t,width:n}))}catch{}},S3=({projectId:e,isOpen:t})=>{if(e)try{window.localStorage.setItem(g3(e),JSON.stringify({isOpen:t}))}catch{}},C3=({projectId:e,tool:t})=>{if(!e||t!==`opencode`)return null;try{let n=window.localStorage.getItem(p3({projectId:e,tool:t}));if(!n)return null;let r=JSON.parse(n),i=(typeof r.model==`string`?r.model.trim():``)||null,a=r.mode===`plan`||r.mode===`build`?r.mode:null;return!i&&!a?null:{model:i,variant:i&&typeof r.variant==`string`&&r.variant.trim()||null,mode:a}}catch{return null}},w3=({projectId:e,tool:t,model:n,variant:r,mode:i})=>{if(!(!e||t!==`opencode`||!n&&!i))try{window.localStorage.setItem(p3({projectId:e,tool:t}),JSON.stringify({model:n,variant:n?r:null,mode:i}))}catch{}},T3=({projectId:e,tool:t})=>C3({projectId:e,tool:t})?.mode??`plan`,E3=({activeProjectId:e,helperModel:t,helperVariant:n,activeTool:r,availableModels:i})=>{let a=C3({projectId:e,tool:r}),o=new Set(i.map(e=>e.id)),s=e=>e?o.size===0?!0:o.has(e):!1,c=t??``,l=a?.model??``,u=s(l)?l:s(c)?c:``,d=u===l?a?.variant??null:u&&u===c?n??null:null,f=i.find(e=>e.id===u)??null;return{model:u,variant:f?f.variants.includes(d??``)?d??``:``:u?d??``:``,mode:a?.mode??`plan`}},D3=e=>e&&e.replace(/\s+/g,` `).trim()||null,O3=e=>{let t=D3(e.first_user_message_preview);if(t)return t;let n=e.messages?.find(e=>e.role===`user`)?.content;return D3(n)},k3=({chatSessionId:e,instruction:t,createdAt:n})=>({id:`optimistic:${e}:${n}`,chat_session_id:e,role:`user`,kind:`prompt`,content:t,created_at:n}),A3=({session:e,instruction:t,createdAt:n})=>({...e,messages:[...e.messages??[],k3({chatSessionId:e.id,instruction:t,createdAt:n})],activity_at:n,last_user_message_at:n,updated_at:n}),j3=e=>!!(e.first_user_message_preview||e.last_user_message_at||e.messages?.some(e=>e.role===`user`)),M3=({activeProject:e,activeProjectBranchState:t,session:n})=>!e||n.target_available===!1?!1:n.target_kind===`bundle`?e.active_target_kind===`bundle`&&!!n.target_bundle_id&&e.active_target_bundle_id===n.target_bundle_id:e.active_target_kind===`bundle`?!1:t?!n.target_branch_snapshot||t?.status!==`ready`||!t.branch?!1:t.branch===n.target_branch_snapshot:!0,N3=e=>e.target_kind===`bundle`?e.target_label_snapshot||`Bundle target`:null,P3=e=>e.target_kind===`bundle`?N3(e)||`Bundle target`:e.target_branch_snapshot?`Repo root (${e.target_branch_snapshot})`:`Repo root`,F3=({activeProject:e,activeProjectBranchState:t})=>e?e.active_target_kind===`bundle`?`selected bundle target`:t?.branch?`Repo root (${t.branch})`:`Repo root`:`current target`,I3=({title:e,isDeleting:t,onConfirm:n,onCancel:r})=>(0,q.jsxs)(Lv,{onClose:r,overlayClassName:`bg-black/60`,panelClassName:`max-w-sm rounded-2xl border border-border bg-card p-6 shadow-2xl`,children:[(0,q.jsx)(`h2`,{className:`mb-3 text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:`Delete chat session`}),(0,q.jsx)(`p`,{className:`mb-1 text-sm text-foreground`,children:e}),(0,q.jsx)(`p`,{className:`mb-6 text-xs text-muted-foreground`,children:`This permanently removes the transcript history for this chat session.`}),(0,q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,q.jsx)(Y,{type:`button`,variant:`ghost`,onClick:r,disabled:t,children:`Cancel`}),(0,q.jsx)(Y,{type:`button`,variant:`destructive`,onClick:n,disabled:t,children:t?`Deleting...`:`Delete`})]})]}),L3=({activeProject:e,activeSessionId:t,chatModeShortcutModifierLabel:n,confirmingDeleteSessionId:r,deletingSessionId:i,finishedBackgroundSessionIds:a,isCreatingSession:o,isDraftOpen:s,isLoadingSessions:c,isOpen:l,isSendingPrompt:u,sessionGroups:d,sessions:f,onConfirmDeleteSession:p,onDraftOpen:m,onSessionSelect:h,onToggleOpen:g})=>(0,q.jsx)(`aside`,{"data-testid":`chat-sessions-sidebar`,"data-state":l?`expanded`:`collapsed`,"aria-label":`Chat sessions sidebar`,className:J(`relative z-20 flex h-full shrink-0 flex-col overflow-hidden border-r border-border/70 bg-background/40 transition-[width] duration-200 ease-out motion-reduce:transition-none`,l?`w-72`:`w-16`),children:l?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-start gap-2 border-b border-border/70 px-4 py-3`,children:[(0,q.jsxs)(Y,{type:`button`,size:`sm`,className:`gap-2`,onClick:m,disabled:o||u,children:[(0,q.jsx)(Dv,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:`New session`}),(0,q.jsx)(o3,{modifierLabel:n,keys:[G4],ariaHidden:!0})]}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Collapse sessions panel`,"aria-expanded":l,className:`ml-auto`,onClick:g,children:(0,q.jsx)(Z2,{className:`h-4 w-4`})})]}),(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-2`,children:c&&f.length===0?(0,q.jsx)(`div`,{className:`px-2 py-4 text-sm text-muted-foreground`,children:`Loading chat sessions...`}):f.length===0?(0,q.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/70 px-3 py-4 text-sm text-muted-foreground`,children:`No chat sessions yet.`}):(0,q.jsx)(`div`,{className:`flex flex-col gap-3`,children:d.map(n=>(0,q.jsxs)(`section`,{"aria-label":n.label,className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(`div`,{className:`px-2 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/80`,children:n.label}),n.sessions.map(n=>{let o=!s&&n.id===t,c=O3(n),l=N3(n),u=n.agent_status===`running`?`Wait for the current chat response to finish before deleting this session.`:null,d=r===n.id||i===n.id,f=!!u||i===n.id,m=n.agent_status===`running`?`running`:n.agent_status===`stopped`?`interrupted`:!o&&a.has(n.id)?`finished`:null,g=m===`interrupted`?null:m;return(0,q.jsxs)(`div`,{className:J(`group relative rounded-xl border transition-colors`,o?`border-sky-400/40 bg-sky-500/10 text-foreground ring-1 ring-sky-400/40`:`border-border/50 bg-card/35 text-muted-foreground hover:border-border/80 hover:bg-card/60 hover:text-foreground`),children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":[n.title,Q4(n.mode),X4(n.tool),e?.memory_enabled&&n.pending_memory_suggestion_count>0?e3(n.pending_memory_suggestion_count):null,m===`running`?`Running`:m===`interrupted`?`Interrupted`:m===`finished`?`Finished`:null].filter(Boolean).join(` `),className:`flex w-full min-w-0 cursor-pointer items-start gap-2 rounded-xl px-3 py-2 pr-11 text-left transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:outline-none`,onClick:()=>{h(n)},children:(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[l?(0,q.jsx)(`div`,{className:`mb-1 truncate text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground/75`,children:l}):null,(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-[13px] font-medium leading-5`,children:n.title}),e?.memory_enabled&&n.pending_memory_suggestion_count>0?(0,q.jsx)(_4,{tone:o?`default`:`muted`,className:`shrink-0`,"aria-label":e3(n.pending_memory_suggestion_count),title:e3(n.pending_memory_suggestion_count),children:n.pending_memory_suggestion_count}):null]}),c?(0,q.jsx)(`div`,{className:J(`mt-0.5 line-clamp-1 text-xs leading-4`,o?`text-foreground/70`:`text-muted-foreground`),children:c}):null,n.target_available===!1?(0,q.jsx)(`div`,{className:`mt-1 line-clamp-1 text-[11px] leading-4 text-amber-200/90`,children:n.target_unavailable_reason??`Target unavailable`}):null]}),(0,q.jsx)($2,{state:g,className:`mt-1`})]})}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Delete chat session`,className:J(`absolute top-2 right-2 h-7 w-7 shrink-0 rounded-md border border-transparent text-muted-foreground transition-all duration-150 hover:border-border/70 hover:bg-card/80 hover:text-foreground focus-visible:border-border/70 focus-visible:bg-card/80 focus-visible:text-foreground`,`opacity-100 sm:opacity-0 sm:pointer-events-none sm:group-hover:pointer-events-auto sm:group-focus-within:pointer-events-auto sm:group-hover:opacity-100 sm:group-focus-within:opacity-100`,f&&`sm:disabled:opacity-0 sm:group-hover:disabled:opacity-50 sm:group-focus-within:disabled:opacity-50`,(o||d)&&`sm:pointer-events-auto sm:opacity-100 sm:disabled:opacity-50`,u&&`cursor-not-allowed text-muted-foreground/50 hover:border-transparent hover:bg-transparent hover:text-muted-foreground/50 focus-visible:border-transparent focus-visible:bg-transparent focus-visible:text-muted-foreground/50`),title:u??`Delete ${n.title}`,disabled:f,onClick:e=>{e.stopPropagation(),p(n.id)},children:(0,q.jsx)(Jv,{className:`h-4 w-4`})})]},n.id)})]},n.key))})})]}):(0,q.jsxs)(`div`,{"data-testid":`chat-sessions-rail`,className:`flex h-full w-full flex-col items-center gap-2 bg-background/80 py-3`,children:[(0,q.jsx)(d_,{content:(0,q.jsx)(s3,{label:`Start new session`,modifierLabel:n,keys:[G4]}),side:`right`,children:(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,"aria-label":`New session`,className:`h-9 w-9`,onClick:m,disabled:o||u,children:(0,q.jsx)(Dv,{className:`h-4 w-4`})})}),(0,q.jsx)(Y,{type:`button`,size:`icon-sm`,variant:`ghost`,"aria-label":`Open sessions panel`,"aria-expanded":l,className:`h-9 w-9`,onClick:g,children:(0,q.jsx)(Q2,{className:`h-4 w-4`})})]})}),R3=({proposals:e,isApplying:t,onApply:n})=>e.status===`applied`?(0,q.jsxs)(`div`,{className:`w-full rounded-md border border-emerald-500/30 bg-emerald-500/10 px-3 py-3 text-sm`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Tickets created`}),(0,q.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[`Created `,e.created_tickets.length,` ticket`,e.created_tickets.length===1?``:`s`,` from this proposal.`]}),e.created_tickets.length>0?(0,q.jsx)(`ul`,{className:`mt-3 space-y-1 text-foreground`,children:e.created_tickets.map(e=>(0,q.jsx)(`li`,{children:e.title},e.ticket_id))}):null]}):(0,q.jsxs)(`div`,{className:`w-full rounded-md border border-sky-500/30 bg-sky-500/10 px-3 py-3 text-sm`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Proposed tickets`}),(0,q.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:`Review these tickets before adding them to the board.`}),(0,q.jsx)(`ul`,{className:`mt-3 space-y-3`,children:e.tickets.map(e=>(0,q.jsxs)(`li`,{className:`rounded border border-border/60 bg-background/80 px-3 py-2`,children:[(0,q.jsx)(`div`,{className:`font-medium text-foreground`,children:e.title}),(0,q.jsx)(`div`,{className:`mt-1 whitespace-pre-wrap text-muted-foreground`,children:e.description})]},e.key))}),e.dependencies.length>0?(0,q.jsxs)(`div`,{className:`mt-3 text-muted-foreground`,children:[`Dependencies: `,e.dependencies.map(e=>`${e.blocker_key} -> ${e.dependent_key}`).join(`, `)]}):null,(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(Y,{type:`button`,size:`sm`,onClick:n,disabled:t,children:t?`Creating tickets...`:`Create tickets`})})]}),z3=({activeProjectId:e,activeProject:t,activeProjectBranchState:n=null,activeTool:r,onRestoreSessionTarget:i,onReviewCapabilityChange:a,isExternallyResizing:o=!1,showChangesPanel:s=!0})=>{let[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)(null),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(()=>T3({projectId:e,tool:r})),[x,S]=(0,b.useState)({}),[C,w]=(0,b.useState)([]),[E,D]=(0,b.useState)([]),[O,k]=(0,b.useState)(``),[A,j]=(0,b.useState)(``),[M,N]=(0,b.useState)([]),[P,F]=(0,b.useState)(!1),[I,L]=(0,b.useState)(!1),[R,z]=(0,b.useState)(!1),[ee,B]=(0,b.useState)(!1),[V,H]=(0,b.useState)(!1),[te,U]=(0,b.useState)(null),[ne,W]=(0,b.useState)(null),[re,ie]=(0,b.useState)(null),[ae,G]=(0,b.useState)(!1),[oe,se]=(0,b.useState)(!1),[ce,le]=(0,b.useState)(null),[ue,de]=(0,b.useState)([]),[K,fe]=(0,b.useState)(!1),[pe,me]=(0,b.useState)(!1),[he,ge]=(0,b.useState)(0),[_e,ve]=(0,b.useState)(T4),[ye,be]=(0,b.useState)(()=>b3(e).isOpen),[xe,Se]=(0,b.useState)(()=>y3(e).isOpen),[Ce,we]=(0,b.useState)(!1),[Te,Ee]=(0,b.useState)(!1),[De,Oe]=(0,b.useState)(()=>y3(e).width),[ke,Ae]=(0,b.useState)(0),[je,Me]=(0,b.useState)(null),[Ne,Pe]=(0,b.useState)(()=>new Set),Fe=(0,b.useRef)({model:``,variant:``,skills:[],showModelSelector:!1}),Ie=(0,b.useRef)(!1),Le=(0,b.useRef)(null),Re=(0,b.useRef)(null),ze=(0,b.useRef)(null),Be=(0,b.useRef)(null),Ve=(0,b.useRef)(null),He=(0,b.useRef)(null),Ue=(0,b.useRef)(null),We=(0,b.useRef)(!1),Ge=(0,b.useRef)(!1),Ke=(0,b.useRef)(0),qe=(0,b.useRef)(B4),Je=(0,b.useRef)(B4),Ye=(0,b.useRef)(!1),Xe=(0,b.useRef)(0),Ze=(0,b.useRef)({id:null,status:null}),Qe=(0,b.useRef)(new Map),$e=(0,b.useRef)({}),et=(0,b.useRef)(new Set),tt=(0,b.useRef)(!1),nt=e?m3({projectId:e,tool:g?r:f?.tool??r,chatSessionId:g?null:u}):null,rt=nt?x[nt]??``:``,it=g?r:f?.tool??r;(0,b.useEffect)(()=>{Ie.current=g},[g]),(0,b.useEffect)(()=>{$e.current=x},[x]),(0,b.useEffect)(()=>{if(!nt||et.current.has(nt))return;et.current.add(nt);let e=_3(nt);e&&S(t=>Object.prototype.hasOwnProperty.call(t,nt)?t:{...t,[nt]:e})},[nt]),(0,b.useEffect)(()=>{!nt||!Object.prototype.hasOwnProperty.call(x,nt)||v3({storageKey:nt,value:x[nt]??``})},[nt,x]),(0,b.useEffect)(()=>{Le.current=u},[u]),(0,b.useEffect)(()=>{if(!tt.current){tt.current=!0;return}let t=y3(e),n=b3(e);Ie.current=!1,Ye.current=!1,et.current=new Set,d(null),p(null),_(!1),S({}),U(null),W(null),ie(null),Me(null),de([]),me(!1),L(!1),ve(T4()),Pe(new Set),Qe.current=new Map,Je.current=t.width,be(n.isOpen),Oe(t.width),Se(t.isOpen)},[e]),(0,b.useEffect)(()=>{Ce||(Je.current=De,Be.current&&(Be.current.style.setProperty(`--chat-changes-panel-width`,`${De}px`),Be.current.setAttribute(`data-desktop-width`,String(De))))},[De,Ce]),(0,b.useEffect)(()=>{if(!s||!Re.current)return;let e=Re.current.getBoundingClientRect().width;if(e<=0)return;let t=Y4(De,e);t!==De&&(Je.current=t,Oe(t))},[De,s]),(0,b.useEffect)(()=>{S3({projectId:e,isOpen:ye})},[e,ye]),(0,b.useEffect)(()=>{s&&x3({projectId:e,isOpen:xe,width:De})},[e,De,xe,s]),(0,b.useEffect)(()=>{me(!1)},[u,g]);let at=(0,b.useCallback)(e=>{let t=P4(e);l(e=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return A4([...e,t]);let r=[...e];return r[n]=t,A4(r)})},[]),ot=(0,b.useCallback)(t=>{let n=Le.current,i=e?m3({projectId:e,tool:r,chatSessionId:t}):null;S(e=>{if(!i||!Object.prototype.hasOwnProperty.call(e,i))return e;let t={...e};return delete t[i],t}),v3({storageKey:i,value:``}),l(e=>{let r=e.filter(e=>e.id!==t);if(n===t){let e=r[0]??null;d(e?.id??null),p(null),_(e===null),de([]),fe(!1),me(!1)}return r}),Pe(e=>{if(!e.has(t))return e;let n=new Set(e);return n.delete(t),n}),Me(e=>e?.sessionId===t?null:e),U(e=>e===t?null:e),W(e=>e===t?null:e),ie(e=>e===t?null:e)},[e,r]),st=(0,b.useCallback)((e,t)=>{e&&S(n=>n[e]===t?n:{...n,[e]:t})},[]),ct=(0,b.useCallback)(e=>{e&&(S(t=>t[e]===``?t:{...t,[e]:``}),v3({storageKey:e,value:``}))},[]),lt=(0,b.useCallback)(({fromStorageKey:e,toStorageKey:t})=>{if(!e||!t||e===t)return;let n=Object.prototype.hasOwnProperty.call($e.current,e)?$e.current[e]??``:_3(e);S(r=>{let i={...r,[t]:n};return delete i[e],i}),v3({storageKey:t,value:n}),v3({storageKey:e,value:``})},[]),ut=(0,b.useCallback)((e,t)=>{l(n=>{let r=n.findIndex(t=>t.id===e);if(r===-1)return n;let i=n[r];if(i.pending_memory_suggestion_count===t)return n;let a=[...n];return a[r]={...i,pending_memory_suggestion_count:t},a}),p(n=>!n||n.id!==e||n.pending_memory_suggestion_count===t?n:{...n,pending_memory_suggestion_count:t})},[]),ft=(0,b.useCallback)(async r=>{if(!e){l([]),d(null),p(null),_(!1),L(!1);return}F(!0);try{let i=await iO(e,r);if(r?.aborted)return;let a=A4(i.map(P4)),o=a[0]??null,s=t?.active_target_kind===`bundle`||n?.status!==`loading`;l(a),d(e=>Ie.current?null:e&&a.some(t=>t.id===e)?e:e?a[0]?.id??null:Ye.current?null:o?s?(Ye.current=!0,M3({activeProject:t,activeProjectBranchState:n,session:o})?o.id:null):null:(Ye.current=!0,null)),a.length===0&&_(!0)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load chat sessions right now.`)}finally{r?.aborted||(F(!1),L(!0))}},[t,n,e]),pt=(0,b.useCallback)(async(t,n)=>{if(!e){p(null);return}z(!0);try{let r=await oO(e,t,n);if(n?.aborted)return;p(r),at(r)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load the chat session right now.`)}finally{n?.aborted||z(!1)}},[e,at]),mt=(0,b.useCallback)(async(n,r)=>{if(!e||!t?.memory_enabled){de([]),fe(!1);return}fe(!0);try{let t=await dt(e,null,r,n);if(r?.aborted)return;de(t.suggestions),ut(n,t.suggestions.length)}catch(e){T(e)||X.error(e instanceof Error?e.message:`Unable to load chat memory suggestions right now.`)}finally{r?.aborted||fe(!1)}},[t?.memory_enabled,e,ut]),ht=(0,b.useCallback)(()=>{de(e=>{let t=e.length>0?e.slice(0,-1):e;return u&&ut(u,t.length),t}),ge(e=>e+1),ft(),u&&pt(u)},[u,pt,ft,ut]);(0,b.useEffect)(()=>{let e=new AbortController;return ft(e.signal),()=>{e.abort()}},[ft]),(0,b.useEffect)(()=>{if(Ie.current||g||u||Ye.current||c.length===0||t?.active_target_kind!==`bundle`&&n?.status===`loading`)return;Ye.current=!0;let e=c[0]??null;e&&M3({activeProject:t,activeProjectBranchState:n,session:e})&&d(e.id)},[t,n,u,g,c]),(0,b.useEffect)(()=>{if(it!==`opencode`){w([]),D([]),se(!1);return}let t=new AbortController;return(async()=>{se(!0);try{let[n,r]=await Promise.all([_t(it,t.signal),bj(it,t.signal,e)]);w(n),D(r)}catch(e){T(e)||(w(e=>e),D(e=>e))}finally{t.signal.aborted||se(!1)}})(),()=>{t.abort()}},[e,it]),(0,b.useEffect)(()=>{if(g||!u){p(null);return}if(f?.id===u)return;p(null);let e=new AbortController;return pt(u,e.signal),()=>{e.abort()}},[f,u,g,pt]),(0,b.useEffect)(()=>{if(!t?.memory_enabled||g||!u){de([]),fe(!1);return}let e=new AbortController;return mt(u,e.signal),()=>{e.abort()}},[t?.memory_enabled,u,g,mt,he]),(0,b.useEffect)(()=>{!pe||K||ue.length>0||me(!1)},[K,pe,ue.length]),(0,b.useEffect)(()=>{if(!u||f?.agent_status!==`running`)return;let e=new AbortController,t=window.setInterval(()=>{Promise.all([ft(e.signal),pt(u,e.signal)])},F4);return()=>{e.abort(),window.clearInterval(t)}},[f?.agent_status,u,pt,ft]),(0,b.useEffect)(()=>{if(!e)return;let t=t=>{!t||t.project_id!==e||(t.id===u&&p(t),j3(t)&&at(t))},n=t=>{!t||t.project_id!==e||ot(t.id)};return DZ.on(`chat-session:created`,t),DZ.on(`chat-session:updated`,t),DZ.on(`chat-session:deleted`,n),()=>{DZ.off(`chat-session:created`,t),DZ.off(`chat-session:updated`,t),DZ.off(`chat-session:deleted`,n)}},[e,u,ot,at]),(0,b.useEffect)(()=>{g&&y(T3({projectId:e,tool:r}))},[e,r,g]),(0,b.useEffect)(()=>{if(it!==`opencode`){k(``),j(``),N([]);return}if(g){let n=E3({activeProjectId:e,helperModel:t?.helper_model??null,helperVariant:t?.helper_variant??null,activeTool:it,availableModels:C});k(n.model),j(n.variant),N([]);return}k(f?.model??t?.helper_model??``),j(f?.variant??t?.helper_variant??``),N(f?.skills??[])},[e,t?.helper_model,t?.helper_variant,f?.id,f?.model,f?.skills,f?.variant,C,it,g]),(0,b.useEffect)(()=>{let e=C.find(e=>e.id===O)??null;j(t=>e?e.variants.includes(t)?t:``:t)},[C,O]),(0,b.useEffect)(()=>{if(it!==`opencode`||!g||!O||A)return;let n=E3({activeProjectId:e,helperModel:t?.helper_model??null,helperVariant:t?.helper_variant??null,activeTool:it,availableModels:C});n.model===O&&n.variant&&j(n.variant)},[e,t?.helper_model,t?.helper_variant,it,C,g,O,A]),(0,b.useEffect)(()=>{if(!te)return;let e=f?.id===te?f:c.find(e=>e.id===te)??null;(!e||e.agent_status!==`running`)&&U(null)},[f,te,c]),(0,b.useEffect)(()=>{let e=Ze.current,n=f?.id??null,r=f?.agent_status??null;e.id===n&&e.status===`running`&&r===`done`&&t?.memory_enabled&&n&&ge(e=>e+1),Ze.current={id:n,status:r}},[t?.memory_enabled,e,f?.agent_status,f?.id,f?.title]),(0,b.useEffect)(()=>{u&&Pe(e=>{if(!e.has(u))return e;let t=new Set(e);return t.delete(u),t})},[u]),(0,b.useEffect)(()=>{je&&je.sessionId!==u&&Me(null)},[u,je]),(0,b.useEffect)(()=>{let e=Qe.current,t=new Map,n=[];for(let r of c){let i=e.get(r.id)??null,a=r.agent_status??null;i===`running`&&a===`done`&&r.id!==u&&n.push(r),t.set(r.id,a)}Qe.current=t,Pe(e=>{let t=new Set(e),r=!1,i=new Set(c.map(e=>e.id));for(let e of t)i.has(e)||(t.delete(e),r=!0);for(let e of c){let i=e.agent_status??null,a=n.some(t=>t.id===e.id);if((e.id===u||i!==`done`)&&t.delete(e.id)){r=!0;continue}a&&!t.has(e.id)&&(t.add(e.id),r=!0)}return r?t:e})},[e,u,c]);let gt=(0,b.useMemo)(()=>new Map(C.map(e=>[e.id,e.label])),[C]),vt=(0,b.useMemo)(()=>N4(c),[c]),yt=(0,b.useMemo)(()=>ne?c.find(e=>e.id===ne)??(f?.id===ne?f:null):null,[f,ne,c]);(0,b.useEffect)(()=>{ne&&!yt&&W(null)},[ne,yt]);let bt=(0,b.useMemo)(()=>f?c3({modelLabel:Z4({availableModelsById:gt,model:f.model}),tool:f.tool}):null,[f,gt]),xt=(0,b.useMemo)(()=>f?(f.messages??[]).map(e=>({id:e.id,role:e.role,kind:e.kind,content:e.content,ticket_proposals:e.ticket_proposals??null,created_at:e.created_at,displayTitle:e.role===`assistant`?bt??X4(f.tool):l3()})):[],[f,bt]),St=f?.id&&f.agent_status===`running`&&je?.sessionId===f.id?je.turnKey:null,Ct=it===`opencode`&&C.length>0,wt=it===`opencode`&&!Ct&&oe;(0,b.useEffect)(()=>{Fe.current={model:O,variant:A,skills:M,showModelSelector:Ct}},[O,M,A,Ct]);let Tt=(0,b.useMemo)(()=>C.find(e=>e.id===O)??null,[C,O]),Et=g?v:f?.mode??`build`,Dt=g?`New chat`:f?.title??`Chat`,Ot=g?r:f?.tool??r,kt=(0,b.useMemo)(()=>a3(),[]),At=Ct?O||null:f?.model??null,jt=Z4({availableModelsById:gt,model:At}),Mt=(0,b.useMemo)(()=>{let e=f?.usage_snapshot_total_tokens??null;if(e===null)return null;let t=f3({tool:Ot,model:At,availableModels:C,fallbackContextWindow:f?.usage_snapshot_context_window??null});if(t===null)return null;let n=d3({totalTokens:e,contextWindow:t});return n===null?null:`${u3(e)} (${n}%)`},[f?.usage_snapshot_context_window,f?.usage_snapshot_total_tokens,C,At,Ot]),Nt=g?`draft:${e??`none`}:${r}`:f?.id,Pt=(0,b.useCallback)(()=>{Ie.current=!0,_(!0),y(T3({projectId:e,tool:r})),h(null),d(null),p(null),U(null),Me(null)},[e,r]),Ft=(0,b.useCallback)((e,t=null)=>{Ie.current=!1,_(!1),h(null),d(e),p(t)},[]),It=(0,b.useCallback)(async()=>{if(!(!f||!i)){h(f.id);try{await i(f)}catch(e){X.error(e instanceof Error?e.message:`Unable to restore the chat target right now.`)}finally{h(e=>e===f.id?null:e)}}},[f,i]),Lt=!!(f&&f.target_available!==!1&&!g&&!M3({activeProject:t,activeProjectBranchState:n,session:f})),Rt=Lt&&f?`This session targets ${P3(f)}, but the current target is ${F3({activeProject:t,activeProjectBranchState:n})}. Restore the session target to continue.`:null,zt=Lt&&m===null,Bt=(0,b.useCallback)(async r=>{h(r.id);let a=r;if(e)try{let t=await oO(e,r.id);a=t,at(t)}catch(e){X.error(e instanceof Error?e.message:`Unable to load the chat session right now.`),h(e=>e===r.id?null:e);return}if(a.target_available===!1){Ft(a.id,a);return}if(!M3({activeProject:t,activeProjectBranchState:n,session:a})&&i)try{if(!await i(a)){h(e=>e===a.id?null:e);return}}catch(e){X.error(e instanceof Error?e.message:`Unable to restore the chat target right now.`),h(e=>e===a.id?null:e);return}Ft(a.id,a)},[t,n,e,i,Ft,at]),Vt=(0,b.useCallback)(()=>{Ae(e=>e+1)},[]),Ht=(0,b.useCallback)(async t=>{if(g){let n=Fe.current;y(t),w3({projectId:e,tool:r,model:n.showModelSelector&&n.model||null,variant:n.showModelSelector&&n.model&&n.variant||null,mode:t}),Vt();return}if(!(!e||!f||f.mode===t||ae)){G(!0);try{let n=await sO(e,f.id,{mode:t});w3({projectId:e,tool:n.tool,model:n.model,variant:n.variant,mode:n.mode}),p(n),at(n),Vt()}catch(e){X.error(e instanceof Error?e.message:`Unable to update the chat mode right now.`)}finally{G(!1)}}},[e,f,r,Vt,g,ae,at]),Ut=(0,b.useCallback)(async({instruction:t,targetSession:n})=>{if(!e)return null;let r=Fe.current;Xe.current+=1;let i={sessionId:n.id,turnKey:`${n.id}:${Xe.current}`};Me(i);try{let i=await cO(e,n.id,{instruction:t,tool:n.tool,model:r.showModelSelector&&r.model||null,variant:r.showModelSelector&&r.model&&r.variant||null,skills:r.showModelSelector?r.skills:[]});return w3({projectId:e,tool:i.tool,model:i.model,variant:i.variant,mode:i.mode}),Ie.current=!1,p(i),d(i.id),_(!1),at(i),i}catch(e){throw Me(e=>e?.turnKey===i.turnKey?null:e),e}},[e,at]),Wt=(0,b.useCallback)(async()=>{if(!e)return null;let t=Fe.current,n=await aO(e,{mode:Et,tool:r,model:t.showModelSelector&&t.model||null,variant:t.showModelSelector&&t.model&&t.variant||null,skills:t.showModelSelector?t.skills:[]});return Ie.current=!1,_(!1),d(n.id),p(n),n},[e,r,Et]),Gt=(0,b.useCallback)(async t=>{if(!e||V||ee||f?.agent_status===`running`||f?.target_available===!1||zt)return!1;let n=t.trim();if(!n)return!1;H(!0);let r=null,i=f,a=e&&f?m3({projectId:e,tool:f.tool,chatSessionId:f.id}):null;try{let t=f;if(t||(B(!0),r=await Wt(),t=r,a=e&&r?m3({projectId:e,tool:r.tool,chatSessionId:r.id}):null,lt({fromStorageKey:nt,toStorageKey:a})),!t)return!1;ct(a??nt);let i=A3({session:t,instruction:n,createdAt:new Date().toISOString()});p(i),d(i.id),at(i);let o=await Ut({instruction:n,targetSession:t});return ct(o&&e?m3({projectId:e,tool:o.tool,chatSessionId:o.id}):a),!0}catch(e){throw st(a??nt,n),r?(p(r),d(r.id),_(!1),at(r)):i&&(p(i),at(i)),e}finally{B(!1),H(!1)}},[e,f,ct,Wt,nt,ee,V,lt,Ut,st,zt,at]),Kt=(0,b.useCallback)(async e=>{await Gt(e)},[Gt]),qt=!!(e&&(g||f&&f.target_available!==!1&&!zt)),Jt=f?.agent_status===`running`,Yt=f?.agent_status===`stopped`,Xt=Jt&&te===f?.id,Zt=qt&&!Jt&&!V&&!ee,Qt=qt?f?.target_available===!1?f.target_unavailable_reason??`Target unavailable for this chat session.`:zt?Rt??`Restore the session target to continue.`:Jt?`Wait for the current chat turn to finish before sending review comments.`:ee||V?`Wait for the current chat prompt to finish sending before submitting review comments.`:null:`Open or create a chat session to send review comments.`,$t=(0,b.useCallback)(async()=>{if(!(!e||!f||f.agent_status!==`running`||Xt)){U(f.id);try{await lO(e,f.id)}catch(e){U(e=>e===f.id?null:e),X.error(e instanceof Error?e.message:`Unable to interrupt the chat response right now.`)}}},[e,f,Xt]),en=(0,b.useCallback)(async()=>{if(!(!e||!yt||re)){ie(yt.id);try{await uO(e,yt.id),ot(yt.id)}catch(e){X.error(e instanceof Error?e.message:`Unable to delete the chat session right now.`),ie(e=>e===yt.id?null:e)}}},[e,re,ot,yt]),tn=(0,b.useMemo)(()=>(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(f_,{value:Et,items:[{value:`plan`,label:`Plan`,activeVariant:`ghost`,activeClassName:`border-transparent bg-sky-300 text-[#07111a] shadow-[0_10px_30px_rgba(125,211,252,0.24)] hover:bg-sky-200 hover:text-[#07111a]`,inactiveClassName:`border-transparent text-white/85 hover:bg-white/8 hover:text-white`,inactiveTooltip:(0,q.jsx)(s3,{label:`Switch to Plan`,modifierLabel:kt,keys:[W4]})},{value:`build`,label:`Build`,activeVariant:`ghost`,activeClassName:`border-transparent bg-emerald-400 text-[#07130d] shadow-[0_10px_30px_rgba(16,185,129,0.28)] hover:bg-emerald-300 hover:text-[#07130d]`,inactiveClassName:`border-transparent text-white/85 hover:bg-white/8 hover:text-white`,inactiveTooltip:(0,q.jsx)(s3,{label:`Switch to Build`,modifierLabel:kt,keys:[W4]})}],disabled:ae,onChange:e=>{Ht(e)}}),Jt?(0,q.jsxs)(Y,{type:`button`,size:`sm`,variant:`outline`,className:`gap-2`,disabled:Xt,onClick:()=>{$t()},children:[Xt?(0,q.jsx)(w_,{className:`h-4 w-4 animate-spin`}):(0,q.jsx)(D_,{className:`h-4 w-4`}),(0,q.jsx)(`span`,{children:Xt?`Interrupting...`:`Interrupt`})]}):null]}),[kt,Et,$t,Ht,Xt,Jt,ae]),nn=(0,b.useMemo)(()=>Ct?(0,q.jsx)(sV,{model:O,variant:A,skills:M,showModelSelector:!0,showSkillsSelector:!0,availableModels:C,availableSkills:E,selectedModel:Tt,onModelChange:e=>{let t=C.find(t=>t.id===e)??null;k(e),j(e=>t&&t.variants.includes(e)?e:``)},onVariantChange:j,onSkillsChange:N,modelSelectId:`project-chat-model-selector`,variantSelectId:`project-chat-variant-selector`,skillsSelectId:`project-chat-skills-selector`,disabled:V||ee||f?.agent_status===`running`}):wt?(0,q.jsx)(oV,{dataTestId:`chat-model-selector-skeleton`}):null,[f?.agent_status,C,E,ee,V,Tt,O,M,A,Ct,wt]);(0,b.useEffect)(()=>{if(a)return()=>{a(null)}},[a]),(0,b.useEffect)(()=>{if(a){if(!e||!qt){a(null);return}a({chatSessionId:f?.id??null,canSubmitReviewPrompt:Zt,reviewSubmitDisabledReason:Qt,mode:Et,onModeChange:Ht,isUpdatingMode:ae,promptPlaceholder:$4(Et),promptComposerControls:tn,promptComposerInlineControls:nn,submitPrompt:Kt})}},[e,f,Zt,Et,Ht,Kt,qt,ae,a,tn,nn,Qt]);let rn=async()=>{if(rt.trim())try{if(!await Gt(rt))return}catch(e){X.error(e instanceof Error?e.message:`Unable to send the chat prompt right now.`)}},an=e=>{e.key!==`Enter`||e.shiftKey||f?.agent_status===`running`||ee||V||(e.preventDefault(),rn())};(0,b.useEffect)(()=>{let t=t=>{if(r3(t)){if(!e||ee||V)return;t.preventDefault(),Pt(),Vt();return}n3(t)&&(!e||!g&&!f||(t.preventDefault(),Ht(t3(Et))))};return window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,t)}},[e,f,Et,Vt,Pt,Ht,ee,g,V]);let on=(0,b.useCallback)(async t=>{if(!(!e||!f)){le(t);try{let n=await pO(e,f.id,t);p(n.chatSession),at(n.chatSession),X.success(`Created ${n.created_tickets.length} ticket${n.created_tickets.length===1?``:`s`} from chat.`)}catch(e){X.error(e instanceof Error?e.message:`Unable to create tickets from the chat proposal right now.`)}finally{le(e=>e===t?null:e)}}},[e,f,at]),sn=(0,b.useCallback)(e=>{if(!Re.current)return;let t=Re.current.getBoundingClientRect().width,n=Y4(e,t);Je.current=n,Be.current&&(Be.current.style.setProperty(`--chat-changes-panel-width`,`${n}px`),Be.current.setAttribute(`data-desktop-width`,String(n)))},[]),cn=(0,b.useCallback)(()=>{Ue.current?.(),Ue.current=null},[]),ln=(0,b.useCallback)(e=>{let t=Ve.current,n=He.current,r=We.current;if(t!==null){if(Ve.current=null,He.current=null,We.current=!1,we(!1),Ee(!1),cn(),e!==null&&typeof ze.current?.hasPointerCapture==`function`&&ze.current.hasPointerCapture(e)&&typeof ze.current.releasePointerCapture==`function`&&ze.current.releasePointerCapture(e),n===`collapsed`){if(!r)return;Oe(Je.current),Se(!0);return}Oe(Je.current)}},[cn]),un=(0,b.useCallback)((e,t)=>{if(Ve.current!==e)return;let n=t-Ke.current,r=qe.current-n;if(He.current===`collapsed`){if(!We.current&&r<U4)return;We.current||(We.current=!0,Ge.current=!0,Ee(!0),we(!0))}sn(r)},[sn]),dn=(0,b.useCallback)((e,t)=>{if(Ve.current===e){if(t!==null&&(He.current===`inline`||We.current)){let e=t-Ke.current;sn(qe.current-e)}ln(e)}},[ln,sn]),fn=(0,b.useCallback)(e=>{if(!s)return;e.preventDefault(),Ve.current=e.pointerId,He.current=xe?`inline`:`collapsed`,We.current=!1,Ge.current=!1,Ke.current=e.clientX,qe.current=xe?Je.current:0,we(xe),cn(),typeof e.currentTarget.setPointerCapture==`function`&&e.currentTarget.setPointerCapture(e.pointerId);let t=e=>{un(e.pointerId,e.clientX)},n=e=>{dn(e.pointerId,e.clientX)},r=e=>{dn(e.pointerId,e.clientX)};window.addEventListener(`pointermove`,t),window.addEventListener(`pointerup`,n),window.addEventListener(`pointercancel`,r),Ue.current=()=>{window.removeEventListener(`pointermove`,t),window.removeEventListener(`pointerup`,n),window.removeEventListener(`pointercancel`,r)}},[dn,un,xe,s,cn]),pn=(0,b.useCallback)(e=>{un(e.pointerId,e.clientX)},[un]),mn=(0,b.useCallback)(e=>{dn(e.pointerId,e.clientX)},[dn]),hn=(0,b.useCallback)(e=>{dn(e.pointerId,e.clientX)},[dn]),gn=(0,b.useCallback)(e=>{Ve.current===e.pointerId&&ln(e.pointerId)},[ln]),_n=(0,b.useCallback)(()=>{if(Ge.current){Ge.current=!1;return}Se(!0)},[]),vn=(0,b.useCallback)(()=>{Se(!1)},[]),yn=(0,b.useCallback)(e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),_n())},[_n]);(0,b.useEffect)(()=>{s||(Ve.current=null,He.current=null,We.current=!1,Ge.current=!1,we(!1),Ee(!1),cn())},[s,cn]),(0,b.useEffect)(()=>()=>{cn()},[cn]);let bn=!!u,xn=f?.target_available===!1,Sn=xn?f?.target_unavailable_reason??`Target unavailable for this chat session.`:null,Cn=g||!!(f&&f.target_available!==!1&&!zt),wn=!!(t?.memory_enabled&&f&&(ue.length>0||K)),Tn=s&&(g||bn)&&!xn&&!zt,En=Tn&&!xe&&!Te,Dn=Tn&&(xe||Te),On=`${Nt??`none`}:${Tn?`changes-enabled`:`changes-disabled`}:${Dn?`panel-visible`:`panel-hidden`}`,kn=f||g?(0,q.jsx)(q.Fragment,{children:(0,q.jsx)(h4,{projectId:e,messages:f?xt:[],internalLog:f?.agent_log??null,pendingAgentTitle:bt,streamingResponse:f?.streaming_response??null,isRunning:f?.agent_status===`running`,isLoading:!g&&R,canShowComposer:Cn,isExternallyResizing:o||Ce,pendingAgentRevealKey:St,pendingAgentRevealDelayMs:J4,composerFocusNonce:ke,header:(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`h3`,{className:`truncate text-sm font-semibold text-foreground`,children:Dt}),(0,q.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[g?null:(0,q.jsx)(PM,{tool:f?.tool,className:`text-[11px]`}),jt?(0,q.jsx)(`p`,{children:jt}):null,Yt?(0,q.jsx)(`div`,{className:`inline-flex items-center rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-100`,children:`Interrupted`}):null,Mt?(0,q.jsx)(`div`,{"data-testid":`chat-context-usage-badge`,className:`inline-flex items-center rounded-full border border-border/80 bg-muted/40 px-2 py-0.5 text-[11px] font-medium text-foreground`,children:Mt}):null]})]}),wn?(0,q.jsx)(Y,{type:`button`,size:`xs`,variant:`outline`,className:`gap-2`,onClick:()=>me(!0),children:K?`Loading memory...`:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:`Memory suggestions`}),(0,q.jsx)(_4,{children:ue.length})]})}):null]}),zt&&Rt?(0,q.jsx)(`div`,{className:`w-fit max-w-md rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-50`,children:(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`div`,{children:Rt}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>{It()},children:`Switch back`}),(0,q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,onClick:Pt,children:`New session`})]})]})}):null,xn&&Sn?(0,q.jsx)(`div`,{className:`w-fit max-w-md rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-50`,children:Sn}):null]}),composerControls:tn,composerInlineControls:nn,composerTheme:Et,layoutKey:Nt,scrollLayoutKey:On,followUpPrompt:rt,followUpPlaceholder:$4(Et),emptyStateText:null,renderMessageFooter:e=>e.ticket_proposals?(0,q.jsx)(R3,{proposals:e.ticket_proposals,isApplying:ce===e.id,onApply:()=>{on(e.id)}}):null,isSendingFollowUp:V||ee,followUpDisabledReason:xn?Sn??void 0:f?.agent_status===`running`?`Wait for the current chat turn to finish.`:void 0,onFollowUpPromptChange:e=>{st(nt,e)},onFollowUpKeyDown:an,onFollowUpSubmit:()=>{rn()}})}):bn?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-sm text-muted-foreground`,children:`Loading chat session...`}):!I||P?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-sm text-muted-foreground`,children:`Loading chat sessions...`}):(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6`,children:(0,q.jsxs)(Bv,{className:`w-full max-w-lg border-dashed border-border/70 bg-card/40`,children:[(0,q.jsxs)(Vv,{children:[(0,q.jsx)(Hv,{children:`No session selected`}),(0,q.jsx)(Uv,{children:`Select a chat session to restore its saved target, or start a new session on the current target.`})]}),(0,q.jsx)(Gv,{children:(0,q.jsx)(Y,{type:`button`,onClick:Pt,disabled:!e||ee||V,children:`Start new session`})})]})}),An=Tn?(0,q.jsx)(`div`,{ref:ze,"aria-label":En?`Open diff`:`Resize diff panel`,"aria-orientation":En?void 0:`vertical`,className:J(En?`group flex h-8 w-full shrink-0 touch-none select-none items-center justify-center border-t border-border/70 bg-background/90 text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground xl:h-auto xl:w-7 xl:cursor-col-resize xl:border-l xl:border-t-0`:`group hidden w-5 shrink-0 cursor-col-resize touch-none select-none items-center justify-center border-l border-border/70 bg-background/80 transition-colors xl:flex`,Ce&&!En&&`bg-background`),"data-testid":En?`collapsed-changes-rail`:void 0,onLostPointerCapture:gn,onPointerCancel:hn,onPointerDown:fn,onPointerMove:pn,onPointerUp:mn,onClick:En?_n:void 0,onKeyDown:En?yn:void 0,role:En?`button`:`separator`,tabIndex:En?0:void 0,children:En?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`hidden h-full w-full items-center justify-center xl:flex`,children:(0,q.jsxs)(`span`,{className:`relative flex h-full w-full items-center justify-center`,children:[(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-[2.65rem] items-center justify-center text-sky-400/80 transition-colors group-hover:text-sky-300`,children:(0,q.jsx)(S_,{className:`h-3 w-3 shrink-0`})}),(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 h-14 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-muted-foreground/70 transition-colors group-hover:bg-sky-300/90`})]})}),(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-xs font-medium xl:hidden`,children:[(0,q.jsx)(S_,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:`Diff`})]})]}):(0,q.jsx)(`div`,{className:J(`h-14 w-1.5 rounded-full transition-colors`,Ce?`bg-sky-300/90`:`bg-muted-foreground/70 group-hover:bg-sky-300/90`)})}):null,jn=pe&&e&&t?.memory_enabled?(0,q.jsx)(Lv,{onClose:()=>me(!1),overlayClassName:`bg-background/45 p-4 backdrop-blur-sm`,panelClassName:`w-full max-w-3xl`,renderContent:({closeButton:t})=>(0,q.jsxs)(Bv,{size:`sm`,className:`max-h-[calc(100vh-2rem)] w-full gap-0 overflow-hidden border-border/80 bg-card/95 shadow-2xl`,children:[(0,q.jsxs)(Vv,{className:`border-b border-border/80 pb-4`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(Hv,{children:`Memory suggestions`}),(0,q.jsx)(Uv,{children:`Review pending suggestions from this chat before saving them into project memory.`})]}),(0,q.jsx)(Wv,{children:t})]}),(0,q.jsx)(Gv,{className:`min-h-0 flex-1 overflow-y-auto pt-4`,children:(0,q.jsx)(w4,{projectId:e,suggestions:ue,emptyState:`No pending memory suggestions for this chat session.`,onSuggestionsChanged:ht})})]}),closeButtonLabel:`Close memory suggestions`}):null,Mn=yt?(0,q.jsx)(I3,{title:yt.title,isDeleting:re===yt.id,onConfirm:()=>{en()},onCancel:()=>{re!==yt.id&&W(null)}}):null;return(0,q.jsxs)(`div`,{"data-testid":`chat-view-shell`,className:`relative flex min-h-0 flex-1 overflow-hidden border-t border-border/70`,children:[(0,q.jsx)(L3,{activeProject:t,activeSessionId:u,chatModeShortcutModifierLabel:kt,confirmingDeleteSessionId:ne,deletingSessionId:re,finishedBackgroundSessionIds:Ne,isCreatingSession:ee||!e,isDraftOpen:g,isLoadingSessions:P,isOpen:ye,isSendingPrompt:V,sessionGroups:vt,sessions:c,onConfirmDeleteSession:e=>{W(e)},onDraftOpen:Pt,onSessionSelect:e=>{Bt(e)},onToggleOpen:()=>{be(e=>!e)}}),(0,q.jsxs)(`div`,{ref:Re,className:`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden xl:flex-row`,children:[(0,q.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:kn}),Tn?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(d_,{content:`Open diff`,disabled:!En,side:`left`,children:An}),Dn?(0,q.jsx)(m4,{projectId:e,chatSessionId:g?null:u,canSubmitReviewPrompt:Zt,reviewSubmitDisabledReason:Qt,onSubmitReviewPrompt:Kt,state:_e,onStateChange:ve,isResizing:Ce,onClose:vn,desktopWidth:De,panelElementRef:Be}):null]}):null]}),jn,Mn]})},B3=({className:e})=>(0,q.jsx)(dh,{"aria-hidden":`true`,className:e}),V3=({activeProject:e})=>e?(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-6`,children:(0,q.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,q.jsx)(`div`,{className:`border-b border-border/60 pb-4`,children:(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.24em] text-muted-foreground`,children:`Memory archive`}),(0,q.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:e.name})]})}),(0,q.jsx)(jb,{mode:`edit`,projectId:e.id,memoryEnabled:e.memory_enabled,persistedMemoryEnabled:e.memory_enabled,onMemoryEnabledChange:()=>{},showActivationControls:!1,archiveLayout:!0})]})}):(0,q.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Select a project to view memory.`}),H3=()=>({hasRunning:!1,hasFinishedUnseen:!1,hasErrorUnseen:!1}),U3=()=>({board:H3(),memory:H3(),chat:H3()}),W3=(e,t)=>{let n=e[t];return!n.hasFinishedUnseen&&!n.hasErrorUnseen?e:{...e,[t]:{...n,hasFinishedUnseen:!1,hasErrorUnseen:!1}}},G3=e=>({hasRunning:e.board.hasRunning||e.chat.hasRunning,hasFinishedUnseen:e.board.hasFinishedUnseen||e.chat.hasFinishedUnseen,hasErrorUnseen:e.board.hasErrorUnseen||e.chat.hasErrorUnseen}),K3=e=>e.hasErrorUnseen?`error`:e.hasRunning?`running`:e.hasFinishedUnseen?`finished`:null,q3=(e,t)=>t?null:K3(e),J3=320,Y3=.7,X3=28,Z3=6,Q3=(e,t)=>{let n=Math.max(J3,Math.round(t*Y3));return Math.max(J3,Math.min(n,Math.round(e)))},$3=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[...e,t];let r=e.slice();return r[n]=t,r},e6=(e,t)=>{if(t.type===`reset`)return U3();if(t.type===`mark-workspace-visible`)return W3(e,t.workspace);let n=e[t.workspace],r={...n,hasRunning:t.activity.hasRunning,hasFinishedUnseen:t.visibleWorkspace===t.workspace?!1:n.hasFinishedUnseen||t.activity.didFinish,hasErrorUnseen:t.visibleWorkspace===t.workspace?!1:n.hasErrorUnseen||t.activity.didError};return n.hasRunning===r.hasRunning&&n.hasFinishedUnseen===r.hasFinishedUnseen&&n.hasErrorUnseen===r.hasErrorUnseen?e:{...e,[t.workspace]:r}},t6=({activeProjectId:e,onActivity:t})=>{let{tickets:n}=v2(),r=(0,b.useRef)(new Map);return(0,b.useEffect)(()=>{r.current=new Map},[e]),(0,b.useEffect)(()=>{let e=r.current,i=new Map,a=!1,o=!1;for(let t of n){let n=e.get(t.id)??null,r=t.agent_status??null;n===`running`&&r===`done`&&(a=!0),n===`running`&&r===`error`&&(o=!0),i.set(t.id,r)}r.current=i,t({hasRunning:n.some(e=>e.agent_status===`running`),didFinish:a,didError:o})},[t,n]),null},n6=({activeProjectId:e,onActivity:t})=>{let[n,r]=(0,b.useState)([]),i=(0,b.useRef)(new Map);return(0,b.useEffect)(()=>{if(!e)return;let t=new AbortController;return(async()=>{try{let n=await iO(e,t.signal);if(t.signal.aborted)return;r(n)}catch(e){T(e)}})(),()=>{t.abort()}},[e]),(0,b.useEffect)(()=>{if(!e)return;let t=new AbortController,n=F$(()=>{document.visibilityState===`visible`&&iO(e,t.signal).then(e=>{t.signal.aborted||r(e)}).catch(e=>{T(e)})});return()=>{t.abort(),n()}},[e]),(0,b.useEffect)(()=>{if(!e)return;let t=t=>{!t||t.project_id!==e||r(e=>$3(e,t))},n=t=>{!t||t.project_id!==e||r(e=>e.filter(e=>e.id!==t.id))};return DZ.on(`chat-session:created`,t),DZ.on(`chat-session:updated`,t),DZ.on(`chat-session:deleted`,n),()=>{DZ.off(`chat-session:created`,t),DZ.off(`chat-session:updated`,t),DZ.off(`chat-session:deleted`,n)}},[e]),(0,b.useEffect)(()=>{let r=i.current,a=new Map,o=[],s=!1;for(let e of n){let t=r.get(e.id)??null,n=e.agent_status??null;t===`running`&&n===`done`&&o.push(e),t===`running`&&n===`error`&&(s=!0),a.set(e.id,n)}i.current=a;for(let e of o)e.title&&u2(`Chat response ready`,e.title);o.length>0&&e&&M$(e),t({hasRunning:n.some(e=>e.agent_status===`running`),didFinish:o.length>0,didError:s})},[e,t,n]),null},r6=({activeProjectId:e,activeProject:t=null,activeProjectBranchState:n=null,activeRun:r,activeTool:i,onRestoreChatSessionTarget:a,onChatReviewCapabilityChange:o,onPreviewReviewCapabilityChange:s,previewDisplayMode:c=`hidden`,previewPane:l=null,previewPaneWidth:u=480,isPreviewButtonDisabled:d=!1,previewButtonTitle:f,visibleWorkspace:p,onProjectUsageChange:m,onBundlesChange:h,onBundlesLoadingChange:g,onBoardLoadedProjectIdChange:_,onPreviewToggle:v,onPreviewPaneWidthChange:y,onRunStopped:x,onRunStatusChange:S,onWorkspaceActivityChange:C,onWorkspaceActivityEvent:w,refreshKey:T=0})=>{let E=(0,b.useRef)(null),D=(0,b.useRef)(null),O=(0,b.useRef)(null),k=(0,b.useRef)(null),A=(0,b.useRef)(!1),j=(0,b.useRef)(!1),M=(0,b.useRef)(0),N=(0,b.useRef)(u),P=(0,b.useRef)(u),F=p===`board`||p===`chat`,I=l!==null,[L,R]=(0,b.useState)(!1),[z,ee]=(0,b.useState)(!1),[B,V]=(0,b.useState)(u),[H,te]=(0,b.useReducer)(e6,void 0,U3),U=F&&I&&c===`expanded`,ne=F&&I&&c===`inline`,W=F&&I&&c===`hidden`&&!z,re=(ne||z)&&!U,ie=U||re,ae=F&&I&&!U,G=L?B:u,oe=p!==`chat`||!re,se=e=>{let t=O.current,n=k.current,r=A.current;if(t!==null){if(O.current=null,k.current=null,A.current=!1,R(!1),ee(!1),e!==null&&D.current?.hasPointerCapture(e)&&D.current.releasePointerCapture(e),n===`collapsed`){if(!r)return;y?.(P.current),v?.();return}y?.(P.current)}},ce=e=>{if(!E.current)return;let t=E.current.getBoundingClientRect().width,n=Q3(e,t);P.current=n,V(n)},le=e=>{y&&(W&&d||(e.preventDefault(),O.current=e.pointerId,k.current=W?`collapsed`:`inline`,A.current=!1,j.current=!1,M.current=e.clientX,N.current=W?0:P.current,R(!W),e.currentTarget.setPointerCapture(e.pointerId)))},ue=e=>{if(O.current!==e.pointerId)return;let t=e.clientX-M.current,n=N.current-t;if(k.current===`collapsed`){if(!A.current&&n<Z3)return;A.current||(A.current=!0,j.current=!0,ee(!0),R(!0))}ce(n)},de=e=>{if(O.current===e.pointerId){if(k.current===`inline`||A.current){let t=e.clientX-M.current;ce(N.current-t)}se(e.pointerId)}},K=e=>{O.current===e.pointerId&&se(e.pointerId)},fe=(0,b.useCallback)((e,t)=>{w?.(e,t),te({type:`update-workspace`,workspace:e,activity:t,visibleWorkspace:p})},[w,p]);(0,b.useEffect)(()=>{te({type:`reset`})},[e]),(0,b.useEffect)(()=>{p!==`memory`&&te({type:`mark-workspace-visible`,workspace:p})},[p]),(0,b.useEffect)(()=>{C?.(H)},[C,H]),(0,b.useEffect)(()=>{L||(P.current=u),!I&&(O.current=null,k.current=null,A.current=!1,j.current=!1,P.current=u)},[I,L,u]);let pe=()=>{if(j.current){j.current=!1;return}d||v?.()};return(0,q.jsx)(_2,{activeProjectId:e,refreshKey:T,onLoadedProjectIdChange:_,onProjectUsageChange:m,onBundlesChange:h,onBundlesLoadingChange:g,children:(0,q.jsxs)(`div`,{ref:E,className:`flex min-h-0 flex-1 flex-col`,children:[(0,q.jsx)(t6,{activeProjectId:e,onActivity:e=>{fe(`board`,e)}}),(0,q.jsx)(n6,{activeProjectId:e,onActivity:e=>{fe(`chat`,e)}}),p===`memory`?(0,q.jsx)(`div`,{id:`project-workspace-panel-memory`,role:`tabpanel`,"aria-labelledby":`project-workspace-tab-memory`,className:`flex min-h-0 flex-1 flex-col`,children:(0,q.jsx)(V3,{activeProject:t})}):(0,q.jsxs)(`div`,{id:p===`chat`?`project-workspace-panel-chat`:`project-workspace-panel-board`,role:`tabpanel`,"aria-labelledby":p===`chat`?`project-workspace-tab-chat`:`project-workspace-tab-board`,className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:[(0,q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:p===`chat`?(0,q.jsx)(z3,{activeProjectId:e,activeProject:t,activeProjectBranchState:n,activeTool:i,isExternallyResizing:L,onRestoreSessionTarget:a,onReviewCapabilityChange:o,showChangesPanel:oe}):(0,q.jsx)(X2,{activeProjectId:e,activeProject:t,activeProjectBranchState:n,activeRun:r,activeTool:i,onPreviewReviewCapabilityChange:s,onRunStopped:x,onRunStatusChange:S,refreshKey:T})}),[ae?(0,q.jsx)(d_,{content:d?f??`Preview unavailable`:`Open preview`,disabled:!W,side:`left`,children:(0,q.jsx)(`div`,{"aria-label":W?f??`Show preview`:`Resize preview pane`,"aria-orientation":W?void 0:`vertical`,className:W?`group flex shrink-0 touch-none select-none items-center justify-center border-l border-border/70 bg-background/90 transition-colors ${d?`cursor-not-allowed text-muted-foreground/60`:`cursor-col-resize text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`:`group flex w-5 shrink-0 cursor-col-resize touch-none select-none items-center justify-center border-l border-border/70 bg-background/80 ${L?`bg-background`:``}`,"data-preview-divider":`true`,"data-testid":W?`collapsed-preview-rail`:void 0,onLostPointerCapture:K,onPointerCancel:de,onPointerDown:le,onPointerMove:ue,onPointerUp:de,onClick:W?pe:void 0,onKeyDown:W?e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),pe())}:void 0,ref:D,role:W?`button`:`separator`,style:W?{width:`${X3}px`}:void 0,tabIndex:W?d?-1:0:void 0,children:W?(0,q.jsxs)(`span`,{className:`relative flex h-full w-full items-center justify-center`,children:[(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-[2.65rem] items-center justify-center text-sky-400/80 transition-colors group-hover:text-sky-300`,children:(0,q.jsx)(B3,{className:`h-3 w-3 shrink-0`})}),(0,q.jsx)(`span`,{className:`absolute top-1/2 left-1/2 h-14 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-muted-foreground/70 transition-colors group-hover:bg-sky-300/90`})]}):(0,q.jsx)(`div`,{className:`h-14 w-1.5 rounded-full transition-colors ${L?`bg-sky-300/90`:`bg-muted-foreground/70 group-hover:bg-sky-300/90`}`})})},`preview-divider`):null,ie?(0,q.jsx)(`div`,{className:U?`fixed inset-0 z-50 bg-black/70 p-4 sm:p-6`:`min-h-0 shrink-0 border-l border-border/70 bg-[#11131a]`,style:U?void 0:{width:`${G}px`},children:(0,q.jsx)(`div`,{className:`h-full w-full`,children:l})},`preview-container`):null]]})]})})},i6=({isExpanded:e,isVisible:t,project:n,onClose:r,onToggleExpanded:i})=>(0,q.jsx)(`div`,{className:[`fixed inset-x-4 bottom-24 z-40`,e?`top-20`:`h-[min(28rem,calc(100vh-8rem))]`,t?`block`:`hidden`].join(` `),children:(0,q.jsx)(AZ,{createSession:()=>AM(n.id),isExpanded:e,isVisible:t,ariaLabel:`Project terminal for ${n.name}`,title:n.name,closeLabel:`Close terminal`,className:e?`h-full w-full rounded-2xl shadow-2xl`:`mx-auto h-full max-w-6xl shadow-2xl`,onClose:r,onToggleExpanded:i})}),a6=({activeWorkspace:e,activityByWorkspace:t,memoryEnabled:n=!1,onWorkspaceChange:r})=>(0,q.jsx)(`div`,{role:`tablist`,"aria-label":`Project workspace`,className:`inline-flex items-end gap-1 border-b border-border/70`,children:(n?[`board`,`chat`,`memory`]:[`board`,`chat`]).map(n=>{let i=e===n,a=q3(t[n],i),o=n===`board`?`border-sky-300/70 bg-sky-500/8 text-sky-200`:n===`memory`?`border-amber-300/70 bg-amber-500/8 text-amber-200`:`border-emerald-300/70 bg-emerald-500/8 text-emerald-200`;return(0,q.jsx)(`button`,{id:`project-workspace-tab-${n}`,type:`button`,role:`tab`,"aria-selected":i,"aria-controls":`project-workspace-panel-${n}`,tabIndex:i?0:-1,className:J(`cursor-pointer rounded-t-lg border-b-2 px-4 py-2.5 text-[15px] font-medium transition-colors duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60`,i?o:`border-transparent text-muted-foreground hover:border-border hover:bg-background/35 hover:text-foreground`),onClick:()=>r(n),children:(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,q.jsx)(`span`,{children:n===`board`?`Board`:n===`memory`?`Memory`:`Chat`}),(0,q.jsx)($2,{state:a,className:`mt-0`})]})},n)})}),o6=32,s6=5.5,c6=2,l6=24,u6=8,d6=new Map,f6={running:{fill:`#fcd34d`,stroke:`#f59e0b`},finished:{fill:`#34d399`,stroke:`#059669`},error:{fill:`#fb7185`,stroke:`#e11d48`}},p6=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`),m6=e=>{if(!e)return null;let t=e.trim().match(/^([0-9]+(?:\.[0-9]+)?)/);return t?Number(t[1]):null},h6=e=>{let t=new DOMParser().parseFromString(e,`image/svg+xml`);if(t.querySelector(`parsererror`))return null;let n=t.documentElement;if(n.nodeName.toLowerCase()!==`svg`)return null;let r=n.getAttribute(`viewBox`)?.trim(),i=m6(n.getAttribute(`width`)),a=m6(n.getAttribute(`height`)),o=r??(i&&a?`0 0 ${i} ${a}`:`0 0 ${o6} ${o6}`);return`<svg ${[Array.from(n.attributes).filter(e=>![`width`,`height`,`viewBox`,`x`,`y`,`preserveAspectRatio`].includes(e.name)).map(e=>`${e.name}="${p6(e.value)}"`).join(` `),`x="0"`,`y="0"`,`width="${o6}"`,`height="${o6}"`,`viewBox="${p6(o)}"`,`preserveAspectRatio="xMidYMid meet"`].filter(e=>e.length>0).join(` `)}>${n.innerHTML}</svg>`},g6=async e=>{if(!e)return null;let t=d6.get(e);if(t)return t;let n=(async()=>{try{if(e.startsWith(`data:image/svg+xml,`))return h6(decodeURIComponent(e.slice(19)));if(e.startsWith(`data:image/svg+xml;base64,`))return h6(atob(e.slice(26)));let t=await fetch(e);return t.ok?h6(await t.text()):null}catch{return null}})();return d6.set(e,n),n},_6=async(e,t)=>{let{fill:n,stroke:r}=f6[e],i=await g6(t);return i?[`<svg xmlns="http://www.w3.org/2000/svg" width="${o6}" height="${o6}" viewBox="0 0 ${o6} ${o6}">`,i,`<circle cx="${l6}" cy="${u6}" r="${s6}" fill="${n}" stroke="${r}" stroke-width="${c6}"/>`,`</svg>`].join(``):null},v6=async(e,t)=>{if(!e)return t;let n=await _6(e,t);return n?`data:image/svg+xml,${encodeURIComponent(n)}`:t},y6=()=>{let e=document.querySelector(`link[rel="icon"]`);if(e)return e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),t},b6=({defaultHref:e,state:t})=>{let n=y6(),r=Number(n.dataset.browserTabActivityRequestId??`0`)+1;if(n.dataset.browserTabActivityState=t??`default`,n.dataset.browserTabActivityRequestId=String(r),!t){if(e){n.href=e;return}n.removeAttribute(`href`);return}v6(t,e).then(e=>{if(n.dataset.browserTabActivityRequestId===String(r)){if(e){n.href=e;return}n.removeAttribute(`href`)}})},x6=`archon.active-project-id`,S6=`archon.workspace-by-project`,C6=`archon.preview-mode-by-project`,w6=`archon.dismissed-preview-run-context-by-project`,T6=5e3,E6=`archon.preview-pane-width`,D6=`archon.preview-viewport-preset`,O6=`archon.preview-zoom`,k6=480,A6=`responsive`,j6=1,M6={hasMounted:!1,isOpen:!1,isExpanded:!1},N6=`hidden`,P6=(0,b.lazy)(()=>PZ(()=>Promise.resolve().then(()=>H1).then(e=>({default:e.TicketChangesModal})),void 0)),F6=e=>{if(!e)return null;try{return JSON.parse(e)}catch{return null}},I6=e=>{let t=F6(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0):[]},L6=e=>{let t=F6(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=typeof t.name==`string`?t.name:``,r=typeof t.cmd==`string`?t.cmd:``,i=typeof t.cwd==`string`?t.cwd:``;return n.trim()===``&&r.trim()===``&&i.trim()===``?[]:[{name:n,cmd:r,cwd:i}]}):[]},R6=e=>{let t=F6(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=typeof t.source==`string`?t.source:``,r=typeof t.target==`string`?t.target:``,i=t.mode===`copy`||t.mode===`symlink`?t.mode:`copy`;return n.trim()===``&&r.trim()===``?[]:[{source:n,target:r,mode:i}]}):[]},z6=e=>({name:e.name,repoPath:e.repo_path,linkedProjectIds:e.linked_project_ids,runSetup:I6(e.run_setup),runServices:L6(e.run_services),runIde:e.run_ide??``,previewServiceName:e.preview_service_name??``,previewPath:e.preview_path??``,previewCapabilityMode:e.preview_capability_mode??`auto`,helperModel:e.helper_model??``,helperVariant:e.helper_variant??``,commitMessageRules:e.commit_message_rules??``,autoParkStaleTickets:e.auto_park_stale_tickets,memoryEnabled:e.memory_enabled,worktreeSync:R6(e.worktree_sync)}),B6=e=>{let t=e.previewServiceName?.trim()||null,n=e.previewPath?.trim()||``,r=n===``||n===`/`?null:n,i=t||r||e.previewCapabilityMode===`force_web`||e.previewCapabilityMode===`force_disabled`?e.previewCapabilityMode??`auto`:null;return{name:e.name,repo_path:e.repoPath,linked_project_ids:e.linkedProjectIds,run_setup:e.runSetup.length>0?e.runSetup:null,run_services:e.runServices.length>0?e.runServices.map(e=>({...e.name?{name:e.name}:{},cmd:e.cmd,...e.cwd?{cwd:e.cwd}:{}})):null,run_ide:e.runIde||null,preview_service_name:t,preview_path:r,preview_capability_mode:i,helper_model:e.helperModel||null,helper_variant:e.helperModel&&e.helperVariant||null,commit_message_rules:e.commitMessageRules||null,auto_park_stale_tickets:e.autoParkStaleTickets,memory_enabled:e.memoryEnabled,worktree_sync:e.worktreeSync.length>0?e.worktreeSync.map(e=>({source:e.source,...e.target?{target:e.target}:{},mode:e.mode})):null}},V6=e=>e?I6(e.run_setup).length>0||L6(e.run_services).length>0||(e.run_ide?.trim().length??0)>0:!1,H6=(e,t,n)=>`${e} ${e===1?t:n}`,U6=e=>{if(!e.repo_path_locked)return null;let t=[];return e.ticket_count>0&&t.push(H6(e.ticket_count,`ticket is attached`,`tickets are attached`)),e.worktree_count>0&&t.push(H6(e.worktree_count,`worktree exists`,`worktrees exist`)),t.length===0?`Repository path is locked for this project.`:`Repository path is locked because ${t.join(` and `)}.`},W6=(e,t)=>{if(t.length<=1)return`Keep at least one project in Archon.`;let n=[];e.ticket_count>0&&n.push(H6(e.ticket_count,`ticket is attached`,`tickets are attached`)),e.worktree_count>0&&n.push(H6(e.worktree_count,`worktree exists`,`worktrees exist`));let r=t.filter(t=>t.linked_project_ids.includes(e.id)).length;return r>0&&n.push(H6(r,`project links to it`,`projects link to it`)),n.length===0?null:`This project can't be deleted while ${n.join(` and `)}.`},G6=(e,t)=>e.id!==t.projectId||e.ticket_count===t.ticketCount&&e.worktree_count===t.worktreeCount&&e.repo_path_locked===t.repoPathLocked?e:{...e,ticket_count:t.ticketCount,worktree_count:t.worktreeCount,repo_path_locked:t.repoPathLocked},K6=(e,t)=>({projectId:e,branch:t.branch,status:t.status,ahead:t.ahead??0,behind:t.behind??0,hasUpstream:t.has_upstream??!1,canPull:t.can_pull??!1,diffStats:t.diff_stats??null}),q6=e=>({projectId:e,branch:null,status:`loading`,ahead:0,behind:0,hasUpstream:!1,canPull:!1,diffStats:null}),J6=(e,t)=>t?e[t]??M6:M6,Y6=(e,t)=>t?e[t]??N6:N6,X6=()=>{let e=window.localStorage.getItem(E6),t=Number(e);return Number.isFinite(t)&&t>=320?t:k6},Z6=()=>{let e=window.localStorage.getItem(D6);return e===`phone`||e===`tablet`||e===`laptop`||e===`responsive`?e:A6},Q6=()=>{let e=Number(window.localStorage.getItem(O6));return Number.isFinite(e)&&e>0?e:j6},$6=()=>{let e=F6(window.localStorage.getItem(S6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>e===`board`||e===`chat`||e===`memory`))},e8=()=>{let e=F6(window.localStorage.getItem(C6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>e===`hidden`||e===`inline`||e===`expanded`))},t8=()=>{let e=F6(window.localStorage.getItem(w6));return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,e])=>typeof e==`string`||e===null))},n8=e=>!!e?.preview_service_name?.trim()&&e?.preview_capability_mode!==`force_disabled`,r8=({activeRun:e,project:t})=>{if(!e||e.kind!==`project`||!t)return!1;let n=t.active_target_kind??`repo_root`,r=t.active_target_bundle_id??null;return e.project_id===t.id&&(e.target_kind??`repo_root`)===n&&((e.target_kind??`repo_root`)!==`bundle`||e.target_bundle_id===r)},i8=({activeRun:e,project:t,projectId:n})=>!e||!n?null:e.kind===`ticket`?e.project_id===n?e:null:r8({activeRun:e,project:t})?e:null,a8=`Project root has uncommitted changes. Confirm branch switch to continue.`,o8=({activeProject:e,activeProjectBranchState:t,nextTarget:n})=>e?n.kind===`bundle`?e.active_target_kind!==`bundle`||e.active_target_bundle_id!==n.bundleId:e.active_target_kind===`bundle`?!0:n.branch?t?.branch!==n.branch:!1:!1,s8=()=>{let[e,t]=(0,b.useState)(`opencode`),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(()=>window.localStorage.getItem(x6)),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)({}),[g,_]=(0,b.useState)({}),[v,y]=(0,b.useState)({}),[x,C]=(0,b.useState)(null),[w,E]=(0,b.useState)({}),[D,O]=(0,b.useState)(e8),[k,j]=(0,b.useState)(t8),[M,N]=(0,b.useState)(X6),[P,F]=(0,b.useState)(Z6),[I,L]=(0,b.useState)(Q6),[R,z]=(0,b.useState)(null),[ee,B]=(0,b.useState)([]),[V,H]=(0,b.useState)(!1),[te,ae]=(0,b.useState)(``),[G,oe]=(0,b.useState)(``),[se,ce]=(0,b.useState)(!1),[le,ue]=(0,b.useState)(null),[de,K]=(0,b.useState)(null),[fe,pe]=(0,b.useState)({}),[me,he]=(0,b.useState)($6),[ge,_e]=(0,b.useState)(()=>U3()),[ve,ye]=(0,b.useState)(()=>H3()),[be,xe]=(0,b.useState)(0),[Se,Ce]=(0,b.useState)(null),[we,Te]=(0,b.useState)(null),[Ee,Oe]=(0,b.useState)({}),[ke,Ae]=(0,b.useState)({}),[je,Me]=(0,b.useState)({}),[Ne,Pe]=(0,b.useState)({}),[Ge,Je]=(0,b.useState)(!1),[Ye,Ze]=(0,b.useState)(null),Qe=(0,b.useRef)(null),$e=(0,b.useRef)(null),et=(0,b.useRef)(null),tt=i.find(e=>e.id===o)??null,nt=!!tt?.memory_enabled,rt=o?me[o]??`board`:`board`,it=rt===`memory`?nt?`memory`:`board`:rt,at=tt!==null,ot=V6(tt),st=!!tt?.run_ide?.trim(),ct=o!==null&&u===o,lt=o!==null&&(!ot||f===o),ut=o?m[o]??q6(o):null,dt=o?g[o]??null:null,ft=o?!!v[o]:!1,pt=o?Ee[o]??[]:[],mt=o?!!ke[o]:!1,ht=o?je[o]??{current_branch:null,default_branch:null,previous_branch:null}:{current_branch:null,default_branch:null,previous_branch:null},gt=o?!!Ne[o]:!1,bt=o?w[o]??null:null,xt=Y6(D,o),St=xt!==`hidden`,Ct=i8({activeRun:c,project:tt,projectId:o}),wt=Ct?.context_key??null,Tt=o?k[o]??null:null,Et=n8(tt),Dt=wt===R,Ot=(0,b.useMemo)(()=>G3(ge),[ge]),kt=(0,b.useMemo)(()=>K3({hasRunning:Ot.hasRunning,hasFinishedUnseen:ve.hasFinishedUnseen,hasErrorUnseen:ve.hasErrorUnseen}),[Ot.hasRunning,ve.hasErrorUnseen,ve.hasFinishedUnseen]);(0,b.useEffect)(()=>{Ce(null),Te(null),$e.current=null},[o]),(0,b.useEffect)(()=>{Te(null)},[it]),(0,b.useEffect)(()=>{St||($e.current=null)},[St]),(0,b.useEffect)(()=>{let e=Se?.target?.kind??null;if(e===`ticket`||e===`bundle`){$e.current=Se;return}(it===`board`||!St)&&($e.current=Se)},[St,Se,it]),(0,b.useEffect)(()=>{_e(U3())},[o]),(0,b.useEffect)(()=>{ye(H3())},[o]);let At=(0,b.useCallback)((e,t)=>{document.visibilityState!==`visible`&&(!t.didFinish&&!t.didError||ye(e=>{let n={...e,hasFinishedUnseen:e.hasFinishedUnseen||t.didFinish,hasErrorUnseen:e.hasErrorUnseen||t.didError};return e.hasFinishedUnseen===n.hasFinishedUnseen&&e.hasErrorUnseen===n.hasErrorUnseen?e:n}))},[]);(0,b.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&ye(e=>!e.hasFinishedUnseen&&!e.hasErrorUnseen?e:{...e,hasFinishedUnseen:!1,hasErrorUnseen:!1})};return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[]),(0,b.useEffect)(()=>(Qe.current===null&&(Qe.current=document.querySelector(`link[rel="icon"]`)?.getAttribute(`href`)??`/favicon.svg`),b6({defaultHref:Qe.current,state:kt}),()=>{b6({defaultHref:Qe.current,state:null})}),[kt]);let jt=(0,b.useCallback)(async(e,t={})=>{let{refreshRemote:n=!1,signal:r}=t;try{let t=await Ke(e,r,{refreshRemote:n});if(r?.aborted)return;h(n=>({...n,[e]:K6(e,t)}))}catch(t){if(T(t))return;if(t instanceof S&&t.status===404){h(t=>({...t,[e]:{...q6(e),status:`unknown`}}));return}h(t=>({...t,[e]:{projectId:e,branch:t[e]?.branch??null,status:`unknown`,ahead:t[e]?.ahead??0,behind:t[e]?.behind??0,hasUpstream:t[e]?.hasUpstream??!1,canPull:t[e]?.canPull??!1,diffStats:t[e]?.diffStats??null}}))}},[]),Mt=(0,b.useCallback)(async(e,t={})=>{let{refreshRemote:n=!1,signal:r}=t;y(t=>({...t,[e]:!0}));try{let t=await Xe(e,{refreshRemote:n,signal:r});if(r?.aborted)return;_(n=>({...n,[e]:t}))}catch(t){if(T(t))return;t instanceof S&&t.status===404&&_(t=>({...t,[e]:null}))}finally{r?.aborted||y(t=>({...t,[e]:!1}))}},[]);(0,b.useEffect)(()=>{let e=new AbortController;return(async()=>{try{let{tool:n}=await vt(e.signal);t(n)}catch(e){T(e)}finally{e.signal.aborted||r(!0)}})(),()=>{e.abort()}},[]),(0,b.useEffect)(()=>{if(!se||i.length>0&&le===null||V)return;let e=new AbortController;return(async()=>{try{B(await _t(`opencode`,e.signal))}catch(e){T(e)||B(e=>e)}finally{e.signal.aborted||H(!0)}})(),()=>{e.abort()}},[V,le,i.length,se]),(0,b.useEffect)(()=>{let e=new AbortController,t=window.localStorage.getItem(x6);return(async()=>{try{let n=await Fe(e.signal);if(e.signal.aborted)return;a(n);let r=n[0]?.id??null;s(n.some(e=>e.id===t)?t:r)}catch(e){T(e)||a([])}finally{e.signal.aborted||ce(!0)}})(),()=>{e.abort()}},[]),(0,b.useEffect)(()=>{if(se){if(o){window.localStorage.setItem(x6,o);return}window.localStorage.removeItem(x6)}},[o,se]),(0,b.useEffect)(()=>{window.localStorage.setItem(S6,JSON.stringify(me))},[me]),(0,b.useEffect)(()=>{window.localStorage.setItem(C6,JSON.stringify(D))},[D]),(0,b.useEffect)(()=>{window.localStorage.setItem(w6,JSON.stringify(k))},[k]),(0,b.useEffect)(()=>{h(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),_(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),y(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{pe(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{let e=new Set(i.map(e=>e.id));Oe(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Ae(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Me(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t)))),Pe(t=>Object.fromEntries(Object.entries(t).filter(([t])=>e.has(t))))},[i]),(0,b.useEffect)(()=>{E(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),O(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}),j(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i]),(0,b.useEffect)(()=>{se&&he(e=>{let t=new Set(i.map(e=>e.id)),n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)})},[i,se]),(0,b.useEffect)(()=>{if(!se||!o||!at)return;let e=!1,t=null,n=null;h(e=>e[o]?e:{...e,[o]:q6(o)});let r=async(r=!1)=>{let i=r?`remote`:`local`;if(t){if(n===`remote`||n===i)return;t.abort()}let a=new AbortController;t=a,n=i;try{await Promise.all([jt(o,{refreshRemote:r,signal:a.signal}),Mt(o,{refreshRemote:r,signal:a.signal})])}catch{if(e||a.signal.aborted)return}finally{t===a&&(t=null,n=null)}};r(!1);let i=F$(()=>{document.visibilityState===`visible`&&r(!1)});return()=>{e=!0,t?.abort(),i()}},[o,at,se,jt,Mt]),(0,b.useEffect)(()=>{if(o)return N$(e=>{e===o&&(jt(e),Mt(e))})},[o,jt,Mt]);let Nt=(0,b.useCallback)(async e=>{let t=o;if(!t){l(null),p(null);return}try{let n=await W(t,e);e?.aborted||(l(n.active_run),p(t))}catch(e){T(e)}},[o]),Pt=(0,b.useCallback)(async e=>{let t=o;if(t)try{let n=await ne(t,e);e?.aborted||E(e=>({...e,[t]:n}))}catch(e){T(e)}},[o]);(0,b.useEffect)(()=>{if(!se)return;if(!ot){l(null),p(null);return}if(!ct)return;let e=new AbortController;p(null),Nt(e.signal);let t=window.setInterval(()=>{Nt(e.signal)},T6),n=F$(()=>{document.visibilityState===`visible`&&Nt(e.signal)});return()=>{e.abort(),window.clearInterval(t),n()}},[ct,ot,se,Nt]),(0,b.useEffect)(()=>{if(!se||!o||!ct||!Et)return;let e=new AbortController;Pt(e.signal);let t=window.setInterval(()=>{Pt(e.signal)},T6),n=F$(()=>{document.visibilityState===`visible`&&Pt(e.signal)});return()=>{e.abort(),window.clearInterval(t),n()}},[o,ct,Et,se,Pt]),(0,b.useEffect)(()=>{window.localStorage.setItem(E6,String(M))},[M]),(0,b.useEffect)(()=>{window.localStorage.setItem(D6,P)},[P]),(0,b.useEffect)(()=>{window.localStorage.setItem(O6,String(I))},[I]),(0,b.useEffect)(()=>{o&&wt&&j(e=>{let t=e[o]??null;return!t||t===wt?e:{...e,[o]:null}})},[o,wt]),(0,b.useEffect)(()=>{!o||!Ct||!n8(tt)||Tt!==Ct.context_key&&O(e=>Y6(e,o)===`hidden`?{...e,[o]:`inline`}:e)},[tt,o,Tt,Ct]);let Ft=async e=>{try{t((await yt(e)).tool)}catch{}},It=(0,b.useCallback)(e=>{a(t=>t.map(t=>t.id===e.id?e:t))},[]),Lt=(0,b.useCallback)((e,t)=>{Oe(n=>{let r=[t,...(n[e]??[]).filter(e=>e.id!==t.id)];return{...n,[e]:r}})},[]),Rt=(0,b.useCallback)(async e=>{Pe(t=>({...t,[e]:!0}));try{let t=await Be(e);Me(n=>({...n,[e]:t}))}catch(e){X.error(e instanceof S?e.message:`Unable to load the project target options right now.`,{id:`project-target-selector-load-error`})}finally{Pe(t=>({...t,[e]:!1}))}},[]),zt=async e=>{try{let t=await Ie(B6(e));return a(e=>[...e,t]),s(t.id),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to create the project right now.`}},Bt=async e=>{if(!tt)return`Select a project before editing settings.`;try{let t=await Le(tt.id,B6(e));return a(e=>e.map(e=>e.id===t.id?t:e)),xe(e=>e+1),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to update the project right now.`}},Vt=async()=>{if(!tt)return`Select a project before deleting it.`;try{await Re(tt.id);let e=i.filter(e=>e.id!==tt.id);return a(e),s(e[0]?.id??null),ue(null),null}catch(e){return e instanceof S?e.message:`Unable to delete the project right now.`}},Ht=(0,b.useCallback)(e=>{a(t=>t.map(t=>G6(t,e)))},[]),Ut=(0,b.useCallback)((e,t)=>{e&&Oe(n=>({...n,[e]:t}))},[]),Wt=(0,b.useCallback)((e,t)=>{e&&Ae(n=>({...n,[e]:t}))},[]),Gt=async(e,t,n)=>await He({repo_path:e,helper_model:t||null,helper_variant:t&&n||null}),Kt=async()=>(await Ue()).repo_path,qt=(0,b.useCallback)(async e=>{let t=await We({repo_path:e});return{valid:t.valid,repoRoot:t.repo_root,error:t.error}},[]),Jt=(0,b.useCallback)((e,t)=>{O(t=>({...t,[e]:`hidden`})),t&&j(n=>({...n,[e]:t}))},[]),Yt=(0,b.useCallback)(()=>{o&&Jt(o,wt)},[o,Jt,wt]),Xt=(0,b.useCallback)(e=>{o&&(O(e=>({...e,[o]:`hidden`})),e&&l(t=>t?.context_key===e?null:t))},[o]),Zt=(0,b.useCallback)(async()=>{if(!Ct||R===Ct.context_key)return;let{context_key:e}=Ct;z(e);try{Ct.kind===`ticket`?await De(Ct.ticket_id,Ct.project_id):l((await ie(Ct.project_id)).active_run),Xt(e),await Promise.all([Nt(),Pt()])}catch(e){X.error(e instanceof S?e.message:`Unable to stop the preview run right now.`,{id:`app-preview-run-stop-error`})}finally{z(t=>t===e?null:t)}},[Xt,Ct,Pt,Nt,R]),Qt=(0,b.useCallback)(e=>{!e||!o||Rt(o)},[o,Rt]),$t=(0,b.useCallback)(e=>new Promise(t=>{et.current=t,Ze(e)}),[]),en=(0,b.useCallback)(e=>{let t=et.current;et.current=null,Ze(null),t?.(e)},[]),tn=(0,b.useCallback)(async e=>{if(!tt||!o)throw Error(`Select a project first.`);if(!o8({activeProject:tt,activeProjectBranchState:ut,nextTarget:e})||!c||c.kind!==`project`||c.project_id!==tt.id)return!0;if(!await $t({title:`Stop current run and switch target?`,description:`Switching targets will stop the current run and close its preview.`,confirmLabel:`Stop and switch`,cancelLabel:`Keep current target`,confirmVariant:`destructive`}))return!1;try{let e=c.context_key,t=await ie(tt.id);return Xt(e),l(t.active_run),await Pt(),!0}catch(e){return X.error(e instanceof S?e.message:`Unable to stop the project run right now.`,{id:`project-target-switch-stop-run-error`}),!1}},[tt,ut,o,c,Xt,Pt,$t]),nn=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);return await tn({kind:`bundle`,bundleId:e})?(It(await Ve(o,{kind:`bundle`,bundle_id:e})),_(e=>({...e,[o]:null})),await Promise.all([jt(o),Mt(o)]),!0):!1},[o,tn,jt,Mt,It]),rn=(0,b.useCallback)(async(e,t={})=>{if(!o)throw Error(`Select a project first.`);if(!await tn({kind:`repo_root`,branch:e}))return!1;let n=n=>Ve(o,{kind:`repo_root`,...e?{branch:e}:{},...t.createBranch===!1?{create_branch:!1}:{},...n?{confirm_dirty_switch:!0}:{}}),r;try{r=await n(t.confirmDirtySwitch===!0)}catch(e){if(!t.confirmDirtySwitch&&e instanceof S&&e.status===409&&e.message===a8){if(!await $t({title:`Switch repo root branch?`,description:`${a8}\n\nSwitch anyway?`,confirmLabel:`Switch anyway`,cancelLabel:`Keep current branch`}))return!1;r=await n(!0)}else throw e}return It(r),_(e=>({...e,[o]:null})),await Promise.all([jt(o),Mt(o),Rt(o)]),!0},[o,tn,Rt,jt,Mt,It,$t]),an=(0,b.useCallback)(async e=>!e.target_kind||e.target_available===!1?!0:e.target_kind===`bundle`?e.target_bundle_id?await nn(e.target_bundle_id):!1:await rn(e.target_branch_snapshot??null,{createBranch:!1}),[nn,rn]),on=(0,b.useCallback)(()=>{Je(!0)},[]),sn=(0,b.useCallback)(()=>{Je(!1)},[]),cn=(0,b.useCallback)(e=>{if(e){nn(e);return}rn(null)},[nn,rn]),ln=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);let t=await A(o,{name:e,prepare:!0});return Lt(o,t),xe(e=>e+1),t},[o,Lt]),un=(0,b.useCallback)(async e=>{if(!o)throw Error(`Select a project first.`);await U(o,e),Oe(t=>({...t,[o]:(t[o]??[]).filter(t=>t.id!==e)})),xe(e=>e+1)},[o]),dn=(0,b.useCallback)(async()=>{if(!tt)return;let e=tt.active_target_kind??`repo_root`,t=tt.active_target_bundle_id??null,n=c?.kind===`project`&&c.project_id===tt.id&&(c.target_kind??`repo_root`)===e&&((c.target_kind??`repo_root`)!==`bundle`||c.target_bundle_id===t),r=n?c?.context_key??null:null,i=!n&&n8(tt)&&xt===`hidden`;i&&(O(e=>({...e,[tt.id]:`inline`})),j(e=>({...e,[tt.id]:null})));try{let e=n?await ie(tt.id):await re(tt.id);n&&Xt(r),l(e.active_run),Pt()}catch(e){i&&O(e=>({...e,[tt.id]:`hidden`})),X.error(e instanceof S?e.message:`Unable to update the project run right now.`,{id:`app-project-run-error`})}},[xt,tt,c,Xt,Pt]),fn=(0,b.useCallback)(async()=>{if(!(!tt||!st))try{await ze(tt.id)}catch(e){X.error(e instanceof Error?e.message:`Unable to open the IDE right now.`,{id:`app-project-open-ide-error`})}},[tt,st]),pn=(0,b.useCallback)(async()=>{if(tt){C(tt.id);try{let e=await qe(tt.id);_(t=>({...t,[tt.id]:e})),tt.active_target_kind!==`bundle`&&await jt(tt.id),M$(tt.id),X.success(e.behind===0?`Project branch synced.`:`Project branch updated.`,{id:`app-project-pull-success`})}catch(e){X.error(e instanceof S?e.message:`Unable to sync the current branch right now.`,{id:`app-project-pull-error`})}finally{C(e=>e===tt.id?null:e)}}},[tt,jt]),mn=(0,b.useCallback)(()=>{tt&&K({projectId:tt.id,title:tt.name})},[tt]),hn=(0,b.useCallback)(()=>{if(!de)return;let{projectId:e}=de;K(null),jt(e),Mt(e)},[jt,Mt,de]),gn=J6(fe,o),_n=it===`chat`?we:null,vn=$e.current,yn=vn?.target?.kind??null,bn=it===`chat`?yn===`ticket`||yn===`bundle`?{target:vn?.target??null,canSelect:!1,disabledReason:`This preview belongs to a ticket run. Return to Board to send preview comments.`,promptMode:vn?.promptMode??null,onPromptModeChange:vn?.onPromptModeChange??null,isUpdatingPromptMode:vn?.isUpdatingPromptMode??!1,promptPlaceholder:vn?.promptPlaceholder??null,promptComposerControls:vn?.promptComposerControls,promptComposerInlineControls:vn?.promptComposerInlineControls,submitPrompt:null}:_n?{target:{kind:`chat_session`,id:_n.chatSessionId??`draft:${o}`},canSelect:_n.canSubmitReviewPrompt,disabledReason:_n.canSubmitReviewPrompt?null:_n.reviewSubmitDisabledReason??`Wait for the current chat turn to finish before sending preview comments.`,promptMode:_n.mode,onPromptModeChange:_n.onModeChange,isUpdatingPromptMode:_n.isUpdatingMode,promptPlaceholder:_n.promptPlaceholder,promptComposerControls:_n.promptComposerControls,promptComposerInlineControls:_n.promptComposerInlineControls,submitPrompt:_n.canSubmitReviewPrompt?_n.submitPrompt:null}:{target:null,canSelect:!1,disabledReason:`Select a chat session to send preview comments.`,submitPrompt:null}:Se,xn=_n?.canSubmitReviewPrompt??!1,Sn=it===`chat`?_n?_n.reviewSubmitDisabledReason:`Select a chat session to send review comments.`:void 0,Cn=(0,b.useCallback)(()=>{o&&pe(e=>{let t=e[o]??M6;return{...e,[o]:{hasMounted:!0,isOpen:!t.isOpen,isExpanded:t.isExpanded}}})},[o]),wn=(0,b.useCallback)(e=>{pe(t=>{let n=t[e]??M6;return!n.hasMounted||!n.isOpen?t:{...t,[e]:M6}})},[]),Tn=(0,b.useCallback)(e=>{pe(t=>{let n=t[e]??M6;return{...t,[e]:{hasMounted:!0,isOpen:n.isOpen,isExpanded:!n.isExpanded}}})},[]),En=(0,b.useCallback)(()=>{o&&pe(e=>{let t=e[o]??M6;return t.isOpen?e:{...e,[o]:{hasMounted:!0,isOpen:!0,isExpanded:t.isExpanded}}})},[o]),Dn=(0,b.useCallback)(()=>{ue(`create`)},[]),On=(0,b.useCallback)(()=>{if(o){if(St){Yt();return}O(e=>({...e,[o]:`inline`})),j(e=>({...e,[o]:null}))}},[o,Yt,St]),kn=(0,b.useCallback)(()=>{o&&O(e=>{let t=Y6(e,o);return{...e,[o]:t===`expanded`?`inline`:`expanded`}})},[o]),An=tt?tt.preview_service_name?.trim()?tt.preview_capability_mode===`force_disabled`?`Preview is disabled for this project.`:bt?.state===`unsupported`?bt.message??`Preview is unavailable for this project.`:St?`Hide preview`:`Show preview`:`Choose a named preview service in project settings first.`:`Select a project first.`,jn=!tt||!tt.preview_service_name?.trim()||tt.preview_capability_mode===`force_disabled`||bt?.state===`unsupported`,Mn=tt&&tt.preview_service_name?.trim()?(0,q.jsx)(rO,{project:tt,mode:xt===`expanded`?`expanded`:`inline`,status:bt,viewportPreset:P,zoom:I,activeRun:Ct,reviewCapability:bn,isStoppingActiveRun:Dt,onHide:Yt,onStopActiveRun:()=>{Zt()},onToggleExpanded:kn,onViewportPresetChange:F,onZoomChange:L}):null;return $0([{key:`t`,onKeyDown:En}],{isBlocked:Q0}),(0,q.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-[linear-gradient(180deg,_rgba(15,16,21,1),_rgba(9,10,14,1))] text-foreground`,children:[(0,q.jsx)(kv,{}),i.length>0&&(0,q.jsx)(`header`,{className:`border-b border-border bg-background/95 px-6 py-3 backdrop-blur`,children:(0,q.jsxs)(`div`,{className:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] lg:items-center`,children:[(0,q.jsx)(`div`,{className:`min-w-0 lg:justify-self-start`,children:(0,q.jsx)(`div`,{className:`min-w-0 w-full sm:min-w-[20rem] sm:max-w-[30rem]`,children:(0,q.jsx)(__,{activeProjectId:o,projects:i,onEditProject:()=>ue(`edit`),onProjectChange:s})})}),o&&(0,q.jsx)(`div`,{className:`flex justify-start lg:col-start-2 lg:row-start-1 lg:justify-center`,children:(0,q.jsx)(a6,{activeWorkspace:it,activityByWorkspace:ge,memoryEnabled:nt,onWorkspaceChange:e=>{o&&(he(t=>({...t,[o]:e})),_e(t=>W3(t,e)))}})}),(0,q.jsx)(`div`,{className:`w-full lg:col-start-3 lg:row-start-1 lg:w-auto lg:justify-self-end`,children:(0,q.jsx)(Ov,{activeTool:e,onCreateProject:Dn,onToolChange:Ft})})]})}),se?i.length===0?(0,q.jsx)(m_,{activeTool:e,availableHelperModels:ee,helperModel:te,helperVariant:G,isHelperModelsLoaded:V,isToolLoaded:n,onCreateProject:Dn,onHelperModelChange:e=>{ae(e),oe(``)},onHelperVariantChange:oe,onToolChange:Ft}):(0,q.jsx)(r6,{activeProjectId:o,activeProject:tt,activeProjectBranchState:ut,activeRun:c,activeTool:e,onRestoreChatSessionTarget:an,onChatReviewCapabilityChange:Te,isPreviewButtonDisabled:jn,onPreviewReviewCapabilityChange:Ce,onPreviewToggle:On,onRunStopped:Xt,onWorkspaceActivityChange:_e,onWorkspaceActivityEvent:At,previewDisplayMode:xt,previewPane:Mn,previewPaneWidth:M,previewButtonTitle:An,visibleWorkspace:it,refreshKey:be,onBoardLoadedProjectIdChange:d,onBundlesChange:Ut,onBundlesLoadingChange:Wt,onPreviewPaneWidthChange:N,onProjectUsageChange:Ht,onRunStatusChange:()=>{Nt(),Pt()}},o??`no-project`):(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Loading projects...`}),i.length>0&&(0,q.jsx)(Ev,{activeProject:tt,activeRun:c,branchState:ut,targetGitStatus:dt,isBoardLoadedForActiveProject:ct,isProjectSyncing:x===o,isProjectIdeAvailable:st,isProjectRunAvailable:ot,isRunStatusLoadedForActiveProject:lt,isTerminalOpen:gn.isOpen,targetBundles:pt,targetBranchSuggestions:ht,isTargetBundleLoading:mt,isTargetSelectorLoading:gt,isTargetGitStatusLoading:ft,onProjectIdeOpen:()=>{fn()},onProjectPull:()=>{pn()},onProjectRunToggle:()=>{dn()},onProjectChangesOpen:mn,onTerminalToggle:Cn,onTargetSelectorOpenChange:Qt,onSelectBundleTarget:nn,onSelectRepoRootTarget:rn,onManageBundles:on}),Ge&&tt&&(0,q.jsx)(Zv,{bundles:pt,selectedBundleId:tt.active_target_kind===`bundle`?tt.active_target_bundle_id??null:null,activeTargetBundleId:tt.active_target_kind===`bundle`?tt.active_target_bundle_id??null:null,onSelectBundle:cn,onCreateBundle:ln,onDeleteBundle:un,onClose:sn}),Ye&&(0,q.jsx)(Rv,{title:Ye.title,description:Ye.description,confirmLabel:Ye.confirmLabel,cancelLabel:Ye.cancelLabel,confirmVariant:Ye.confirmVariant,onConfirm:()=>en(!0),onCancel:()=>en(!1)}),i.map(e=>{let t=J6(fe,e.id);return t.hasMounted?(0,q.jsx)(i6,{project:e,isExpanded:t.isExpanded,isVisible:e.id===o&&t.isOpen,onClose:()=>wn(e.id),onToggleExpanded:()=>Tn(e.id)},e.id):null}),le&&(0,q.jsx)(Xb,{mode:le,projectId:le===`edit`&&tt?tt.id:null,availableHelperModels:ee,isLoadingHelperModels:!V,isAutoConfigReady:n,initialValues:le===`edit`&&tt?z6(tt):i.length===0?{name:``,repoPath:``,linkedProjectIds:[],runSetup:[],runServices:[],runIde:``,previewServiceName:``,previewPath:``,previewCapabilityMode:`auto`,helperModel:te,helperVariant:G,commitMessageRules:``,autoParkStaleTickets:!1,memoryEnabled:!1,worktreeSync:[]}:void 0,linkedProjectOptions:i.filter(e=>e.id!==tt?.id).map(e=>({id:e.id,name:e.name})),repoPathLocked:le===`edit`&&tt?tt.repo_path_locked:!1,repoPathLockedMessage:le===`edit`&&tt?U6(tt):null,deleteBlockedMessage:le===`edit`&&tt?W6(tt,i):null,onDelete:le===`edit`?Vt:void 0,onAutoConfig:Gt,onBrowseRepoPath:Kt,onValidateRepoPath:qt,onClose:()=>ue(null),onSubmit:le===`edit`?Bt:zt}),de&&de.projectId===o&&(0,q.jsx)(b.Suspense,{fallback:null,children:(0,q.jsx)(P6,{scope:`project_root`,projectId:de.projectId,title:de.title,onSubmitReviewPrompt:_n?.submitPrompt,canSubmitReviewPrompt:xn,reviewSubmitDisabledReason:Sn??void 0,canAddReviewComments:xn,canModifyChanges:!0,onClose:hn})})]})};document.documentElement.classList.add(`dark`),document.documentElement.style.colorScheme=`dark`,(0,y.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(s8,{}));