| 6727 | `;if(await NuK(z,"utf-8").catch(()=>null)===Y)return z;if(await VuK(_,{recursive:!0}),await yuK(z,Y),K!=="windows")await aVY(z,493);return N(`[Claude in Chrome] Created Chrome native host wrapper script: ${z}`),z}function _NY(){return Zs().then((K)=>{if(!K)return;if(j8().cachedChromeExtensionInstalled!==K)b8((z)=>({...z,cachedChromeExtensionInstalled:K}))}),j8().cachedChromeExtensionInstalled??!1}async function Zs(){let q=$R4();if(q.length===0)return N(`[Claude in Chrome] Unsupported platform for extension detection: ${Z1()}`),!1;return ZuK(q,N)}var eVY="https://clau.de/chrome/reconnect",n37="com.anthropic.claude_code_browser_extension",TuK,FU8=void 0;var WJ6=y(()=>{zm6();v8();o1();V1();_8();m8();XK();vK();l8();cC();GuK();TuK=`${n37}.json`});var EuK={};T8(EuK,{call:()=>MNY});function ANY(q){let K=z6(41),{onDone:_,isExtensionInstalled:z,configEnabled:Y,isClaudeAISubscriber:$,isWSL:A}=q,O=P8(JNY),[w,j]=Jz.useState(0),[H,J]=Jz.useState(Y??!1),[M,X]=Jz.useState(!1),[P,W]=Jz.useState(z),D;if(K[0]===Symbol.for("react.memo_cache_sentinel"))D=!1,K[0]=D;else D=K[0];let f=D,G;if(K[1]!==O)G=O.find(HNY),K[1]=O,K[2]=G;else G=K[2];let T=G?.type==="connected",v;if(K[3]===Symbol.for("react.memo_cache_sentinel"))v=function(t){if(f)m3(t);else ty8(t)},K[3]=v;else v=K[3];let V=v,E;if(K[4]!==H)E=function(t){q:switch(t){case"install-extension":{j(jNY),X(!0),V(zNY);break q}case"reconnect":{j(wNY),Zs().then((q6)=>{if(W(q6),q6)X(!1)}),V($NY);break q}case"manage-permissions":{j(ONY),V(YNY);break q}case"toggle-default":{let q6=!H;b8((e)=>({...e,claudeInChromeDefaultEnabled:q6})),J(q6)}}},K[4]=H,K[5]=E;else E=K[5];let S=E,R;if(K[6]!==H||K[7]!==P){R=[];let K6=P?"":" (requires extension)";if(!P&&!f){let j6;if(K[9]===Symbol.for("react.memo_cache_sentinel"))j6={label:"Install Chrome extension",value:"install-extension"},K[9]=j6;else j6=K[9];R.push(j6)}let t;if(K[10]===Symbol.for("react.memo_cache_sentinel"))t=Jz.default.createElement(k,null,"Manage permissions"),K[10]=t;else t=K[10];let q6;if(K[11]!==K6)q6={label:Jz.default.createElement(Jz.default.Fragment,null,t,Jz.default.createElement(k,{dimColor:!0},K6)),value:"manage-permissions"},K[11]=K6,K[12]=q6;else q6=K[12];let e;if(K[13]===Symbol.for("react.memo_cache_sentinel"))e=Jz.default.createElement(k,null,"Reconnect extension"),K[13]=e;else e=K[13];let i;if(K[14]!==K6)i={label:Jz.default.createElement(Jz.default.Fragment,null,e,Jz.default.createElement(k,{dimColor:!0},K6)),value:"reconnect"},K[14]=K6,K[15]=i;else i=K[15];let $6=`Enabled by default: ${H?"Yes":"No"}`,M6;if(K[16]!==$6)M6={label:$6,value:"toggle-default"},K[16]=$6,K[17]=M6;else M6=K[17];R.push(q6,i,M6),K[6]=H,K[7]=P,K[8]=R}else R=K[8];let x=A||!$,I;if(K[18]!==_)I=()=>_(),K[18]=_,K[19]=I;else I=K[19];let B;if(K[20]===Symbol.for("react.memo_cache_sentinel"))B=Jz.default.createElement(k,null,"Claude in Chrome works with the Chrome extension to let you control your browser directly from Claude Code. Navigate websites, fill forms, capture screenshots, record GIFs, and debug with console logs and network requests."),K[20]=B;else B=K[20];let p;if(K[21]!==A)p=A&&Jz.default.createElement(k,{color:"error"},"Claude in Chrome is not supported in WSL at this time."),K[21]=A,K[22]=p;else p=K[22];let C;if(K[23]!==$)C=!$&&Jz.default.createElement(k,{color:"error"},"Claude in Chrome requires a claude.ai subscription."),K[23]=$,K[24]=C;else C=K[24];let g;if(K[25]!==S||K[26]!==T||K[27]!==x||K[28]!==P||K[29]!==R||K[30]!==w||K[31]!==M)g=!x&&Jz.default.createElement(Jz.default.Fragment,null,!f&&Jz.default.createElement(u,{flexDirection:"column"},Jz.default.createElement(k,null,"Status:"," ",T?Jz.default.createElement(k,{color:"success"},"Enabled"):Jz.default.createElement(k,{color:"inactive"},"Disabled")),Jz.default.createElement(k,null,"Extension:"," ",P?Jz.default.createElement(k,{color:"success"},"Installed"):Jz.default.createElement(k,{color:"warning"},"Not detected"))),Jz.default.createElement(H1,{key:w,options:R,onChange:S,hideIndexes:!0}),M&&Jz.default.createElement(k,{color:"warning"},"Once installed, select ",'"Reconnect extension"'," to connect."),Jz.default.createElement(k,null,Jz.default.createElement(k,{dimColor:!0},"Usage: "),Jz.default.createElement(k,null,"claude --chrome"),Jz.default.createElement(k,{dimColor:!0}," or "),Jz.default.createElement(k,null,"claude --no-chrome")),Jz.default.createElement(k,{dimColor:!0},"Site-level permissions are inherited from the Chrome extension. Manage permissions in the Chrome extension settings to control which sites Claude can browse, click, and type on.")),K[25]=S,K[26]=T,K[27]=x,K[28]=P,K[29]=R,K[30]=w,K[31]=M,K[32]=g;else g=K[32];let F;if(K[33]===Symbol.for("react.memo_cache_sentinel"))F=Jz.default.createElement(k,{dimColor:!0},"Learn more: https://code.claude.com/docs/en/chrome"),K[33]=F;else F=K[33];let U;if(K[34]!==p||K[35]!==C||K[36]!==g)U=Jz.default.createElement(u,{flexDirection:"column",gap:1},B,p,C,g,F),K[34]=p,K[35]=C,K[36]=g,K[37]=U;else U=K[37];let c;if(K[38]!==U||K[39]!==I)c=Jz.default.createElement(R1,{title:"Claude in Chrome (Beta)",onCancel:I,color:"chromeYellow"},U),K[38]=U,K[39]=I,K[40]=c;else c=K[40];return c}function ONY(q){return q+1}function wNY(q){return q+1}function jNY(q){return q+1}function HNY(q){return q.name===yN}function JNY(q){return q.mcp.clients}var Jz,zNY="https://claude.ai/chrome",YNY="https://clau.de/chrome/permissions",$NY="https://clau.de/chrome/reconnect",MNY=async function(q){let K=await Zs(),_=j8(),z=d7(),Y=a1.isWslEnvironment();return Jz.default.createElement(ANY,{onDone:q,isExtensionInstalled:K,configEnabled:_.claudeInChromeDefaultEnabled,isClaudeAISubscriber:z,isWSL:Y})};var LuK=y(()=>{q8();p3();e4();s6();C7();G7();hH();cC();WJ6();V1();y_();m8();Jz=O6(D6(),1)});var XNY,RuK;var huK=y(()=>{v8();XNY={name:"chrome",description:"Claude in Chrome (Beta) settings",availability:["claude-ai"],isEnabled:()=>!i7(),type:"local-jsx",load:()=>Promise.resolve().then(() => (LuK(),EuK))},RuK=XNY});var SuK={};T8(SuK,{call:()=>PNY});async function PNY(){if(await m3("https://www.stickermule.com/claudecode"))return{type:"text",value:"Opening sticker page in browser…"};else return{type:"text",value:"Failed to open browser. Visit: https://www.stickermule.com/claudecode"}}var CuK=y(()=>{hH()});var WNY,r37;var buK=y(()=>{WNY={type:"local",name:"stickers",description:"Order Claude Code stickers",supportsNonInteractive:!1,load:()=>Promise.resolve().then(() => (CuK(),SuK))},r37=WNY});var DNY=async(q,K)=>{let _=q.trim().toLowerCase(),z=A5(K.getAppState().mainLoopModel??KG());if(!_){let w=K.getAppState().advisorModel;if(!w)return{type:"text",value:`Advisor: not set |
| 6731 | Note: Your current model (${z}) does not support advisors. Switch to a supported model to use the advisor.`};return{type:"text",value:`Advisor set to ${Y}.`}},fNY,xuK;var IuK=y(()=>{eq6();aq();Rm8();U1();fNY={type:"local",name:"advisor",description:"Configure the advisor model",argumentHint:"[<model>|off]",isEnabled:()=>tq6(),get isHidden(){return!tq6()},supportsNonInteractive:!0,load:()=>Promise.resolve({call:DNY})},xuK=fNY});import{constants as QU8}from"fs";import{mkdir as ZNY,open as GNY}from"fs/promises";import{dirname as TNY,isAbsolute as vNY,join as uuK,normalize as kNY,sep as VNY}from"path";function rO(q){let{files:K}=q,_,z=q.getPromptForCommand;if(K&&Object.keys(K).length>0){_=BuK(q.name);let $,A=q.getPromptForCommand;z=async(O,w)=>{$??=NNY(q.name,K);let j=await $,H=await A(O,w);if(j===null)return H;return SNY(H,j)}}let Y={type:"prompt",name:q.name,description:q.description,aliases:q.aliases,hasUserSpecifiedDescription:!0,allowedTools:q.allowedTools??[],argumentHint:q.argumentHint,whenToUse:q.whenToUse,model:q.model,disableModelInvocation:q.disableModelInvocation??!1,userInvocable:q.userInvocable??!0,contentLength:0,source:"bundled",loadedFrom:"bundled",hooks:q.hooks,skillRoot:_,context:q.context,agent:q.agent,isEnabled:q.isEnabled,isHidden:!(q.userInvocable??!0),progressMessage:"running",getPromptForCommand:z};muK.push(Y)}function puK(){return[...muK]}function BuK(q){return uuK(o37(),q)}async function NNY(q,K){let _=BuK(q);try{return await yNY(_,K),_}catch(z){return N(`Failed to extract bundled skill '${q}' to ${_}: ${z instanceof Error?z.message:String(z)}`),null}}async function yNY(q,K){let _=new Map;for(let[z,Y]of Object.entries(K)){let $=hNY(q,z),A=TNY($),O=[$,Y],w=_.get(A);if(w)w.push(O);else _.set(A,[O])}await Promise.all([..._].map(async([z,Y])=>{await ZNY(z,{recursive:!0,mode:448}),await Promise.all(Y.map(([$,A])=>RNY($,A)))}))}async function RNY(q,K){let _=await GNY(q,LNY,384);try{await _.writeFile(K,"utf8")}finally{await _.close()}}function hNY(q,K){let _=kNY(K);if(vNY(_)||_.split(VNY).includes("..")||_.split("/").includes(".."))throw Error(`bundled skill file path escapes skill dir: ${K}`);return uuK(q,_)}function SNY(q,K){let _=`Base directory for this skill: ${K} |