| 1824 | `;function $h4(q){if(!q.uri||!q.server)return null;return`Read resource "${q.uri}" from server "${q.server}"`}function Ah4(){return"readMcpResource"}function Oh4(q,K,{verbose:_}){if(!q||!q.contents||q.contents.length===0)return ar.createElement(u,{justifyContent:"space-between",overflowX:"hidden",width:"100%"},ar.createElement(s8,{height:1},ar.createElement(k,{dimColor:!0},"(No content)")));let z=g6(q,null,2);return ar.createElement(uL,{content:z,verbose:_})}var ar;var wh4=y(()=>{gK();Vw6();s6();l8();ar=O6(D6(),1)});var lwz,nwz,sr;var ZE8=y(()=>{lM();x7();PD();Bq();fE8();l8();kw6();wh4();lwz=B6(()=>L.object({server:L.string().describe("The MCP server name"),uri:L.string().describe("The resource URI to read")})),nwz=B6(()=>L.object({contents:L.array(L.object({uri:L.string().describe("Resource URI"),mimeType:L.string().optional().describe("MIME type of the content"),text:L.string().optional().describe("Text content of the resource"),blobSavedTo:L.string().optional().describe("Path where binary blob content was saved")}))})),sr=sq({isConcurrencySafe(){return!0},isReadOnly(){return!0},toAutoClassifierInput(q){return`${q.server} ${q.uri}`},shouldDefer:!0,name:"ReadMcpResourceTool",searchHint:"read a specific MCP resource by URI",maxResultSizeChars:1e5,async description(){return zh4},async prompt(){return Yh4},get inputSchema(){return lwz()},get outputSchema(){return nwz()},async call(q,{options:{mcpClients:K}}){let{server:_,uri:z}=q,Y=K.find((w)=>w.name===_);if(!Y)throw Error(`Server "${_}" not found. Available servers: ${K.map((w)=>w.name).join(", ")}`);if(Y.type!=="connected")throw Error(`Server "${_}" is not connected`);if(!Y.capabilities?.resources)throw Error(`Server "${_}" does not support resources`);let A=await(await _N6(Y)).client.request({method:"resources/read",params:{uri:z}},ku6);return{data:{contents:await Promise.all(A.contents.map(async(w,j)=>{if("text"in w)return{uri:w.uri,mimeType:w.mimeType,text:w.text};if(!("blob"in w)||typeof w.blob!=="string")return{uri:w.uri,mimeType:w.mimeType};let H=`mcp-resource-${Date.now()}-${j}-${Math.random().toString(36).slice(2,8)}`,J=await ZN6(Buffer.from(w.blob,"base64"),w.mimeType,H);if("error"in J)return{uri:w.uri,mimeType:w.mimeType,text:`Binary content could not be saved to disk: ${J.error}`};return{uri:w.uri,mimeType:w.mimeType,blobSavedTo:J.filepath,text:DE8(J.filepath,w.mimeType,J.size,`[Resource from ${_} at ${w.uri}] `)}}))}}},renderToolUseMessage:$h4,userFacingName:Ah4,renderToolResultMessage:Oh4,isResultTruncated(q){return UC(g6(q))},mapToolResultToToolResultBlockParam(q,K){return{tool_use_id:K,type:"tool_result",content:g6(q)}}})});function jh4(q){let K=q.trim(),_=K.split(/\s+/)[0]?.toLowerCase();if(!_)return;if(_==="npx"||_==="bunx"){let z=K.split(/\s+/)[1]?.toLowerCase();if(z&&z in UB1)return UB1[z]}return UB1[_]}function Hh4(q){for(let{pattern:K,tool:_}of iwz)if(K.test(q))return _;return}var UB1,iwz;var QB1=y(()=>{UB1={src:"sourcegraph",cody:"cody",aider:"aider",tabby:"tabby",tabnine:"tabnine",augment:"augment",pieces:"pieces",qodo:"qodo",aide:"aide",hound:"hound",seagoat:"seagoat",bloop:"bloop",gitloop:"gitloop",q:"amazon-q",gemini:"gemini"},iwz=[{pattern:/^sourcegraph$/i,tool:"sourcegraph"},{pattern:/^cody$/i,tool:"cody"},{pattern:/^openctx$/i,tool:"openctx"},{pattern:/^aider$/i,tool:"aider"},{pattern:/^continue$/i,tool:"continue"},{pattern:/^github[-_]?copilot$/i,tool:"github-copilot"},{pattern:/^copilot$/i,tool:"github-copilot"},{pattern:/^cursor$/i,tool:"cursor"},{pattern:/^tabby$/i,tool:"tabby"},{pattern:/^codeium$/i,tool:"codeium"},{pattern:/^tabnine$/i,tool:"tabnine"},{pattern:/^augment[-_]?code$/i,tool:"augment"},{pattern:/^augment$/i,tool:"augment"},{pattern:/^windsurf$/i,tool:"windsurf"},{pattern:/^aide$/i,tool:"aide"},{pattern:/^codestory$/i,tool:"aide"},{pattern:/^pieces$/i,tool:"pieces"},{pattern:/^qodo$/i,tool:"qodo"},{pattern:/^amazon[-_]?q$/i,tool:"amazon-q"},{pattern:/^gemini[-_]?code[-_]?assist$/i,tool:"gemini"},{pattern:/^gemini$/i,tool:"gemini"},{pattern:/^hound$/i,tool:"hound"},{pattern:/^seagoat$/i,tool:"seagoat"},{pattern:/^bloop$/i,tool:"bloop"},{pattern:/^gitloop$/i,tool:"gitloop"},{pattern:/^claude[-_]?context$/i,tool:"claude-context"},{pattern:/^code[-_]?index[-_]?mcp$/i,tool:"code-index-mcp"},{pattern:/^code[-_]?index$/i,tool:"code-index-mcp"},{pattern:/^local[-_]?code[-_]?search$/i,tool:"local-code-search"},{pattern:/^codebase$/i,tool:"autodev-codebase"},{pattern:/^autodev[-_]?codebase$/i,tool:"autodev-codebase"},{pattern:/^code[-_]?context$/i,tool:"claude-context"}]});function rwz(q,K,_){var z=-1,Y=q.length;if(K<0)K=-K>Y?0:Y+K;if(_=_>Y?Y:_,_<0)_+=Y;Y=K>_?0:_-K>>>0,K>>>=0;var $=Array(Y);while(++z<Y)$[z]=q[z+K];return $}var GE8;var dB1=y(()=>{GE8=rwz});function owz(q,K,_){var z=q.length;return _=_===void 0?z:_,!K&&_>=z?q:GE8(q,K,_)}var Jh4;var Mh4=y(()=>{dB1();Jh4=owz});function Y2z(q){return z2z.test(q)}var awz="\\ud800-\\udfff",swz="\\u0300-\\u036f",twz="\\ufe20-\\ufe2f",ewz="\\u20d0-\\u20ff",q2z,K2z="\\ufe0e\\ufe0f",_2z="\\u200d",z2z,TE8;var cB1=y(()=>{q2z=swz+twz+ewz,z2z=RegExp("["+_2z+awz+q2z+K2z+"]");TE8=Y2z});function $2z(q){return q.split("")}var Xh4;var Ph4=y(()=>{Xh4=$2z});function Z2z(q){return q.match(f2z)||[]}var Wh4="\\ud800-\\udfff",A2z="\\u0300-\\u036f",O2z="\\ufe20-\\ufe2f",w2z="\\u20d0-\\u20ff",j2z,H2z="\\ufe0e\\ufe0f",J2z,lB1,nB1="\\ud83c[\\udffb-\\udfff]",M2z,Dh4,fh4="(?:\\ud83c[\\udde6-\\uddff]){2}",Zh4="[\\ud800-\\udbff][\\udc00-\\udfff]",X2z="\\u200d",Gh4,Th4,P2z,W2z,D2z,f2z,vh4;var kh4=y(()=>{j2z=A2z+O2z+w2z,J2z="["+Wh4+"]",lB1="["+j2z+"]",M2z="(?:"+lB1+"|"+nB1+")",Dh4="[^"+Wh4+"]",Gh4=M2z+"?",Th4="["+H2z+"]?",P2z="(?:"+X2z+"(?:"+[Dh4,fh4,Zh4].join("|")+")"+Th4+Gh4+")*",W2z=Th4+Gh4+P2z,D2z="(?:"+[Dh4+lB1+"?",lB1,fh4,Zh4,J2z].join("|")+")",f2z=RegExp(nB1+"(?="+nB1+")|"+D2z+W2z,"g");vh4=Z2z});function G2z(q){return TE8(q)?vh4(q):Xh4(q)}var Vh4;var Nh4=y(()=>{Ph4();cB1();kh4();Vh4=G2z});function T2z(q){return function(K){K=yX6(K);var _=TE8(K)?Vh4(K):void 0,z=_?_[0]:K.charAt(0),Y=_?Jh4(_,1).join(""):K.slice(1);return z[q]()+Y}}var yh4;var Eh4=y(()=>{Mh4();cB1();Nh4();c58();yh4=T2z});var v2z,Lh4;var Rh4=y(()=>{Eh4();v2z=yh4("toUpperCase"),Lh4=v2z});function k2z(q){return Lh4(yX6(q).toLowerCase())}var tr;var Wa6=y(()=>{c58();Rh4();tr=k2z});import{homedir as V2z,platform as hh4}from"os";import{join as uG}from"path";function y2z(q){let K=V2z(),_=[],z=Sh4[q.toLowerCase()];if(!z)return _;let Y=process.env.APPDATA||uG(K,"AppData","Roaming"),$=process.env.LOCALAPPDATA||uG(K,"AppData","Local");switch(hh4()){case"darwin":if(_.push(uG(K,"Library","Application Support","JetBrains"),uG(K,"Library","Application Support")),q.toLowerCase()==="androidstudio")_.push(uG(K,"Library","Application Support","Google"));break;case"win32":if(_.push(uG(Y,"JetBrains"),uG($,"JetBrains"),uG(Y)),q.toLowerCase()==="androidstudio")_.push(uG($,"Google"));break;case"linux":_.push(uG(K,".config","JetBrains"),uG(K,".local","share","JetBrains"));for(let A of z)_.push(uG(K,"."+A));if(q.toLowerCase()==="androidstudio")_.push(uG(K,".config","Google"));break;default:break}return _}async function E2z(q){let K=[],_=X8(),z=y2z(q),Y=Sh4[q.toLowerCase()];if(!Y)return K;let $=Y.map((A)=>new RegExp("^"+A));for(let A of z)try{let O=await _.readdir(A);for(let w of $)for(let j of O){if(!w.test(j.name))continue;if(!j.isDirectory()&&!j.isSymbolicLink())continue;let H=uG(A,j.name);if(hh4()==="linux"){K.push(H);continue}let J=uG(H,"plugins");try{await _.stat(J),K.push(J)}catch{}}}catch{continue}return K.filter((A,O)=>K.indexOf(A)===O)}async function L2z(q){let K=await E2z(q);for(let _ of K){let z=uG(_,N2z);try{return await X8().stat(z),!0}catch{}}return!1}async function R2z(q,K=!1){if(!K){let z=iB1.get(q);if(z)return z}let _=L2z(q).then((z)=>{return rB1.set(q,z),z});return iB1.set(q,_),_}async function Ch4(q,K=!1){if(K)rB1.delete(q),iB1.delete(q);return R2z(q,K)}function bh4(q){return rB1.get(q)??!1}var N2z="claude-code-jetbrains-plugin",Sh4,rB1,iB1;var oB1=y(()=>{e7();Sh4={pycharm:["PyCharm"],intellij:["IntelliJIdea","IdeaIC"],webstorm:["WebStorm"],phpstorm:["PhpStorm"],rubymine:["RubyMine"],clion:["CLion"],goland:["GoLand"],rider:["Rider"],datagrip:["DataGrip"],appcode:["AppCode"],dataspell:["DataSpell"],aqua:["Aqua"],gateway:["Gateway"],fleet:["Fleet"],androidstudio:["AndroidStudio"]};rB1=new Map,iB1=new Map});import{execFileSync as xh4}from"child_process";class GN6{wslDistroName;constructor(q){this.wslDistroName=q}toLocalPath(q){if(!q)return q;if(this.wslDistroName){let K=q.match(/^\\\\wsl(?:\.localhost|\$)\\([^\\]+)(.*)$/);if(K&&K[1]!==this.wslDistroName)return q}try{return xh4("wslpath",["-u",q],{encoding:"utf8",stdio:["pipe","pipe","ignore"]}).trim()}catch{return q.replace(/\\/g,"/").replace(/^([A-Z]):/i,(K,_)=>`/mnt/${_.toLowerCase()}`)}}toIDEPath(q){if(!q)return q;try{return xh4("wslpath",["-w",q],{encoding:"utf8",stdio:["pipe","pipe","ignore"]}).trim()}catch{return q}}}function Ih4(q,K){let _=q.match(/^\\\\wsl(?:\.localhost|\$)\\([^\\]+)(.*)$/);if(_)return _[1]===K;return!0}var aB1=()=>{};function Km(q,K,_){let z=gq6.useRef(0),Y=gq6.useRef(void 0),$=gq6.useCallback(()=>{if(Y.current)clearTimeout(Y.current),Y.current=void 0},[]);return gq6.useEffect(()=>{return()=>{$()}},[$]),gq6.useCallback(()=>{let A=Date.now();if(A-z.current<=uh4&&Y.current!==void 0)$(),q(!1),K();else _?.(),q(!0),$(),Y.current=setTimeout((j,H)=>{j(!1),H.current=void 0},uh4,q,Y);z.current=A},[q,K,_,$])}var gq6,uh4=800;var Da6=y(()=>{gq6=O6(D6(),1)});function mh4(q,K,_,z=!0){let{exit:Y}=QT6(),[$,A]=Fq6.useState({pending:!1,keyName:null}),O=Fq6.useMemo(()=>_??Y,[_,Y]),w=Km((X)=>A({pending:X,keyName:"Ctrl-C"}),O),j=Km((X)=>A({pending:X,keyName:"Ctrl-D"}),O),H=Fq6.useCallback(()=>{if(K?.())return;w()},[w,K]),J=Fq6.useCallback(()=>{j()},[j]),M=Fq6.useMemo(()=>({"app:interrupt":H,"app:exit":J}),[H,J]);return q(M,{context:"Global",isActive:z}),$}var Fq6;var ph4=y(()=>{fL1();Da6();Fq6=O6(D6(),1)});function o5(q,K,_){return mh4(o7,K,q,_)}var z2=y(()=>{Oq();ph4()});function W1(q){let K=z6(5),{action:_,context:z,fallback:Y,description:$,parens:A,bold:O}=q,w=R5(_,z,Y),j;if(K[0]!==O||K[1]!==$||K[2]!==A||K[3]!==w)j=sB1.createElement(t8,{shortcut:w,action:$,parens:A,bold:O}),K[0]=O,K[1]=$,K[2]=A,K[3]=w,K[4]=j;else j=K[4];return j}var sB1;var a5=y(()=>{q8();LX();rK();sB1=O6(D6(),1)});function I1(q){let K=z6(5),{children:_}=q,z,Y;if(K[0]!==_){Y=Symbol.for("react.early_return_sentinel");q:{let A=SU.Children.toArray(_);if(A.length===0){Y=null;break q}z=A.map(h2z)}K[0]=_,K[1]=z,K[2]=Y}else z=K[1],Y=K[2];if(Y!==Symbol.for("react.early_return_sentinel"))return Y;let $;if(K[3]!==z)$=SU.default.createElement(SU.default.Fragment,null,z),K[3]=z,K[4]=$;else $=K[4];return $}function h2z(q,K){return SU.default.createElement(SU.default.Fragment,{key:SU.isValidElement(q)?q.key??K:K},K>0&&SU.default.createElement(k,{dimColor:!0}," · "),q)}var SU;var QK=y(()=>{q8();s6();SU=O6(D6(),1)});function RN(){return TN6.useContext(fa6)!==null}function vE8(q){let K=z6(3),_=TN6.useContext(fa6),z;if(K[0]!==_||K[1]!==q)z=_?{rows:_.rows,columns:_.columns}:q,K[0]=_,K[1]=q,K[2]=z;else z=K[2];return z}function Bh4(){return TN6.useContext(fa6)?.scrollRef??null}var TN6,fa6;var CU=y(()=>{q8();TN6=O6(D6(),1),fa6=TN6.createContext(null)});function R$(q){let K=z6(21),{width:_,color:z,char:Y,padding:$,title:A}=q,O=Y===void 0?"─":Y,w=$===void 0?0:$,{columns:j}=t1(),H=Math.max(0,(_??j)-w);if(A){let P=O1(A)+2,W=Math.max(0,H-P),D=Math.floor(W/2),f=W-D,G=!z,Z;if(K[0]!==O||K[1]!==D)Z=O.repeat(D),K[0]=O,K[1]=D,K[2]=Z;else Z=K[2];let T;if(K[3]!==A)T=Za6.default.createElement(k,{dimColor:!0},Za6.default.createElement(B5,null,A)),K[3]=A,K[4]=T;else T=K[4];let v;if(K[5]!==O||K[6]!==f)v=O.repeat(f),K[5]=O,K[6]=f,K[7]=v;else v=K[7];let V;if(K[8]!==z||K[9]!==G||K[10]!==Z||K[11]!==T||K[12]!==v)V=Za6.default.createElement(k,{color:z,dimColor:G},Z," ",T," ",v),K[8]=z,K[9]=G,K[10]=Z,K[11]=T,K[12]=v,K[13]=V;else V=K[13];return V}let J=!z,M;if(K[14]!==O||K[15]!==H)M=O.repeat(H),K[14]=O,K[15]=H,K[16]=M;else M=K[16];let X;if(K[17]!==z||K[18]!==J||K[19]!==M)X=Za6.default.createElement(k,{color:z,dimColor:J},M),K[17]=z,K[18]=J,K[19]=M,K[20]=X;else X=K[20];return X}var Za6;var lC=y(()=>{q8();t4();Q5();s6();Za6=O6(D6(),1)});function Q_(q){let K=z6(9),{children:_,color:z}=q;if(RN()){let O;if(K[0]!==_)O=Ga6.default.createElement(u,{flexDirection:"column",paddingX:1,flexShrink:0},_),K[0]=_,K[1]=O;else O=K[1];return O}let Y;if(K[2]!==z)Y=Ga6.default.createElement(R$,{color:z}),K[2]=z,K[3]=Y;else Y=K[3];let $;if(K[4]!==_)$=Ga6.default.createElement(u,{flexDirection:"column",paddingX:2},_),K[4]=_,K[5]=$;else $=K[5];let A;if(K[6]!==Y||K[7]!==$)A=Ga6.default.createElement(u,{flexDirection:"column",paddingTop:1},Y,$),K[6]=Y,K[7]=$,K[8]=A;else A=K[8];return A}var Ga6;var pP=y(()=>{q8();CU();s6();lC();Ga6=O6(D6(),1)});function R1(q){let K=z6(27),{title:_,subtitle:z,children:Y,onCancel:$,color:A,hideInputGuide:O,hideBorder:w,inputGuide:j,isCancelActive:H}=q,J=A===void 0?"permission":A,M=H===void 0?!0:H,X=o5(void 0,void 0,M),P;if(K[0]!==M)P={context:"Confirmation",isActive:M},K[0]=M,K[1]=P;else P=K[1];P1("confirm:no",$,P);let W;if(K[2]!==X.keyName||K[3]!==X.pending)W=X.pending?hN.default.createElement(k,null,"Press ",X.keyName," again to exit"):hN.default.createElement(I1,null,hN.default.createElement(t8,{shortcut:"Enter",action:"confirm"}),hN.default.createElement(W1,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"})),K[2]=X.keyName,K[3]=X.pending,K[4]=W;else W=K[4];let D=W,f;if(K[5]!==J||K[6]!==_)f=hN.default.createElement(k,{bold:!0,color:J},_),K[5]=J,K[6]=_,K[7]=f;else f=K[7];let G;if(K[8]!==z)G=z&&hN.default.createElement(k,{dimColor:!0},z),K[8]=z,K[9]=G;else G=K[9];let Z;if(K[10]!==f||K[11]!==G)Z=hN.default.createElement(u,{flexDirection:"column"},f,G),K[10]=f,K[11]=G,K[12]=Z;else Z=K[12];let T;if(K[13]!==Y||K[14]!==Z)T=hN.default.createElement(u,{flexDirection:"column",gap:1},Z,Y),K[13]=Y,K[14]=Z,K[15]=T;else T=K[15];let v;if(K[16]!==D||K[17]!==X||K[18]!==O||K[19]!==j)v=!O&&hN.default.createElement(u,{marginTop:1},hN.default.createElement(k,{dimColor:!0,italic:!0},j?j(X):D)),K[16]=D,K[17]=X,K[18]=O,K[19]=j,K[20]=v;else v=K[20];let V;if(K[21]!==T||K[22]!==v)V=hN.default.createElement(hN.default.Fragment,null,T,v),K[21]=T,K[22]=v,K[23]=V;else V=K[23];let E=V;if(w)return E;let S;if(K[24]!==J||K[25]!==E)S=hN.default.createElement(Q_,{color:J},E),K[24]=J,K[25]=E,K[26]=S;else S=K[26];return S}var hN;var e4=y(()=>{q8();z2();s6();Oq();a5();QK();rK();pP();hN=O6(D6(),1)});var Fh4={};T8(Fh4,{hasIdeOnboardingDialogBeenShown:()=>gh4,IdeOnboardingDialog:()=>tB1});function tB1(q){let K=z6(23),{onDone:_,installationStatus:z}=q;S2z();let Y;if(K[0]!==_)Y={"confirm:yes":_,"confirm:no":_},K[0]=_,K[1]=Y;else Y=K[1];let $;if(K[2]===Symbol.for("react.memo_cache_sentinel"))$={context:"Confirmation"},K[2]=$;else $=K[2];o7(Y,$);let A;if(K[3]!==z?.ideType)A=z?.ideType??vN6(),K[3]=z?.ideType,K[4]=A;else A=K[4];let O=A,w=_m(O),j;if(K[5]!==O)j=pj(O),K[5]=O,K[6]=j;else j=K[6];let H=j,J=z?.installedVersion,M=w?"plugin":"extension",X=a1.platform==="darwin"?"Cmd+Option+K":"Ctrl+Alt+K",P;if(K[7]===Symbol.for("react.memo_cache_sentinel"))P=PM.default.createElement(k,{color:"claude"},"✻ "),K[7]=P;else P=K[7];let W;if(K[8]!==H)W=PM.default.createElement(PM.default.Fragment,null,P,PM.default.createElement(k,null,"Welcome to Claude Code for ",H)),K[8]=H,K[9]=W;else W=K[9];let D=J?`installed ${M} v${J}`:void 0,f;if(K[10]===Symbol.for("react.memo_cache_sentinel"))f=PM.default.createElement(k,{color:"suggestion"},"⧉ open files"),K[10]=f;else f=K[10];let G;if(K[11]===Symbol.for("react.memo_cache_sentinel"))G=PM.default.createElement(k,null,"• Claude has context of ",f," ","and ",PM.default.createElement(k,{color:"suggestion"},"⧉ selected lines")),K[11]=G;else G=K[11];let Z;if(K[12]===Symbol.for("react.memo_cache_sentinel"))Z=PM.default.createElement(k,{color:"diffAddedWord"},"+11"),K[12]=Z;else Z=K[12];let T;if(K[13]===Symbol.for("react.memo_cache_sentinel"))T=PM.default.createElement(k,null,"• Review Claude Code's changes"," ",Z," ",PM.default.createElement(k,{color:"diffRemovedWord"},"-22")," in the comfort of your IDE"),K[13]=T;else T=K[13];let v;if(K[14]===Symbol.for("react.memo_cache_sentinel"))v=PM.default.createElement(k,null,"• Cmd+Esc",PM.default.createElement(k,{dimColor:!0}," for Quick Launch")),K[14]=v;else v=K[14];let V;if(K[15]===Symbol.for("react.memo_cache_sentinel"))V=PM.default.createElement(u,{flexDirection:"column",gap:1},G,T,v,PM.default.createElement(k,null,"• ",X,PM.default.createElement(k,{dimColor:!0}," to reference files or lines in your input"))),K[15]=V;else V=K[15];let E;if(K[16]!==_||K[17]!==W||K[18]!==D)E=PM.default.createElement(R1,{title:W,subtitle:D,color:"ide",onCancel:_,hideInputGuide:!0},V),K[16]=_,K[17]=W,K[18]=D,K[19]=E;else E=K[19];let S;if(K[20]===Symbol.for("react.memo_cache_sentinel"))S=PM.default.createElement(u,{paddingX:1},PM.default.createElement(k,{dimColor:!0,italic:!0},"Press Enter to continue")),K[20]=S;else S=K[20];let R;if(K[21]!==E)R=PM.default.createElement(PM.default.Fragment,null,E,S),K[21]=E,K[22]=R;else R=K[22];return R}function gh4(){let q=j8(),K=BV.terminal||"unknown";return q.hasIdeOnboardingBeenShown?.[K]===!0}function S2z(){if(gh4())return;let q=BV.terminal||"unknown";b8((K)=>({...K,hasIdeOnboardingBeenShown:{...K.hasIdeOnboardingBeenShown,[q]:!0}}))}var PM;var eB1=y(()=>{q8();J16();s6();Oq();V1();y_();U2();e4();PM=O6(D6(),1)});import{createConnection as C2z}from"net";import{basename as b2z,join as qg1,sep as VE8,resolve as Kg1}from"path";function nh4(q){try{return process.kill(q,0),!0}catch{return!1}}function x2z(){let q=null;return()=>{if(!q)q=oiq(process.ppid,10).then((K)=>new Set(K));return q}}function NE8(q){if(!q)return!1;let K=kN6[q];return K&&K.ideKind==="vscode"}function _m(q){if(!q)return!1;let K=kN6[q];return K&&K.ideKind==="jetbrains"}function vN6(){if(!BP())return null;return a1.terminal}async function yE8(){try{let q=await u2z();return(await Promise.all(q.map(async(_)=>{try{let Y=(await X8().readdir(_)).filter((A)=>A.name.endsWith(".lock"));return(await Promise.all(Y.map(async(A)=>{let O=qg1(_,A.name);try{let w=await X8().stat(O);return{path:O,mtime:w.mtime}}catch{return null}}))).filter((A)=>A!==null)}catch(z){if(!e3(z))H6(z);return[]}}))).flat().sort((_,z)=>z.mtime.getTime()-_.mtime.getTime()).map((_)=>_.path)}catch(q){return H6(q),[]}}async function ih4(q){try{let K=await X8().readFile(q,{encoding:"utf-8"}),_=[],z,Y,$=!1,A=!1,O;try{let H=r8(K);if(H.workspaceFolders)_=H.workspaceFolders;z=H.pid,Y=H.ideName,$=H.transport==="ws",A=H.runningInWindows===!0,O=H.authToken}catch(H){_=K.split(` |
| 1826 | `)||[];for(let z of _){let[Y,$]=z.split("@");if(Y==="anthropic.claude-code"&&$)return $}return null}function U2z(){try{if(Z1()!=="macos")return null;let K=process.ppid;for(let _=0;_<10;_++){if(!K||K===0||K===1)break;let z=Ph(`ps -o command= -p ${K}`)?.trim();if(z){let $={"Visual Studio Code.app":"code","Cursor.app":"cursor","Windsurf.app":"windsurf","Visual Studio Code - Insiders.app":"code","VSCodium.app":"codium"},A="/Contents/MacOS/Electron";for(let[O,w]of Object.entries($)){let j=z.indexOf(O+"/Contents/MacOS/Electron");if(j!==-1){let H=j+O.length;return z.substring(0,H)+"/Contents/Resources/app/bin/"+w}}}let Y=Ph(`ps -o ppid= -p ${K}`)?.trim();if(!Y)break;K=parseInt(Y.trim())}return null}catch{return null}}async function oh4(q){let K=U2z();if(K)try{return await X8().stat(K),K}catch{}let _=Z1()==="windows"?".cmd":"";switch(q){case"vscode":return"code"+_;case"cursor":return"cursor"+_;case"windsurf":return"windsurf"+_;default:break}return null}async function ah4(){return(await a8("cursor",["--version"])).code===0}async function sh4(){return(await a8("windsurf",["--version"])).code===0}async function th4(){let q=await a8("code",["--help"]);return q.code===0&&Boolean(q.stdout?.includes("Visual Studio Code"))}async function Q2z(){let q=[];try{let K=Z1();if(K==="macos"){let z=(await m_('ps aux | grep -E "Visual Studio Code|Code Helper|Cursor Helper|Windsurf Helper|IntelliJ IDEA|PyCharm|WebStorm|PhpStorm|RubyMine|CLion|GoLand|Rider|DataGrip|AppCode|DataSpell|Aqua|Gateway|Fleet|Android Studio" | grep -v grep',{shell:!0,reject:!1})).stdout??"";for(let[Y,$]of Object.entries(kN6))for(let A of $.processKeywordsMac)if(z.includes(A)){q.push(Y);break}}else if(K==="windows"){let Y=((await m_('tasklist | findstr /I "Code.exe Cursor.exe Windsurf.exe idea64.exe pycharm64.exe webstorm64.exe phpstorm64.exe rubymine64.exe clion64.exe goland64.exe rider64.exe datagrip64.exe appcode.exe dataspell64.exe aqua64.exe gateway64.exe fleet.exe studio64.exe"',{shell:!0,reject:!1})).stdout??"").toLowerCase();for(let[$,A]of Object.entries(kN6))for(let O of A.processKeywordsWindows)if(Y.includes(O.toLowerCase())){q.push($);break}}else if(K==="linux"){let Y=((await m_('ps aux | grep -E "code|cursor|windsurf|idea|pycharm|webstorm|phpstorm|rubymine|clion|goland|rider|datagrip|dataspell|aqua|gateway|fleet|android-studio" | grep -v grep',{shell:!0,reject:!1})).stdout??"").toLowerCase();for(let[$,A]of Object.entries(kN6))for(let O of A.processKeywordsLinux)if(Y.includes(O)){if($!=="vscode"){q.push($);break}else if(!Y.includes("cursor")&&!Y.includes("appcode")){q.push($);break}}}}catch(K){H6(K)}return q}async function $g1(){let q=await Q2z();return zg1=q,q}async function eh4(){if(zg1===null)return $g1();return zg1}function LE8(q){let K=q.find((_)=>_.type==="connected"&&_.name==="ide");return Ag1(K)}function Ag1(q){let K=q?.config;return K?.type==="sse-ide"||K?.type==="ws-ide"?K.ideName:BP()?pj(BV.terminal):null}function pj(q){if(!q)return"IDE";let K=kN6[q];if(K)return K.displayName;let _=lh4[q.toLowerCase().trim()];if(_)return _;let z=q.split(" ")[0],Y=z?b2z(z).toLowerCase():null;if(Y){let $=lh4[Y];if($)return $;return tr(Y)}return tr(q)}function SN(q){if(!q)return;let K=q.find((_)=>_.type==="connected"&&_.name==="ide");return K?.type==="connected"?K:void 0}async function qS4(q){try{await zm("closeAllDiffTabs",{},q)}catch(K){}}async function KS4(q,K,_,z){Qh4().then(q);let Y=j8().autoInstallIdeExtension??!0;if(!i6(process.env.CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL)&&Y){let $=K??vN6();if($){if(NE8($))dh4($).then(async(A)=>{p2z($).catch((O)=>{return{installed:!1,error:O.message||"Installation failed",installedVersion:null,ideType:$}}).then((O)=>{if(z(O),O?.installed)Qh4().then(q);if(!A&&O?.installed===!0&&!Uh4().hasIdeOnboardingDialogBeenShown())_()})});else if(_m($))dh4($).then(async(A)=>{if(A&&!Uh4().hasIdeOnboardingDialogBeenShown())_()})}}}var Uh4=()=>(eB1(),Eq(Fh4)),kN6,Ta6,VN6,BP,I2z,kE8=null,B2z="anthropic.claude-code",zg1=null,lh4,_S4;var U2=y(()=>{Df();Wa6();F4();k8();v8();PD();V1();y_();m8();XK();e7();u$6();oB1();E8();vK();B2();_8();J16();y8();aB1();l8();kN6={cursor:{ideKind:"vscode",displayName:"Cursor",processKeywordsMac:["Cursor Helper","Cursor.app"],processKeywordsWindows:["cursor.exe"],processKeywordsLinux:["cursor"]},windsurf:{ideKind:"vscode",displayName:"Windsurf",processKeywordsMac:["Windsurf Helper","Windsurf.app"],processKeywordsWindows:["windsurf.exe"],processKeywordsLinux:["windsurf"]},vscode:{ideKind:"vscode",displayName:"VS Code",processKeywordsMac:["Visual Studio Code","Code Helper"],processKeywordsWindows:["code.exe"],processKeywordsLinux:["code"]},intellij:{ideKind:"jetbrains",displayName:"IntelliJ IDEA",processKeywordsMac:["IntelliJ IDEA"],processKeywordsWindows:["idea64.exe"],processKeywordsLinux:["idea","intellij"]},pycharm:{ideKind:"jetbrains",displayName:"PyCharm",processKeywordsMac:["PyCharm"],processKeywordsWindows:["pycharm64.exe"],processKeywordsLinux:["pycharm"]},webstorm:{ideKind:"jetbrains",displayName:"WebStorm",processKeywordsMac:["WebStorm"],processKeywordsWindows:["webstorm64.exe"],processKeywordsLinux:["webstorm"]},phpstorm:{ideKind:"jetbrains",displayName:"PhpStorm",processKeywordsMac:["PhpStorm"],processKeywordsWindows:["phpstorm64.exe"],processKeywordsLinux:["phpstorm"]},rubymine:{ideKind:"jetbrains",displayName:"RubyMine",processKeywordsMac:["RubyMine"],processKeywordsWindows:["rubymine64.exe"],processKeywordsLinux:["rubymine"]},clion:{ideKind:"jetbrains",displayName:"CLion",processKeywordsMac:["CLion"],processKeywordsWindows:["clion64.exe"],processKeywordsLinux:["clion"]},goland:{ideKind:"jetbrains",displayName:"GoLand",processKeywordsMac:["GoLand"],processKeywordsWindows:["goland64.exe"],processKeywordsLinux:["goland"]},rider:{ideKind:"jetbrains",displayName:"Rider",processKeywordsMac:["Rider"],processKeywordsWindows:["rider64.exe"],processKeywordsLinux:["rider"]},datagrip:{ideKind:"jetbrains",displayName:"DataGrip",processKeywordsMac:["DataGrip"],processKeywordsWindows:["datagrip64.exe"],processKeywordsLinux:["datagrip"]},appcode:{ideKind:"jetbrains",displayName:"AppCode",processKeywordsMac:["AppCode"],processKeywordsWindows:["appcode.exe"],processKeywordsLinux:["appcode"]},dataspell:{ideKind:"jetbrains",displayName:"DataSpell",processKeywordsMac:["DataSpell"],processKeywordsWindows:["dataspell64.exe"],processKeywordsLinux:["dataspell"]},aqua:{ideKind:"jetbrains",displayName:"Aqua",processKeywordsMac:[],processKeywordsWindows:["aqua64.exe"],processKeywordsLinux:[]},gateway:{ideKind:"jetbrains",displayName:"Gateway",processKeywordsMac:[],processKeywordsWindows:["gateway64.exe"],processKeywordsLinux:[]},fleet:{ideKind:"jetbrains",displayName:"Fleet",processKeywordsMac:[],processKeywordsWindows:["fleet.exe"],processKeywordsLinux:[]},androidstudio:{ideKind:"jetbrains",displayName:"Android Studio",processKeywordsMac:["Android Studio"],processKeywordsWindows:["studio64.exe"],processKeywordsLinux:["android-studio"]}};Ta6=_1(()=>{return NE8(a1.terminal)}),VN6=_1(()=>{return _m(BV.terminal)}),BP=_1(()=>{return Ta6()||VN6()||Boolean(process.env.FORCE_CODE_TERMINAL)});I2z=_1(async()=>{if(process.env.USERPROFILE)return process.env.USERPROFILE;let{stdout:q,code:K}=await a8("powershell.exe",["-NoProfile","-NonInteractive","-Command","$env:USERPROFILE"]);if(K===0&&q.trim())return q.trim();N("Unable to get Windows USERPROFILE via PowerShell - IDE detection may be incomplete");return});lh4={code:"VS Code",cursor:"Cursor",windsurf:"Windsurf",antigravity:"Antigravity",vi:"Vim",vim:"Vim",nano:"nano",notepad:"Notepad","start /wait notepad":"Notepad",emacs:"Emacs",subl:"Sublime Text",atom:"Atom"};_S4=_1(async(q,K)=>{if(process.env.CLAUDE_CODE_IDE_HOST_OVERRIDE)return process.env.CLAUDE_CODE_IDE_HOST_OVERRIDE;if(Z1()!=="wsl"||!q)return"127.0.0.1";try{let _=await m_("ip route show | grep -i default",{shell:!0,reject:!1});if(_.exitCode===0&&_.stdout){let z=_.stdout.match(/default via (\d+\.\d+\.\d+\.\d+)/);if(z){let Y=z[1];if(await _g1(Y,K))return Y}}}catch(_){}return"127.0.0.1"},(q,K)=>`${q}:${K}`)});class hE8{ws;started=!1;opened;isBun=typeof Bun<"u";constructor(q){this.ws=q;if(this.opened=new Promise((K,_)=>{if(this.ws.readyState===RE8)K();else if(this.isBun){let z=this.ws,Y=()=>{z.removeEventListener("open",Y),z.removeEventListener("error",$),K()},$=(A)=>{z.removeEventListener("open",Y),z.removeEventListener("error",$),c8("error","mcp_websocket_connect_fail"),_(A)};z.addEventListener("open",Y),z.addEventListener("error",$)}else{let z=this.ws;z.on("open",()=>{K()}),z.on("error",(Y)=>{c8("error","mcp_websocket_connect_fail"),_(Y)})}}),this.isBun){let K=this.ws;K.addEventListener("message",this.onBunMessage),K.addEventListener("error",this.onBunError),K.addEventListener("close",this.onBunClose)}else{let K=this.ws;K.on("message",this.onNodeMessage),K.on("error",this.onNodeError),K.on("close",this.onNodeClose)}}onclose;onerror;onmessage;onBunMessage=(q)=>{try{let K=typeof q.data==="string"?q.data:String(q.data),_=r8(K),z=Fx.parse(_);this.onmessage?.(z)}catch(K){this.handleError(K)}};onBunError=()=>{this.handleError(Error("WebSocket error"))};onBunClose=()=>{this.handleCloseCleanup()};onNodeMessage=(q)=>{try{let K=r8(q.toString("utf-8")),_=Fx.parse(K);this.onmessage?.(_)}catch(K){this.handleError(K)}};onNodeError=(q)=>{this.handleError(q)};onNodeClose=()=>{this.handleCloseCleanup()};handleError(q){c8("error","mcp_websocket_message_fail"),this.onerror?.(x1(q))}handleCloseCleanup(){if(this.onclose?.(),this.isBun){let q=this.ws;q.removeEventListener("message",this.onBunMessage),q.removeEventListener("error",this.onBunError),q.removeEventListener("close",this.onBunClose)}else{let q=this.ws;q.off("message",this.onNodeMessage),q.off("error",this.onNodeError),q.off("close",this.onNodeClose)}}async start(){if(this.started)throw Error("Start can only be called once per transport.");if(await this.opened,this.ws.readyState!==RE8)throw c8("error","mcp_websocket_start_not_opened"),Error("WebSocket is not open. Cannot start transport.");this.started=!0}async close(){if(this.ws.readyState===RE8||this.ws.readyState===d2z)this.ws.close();this.handleCloseCleanup()}async send(q){if(this.ws.readyState!==RE8)throw c8("error","mcp_websocket_send_not_opened"),Error("WebSocket is not open. Cannot send message.");let K=g6(q);try{if(this.isBun)this.ws.send(K);else await new Promise((_,z)=>{this.ws.send(K,(Y)=>{if(Y)z(Y);else _()})})}catch(_){throw this.handleError(_),_}}}var d2z=0,RE8=1;var zS4=y(()=>{lM();oY();y8();l8()});function Og1(q){let K=q,_="",z=0,Y=10;while(K!==_&&z<Y)_=K,K=K.normalize("NFKC"),K=K.replace(/[\p{Cf}\p{Co}\p{Cn}]/gu,""),K=K.replace(/[\u200B-\u200F]/g,"").replace(/[\u202A-\u202E]/g,"").replace(/[\u2066-\u2069]/g,"").replace(/[\uFEFF]/g,"").replace(/[\uE000-\uF8FF]/g,""),z++;if(z>=Y)throw Error(`Unicode sanitization reached maximum iterations (${Y}) for input: ${q.slice(0,100)}`);return K}function Uq6(q){if(typeof q==="string")return Og1(q);if(Array.isArray(q))return q.map(Uq6);if(q!==null&&typeof q==="object"){let K={};for(let[_,z]of Object.entries(q))K[Uq6(_)]=Uq6(z);return K}return q}function c2z(){let q=vi8();if(q!==void 0)return q;let K=process.env.CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR;if(!K){let z=process.env.CLAUDE_SESSION_INGRESS_TOKEN_FILE??jJ8,Y=VF6(z,"session ingress token");return a36(Y),Y}let _=parseInt(K,10);if(Number.isNaN(_))return N(`CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR must be a valid file descriptor number, got: ${K}`,{level:"error"}),a36(null),null;try{let z=X8(),Y=process.platform==="darwin"||process.platform==="freebsd"?`/dev/fd/${_}`:`/proc/self/fd/${_}`,$=z.readFileSync(Y,{encoding:"utf8"}).trim();if(!$)return N("File descriptor contained empty token",{level:"error"}),a36(null),null;return N(`Successfully read token from file descriptor ${_}`),a36($),hJ1(jJ8,$,"session ingress token"),$}catch(z){N(`Failed to read token from file descriptor ${_}: ${d6(z)}`,{level:"error"});let Y=process.env.CLAUDE_SESSION_INGRESS_TOKEN_FILE??jJ8,$=VF6(Y,"session ingress token");return a36($),$}}function WD(){let q=process.env.CLAUDE_CODE_SESSION_ACCESS_TOKEN;if(q)return q;return c2z()}function SE8(){let q=WD();if(!q)return{};if(q.startsWith("sk-ant-sid")){let K={Cookie:`sessionKey=${q}`},_=process.env.CLAUDE_CODE_ORGANIZATION_UUID;if(_)K["X-Organization-Uuid"]=_;return K}return{Authorization:`Bearer ${q}`}}function va6(q){process.env.CLAUDE_CODE_SESSION_ACCESS_TOKEN=q}var nC=y(()=>{v8();CJ1();_8();y8();e7()});var $S4={};T8($S4,{subprocessEnv:()=>Ym,registerUpstreamProxyEnvFn:()=>n2z});function n2z(q){YS4=q}function Ym(){let q=YS4?.()??{};if(!i6(process.env.CLAUDE_CODE_SUBPROCESS_ENV_SCRUB))return Object.keys(q).length>0?{...process.env,...q}:process.env;let K={...process.env,...q};for(let _ of l2z)delete K[_],delete K[`INPUT_${_}`];return K}var l2z,YS4;var bw6=y(()=>{m8();l2z=["ANTHROPIC_API_KEY","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_FOUNDRY_API_KEY","ANTHROPIC_CUSTOM_HEADERS","OTEL_EXPORTER_OTLP_HEADERS","OTEL_EXPORTER_OTLP_LOGS_HEADERS","OTEL_EXPORTER_OTLP_METRICS_HEADERS","OTEL_EXPORTER_OTLP_TRACES_HEADERS","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","AWS_BEARER_TOKEN_BEDROCK","GOOGLE_APPLICATION_CREDENTIALS","AZURE_CLIENT_SECRET","AZURE_CLIENT_CERTIFICATE_PATH","ACTIONS_ID_TOKEN_REQUEST_TOKEN","ACTIONS_ID_TOKEN_REQUEST_URL","ACTIONS_RUNTIME_TOKEN","ACTIONS_RUNTIME_URL","ALL_INPUTS","OVERRIDE_GITHUB_TOKEN","DEFAULT_WORKFLOW_TOKEN","SSH_SIGNING_KEY"]});function i2z(q){return q.mode==="url"?"url":"form"}function r2z(q,K,_){return q.findIndex((z)=>z.serverName===K&&z.params.mode==="url"&&("elicitationId"in z.params)&&z.params.elicitationId===_)}function AS4(q,K,_){try{q.setRequestHandler(sc,async(z,Y)=>{C8(K,`Received elicitation request: ${g6(z)}`);let $=i2z(z.params);d("tengu_mcp_elicitation_shown",{mode:$});try{let A=await ka6(K,z.params,Y.signal);if(A)return C8(K,`Elicitation resolved by hook: ${g6(A)}`),d("tengu_mcp_elicitation_response",{mode:$,action:A.action}),A;let O=$==="url"&&"elicitationId"in z.params?z.params.elicitationId:void 0,j=await new Promise((J)=>{let M=()=>{J({action:"cancel"})};if(Y.signal.aborted){M();return}let X=O?{actionLabel:"Skip confirmation"}:void 0;_((P)=>({...P,elicitation:{queue:[...P.elicitation.queue,{serverName:K,requestId:Y.requestId,params:z.params,signal:Y.signal,waitingState:X,respond:(W)=>{Y.signal.removeEventListener("abort",M),d("tengu_mcp_elicitation_response",{mode:$,action:W.action}),J(W)}}]}})),Y.signal.addEventListener("abort",M,{once:!0})});return C8(K,`Elicitation response: ${g6(j)}`),await Va6(K,j,Y.signal,$,O)}catch(A){return Qz(K,`Elicitation error: ${A}`),{action:"cancel"}}}),q.setNotificationHandler(Su6,(z)=>{let{elicitationId:Y}=z.params;C8(K,`Received elicitation completion notification: ${Y}`),bU({message:`MCP server "${K}" confirmed elicitation ${Y} complete`,notificationType:"elicitation_complete"});let $=!1;if(_((A)=>{let O=r2z(A.elicitation.queue,K,Y);if(O===-1)return A;$=!0;let w=[...A.elicitation.queue];return w[O]={...w[O],completed:!0},{...A,elicitation:{queue:w}}}),!$)C8(K,`Ignoring completion notification for unknown elicitation: ${Y}`)})}catch{return}}async function ka6(q,K,_){try{let z=K.mode==="url"?"url":"form",Y="url"in K?K.url:void 0,$="elicitationId"in K?K.elicitationId:void 0,{elicitationResponse:A,blockingError:O}=await wg1({serverName:q,message:K.message,requestedSchema:"requestedSchema"in K?K.requestedSchema:void 0,signal:_,mode:z,url:Y,elicitationId:$});if(O)return{action:"decline"};if(A)return{action:A.action,content:A.content};return}catch(z){Qz(q,`Elicitation hook error: ${z}`);return}}async function Va6(q,K,_,z,Y){try{let{elicitationResultResponse:$,blockingError:A}=await jg1({serverName:q,action:K.action,content:K.content,signal:_,mode:z,elicitationId:Y});if(A)return bU({message:`Elicitation response for server "${q}": decline`,notificationType:"elicitation_response"}),{action:"decline"};let O=$?{action:$.action,content:$.content??K.content}:K;return bU({message:`Elicitation response for server "${q}": ${O.action}`,notificationType:"elicitation_response"}),O}catch($){return Qz(q,`ElicitationResult hook error: ${$}`),bU({message:`Elicitation response for server "${q}": ${K.action}`,notificationType:"elicitation_response"}),K}}var CE8=y(()=>{lM();y$();E8();l8();k8()});function s2z(q){return q.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function OS4(q,K){let _=s2z(K);return{isSearch:o2z.has(_),isRead:a2z.has(_)}}var o2z,a2z;var wS4=y(()=>{o2z=new Set(["slack_search_public","slack_search_public_and_private","slack_search_channels","slack_search_users","search_code","search_repositories","search_issues","search_pull_requests","search_orgs","search_users","search_documentation","search_logs","search_spans","search_rum_events","search_audit_logs","search_monitors","search_monitor_groups","find_slow_spans","find_monitors_matching_pattern","search_docs","search_events","search_issue_events","find_organizations","find_teams","find_projects","find_releases","find_dsns","search","gmail_search_messages","google_drive_search","gcal_find_my_free_time","gcal_find_meeting_times","gcal_find_user_emails","search_jira_issues_using_jql","search_confluence_using_cql","lookup_jira_account_id","confluence_search","jira_search","jira_search_fields","asana_search_tasks","asana_typeahead_search","search_files","search_nodes","brave_web_search","brave_local_search","search_dashboards","search_folders","search_docs","search_stripe_resources","search_stripe_documentation","search_articles","find_related_articles","lookup_article_by_citation","search_papers","search_pubmed","search_pubmed_key_words","search_pubmed_advanced","pubmed_search","pubmed_mesh_lookup","firecrawl_search","web_search_exa","web_search_advanced_exa","people_search_exa","linkedin_search_exa","deep_search_exa","perplexity_search","perplexity_search_web","tavily_search","obsidian_simple_search","obsidian_complex_search","find","search_knowledge","search_memories","find_memories_by_name","search_records","find_tasks","find_tasks_by_date","find_completed_tasks","find_projects","find_sections","find_comments","find_project_collaborators","find_activity","find_labels","find_filters","search_documentation","search_catalog","search_modules","search_providers","search_policies"]),a2z=new Set(["slack_read_channel","slack_read_thread","slack_read_canvas","slack_read_user_profile","slack_list_channels","slack_get_channel_history","slack_get_thread_replies","slack_get_users","slack_get_user_profile","get_me","get_team_members","get_teams","get_commit","get_file_contents","get_repository_tree","list_branches","list_commits","list_releases","list_tags","get_latest_release","get_release_by_tag","get_tag","list_issues","issue_read","list_issue_types","get_label","list_label","pull_request_read","get_gist","list_gists","list_notifications","get_notification_details","projects_list","projects_get","actions_get","actions_list","get_job_logs","get_code_scanning_alert","list_code_scanning_alerts","get_dependabot_alert","list_dependabot_alerts","get_secret_scanning_alert","list_secret_scanning_alerts","get_global_security_advisory","list_global_security_advisories","list_org_repository_security_advisories","list_repository_security_advisories","get_discussion","get_discussion_comments","list_discussion_categories","list_discussions","list_starred_repositories","get_issue","get_pull_request","list_pull_requests","get_pull_request_files","get_pull_request_status","get_pull_request_comments","get_pull_request_reviews","list_comments","list_cycles","get_document","list_documents","list_issue_statuses","get_issue_status","list_my_issues","list_issue_labels","list_projects","get_project","list_project_labels","list_teams","get_team","list_users","get_user","aggregate_logs","list_spans","aggregate_spans","analyze_trace","trace_critical_path","query_metrics","aggregate_rum_events","list_rum_metrics","get_rum_metric","list_monitors","get_monitor","check_can_delete_monitor","validate_monitor","validate_existing_monitor","list_dashboards","get_dashboard","query_dashboard_widget","list_notebooks","get_notebook","query_notebook_cell","get_profiling_metrics","compare_profiling_metrics","whoami","get_issue_details","get_issue_tag_values","get_trace_details","get_event_attachment","get_doc","get_sentry_resource","list_events","list_issue_events","get_sentry_issue","fetch","get_comments","get_users","get_self","gmail_get_profile","gmail_read_message","gmail_read_thread","gmail_list_drafts","gmail_list_labels","google_drive_fetch","google_drive_export","gcal_list_calendars","gcal_list_events","gcal_get_event","atlassian_user_info","get_accessible_atlassian_resources","get_visible_jira_projects","get_jira_project_issue_types_metadata","get_jira_issue","get_transitions_for_jira_issue","get_jira_issue_remote_issue_links","get_confluence_spaces","get_confluence_page","get_pages_in_confluence_space","get_confluence_page_ancestors","get_confluence_page_descendants","get_confluence_page_footer_comments","get_confluence_page_inline_comments","confluence_get_page","confluence_get_page_children","confluence_get_comments","confluence_get_labels","jira_get_issue","jira_get_transitions","jira_get_worklog","jira_get_agile_boards","jira_get_board_issues","jira_get_sprints_from_board","jira_get_sprint_issues","jira_get_link_types","jira_download_attachments","jira_batch_get_changelogs","jira_get_user_profile","jira_get_project_issues","jira_get_project_versions","asana_get_attachment","asana_get_attachments_for_object","asana_get_goal","asana_get_goals","asana_get_parent_goals_for_goal","asana_get_portfolio","asana_get_portfolios","asana_get_items_for_portfolio","asana_get_project","asana_get_projects","asana_get_project_sections","asana_get_project_status","asana_get_project_statuses","asana_get_project_task_counts","asana_get_projects_for_team","asana_get_projects_for_workspace","asana_get_task","asana_get_tasks","asana_get_stories_for_task","asana_get_teams_for_workspace","asana_get_teams_for_user","asana_get_team_users","asana_get_time_period","asana_get_time_periods","asana_get_user","asana_get_workspace_users","asana_list_workspaces","read_file","read_text_file","read_media_file","read_multiple_files","list_directory","list_directory_with_sizes","directory_tree","get_file_info","list_allowed_directories","read_graph","open_nodes","query","read_query","list_tables","describe_table","git_status","git_diff","git_diff_unstaged","git_diff_staged","git_log","git_show","git_branch","list_teams","list_users_by_org","get_dashboard_by_uid","get_dashboard_summary","get_dashboard_property","get_dashboard_panel_queries","run_panel_query","list_datasources","get_datasource","get_query_examples","query_prometheus","query_prometheus_histogram","list_prometheus_metric_metadata","list_prometheus_metric_names","list_prometheus_label_names","list_prometheus_label_values","query_loki_logs","query_loki_stats","query_loki_patterns","list_loki_label_names","list_loki_label_values","list_incidents","get_incident","list_sift_investigations","get_sift_investigation","get_sift_analysis","list_oncall_schedules","get_oncall_shift","get_current_oncall_users","list_oncall_teams","list_oncall_users","list_alert_groups","get_alert_group","get_annotations","get_annotation_tags","get_panel_image","list_incidents","get_incident","get_outlier_incident","get_past_incidents","get_related_incidents","list_incident_notes","list_incident_workflows","get_incident_workflow","list_services","get_service","list_team_members","get_user_data","list_schedules","get_schedule","list_schedule_users","list_oncalls","list_log_entries","get_log_entry","list_escalation_policies","get_escalation_policy","list_event_orchestrations","get_event_orchestration","list_status_pages","get_status_page_post","list_alerts_from_incident","get_alert_from_incident","list_change_events","get_change_event","list_organizations","get_organization","get_cost","list_extensions","list_migrations","get_logs","get_advisors","get_project_url","get_publishable_keys","generate_typescript_types","list_edge_functions","get_edge_function","list_storage_buckets","get_storage_config","get_stripe_account_info","retrieve_balance","list_customers","list_products","list_prices","list_invoices","list_payment_intents","list_subscriptions","list_coupons","list_disputes","fetch_stripe_resources","get_article_metadata","get_full_text_article","convert_article_ids","get_copyright_status","download_paper","list_papers","read_paper","get_paper_fulltext","get_pubmed_article_metadata","download_pubmed_pdf","pubmed_fetch","pubmed_pmc_fetch","pubmed_spell","pubmed_cite","pubmed_related","bigquery_query","bigquery_schema","list_dataset_ids","list_table_ids","get_dataset_info","get_table_info","firecrawl_scrape","firecrawl_map","firecrawl_crawl","firecrawl_check_crawl_status","firecrawl_extract","get_code_context_exa","company_research_exa","crawling_exa","deep_researcher_check","perplexity_ask","perplexity_research","perplexity_reason","tavily_extract","tavily_crawl","tavily_map","tavily_research","obsidian_list_files_in_vault","obsidian_list_files_in_dir","obsidian_get_file_contents","obsidian_batch_get_file_contents","obsidian_get_periodic_note","obsidian_get_recent_periodic_notes","obsidian_get_recent_changes","get_figma_data","download_figma_images","browser_console_messages","browser_network_requests","browser_take_screenshot","browser_snapshot","browser_get_config","browser_route_list","browser_cookie_list","browser_cookie_get","browser_localstorage_list","browser_localstorage_get","browser_sessionstorage_list","browser_sessionstorage_get","browser_storage_state","puppeteer_screenshot","list_databases","list_collections","collection_indexes","collection_schema","collection_storage_size","db_stats","explain","mongodb_logs","aggregate","count","export","get_neo4j_schema","read_neo4j_cypher","list_instances","get_instance_details","get_instance_by_name","list_indices","get_mappings","esql","get_shards","list_records","list_bases","get_record","get_productivity_stats","get_overview","fetch_object","user_info","list_workspaces","view_attachment","get_available_services","read_documentation","read_sections","recommend","analyze_log_group","analyze_metric","describe_log_groups","get_active_alarms","get_alarm_history","get_metric_data","get_metric_metadata","kubectl_get","kubectl_describe","kubectl_logs","kubectl_context","explain_resource","list_api_resources","namespaces_list","nodes_log","nodes_top","pods_get","pods_list","pods_list_in_namespace","pods_log","pods_top","resources_get","resources_list"])});function t2z(q){return q.scope==="project"||q.scope==="local"}async function e2z(q,K){if(!K.headersHelper)return null;if("scope"in K&&t2z(K)&&!i7()){if(!l$()){let z=Error(`Security: headersHelper for MCP server '${q}' executed before workspace trust is confirmed. If you see this message, post in ${{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.FEEDBACK_CHANNEL}.`);return OE("MCP headersHelper invoked before trust check",z),d("tengu_mcp_headersHelper_missing_trust",{}),null}}try{C8(q,"Executing headersHelper to get dynamic headers");let _=await S7(K.headersHelper,[],{shell:!0,timeout:1e4,env:{...process.env,CLAUDE_CODE_MCP_SERVER_NAME:q,CLAUDE_CODE_MCP_SERVER_URL:K.url}});if(_.code!==0||!_.stdout)throw Error(`headersHelper for MCP server '${q}' did not return a valid value`);let z=_.stdout.trim(),Y=r8(z);if(typeof Y!=="object"||Y===null||Array.isArray(Y))throw Error(`headersHelper for MCP server '${q}' must return a JSON object with string key-value pairs`);for(let[$,A]of Object.entries(Y))if(typeof A!=="string")throw Error(`headersHelper for MCP server '${q}' returned non-string value for key "${$}": ${typeof A}`);return C8(q,`Successfully retrieved ${Object.keys(Y).length} headers from headersHelper`),Y}catch(_){return Qz(q,`Error getting headers from headersHelper: ${d6(_)}`),H6(Error(`Error getting MCP headers from headersHelper for server '${q}': ${d6(_)}`)),null}}async function bE8(q,K){let _=K.headers||{},z=await e2z(q,K)||{};return{..._,...z}}var jS4=y(()=>{v8();V1();_8();y8();XK();E8();l8();k8()});class Hg1{serverName;sendMcpMessage;isClosed=!1;onclose;onerror;onmessage;constructor(q,K){this.serverName=q;this.sendMcpMessage=K}async start(){}async send(q){if(this.isClosed)throw Error("Transport is closed");let K=await this.sendMcpMessage(this.serverName,q);if(this.onmessage)this.onmessage(K)}async close(){if(this.isClosed)return;this.isClosed=!0,this.onclose?.()}}var JS4={};T8(JS4,{renderChromeToolResultMessage:()=>HS4,getClaudeInChromeMCPToolOverrides:()=>zjz});function Kjz(q,K,_){let z=q.tabId;if(typeof z==="number")wR4(z);let Y=[];switch(K){case"navigate":if(typeof q.url==="string")try{let $=new URL(q.url);Y.push($.hostname)}catch{Y.push(T4(q.url,30))}break;case"find":if(typeof q.query==="string")Y.push(`pattern: ${T4(q.query,30)}`);break;case"computer":if(typeof q.action==="string"){let $=q.action;if($==="left_click"||$==="right_click"||$==="double_click"||$==="middle_click")if(typeof q.ref==="string")Y.push(`${$} on ${q.ref}`);else if(Array.isArray(q.coordinate))Y.push(`${$} at (${q.coordinate.join(", ")})`);else Y.push($);else if($==="type"&&typeof q.text==="string")Y.push(`type "${T4(q.text,15)}"`);else if($==="key"&&typeof q.text==="string")Y.push(`key ${q.text}`);else if($==="scroll"&&typeof q.scroll_direction==="string")Y.push(`scroll ${q.scroll_direction}`);else if($==="wait"&&typeof q.duration==="number")Y.push(`wait ${q.duration}s`);else if($==="left_click_drag")Y.push("drag");else Y.push($)}break;case"gif_creator":if(typeof q.action==="string")Y.push(`${q.action}`);break;case"resize_window":if(typeof q.width==="number"&&typeof q.height==="number")Y.push(`${q.width}x${q.height}`);break;case"read_console_messages":if(typeof q.pattern==="string")Y.push(`pattern: ${T4(q.pattern,20)}`);if(q.onlyErrors===!0)Y.push("errors only");break;case"read_network_requests":if(typeof q.urlPattern==="string")Y.push(`pattern: ${T4(q.urlPattern,20)}`);break;case"shortcuts_execute":if(typeof q.shortcutId==="string")Y.push(`shortcut_id: ${q.shortcutId}`);break;case"javascript_tool":if(_&&typeof q.text==="string")return q.text;return"";case"tabs_create_mcp":case"tabs_context_mcp":case"form_input":case"shortcuts_list":case"read_page":case"upload_image":case"get_page_text":case"update_plan":return""}return Y.join(", ")||null}function _jz(q){if(!Nv())return null;if(typeof q!=="object"||q===null||!("tabId"in q))return null;let K=typeof q.tabId==="number"?q.tabId:typeof q.tabId==="string"?parseInt(q.tabId,10):NaN;if(isNaN(K))return null;let _=`${qjz}${K}`;return $m.createElement(k,null," ",$m.createElement(hq,{url:_},$m.createElement(k,{color:"subtle"},"[View Tab]")))}function HS4(q,K,_){if(_)return my8(q,[],{verbose:_});let z=null;switch(K){case"navigate":z="Navigation completed";break;case"tabs_create_mcp":z="Tab created";break;case"tabs_context_mcp":z="Tabs read";break;case"form_input":z="Input completed";break;case"computer":z="Action completed";break;case"resize_window":z="Window resized";break;case"find":z="Search completed";break;case"gif_creator":z="GIF action completed";break;case"read_console_messages":z="Console messages retrieved";break;case"read_network_requests":z="Network requests retrieved";break;case"shortcuts_list":z="Shortcuts retrieved";break;case"shortcuts_execute":z="Shortcut executed";break;case"javascript_tool":z="Script executed";break;case"read_page":z="Page read";break;case"upload_image":z="Image uploaded";break;case"get_page_text":z="Page text retrieved";break;case"update_plan":z="Plan updated";break}if(z)return $m.createElement(s8,{height:1},$m.createElement(k,{dimColor:!0},z));return null}function zjz(q){return{userFacingName(K){return`Claude in Chrome[${q.replace(/_mcp$/,"")}]`},renderToolUseMessage(K,{verbose:_}){return Kjz(K,q,_)},renderToolUseTag(K){return _jz(K)},renderToolResultMessage(K,_,{verbose:z}){if(!Yjz(K))return null;return HS4(K,q,z)}}}function Yjz(q){return typeof q==="object"&&q!==null}var $m,qjz="https://clau.de/chrome/tab/";var MS4=y(()=>{gK();Ui();s6();HB1();U7();cC();$m=O6(D6(),1)});var xU;var xE8=y(()=>{xU={clipboardRead:!1,clipboardWrite:!1,systemKeyCombos:!1}});function XS4(q,K){return Math.floor((q-1)/K)+1}function PS4(q,K,_){return XS4(q,_)*XS4(K,_)}function IE8(q,K,_){let{pxPerToken:z,maxTargetPx:Y,maxTargetTokens:$}=_;if(q<=Y&&K<=Y&&PS4(q,K,z)<=$)return[q,K];if(K>q){let[j,H]=IE8(K,q,_);return[H,j]}let A=q/K,O=q,w=1;for(;;){if(w+1===O)return[w,Math.max(Math.round(w/A),1)];let j=Math.floor((w+O)/2),H=Math.max(Math.round(j/A),1);if(j<=Y&&PS4(j,H,z)<=$)w=j;else O=j}}var Jg1;var WS4=y(()=>{Jg1={pxPerToken:28,maxTargetPx:1568,maxTargetTokens:1568}});function $jz(q){if(q==="browser"||q==="trading")return"read";if(q==="terminal")return"click";return"full"}function uE8(q,K){if(q&&jjz.has(q))return!0;let _=K.toLowerCase();for(let z of Hjz)if(_.includes(z))return!0;return!1}function Jjz(q){if(Ajz.has(q))return"browser";if(Ojz.has(q))return"terminal";if(wjz.has(q))return"trading";return null}function Wjz(q){let K=q.toLowerCase();for(let _ of Pjz)if(K.includes(_))return"trading";for(let _ of Mjz)if(K.includes(_))return"browser";for(let _ of Xjz)if(K.includes(_))return"terminal";return null}function yN6(q,K){if(q){let _=Jjz(q);if(_)return _}return Wjz(K)}function Mg1(q,K){return $jz(yN6(q,K))}var Ajz,Ojz,wjz,jjz,Hjz,Mjz,Xjz,Pjz;var DS4=y(()=>{Ajz=new Set(["com.apple.Safari","com.apple.SafariTechnologyPreview","com.google.Chrome","com.google.Chrome.beta","com.google.Chrome.dev","com.google.Chrome.canary","com.microsoft.edgemac","com.microsoft.edgemac.Beta","com.microsoft.edgemac.Dev","com.microsoft.edgemac.Canary","org.mozilla.firefox","org.mozilla.firefoxdeveloperedition","org.mozilla.nightly","org.chromium.Chromium","com.brave.Browser","com.brave.Browser.beta","com.brave.Browser.nightly","com.operasoftware.Opera","com.operasoftware.OperaGX","com.operasoftware.OperaDeveloper","com.vivaldi.Vivaldi","company.thebrowser.Browser","company.thebrowser.dia","org.torproject.torbrowser","com.duckduckgo.macos.browser","ru.yandex.desktop.yandex-browser","ai.perplexity.comet","com.sigmaos.sigmaos.macos","com.kagi.kagimacOS"]),Ojz=new Set(["com.apple.Terminal","com.googlecode.iterm2","dev.warp.Warp-Stable","dev.warp.Warp-Beta","com.github.wez.wezterm","org.alacritty","io.alacritty","net.kovidgoyal.kitty","co.zeit.hyper","com.mitchellh.ghostty","org.tabby","com.termius-dmg.mac","com.microsoft.VSCode","com.microsoft.VSCodeInsiders","com.vscodium","com.todesktop.230313mzl4w4u92","com.exafunction.windsurf","dev.zed.Zed","dev.zed.Zed-Preview","com.jetbrains.intellij","com.jetbrains.intellij.ce","com.jetbrains.pycharm","com.jetbrains.pycharm.ce","com.jetbrains.WebStorm","com.jetbrains.CLion","com.jetbrains.goland","com.jetbrains.rubymine","com.jetbrains.PhpStorm","com.jetbrains.datagrip","com.jetbrains.rider","com.jetbrains.AppCode","com.jetbrains.rustrover","com.jetbrains.fleet","com.google.android.studio","com.axosoft.gitkraken","com.sublimetext.4","com.sublimetext.3","org.vim.MacVim","com.neovim.neovim","org.gnu.Emacs","com.apple.dt.Xcode","org.eclipse.platform.ide","org.netbeans.ide","com.microsoft.visual-studio","com.apple.ScriptEditor2","com.apple.Automator","com.apple.shortcuts"]),wjz=new Set(["com.webull.desktop.v1","com.webull.trade.mac.v1","com.tastytrade.desktop","com.tradingview.tradingviewapp.desktop","com.fidelity.activetrader","com.fmr.activetrader","com.install4j.5889-6375-8446-2021","com.binance.BinanceDesktop","com.electron.exodus","org.pythonmac.unspecified.Electrum","com.ledger.live","io.trezor.TrezorSuite"]),jjz=new Set(["com.apple.TV","com.apple.Music","com.apple.iBooksX","com.apple.podcasts","com.spotify.client","com.amazon.music","com.tidal.desktop","com.deezer.deezer-desktop","com.pandora.desktop","com.electron.pocket-casts","au.com.shiftyjelly.PocketCasts","tv.plex.desktop","tv.plex.htpc","tv.plex.plexamp","com.amazon.aiv.AIVApp","net.kovidgoyal.calibre","com.amazon.Kindle","com.amazon.Lassen","com.kobo.desktop.Kobo"]),Hjz=["netflix","disney+","hulu","prime video","apple tv","peacock","paramount+","tubi","crunchyroll","vudu","kindle","apple books","kobo","play books","calibre","libby","readium","audible","libro.fm","speechify","spotify","apple music","amazon music","youtube music","tidal","deezer","pandora","pocket casts","naver","reddit","sony music","vegas pro","pitchfork","economist","nytimes"];Mjz=["safari","chrome","firefox","microsoft edge","brave","opera","vivaldi","chromium","arc browser","tor browser","duckduckgo","yandex","orion browser","comet","sigmaos","dia browser"],Xjz=["terminal","iterm","wezterm","alacritty","kitty","ghostty","tabby","termius","script editor","automator","powershell","cmd.exe","command prompt","git bash","conemu","cmder","visual studio code","visual studio","vscode","vs code","vscodium","cursor","windsurf","intellij","pycharm","webstorm","clion","goland","rubymine","phpstorm","datagrip","rider","appcode","rustrover","fleet","android studio","sublime text","macvim","neovim","emacs","xcode","eclipse","netbeans"],Pjz=["bloomberg","ameritrade","thinkorswim","schwab","fidelity","e*trade","interactive brokers","trader workstation","tradestation","webull","robinhood","tastytrade","ninjatrader","tradingview","moomoo","tradezero","prorealtime","plus500","saxotrader","oanda","metatrader","forex.com","avaoptions","ctrader","jforex","iq option","olymp trade","binomo","pocket option","raceoption","expertoption","quotex","naga","morgan stanley","ubs neo","eikon","coinbase","kraken","binance","okx","bybit","phemex","stormgain","crypto.com","electrum","ledger live","trezor","guarda","atomic wallet","bitpay","bisq","koinly","cointracker","blockfi","stripe cli","decentraland","axie infinity","gods unchained"]});function Gjz(q){let K=q.toLowerCase().split("+").map(($)=>$.trim()).filter(Boolean),_=[],z=[];for(let $ of K){let A=Djz[$];if(A!==void 0)_.push(A);else z.push($)}let Y=[...new Set(_)];return Y.sort(($,A)=>fS4.indexOf($)-fS4.indexOf(A)),{mods:Y,keys:z}}function mE8(q,K){let _=K==="darwin"?fjz:Zjz,{mods:z,keys:Y}=Gjz(q),$=z.length>0?z.join("+")+"+":"";if(Y.length===0)return _.has(z.join("+"));for(let A of Y)if(_.has($+A))return!0;return!1}var Djz,fS4,fjz,Zjz;var ZS4=y(()=>{Djz={meta:"meta",super:"meta",command:"meta",cmd:"meta",windows:"meta",win:"meta",ctrl:"ctrl",control:"ctrl",lctrl:"ctrl",lcontrol:"ctrl",rctrl:"ctrl",rcontrol:"ctrl",shift:"shift",lshift:"shift",rshift:"shift",alt:"alt",option:"alt"},fS4=["ctrl","alt","shift","meta"],fjz=new Set(["meta+q","shift+meta+q","alt+meta+escape","meta+tab","meta+space","ctrl+meta+q"]),Zjz=new Set(["ctrl+alt+delete","alt+f4","alt+tab","meta+l","meta+d"])});function Tjz(q,K,_,z,Y){if(!q||!K)return null;let $=Math.max(0,Math.min(100,_)),A=Math.max(0,Math.min(100,z)),O=Math.round($/100*q),w=Math.round(A/100*K),j=Math.floor(Y/2),H=Math.max(0,O-j),J=Math.max(0,w-j),M=Math.min(Y,q-H),X=Math.min(Y,K-J);if(M<=0||X<=0)return null;return{x:H,y:J,width:M,height:X}}function vjz(q,K,_,z,Y,$=9){let A=Tjz(_.width,_.height,z,Y,$);if(!A)return!1;let O=q(K.base64,A),w=q(_.base64,A);if(!O||!w)return!1;return O.equals(w)}async function GS4(q,K,_,z,Y,$,A=9){if(!K)return{valid:!0,skipped:!0};try{let O=await Y();if(!O)return{valid:!0,skipped:!0};if(vjz(q,K,O,_,z,A))return{valid:!0,skipped:!1};return{valid:!1,skipped:!1,warning:"Screen content at the target location changed since the last screenshot. Take a new screenshot before clicking."}}catch(O){return $.debug("[pixelCompare] validation error, skipping",O),{valid:!0,skipped:!0}}}function NS4(q){if(TS4.has(q))return"shell";if(vS4.has(q))return"filesystem";if(kS4.has(q))return"system_settings";return null}var TS4,vS4,kS4,VS4;var Xg1=y(()=>{TS4=new Set(["com.apple.Terminal","com.googlecode.iterm2","com.microsoft.VSCode","dev.warp.Warp-Stable","com.github.wez.wezterm","io.alacritty","net.kovidgoyal.kitty","com.jetbrains.intellij","com.jetbrains.pycharm"]),vS4=new Set(["com.apple.finder"]),kS4=new Set(["com.apple.systempreferences"]),VS4=new Set([...TS4,...vS4,...kS4])});import{randomUUID as pE8}from"node:crypto";function tq(q,K){return{content:[{type:"text",text:q}],isError:!0,telemetry:K?{error_kind:K}:void 0}}function G0(q){return{content:[{type:"text",text:q}]}}function Z0(q,K){return{content:[{type:"text",text:JSON.stringify(q)}],telemetry:K}}function kjz(q){if(typeof q==="object"&&q!==null)return q;return{}}function uU(q,K){let _=q[K];if(typeof _!=="string")return Error(`"${K}" must be a string.`);return _}function Ea6(q,K="coordinate"){let _=q[K];if(_===void 0)return Error(`${K} is required`);if(!Array.isArray(_)||_.length!==2)return Error(`${K} must be an array of length 2`);let[z,Y]=_;if(typeof z!=="number"||typeof Y!=="number"||z<0||Y<0)return Error(`${K} must be a tuple of non-negative numbers`);return[z,Y]}function EN6(q,K,_,z,Y,$){if(_==="normalized_0_100")return{x:Math.round(q/100*z.width)+z.originX,y:Math.round(K/100*z.height)+z.originY};if(Y)return{x:Math.round(q*(Y.displayWidth/Y.width))+Y.originX,y:Math.round(K*(Y.displayHeight/Y.height))+Y.originY};return $.warn("[computer-use] pixels-mode coordinate received with no prior screenshot; falling back to /scaleFactor. Click may be off if downsample is active."),{x:Math.round(q/z.scaleFactor)+z.originX,y:Math.round(K/z.scaleFactor)+z.originY}}function Vjz(q,K,_,z){if(_==="normalized_0_100")return{xPct:q,yPct:K};if(!z)return{xPct:0,yPct:0};return{xPct:q/z.width*100,yPct:K/z.height*100}}function RS4(q,K){let _=q??"full";if(K==="mouse_position")return!0;if(K==="keyboard"||K==="mouse_full")return _==="full";return _==="click"||_==="full"}async function FE8(q,K,_){let z=K.getClipboardStash?.();if(!_){if(z===void 0)return;try{await q.executor.writeClipboard(z),K.onClipboardStashChanged?.(void 0)}catch{}return}if(z===void 0)try{let Y=await q.executor.readClipboard();K.onClipboardStashChanged?.(Y)}catch{K.onClipboardStashChanged?.("")}try{await q.executor.writeClipboard("")}catch{}}async function er(q,K,_,z){if(_.hideBeforeAction){let w=await q.executor.prepareForAction(K.allowedApps.map((j)=>j.bundleId),K.selectedDisplayId);if(w.length>0)K.onAppsHidden?.(w)}let Y=await q.executor.getFrontmostApp(),$=new Map(K.allowedApps.map((w)=>[w.bundleId,w.tier])),A=Y?$.get(Y.bundleId):void 0;if(_.clipboardGuard)await FE8(q,K,A==="click");if(!Y)return null;let{hostBundleId:O}=q.executor.capabilities;if(A!==void 0){if(RS4(A,z))return null;if(A==="read"){let w=yN6(Y.bundleId,Y.displayName)==="browser";return tq(`"${Y.displayName}" is granted at tier "read" — `+"visible in screenshots only, no clicks or typing."+(w?" Use the Claude-in-Chrome MCP for browser interaction (tools named `mcp__Claude_in_Chrome__*`; load via ToolSearch if deferred).":" No interaction is permitted; ask the user to take any actions in this app themselves.")+xw6,"tier_insufficient")}if(z==="keyboard")return tq(`"${Y.displayName}" is granted at tier "click" — `+`typing, key presses, and paste require tier "full". The keys would go to this app's text fields or integrated terminal. To type into a different app, click it first to bring it forward. For shell commands, use the Bash tool.`+xw6,"tier_insufficient");return tq(`"${Y.displayName}" is granted at tier "click" — `+'right-click, middle-click, and clicks with modifier keys require tier "full". Right-click opens a context menu with Paste/Cut, and modifier chords fire as keystrokes before the click. Plain left_click is allowed here.'+xw6,"tier_insufficient")}if(Y.bundleId===LS4)return null;if(Y.bundleId===O){if(z!=="keyboard")return null;return tq("Claude's own window still has keyboard focus. This should not happen after the pre-action defocus. Click on the target application first.","state_conflict")}return tq(`"${Y.displayName}" is not in the allowed applications and is `+"currently in front. Take a new screenshot — it may have appeared "+"since your last one.","app_not_granted")}async function Iw6(q,K,_,z,Y,$){let A=await q.executor.appUnderPoint(z,Y);if(!A)return null;if(A.bundleId===LS4)return null;let O=new Map(K.allowedApps.map((H)=>[H.bundleId,H.tier]));if(!O.has(A.bundleId))return tq(`Click at these coordinates would land on "${A.displayName}", which is not in the allowed applications. Take a fresh screenshot to see the current window layout.`,"app_not_granted");let w=O.get(A.bundleId);if(_.clipboardGuard&&w==="click")await FE8(q,K,!0);if(RS4(w,$))return null;if($==="mouse_full"&&w==="click")return tq(`Click at these coordinates would land on "${A.displayName}", `+'which is granted at tier "click" — right-click, middle-click, and '+'clicks with modifier keys require tier "full" (they can Paste via the context menu or fire modifier-chord keystrokes). Plain left_click is allowed here.'+xw6,"tier_insufficient");let j=yN6(A.bundleId,A.displayName)==="browser";return tq(`Click at these coordinates would land on "${A.displayName}", which is granted at tier "read" (screenshots only, no interaction). `+(j?"Use the Claude-in-Chrome MCP for browser interaction.":"Ask the user to take any actions in this app themselves.")+xw6,"tier_insufficient")}function BE8(q){let K=q.endsWith("==")?2:q.endsWith("=")?1:0;return Math.floor(q.length*3/4)-K}async function Njz(q,K,_,z){let Y=await q.screenshot({allowedBundleIds:K,displayId:z});if(BE8(Y.base64)<hS4)_.warn(`[computer-use] screenshot implausibly small (${BE8(Y.base64)} bytes decoded), retrying once`),Y=await q.screenshot({allowedBundleIds:K,displayId:z});return Y}function Ejz(q){try{let K=Intl.Segmenter;if(typeof K==="function"){let _=new K(void 0,{granularity:"grapheme"});return Array.from(_.segment(q),(z)=>z.segment)}}catch{}return Array.from(q)}function UE8(q){return new Promise((K)=>setTimeout(K,q))}function SS4(q){return q.split("+").map((K)=>K.trim()).filter(Boolean)}function fg1(){mG=!1,IU=!1}async function ya6(q){if(!mG)return;await q.executor.mouseUp(),mG=!1,IU=!1}function Zg1(q){return q==="request_access"||q==="list_granted_applications"}function Pg1(q){return Ljz.test(q)&&!q.includes(" ")}function Rjz(q,K,_){let z=new Map,Y=new Map;for(let $ of K)Y.set($.bundleId,$),z.set($.displayName.toLowerCase(),$);return q.map(($)=>{let A;if(Pg1($))A=Y.get($);if(!A)A=z.get($.toLowerCase());let O=A?.bundleId,w=O??(Pg1($)?$:void 0);return{requestedName:$,resolved:A,isSentinel:O?VS4.has(O):!1,alreadyGranted:O?_.has(O):!1,proposedTier:Mg1(w,A?.displayName??$)}})}async function hjz(q,K,_,z){if(!_.onPermissionRequest)return tq("This session was not wired with a permission handler. Computer control is not available here.","feature_unavailable");if(_.getTeachModeActive?.())return tq("Cannot request additional permissions during teach mode — the permission dialog would be hidden. End teach mode (finish the tour or let the turn complete), then call request_access, then start a new tour.","teach_mode_conflict");let Y=uU(K,"reason");if(Y instanceof Error)return tq(Y.message,"bad_args");if(z){let v={requestId:pE8(),reason:Y,apps:[],requestedFlags:{},screenshotFiltering:q.executor.capabilities.screenshotFiltering,tccState:z};await _.onPermissionRequest(v);let V=await q.ensureOsPermissions();if(V.granted)return tq("macOS Accessibility and Screen Recording are now both granted. "+"Call request_access again immediately — the next call will show "+"the app selection list.");let E=[];if(!V.accessibility)E.push("Accessibility");if(!V.screenRecording)E.push("Screen Recording");return tq(`macOS ${E.join(" and ")} permission(s) not yet granted. The permission panel has been shown. Once the user grants the missing permission(s), call request_access again.`,"tcc_not_granted")}let $=K.apps;if(!Array.isArray($)||!$.every((v)=>typeof v==="string"))return tq('"apps" must be an array of strings.',"bad_args");let A=$,O={};if(typeof K.clipboardRead==="boolean")O.clipboardRead=K.clipboardRead;if(typeof K.clipboardWrite==="boolean")O.clipboardWrite=K.clipboardWrite;if(typeof K.systemKeyCombos==="boolean")O.systemKeyCombos=K.systemKeyCombos;let{needDialog:w,skipDialogGrants:j,willHide:H,tieredApps:J,userDenied:M,policyDenied:X}=await CS4(q,A,_.allowedApps,new Set(_.userDeniedBundleIds),_.selectedDisplayId),P=[],W=[],D=_.grantFlags;if(w.length>0||Object.keys(O).length>0){let v={requestId:pE8(),reason:Y,apps:w,requestedFlags:O,screenshotFiltering:q.executor.capabilities.screenshotFiltering,...H.length>0&&{willHide:H,autoUnhideEnabled:q.getAutoUnhideEnabled()}},V=await _.onPermissionRequest(v);P=V.granted,W=V.denied,D=V.flags}let f=[...j,...P],G=new Set(f.map((v)=>v.bundleId)),Z=J.filter((v)=>G.has(v.bundleId)),T=[];try{T=await Sjz(q,f)}catch(v){q.logger.warn(`[computer-use] buildWindowLocations failed: ${String(v)}`)}return Z0({granted:f,denied:W,...X.length>0&&{policyDenied:{apps:X,guidance:Dg1(X)}},...M.length>0&&{userDenied:{apps:M,guidance:Wg1(M)}},...Z.length>0&&{tierGuidance:bS4(Z)},screenshotFiltering:q.executor.capabilities.screenshotFiltering,...T.length>0?{windowLocations:T}:{}},{granted_count:P.length,denied_count:W.length,...xS4(Z)})}async function Sjz(q,K){if(K.length===0)return[];let _=await q.executor.listDisplays();if(_.length<=1)return[];let z=K.map((w)=>w.bundleId),Y=await q.executor.findWindowDisplays(z),$=new Map(_.map((w)=>[w.displayId,w])),A=new Map(Y.map((w)=>[w.bundleId,w.displayIds])),O=[];for(let w of K){let j=A.get(w.bundleId);if(!j||j.length===0)continue;O.push({bundleId:w.bundleId,displayName:w.displayName,displays:j.map((H)=>{let J=$.get(H);return{id:H,label:J?.label,isPrimary:J?.isPrimary}})})}return O}async function CS4(q,K,_,z,Y){let $=new Set(_.map((Z)=>Z.bundleId)),A=await q.executor.listInstalledApps(),O=Rjz(K,A,$),w=[],j=[];for(let Z of O){let T=Z.resolved?.displayName??Z.requestedName;if(uE8(Z.resolved?.bundleId,T))w.push({requestedName:Z.requestedName,displayName:T});else j.push(Z)}let H=[],J=[];for(let Z of j)if(Z.resolved&&z.has(Z.resolved.bundleId))H.push({requestedName:Z.requestedName,displayName:Z.resolved.displayName});else J.push(Z);let M=[];for(let Z of J){if(Z.proposedTier==="full"||!Z.resolved)continue;M.push({bundleId:Z.resolved.bundleId,displayName:Z.resolved.displayName,tier:Z.proposedTier})}let X=J.filter((Z)=>Z.alreadyGranted),P=J.filter((Z)=>!Z.alreadyGranted);for(let Z of P){if(!Z.resolved)continue;try{Z.resolved.iconDataUrl=await q.executor.getAppIcon(Z.resolved.path)}catch{}}let W=Date.now(),D=X.filter((Z)=>Z.resolved).map((Z)=>{return _.find((v)=>v.bundleId===Z.resolved.bundleId)??{bundleId:Z.resolved.bundleId,displayName:Z.resolved.displayName,grantedAt:W,tier:Z.proposedTier}}),f=[..._.map((Z)=>Z.bundleId),...J.filter((Z)=>Z.resolved).map((Z)=>Z.resolved.bundleId)],G=await q.executor.previewHideSet(f,Y);return{needDialog:P,skipDialogGrants:D,willHide:G,tieredApps:M,userDenied:H,policyDenied:w}}function bS4(q){let K=q.filter(($)=>$.tier==="read"&&yN6($.bundleId,$.displayName)==="browser"),_=q.filter(($)=>$.tier==="read"&&yN6($.bundleId,$.displayName)!=="browser"),z=q.filter(($)=>$.tier==="click"),Y=[];if(K.length>0){let $=K.map((A)=>`"${A.displayName}"`).join(", ");Y.push(`${$} ${K.length===1?"is a browser":"are browsers"} — `+`granted at tier "read" (visible in screenshots only; no clicks or typing). You can read what's on screen but cannot navigate, click, or type into ${K.length===1?"it":"them"}. For browser interaction, use the Claude-in-Chrome MCP (tools named \`mcp__Claude_in_Chrome__*\`; load via ToolSearch if deferred).`)}if(_.length>0){let $=_.map((A)=>`"${A.displayName}"`).join(", ");Y.push(`${$} ${_.length===1?"is":"are"} granted at tier "read" (visible in screenshots only; no clicks or typing). You can read what's on screen but cannot interact. Ask the user to take any actions in ${_.length===1?"this app":"these apps"} themselves.`)}if(z.length>0){let $=z.map((A)=>`"${A.displayName}"`).join(", ");Y.push(`${$} ${z.length===1?"has":"have"} terminal or IDE `+'capabilities — granted at tier "click" (visible + plain left-click '+`only; NO typing, key presses, right-click, modifier-clicks, or drag-drop). You can click buttons and scroll output, but ${z.length===1?"its":"their"} integrated terminal and editor are off-limits to keyboard input. Right-click (context-menu Paste) and dragging text onto ${z.length===1?"it":"them"} require tier "full". For shell commands, use the Bash tool.`)}if(Y.length===0)return"";return Y.join(` |
| 1828 | `)+xw6}function Wg1(q){let K=q.map((z)=>`"${z.displayName}"`).join(", "),_=q.length===1;return`${K} ${_?"is":"are"} in the user's auto-deny list `+"(Settings → Desktop app (General) → Computer Use → Denied apps). "+`Requests for ${_?"this app":"these apps"} are automatically denied. If you need access for this task, ask the user to remove ${_?"it":"them"} from their `+"deny list in Settings — you cannot request this through the tool."}function Dg1(q){let K=q.map((z)=>`"${z.displayName}"`).join(", "),_=q.length===1;return`${K} ${_?"is":"are"} blocked by policy for computer use. Requests for ${_?"this app":"these apps"} are automatically denied regardless of what the user has approved. There is no Settings override. Inform the user that you cannot access ${_?"this app":"these apps"} and suggest an alternative approach if one exists. Do not try to directly subvert this block regardless of the user's request.`}function xS4(q){let K=q.filter((z)=>z.tier==="read").length,_=q.filter((z)=>z.tier==="click").length;return{...K>0&&{denied_browser_count:K},..._>0&&{denied_terminal_count:_}}}async function Cjz(q,K,_,z){if(!_.onTeachPermissionRequest)return tq("Teach mode is not available in this session.","feature_unavailable");if(_.getTeachModeActive?.())return tq("Teach mode is already active. To add more apps, end the current tour first, then call request_teach_access again with the full app list.","teach_mode_conflict");let Y=uU(K,"reason");if(Y instanceof Error)return tq(Y.message,"bad_args");if(z){let Z={requestId:pE8(),reason:Y,apps:[],screenshotFiltering:q.executor.capabilities.screenshotFiltering,tccState:z};await _.onTeachPermissionRequest(Z);let T=await q.ensureOsPermissions();if(T.granted)return tq("macOS Accessibility and Screen Recording are now both granted. "+"Call request_teach_access again immediately — the next call will "+"show the app selection list.");let v=[];if(!T.accessibility)v.push("Accessibility");if(!T.screenRecording)v.push("Screen Recording");return tq(`macOS ${v.join(" and ")} permission(s) not yet granted. The permission panel has been shown. Once the user grants the missing permission(s), call request_teach_access again.`,"tcc_not_granted")}let $=K.apps;if(!Array.isArray($)||!$.every((Z)=>typeof Z==="string"))return tq('"apps" must be an array of strings.',"bad_args");let A=$,{needDialog:O,skipDialogGrants:w,willHide:j,tieredApps:H,userDenied:J,policyDenied:M}=await CS4(q,A,_.allowedApps,new Set(_.userDeniedBundleIds),_.selectedDisplayId);if(O.length===0&&w.length===0)return Z0({granted:[],denied:[],...M.length>0&&{policyDenied:{apps:M,guidance:Dg1(M)}},...J.length>0&&{userDenied:{apps:J,guidance:Wg1(J)}},teachModeActive:!1,screenshotFiltering:q.executor.capabilities.screenshotFiltering},{granted_count:0,denied_count:0});let X={requestId:pE8(),reason:Y,apps:O,screenshotFiltering:q.executor.capabilities.screenshotFiltering,...j.length>0&&{willHide:j,autoUnhideEnabled:q.getAutoUnhideEnabled()}},P=await _.onTeachPermissionRequest(X),W=[...w,...P.granted],D=P.userConsented===!0&&W.length>0;if(D)_.onTeachModeActivated?.();let f=new Set(W.map((Z)=>Z.bundleId)),G=H.filter((Z)=>f.has(Z.bundleId));return Z0({granted:W,denied:P.denied,...M.length>0&&{policyDenied:{apps:M,guidance:Dg1(M)}},...J.length>0&&{userDenied:{apps:J,guidance:Wg1(J)}},...G.length>0&&{tierGuidance:bS4(G)},teachModeActive:D,screenshotFiltering:q.executor.capabilities.screenshotFiltering},{granted_count:P.granted.length,denied_count:P.denied.length,...xS4(G)})}async function IS4(q,K,_,z){let Y=uU(q,"explanation");if(Y instanceof Error)return Error(`${z}: ${Y.message}`);let $=uU(q,"next_preview");if($ instanceof Error)return Error(`${z}: ${$.message}`);let A=q.actions;if(!Array.isArray(A))return Error(`${z}: "actions" must be an array (empty is allowed).`);for(let[w,j]of A.entries()){if(typeof j!=="object"||j===null)return Error(`${z}: actions[${w}] must be an object`);let H=j.action;if(typeof H!=="string")return Error(`${z}: actions[${w}].action must be a string`);if(!gE8.has(H))return Error(`${z}: actions[${w}].action="${H}" is not allowed. Allowed: ${[...gE8].join(", ")}.`)}let O;if(q.anchor!==void 0){let w=q.anchor;if(!Array.isArray(w)||w.length!==2||typeof w[0]!=="number"||typeof w[1]!=="number"||!Number.isFinite(w[0])||!Number.isFinite(w[1]))return Error(`${z}: "anchor" must be a [x, y] number tuple or omitted.`);let j=await K.executor.getDisplaySize(_.selectedDisplayId);O=EN6(w[0],w[1],_.coordinateMode,j,_.lastScreenshot,K.logger)}return{explanation:Y,nextPreview:$,anchorLogical:O,actions:A}}async function uS4(q,K,_,z){if((await _.onTeachStep({explanation:q.explanation,nextPreview:q.nextPreview,anchorLogical:q.anchorLogical})).action==="exit")return await ya6(K),{kind:"exit"};if(_.onTeachWorking?.(),q.actions.length===0)return{kind:"ok",results:[]};if(z.hideBeforeAction){let O=await K.executor.prepareForAction(_.allowedApps.map((w)=>w.bundleId),_.selectedDisplayId);if(O.length>0)_.onAppsHidden?.(O)}let $={...z,hideBeforeAction:!1,pixelValidation:!1,autoTargetDisplay:!1},A=[];for(let[O,w]of q.actions.entries()){if(_.isAborted?.())return await ya6(K),{kind:"exit"};if(O>0)await UE8(10);let j=w.action,{screenshot:H,...J}=await Gg1(j,w,K,_,$),M=gS4(J),X={action:j,ok:!J.isError,output:M};if(A.push(X),J.isError)return await ya6(K),{kind:"action_error",executed:A.length-1,failed:X,remaining:q.actions.length-A.length,telemetry:J.telemetry}}return{kind:"ok",results:A}}async function mS4(q,K,_,z){let Y=await BS4(K,_,z);if(Y.isError)return Z0(q);return{content:[{type:"text",text:JSON.stringify(q)},...Y.content],screenshot:Y.screenshot}}async function bjz(q,K,_,z){if(!_.onTeachStep)return tq("Teach mode is not active. Call request_teach_access first.","teach_mode_not_active");let Y=await IS4(K,q,_,"teach_step");if(Y instanceof Error)return tq(Y.message,"bad_args");let $=await uS4(Y,q,_,z);if($.kind==="exit")return Z0({exited:!0});if($.kind==="action_error")return Z0({executed:$.executed,failed:$.failed,remaining:$.remaining},$.telemetry);if(Y.actions.length===0)return Z0({executed:0,results:[]});return mS4({executed:$.results.length,results:$.results},q,_,z)}async function xjz(q,K,_,z){if(!_.onTeachStep)return tq("Teach mode is not active. Call request_teach_access first.","teach_mode_not_active");let Y=K.steps;if(!Array.isArray(Y)||Y.length<1)return tq('"steps" must be a non-empty array.',"bad_args");let $=[];for(let[j,H]of Y.entries()){if(typeof H!=="object"||H===null)return tq(`steps[${j}] must be an object`,"bad_args");let J=await IS4(H,q,_,`steps[${j}]`);if(J instanceof Error)return tq(J.message,"bad_args");$.push(J)}let A=[];for(let[j,H]of $.entries()){let J=await uS4(H,q,_,z);if(J.kind==="exit")return Z0({exited:!0,stepsCompleted:j});if(J.kind==="action_error")return Z0({stepsCompleted:j,stepFailed:j,executed:J.executed,failed:J.failed,remaining:J.remaining,results:A},J.telemetry);A.push(J.results)}let O=$.some((j)=>j.actions.length>0),w={stepsCompleted:$.length,results:A};if(!O)return Z0(w);return mS4(w,q,_,z)}async function yS4(q,K){if(K.length===0)return;let _=await q.executor.listRunningApps(),z=new Map(_.map((O)=>[O.bundleId,O.displayName])),Y=K.map((O)=>z.get(O)??O),$=Y.map((O)=>`"${O}"`).join(", "),A=Y.length===1;return`${$} ${A?"was":"were"} open and got hidden before this screenshot (not in the session allowlist). If a previous action was meant to open ${A?"it":"one of them"}, that's why you don't see it — call `+`request_access to add ${A?"it":"them"} to the allowlist.`}function pS4(q){let K=[...q].sort((Y,$)=>Y.displayId-$.displayId),_=new Map,z=new Map;for(let Y of K){let $=Y.label??`display ${Y.displayId}`,A=(_.get($)??0)+1;_.set($,A),z.set(Y.displayId,A===1?$:`${$} (${A})`)}return z}async function ES4(q,K,_,z){let Y;try{Y=await q.executor.listDisplays()}catch(J){q.logger.warn(`[computer-use] listDisplays failed: ${String(J)}`);return}if(Y.length<2)return;let $=pS4(Y),A=(J)=>$.get(J)??`display ${J}`,O=A(K),w=Y.filter((J)=>J.displayId!==K).map((J)=>A(J.displayId)),j=z?" Use switch_display to capture a different monitor.":"",H=w.length>0?` Other attached monitors: ${w.map((J)=>`"${J}"`).join(", ")}.`+j:"";if(_===void 0||_===0)return`This screenshot was taken on monitor "${O}".`+H;if(_!==K){let J=A(_);return`This screenshot was taken on monitor "${O}", which is different from your previous screenshot (taken on "${J}").`+H}return}async function BS4(q,K,_){if(K.allowedApps.length===0)return tq("No applications are granted for this session. Call request_access first.","allowlist_empty");if(_.autoTargetDisplay){let w=K.allowedApps.map((f)=>f.bundleId),j=w.slice().sort().join(","),H=j!==K.displayResolvedForApps,J=!K.displayPinnedByModel&&H,M=await q.executor.resolvePrepareCapture({allowedBundleIds:w,preferredDisplayId:K.selectedDisplayId,autoResolve:J,doHide:_.hideBeforeAction});if(M.captureError===void 0&&BE8(M.base64)<hS4)q.logger.warn(`[computer-use] resolvePrepareCapture result implausibly small (${BE8(M.base64)} bytes decoded) — possible transient display state`);if(M.displayId!==K.selectedDisplayId)q.logger.debug(`[computer-use] resolver: preferred=${K.selectedDisplayId} resolved=${M.displayId}`),K.onResolvedDisplayUpdated?.(M.displayId);if(J)K.onDisplayResolvedForApps?.(j);let X=[];if(K.lastScreenshot!==void 0)X=M.hidden;if(M.hidden.length>0)K.onAppsHidden?.(M.hidden);if(M.captureError!==void 0)return tq(M.captureError,"capture_failed");let P=await yS4(q,X),W={base64:M.base64,width:M.width,height:M.height,displayWidth:M.displayWidth,displayHeight:M.displayHeight,displayId:M.displayId,originX:M.originX,originY:M.originY},D=await ES4(q,W.displayId,K.lastScreenshot?.displayId,K.onDisplayPinned!==void 0);return{content:[...D?[{type:"text",text:D}]:[],...P?[{type:"text",text:P}]:[],{type:"image",data:W.base64,mimeType:"image/jpeg"}],screenshot:W}}let z=[];if(_.hideBeforeAction){let w=await q.executor.prepareForAction(K.allowedApps.map((j)=>j.bundleId),K.selectedDisplayId);if(K.lastScreenshot!==void 0)z=w;if(w.length>0)K.onAppsHidden?.(w)}let Y=K.allowedApps.map((w)=>w.bundleId),$=await Njz(q.executor,Y,q.logger,K.selectedDisplayId),A=await yS4(q,z),O=await ES4(q,$.displayId,K.lastScreenshot?.displayId,K.onDisplayPinned!==void 0);return{content:[...O?[{type:"text",text:O}]:[],...A?[{type:"text",text:A}]:[],{type:"image",data:$.base64,mimeType:"image/jpeg"}],screenshot:$}}async function Ijz(q,K,_){let z=K.region;if(!Array.isArray(z)||z.length!==4)return tq("region must be an array of length 4: [x0, y0, x1, y1]","bad_args");let[Y,$,A,O]=z;if(![Y,$,A,O].every((P)=>typeof P==="number"&&P>=0))return tq("region values must be non-negative numbers","bad_args");if(A<=Y)return tq("region x1 must be greater than x0","bad_args");if(O<=$)return tq("region y1 must be greater than y0","bad_args");let w=_.lastScreenshot;if(!w)return tq("take a screenshot before zooming (region coords are relative to it)","state_conflict");if(A>w.width||O>w.height)return tq(`region exceeds screenshot bounds (${w.width}×${w.height})`,"bad_args");let j=w.displayWidth/w.width,H=w.displayHeight/w.height,J={x:Y*j,y:$*H,w:(A-Y)*j,h:(O-$)*H},M=_.allowedApps.map((P)=>P.bundleId);return{content:[{type:"image",data:(await q.executor.zoom(J,M,w.displayId)).base64,mimeType:"image/jpeg"}]}}async function Na6(q,K,_,z,Y,$){if(mG)await q.executor.mouseUp(),mG=!1,IU=!1;let A=Ea6(K);if(A instanceof Error)return tq(A.message,"bad_args");let[O,w]=A,j;if(K.text!==void 0){if(typeof K.text!=="string")return tq("text must be a string","bad_args");if(mE8(K.text,q.executor.capabilities.platform)&&!_.grantFlags.systemKeyCombos)return tq(`The modifier chord "${K.text}" would fire a system shortcut. Request the systemKeyCombos grant flag via request_access, or use only modifier keys (shift, ctrl, alt, cmd) in the text parameter.`,"grant_flag_required");j=SS4(K.text)}let H=Y!=="left"||j!==void 0&&j.length>0?"mouse_full":"mouse",J=await er(q,_,z,H);if(J)return J;let M=await q.executor.getDisplaySize(_.selectedDisplayId);if(z.pixelValidation){let{xPct:D,yPct:f}=Vjz(O,w,_.coordinateMode,_.lastScreenshot),G=await GS4(q.cropRawPatch,_.lastScreenshot,D,f,async()=>{let Z=_.allowedApps.map((T)=>T.bundleId);try{return await q.executor.screenshot({allowedBundleIds:Z,displayId:_.lastScreenshot?.displayId})}catch{return null}},q.logger);if(!G.valid&&G.warning)return G0(G.warning)}let{x:X,y:P}=EN6(O,w,_.coordinateMode,M,_.lastScreenshot,q.logger),W=await Iw6(q,_,z,X,P,H);if(W)return W;return await q.executor.click(X,P,Y,$,j),G0("Clicked.")}async function ujz(q,K,_,z){let Y=uU(K,"text");if(Y instanceof Error)return tq(Y.message,"bad_args");let $=await er(q,_,z,"keyboard");if($)return $;if(Y.includes(` |