| 8153 | `)}async sendRequest(q,K,_,z=s$7()){let Y={type:"control_request",request_id:z,request:q};if(this.inputClosed)throw Error("Stream closed");if(_?.aborted)throw Error("Request aborted");if(this.outbound.enqueue(Y),q.subtype==="can_use_tool"&&this.onControlRequestSent)this.onControlRequestSent(Y);let $=()=>{this.outbound.enqueue({type:"control_cancel_request",request_id:z});let A=this.pendingRequests.get(z);if(A)this.trackResolvedToolUseId(A.request),A.reject(new Uz)};if(_)_.addEventListener("abort",$,{once:!0});try{return await new Promise((A,O)=>{this.pendingRequests.set(z,{request:{type:"control_request",request_id:z,request:q},resolve:(w)=>{A(w)},reject:O,schema:K})})}finally{if(_)_.removeEventListener("abort",$);this.pendingRequests.delete(z)}}createCanUseTool(q){return async(K,_,z,Y,$,A)=>{let O=A??await uX(K,_,z,Y,$);if(O.behavior==="allow"||O.behavior==="deny")return O;let w=new AbortController,j=z.abortController.signal,H=()=>w.abort();j.addEventListener("abort",H,{once:!0});try{let J=HcY(K.name,$,_,z,O.suggestions).then((W)=>({source:"hook",decision:W})),M=s$7();q?.(wcY(K,_,$,M));let X=this.sendRequest({subtype:"can_use_tool",tool_name:K.name,input:_,permission_suggestions:O.suggestions,blocked_path:O.blockedPath,decision_reason:OcY(O.decisionReason),tool_use_id:$,agent_id:z.agentId},_K8(),w.signal,M).then((W)=>({source:"sdk",result:W})),P=await Promise.race([J,X]);if(P.source==="hook"){if(P.decision)return X.catch(()=>{}),w.abort(),P.decision;let W=await X;return xC6(W.result,K,_,z)}return xC6(P.result,K,_,z)}catch(J){return xC6({behavior:"deny",message:`Tool permission request failed: ${J}`,toolUseID:$},K,_,z)}finally{if(this.getPendingPermissionRequests().length===0)sS6("running");j.removeEventListener("abort",H)}}}createHookCallback(q,K){return{type:"callback",timeout:K,callback:async(_,z,Y)=>{try{return await this.sendRequest({subtype:"hook_callback",callback_id:q,input:_,tool_use_id:z||void 0},lS6(),Y)}catch($){return console.error(`Error in hook callback ${q}:`,$),{}}}}}async handleElicitation(q,K,_,z,Y,$,A){try{return await this.sendRequest({subtype:"elicitation",mcp_server_name:q,message:K,mode:Y,url:$,elicitation_id:A,requested_schema:_},raK(),z)}catch{return{action:"cancel"}}}createSandboxAskCallback(){return async(q)=>{try{return(await this.sendRequest({subtype:"can_use_tool",tool_name:t$7,input:{host:q.host},tool_use_id:s$7(),description:`Allow network connection to ${q.host}?`},_K8())).behavior==="allow"}catch{return!1}}}async sendMcpMessage(q,K){return(await this.sendRequest({subtype:"mcp_message",server_name:q,message:K},L.object({mcp_response:L.any()}))).mcp_response}}function eaK(q){console.error(q),process.exit(1)}async function HcY(q,K,_,z,Y){let A=z.getAppState().toolPermissionContext.mode,O=hH6(q,K,_,z,A,Y,z.abortController.signal);for await(let w of O)if(w.permissionRequestResult&&(w.permissionRequestResult.behavior==="allow"||w.permissionRequestResult.behavior==="deny")){let j=w.permissionRequestResult;if(j.behavior==="allow"){let H=j.updatedInput||_,J=j.updatedPermissions??[];if(J.length>0){ru(J);let M=z.getAppState(),X=XN(M.toolPermissionContext,J);z.setAppState((P)=>{if(P.toolPermissionContext===X)return P;return{...P,toolPermissionContext:X}})}return{behavior:"allow",updatedInput:H,userModified:!1,decisionReason:{type:"hook",hookName:"PermissionRequest"}}}else return{behavior:"deny",message:j.message||"Permission denied by PermissionRequest hook",decisionReason:{type:"hook",hookName:"PermissionRequest"}}}return}var t$7="SandboxNetworkAccess",jcY=1000;var Qc8=y(()=>{saK();Y_7();_8();oY();y8();o$7();Fj();l8();x7();y$();LH();z48();l8();q87();a$7()});function qsK(q,K,_){let z=dc8.useRef(!1);dc8.useEffect(()=>{if(!e$()||z.current)return;if(z.current=!0,q)Jx8(q,_)},[K,q,_])}var dc8;var KsK=y(()=>{oN();dc8=O6(D6(),1)});function e$7(q){let K=z6(22),{hostPattern:_,onUserResponse:z}=q,{host:Y}=_,$;if(K[0]!==z)$=function(v){q:switch(v){case"yes":{z({allow:!0,persistToSettings:!1});break q}case"yes-dont-ask-again":{z({allow:!0,persistToSettings:!0});break q}case"no":z({allow:!1,persistToSettings:!1})}},K[0]=z,K[1]=$;else $=K[1];let A=$,O;if(K[2]===Symbol.for("react.memo_cache_sentinel"))O=lA6(),K[2]=O;else O=K[2];let w=O,j;if(K[3]===Symbol.for("react.memo_cache_sentinel"))j={label:"Yes",value:"yes"},K[3]=j;else j=K[3];let H;if(K[4]!==Y)H=!w?[{label:Sw.createElement(k,null,"Yes, and don't ask again for ",Sw.createElement(k,{bold:!0},Y)),value:"yes-dont-ask-again"}]:[],K[4]=Y,K[5]=H;else H=K[5];let J;if(K[6]===Symbol.for("react.memo_cache_sentinel"))J={label:Sw.createElement(k,null,"No, and tell Claude what to do differently ",Sw.createElement(k,{bold:!0},"(esc)")),value:"no"},K[6]=J;else J=K[6];let M;if(K[7]!==H)M=[j,...H,J],K[7]=H,K[8]=M;else M=K[8];let X=M,P;if(K[9]===Symbol.for("react.memo_cache_sentinel"))P=Sw.createElement(k,{dimColor:!0},"Host:"),K[9]=P;else P=K[9];let W;if(K[10]!==Y)W=Sw.createElement(u,null,P,Sw.createElement(k,null," ",Y)),K[10]=Y,K[11]=W;else W=K[11];let D;if(K[12]===Symbol.for("react.memo_cache_sentinel"))D=Sw.createElement(u,{marginTop:1},Sw.createElement(k,null,"Do you want to allow this connection?")),K[12]=D;else D=K[12];let f;if(K[13]!==z)f=()=>{z({allow:!1,persistToSettings:!1})},K[13]=z,K[14]=f;else f=K[14];let G;if(K[15]!==A||K[16]!==X||K[17]!==f)G=Sw.createElement(u,null,Sw.createElement(H1,{options:X,onChange:A,onCancel:f})),K[15]=A,K[16]=X,K[17]=f,K[18]=G;else G=K[18];let Z;if(K[19]!==G||K[20]!==W)Z=Sw.createElement(HY,{title:"Network request outside of sandbox"},Sw.createElement(u,{flexDirection:"column",paddingX:2,paddingY:1},W,D,G)),K[19]=G,K[20]=W,K[21]=Z;else Z=K[21];return Z}var Sw;var _sK=y(()=>{q8();s6();K$();p3();GD();Sw=O6(D6(),1)});function JcY(q){let K=q.getHours()%12||12,_=String(q.getMinutes()).padStart(2,"0"),z=String(q.getSeconds()).padStart(2,"0"),Y=q.getHours()<12?"am":"pm";return`${K}:${_}:${z}${Y}`}function qA7(){let q=z6(15),K;if(q[0]===Symbol.for("react.memo_cache_sentinel"))K=[],q[0]=K;else K=q[0];let[_,z]=YK8.useState(K),[Y,$]=YK8.useState(0),A,O;if(q[1]===Symbol.for("react.memo_cache_sentinel"))A=()=>{let P=M7.getSandboxViolationStore();return P.subscribe((D)=>{z(D.slice(-10)),$(P.getTotalCount())})},O=[],q[1]=A,q[2]=O;else A=q[1],O=q[2];if(YK8.useEffect(A,O),!M7.isSandboxingEnabled()||Z1()==="linux")return null;if(Y===0)return null;let w=Y===1?"operation":"operations",j;if(q[3]!==w||q[4]!==Y)j=Gk.createElement(u,{marginLeft:0},Gk.createElement(k,{color:"permission"},"⧈ Sandbox blocked ",Y," total"," ",w)),q[3]=w,q[4]=Y,q[5]=j;else j=q[5];let H;if(q[6]!==_)H=_.map(McY),q[6]=_,q[7]=H;else H=q[7];let J=Math.min(10,_.length),M;if(q[8]!==J||q[9]!==Y)M=Gk.createElement(u,{paddingLeft:2},Gk.createElement(k,{dimColor:!0},"… showing last ",J," of ",Y)),q[8]=J,q[9]=Y,q[10]=M;else M=q[10];let X;if(q[11]!==j||q[12]!==H||q[13]!==M)X=Gk.createElement(u,{flexDirection:"column",marginTop:1},j,H,M),q[11]=j,q[12]=H,q[13]=M,q[14]=X;else X=q[14];return X}function McY(q,K){return Gk.createElement(u,{key:`${q.timestamp.getTime()}-${K}`,paddingLeft:2},Gk.createElement(k,{dimColor:!0},JcY(q.timestamp),q.command?` ${q.command}:`:""," ",q.line))}var Gk,YK8;var zsK=y(()=>{q8();s6();K$();vK();Gk=O6(D6(),1),YK8=O6(D6(),1)});function $sK(q){let K=z6(4),{mcpClients:_}=q,z=_===void 0?XcY:_,{addNotification:Y}=PK(),$,A;if(K[0]!==Y||K[1]!==z)$=()=>{if(z5())return;let O=z.filter(fcY),w=z.filter(DcY),j=z.filter(WcY),H=z.filter(PcY);if(O.length===0&&w.length===0&&j.length===0&&H.length===0)return;if(O.length>0)Y({key:"mcp-failed",jsx:cY.createElement(cY.Fragment,null,cY.createElement(k,{color:"error"},O.length," MCP"," ",O.length===1?"server":"servers"," failed"),cY.createElement(k,{dimColor:!0}," · /mcp")),priority:"medium"});if(w.length>0)Y({key:"mcp-claudeai-failed",jsx:cY.createElement(cY.Fragment,null,cY.createElement(k,{color:"error"},w.length," claude.ai"," ",w.length===1?"connector":"connectors"," ","unavailable"),cY.createElement(k,{dimColor:!0}," · /mcp")),priority:"medium"});if(j.length>0)Y({key:"mcp-needs-auth",jsx:cY.createElement(cY.Fragment,null,cY.createElement(k,{color:"warning"},j.length," MCP"," ",j.length===1?"server needs":"servers need"," ","auth"),cY.createElement(k,{dimColor:!0}," · /mcp")),priority:"medium"});if(H.length>0)Y({key:"mcp-claudeai-needs-auth",jsx:cY.createElement(cY.Fragment,null,cY.createElement(k,{color:"warning"},H.length," claude.ai"," ",H.length===1?"connector needs":"connectors need"," ","auth"),cY.createElement(k,{dimColor:!0}," · /mcp")),priority:"medium"})},A=[Y,z],K[0]=Y,K[1]=z,K[2]=$,K[3]=A;else $=K[2],A=K[3];YsK.useEffect($,A)}function PcY(q){return q.type==="needs-auth"&&q.config.type==="claudeai-proxy"&&NB1(q.name)}function WcY(q){return q.type==="needs-auth"&&q.config.type!=="claudeai-proxy"}function DcY(q){return q.type==="failed"&&q.config.type==="claudeai-proxy"&&NB1(q.name)}function fcY(q){return q.type==="failed"&&q.config.type!=="sse-ide"&&q.config.type!=="ws-ide"&&q.config.type!=="claudeai-proxy"}var cY,YsK,XcY;var AsK=y(()=>{q8();h$();v8();s6();ON6();cY=O6(D6(),1),YsK=O6(D6(),1),XcY=[]});function OsK(){let{addNotification:q}=PK(),K=P8(($)=>$.toolPermissionContext.mode),_=P8(($)=>$.toolPermissionContext.isAutoModeAvailable),z=$K8.useRef(!1),Y=$K8.useRef(K);$K8.useEffect(()=>{let $=Y.current;if(Y.current=K,z5())return;if(z.current)return;if(!(K==="default"&&$!=="default"&&$!=="auto"&&!_&&fl()))return;let O=la();if(!O)return;z.current=!0,q({key:"auto-mode-unavailable",text:A56(O),color:"warning",priority:"medium"})},[K,_,q])}var $K8;var wsK=y(()=>{h$();v8();C7();fX();U1();$K8=O6(D6(),1)});function jsK(){let q=z6(10),{addNotification:K}=PK(),_=s7(),[z,Y]=ZT.useState(TcY),$;if(q[0]===Symbol.for("react.memo_cache_sentinel"))$=new Set,q[0]=$;else $=q[0];let A=ZT.useRef($),O;if(q[1]!==K||q[2]!==_)O=(X,P)=>{let W=`${X}:${P}`;if(A.current.has(W))return;A.current.add(W),N(`LSP error: ${X} - ${P}`),_((f)=>{let G=new Set(f.plugins.errors.map(GcY)),Z=`generic-error:${X}:${P}`;if(G.has(Z))return f;return{...f,plugins:{...f.plugins,errors:[...f.plugins.errors,{type:"generic-error",source:X,error:P}]}}});let D=X.startsWith("plugin:")?X.split(":")[1]??X:X;K({key:`lsp-error-${X}`,jsx:ZT.createElement(ZT.Fragment,null,ZT.createElement(k,{color:"error"},"LSP for ",D," failed"),ZT.createElement(k,{dimColor:!0}," · /plugin for details")),priority:"medium",timeoutMs:8000})},q[1]=K,q[2]=_,q[3]=O;else O=q[3];let w=O,j;if(q[4]!==w)j=()=>{if(z5())return;if(r36())return;let X=WL6();if(X.status==="failed"){w("lsp-manager",X.error.message),Y(!1);return}if(X.status==="pending"||X.status==="not-started")return;let P=Ma();if(P){let W=P.getAllServers();for(let[D,f]of W)if(f.state==="error"&&f.lastError)w(D,f.lastError.message)}},q[4]=w,q[5]=j;else j=q[5];let H=j;eW(H,z?ZcY:null);let J,M;if(q[6]!==H||q[7]!==z)J=()=>{if(z5()||!z)return;H()},M=[H,z],q[6]=H,q[7]=z,q[8]=J,q[9]=M;else J=q[8],M=q[9];ZT.useEffect(J,M)}function GcY(q){if(q.type==="generic-error")return`generic-error:${q.source}:${q.error}`;return`${q.type}:${q.source}`}function TcY(){return i6("true")}var ZT,ZcY=5000;var HsK=y(()=>{q8();dV();v8();h$();s6();uQ();C7();_8();m8();ZT=O6(D6(),1)});async function MsK(q){if(!q||!q.trim())return N("[binaryCheck] Empty command provided, returning false"),!1;let K=q.trim(),_=JsK.get(K);if(_!==void 0)return N(`[binaryCheck] Cache hit for '${K}': ${_}`),_;let z=!1;if(await TO(K).catch(()=>null))z=!0;return JsK.set(K,z),N(`[binaryCheck] Binary '${K}' ${z?"found":"not found"}`),z}var JsK;var XsK=y(()=>{_8();rk();JsK=new Map});import{extname as vcY}from"path";function VcY(q){return _I.has(q.toLowerCase())}function NcY(q){if(!q)return null;if(typeof q==="string")return N("[lspRecommendation] Skipping string path lspServers (not readable from marketplace)"),null;if(Array.isArray(q)){for(let K of q){if(typeof K==="string")continue;let _=WsK(K);if(_)return _}return null}return WsK(q)}function PsK(q){return typeof q==="object"&&q!==null}function WsK(q){let K=new Set,_=null;for(let[z,Y]of Object.entries(q)){if(!PsK(Y))continue;if(!_&&typeof Y.command==="string")_=Y.command;let $=Y.extensionToLanguage;if(PsK($))for(let A of Object.keys($))K.add(A.toLowerCase())}if(!_||K.size===0)return null;return{extensions:K,command:_}}async function ycY(){let q=new Map;try{let K=await r_();for(let _ of Object.keys(K))try{let z=await r0(_),Y=VcY(_);for(let $ of z.plugins){if(!$.lspServers)continue;let A=NcY($.lspServers);if(!A)continue;let O=`${$.name}@${_}`;q.set(O,{entry:$,marketplaceName:_,extensions:A.extensions,command:A.command,isOfficial:Y})}}catch(z){N(`[lspRecommendation] Failed to load marketplace ${_}: ${z}`)}}catch(K){N(`[lspRecommendation] Failed to load marketplaces config: ${K}`)}return q}async function DsK(q){if(EcY())return N("[lspRecommendation] Recommendations are disabled"),[];let K=vcY(q).toLowerCase();if(!K)return N("[lspRecommendation] No file extension found"),[];N(`[lspRecommendation] Looking for LSP plugins for ${K}`);let _=await ycY(),Y=j8().lspRecommendationNeverPlugins??[],$=[];for(let[O,w]of _){if(!w.extensions.has(K))continue;if(Y.includes(O)){N(`[lspRecommendation] Skipping ${O} (in never suggest list)`);continue}if(Zb(O)){N(`[lspRecommendation] Skipping ${O} (already installed)`);continue}$.push({info:w,pluginId:O})}let A=[];for(let{info:O,pluginId:w}of $)if(await MsK(O.command))A.push({info:O,pluginId:w}),N(`[lspRecommendation] Binary '${O.command}' found for ${w}`);else N(`[lspRecommendation] Skipping ${w} (binary '${O.command}' not found)`);return A.sort((O,w)=>{if(O.info.isOfficial&&!w.info.isOfficial)return-1;if(!O.info.isOfficial&&w.info.isOfficial)return 1;return 0}),A.map(({info:O,pluginId:w})=>({pluginId:w,pluginName:O.entry.name,marketplaceName:O.marketplaceName,description:O.entry.description,isOfficial:O.isOfficial,extensions:Array.from(O.extensions),command:O.command}))}function fsK(q){b8((K)=>{let _=K.lspRecommendationNeverPlugins??[];if(_.includes(q))return K;return{...K,lspRecommendationNeverPlugins:[..._,q]}}),N(`[lspRecommendation] Added ${q} to never suggest`)}function ZsK(){b8((q)=>{let K=(q.lspRecommendationIgnoredCount??0)+1;return{...q,lspRecommendationIgnoredCount:K}}),N("[lspRecommendation] Incremented ignored count")}function EcY(){let q=j8();return q.lspRecommendationDisabled===!0||(q.lspRecommendationIgnoredCount??0)>=kcY}var kcY=5;var GsK=y(()=>{XsK();V1();_8();pX();Nw();BZ()});function cc8(){let q=z6(6),[K,_]=ns.useState(null),z=ns.useRef(!1),Y;if(q[0]!==K)Y=(j)=>{if(z5())return;if(K)return;if(z.current)return;z.current=!0,j().then((H)=>{if(H)_(H)}).catch(H6).finally(()=>{z.current=!1})},q[0]=K,q[1]=Y;else Y=q[1];let $=Y,A;if(q[2]===Symbol.for("react.memo_cache_sentinel"))A=()=>_(null),q[2]=A;else A=q[2];let O=A,w;if(q[3]!==K||q[4]!==$)w={recommendation:K,clearRecommendation:O,tryResolve:$},q[3]=K,q[4]=$,q[5]=w;else w=q[5];return w}async function lc8(q,K,_,z,Y){try{let $=await aG(q);if(!$)throw Error(`Plugin ${q} not found in marketplace`);await Y($),z({key:`${_}-installed`,jsx:ns.createElement(k,{color:"success"},t6.tick," ",K," installed · restart to apply"),priority:"immediate",timeoutMs:5000})}catch($){H6($),z({key:`${_}-install-failed`,jsx:ns.createElement(k,{color:"error"},"Failed to install ",K),priority:"immediate",timeoutMs:5000})}}var ns;var KA7=y(()=>{q8();bq();v8();s6();E8();Nw();ns=O6(D6(),1)});import{extname as LcY,join as RcY}from"path";function TsK(){let q=z6(12),K=P8(CcY),{addNotification:_}=PK(),z;if(q[0]===Symbol.for("react.memo_cache_sentinel"))z=new Set,q[0]=z;else z=q[0];let Y=nc8.useRef(z),{recommendation:$,clearRecommendation:A,tryResolve:O}=cc8(),w,j;if(q[1]!==K||q[2]!==O)w=()=>{O(async()=>{if(Ui8())return null;let X=[];for(let P of K)if(!Y.current.has(P))Y.current.add(P),X.push(P);for(let P of X)try{let D=(await DsK(P))[0];if(D)return N(`[useLspPluginRecommendation] Found match: ${D.pluginName} for ${P}`),Qi8(!0),{pluginId:D.pluginId,pluginName:D.pluginName,pluginDescription:D.description,fileExtension:LcY(P),shownAt:Date.now()}}catch(W){H6(W)}return null})},j=[K,O],q[1]=K,q[2]=O,q[3]=w,q[4]=j;else w=q[3],j=q[4];nc8.useEffect(w,j);let H;if(q[5]!==_||q[6]!==A||q[7]!==$)H=(X)=>{if(!$)return;let{pluginId:P,pluginName:W,shownAt:D}=$;N(`[useLspPluginRecommendation] User response: ${X} for ${W}`);q:switch(X){case"yes":{lc8(P,W,"lsp-plugin",_,async(f)=>{N(`[useLspPluginRecommendation] Installing plugin: ${P}`);let G=typeof f.entry.source==="string"?RcY(f.marketplaceInstallLocation,f.entry.source):void 0;await U18(P,f.entry,"user",void 0,G);let Z=v1("userSettings");W7("userSettings",{enabledPlugins:{...Z?.enabledPlugins,[P]:!0}}),N(`[useLspPluginRecommendation] Plugin installed: ${P}`)});break q}case"no":{let f=Date.now()-D;if(f>=hcY)N(`[useLspPluginRecommendation] Timeout detected (${f}ms), incrementing ignored count`),ZsK();break q}case"never":{fsK(P);break q}case"disable":b8(ScY)}A()},q[5]=_,q[6]=A,q[7]=$,q[8]=H;else H=q[8];let J=H,M;if(q[9]!==J||q[10]!==$)M={recommendation:$,handleResponse:J},q[9]=J,q[10]=$,q[11]=M;else M=q[11];return M}function ScY(q){if(q.lspRecommendationDisabled)return q;return{...q,lspRecommendationDisabled:!0}}function CcY(q){return q.fileHistory.trackedFiles}var nc8,hcY=28000;var vsK=y(()=>{q8();v8();h$();C7();V1();_8();E8();GsK();_56();U1();KA7();nc8=O6(D6(),1)});function ksK({pluginName:q,pluginDescription:K,fileExtension:_,onResponse:z}){let Y=M9.useRef(z);Y.current=z,M9.useEffect(()=>{let O=setTimeout((w)=>w.current("no"),bcY,Y);return()=>clearTimeout(O)},[]);function $(O){switch(O){case"yes":z("yes");break;case"no":z("no");break;case"never":z("never");break;case"disable":z("disable");break}}return M9.createElement(HY,{title:"LSP Plugin Recommendation"},M9.createElement(u,{flexDirection:"column",paddingX:2,paddingY:1},M9.createElement(u,{marginBottom:1},M9.createElement(k,{dimColor:!0},"LSP provides code intelligence like go-to-definition and error checking")),M9.createElement(u,null,M9.createElement(k,{dimColor:!0},"Plugin:"),M9.createElement(k,null," ",q)),K&&M9.createElement(u,null,M9.createElement(k,{dimColor:!0},K)),M9.createElement(u,null,M9.createElement(k,{dimColor:!0},"Triggered by:"),M9.createElement(k,null," ",_," files")),M9.createElement(u,{marginTop:1},M9.createElement(k,null,"Would you like to install this LSP plugin?")),M9.createElement(u,null,M9.createElement(H1,{options:[{label:M9.createElement(k,null,"Yes, install ",M9.createElement(k,{bold:!0},q)),value:"yes"},{label:"No, not now",value:"no"},{label:M9.createElement(k,null,"Never for ",M9.createElement(k,{bold:!0},q)),value:"never"},{label:"Disable all LSP recommendations",value:"disable"}],onChange:$,onCancel:()=>z("no")}))))}var M9,bcY=30000;var VsK=y(()=>{s6();p3();GD();M9=O6(D6(),1)});function NsK(){let q=z6(11),K=ic8.useSyncExternalStore(Q_K,ja1),{addNotification:_}=PK(),{recommendation:z,clearRecommendation:Y,tryResolve:$}=cc8(),A,O;if(q[0]!==K||q[1]!==$)A=()=>{if(!K)return;$(async()=>{let J=await l_K(K);if(J)N(`[useClaudeCodeHintRecommendation] surfacing ${J.pluginId} from ${J.sourceCommand}`),U_K();if(ja1()===K)F_K();return J})},O=[K,$],q[0]=K,q[1]=$,q[2]=A,q[3]=O;else A=q[2],O=q[3];ic8.useEffect(A,O);let w;if(q[4]!==_||q[5]!==Y||q[6]!==z)w=(J)=>{if(!z)return;n_K(z.pluginId),d("tengu_plugin_hint_response",{_PROTO_plugin_name:z.pluginName,_PROTO_marketplace_name:z.marketplaceName,response:J});q:switch(J){case"yes":{let{pluginId:M,pluginName:X,marketplaceName:P}=z;lc8(M,X,"hint-plugin",_,async(W)=>{let D=await K56({pluginId:M,entry:W.entry,marketplaceName:P,scope:"user",trigger:"hint"});if(!D.success)throw Error(D.error)});break q}case"disable":{i_K();break q}case"no":}Y()},q[4]=_,q[5]=Y,q[6]=z,q[7]=w;else w=q[7];let j=w,H;if(q[8]!==j||q[9]!==z)H={recommendation:z,handleResponse:j},q[8]=j,q[9]=z,q[10]=H;else H=q[10];return H}var ic8;var ysK=y(()=>{q8();h$();k8();b68();_8();wI8();_56();KA7();ic8=O6(D6(),1)});function EsK({pluginName:q,pluginDescription:K,marketplaceName:_,sourceCommand:z,onResponse:Y}){let $=F9.useRef(Y);$.current=Y,F9.useEffect(()=>{let w=setTimeout((j)=>j.current("no"),xcY,$);return()=>clearTimeout(w)},[]);function A(w){switch(w){case"yes":Y("yes");break;case"disable":Y("disable");break;default:Y("no")}}return F9.createElement(HY,{title:"Plugin Recommendation"},F9.createElement(u,{flexDirection:"column",paddingX:2,paddingY:1},F9.createElement(u,{marginBottom:1},F9.createElement(k,{dimColor:!0},"The ",F9.createElement(k,{bold:!0},z)," command suggests installing a plugin.")),F9.createElement(u,null,F9.createElement(k,{dimColor:!0},"Plugin:"),F9.createElement(k,null," ",q)),F9.createElement(u,null,F9.createElement(k,{dimColor:!0},"Marketplace:"),F9.createElement(k,null," ",_)),K&&F9.createElement(u,null,F9.createElement(k,{dimColor:!0},K)),F9.createElement(u,{marginTop:1},F9.createElement(k,null,"Would you like to install it?")),F9.createElement(u,null,F9.createElement(H1,{options:[{label:F9.createElement(k,null,"Yes, install ",F9.createElement(k,{bold:!0},q)),value:"yes"},{label:"No",value:"no"},{label:"No, and don't show plugin installation hints again",value:"disable"}],onChange:A,onCancel:()=>Y("no")}))))}var F9,xcY=30000;var LsK=y(()=>{s6();p3();GD();F9=O6(D6(),1)});function hsK(){let q=z6(20),{addNotification:K}=PK(),_=P8(mcY),z;q:{if(!_){let W;if(q[0]===Symbol.for("react.memo_cache_sentinel"))W={totalFailed:0,failedMarketplacesCount:0,failedPluginsCount:0},q[0]=W;else W=q[0];z=W;break q}let j;if(q[1]!==_.marketplaces)j=_.marketplaces.filter(ucY),q[1]=_.marketplaces,q[2]=j;else j=q[2];let H=j,J;if(q[3]!==_.plugins)J=_.plugins.filter(IcY),q[3]=_.plugins,q[4]=J;else J=q[4];let M=J,X=H.length+M.length,P;if(q[5]!==H.length||q[6]!==M.length||q[7]!==X)P={totalFailed:X,failedMarketplacesCount:H.length,failedPluginsCount:M.length},q[5]=H.length,q[6]=M.length,q[7]=X,q[8]=P;else P=q[8];z=P}let{totalFailed:Y,failedMarketplacesCount:$,failedPluginsCount:A}=z,O;if(q[9]!==K||q[10]!==$||q[11]!==A||q[12]!==_||q[13]!==Y)O=()=>{if(z5())return;if(!_){N("No installation status to monitor");return}if(Y===0)return;if(N(`Plugin installation status: ${$} failed marketplaces, ${A} failed plugins`),Y===0)return;N(`Adding notification for ${Y} failed installations`),K({key:"plugin-install-failed",jsx:nd.createElement(nd.Fragment,null,nd.createElement(k,{color:"error"},Y," ",A7(Y,"plugin")," failed to install"),nd.createElement(k,{dimColor:!0}," · /plugin for details")),priority:"medium"})},q[9]=K,q[10]=$,q[11]=A,q[12]=_,q[13]=Y,q[14]=O;else O=q[14];let w;if(q[15]!==K||q[16]!==$||q[17]!==A||q[18]!==Y)w=[K,Y,$,A],q[15]=K,q[16]=$,q[17]=A,q[18]=Y,q[19]=w;else w=q[19];RsK.useEffect(O,w)}function IcY(q){return q.status==="failed"}function ucY(q){return q.status==="failed"}function mcY(q){return q.plugins.installationStatus}var nd,RsK;var SsK=y(()=>{q8();v8();h$();s6();C7();_8();nd=O6(D6(),1),RsK=O6(D6(),1)});function CsK(){let q=z6(7),{addNotification:K}=PK(),_;if(q[0]===Symbol.for("react.memo_cache_sentinel"))_=[],q[0]=_;else _=q[0];let[z,Y]=AK8.useState(_),$,A;if(q[1]===Symbol.for("react.memo_cache_sentinel"))$=()=>{if(z5())return;return DyK((H)=>{N(`Plugin autoupdate notification: ${H.length} plugin(s) updated`),Y(H)})},A=[],q[1]=$,q[2]=A;else $=q[1],A=q[2];AK8.useEffect($,A);let O,w;if(q[3]!==K||q[4]!==z)O=()=>{if(z5())return;if(z.length===0)return;let j=z.map(pcY),H=j.length<=2?j.join(" and "):`${j.length} plugins`;K({key:"plugin-autoupdate-restart",jsx:id.createElement(id.Fragment,null,id.createElement(k,{color:"success"},j.length===1?"Plugin":"Plugins"," updated:"," ",H),id.createElement(k,{dimColor:!0}," · Run /reload-plugins to apply")),priority:"low",timeoutMs:1e4}),N(`Showing plugin autoupdate notification for: ${j.join(", ")}`)},w=[z,K],q[3]=K,q[4]=z,q[5]=O,q[6]=w;else O=q[5],w=q[6];AK8.useEffect(O,w)}function pcY(q){let K=q.indexOf("@");return K>0?q.substring(0,K):q}var id,AK8;var bsK=y(()=>{q8();v8();h$();s6();_8();WF8();id=O6(D6(),1),AK8=O6(D6(),1)});import{isAbsolute as BcY,resolve as gcY}from"path";function _A7(q,K,_){let z=[],Y=[],$=[];for(let[A,O]of Object.entries(q)){let w=K[A],j=xsK(O.source,_?.projectRoot);if(!w)z.push(A);else if(O.sourceIsFallback)$.push(A);else if(!QJ(j,w.source))Y.push({name:A,declaredSource:j,materializedSource:w.source});else $.push(A)}return{missing:z,sourceChanged:Y,upToDate:$}}async function rc8(q){let K=tK6();if(Object.keys(K).length===0)return{installed:[],updated:[],failed:[],upToDate:[],skipped:[]};let _;try{_=await r_()}catch(H){H6(H),_={}}let z=_A7(K,_,{projectRoot:r1()}),Y=[...z.missing.map((H)=>({name:H,source:xsK(K[H].source),action:"install"})),...z.sourceChanged.map(({name:H,declaredSource:J})=>({name:H,source:J,action:"update"}))],$=[],A=[];for(let H of Y){if(q?.skip?.(H.name,H.source)){$.push(H.name);continue}if(H.action==="update"&&SB(H.source)&&!await u5(H.source.path)){N(`[reconcile] '${H.name}' declared path does not exist; keeping materialized entry`),$.push(H.name);continue}A.push(H)}if(A.length===0)return{installed:[],updated:[],failed:[],upToDate:z.upToDate,skipped:$};N(`[reconcile] ${A.length} marketplace(s): ${A.map((H)=>`${H.name}(${H.action})`).join(", ")}`);let O=[],w=[],j=[];for(let H=0;H<A.length;H++){let{name:J,source:M,action:X}=A[H];q?.onProgress?.({type:"installing",name:J,action:X,index:H+1,total:A.length});try{let P=await Yd(M);if(X==="install")O.push(J);else w.push(J);q?.onProgress?.({type:"installed",name:J,alreadyMaterialized:P.alreadyMaterialized})}catch(P){let W=d6(P);j.push({name:J,error:W}),q?.onProgress?.({type:"failed",name:J,error:W}),H6(P)}}return{installed:O,updated:w,failed:j,upToDate:z.upToDate,skipped:$}}function xsK(q,K){if((q.source==="directory"||q.source==="file")&&!BcY(q.path)){let _=K??r1(),z=jH(_);return{...q,path:gcY(z??_,q.path)}}return q}var zA7=y(()=>{Ee();v8();_8();y8();bK();E5();E8();Nw();BZ()});function YA7(q,K,_,z){q((Y)=>({...Y,plugins:{...Y.plugins,installationStatus:{...Y.plugins.installationStatus,marketplaces:Y.plugins.installationStatus.marketplaces.map(($)=>$.name===K?{...$,status:_,error:z}:$)}}}))}async function IsK(q){N("performBackgroundPluginInstallations called");try{let K=tK6(),_=await r_().catch(()=>({})),z=_A7(K,_),Y=[...z.missing,...z.sourceChanged.map((O)=>O.name)];if(q((O)=>({...O,plugins:{...O.plugins,installationStatus:{marketplaces:Y.map((w)=>({name:w,status:"pending"})),plugins:[]}}})),Y.length===0)return;N(`Installing ${Y.length} marketplace(s) in background`);let $=await rc8({onProgress:(O)=>{switch(O.type){case"installing":YA7(q,O.name,"installing");break;case"installed":YA7(q,O.name,"installed");break;case"failed":YA7(q,O.name,"failed",O.error);break}}}),A={installed_count:$.installed.length,updated_count:$.updated.length,failed_count:$.failed.length,up_to_date_count:$.upToDate.length};if(d("tengu_marketplace_background_install",A),c8("info","tengu_marketplace_background_install",A),$.installed.length>0){zd(),N(`Auto-refreshing plugins after ${$.installed.length} new marketplace(s) installed`);try{await XJ6(q)}catch(O){H6(O),N(`Auto-refresh failed, falling back to needsRefresh: ${O}`,{level:"warn"}),Yk("performBackgroundPluginInstallations: auto-refresh failed"),q((w)=>{if(w.plugins.needsRefresh)return w;return{...w,plugins:{...w.plugins,needsRefresh:!0}}})}}else if($.updated.length>0)zd(),Yk("performBackgroundPluginInstallations: marketplaces reconciled"),q((O)=>{if(O.plugins.needsRefresh)return O;return{...O,plugins:{...O.plugins,needsRefresh:!0}}})}catch(K){H6(K)}}var usK=y(()=>{_8();oY();E8();Nw();bj();zA7();gU8();k8()});async function msK(q){if(N("performStartupChecks called"),!l$()){N("Trust not accepted for current directory - skipping plugin installations");return}try{if(N("Starting background plugin installations"),await GB8())zd(),Yk("performStartupChecks: seed marketplaces changed"),q((_)=>{if(_.plugins.needsRefresh)return _;return{..._,plugins:{..._.plugins,needsRefresh:!0}}});await IsK(q)}catch(K){N(`Error initiating background plugin installations: ${K}`)}}var psK=y(()=>{usK();V1();_8();Nw();bj()});function BsK(){let q=z6(11),K;if(q[0]===Symbol.for("react.memo_cache_sentinel"))K=FW.getInstance().getStatus(),q[0]=K;else K=q[0];let[_,z]=bR.useState(K),Y,$;if(q[1]===Symbol.for("react.memo_cache_sentinel"))Y=()=>{return FW.getInstance().subscribe(z)},$=[],q[1]=Y,q[2]=$;else Y=q[1],$=q[2];if(bR.useEffect(Y,$),!_.isAuthenticating&&!_.error&&_.output.length===0)return null;if(!_.isAuthenticating&&!_.error)return null;let A;if(q[3]===Symbol.for("react.memo_cache_sentinel"))A=bR.default.createElement(k,{bold:!0,color:"permission"},"Cloud Authentication"),q[3]=A;else A=q[3];let O;if(q[4]!==_.output)O=_.output.length>0&&bR.default.createElement(u,{flexDirection:"column",marginTop:1},_.output.slice(-5).map(UcY)),q[4]=_.output,q[5]=O;else O=q[5];let w;if(q[6]!==_.error)w=_.error&&bR.default.createElement(u,{marginTop:1},bR.default.createElement(k,{color:"error"},_.error)),q[6]=_.error,q[7]=w;else w=q[7];let j;if(q[8]!==O||q[9]!==w)j=bR.default.createElement(u,{flexDirection:"column",borderStyle:"round",borderColor:"permission",paddingX:1,marginY:1},A,O,w),q[8]=O,q[9]=w,q[10]=j;else j=q[10];return j}function UcY(q,K){let _=q.match(FcY);if(!_)return bR.default.createElement(k,{key:K,dimColor:!0},q);let z=_[0],Y=_.index??0,$=q.slice(0,Y),A=q.slice(Y+z.length);return bR.default.createElement(k,{key:K,dimColor:!0},$,bR.default.createElement(hq,{url:z},z),A)}var bR,FcY;var gsK=y(()=>{q8();s6();uJ8();bR=O6(D6(),1),FcY=/https?:\/\/\S+/});function FsK(q){let K=z6(17),{addNotification:_}=PK(),z=e46(),Y;if(K[0]!==z||K[1]!==q)Y=Cm1(z,q),K[0]=z,K[1]=q,K[2]=Y;else Y=K[2];let $=Y,A;if(K[3]!==z)A=bm1(z),K[3]=z,K[4]=A;else A=K[4];let O=A,w=MM6.useRef(null),j;if(K[5]===Symbol.for("react.memo_cache_sentinel"))j=yK(),K[5]=j;else j=K[5];let H=j,J;if(K[6]===Symbol.for("react.memo_cache_sentinel"))J=fg(),K[6]=J;else J=K[6];let M=J,X=H==="team"||H==="enterprise",[P,W]=MM6.useState(!1),D,f;if(K[7]!==_||K[8]!==z.isUsingOverage||K[9]!==P||K[10]!==O)D=()=>{if(z5())return;if(z.isUsingOverage&&!P&&(!X||M))_({key:"limit-reached",text:O,priority:"immediate"}),W(!0);else if(!z.isUsingOverage&&P)W(!1)},f=[z.isUsingOverage,O,P,_,M,X],K[7]=_,K[8]=z.isUsingOverage,K[9]=P,K[10]=O,K[11]=D,K[12]=f;else D=K[11],f=K[12];MM6.useEffect(D,f);let G,Z;if(K[13]!==_||K[14]!==$)G=()=>{if(z5())return;if($&&$!==w.current)w.current=$,_({key:"rate-limit-warning",jsx:OK8.createElement(k,null,OK8.createElement(k,{color:"warning"},$)),priority:"high"})},Z=[$,_],K[13]=_,K[14]=$,K[15]=G,K[16]=Z;else G=K[15],Z=K[16];MM6.useEffect(G,Z)}var OK8,MM6;var UsK=y(()=>{q8();h$();s6();ZU();Ue6();G7();$n();v8();OK8=O6(D6(),1),MM6=O6(D6(),1)});function dcY(q){let K=q.toLowerCase(),_=E7();for(let[z,Y]of Object.entries(QcY)){let $=Y.retirementDates[_];if(!K.includes(z)||!$)continue;return{isDeprecated:!0,modelName:Y.modelName,retirementDate:$}}return{isDeprecated:!1}}function oc8(q){if(!q)return null;let K=dcY(q);if(!K.isDeprecated)return null;return`⚠ ${K.modelName} will be retired on ${K.retirementDate}. Consider switching to a newer model.`}var QcY;var $A7=y(()=>{Az();QcY={"claude-3-opus":{modelName:"Claude 3 Opus",retirementDates:{firstParty:"January 5, 2026",bedrock:"January 15, 2026",vertex:"January 5, 2026",foundry:"January 5, 2026"}},"claude-3-7-sonnet":{modelName:"Claude 3.7 Sonnet",retirementDates:{firstParty:"February 19, 2026",bedrock:"April 28, 2026",vertex:"May 11, 2026",foundry:"February 19, 2026"}},"claude-3-5-haiku":{modelName:"Claude 3.5 Haiku",retirementDates:{firstParty:"February 19, 2026",bedrock:null,vertex:null,foundry:null}}}});function QsK(q){let K=z6(4),{addNotification:_}=PK(),z=ac8.useRef(null),Y,$;if(K[0]!==_||K[1]!==q)Y=()=>{if(z5())return;let A=oc8(q);if(A&&A!==z.current)z.current=A,_({key:"model-deprecation-warning",text:A,color:"warning",priority:"high"});if(!A)z.current=null},$=[q,_],K[0]=_,K[1]=q,K[2]=Y,K[3]=$;else Y=K[2],$=K[3];ac8.useEffect(Y,$)}var ac8;var dsK=y(()=>{q8();h$();$A7();v8();ac8=O6(D6(),1)});function csK(){zx(lcY)}async function lcY(){if(jj()||i6(process.env.DISABLE_INSTALLATION_CHECKS))return null;if(await Ro()==="development")return null;return{timeoutMs:15000,key:"npm-deprecation-warning",text:ccY,color:"warning",priority:"high"}}var ccY="Claude Code has switched from npm to native installer. Run `claude install` or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.";var lsK=y(()=>{u46();m8();HM6()});function nsK(q){let K=z6(26),{ideSelection:_,mcpClients:z,ideInstallationStatus:Y}=q,{addNotification:$,removeNotification:A}=PK(),{status:O,ideName:w}=ZC6(z),j=rd.useRef(!1),H;if(K[0]!==Y)H=Y?_m(Y?.ideType):!1,K[0]=Y,K[1]=H;else H=K[1];let J=H,M=Y?.error||J,X=O==="connected"&&(_?.filePath||_?.text&&_.lineCount>0),P=O==="connected"&&!X,W=M&&!J&&!P&&!X,D=M&&J&&!P&&!X,f,G;if(K[2]!==$||K[3]!==O||K[4]!==A||K[5]!==D)f=()=>{if(z5())return;if(BP()||O!==null||D){A("ide-status-hint");return}if(j.current||(j8().ideHintShownCount??0)>=ncY)return;let R=setTimeout(icY,3000,j,$);return()=>clearTimeout(R)},G=[$,A,O,D],K[2]=$,K[3]=O,K[4]=A,K[5]=D,K[6]=f,K[7]=G;else f=K[6],G=K[7];rd.useEffect(f,G);let Z,T;if(K[8]!==$||K[9]!==w||K[10]!==O||K[11]!==A||K[12]!==W||K[13]!==D)Z=()=>{if(z5())return;if(W||D||O!=="disconnected"||!w){A("ide-status-disconnected");return}$({key:"ide-status-disconnected",text:`${w} disconnected`,color:"error",priority:"medium"})},T=[$,A,O,w,W,D],K[8]=$,K[9]=w,K[10]=O,K[11]=A,K[12]=W,K[13]=D,K[14]=Z,K[15]=T;else Z=K[14],T=K[15];rd.useEffect(Z,T);let v,V;if(K[16]!==$||K[17]!==A||K[18]!==D)v=()=>{if(z5())return;if(!D){A("ide-status-jetbrains-disconnected");return}$({key:"ide-status-jetbrains-disconnected",text:"IDE plugin not connected · /status for info",priority:"medium"})},V=[$,A,D],K[16]=$,K[17]=A,K[18]=D,K[19]=v,K[20]=V;else v=K[19],V=K[20];rd.useEffect(v,V);let E,S;if(K[21]!==$||K[22]!==A||K[23]!==W)E=()=>{if(z5())return;if(!W){A("ide-status-install-error");return}$({key:"ide-status-install-error",text:"IDE extension install failed (see /status for info)",color:"error",priority:"medium"})},S=[$,A,W],K[21]=$,K[22]=A,K[23]=W,K[24]=E,K[25]=S;else E=K[24],S=K[25];rd.useEffect(E,S)}function icY(q,K){NN6(!0).then((_)=>{let z=_[0]?.name;if(z&&!q.current)q.current=!0,b8(rcY),K({key:"ide-status-hint",jsx:rd.default.createElement(k,{dimColor:!0},"/ide for ",rd.default.createElement(k,{color:"ide"},z)),priority:"low"})})}function rcY(q){return{...q,ideHintShownCount:(q.ideHintShownCount??0)+1}}var rd,ncY=5;var isK=y(()=>{q8();h$();s6();V1();U2();v8();hd8();rd=O6(D6(),1)});function osK(){zx(acY)}function acY(){let q=j8(),K=[];for(let _ of ocY){let z=_(q);if(z)K.push(z)}return K.length>0?K:null}function rsK(q){return q!==void 0&&Date.now()-q<3000}var ocY;var asK=y(()=>{V1();HM6();ocY=[(q)=>{if(!rsK(q.sonnet45To46MigrationTimestamp))return;return{key:"sonnet-46-update",text:"Model updated to Sonnet 4.6",color:"suggestion",priority:"high",timeoutMs:3000}},(q)=>{let K=Boolean(q.legacyOpusMigrationTimestamp),_=q.legacyOpusMigrationTimestamp??q.opusProMigrationTimestamp;if(!rsK(_))return;return{key:"opus-pro-update",text:K?"Model updated to Opus 4.6 · Set CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=1 to opt out":"Model updated to Opus 4.6",color:"suggestion",priority:"high",timeoutMs:K?8000:3000}}]});function ssK(){zx(tcY)}async function tcY(){if((j8().subscriptionNoticeCount??0)>=scY)return null;let q=await qlY();if(q===null)return null;return b8(ecY),d("tengu_switch_to_subscription_notice_shown",{}),{key:"switch-to-subscription",jsx:wK8.createElement(k,{color:"suggestion"},"Use your existing Claude ",q," plan with Claude Code",wK8.createElement(k,{color:"text",dimColor:!0}," ","· /login to activate")),priority:"low"}}function ecY(q){return{...q,subscriptionNoticeCount:(q.subscriptionNoticeCount??0)+1}}async function qlY(){if(d7())return null;let q=await wYq();if(!q)return null;if(q.account.has_claude_max)return"Max";if(q.account.has_claude_pro)return"Pro";return null}var wK8,scY=3;var tsK=y(()=>{v06();G7();s6();k8();V1();HM6();wK8=O6(D6(),1)});function esK(q){if(!("text"in q))return 1;let K=q.text.match(/^(\d+)/);return K?.[1]?parseInt(K[1],10):1}function KlY(q,K){return qtK(esK(q)+1)}function qtK(q){return{key:"teammate-spawn",text:q===1?"1 agent spawned":`${q} agents spawned`,priority:"low",timeoutMs:5000,fold:KlY}}function _lY(q,K){return KtK(esK(q)+1)}function KtK(q){return{key:"teammate-shutdown",text:q===1?"1 agent shut down":`${q} agents shut down`,priority:"low",timeoutMs:5000,fold:_lY}}function _tK(){let q=P8((Y)=>Y.tasks),{addNotification:K}=PK(),_=jK8.useRef(new Set),z=jK8.useRef(new Set);jK8.useEffect(()=>{if(z5())return;for(let[Y,$]of Object.entries(q)){if(!xH($))continue;if($.status==="running"&&!_.current.has(Y))_.current.add(Y),K(qtK(1));if($.status==="completed"&&!z.current.has(Y))z.current.add(Y),K(KtK(1))}},[q,K])}var jK8;var ztK=y(()=>{v8();h$();C7();jK8=O6(D6(),1)});function OtK(){let q=z6(13),{addNotification:K}=PK(),_=P8(AlY),z=s7(),Y,$;if(q[0]!==K||q[1]!==_||q[2]!==z)Y=()=>{if(z5())return;if(!BK())return;return V2q((H)=>{if(H)K({key:AtK,color:"fastMode",priority:"immediate",text:"Fast mode is now available · /fast to turn on"});else if(_)z($lY),K({key:AtK,color:"warning",priority:"immediate",text:"Fast mode has been disabled by your organization"})})},$=[K,_,z],q[0]=K,q[1]=_,q[2]=z,q[3]=Y,q[4]=$;else Y=q[3],$=q[4];sc8.useEffect(Y,$);let A,O;if(q[5]!==K||q[6]!==z)A=()=>{if(z5())return;if(!BK())return;return v2q((H)=>{z(YlY),K({key:zlY,color:"warning",priority:"immediate",text:H})})},O=[K,z],q[5]=K,q[6]=z,q[7]=A,q[8]=O;else A=q[7],O=q[8];sc8.useEffect(A,O);let w,j;if(q[9]!==K||q[10]!==_)w=()=>{if(z5())return;if(!_)return;let H=D2q((M,X)=>{let P=I5(M-Date.now(),{hideTrailingZeros:!0}),W=OlY(X,P);K({key:YtK,invalidates:[$tK],text:W,color:"warning",priority:"immediate"})}),J=f2q(()=>{K({key:$tK,invalidates:[YtK],color:"fastMode",text:"Fast limit reset · now using fast mode",priority:"immediate"})});return()=>{H(),J()}},j=[K,_],q[9]=K,q[10]=_,q[11]=w,q[12]=j;else w=q[11],j=q[12];sc8.useEffect(w,j)}function YlY(q){return{...q,fastMode:!1}}function $lY(q){return{...q,fastMode:!1}}function AlY(q){return q.fastMode}function OlY(q,K){switch(q){case"overloaded":return`Fast mode overloaded and is temporarily unavailable · resets in ${K}`;case"rate_limit":return`Fast limit reached and temporarily disabled · resets in ${K}`}}var sc8,YtK="fast-mode-cooldown-started",$tK="fast-mode-cooldown-expired",AtK="fast-mode-org-changed",zlY="fast-mode-overage-rejected";var wtK=y(()=>{q8();h$();C7();xf();U7();v8();sc8=O6(D6(),1)});function jtK(q){let K=z6(8),{onRun:_,onCancel:z,reason:Y}=q,$=tc8.useRef(!1),A;if(K[0]===Symbol.for("react.memo_cache_sentinel"))A={context:"Confirmation"},K[0]=A;else A=K[0];P1("confirm:no",z,A);let O,w;if(K[1]!==_)O=()=>{if(!$.current)$.current=!0,_()},w=[_],K[1]=_,K[2]=O,K[3]=w;else O=K[2],w=K[3];tc8.useEffect(O,w);let j;if(K[4]===Symbol.for("react.memo_cache_sentinel"))j=GZ.createElement(u,null,GZ.createElement(k,{bold:!0},"Running feedback capture...")),K[4]=j;else j=K[4];let H;if(K[5]===Symbol.for("react.memo_cache_sentinel"))H=GZ.createElement(u,null,GZ.createElement(k,{dimColor:!0},"Press ",GZ.createElement(t8,{shortcut:"Esc",action:"cancel"})," anytime")),K[5]=H;else H=K[5];let J;if(K[6]!==Y)J=GZ.createElement(u,{flexDirection:"column",marginTop:1},j,H,GZ.createElement(u,null,GZ.createElement(k,{dimColor:!0},"Reason: ",Y))),K[6]=Y,K[7]=J;else J=K[7];return J}function HtK(q){return!1;switch(q){case"feedback_survey_bad":return!1;case"feedback_survey_good":return!1;default:return!1}}function JtK(q){return"/issue"}function MtK(q){switch(q){case"feedback_survey_bad":return'You responded "Bad" to the feedback survey';case"feedback_survey_good":return'You responded "Good" to the feedback survey';default:return"Unknown reason"}}var GZ,tc8;var XtK=y(()=>{q8();rK();s6();Oq();GZ=O6(D6(),1),tc8=O6(D6(),1)});function PtK(){return null}function HlY(q){for(let K of q){if(K.type!=="assistant")continue;let _=K.message.content;if(!Array.isArray(_))continue;for(let z of _){if(z.type!=="tool_use"||!("name"in z))continue;let Y=z.name;if(Y.startsWith("mcp__"))return!1;if(Y===_q){let A=z.input?.command||"";if(wlY.some((O)=>O.test(A)))return!1}}}return!0}function JlY(q){for(let K=q.length-1;K>=0;K--){let _=q[K];if(_.type!=="user")continue;let z=iw6(_);if(!z)continue;return jlY.some((Y)=>Y.test(z))}return!1}function WtK(q,K){return!1}var HK8,wlY,jlY,MlY=3,XlY=1800000;var DtK=y(()=>{i1();HK8=O6(D6(),1),wlY=[/\bcurl\b/,/\bwget\b/,/\bssh\b/,/\bkubectl\b/,/\bsrun\b/,/\bdocker\b/,/\bbq\b/,/\bgsutil\b/,/\bgcloud\b/,/\baws\b/,/\bgit\s+push\b/,/\bgit\s+pull\b/,/\bgit\s+fetch\b/,/\bgh\s+(pr|issue)\b/,/\bnc\b/,/\bncat\b/,/\btelnet\b/,/\bftp\b/],jlY=[/^no[,!]\s/i,/\bthat'?s (wrong|incorrect|not (what|right|correct))\b/i,/\bnot what I (asked|wanted|meant|said)\b/i,/\bI (said|asked|wanted|told you|already said)\b/i,/\bwhy did you\b/i,/\byou should(n'?t| not)? have\b/i,/\byou were supposed to\b/i,/\btry again\b/i,/\b(undo|revert) (that|this|it|what you)\b/i]});var PlY,WlY;var ftK=y(()=>{q8();v8();s6();PlY=O6(D6(),1),WlY=O6(D6(),1)});function AA7(q){let K=z6(7),{children:_,mouseTracking:z}=q,Y=z===void 0?!0:z,$=XM6.useContext(g16),A=XM6.useContext(U16),O,w;if(K[0]!==Y||K[1]!==A)O=()=>{let J=VA.get(process.stdout);if(!A)return;return A(El6+"\x1B[2J\x1B[H"+(Y?HA6:"")),J?.setAltScreenActive(!0,Y),()=>{J?.setAltScreenActive(!1),J?.clearTextSelection(),A((Y?ui:"")+ST6)}},w=[A,Y],K[0]=Y,K[1]=A,K[2]=O,K[3]=w;else O=K[2],w=K[3];XM6.useInsertionEffect(O,w);let j=$?.rows??24,H;if(K[4]!==_||K[5]!==j)H=XM6.default.createElement(Lj,{flexDirection:"column",height:j,width:"100%",flexShrink:0},_),K[4]=_,K[5]=j,K[6]=H;else H=K[6];return H}var XM6;var ZtK=y(()=>{q8();QV();p16();GF();gi();Sl6();XM6=O6(D6(),1)});function GtK(q,K,_){let z=IC6.useRef(!1),Y=IC6.useRef(_);Y.current=_,IC6.useEffect(()=>{if(!K)return;return q.subscribe(()=>{let A=q.getState(),O=q.hasSelection();if(A?.isDragging){z.current=!1;return}if(!O){z.current=!1;return}if(z.current)return;if(!(j8().copyOnSelect??!0))return;let j=q.copySelectionNoClear();if(!j||!j.trim()){z.current=!0;return}z.current=!0,Y.current?.(j)})},[K,q])}function TtK(q){let[K]=Aq();IC6.useEffect(()=>{q.setSelectionBgColor(sW(K).selectionBg)},[q,K])}var IC6;var vtK=y(()=>{AT6();V1();Tu();IC6=O6(D6(),1)});function hlY(q){if(q.wheelUp||q.wheelDown)return!1;if((q.leftArrow||q.rightArrow||q.upArrow||q.downArrow||q.home||q.end||q.pageUp||q.pageDown)&&(q.shift||q.meta||q.super))return!1;return!0}function SlY(q){if(!q.shift||q.meta)return null;if(q.leftArrow)return"left";if(q.rightArrow)return"right";if(q.upArrow)return"up";if(q.downArrow)return"down";if(q.home)return"lineStart";if(q.end)return"lineEnd";return null}function NtK(q,K,_){if(!q.xtermJs){if(q.wheelMode&&_-q.time>VlY)q.wheelMode=!1,q.burstCount=0,q.mult=q.base;if(q.pendingFlip){if(q.pendingFlip=!1,K!==q.dir||_-q.time>GlY)return q.dir=K,q.time=_,q.mult=q.base,Math.floor(q.mult);q.wheelMode=!0}let O=_-q.time;if(K!==q.dir&&q.dir!==0)return q.pendingFlip=!0,q.time=_,0;if(q.dir=K,q.time=_,q.wheelMode)if(O<VtK)if(++q.burstCount>=5)q.wheelMode=!1,q.burstCount=0,q.mult=q.base;else return 1;else q.burstCount=0;if(q.wheelMode){let w=Math.pow(0.5,O/ktK),j=Math.max(vlY,q.base*2),H=1+(q.mult-1)*w+TlY*w;return q.mult=Math.min(j,H,q.mult+klY),Math.floor(q.mult)}if(O>DlY)q.mult=q.base;else{let w=Math.max(ZlY,q.base*2);q.mult=Math.min(w,q.mult+flY)}return Math.floor(q.mult)}let z=_-q.time,Y=K===q.dir;if(q.time=_,q.dir=K,Y&&z<VtK)return 1;if(!Y||z>RlY)q.mult=2,q.frac=0;else{let O=Math.pow(0.5,z/ktK),w=z>=ylY?ElY:LlY;q.mult=Math.min(w,1+(q.mult-1)*O+NlY*O)}let $=q.mult+q.frac,A=Math.floor($);return q.frac=$-A,A}function ClY(){let q=process.env.CLAUDE_CODE_SCROLL_SPEED;if(!q)return 1;let K=parseFloat(q);return Number.isNaN(K)||K<=0?1:Math.min(K,20)}function blY(q=!1,K=1){return{time:0,mult:K,dir:0,xtermJs:q,frac:0,base:K,pendingFlip:!1,wheelMode:!1,burstCount:0}}function ytK(){let q=pi(),K=ClY();return N(`wheel accel: ${q?"decay (xterm.js)":"window (native)"} · base=${K} · TERM_PROGRAM=${process.env.TERM_PROGRAM??"unset"}`),blY(q,K)}function OA7({scrollRef:q,isActive:K,onScroll:_,isModal:z=!1}){let Y=dT6(),{addNotification:$}=PK(),A=rs.useRef(null);function O(H){let J=v64(),M=H.length,X;switch(J){case"native":X=`copied ${M} chars to clipboard`;break;case"tmux-buffer":X=`copied ${M} chars to tmux buffer · paste with prefix + ]`;break;case"osc52":X=`sent ${M} chars via OSC 52 · check terminal clipboard settings if paste fails`;break}$({key:"selection-copied",text:X,color:"suggestion",priority:"immediate",timeoutMs:J==="native"?2000:4000})}function w(){let H=Y.copySelection();if(H)O(H)}function j(H,J){let M=Y.getState();if(!M?.anchor||!M.focus)return;let X=H.getViewportTop(),P=X+H.getViewportHeight()-1;if(M.anchor.row<X||M.anchor.row>P)return;if(M.focus.row<X||M.focus.row>P)return;let W=Math.max(0,H.getScrollHeight()-H.getViewportHeight()),D=H.getScrollTop()+H.getPendingDelta(),f=Math.max(0,Math.min(W,D+J))-D;if(f===0)return;if(f>0)Y.captureScrolledRows(X,X+f-1,"above"),Y.shiftSelection(-f,X,P);else{let G=-f;Y.captureScrolledRows(P-G+1,P,"below"),Y.shiftSelection(G,X,P)}}return o7({"scroll:pageUp":()=>{let H=q.current;if(!H)return;let J=-Math.max(1,Math.floor(H.getViewportHeight()/2));j(H,J);let M=is(H,J);_?.(M,H)},"scroll:pageDown":()=>{let H=q.current;if(!H)return;let J=Math.max(1,Math.floor(H.getViewportHeight()/2));j(H,J);let M=is(H,J);_?.(M,H)},"scroll:lineUp":()=>{Y.clearSelection();let H=q.current;if(!H||H.getScrollHeight()<=H.getViewportHeight())return!1;A.current??=ytK(),BlY(H,NtK(A.current,-1,performance.now())),_?.(!1,H)},"scroll:lineDown":()=>{Y.clearSelection();let H=q.current;if(!H||H.getScrollHeight()<=H.getViewportHeight())return!1;A.current??=ytK();let J=NtK(A.current,1,performance.now()),M=plY(H,J);_?.(M,H)},"scroll:top":()=>{let H=q.current;if(!H)return;j(H,-(H.getScrollTop()+H.getPendingDelta())),H.scrollTo(0),_?.(!1,H)},"scroll:bottom":()=>{let H=q.current;if(!H)return;let J=Math.max(0,H.getScrollHeight()-H.getViewportHeight());j(H,J-(H.getScrollTop()+H.getPendingDelta())),H.scrollTo(J),H.scrollToBottom(),_?.(!0,H)},"selection:copy":w},{context:"Scroll",isActive:K}),o7({"scroll:halfPageUp":()=>{let H=q.current;if(!H)return;let J=-Math.max(1,Math.floor(H.getViewportHeight()/2));j(H,J);let M=is(H,J);_?.(M,H)},"scroll:halfPageDown":()=>{let H=q.current;if(!H)return;let J=Math.max(1,Math.floor(H.getViewportHeight()/2));j(H,J);let M=is(H,J);_?.(M,H)},"scroll:fullPageUp":()=>{let H=q.current;if(!H)return;let J=-Math.max(1,H.getViewportHeight());j(H,J);let M=is(H,J);_?.(M,H)},"scroll:fullPageDown":()=>{let H=q.current;if(!H)return;let J=Math.max(1,H.getViewportHeight());j(H,J);let M=is(H,J);_?.(M,H)}},{context:"Scroll",isActive:K}),k4((H,J,M)=>{let X=q.current;if(!X)return;let P=FlY(X,glY(H,J),(W)=>j(X,W));if(P===null)return;_?.(P,X),M.stopImmediatePropagation()},{isActive:K&&z}),k4((H,J,M)=>{if(!Y.hasSelection())return;if(J.escape){Y.clearSelection(),M.stopImmediatePropagation();return}if(J.ctrl&&!J.shift&&!J.meta&&H==="c"){w(),M.stopImmediatePropagation();return}let X=SlY(J);if(X){Y.moveFocus(X),M.stopImmediatePropagation();return}if(hlY(J))Y.clearSelection()},{isActive:K}),ulY(q,Y,K,_),GtK(Y,K,O),TtK(Y),null}function ulY(q,K,_,z){let Y=rs.useRef(null),$=rs.useRef(0),A=rs.useRef(0),O=rs.useRef(0),w=rs.useRef(z);w.current=z,rs.useEffect(()=>{if(!_)return;function j(){if($.current=0,Y.current)clearInterval(Y.current),Y.current=null}function H(){let P=K.getState(),W=q.current,D=$.current;if(!P?.isDragging||!P.focus||!W||D===0||++O.current>IlY){j();return}if(W.getPendingDelta()!==0)return;let f=W.getViewportTop(),G=f+W.getViewportHeight()-1;if(D<0){if(W.getScrollTop()<=0){j();return}let Z=Math.min(ec8,W.getScrollTop());K.captureScrolledRows(G-Z+1,G,"below"),K.shiftAnchor(Z,0,G),W.scrollBy(-ec8)}else{let Z=Math.max(0,W.getScrollHeight()-W.getViewportHeight());if(W.getScrollTop()>=Z){j();return}let T=Math.min(ec8,Z-W.getScrollTop());K.captureScrolledRows(f,f+T-1,"above"),K.shiftAnchor(-T,f,G),W.scrollBy(ec8)}w.current?.(!1,W)}function J(P){if(A.current=P,$.current===P)return;if(j(),$.current=P,O.current=0,H(),$.current===P)Y.current=setInterval(H,xlY)}function M(){let P=q.current;if(!P){j();return}let W=P.getViewportTop(),D=W+P.getViewportHeight()-1,f=K.getState();if(!f?.isDragging||f.scrolledOffAbove.length===0&&f.scrolledOffBelow.length===0)A.current=0;let G=mlY(f,W,D,A.current);if(G===0){if(A.current!==0&&f?.focus){let Z=f.focus.row<W?-1:f.focus.row>D?1:0;if(Z!==0&&Z!==A.current)f.scrolledOffAbove=[],f.scrolledOffBelow=[],f.scrolledOffAboveSW=[],f.scrolledOffBelowSW=[],A.current=0}j()}else J(G)}let X=K.subscribe(M);return()=>{X(),j(),A.current=0}},[_,q,K])}function mlY(q,K,_,z=0){if(!q?.isDragging||!q.anchor||!q.focus)return 0;let Y=q.focus.row,$=Y<K?-1:Y>_?1:0;if(z!==0)return $===z?$:0;if(q.anchor.row<K||q.anchor.row>_)return 0;return $}function is(q,K){let _=Math.max(0,q.getScrollHeight()-q.getViewportHeight()),z=q.getScrollTop()+q.getPendingDelta()+K;if(z>=_)return q.scrollTo(_),q.scrollToBottom(),!0;return q.scrollTo(Math.max(0,z)),!1}function plY(q,K){let _=Math.max(0,q.getScrollHeight()-q.getViewportHeight());if(q.getScrollTop()+q.getPendingDelta()+K>=_)return q.scrollToBottom(),!0;return q.scrollBy(K),!1}function BlY(q,K){if(q.getScrollTop()+q.getPendingDelta()-K<=0){q.scrollTo(0);return}q.scrollBy(-K)}function glY(q,K){if(K.meta)return null;if(!K.ctrl&&!K.shift){if(K.upArrow)return"lineUp";if(K.downArrow)return"lineDown";if(K.home)return"top";if(K.end)return"bottom"}if(K.ctrl){if(K.shift)return null;switch(q){case"u":return"halfPageUp";case"d":return"halfPageDown";case"b":return"fullPageUp";case"f":return"fullPageDown";case"n":return"lineDown";case"p":return"lineUp";default:return null}}let _=q[0];if(!_||q!==_.repeat(q.length))return null;if(_==="G"||_==="g"&&K.shift)return"bottom";if(K.shift)return null;switch(_){case"g":return"top";case"j":return"lineDown";case"k":return"lineUp";case" ":return"fullPageDown";case"b":return"fullPageUp";default:return null}}function FlY(q,K,_){switch(K){case null:return null;case"lineUp":case"lineDown":{let z=K==="lineDown"?1:-1;return _(z),is(q,z)}case"halfPageUp":case"halfPageDown":{let z=Math.max(1,Math.floor(q.getViewportHeight()/2)),Y=K==="halfPageDown"?z:-z;return _(Y),is(q,Y)}case"fullPageUp":case"fullPageDown":{let z=Math.max(1,q.getViewportHeight()),Y=K==="fullPageDown"?z:-z;return _(Y),is(q,Y)}case"top":return _(-(q.getScrollTop()+q.getPendingDelta())),q.scrollTo(0),!1;case"bottom":{let z=Math.max(0,q.getScrollHeight()-q.getViewportHeight());return _(z-(q.getScrollTop()+q.getPendingDelta())),q.scrollTo(z),q.scrollToBottom(),!0}}}var rs,DlY=40,flY=0.3,ZlY=6,GlY=200,TlY=15,vlY=15,klY=3,VlY=1500,ktK=150,NlY=5,VtK=5,ylY=80,ElY=3,LlY=6,RlY=500,ec8=2,xlY=50,IlY=200;var EtK=y(()=>{h$();vtK();xZ8();Bi();YM();s6();Oq();_8();rs=O6(D6(),1)});var wA7={};T8(wA7,{useVoiceKeybindingHandler:()=>RtK,useVoiceIntegration:()=>ilY,VoiceKeybindingHandler:()=>rlY});function llY(q,K){if((q.key==="space"?" ":q.key==="return"?"enter":q.key.toLowerCase())!==K.key)return!1;if(q.ctrl!==K.ctrl)return!1;if(q.shift!==K.shift)return!1;if(q.meta!==(K.alt||K.meta))return!1;if(q.superKey!==K.super)return!1;return!0}function ilY({setInputValueRaw:q,inputValueRef:K,insertTextRef:_}){let{addNotification:z}=PK(),Y=aX.useRef(null),$=aX.useRef(""),A=aX.useRef(null),O=aX.useCallback((W,{char:D=" ",anchor:f=!1,floor:G=0}={})=>{let Z=K.current,T=_.current?.cursorOffset??Z.length,v=Z.slice(0,T),V=Z.slice(T),E=D===" "?v_6(v):v,S=0;while(S<E.length&&E[E.length-1-S]===D)S++;let R=Math.max(0,Math.min(S-G,W)),x=S-R,I=v.slice(0,v.length-R),B="";if(f){if(Y.current=I,$.current=V,V.length>0&&!/^\s/.test(V))B=" "}let p=I+B+V;if(f)A.current=p;if(p===Z&&R===0)return x;if(_.current)_.current.setInputWithCursor(p,I.length);else q(p);return x},[q,K,_]),w=aX.useCallback(()=>{let W=Y.current;if(W===null)return;let D=$.current;Y.current=null,$.current="";let f=W+D;if(_.current)_.current.setInputWithCursor(f,W.length);else q(f)},[q,_]),j=FJ6(),H=lV((W)=>W.voiceState),J=lV((W)=>W.voiceInterimTranscript);aX.useEffect(()=>{if(H==="recording"&&Y.current===null){let W=K.current,D=_.current?.cursorOffset??W.length;Y.current=W.slice(0,D),$.current=W.slice(D),A.current=W}if(H==="idle")Y.current=null,$.current="",A.current=null},[H,K,_]),aX.useEffect(()=>{if(Y.current===null)return;let W=Y.current,D=$.current;if(K.current!==A.current)return;let f=W.length>0&&!/\s$/.test(W)&&J.length>0,G=D.length>0&&!/^\s/.test(D),Z=f?" ":"",T=G?" ":"",v=W+Z+J+T+D,V=W.length+Z.length+J.length;if(_.current)_.current.setInputWithCursor(v,V);else q(v);A.current=v},[J,q,K,_]);let M=aX.useCallback((W)=>{let D=Y.current;if(D===null)return;let f=$.current;if(K.current!==A.current)return;let G=D.length>0&&!/\s$/.test(D)&&W.length>0,Z=f.length>0&&!/^\s/.test(f)&&W.length>0,T=G?" ":"",v=Z?" ":"",V=D+T+W+v+f,E=D.length+T.length+W.length;if(_.current)_.current.setInputWithCursor(V,E);else q(V);A.current=V,Y.current=D+T+W},[q,K,_]),X=UlY.useVoice({onTranscript:M,onError:(W)=>{z({key:"voice-error",text:W,color:"error",priority:"immediate",timeoutMs:1e4})},enabled:j,focusMode:!1}),P=aX.useMemo(()=>{if(Y.current===null)return null;if(J.length===0)return null;let W=Y.current,D=W.length>0&&!/\s$/.test(W)&&J.length>0,f=W.length+(D?1:0),G=f+J.length;return{start:f,end:G}},[J]);return{stripTrailing:O,resetAnchor:w,handleKeyEvent:X.handleKeyEvent,interimRange:P}}function RtK({voiceHandleKeyEvent:q,stripTrailing:K,resetAnchor:_,isActive:z}){let Y=VL1(),$=gl6(),A=VN(),O=dq6(),w=FJ6(),j=lV((G)=>G.voiceState),H=aX.useMemo(()=>{if(!A)return nlY;let G=null;for(let Z of A.bindings){if(Z.context!=="Chat")continue;if(Z.chord.length!==1)continue;let T=Z.chord[0];if(!T)continue;if(Z.action==="voice:pushToTalk")G=T;else if(G!==null&&Vy8(T,G))G=null}return G},[A]),J=H!==null&&H.key.length===1&&!H.ctrl&&!H.alt&&!H.shift&&!H.meta&&!H.super?H.key:null,M=aX.useRef(0),X=aX.useRef(0),P=aX.useRef(0),W=aX.useRef(!1),D=aX.useRef(null);aX.useEffect(()=>{if(j!=="recording")W.current=!1,M.current=0,X.current=0,P.current=0,$((G)=>{if(!G.voiceWarmingUp)return G;return{...G,voiceWarmingUp:!1}})},[j,$]);let f=(G)=>{if(!w)return;if(!z||O)return;if(H===null)return;let Z;if(J!==null){if(G.ctrl||G.meta||G.shift)return;let V=J===" "?v_6(G.key):G.key;if(V[0]!==J)return;if(V.length>1&&V!==J.repeat(V.length))return;Z=V.length}else{if(!llY(G,H))return;Z=1}let T=Y().voiceState;if(W.current&&T!=="idle"){if(G.stopImmediatePropagation(),J!==null)K(Z,{char:J,floor:P.current});q();return}if(T!=="idle"){if(J===null)G.stopImmediatePropagation();return}let v=M.current;if(M.current+=Z,J===null||M.current>=clY){if(G.stopImmediatePropagation(),D.current)clearTimeout(D.current),D.current=null;if(M.current=0,W.current=!0,$((V)=>{if(!V.voiceWarmingUp)return V;return{...V,voiceWarmingUp:!1}}),J!==null)P.current=K(X.current+Z,{char:J,anchor:!0}),X.current=0,q();else K(0,{anchor:!0}),q(dlY);if(Y().voiceState==="idle")W.current=!1,_();return}if(v>=LtK)G.stopImmediatePropagation(),K(Z,{char:J,floor:X.current});else X.current+=Z;if(M.current>=LtK)$((V)=>{if(V.voiceWarmingUp)return V;return{...V,voiceWarmingUp:!0}});if(D.current)clearTimeout(D.current);D.current=setTimeout((V,E,S,R)=>{V.current=null,E.current=0,S.current=0,R((x)=>{if(!x.voiceWarmingUp)return x;return{...x,voiceWarmingUp:!1}})},QlY,D,M,X,$)};return k4((G,Z,T)=>{let v=new JL(T.keypress);if(f(v),v.didStopImmediatePropagation())T.stopImmediatePropagation()},{isActive:z}),{handleKeyDown:f}}function rlY(q){return RtK(q),null}var aX,UlY,QlY=120,dlY=2000,clY=5,LtK=2,nlY;var jA7=y(()=>{h$();T0();NA6();fA6();s6();yU();do6();Sd8();aX=O6(D6(),1),UlY=(v97(),Eq(IpK));nlY={key:" ",ctrl:!1,alt:!1,shift:!1,meta:!1,super:!1}});var htK={};T8(htK,{getCronJitterConfig:()=>JA7});function JA7(){let q=gV("tengu_kairos_cron_config",kU,olY),K=slY().safeParse(q);return K.success?K.data:kU}var olY=60000,HA7=1800000,alY=2592000000,slY;var MA7=y(()=>{x7();o1();vq6();slY=B6(()=>L.object({recurringFrac:L.number().min(0).max(1),recurringCapMs:L.number().int().min(0).max(HA7),oneShotMaxMs:L.number().int().min(0).max(HA7),oneShotFloorMs:L.number().int().min(0).max(HA7),oneShotMinuteMod:L.number().int().min(1).max(60),recurringMaxAgeMs:L.number().int().min(0).max(alY).default(kU.recurringMaxAgeMs)}).refine((q)=>q.oneShotFloorMs<=q.oneShotMaxMs))});import{mkdir as tlY,readFile as elY,unlink as CtK,writeFile as PA7}from"fs/promises";import{dirname as qnY,join as btK}from"path";function MK8(q){return btK(q??Fz(),KnY)}async function xtK(q){let K;try{K=await elY(MK8(q),"utf8")}catch{return}let _=_nY().safeParse(m5(K,!1));return _.success?_.data:void 0}async function StK(q,K){let _=MK8(K),z=g6(q);try{return await PA7(_,z,{flag:"wx"}),!0}catch(Y){let $=s1(Y);if($==="EEXIST")return!1;if($==="ENOENT"){await tlY(qnY(_),{recursive:!0});try{return await PA7(_,z,{flag:"wx"}),!0}catch(A){if(s1(A)==="EEXIST")return!1;throw A}}throw Y}}function XA7(q){ql8?.(),ql8=pq(async()=>{await XK8(q)})}async function WA7(q){let K=q?.dir,_=q?.lockIdentity??N8(),z={sessionId:_,pid:process.pid,acquiredAt:Date.now()};if(await StK(z,K))return JK8=void 0,XA7(q),N(`[ScheduledTasks] acquired scheduler lock (PID ${process.pid})`),!0;let Y=await xtK(K);if(Y?.sessionId===_){if(Y.pid!==process.pid)await PA7(MK8(K),g6(z)),XA7(q);return!0}if(Y&&QG6(Y.pid)){if(JK8!==Y.sessionId)JK8=Y.sessionId,N(`[ScheduledTasks] scheduler lock held by session ${Y.sessionId} (PID ${Y.pid})`);return!1}if(Y)N(`[ScheduledTasks] recovering stale scheduler lock from PID ${Y.pid}`);if(await CtK(MK8(K)).catch(()=>{}),await StK(z,K))return JK8=void 0,XA7(q),!0;return!1}async function XK8(q){ql8?.(),ql8=void 0,JK8=void 0;let K=q?.dir,_=q?.lockIdentity??N8(),z=await xtK(K);if(!z||z.sessionId!==_)return;try{await CtK(MK8(K)),N("[ScheduledTasks] released scheduler lock")}catch{}}var KnY,_nY,ql8,JK8;var ItK=y(()=>{x7();v8();c9();_8();y8();u$6();vO();l8();KnY=btK(".claude","scheduled_tasks.lock"),_nY=B6(()=>L.object({sessionId:L.string(),pid:L.number(),acquiredAt:L.number()}))});var BtK={};T8(BtK,{isRecurringTaskAged:()=>mtK,createCronScheduler:()=>DA7,buildMissedTaskNotification:()=>ptK});function mtK(q,K,_){if(_===0)return!1;return Boolean(q.recurring&&!q.permanent&&K-q.createdAt>=_)}function DA7(q){let{onFire:K,isLoading:_,assistantMode:z=!1,onFireTask:Y,onMissed:$,dir:A,lockIdentity:O,getJitterConfig:w,isKilled:j,filter:H}=q,J=A||O?{dir:A,lockIdentity:O}:void 0,M=[],X=new Map,P=new Set,W=new Set,D=null,f=null,G=null,Z=null,T=!1,v=!1;async function V(R){let x=await IV6(A);if(T)return;if(M=x,!R)return;let I=Date.now(),B=iy4(x,I).filter((p)=>!p.recurring&&!P.has(p.id)&&(!H||H(p)));if(B.length>0){for(let p of B)P.add(p.id),X.set(p.id,1/0);if(d("tengu_scheduled_task_missed",{count:B.length,taskIds:B.map((p)=>p.id).join(",")}),$)$(B);else K(ptK(B));Jw6(B.map((p)=>p.id),A).catch((p)=>N(`[ScheduledTasks] failed to remove missed tasks: ${p}`)),N(`[ScheduledTasks] surfaced ${B.length} missed one-shot task(s)`)}}function E(){if(j?.())return;if(_()&&!z)return;let R=Date.now(),x=new Set,I=[],B=w?.()??kU;function p(C,g){if(H&&!H(C))return;if(x.add(C.id),W.has(C.id))return;let F=X.get(C.id);if(F===void 0)F=C.recurring?jp1(C.cron,C.lastFiredAt??C.createdAt,C.id,B)??1/0:ny4(C.cron,C.createdAt,C.id,B)??1/0,X.set(C.id,F),N(`[ScheduledTasks] scheduled ${C.id} for ${F===1/0?"never":new Date(F).toISOString()}`);if(R<F)return;if(N(`[ScheduledTasks] firing ${C.id}${C.recurring?" (recurring)":""}`),d("tengu_scheduled_task_fire",{recurring:C.recurring??!1,taskId:C.id}),Y)Y(C);else K(C.prompt);let U=mtK(C,R,B.recurringMaxAgeMs);if(U){let c=Math.floor((R-C.createdAt)/1000/60/60);N(`[ScheduledTasks] recurring task ${C.id} aged out (${c}h since creation), deleting after final fire`),d("tengu_scheduled_task_expired",{taskId:C.id,ageHours:c})}if(C.recurring&&!U){let c=jp1(C.cron,R,C.id,B)??1/0;if(X.set(C.id,c),!g)I.push(C.id)}else if(g)ob6([C.id]),X.delete(C.id);else W.add(C.id),Jw6([C.id],A).catch((c)=>N(`[ScheduledTasks] failed to remove task ${C.id}: ${c}`)).finally(()=>W.delete(C.id)),X.delete(C.id)}if(v){for(let C of M)p(C,!1);if(I.length>0){for(let C of I)W.add(C);cy4(I,R,A).catch((C)=>N(`[ScheduledTasks] failed to persist lastFiredAt: ${C}`)).finally(()=>{for(let C of I)W.delete(C)})}}if(A===void 0)for(let C of rb6())p(C,!0);if(x.size===0){X.clear();return}for(let C of X.keys())if(!x.has(C))X.delete(C)}async function S(){if(T)return;if(D)clearInterval(D),D=null;let{default:R}=await Promise.resolve().then(() => (sT6(),E74));if(T)return;if(v=await WA7(J).catch(()=>!1),T){if(v)v=!1,XK8(J);return}if(!v)G=setInterval(()=>{WA7(J).then((I)=>{if(T){if(I)XK8(J);return}if(I){if(v=!0,G)clearInterval(G),G=null}}).catch((I)=>N(String(I),{level:"error"}))},YnY),G.unref?.();V(!0);let x=pr(A);Z=R.watch(x,{persistent:!1,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:znY},ignorePermissionErrors:!0}),Z.on("add",()=>void V(!1)),Z.on("change",()=>void V(!1)),Z.on("unlink",()=>{if(!T)M=[],X.clear()}),f=setInterval(E,utK),f.unref?.()}return{start(){if(T=!1,A!==void 0){N(`[ScheduledTasks] scheduler start() — dir=${A}, hasTasks=${nN8(A)}`),S();return}if(N(`[ScheduledTasks] scheduler start() — enabled=${uX6()}, hasTasks=${nN8()}`),!uX6()&&(z||nN8()))ib6(!0);if(uX6()){S();return}D=setInterval((R)=>{if(uX6())R()},utK,S),D.unref?.()},stop(){if(T=!0,D)clearInterval(D),D=null;if(f)clearInterval(f),f=null;if(G)clearInterval(G),G=null;if(Z?.close(),Z=null,v)v=!1,XK8(J)},getNextFireTime(){let R=1/0;for(let x of X.values())if(x<R)R=x;return R===1/0?null:R}}}function ptK(q){let K=q.length>1,_=`The following one-shot scheduled task${K?"s were":" was"} missed while Claude was not running. ${K?"They have":"It has"} already been removed from .claude/scheduled_tasks.json. |