import{nh as u,oh as LJ}from"./cli-0.5.3-swre5s9y.mjs";import{DF as E,FD as QJ,FF as OJ,GD as BJ,GF as g,HF as c,IF as i,LF as l,MF as UJ,bm as KJ,cm as IJ}from"./cli-0.5.3-jbzr8k4s.mjs";import"./cli-0.5.3-me9jkw92.mjs";import"./cli-0.5.3-bqmztzjc.mjs";import"./cli-0.5.3-ytqxzjff.mjs";import"./cli-0.5.3-h6n812td.mjs";import"./cli-0.5.3-hg8c6qbh.mjs";import"./cli-0.5.3-39jr2yrx.mjs";import"./cli-0.5.3-42e2paz8.mjs";import"./cli-0.5.3-mn45xfck.mjs";import"./cli-0.5.3-m884a3pk.mjs";import"./cli-0.5.3-4f9xxrem.mjs";import"./cli-0.5.3-gr8nsa2k.mjs";import"./cli-0.5.3-yj9nbd9d.mjs";import"./cli-0.5.3-55kd38ff.mjs";import"./cli-0.5.3-e6bjcfwg.mjs";import"./cli-0.5.3-4dbxtwh3.mjs";import"./cli-0.5.3-m0kfmb79.mjs";import"./cli-0.5.3-8zq9vdtg.mjs";import"./cli-0.5.3-vmx7agj7.mjs";import"./cli-0.5.3-h8xs2818.mjs";import"./cli-0.5.3-wcx7cnw5.mjs";import"./cli-0.5.3-9zbakvbf.mjs";import"./cli-0.5.3-hx550gz2.mjs";import{IW as JJ,KW as S,nX as _J,pV as RJ}from"./cli-0.5.3-842pf3t4.mjs";import"./cli-0.5.3-wxead1ct.mjs";import"./cli-0.5.3-s1hz35ye.mjs";import"./cli-0.5.3-g0svn6bx.mjs";import"./cli-0.5.3-sfdh3pkx.mjs";import"./cli-0.5.3-d8tjnxcj.mjs";import"./cli-0.5.3-6zfw1732.mjs";import"./cli-0.5.3-ptjdgcsy.mjs";import"./cli-0.5.3-tp3jye12.mjs";import{NY as V,OY as e,PY as R}from"./cli-0.5.3-vqmxwet2.mjs";import{QY as wJ}from"./cli-0.5.3-rch86nhn.mjs";import"./cli-0.5.3-zg2apr51.mjs";import"./cli-0.5.3-ngnshpb7.mjs";import{cZ as C,eZ as D,jZ as PJ}from"./cli-0.5.3-e58xste9.mjs";import"./cli-0.5.3-6163zevg.mjs";import"./cli-0.5.3-jmkkd5ph.mjs";import{e3 as k,m3 as m,o3 as b,z3 as v}from"./cli-0.5.3-1vt6twff.mjs";import"./cli-0.5.3-7017ez65.mjs";import"./cli-0.5.3-ea94acj4.mjs";import"./cli-0.5.3-3k22nqvy.mjs";import"./cli-0.5.3-63q4g3zt.mjs";import{C5 as yJ,y5 as d}from"./cli-0.5.3-dyhbm5kp.mjs";import{D5 as j,V5 as WJ}from"./cli-0.5.3-vpcrbd8n.mjs";import"./cli-0.5.3-jdw3ajfv.mjs";import"./cli-0.5.3-qg4a557t.mjs";import{K7 as VJ,P6 as I,R6 as TJ,m7 as B,t7 as h}from"./cli-0.5.3-t65dek0m.mjs";import"./cli-0.5.3-kavpx97n.mjs";import"./cli-0.5.3-9bdwhdys.mjs";import"./cli-0.5.3-ttc72eq3.mjs";import"./cli-0.5.3-g75gdzrp.mjs";import{Ida as $,Uda as qJ}from"./cli-0.5.3-1rg2r7n7.mjs";import"./cli-0.5.3-6j2jk6dt.mjs";import{Jea as f,Kea as HJ}from"./cli-0.5.3-66650sba.mjs";import{Lea as F,Nea as AJ}from"./cli-0.5.3-9vh3vpap.mjs";import{Nfa as N,Qfa as FJ}from"./cli-0.5.3-n3cxyxpg.mjs";import"./cli-0.5.3-kbvzmaax.mjs";import"./cli-0.5.3-7wdgps7z.mjs";import"./cli-0.5.3-c8bcrqa4.mjs";import"./cli-0.5.3-qrvd6cmy.mjs";import"./cli-0.5.3-2dk1sk8w.mjs";import{Tma as t,Xma as w}from"./cli-0.5.3-0df3r78b.mjs";async function p(){if(!k())return null;try{let{accessToken:Q,orgUUID:J}=await C();return(await j.get(`${f().BASE_API_URL}/v1/ultrareview/quota`,{headers:{...D(Q),"x-organization-uuid":J},timeout:5000})).data}catch(Q){return N(`fetchUltrareviewQuota failed: ${Q}`),null}}var x=w(()=>{WJ();HJ();v();FJ();PJ()});function s(){r=!0}async function o(){if(m()||b())return{kind:"proceed",billingNote:""};let[Q,J]=await Promise.all([p(),u().catch(()=>null)]);if(!Q)return{kind:"proceed",billingNote:""};if(Q.reviews_remaining>0)return{kind:"proceed",billingNote:` This is free ultrareview ${Q.reviews_used+1} of ${Q.reviews_limit}.`};if(!J)return{kind:"proceed",billingNote:""};let Z=J.extra_usage;if(!Z?.is_enabled)return F("tengu_review_overage_not_enabled",{}),{kind:"not-enabled"};let X=Z.monthly_limit,z=Z.used_credits??0,G=X===null||X===void 0?1/0:X-z;if(G<10)return F("tengu_review_overage_low_balance",{available:G}),{kind:"low-balance",available:G};if(!r)return F("tengu_review_overage_dialog_shown",{}),{kind:"needs-confirm"};return{kind:"proceed",billingNote:" This review bills as Extra Usage."}}async function a(Q,J,Z){let X=await g();if(!X.eligible){let K=X.errors.filter((Y)=>Y.type!=="no_remote_environment");if(K.length>0)return F("tengu_review_remote_precondition_failed",{precondition_errors:K.map((q)=>q.type).join(",")}),[{type:"text",text:`Ultrareview cannot launch:
${K.map(c).join(`
`)}`}]}let z=Z??"",G=Q.trim(),A=/^\d+$/.test(G),O="env_011111111111111111111113",H=$("tengu_review_bughunter_config",null),W=(K,Y,q)=>{if(typeof K!=="number"||!Number.isFinite(K))return Y;let y=Math.floor(K);if(y<=0)return Y;return q!==void 0&&y>q?Y:y},T={BUGHUNTER_DRY_RUN:"1",BUGHUNTER_FLEET_SIZE:String(W(H?.fleet_size,5,20)),BUGHUNTER_MAX_DURATION:String(W(H?.max_duration_minutes,10,25)),BUGHUNTER_AGENT_TIMEOUT:String(W(H?.agent_timeout_seconds,600,1800)),BUGHUNTER_TOTAL_WALLCLOCK:String(W(H?.total_wallclock_minutes,22,27)),...process.env.BUGHUNTER_DEV_BUNDLE_B64&&{BUGHUNTER_DEV_BUNDLE_B64:process.env.BUGHUNTER_DEV_BUNDLE_B64}},M,P,U;if(A){let K=await d();if(!K||K.host!=="github.com")return F("tengu_review_remote_precondition_failed",{}),null;M=await E({initialMessage:null,description:`ultrareview: ${K.owner}/${K.name}#${G}`,signal:J.abortController.signal,branchName:`refs/pull/${G}/head`,environmentId:O,environmentVariables:{BUGHUNTER_PR_NUMBER:G,BUGHUNTER_REPOSITORY:`${K.owner}/${K.name}`,...T}}),P=`/ultrareview ${G}`,U=`${K.owner}/${K.name}#${G}`}else{let K=await h()||"main",{stdout:Y,code:q}=await I(B(),["merge-base",K,"HEAD"],{preserveOutputOnError:!1}),y=Y.trim();if(q!==0||!y)return F("tengu_review_remote_precondition_failed",{}),[{type:"text",text:`Could not find merge-base with ${K}. Make sure you're in a git repo with a ${K} branch.`}];let{stdout:YJ,code:zJ}=await I(B(),["diff","--shortstat",y],{preserveOutputOnError:!1});if(zJ===0&&!YJ.trim())return F("tengu_review_remote_precondition_failed",{}),[{type:"text",text:`No changes against the ${K} fork point. Make some commits or stage files first.`}];if(M=await E({initialMessage:null,description:`ultrareview: ${K}`,signal:J.abortController.signal,useBundle:!0,environmentId:O,environmentVariables:{BUGHUNTER_BASE_BRANCH:y,...T}}),!M)return F("tengu_review_remote_teleport_failed",{}),[{type:"text",text:"Repo is too large. Push a PR and use `/ultrareview <PR#>` instead."}];P="/ultrareview",U=K}if(!M)return F("tengu_review_remote_teleport_failed",{}),null;i({remoteTaskType:"ultrareview",session:M,command:P,context:J,isRemoteReview:!0}),F("tengu_review_remote_launched",{});let L=l(M.id);return[{type:"text",text:`Ultrareview launched for ${U} (~10–20 min, runs in the cloud). Track: ${L}${z} Findings arrive via task-notification. Briefly acknowledge the launch to the user without repeating the target or URL — both are already visible in the tool output above.`}]}var r=!1;var n=w(()=>{qJ();AJ();x();LJ();UJ();v();yJ();TJ();VJ();OJ()});function ZJ(Q){let J=XJ.c(15),{onProceed:Z,onCancel:X}=Q,[z,G]=_.useState(!1),A;if(J[0]===Symbol.for("react.memo_cache_sentinel"))A=new AbortController,J[0]=A;else A=J[0];let O=_.useRef(A),H;if(J[1]!==X||J[2]!==Z)H=(q)=>{if(q==="proceed")G(!0),Z(O.current.signal).catch(()=>G(!1));else X()},J[1]=X,J[2]=Z,J[3]=H;else H=J[3];let W=H,T;if(J[4]!==X)T=()=>{O.current.abort(),X()},J[4]=X,J[5]=T;else T=J[5];let M=T,P;if(J[6]===Symbol.for("react.memo_cache_sentinel"))P=[{label:"Proceed with Extra Usage billing",value:"proceed"},{label:"Cancel",value:"cancel"}],J[6]=P;else P=J[6];let U=P,L;if(J[7]===Symbol.for("react.memo_cache_sentinel"))L=V(S,{children:"Your free ultrareviews for this organization are used. Further reviews bill as Extra Usage (pay-per-use)."}),J[7]=L;else L=J[7];let K;if(J[8]!==M||J[9]!==W||J[10]!==z)K=e(JJ,{flexDirection:"column",gap:1,children:[L,z?V(S,{color:"background",children:"Launching…"}):V(QJ,{options:U,onChange:W,onCancel:M})]}),J[8]=M,J[9]=W,J[10]=z,J[11]=K;else K=J[11];let Y;if(J[12]!==M||J[13]!==K)Y=V(KJ,{title:"Ultrareview billing",onCancel:M,color:"background",children:K}),J[12]=M,J[13]=K,J[14]=Y;else Y=J[14];return Y}var XJ,_;var GJ=w(()=>{BJ();IJ();_J();R();XJ=t(RJ(),1),_=t(wJ(),1)});function EJ(Q){return Q.map((J)=>J.type==="text"?J.text:"").filter(Boolean).join(`
`)}async function MJ(Q,J,Z,X,z){let G=await a(Q,J,X);if(z?.aborted)return;if(G)Z(EJ(G),{shouldQuery:!0});else Z("Ultrareview failed to launch the remote session. Check that this is a GitHub repo and try again.",{display:"system"})}var JK=async(Q,J,Z)=>{let X=await o();if(X.kind==="not-enabled")return Q("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.",{display:"system"}),null;if(X.kind==="low-balance")return Q(`Balance too low to launch ultrareview ($${X.available.toFixed(2)} available, $10 minimum). Top up at https://claude.ai/settings/billing`,{display:"system"}),null;if(X.kind==="needs-confirm")return V(ZJ,{onProceed:async(z)=>{if(await MJ(Z,J,Q," This review bills as Extra Usage.",z),!z.aborted)s()},onCancel:()=>Q("Ultrareview cancelled.",{display:"system"})});return await MJ(Z,J,Q,X.billingNote),null};var SJ=w(()=>{n();GJ();R()});SJ();export{JK as call};
