import{dH as e,kJ as t,g4 as n,a9 as a,nx as s,h as o,m as r,gY as i,ny as u,bi as c,g2 as d,bZ as l,nz as g,nA as h,nB as f,nC as p,l8 as m,a3 as b,nD as _,nE as y,nF as v,nG as S,nH as w,ae as I,gc as O,nv as $,nI as C,ad as q,dz as U,nJ as z,jd as E,I as T,ev as R,nK as D,kv as L,d7 as A,nL as P,nM as k,nN as K,nO as B,nP as M,nQ as F,nR as G,nS as j,nT as Q,nU as N,nV as x,nW as H,nX as V,nY as W,c1 as Y,c2 as J,nZ as Z}from"./c818056db-BBpc4u6S.js";import{u as X,c as ee,d as te,b as ne}from"./vendor-query-AdjnXGiH.js";import{r as ae,j as se}from"./vendor-react-RSDKEZ60.js";import{u as oe}from"./vendor-intl-BNW8a19h.js";import{n as re,H as ie}from"./vendor-lodash-wKOE1Xsv.js";import{c as ue,u as ce}from"./vendor-zustand-IIUY2Tf-.js";const de=ae.createContext({isOpen:!1,dropdownToOpen:void 0,openModal:re,closeModal:re,clearCallerIdentifier:re}),le=({children:e})=>{const[t,n]=ae.useState(!1),a=ae.useRef(void 0),[s,o]=ae.useState(void 0);return se.jsx(de.Provider,{value:{isOpen:t,openModal:e=>{n(!0),a.current=e},closeModal:()=>{n(!1),o(a.current)},dropdownToOpen:s,clearCallerIdentifier:()=>{o(void 0)}},children:e})};const ge="recentDriveDocs";function he(e){return"object"==typeof e&&null!==e&&"string"==typeof e.uri&&("string"==typeof e.title||void 0===e.title)}const fe=()=>{const t=c(),{data:a}=d(),s=e(),o=u(n.GDRIVE);let r=!1;if(s){const e=Array.isArray(a)?a.find(e=>e.type===n.MCP_RESOURCES):null;if(o?.uuid&&e?.config?.servers){const t=e.config.servers[o.uuid];r=Boolean(t)}}else r=Boolean(Array.isArray(a)&&a.find(e=>e.type===n.GDRIVE&&e.enabled));return!t||r},pe=()=>r("kingfisher_enabled"),me=()=>{const e=fe(),t=pe();return Boolean(t&&e)},be=()=>({isAuthenticated:!1,isFetched:!0}),_e=()=>{const t=pe(),a=e(),s=g(n.GDRIVE),o=h(n.GDRIVE);return!!t&&(a?s:o)},ye=({callerIdentifier:o,handleAuthSuccess:r,pathname:i,queryString:u}={})=>{const c=e(),{isAuthenticated:d,startAuth:l,isFetched:g}=t(n.GDRIVE,{callerIdentifier:o,handleAuthSuccess:r,pathname:i,queryString:u}),{isAuthenticated:h,isFetched:f}={isAuthenticated:!1,isFetched:!0},{addSuccess:p}=a(),m=oe(),{dropdownToOpen:b,clearCallerIdentifier:_}=ae.useContext(de),y=(e=!0)=>{r?.(e),p(m.formatMessage({defaultMessage:"Connected to Google Drive",id:"ij6u4TNsGF"}))},v=()=>{};return s({callerIdentifier:o,successParam:"gdrive_success",handleOpen:y}),ae.useEffect(()=>{o&&b===o&&(r?.(!0),_())},[b,r,o,_]),c?{isDriveAuthenticated:d,initDriveAuth:l,handleDriveTrigger:y,isFetched:g}:{isDriveAuthenticated:h,initDriveAuth:v,handleDriveTrigger:y,isFetched:f}},ve=()=>{const t=e(),a=u(n.GDRIVE);return{serverId:a?.uuid,isConnected:a?.isConnected,isEnabled:t}},Se=(e={})=>{const{account:t,activeOrganization:n}=o(),a=t?.uuid,s=n?.uuid,r=me(),i=X();return I(`/api/organizations/${s}/sync/mcp/drive/auth`,"DELETE",{enabled:Boolean(n&&r),...e,onSuccess:(...t)=>{i.invalidateQueries({queryKey:[v,{accountUUID:a,orgUuid:s}]}),e.onSuccess?.(...t)}})},we=e=>{const t=f(),n=p(),a=X();ae.useEffect(()=>{e&&a.invalidateQueries({queryKey:[v,{accountUUID:t,orgUuid:n}]})},[a,e,t,n])},Ie=({documentId:e})=>{const{account:t,activeOrganization:n}=o(),a=t?.uuid,s=n?.uuid,r=me(),{isAuthenticated:i}={isAuthenticated:!1,isFetched:!0},u=b(`/api/organizations/${s}/sync/mcp/drive/document/${e}?include_content=false`,{queryKey:[y,{accountUUID:a,orgUuid:s,documentId:e}],enabled:r&&i,meta:{noToast:!0}});return we(u.isError),u};function Oe({uri:e}){const{data:t,isLoading:n}=Ie({documentId:e});return{title:t?.title,isLoading:n}}const $e=e=>{const{account:t,activeOrganization:n}=o(),a=t?.uuid,s=n?.uuid,r=me(),i=ae.useMemo(()=>e.map(e=>`/api/organizations/${s}/sync/mcp/drive/document/${e}`),[e,s]),u=ae.useMemo(()=>({queryKey:e.map(e=>[S,{accountUUID:a,orgUuid:s,documentId:e}]),enabled:r,meta:{noToast:!0}}),[e,a,s,r]),c=w(i,u);return we(c.some(e=>e.isError)),c},Ce=e=>{const{activeOrganization:t}=o(),n=f(),a=p(),s=me();m();const{isAuthenticated:r}={isAuthenticated:!1,isFetched:!0},i=function(){if("undefined"==typeof window||"undefined"==typeof localStorage)return[];const e=localStorage.getItem(ge);if(e){const t=JSON.parse(e);if(t&&Array.isArray(t)&&t.every(he))return t}return[]}(),{data:u,isSuccess:c,isLoading:d,isError:l}=b(`/api/organizations/${a}/sync/mcp/drive/recents`,{queryKey:[_,{accountUUID:n,orgUuid:a}],enabled:e&&!!t&&s&&r,meta:{noToast:!0}});return we(l),ae.useEffect(()=>{if(c&&u){const t=u.map(({uri:e,title:t})=>({uri:e,title:t}));e=t,localStorage.setItem(ge,JSON.stringify(e))}var e},[c,u]),{recentDriveDocs:c?u:i,isLoading:d}},qe=()=>{const e=pe(),t=r("apps_use_bananagrams");return e&&t},Ue=()=>{const e=me(),t=qe();return e&&t&&!0},ze=e=>{const t=Ue(),{account:n}=o(),a=r("claude_ai_sticky_project_settings"),s=i("enabled_bananagrams");return!!t&&(a?!!s:e?!!e?.conversationSettings?.enabled_bananagrams:!!n?.settings.enabled_bananagrams)},Ee=()=>{const{mutate:e}=l();return{toggleDriveSearchEnabled:({searchEnabled:t})=>{e({...void 0!==t?{enabled_bananagrams:t}:null})}}},Te="github_success";function Re(){const e=O(),t=X(),n=ae.useRef(null);return ae.useEffect(()=>{const a=e.toString(),{consume:s,nextLastConsumed:o}=function(e,t,n){return e?n===t?{consume:!1,nextLastConsumed:n}:{consume:!0,nextLastConsumed:t}:{consume:!1,nextLastConsumed:null}}(e.has(Te),a,n.current);if(n.current=o,s){t.invalidateQueries({queryKey:[$]},{cancelRefetch:!1});for(const e of C)t.cancelQueries({queryKey:[e]}).then(()=>t.invalidateQueries({queryKey:[e]},{cancelRefetch:!1}))}},[e,t]),null}function De(e,t,n){return`${e}:${t}/${n}`}const Le=new Map,Ae=new Map;function Pe(){const{activeOrganization:e}=o(),t=e?.uuid,n=I(`/api/organizations/${t}/code/repos/resync`,"POST",{meta:{noToast:!0}}),{mutateAsync:a}=n,s=ae.useCallback(e=>Date.now()-e.timestamp<3e5,[]),r=ae.useCallback(async e=>{const n=`${e.ghe?.host??"github.com"}:${De(t,e.owner.login,e.name)}`;if(Ae.has(n))return Ae.get(n);const s=a({owner:e.owner.login,repo:e.name,...void 0!==e.ghe&&{ghe_configuration_id:e.ghe.configuration_id}}).then(e=>{const t={type:"status",status:e};return Le.set(n,{repoKey:n,timestamp:Date.now(),result:t}),Ae.delete(n),t}).catch(e=>{const t=e instanceof Error?e:new Error(String(e));let a;return a=e instanceof q&&e.statusCode>=400&&e.statusCode<500?{type:"unauthorized",error:t}:{type:"retryable_error",error:t},"unauthorized"===a.type&&Le.set(n,{repoKey:n,timestamp:Date.now(),result:a}),Ae.delete(n),a});return Ae.set(n,s),s},[a,t]);return{getRepoStatus:ae.useCallback(async e=>{const n=`${e.ghe?.host??"github.com"}:${De(t,e.owner.login,e.name)}`,a=Le.get(n);return a&&s(a)?a.result:Ae.has(n)?Ae.get(n):r(e)},[t,s,r]),forceRefresh:ae.useCallback(async e=>{const n=`${e.ghe?.host??"github.com"}:${De(t,e.owner.login,e.name)}`;return Le.delete(n),Ae.has(n)&&await Ae.get(n).catch(()=>{}),r(e)},[t,r]),isLoading:n.isPending}}function ke(){Le.clear(),Ae.clear()}const Ke="branch-status-cache",Be="branch-status-cache:logout",Me=864e5,Fe={};function Ge(){try{const e=U().getItem(Ke);if(!e)return{};const t=JSON.parse(e);if(!t||"object"!=typeof t)return{};const n={};for(const[a,s]of Object.entries(t))s?.data&&"number"==typeof s.timestamp&&(n[a]={data:s.data,timestamp:s.timestamp});return n}catch{return{}}}function je(e,t,n){return n?`${e}:${t}:${n}`:`${e}:${t}`}function Qe(e,t,n){return je(e,t,n)}function Ne(e){return{repo:e.repo??"",branch:e.branch??"",gheConfigurationId:e.ghe_configuration_id,upstreamRepo:e.upstream_repo??void 0,upstreamDefaultBranch:e.upstream_default_branch??void 0,prBaseRef:e.pull_request?.base_ref??void 0}}function xe(e,t,n){if(0===n.size)return e;const a={};for(const r of Object.values(t))r.session_id&&n.has(r.session_id)&&r.repo&&r.branch&&(a[r.session_id]??=[]).push(Ne(r));let s=!1;const o={...e};for(const r of n){const t=a[r];t?ie(e[r],t)||(o[r]=t,s=!0):r in o&&(delete o[r],s=!0)}return s?o:e}function He(e,t){const n=e.pull_request,a=t?.pull_request,s=n&&a?{...a,...n,checks:n.checks?.length?n.checks:a.checks,mergeable:n.mergeable||a.mergeable,merge_state_status:n.merge_state_status||a.merge_state_status,auto_merge_enabled:n.auto_merge_enabled??a.auto_merge_enabled,review_decision:n.review_decision||a.review_decision,base_ref:n.base_ref??a.base_ref,title:n.title??a.title,deployments:n.deployments?.length?n.deployments:a.deployments}:n??a;return{...t,...e,session_id:e.session_id??t?.session_id,pull_request:s}}const Ve=ue(e=>{const t=function(){const e={},t=Date.now();for(const[n,a]of Object.entries(Ge()))t-a.timestamp<=Me&&(e[n]=a.data,Fe[n]=Math.min(a.timestamp,t));return e}(),n=new Set;for(const a of Object.values(t))a.session_id&&n.add(a.session_id);return{statuses:t,bySessionId:xe({},t,n),setStatus:t=>e(e=>{if(!t.repo||!t.branch)return e;const n=je(t.repo,t.branch,t.ghe_configuration_id);et(n);const a=e.statuses[n],s=He(t,a);if(ie(a,s))return e;const o={...e.statuses,[n]:s},r=new Set;return a?.session_id&&r.add(a.session_id),s.session_id&&r.add(s.session_id),{statuses:o,bySessionId:xe(e.bySessionId,o,r)}}),setStatuses:t=>e(e=>{const n=[],a=new Set;for(const o of t){if(!o.repo||!o.branch)continue;const t=je(o.repo,o.branch,o.ghe_configuration_id);et(t);const s=e.statuses[t],r=He(o,s);ie(s,r)||(n.push({key:t,status:r}),s?.session_id&&a.add(s.session_id),r.session_id&&a.add(r.session_id))}if(0===n.length)return e;const s={...e.statuses};for(const{key:t,status:o}of n)s[t]=o;return{statuses:s,bySessionId:xe(e.bySessionId,s,a)}})}});let We=null,Ye=!1;function Je(){if("undefined"==typeof document)return"anon";try{return z.get(E.SESSION_KEY_LC)??"anon"}catch{return"anon"}}const Ze=Je();function Xe(){if(Ye||Je()!==Ze)return;const e=Ge(),t=Date.now(),{statuses:n}=Ve.getState();for(const[s,o]of Object.entries(n)){const n=e[s],a=Fe[s]??t;n&&n.timestamp>a&&n.timestamp<=t||(e[s]={data:He(o,n?.data),timestamp:a})}const a=Object.entries(e).filter(([,e])=>t-e.timestamp<=Me);a.sort((e,t)=>t[1].timestamp-e[1].timestamp);try{U().setItem(Ke,JSON.stringify(Object.fromEntries(a.slice(0,50))))}catch{}}function et(e){Fe[e]=Date.now(),Ye||null===We&&(We=setTimeout(()=>{We=null,Xe()},1e3))}function tt(){Ye=!0,null!==We&&(clearTimeout(We),We=null);for(const e of Object.keys(Fe))delete Fe[e];Ve.setState({statuses:{},bySessionId:{}});try{const e=U();e.removeItem(Ke),e.setItem(Be,"1"),e.removeItem(Be)}catch{}}function nt(){return Ve.getState().statuses}function at(e,t,n){return Ve(a=>e&&t?a.statuses[je(e,t,n)]:void 0)}function st(e){return Ve(ce(t=>{const n={};for(const a of e){const e=t.statuses[a];e&&(n[a]=e)}return n}))}function ot(e){const t={};for(const n of e){const e=n.pull_request;if(!n.repo||!n.branch||!e)continue;const a=qt(e.state);if("merged"===a||"closed"===a)continue;const s=e.additions??0,o=e.deletions??0;s+o!==0&&(t[`${n.repo}:${n.branch}`]={additions:s,deletions:o})}return t}"undefined"!=typeof window&&(window.addEventListener("pagehide",function(){null!==We&&(clearTimeout(We),We=null,Xe())}),window.addEventListener("storage",e=>{(e.key===Be||e.key===Ke&&null===e.newValue)&&(Ye=!0)}));const rt=[];function it(e){return Ve(t=>t.bySessionId[e]??rt)}function ut(){const e=Ve(e=>e.bySessionId);return ae.useMemo(()=>new Map(Object.entries(e)),[e])}function ct(e,t=[]){if(0===t.length)return!1;try{if(!e.startsWith("http://")&&!e.startsWith("https://"))return!1;const n=new URL(e);return"https:"===n.protocol&&t.some(e=>n.hostname===e||n.hostname.endsWith(`.${e}`))}catch{return!1}}function dt(e,t){return t&&443!==t?`${e}:${t}`:e}const lt=e=>{const{activeOrganization:t}=o(),n=t?.uuid,{data:a}=ee({queryKey:[$,{orgUuid:n}],enabled:!1});return ae.useMemo(()=>{if(!e)return;const t=a?.ghe_connections;return t&&0!==t.length?ht(e,t):void 0},[e,a?.ghe_connections])},gt=()=>{const{data:e}=Tt({shouldFetch:!0}),t=e?.ghe_connections;return ae.useCallback(e=>{if(e&&t&&0!==t.length)return ht(e,t)},[t])};function ht(e,t){let n;try{n=new URL(e).hostname}catch{return}return t.find(e=>e.hostname===n)?.ghe_config_id}function ft(e){if(e.ghe)try{return new URL(e.ghe.host).hostname}catch{return e.ghe.host}}function pt(e){if(e.ghe)try{const t=new URL(e.ghe.host).host;return""===t?e.ghe.host:t}catch{return e.ghe.host}}function mt(e){return e.ghe?.host??"https://github.com"}const bt="https://github.com/apps/claude",_t=`${bt}/installations/new`;function yt(e){const t=new URL(_t);return t.searchParams.set("state",e),t.toString()}function vt(e,t){const n=e.allowed_redirect_hosts??["github.com"];if(!ct(e.redirect_url,n))return null;if("install"===t){const t=new URL(e.redirect_url),n=t.searchParams.get("state");if(n&&"github.com"===t.hostname)return yt(n)}return e.redirect_url}function St(e){const t=window.open(e,"_blank");t?t.opener=null:window.location.href=e}const wt="github_repo_not_accessible";function It(e){if(e instanceof q){const t=e.extra?.details;return t?.app_public_url||t?.app_install_url||null}return null}function Ot(e){return It(e)??bt}function $t(e){return e?.repos.some(e=>!0===e.status?.app_installed)??!1}function Ct({isGithubAuthenticated:e,isListGithubReposLoading:t,githubReposData:n}){return!1!==e&&(void 0===e||t?void 0:$t(n))}function qt(e){if(null!=e)switch(e.toLowerCase()){case"merged":return"merged";case"closed":return"closed";case"draft":return"draft";case"queued":return"queued";default:return"open"}}const Ut=e=>e instanceof q&&e.statusCode<500,zt=e=>e instanceof q&&(401===e.statusCode||403===e.statusCode||404===e.statusCode);function Et(e){if(void 0!==e)return e.is_authenticated||(e.ghe_connections??[]).some(e=>e.is_connected)}const Tt=({shouldFetch:e=!1,gheSourcesAvailable:t=!1})=>{const{activeOrganization:n}=o(),a=n?.uuid,s=Ft();return b(`/api/organizations/${a}/sync/github/auth`,{queryKey:[$,{orgUuid:a}],enabled:Boolean(e&&n&&(s||t)),meta:{noToast:!0,silent:Ut},staleTime:18e5})},Rt=({callerIdentifier:e,toggleGithubModalOpen:t,fetchImmediately:n=!1,pathname:a,queryString:r,shouldRedirectToDesktopApp:i,intent:u,setupEntrypoint:c,gheSourcesAvailable:d=!1,consumeSuccessOnce:l=!1}={})=>{const{activeOrganization:g}=o(),h=g?.uuid,f=Ft()&&!!g,p=!!g,[m,b]=ae.useState(n),_=Tt({shouldFetch:m,gheSourcesAvailable:d}),y=ae.useCallback(async({forceRefetch:e=!1}={})=>{if(!m||e){b(!0);const e=await _.refetch();return e.data?.is_authenticated}return _.data?.is_authenticated},[_,m]),{mutate:v}=I(`/api/organizations/${h}/sync/github/auth/start`,"POST",{enabled:p,onSuccess:e=>{const t=vt(e,u);if(null===t)throw $(),new Error("Invalid redirect URL received from auth endpoint");"install"===u?(St(t),$()):window.location.href=t},onError:()=>{$()}}),S=`${Te}=${e}${r?`&${r}`:""}`;s({callerIdentifier:e,successParam:Te,handleOpen:()=>{t?.(!0)},consumeOnce:l});const w=T(),O=ae.useRef(!1),$=()=>{O.current=!1};ae.useEffect(()=>{const e=e=>{e.persisted&&$()};return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[]);return{checkIsGithubAuthenticated:y,canStartAuth:f,canStartGheAuth:p,initGithubAuth:e=>{if(!(void 0!==e?.gheConfigId?p:f))return!1;const{origin:t,connectorsAuthHref:n}=(()=>{const e=D({pathname:a||window.location.pathname,searchParams:new URLSearchParams(window.location.search),queryString:S,shouldOpenInClaudeApp:w||!!i,isNestBuild:"ClaudeNest"===L()?.build});return{origin:e,connectorsAuthHref:A({open_in_browser:"1",auth_start:"github",origin:e,...h?{auth_start_org:h}:{}})}})();if(w){const t=void 0!==e?.gheConfigId?`${n}&ghe_config_id=${e.gheConfigId}`:n;return window.open(t,"_blank","noopener"),!0}return!O.current&&(O.current=!0,v({pre_auth_state:{origin:t,...void 0!==u?{intent:u}:{},...void 0!==c?{setup_entrypoint:c}:{}},ghe_config_id:e?.gheConfigId??null}),!0)},isGithubAuthenticated:_.data?.is_authenticated,gheConnections:_.data?.ghe_connections,isAnyGithubConnected:Et(_.data),githubUserLogin:_.data?.user_login,isLoading:_.isLoading,authStatusError:_.error??null,authStatusMalformed:void 0!==_.data&&"boolean"!=typeof _.data.is_authenticated}};function Dt(e,t){return!e||e===t}const Lt=e=>{const t=O(),{activeOrganization:n}=o(),a=t.get("ghe_config_id"),s=null!==a?Number.parseInt(a,10):NaN,r=s>0?s:void 0,{canStartGheAuth:i,initGithubAuth:u}=Rt({callerIdentifier:e}),c=ae.useRef(!1);ae.useEffect(()=>{!c.current&&i&&n&&"github"===t.get("auth_start")&&Dt(t.get("auth_start_org"),n.uuid)&&void 0!==r&&(c.current=!0,u({gheConfigId:r}))},[t,r,u,i,n])},At=()=>{const e=O(),{activeOrganization:t}=o(),{isGithubAuthenticated:n,isLoading:a}=Rt({callerIdentifier:"auth_start_bounce",fetchImmediately:!0}),s=ae.useRef(!1);ae.useEffect(()=>{if(s.current||a)return;if("github"!==e.get("auth_start"))return;if(!Dt(e.get("auth_start_org"),t?.uuid))return;if(e.get("ghe_config_id"))return;if(!n)return;const o=e.get("origin");o&&V.test(o)&&(s.current=!0,window.location.href=o)},[e,n,a,t?.uuid])},Pt=(e={})=>{const{activeOrganization:t}=o(),n=t?.uuid,a=Ft(),s=X();return I(`/api/organizations/${n}/sync/github/auth`,"DELETE",{enabled:Boolean(t&&a),...e,onSuccess:(...t)=>{s.invalidateQueries({queryKey:[$,{orgUuid:n}]}),e.onSuccess?.(...t)}})},kt=()=>{const{mutateAsync:e,isPending:t}=Pt();return{disconnect:ae.useCallback(async()=>{try{await e()}catch{return!1}return ke(),!0},[e]),isDisconnecting:t}},Kt=(e={})=>{const{activeOrganization:t}=o(),n=t?.uuid,a=X();return I("/v1/code/github/import-token","POST",{enabled:Boolean(t),headers:k(n),...e,onSuccess:(...t)=>{a.invalidateQueries({queryKey:[$,{orgUuid:n}]}),ke(),e.onSuccess?.(...t)}})},Bt=()=>!r("github_disabled")&&true,Mt=e=>{if(Array.isArray(e))return e.some(e=>e.type===n.GITHUB&&e.enabled)},Ft=()=>{const{data:e}=d(),t=c(),n=Mt(e);return Boolean(!t||!0===n||false)},Gt=()=>{const e=Bt(),{data:t}=d(),n=c(),a=Mt(t);return Boolean(e&&n&&!1===a)},jt=()=>{const{activeOrganization:e}=o(),t=e?.uuid,{data:n}=ee({queryKey:[$,{orgUuid:t}],enabled:!1});return n?.is_authenticated},Qt=()=>{const{activeOrganization:e}=o(),t=e?.uuid,n=Ft();return b(`/api/organizations/${t}/sync/github/repos`,{queryKey:[F,{orgUuid:t}],enabled:Boolean(e&&n),meta:{noToast:!0}})},Nt=({enabled:e,optimistic:t=!0})=>{const n=Ft(),a=e&&n,s=Tt({shouldFetch:a}),o=s.data?.is_authenticated,{isLoading:r,data:i}=Ht({skipStatus:!1,enabled:a&&!0===o}),u=Ct({isGithubAuthenticated:o,isListGithubReposLoading:r,githubReposData:i});return!!n&&(t?!1!==u:!0===u)},xt=e=>{const t=Ft(),n=Tt({shouldFetch:t}),a=n.data?.is_authenticated,{isLoading:s,data:o}=Ht({skipStatus:!1,enabled:t&&!0===a}),r=ae.useMemo(()=>{const e=new Map;for(const t of o?.repos??[])e.set(`${t.repo.owner.login}/${t.repo.name}`.toLowerCase(),t.status);return e},[o]);return{reposMissingApp:ae.useMemo(()=>s||!o?[]:e.filter(e=>{if(e.ghe)return!1;const t=`${e.owner.login}/${e.name}`.toLowerCase(),n=r.get(t);return void 0!==n&&!0!==n?.app_installed}),[e,r,s,o]),isLoading:s}},Ht=({skipStatus:e,enabled:t=!0,gheConfigurationId:n,refetchOnWindowFocus:a,timeoutMs:s}={})=>{const{activeOrganization:i}=o(),u=i?.uuid,c=Ft(),d=r("bad_moon_rising_skip_status"),l=e??d,g=new URLSearchParams({skip_status:l.toString()});void 0!==n&&g.set("ghe_configuration_id",n.toString());const h=g.toString();return b(`/api/organizations/${u}/code/repos?${h}`,{queryKey:[P,{orgUuid:u,skipStatus:l,gheConfigurationId:n}],enabled:Boolean(i&&u&&c&&t),...void 0!==a&&{refetchOnWindowFocus:a},meta:{noToast:!0,silent:Ut},...void 0!==s&&{timeoutMs:s}})},Vt=({skipStatus:e,enabled:t=!0})=>{const{activeOrganization:n}=o(),a=n?.uuid,s=new URLSearchParams({skip_status:e.toString()});return b(`/api/organizations/${a}/code/repos/all?${s.toString()}`,{queryKey:[W,{orgUuid:a,skipStatus:e}],enabled:Boolean(n&&a&&t),meta:{noToast:!0,silent:Ut}})},Wt=({q:e,gheConfigurationId:t,enabled:n=!0})=>{const{activeOrganization:a}=o(),s=a?.uuid,r=Ft(),i=e.trim(),u=new URLSearchParams({q:i});return void 0!==t&&u.set("ghe_configuration_id",t.toString()),b(`/api/organizations/${s}/code/repos/search?${u.toString()}`,{queryKey:["SYNC_GH_REPOS_SEARCH_QUERY_KEY",{orgUuid:s,q:i,gheConfigurationId:t}],enabled:Boolean(a&&s&&r&&n&&i),staleTime:3e4,meta:{noToast:!0}})};function Yt(e,t){return`https://${dt(e,t)}`}function Jt(e,t){return t?e.flatMap(e=>e??[]):function(e){const t=[],n=new Map;for(const a of e){if(!a)continue;const e=a.length;for(const s of a){const a=`${s.ghe?.host??"https://github.com"}/${s.owner.login}/${s.name}`,o=n.get(a);void 0===o?(n.set(a,{idx:t.length,size:e}),t.push(s)):e>o.size&&(t[o.idx]=s,n.set(a,{idx:o.idx,size:e}))}}return t}(e)}const Zt=({q:e,connectedGheSources:t,enabled:n})=>{const{activeOrganization:a}=o(),s=a?.uuid,r=R(),i=X(),u=e.trim();return ne({queries:t.map(e=>({queryKey:["SYNC_GH_REPOS_SEARCH_QUERY_KEY",{orgUuid:s,q:u,gheConfigurationId:e.configId}],queryFn:async()=>{const t=new URLSearchParams({q:u,ghe_configuration_id:String(e.configId)}),n=await r(`/api/organizations/${s}/code/repos/search?${t.toString()}`);if(an(n,i,s),!n.ok)throw new Error(`GHE repo search failed for ${e.hostname}: ${n.status}`);const a=await n.json(),o=Yt(e.hostname,e.port);return a.map(t=>({...t,repo:{...t.repo,ghe:{host:o,configuration_id:e.configId}}}))},enabled:Boolean(s)&&n&&""!==u,staleTime:3e4,retry:!1,meta:{noToast:!0}})),combine:e=>{const t=new Set,n=[];for(const a of e)for(const e of a.data??[]){const a=`${e.repo.ghe?.host??"https://github.com"}/${e.repo.owner.login}/${e.repo.name}`;t.has(a)||(t.add(a),n.push(e))}return{data:n,isFetching:e.some(e=>e.isFetching)}}})},Xt=({owner:e,repo:t,branch:n,directoriesOnly:a=!1,recursive:s=!0,retry:r,gheConfigurationId:i})=>{const{activeOrganization:u}=o(),c=u?.uuid,d=Ft(),l=new URLSearchParams;a&&l.append("directories_only","true"),s||l.append("recursive","false"),void 0!==i&&l.append("ghe_configuration_id",i.toString());const g=l.toString();return b(`/api/organizations/${c}/sync/github/repo/${e}/${t}/tree/${n}${g?`?${g}`:""}`,{queryKey:[M,{orgUuid:c,owner:e,repo:t,branch:n,directoriesOnly:a,recursive:s,gheConfigurationId:i}],staleTime:3e5,enabled:Boolean(e&&t&&n&&u&&d),meta:{noToast:!0},...void 0!==r&&{retry:r}})},en=({owner:e,repo:t,sha:n,gheConfigurationId:a})=>Xt({owner:e,repo:t,branch:n,directoriesOnly:!0,recursive:!1,retry:2,gheConfigurationId:a}),tn=({owner:e,repo:t,branch:n,directoriesOnly:a,recursive:s})=>{const r=(({owner:e,repo:t,branch:n})=>{const{activeOrganization:a}=o(),s=a?.uuid,r=Ft(),i=new URLSearchParams({owner:e??"",repo:t??""}).toString();return b(`/api/organizations/${s}/sync/github/repo?${i}`,{queryKey:[B,{orgUuid:s,owner:e,repo:t}],enabled:Boolean(e&&t&&!n&&a&&r),meta:{noToast:!0}})})({owner:e,repo:t,branch:n}),i=n||r.data?.default_branch,u=Xt({owner:e,repo:t,branch:i,directoriesOnly:a,recursive:s});return{data:{repo:r.data,tree:u.data},isFetching:r.isFetching||u.isFetching,error:r.error||u.error}},nn=({owner:e,repo:t,query:n,directoriesOnly:a,filePathsOnly:s,page:r,perPage:i=30,gheConfigurationId:u})=>{const{activeOrganization:c}=o(),d=c?.uuid,l=Ft(),g=new URLSearchParams;return n&&g.set("q",n),g.set("file_paths_only","true"),r&&g.set("page",r.toString()),g.set("per_page",i.toString()),void 0!==u&&g.set("ghe_configuration_id",u.toString()),b(`/api/organizations/${d}/sync/github/repo/${e}/${t}/search?${g.toString()}`,{queryKey:["GITHUB_REPO_SEARCH",{orgUuid:d,owner:e,repo:t,query:n,directoriesOnly:a,filePathsOnly:s,page:r,perPage:i,gheConfigurationId:u}],staleTime:3e5,enabled:Boolean(e&&t&&n&&c&&l),meta:{noToast:!0}})};function an(e,t,n){401===e.status&&t.invalidateQueries({queryKey:[$,{orgUuid:n}]})}const sn=({repoBranches:e,enabled:t=!0,gheConfigurationId:n,refetchInterval:a,refetchOnMount:s,discoverSessionPrs:r=!1,sessionIds:i,includeCiStatus:u=!1,includeReviewDecision:c=!0,includeDeployments:d=!1,caller:l})=>{const{activeOrganization:g}=o(),h=g?.uuid,f=Ft(),p=R(),b=jt(),_=X(),y=m(),{data:v}=ee({queryKey:[$,{orgUuid:h}],enabled:!1}),S=v?.ghe_connections,w=ae.useMemo(()=>e.map(({repo:e,branch:t,githubHost:a,gheConfigurationId:s})=>{const o=s??(a&&S?.length?ht(a,S):void 0)??n;return void 0!==o?{repo:e,branch:t,ghe_configuration_id:o}:{repo:e,branch:t}}).sort((e,t)=>`${e.repo}:${e.branch}`.localeCompare(`${t.repo}:${t.branch}`)),[e,S,n]),I=ae.useMemo(()=>{if(0===w.length)return;const e=function(e){const{statuses:t}=Ve.getState(),n=Date.now(),a=[];for(const{repo:s,branch:o,ghe_configuration_id:r}of e){const e=je(s,o,r),i=t[e];if(!i||n-Fe[e]>Me)return;a.push(i)}return a}(w);return e?{branch_statuses:e}:void 0},[]),O=ae.useMemo(()=>i&&i.length>0?[...i].sort():[],[i]),C=w.length>0||r&&O.length>0;return ee({queryKey:[Q,{orgUuid:h,repoBranches:w,discoverSessionPrs:r,sessionIds:O,includeCiStatus:u,includeReviewDecision:c,includeDeployments:d}],queryFn:async()=>{const e=l?`/v1/code/github/batch-branch-status?caller=${encodeURIComponent(l)}`:"/v1/code/github/batch-branch-status",t=await p(e,{method:"POST",headers:k(h),body:JSON.stringify({repo_branches:w,...r&&{discover_session_prs:!0,session_ids:O},...u&&{include_ci_status:!0},...!c&&{include_review_decision:!1},...d&&{include_deployments:!0}})});an(t,_,h),x(t,"Failed to fetch branch statuses.");const n=await t.json(),a=n.branch_statuses??[];return Ve.getState().setStatuses(a),n},enabled:Boolean(g&&f&&!1!==b&&C&&t&&!y.claudeai_github_branch_status),staleTime:12e4,refetchOnWindowFocus:!0,...void 0!==s?{refetchOnMount:s}:{},...a?{refetchInterval:N(a),refetchIntervalInBackground:!1}:{},placeholderData:e=>I??e,...j,meta:{noToast:!0,silent:G}})},on=()=>{const{activeOrganization:e}=o(),t=e?.uuid,{data:n,isLoading:a}=b(`/api/organizations/${t}/sync/github/auth`,{queryKey:[$,{orgUuid:t}],enabled:Boolean(e),meta:{noToast:!0,silent:Ut},staleTime:18e5}),s=n?.is_authenticated,{data:r,isLoading:i}=b(`/api/organizations/${t}/sync/github/repos?limit=0`,{queryKey:[F,{orgUuid:t}],enabled:Boolean(e&&s),meta:{noToast:!0}}),{data:u,isLoading:c}=Y(e?.uuid),d=ae.useMemo(()=>new Set((u?.settings?.vcs_connections??[]).filter(e=>"github"===e.type).map(e=>e.org_name)),[u?.settings?.vcs_connections]);return{data:{orgs:ae.useMemo(()=>{const e=[],t=new Set;if(r)for(const n of r){const a=n.owner;if("Organization"!==a.type)continue;const s=a.login;t.has(s)||(t.add(s),e.push({id:s,login:s,selectedForAnalytics:d.has(s)}))}return e},[r,d])},isLoading:a||c||i,isGithubAuthenticated:s}},rn=()=>{const{activeOrganization:e}=o(),t=X(),{mutate:n,isPending:a}=J({onSuccess:n=>{t.setQueryData([Z,e?.uuid],n)}});return{addGithubOrg:ae.useCallback((e,t)=>{n({add_vcs_connections:[{type:"github",org_name:e,org_id:t}]})},[n]),removeGithubOrg:ae.useCallback(e=>{n({remove_vcs_connections:[{type:"github",org_name:e}]})},[n]),isPending:a}},un=()=>{const{activeOrganization:e}=o(),t=e?.uuid;return I(`/api/github/organizations/${t}/generate_pr_content`,"POST",{enabled:Boolean(e)})};function cn(e){return e instanceof q&&403===e.statusCode}function dn(e){return e instanceof q&&400===e.statusCode&&e.message?e.message:null}const ln=()=>{const{activeOrganization:e}=o(),t=e?.uuid;return I("/v1/code/github/set-pr-auto-merge","POST",{enabled:Boolean(e),headers:k(t),meta:{noToast:!0}})},gn=({sessionId:e,repo:t,branch:n,prNumber:a,gheConfigurationId:s,enabled:r=!0})=>{const{activeOrganization:i}=o(),u=i?.uuid,c=Ft(),d=R(),l=jt(),g=X();return ee({queryKey:[K,{orgUuid:u,sessionId:e,repo:t,branch:n,prNumber:a,gheConfigurationId:s}],queryFn:async()=>{const a=await d("/v1/code/github/batch-branch-status",{method:"POST",headers:k(u),body:JSON.stringify({repo_branches:[void 0!==s?{repo:t,branch:n,ghe_configuration_id:s}:{repo:t,branch:n}],session_id:e,include_review_decision:!1})});an(a,g,u),x(a,"Failed to fetch PR subscription status.");const o=await a.json();return o.branch_statuses[0]?.has_session_binding??!1},enabled:Boolean(i&&c&&!1!==l&&e&&t&&n&&r),staleTime:1/0,refetchOnWindowFocus:!1,...j,meta:{noToast:!0}})};function hn(e,{session_id:t,status_repo:n,branch:a,pr_number:s,gheConfigurationId:o}){return[K,{orgUuid:e,sessionId:t,repo:n,branch:a,prNumber:s,gheConfigurationId:o}]}function fn({branch:e,status_repo:t,gheConfigurationId:n,...a}){return{...a,...void 0!==n&&{ghe_configuration_id:n}}}const pn=()=>{const{activeOrganization:e}=o(),t=e?.uuid,n=X();return I("/v1/code/github/subscribe-pr","POST",{enabled:Boolean(e),headers:k(t),transformVariables:fn,onMutate:async e=>{const a=hn(t,e);await n.cancelQueries({queryKey:a});const s=n.getQueryData(a);return n.setQueryData(a,!0),{previous:s}},onError:(e,a,s)=>{const o=hn(t,a);void 0===s?.previous?n.removeQueries({queryKey:o}):n.setQueryData(o,s.previous)},meta:{noToast:!0}})},mn=()=>{const{activeOrganization:e}=o(),t=e?.uuid,n=X();return I("/v1/code/github/unsubscribe-pr","POST",{enabled:Boolean(e),headers:k(t),transformVariables:fn,onMutate:async e=>{const a=hn(t,e);await n.cancelQueries({queryKey:a});const s=n.getQueryData(a);return n.setQueryData(a,!1),{previous:s}},onError:(e,a,s)=>{const o=hn(t,a);void 0===s?.previous?n.removeQueries({queryKey:o}):n.setQueryData(o,s.previous)},meta:{noToast:!0}})},bn=({enabled:e=!0,limit:t,refetchInterval:n,includeCiStatus:a=!1,includeDiffStats:s=!1,includeCiSummary:r=!1}={})=>{const{activeOrganization:i}=o(),u=i?.uuid,c=Ft(),d=jt(),l=R(),g=X();return te({queryKey:[H,{orgUuid:u,limit:t,includeCiStatus:a,includeDiffStats:s,includeCiSummary:r}],queryFn:async({pageParam:e})=>{const n=new URLSearchParams;"string"==typeof e&&e&&n.set("cursor",e),t&&n.set("limit",String(t)),n.set("include_ci_status",a?"true":"false"),n.set("include_diff_stats",s?"true":"false"),r&&n.set("include_ci_summary","true");const o=n.toString(),i=await l("/v1/code/github/pull-requests"+(o?`?${o}`:""),{method:"GET",headers:k(u)});return an(i,g,u),x(i,"Failed to fetch pull requests."),await i.json()},initialPageParam:"",getNextPageParam:e=>e.has_more&&e.next_cursor?e.next_cursor:void 0,enabled:Boolean(i&&c&&!1!==d&&e),staleTime:6e4,refetchOnWindowFocus:!0,...n?{refetchInterval:N(n),refetchIntervalInBackground:!1}:{},...j,meta:{noToast:!0,silent:G}})};export{dt as $,Nt as A,mt as B,Lt as C,At as D,Bt as E,Gt as F,gt as G,st as H,qt as I,lt as J,ke as K,bt as L,en as M,nn as N,kt as O,$t as P,Kt as Q,Ve as R,pn as S,gn as T,mn as U,at as V,un as W,cn as X,on as Y,rn as Z,zt as _,Rt as a,Vt as a0,wt as a1,Ot as a2,It as a3,tt as a4,Re as a5,Se as a6,Pt as a7,vt as a8,it as a9,St as aa,ot as ab,le as ac,_e as ad,Ct as ae,Ie as af,Ue as ag,ze as ah,be as ai,tn as aj,Qt as ak,Oe as al,ve as am,nt as an,$e as ao,fe as ap,qe as aq,Ft as b,Ht as c,yt as d,jt as e,Ee as f,ut as g,Dt as h,Qe as i,ln as j,dn as k,sn as l,bn as m,an as n,Yt as o,Jt as p,Wt as q,Zt as r,ft as s,ct as t,ye as u,pt as v,me as w,Ce as x,Pe as y,xt as z};
