@dahawa/hawa-code 1.36.2 → 1.36.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/cli.js +3 -3
  2. package/hands.js +3 -3
  3. package/package.json +1 -1
package/cli.js CHANGED
@@ -667,7 +667,7 @@ globstar while`,t,f,r,p,g),this.matchOne(t.slice(f),r.slice(p),n))return this.de
667
667
  `)),fwn(e,o,{encoding:r,flush:!0})}var YQt=new Pue.default({fetchMethod:e=>_wn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function eUt(e){let t=_q(e);return YQt.get(t)||YQt.fetchMethod?.(t)}async function _wn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await YNt(e,t.signal,15),n=0;for(let o of r)tO(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function tUt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var Swn=new Pue.default({fetchMethod:e=>rUt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Em(e){let t=_q(e);return tUt(Swn,t,()=>rUt(t))}function rUt(e){let r=Buffer.alloc(4096),n;try{n=jQt(e,"r");let o=zQt(n,r,0,4096,0);return o===0?"utf8":o>=2&&r[0]===255&&r[1]===254?"utf16le":o>=3&&r[0]===239&&r[1]===187&&r[2]===191||r.slice(0,o).toString("utf8").length>0?"utf8":"ascii"}catch(o){return be(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&WQt(n)}}var ywn=new Pue.default({fetchMethod:e=>nUt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function tO(e){let t=_q(e);return tUt(ywn,t,()=>nUt(t))}function nUt(e,t="utf8"){try{if(!KQt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=jQt(e,"r"),i=zQt(o,n,0,4096,0);WQt(o);let s=n.toString(t,0,i),a=0,u=0;for(let c=0;c<s.length;c++)s[c]===`
668
668
  `&&(c>0&&s[c-1]==="\r"?a++:u++);return a>u?"CRLF":"LF"}catch(r){return be(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function $Be(e){let t=JQt(e)?e:_q(ke(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function VBe(e){return e?JQt(e)?e:_q(ke(),e):void 0}function oUt(e){try{let t=VBe(e),r=t?gwn(ke(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return pe("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Fue(e){try{let t=hwn(e),r=qQt(e,$Qt(e));if(!pwn(t))return;let i=mwn(t).filter(s=>qQt(s,$Qt(s))===r&&Ewn(t,s)!==e)[0];return i||void 0}catch(t){be(`Error finding similar file for ${e}: ${t}`);return}}function YBe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function Wv({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return YBe()?r.map((n,o)=>`${o+t} ${n}`).join(`
669
669
  `):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
670
- `)}function iUt(e){try{let t=Awn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}He();function Vv(){let e=Dn();e.hasCompletedProjectOnboarding||bi({...e,hasCompletedProjectOnboarding:!0})}function Iwn(){let e=sr();fo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function jBe({workspaceDir:e}){let r=!Dn().hasCompletedProjectOnboarding,o=sr().lastReleaseNotesSeen,i=[];(!o||(0,sUt.gt)(MACRO.VERSION,o))&&(i=rue[MACRO.VERSION]||[]);let s=i.length>0;if(Mi.useEffect(()=>{s&&!r&&Iwn()},[s,r]),!r&&!s)return null;let a=Twn(bwn(e,ci)),u=iUt(e),c=!a&&!u,l=rQ.isEnabled&&!sr().shiftEnterKeyBindingInstalled,d=K();return Mi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Mi.createElement(Mi.Fragment,null,Mi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Mi.createElement(_d,{children:[]},(()=>{let f=[];return u&&f.push(Mi.createElement(_d.Item,{key:"workspace"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),c&&f.push(Mi.createElement(_d.Item,{key:"claudemd"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/init")," to create a",ci," file with instructions for Hawa code."))),l&&f.push(Mi.createElement(_d.Item,{key:"terminal"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/terminal-setup"),Mi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Mi.createElement(_d.Item,{key:"questions"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Mi.createElement(_d.Item,{key:"changes"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Mi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Mi.createElement(D,{flexDirection:"column",gap:0},Mi.createElement(D,{marginBottom:1},Mi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Mi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Mi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===Cwn()&&Mi.createElement(C,{color:K().warning},"Note: You have launched ",Mi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var EQ=G(se(),1);var hQ=G(se(),1);var Sq=G(se(),1);function zBe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Wi("Select");return Sq.default.createElement(D,{...o.option({isFocused:e})},e&&Sq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),Sq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&Sq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var _m=G(se(),1);import{isDeepStrictEqual as vwn}from"node:util";var yq=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let u="value"in s?s.value:WBe(s);r.push([u,a]),i++,o=a}super(r),this.first=n}};var xwn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},KBe=e=>e.flatMap(t=>{if("options"in t){let r=KBe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),aUt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=KBe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new yq(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},JBe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=KBe(t),[a,u]=(0,_m.useReducer)(xwn,{visibleOptionCount:e,defaultValue:r,options:t},aUt),[c,l]=(0,_m.useState)(s);s!==c&&!vwn(s,c)&&(u({type:"reset",state:aUt({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,_m.useCallback)(()=>{u({type:"focus-next-option"})},[]),f=(0,_m.useCallback)(()=>{u({type:"focus-previous-option"})},[]),p=(0,_m.useCallback)(()=>{u({type:"select-focused-option"})},[]),g=(0,_m.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,_m.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,_m.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,_m.useEffect)(()=>{i&&u({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:f,selectFocusedOption:p}};var ZBe=({isDisabled:e=!1,state:t})=>{vt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var WBe=e=>`HEADER-${e.optionValues.join(",")}`;function Nb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let u=JBe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});ZBe({isDisabled:e,state:u});let{styles:c}=Wi("Select");return hQ.default.createElement(D,{...c.container()},u.visibleOptions.map(l=>{let d="value"in l?l.value:WBe(l),f=!e&&u.focusedValue!==void 0&&("value"in l?u.focusedValue===l.value:l.optionValues.includes(u.focusedValue)),p=!!u.value&&("value"in l?u.value===l.value:l.optionValues.includes(u.value)),g="header"in l,h="label"in l?l.label:l.header,E=h;if(r&&h.includes(r)){let y=h.indexOf(r);E=hQ.default.createElement(hQ.default.Fragment,null,h.slice(0,y),hQ.default.createElement(C,{...c.highlightedText()},r),h.slice(y+r.length))}return hQ.default.createElement(zBe,{key:d,isFocused:f,isSelected:p,smallPointer:g},E)}))}function uUt({onDone:e}){return vt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),EQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},EQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},EQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),EQ.default.createElement(D,null,EQ.default.createElement(Nb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var uo=G(se(),1),Ar=G(se(),1);var pp=G(se(),1);He();Ir();He();Be();import Dwn from"os";import Rwn from"path";import Tq from"fs";var wwn={sources:{},routing:{}};function dUt(){let e=Dwn.homedir();return Rwn.join(e,Zn,"config.json")}function cUt(){try{let e=dUt();if(!Tq.existsSync(e))return wwn;let t=Tq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:Nwn(r)}catch(e){throw be(e),e}}function Nwn(e){let t={},r={};for(let[n,o]of Object.entries(e))if(o?.enable===!0&&o?.env){let i=o.env,s=n;t[s]={base_url:i.BASE_URL||"",auth_token:i.AUTH_TOKEN||"",api_type:i.API_TYPE||"anthropic",models:[]},i.MODEL&&(r.MODEL=[{source:s,model:i.MODEL,weight:100}],t[s].models.push(i.MODEL)),i.SMALL_FAST_MODEL&&(r.SMALL_FAST_MODEL=[{source:s,model:i.SMALL_FAST_MODEL,weight:100}],t[s].models.includes(i.SMALL_FAST_MODEL)||t[s].models.push(i.SMALL_FAST_MODEL));break}return{sources:t,routing:r}}function lUt(e){if(e.length===0)throw new Error("No items to select from");if(e.length===1)return e[0];let t=e.reduce((n,o)=>n+(o.weight??100),0),r=Math.random()*t;for(let n of e){let o=n.weight??100;if(r-=o,r<=0)return n}return e[e.length-1]}var XBe=class{config;constructor(){try{this.config=cUt()}catch(t){console.log(t)}}reload(){this.config=cUt()}getConfig(){return this.config}hasModelRouting(){return!!(this.config.routing?.MODEL&&this.config.routing.MODEL.length>0)}getModelRoutingModels(){let t=this.config.routing?.MODEL;return!t||t.length===0?[]:t.map(r=>r.model)}hasSmallFastModelRouting(){return!!(this.config.routing?.SMALL_FAST_MODEL&&this.config.routing.SMALL_FAST_MODEL.length>0)}getModel(){let t=this.config.routing?.MODEL;if(!t||t.length===0)throw new Error("No MODEL routing configuration found");let r=lUt(t);return`${r.source}__${r.model}`}getSmallFastModel(){let t=this.config.routing?.SMALL_FAST_MODEL;if(!t||t.length===0)throw new Error("No SMALL_FAST_MODEL routing configuration found");let r=lUt(t);return`${r.source}__${r.model}`}getSourceConfig(t){return this.config.sources?.[t]}parseModelKey(t){let r=t.indexOf("__");return r===-1?{source:"",model:t}:{source:t.slice(0,r),model:t.slice(r+2)}}getModelSourceConfig(t){let{source:r}=this.parseModelKey(t);if(r)return this.getSourceConfig(r)}setModelRouting(t){this.config.routing.MODEL=t,this.saveConfig()}setSmallFastModelRouting(t){this.config.routing.SMALL_FAST_MODEL=t,this.saveConfig()}getAvailableModels(){let t=[];for(let[r,n]of Object.entries(this.config.sources||{}))for(let o of n.models||[])t.push(`${r}__${o}`);return t}saveConfig(){try{let t=dUt(),r={};if(Tq.existsSync(t)){let o=Tq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};Tq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},Qo=new XBe;var Own="1.36.2",PS={VERSION:Own,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var eMe=46,fUt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function Que({isDefaultModel:e=!1}){let t=Math.max(eMe,ke().length+12),r=K(),n=fUt[Math.floor(Math.random()*fUt.length)];return pp.createElement(D,{flexDirection:"column"},pp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},pp.createElement(C,null,pp.createElement(C,null,n)," Welcome to"," ",pp.createElement(C,{bold:!0},ze),pp.createElement(C,{color:r.secondaryText}," v",PS.VERSION)),pp.createElement(pp.Fragment,null,pp.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},pp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),pp.createElement(C,{color:r.secondaryText},"cwd: ",ke()),pp.createElement(C,{color:r.secondaryText},"model: ",Qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),pp.createElement(C,{color:r.secondaryText},"small fast model: ",Qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var y0=G(se(),1);Be();var _W=G(se(),1);import{randomUUID as mR}from"crypto";var pUt=()=>[],mUt=()=>{};function AUt(e){pUt=e}function Uue(){return pUt}function gUt(e){mUt=e}function hUt(){return mUt}Be();lr();Ir();Be();He();import{existsSync as Mb,readdirSync as tMn,statSync as rMn}from"fs";import{join as Zv,relative as nMn}from"path";import{homedir as $4t}from"os";import{platform as oMn}from"process";import{readFile as Xv}from"fs/promises";Ir();LS();zr();import{join as Fwn,sep as Qwn}from"path";function mp(){if(!Sm())return!1;try{let e=qt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ym(){return(Fwn(ke(),".hcode","team-memory")+Qwn).normalize("NFC")}function yQ(e){let t=e.normalize("NFC"),r=ym();return t.startsWith(r)}var V4t=G(Zue(),1);zo();var U4t=G(Zue(),1);Ir();He();Be();hm();import{readFile as F4t}from"fs/promises";import{existsSync as EMe,readdirSync as JBn,statSync as ZBn}from"fs";import{join as _Me,relative as H4t}from"path";import{homedir as XBn}from"os";function Q4t(e){try{let t=(0,U4t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return be(t),{paths:[],content:e.trim()}}}function eMn(e,t){return t.length===0?!0:t.some(r=>{try{return yd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function SMe(e){let t=[];try{if(!EMe(e))return t;let r=JBn(e);for(let n of r){let o=_Me(e,n),i=ZBn(o);i.isDirectory()?t.push(...SMe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function G4t(){let e=[];try{let t=_Me(XBn(),Zn,"rules");if(EMe(t)){let r=SMe(t);for(let n of r)try{let o=await F4t(n,"utf-8"),{paths:i,content:s}=Q4t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=_Me(ke(),Zn,"rules");if(EMe(t)){let r=SMe(t);for(let n of r)try{let o=await F4t(n,"utf-8"),{paths:i,content:s}=Q4t(o);i.length>0&&e.push({filePath:H4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function q4t(e,t){e=Lse(e);let r=Lse(ke()),n=e.startsWith(r)?H4t(r,e):e;return t.filter(o=>eMn(n,o.paths))}var iMn=`# hawaCodeMd
670
+ `)}function iUt(e){try{let t=Awn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}He();function Vv(){let e=Dn();e.hasCompletedProjectOnboarding||bi({...e,hasCompletedProjectOnboarding:!0})}function Iwn(){let e=sr();fo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function jBe({workspaceDir:e}){let r=!Dn().hasCompletedProjectOnboarding,o=sr().lastReleaseNotesSeen,i=[];(!o||(0,sUt.gt)(MACRO.VERSION,o))&&(i=rue[MACRO.VERSION]||[]);let s=i.length>0;if(Mi.useEffect(()=>{s&&!r&&Iwn()},[s,r]),!r&&!s)return null;let a=Twn(bwn(e,ci)),u=iUt(e),c=!a&&!u,l=rQ.isEnabled&&!sr().shiftEnterKeyBindingInstalled,d=K();return Mi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Mi.createElement(Mi.Fragment,null,Mi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Mi.createElement(_d,{children:[]},(()=>{let f=[];return u&&f.push(Mi.createElement(_d.Item,{key:"workspace"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),c&&f.push(Mi.createElement(_d.Item,{key:"claudemd"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/init")," to create a",ci," file with instructions for Hawa code."))),l&&f.push(Mi.createElement(_d.Item,{key:"terminal"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/terminal-setup"),Mi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Mi.createElement(_d.Item,{key:"questions"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Mi.createElement(_d.Item,{key:"changes"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Mi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Mi.createElement(D,{flexDirection:"column",gap:0},Mi.createElement(D,{marginBottom:1},Mi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Mi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Mi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===Cwn()&&Mi.createElement(C,{color:K().warning},"Note: You have launched ",Mi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var EQ=G(se(),1);var hQ=G(se(),1);var Sq=G(se(),1);function zBe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Wi("Select");return Sq.default.createElement(D,{...o.option({isFocused:e})},e&&Sq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),Sq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&Sq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var _m=G(se(),1);import{isDeepStrictEqual as vwn}from"node:util";var yq=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let u="value"in s?s.value:WBe(s);r.push([u,a]),i++,o=a}super(r),this.first=n}};var xwn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},KBe=e=>e.flatMap(t=>{if("options"in t){let r=KBe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),aUt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=KBe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new yq(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},JBe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=KBe(t),[a,u]=(0,_m.useReducer)(xwn,{visibleOptionCount:e,defaultValue:r,options:t},aUt),[c,l]=(0,_m.useState)(s);s!==c&&!vwn(s,c)&&(u({type:"reset",state:aUt({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,_m.useCallback)(()=>{u({type:"focus-next-option"})},[]),f=(0,_m.useCallback)(()=>{u({type:"focus-previous-option"})},[]),p=(0,_m.useCallback)(()=>{u({type:"select-focused-option"})},[]),g=(0,_m.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,_m.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,_m.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,_m.useEffect)(()=>{i&&u({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:f,selectFocusedOption:p}};var ZBe=({isDisabled:e=!1,state:t})=>{vt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var WBe=e=>`HEADER-${e.optionValues.join(",")}`;function Nb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let u=JBe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});ZBe({isDisabled:e,state:u});let{styles:c}=Wi("Select");return hQ.default.createElement(D,{...c.container()},u.visibleOptions.map(l=>{let d="value"in l?l.value:WBe(l),f=!e&&u.focusedValue!==void 0&&("value"in l?u.focusedValue===l.value:l.optionValues.includes(u.focusedValue)),p=!!u.value&&("value"in l?u.value===l.value:l.optionValues.includes(u.value)),g="header"in l,h="label"in l?l.label:l.header,E=h;if(r&&h.includes(r)){let y=h.indexOf(r);E=hQ.default.createElement(hQ.default.Fragment,null,h.slice(0,y),hQ.default.createElement(C,{...c.highlightedText()},r),h.slice(y+r.length))}return hQ.default.createElement(zBe,{key:d,isFocused:f,isSelected:p,smallPointer:g},E)}))}function uUt({onDone:e}){return vt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),EQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},EQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},EQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),EQ.default.createElement(D,null,EQ.default.createElement(Nb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var uo=G(se(),1),Ar=G(se(),1);var pp=G(se(),1);He();Ir();He();Be();import Dwn from"os";import Rwn from"path";import Tq from"fs";var wwn={sources:{},routing:{}};function dUt(){let e=Dwn.homedir();return Rwn.join(e,Zn,"config.json")}function cUt(){try{let e=dUt();if(!Tq.existsSync(e))return wwn;let t=Tq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:Nwn(r)}catch(e){throw be(e),e}}function Nwn(e){let t={},r={};for(let[n,o]of Object.entries(e))if(o?.enable===!0&&o?.env){let i=o.env,s=n;t[s]={base_url:i.BASE_URL||"",auth_token:i.AUTH_TOKEN||"",api_type:i.API_TYPE||"anthropic",models:[]},i.MODEL&&(r.MODEL=[{source:s,model:i.MODEL,weight:100}],t[s].models.push(i.MODEL)),i.SMALL_FAST_MODEL&&(r.SMALL_FAST_MODEL=[{source:s,model:i.SMALL_FAST_MODEL,weight:100}],t[s].models.includes(i.SMALL_FAST_MODEL)||t[s].models.push(i.SMALL_FAST_MODEL));break}return{sources:t,routing:r}}function lUt(e){if(e.length===0)throw new Error("No items to select from");if(e.length===1)return e[0];let t=e.reduce((n,o)=>n+(o.weight??100),0),r=Math.random()*t;for(let n of e){let o=n.weight??100;if(r-=o,r<=0)return n}return e[e.length-1]}var XBe=class{config;constructor(){try{this.config=cUt()}catch(t){console.log(t)}}reload(){this.config=cUt()}getConfig(){return this.config}hasModelRouting(){return!!(this.config.routing?.MODEL&&this.config.routing.MODEL.length>0)}getModelRoutingModels(){let t=this.config.routing?.MODEL;return!t||t.length===0?[]:t.map(r=>r.model)}hasSmallFastModelRouting(){return!!(this.config.routing?.SMALL_FAST_MODEL&&this.config.routing.SMALL_FAST_MODEL.length>0)}getModel(){let t=this.config.routing?.MODEL;if(!t||t.length===0)throw new Error("No MODEL routing configuration found");let r=lUt(t);return`${r.source}__${r.model}`}getSmallFastModel(){let t=this.config.routing?.SMALL_FAST_MODEL;if(!t||t.length===0)throw new Error("No SMALL_FAST_MODEL routing configuration found");let r=lUt(t);return`${r.source}__${r.model}`}getSourceConfig(t){return this.config.sources?.[t]}parseModelKey(t){let r=t.indexOf("__");return r===-1?{source:"",model:t}:{source:t.slice(0,r),model:t.slice(r+2)}}getModelSourceConfig(t){let{source:r}=this.parseModelKey(t);if(r)return this.getSourceConfig(r)}setModelRouting(t){this.config.routing.MODEL=t,this.saveConfig()}setSmallFastModelRouting(t){this.config.routing.SMALL_FAST_MODEL=t,this.saveConfig()}getAvailableModels(){let t=[];for(let[r,n]of Object.entries(this.config.sources||{}))for(let o of n.models||[])t.push(`${r}__${o}`);return t}saveConfig(){try{let t=dUt(),r={};if(Tq.existsSync(t)){let o=Tq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};Tq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},Qo=new XBe;var Own="1.36.3",PS={VERSION:Own,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var eMe=46,fUt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function Que({isDefaultModel:e=!1}){let t=Math.max(eMe,ke().length+12),r=K(),n=fUt[Math.floor(Math.random()*fUt.length)];return pp.createElement(D,{flexDirection:"column"},pp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},pp.createElement(C,null,pp.createElement(C,null,n)," Welcome to"," ",pp.createElement(C,{bold:!0},ze),pp.createElement(C,{color:r.secondaryText}," v",PS.VERSION)),pp.createElement(pp.Fragment,null,pp.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},pp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),pp.createElement(C,{color:r.secondaryText},"cwd: ",ke()),pp.createElement(C,{color:r.secondaryText},"model: ",Qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),pp.createElement(C,{color:r.secondaryText},"small fast model: ",Qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var y0=G(se(),1);Be();var _W=G(se(),1);import{randomUUID as mR}from"crypto";var pUt=()=>[],mUt=()=>{};function AUt(e){pUt=e}function Uue(){return pUt}function gUt(e){mUt=e}function hUt(){return mUt}Be();lr();Ir();Be();He();import{existsSync as Mb,readdirSync as tMn,statSync as rMn}from"fs";import{join as Zv,relative as nMn}from"path";import{homedir as $4t}from"os";import{platform as oMn}from"process";import{readFile as Xv}from"fs/promises";Ir();LS();zr();import{join as Fwn,sep as Qwn}from"path";function mp(){if(!Sm())return!1;try{let e=qt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ym(){return(Fwn(ke(),".hcode","team-memory")+Qwn).normalize("NFC")}function yQ(e){let t=e.normalize("NFC"),r=ym();return t.startsWith(r)}var V4t=G(Zue(),1);zo();var U4t=G(Zue(),1);Ir();He();Be();hm();import{readFile as F4t}from"fs/promises";import{existsSync as EMe,readdirSync as JBn,statSync as ZBn}from"fs";import{join as _Me,relative as H4t}from"path";import{homedir as XBn}from"os";function Q4t(e){try{let t=(0,U4t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return be(t),{paths:[],content:e.trim()}}}function eMn(e,t){return t.length===0?!0:t.some(r=>{try{return yd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function SMe(e){let t=[];try{if(!EMe(e))return t;let r=JBn(e);for(let n of r){let o=_Me(e,n),i=ZBn(o);i.isDirectory()?t.push(...SMe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function G4t(){let e=[];try{let t=_Me(XBn(),Zn,"rules");if(EMe(t)){let r=SMe(t);for(let n of r)try{let o=await F4t(n,"utf-8"),{paths:i,content:s}=Q4t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=_Me(ke(),Zn,"rules");if(EMe(t)){let r=SMe(t);for(let n of r)try{let o=await F4t(n,"utf-8"),{paths:i,content:s}=Q4t(o);i.length>0&&e.push({filePath:H4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function q4t(e,t){e=Lse(e);let r=Lse(ke()),n=e.startsWith(r)?H4t(r,e):e;return t.filter(o=>eMn(n,o.paths))}var iMn=`# hawaCodeMd
671
671
  Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function sMn(e="default"){let r=$e.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(o=>{let i=o.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${o.filePath} (${i}):
672
672
 
673
673
  ${o.content}`}).join(`
@@ -766,7 +766,7 @@ Stack trace: `+d.stack)),new Response(u.body,{status:a.status,statusText:a.statu
766
766
  Total duration (API): ${M_(Mm.totalAPIDuration)}
767
767
  Total duration (wall): ${M_(ozt())}`)}function izt(){(0,nzt.useEffect)(()=>{let e=()=>{process.stdout.write(`
768
768
  `+iUe()+`
769
- `);let t=Dn();bi({...t,lastCost:Mm.totalCost,lastAPIDuration:Mm.totalAPIDuration,lastDuration:ozt(),lastSessionId:u_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}function zzn(e,t){return Math.round(e*t)/t}Be();He();He();var sUe="1.36.2";globalThis.MACRO={VERSION:sUe,PACKAGE_URL:`@dahawa/${Bi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Lfe=process.env.HAWA_CODE_USER_AGENT||`${Bi}/${sUe} (${process.env.USER_TYPE})`;Be();Be();lr();function vf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=df(t);if(n?.type==="user"){t[t.length-1]=Zzn(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=df(t);n?.type==="user"&&(t[t.length-1]=Wzn(n,r));return}}}),t}function Wzn(e,t){return{...e,message:{...e.message,content:Jzn(e.message.content,Kzn(t.content.content))}}}function Kzn(e){return`
769
+ `);let t=Dn();bi({...t,lastCost:Mm.totalCost,lastAPIDuration:Mm.totalAPIDuration,lastDuration:ozt(),lastSessionId:u_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}function zzn(e,t){return Math.round(e*t)/t}Be();He();He();var sUe="1.36.3";globalThis.MACRO={VERSION:sUe,PACKAGE_URL:`@dahawa/${Bi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Lfe=process.env.HAWA_CODE_USER_AGENT||`${Bi}/${sUe} (${process.env.USER_TYPE})`;Be();Be();lr();function vf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=df(t);if(n?.type==="user"){t[t.length-1]=Zzn(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=df(t);n?.type==="user"&&(t[t.length-1]=Wzn(n,r));return}}}),t}function Wzn(e,t){return{...e,message:{...e.message,content:Jzn(e.message.content,Kzn(t.content.content))}}}function Kzn(e){return`
770
770
  <system-reminder>
771
771
  The user sent the following message:
772
772
  ${e}
@@ -1560,7 +1560,7 @@ ${i}
1560
1560
  - Task IDs can be found using the /tasks command
1561
1561
  - Works for both shell tasks (IDs starting with 's') and agent tasks (IDs starting with 'a')
1562
1562
  - For shell tasks, sends SIGTERM first, then SIGKILL if needed
1563
- - For agent tasks, marks the task as failed and triggers completion handlers`;ig();Ov();AF();var L1o=Ve(()=>X.strictObject({task_id:X.string().describe("The ID of the background task to stop")})),jz={name:XSr,async description(){return eyr},async prompt(){return tyr},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return L1o()},userFacingName(){return"Stop Task"},async isEnabled(){return!0},needsPermissions(){return!1},async validateInput({task_id:e}){return!e||e.trim().length===0?{result:!1,message:"task_id is required and cannot be empty"}:{result:!0}},renderToolUseMessage({task_id:e}){return`Stop task: ${e}`},renderToolUseRejectedMessage(){return C_e.createElement(C,{color:"red"},"\xA0\xA0\u23BF \xA0 Task stop operation was rejected")},renderToolResultMessage(e){let{stopped:t,task_id:r,message:n}=e;return t?C_e.createElement(C,{color:"green"},"\xA0\xA0\u23BF \xA0",n):C_e.createElement(C,{color:"red"},"\xA0\xA0\u23BF \xA0",n)},renderResultForAssistant({stopped:e,task_id:t,message:r,task_type:n}){return`Task ${t} (${n}) stop operation: ${r}`},async*call(e,{abortController:t}){let{task_id:r}=e;if(t.signal.aborted){let n={message:"Operation cancelled",task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(n),data:n};return}try{let n=r.startsWith("a"),o=r.startsWith("s");if(n){let i=xu.stopTask(r),s={message:i.reason,task_id:r,stopped:i.success,task_type:"agent"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else if(o){let i=r.startsWith("sp")?fh.stop(r):Nc.stop(r),s={message:i?`Successfully stopped shell task: ${r}`:`Failed to stop shell task: ${r}`,task_id:r,stopped:i,task_type:"shell"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else{let i={message:`Unknown task type for ID: ${r}. Task IDs should start with 'a' (agent) or 's' (shell).`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(i),data:i}}}catch(n){let i={message:`Error stopping task: ${n instanceof Error?n.message:String(n)}`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(i),data:i}}}};var ryr=`${ze}/hands`,I_e="hawa/handsData",nyr=[w6()?pg:oo,Vd,fg,Pf,Lf,kf,Mf,Vz,Yz,jz],oyr=[pg,oo,Vd,fg,Pf,Lf,kf,Mf,Vz,Yz,jz];var v_e=null;function F1o(e,t){v_e={name:e,client:t},$C.cache.clear?.(),d9.cache.clear?.(),lo.clear()}function Q1o(){$C.cache.clear?.(),d9.cache.clear?.(),lo.clear()}function cyr(e){let t={};if(e)for(let r of e){let[n,...o]=r.split("=");if(!n||o.length===0)throw new Error(`Invalid environment variable format: ${r}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);t[n]=o.join("=")}return t}var U1o=["project","global","mcprc"],H1o=["project","global"];function D_e(e){if(!e)return"project";let t=process.env.USER_TYPE==="external"?H1o:U1o;if(!t.includes(e))throw new Error(`Invalid scope: ${e}. Must be one of: ${t.join(", ")}`);return e}function l7e(e,t,r="project"){if(r==="mcprc"){let n=uyr(ke(),".mcp.json"),o={};if(iyr(n))try{let i=syr(n,"utf-8"),s=xS(i);s&&typeof s=="object"&&(o=s)}catch{}o[e]=t;try{ayr(n,JSON.stringify(o,null,2),"utf-8")}catch(i){throw new Error(`Failed to write to .mcp.json: ${i}`)}}else if(r==="global"){let n=sr();n.mcpServers||(n.mcpServers={}),n.mcpServers[e]=t,fo(n)}else{let n=Dn();n.mcpServers||(n.mcpServers={}),n.mcpServers[e]=t,bi(n)}}function lyr(e,t="project"){if(t==="mcprc"){let r=uyr(ke(),".mcp.json");if(!iyr(r))throw new Error("No .mcp.json file found in this directory");try{let n=syr(r,"utf-8"),o=xS(n);if(!o||typeof o!="object"||!o[e])throw new Error(`No MCP server found with name: ${e} in .mcp.json`);delete o[e],ayr(r,JSON.stringify(o,null,2),"utf-8")}catch(n){throw n instanceof Error?n:new Error(`Failed to remove from .mcp.json: ${n}`)}}else if(t==="global"){let r=sr();if(!r.mcpServers?.[e])throw new Error(`No global MCP server found with name: ${e}`);delete r.mcpServers[e],fo(r)}else{let r=Dn();if(!r.mcpServers?.[e])throw new Error(`No local MCP server found with name: ${e}`);delete r.mcpServers[e],bi(r)}}function dyr(){let e=sr(),t=Fv(),r=Dn();return{...e.mcpServers??{},...t??{},...r.mcpServers??{}}}function R_e(e){let t=Dn(),r=Fv(),n=sr();if(t.mcpServers?.[e])return{...t.mcpServers[e],scope:"project"};if(r?.[e])return{...r[e],scope:"mcprc"};if(n.mcpServers?.[e])return{...n.mcpServers[e],scope:"global"}}async function fyr(e,t,r=!1,n=null){if(t.type==="sse"||t.type==="http"){let o=new fge(t.url,t.headers,e);return await o.connectD(r,n),o}else{let o=t.type==="sse"?new oge(new URL(t.url)):new KAe({command:t.command,args:t.args,env:{...process.env,...t.env},stderr:"pipe"}),i=new $x({name:`${ze}`,version:"0.1.0"},{capabilities:{}}),s=t.timeout??5e3,a=i.connect(o),u=new Promise((c,l)=>{let d=setTimeout(()=>{l(new Error(`Connection to MCP server "${e}" timed out after ${s}ms`))},s);a.then(()=>clearTimeout(d),()=>clearTimeout(d))});return await Promise.race([a,u]),t.type==="stdio"&&o.stderr?.on("data",c=>{let l=c.toString().trim();l&&ev(e,`Server stderr: ${l}`)}),i}}function zz(e){let t=Dn();return t.approvedMcprcServers?.includes(e)?"approved":t.rejectedMcprcServers?.includes(e)?"rejected":"pending"}var G1o=async(e,t=!1,r=null)=>{zz(e)==="rejected"&&uBt(e);let o=R_e(e);if(!o)return{name:e,type:"failed"};try{let i=await fyr(e,o,t,r),s=await $C(),a={name:e,client:i,type:"connected"},u=s.findIndex(c=>c.name===e);return u!==-1?s[u]=a:s.push(a),d9.cache.clear?.(),a}catch{return{name:e,type:"failed"}}},q1o=()=>(Q1o(),$C()),$C=Ve(async()=>{if(process.env.CI)return[];let e=sr().mcpServers??{},t=Fv(),r=Dn().mcpServers??{},n=Are(t,(c,l)=>zz(l)==="approved"),o=Are(t,(c,l)=>zz(l)==="rejected"),i=Object.keys(o).map(c=>({name:c,type:"disabled"})),s={...Kcr,...e,...n,...r},a=await Promise.all(Object.entries(s).map(async([c,l])=>{try{let d=await fyr(c,l);return Oe("tengu_mcp_server_connection_succeeded",{}),{name:c,client:d,type:"connected"}}catch(d){return d instanceof Hc?{name:c,type:"oauth"}:(Oe("tengu_mcp_server_connection_failed",{}),ev(c,`Connection failed: ${d instanceof Error?d.message:String(d)}`),{name:c,type:"failed"})}})),u=v_e?[{name:v_e.name,client:v_e.client,type:"connected"}]:[];return[...a,...u,...i]});async function pyr(e,t,r){let n=await $C();return(await Promise.allSettled(n.map(async i=>{if(i.type!=="connected")return null;try{return(await i.client.getServerCapabilities())?.[r]?{client:i,result:await i.client.request(e,t)}:null}catch(s){return i.type==="connected"&&ev(i.name,`Failed to request '${e.method}': ${s instanceof Error?s.message:String(s)}`),null}}))).filter(i=>i.status==="fulfilled").map(i=>i.value).filter(i=>i!==null)}function x_e(e){return e.replaceAll(".","-")}async function w_e(e){return(await d9()).filter(n=>n.name.startsWith(`mcp_${e}_`))}function $1o(e){try{return e.client.getServerVersion?.()?.name===ryr}catch{return!1}}var V1o=new Map(oyr.map(e=>[e.name,e]));function Y1o(e,t,r){return{...jB,name:"mcp_"+x_e(e.name)+"_"+x_e(t.name),async description(){return t.description??""},userFacingName(){return"H-"+r.userFacingName()},async prompt(){return t.description??""},isMcp(){return!0},async isEnabled(){return!0},renderToolResultMessage:r.renderToolResultMessage,inputSchema:Gd(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(n){let{data:o,resultForAssistant:i}=await W1o({client:e,tool:t.name,args:n});yield{type:"result",data:o,resultForAssistant:i}}}}function j1o(e,t){return{...jB,name:"mcp_"+x_e(e.name)+"_"+x_e(t.name),async description(){return t.description??""},async prompt(){return t.description??""},isMcp(){return!0},inputSchema:Gd(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(r){let n=await z1o({client:e,tool:t.name,args:r});yield{type:"result",data:{},resultForAssistant:n}},userFacingName(){return`${e.name.length>10?`...${e.name.slice(-10)}`:e.name}:${t.name}`}}}var d9=Ve(async()=>{let t=(await pyr({method:"tools/list"},XV,"tools")).flatMap(({client:r,result:{tools:n}})=>{let o=$1o(r);return n.map(i=>{if(o){let s=V1o.get(i.name);if(s)return Y1o(r,i,s)}return j1o(r,i)})});return ige.batchUpdateMcpTools(t),t});async function z1o({client:{client:e,name:t},tool:r,args:n}){let o=await e.callTool({name:r,arguments:n},H_);return(await zcr(o,r,t)).content}async function W1o({client:{client:e},tool:t,args:r}){let n=await e.callTool({name:t,arguments:r},H_),o=n?._meta?.[I_e],i=Array.isArray(n?.content)?n.content.filter(u=>u?.type==="text"&&typeof u.text=="string").map(u=>u.text).join(""):"",s=typeof o?.resultForAssistant=="string"?o.resultForAssistant:i;return{data:o&&"data"in o?o.data:s,resultForAssistant:s}}var myr=Ve(async()=>(await pyr({method:"prompts/list"},ZV,"prompts")).flatMap(({client:t,result:r})=>r.prompts?.map(n=>{let o=Object.values(n.arguments??{}).map(i=>i.name);return{type:"prompt",name:"mcp__"+t.name+"__"+n.name,description:()=>n.description??"",isEnabled:!0,isHidden:!1,progressMessage:"running",userFacingName(){return`${t.name}:${n.name} (MCP)`},argNames:o,async getPromptForCommand(i){let s=i.split(" ");return await K1o({name:n.name,client:t},Nxe(o,s))}}})));lo.add(myr);lo.getMCPCommands=myr;lo.getMcpServer=R_e;lo.getClients=$C;lo.reloadClients=q1o;lo.reconnect=G1o;lo.registerIDEClient=F1o;async function K1o({name:e,client:t},r){try{return(await t.client.getPrompt({name:e,arguments:r})).messages.map(o=>({role:o.role,content:[o.content.type==="text"?{type:"text",text:o.content.text}:{type:"image",source:{data:String(o.content.data),media_type:o.content.mimeType,type:"base64"}}]}))}catch(n){throw ev(t.name,`Error running command '${e}': ${n instanceof Error?n.message:String(n)}`),n}}function Ayr({serverName:e,serverConfig:t,onBack:r,onViewTools:n,onServerDisable:o,onServerReconnect:i,context:s}){let[a,u]=(0,BD.useState)(0),[c,l]=(0,BD.useState)("connected"),[d,f]=(0,BD.useState)([]),[p,g]=(0,BD.useState)(null),[h,E]=(0,BD.useState)(!1),y=K();(0,BD.useEffect)(()=>{l(e.status),w_e(e.name).then(U=>{f(U)})},[e]),vt((U,k)=>{if(k.return){c==="connected"?a===0?n():a===1?b():a===2&&I():a===0?b():a===1&&I();return}if(k.upArrow){let z=c==="connected"?2:1;u(Y=>Math.max(0,Y-1));return}if(k.downArrow){let z=c==="connected"?2:1;u(Y=>Math.min(z,Y+1));return}});let b=async()=>{E(!0);try{await i(e.name,c,U=>{g(U)})}finally{E(!1)}},I=()=>{o(e.name)},O=(U=>{switch(U){case"connected":return{icon:Vr.tick,color:y.success};case"failed":return{icon:Vr.cross,color:y.error};case"disabled":case"oauth":return{icon:Vr.circle,color:y.secondaryText};default:return{icon:Vr.circle,color:y.secondaryText}}})(c),Q=c==="connected"?[{label:"View tools",action:"View available tools"},{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:c==="failed"?[{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:c==="oauth"?[{label:"Reconnect(oauth)",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:[{label:"Reconnect",action:"Reconnect to server"}];return so.createElement(D,{flexDirection:"column",height:"100%"},so.createElement(D,{flexDirection:"column",borderStyle:"single",borderColor:"white"},so.createElement(D,{padding:1},so.createElement(C,{bold:!0,color:y.claude},e.name," MCP Server")),so.createElement(D,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},so.createElement(D,null,so.createElement(C,null,"Status: "),so.createElement(C,{color:O.color},O.icon," ",c)),t?.command&&so.createElement(D,null,so.createElement(C,null,"Command: "),so.createElement(C,{color:y.text},t.command)),t?.args&&so.createElement(D,null,so.createElement(C,null,"Args: "),so.createElement(C,{color:y.text},Array.isArray(t.args)?t.args.join(" "):t.args)),t?.url&&so.createElement(D,null,so.createElement(C,null,"URL: "),so.createElement(C,{color:y.text},t.url)),t&&so.createElement(D,null,so.createElement(C,null,"Config location: "),so.createElement(C,{color:y.secondaryText},t.configPath||"Unknown")),c==="connected"&&so.createElement(so.Fragment,null,so.createElement(D,null,so.createElement(C,null,"Capabilities: tools")),so.createElement(D,null,so.createElement(C,null,"Tools: ",d.length," tools")))),so.createElement(D,{flexDirection:"column",paddingX:1,marginBottom:1},h?so.createElement(D,{flexDirection:"row"},so.createElement(LB,null),so.createElement(C,{color:y.claude},"Reconnecting...")):Q.map((U,k)=>{let z=k===a;return so.createElement(D,{key:k},so.createElement(C,{color:z?y.claude:y.text},z?Vr.pointer:" "),so.createElement(C,{color:z?y.claude:y.text,bold:z},k+1,". ",U.label))})),so.createElement(D,{padding:1},so.createElement(C,{color:y.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back"))),c==="oauth"&&p&&so.createElement(D,{flexDirection:"column",paddingX:1},so.createElement(C,null,"Open in browser:"),so.createElement(C,{wrap:"wrap",color:y.link||"blue"},p)))}var ku=G(se(),1),VC=G(se(),1);Be();function gyr({serverName:e,onBack:t,onToolSelect:r}){let[n,o]=(0,VC.useState)(0),[i,s]=(0,VC.useState)([]),[a,u]=(0,VC.useState)({}),[c,l]=(0,VC.useState)(0),d=K(),f=15;(0,VC.useEffect)(()=>{let E=async()=>{let y={};for(let b=0;b<i.length;b++){let I=i[b];try{if(I.description){let x=await I.description();typeof x=="string"&&x.toLowerCase().includes("read")&&x.toLowerCase().includes("only")?y[b]="read-only":y[b]="read-write"}else y[b]="read-write"}catch(x){pe("Error loading tool description for access level:",x),y[b]="read-write"}}u(y)};i.length>0&&E()},[i]),(0,VC.useEffect)(()=>{e&&(async()=>{try{let y=await w_e(e.name);s(y)}catch{s([])}})()},[e]),vt((E,y)=>{if(y.return){if(i.length>0){let b=i[n];r(b)}return}if(y.upArrow){let b=Math.max(0,n-1);o(b),b<c&&l(b);return}if(y.downArrow){let b=Math.min(i.length-1,n+1);o(b),b>=c+f&&l(b-f+1);return}}),(0,VC.useEffect)(()=>{l(0),o(0)},[i]);let p=E=>{let y=E.name.match(/^mcp_[^_]+_(.+)$/);return y?y[1]:E.name},g=i.slice(c,c+f),h=i.length>f;return ku.createElement(D,{flexDirection:"column",height:"100%",borderStyle:"single",borderColor:"white"},ku.createElement(D,{padding:1},ku.createElement(C,{bold:!0,color:d.claude},"Tools for ",e.name," (",i.length," tools)")),ku.createElement(D,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},i.length===0?ku.createElement(C,{color:d.secondaryText},"No tools available for this server"):ku.createElement(ku.Fragment,null,h&&c>0&&ku.createElement(D,null,ku.createElement(C,{color:d.secondaryText},"\u2191 More tools above")),ku.createElement(D,{flexDirection:"column",flexGrow:1},g.map((E,y)=>{let b=c+y,I=b===n,x=p(E),O=a[b]||"read-write";return ku.createElement(D,{key:E.name},ku.createElement(C,{color:I?d.claude:d.text},I?Vr.pointer:" "),ku.createElement(C,{color:d.secondaryText},b+1,"."),ku.createElement(C,{color:I?d.claude:d.text,bold:I},x),ku.createElement(C,null," "),ku.createElement(C,{color:d.secondaryText},O))})),h&&c+f<i.length&&ku.createElement(D,null,ku.createElement(C,{color:d.secondaryText},"\u2193 More tools below")))),ku.createElement(D,{padding:1},ku.createElement(C,{color:d.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back")))}var qc=G(se(),1);function hyr({tool:e,serverName:t,onBack:r}){let[n,o]=(0,qc.useState)(""),[i,s]=(0,qc.useState)(!0),[a,u]=(0,qc.useState)(0),[c,l]=(0,qc.useState)(20),d=(0,qc.useRef)(null),f=K(),{stdout:p}=YOe();(0,qc.useEffect)(()=>{(async()=>{if(e?.description)try{let k=await e.description();o(k||"")}catch{o("")}else o("");s(!1)})()},[e]),(0,qc.useEffect)(()=>{p?.rows&&l(Math.max(10,p.rows-8))},[p]);let g=U=>{let k=U.name.match(/^mcp__[^_]+__(.+)$/);return k?k[1]:U.name},h=()=>i?"loading...":n&&n.toLowerCase().includes("read")&&n.toLowerCase().includes("only")?"read-only":"read-write",E=g(e),y=h(),I=(()=>{let U=[];return n&&(U.push("Description:"),U.push(...n.split(`
1563
+ - For agent tasks, marks the task as failed and triggers completion handlers`;ig();Ov();AF();var L1o=Ve(()=>X.strictObject({task_id:X.string().describe("The ID of the background task to stop")})),jz={name:XSr,async description(){return eyr},async prompt(){return tyr},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return L1o()},userFacingName(){return"Stop Task"},async isEnabled(){return!0},needsPermissions(){return!1},async validateInput({task_id:e}){return!e||e.trim().length===0?{result:!1,message:"task_id is required and cannot be empty"}:{result:!0}},renderToolUseMessage({task_id:e}){return`Stop task: ${e}`},renderToolUseRejectedMessage(){return C_e.createElement(C,{color:"red"},"\xA0\xA0\u23BF \xA0 Task stop operation was rejected")},renderToolResultMessage(e){let{stopped:t,task_id:r,message:n}=e;return t?C_e.createElement(C,{color:"green"},"\xA0\xA0\u23BF \xA0",n):C_e.createElement(C,{color:"red"},"\xA0\xA0\u23BF \xA0",n)},renderResultForAssistant({stopped:e,task_id:t,message:r,task_type:n}){return`Task ${t} (${n}) stop operation: ${r}`},async*call(e,{abortController:t}){let{task_id:r}=e;if(t.signal.aborted){let n={message:"Operation cancelled",task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(n),data:n};return}try{let n=r.startsWith("a"),o=r.startsWith("s");if(n){let i=xu.stopTask(r),s={message:i.reason,task_id:r,stopped:i.success,task_type:"agent"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else if(o){let i=r.startsWith("sp")?fh.stop(r):Nc.stop(r),s={message:i?`Successfully stopped shell task: ${r}`:`Failed to stop shell task: ${r}`,task_id:r,stopped:i,task_type:"shell"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else{let i={message:`Unknown task type for ID: ${r}. Task IDs should start with 'a' (agent) or 's' (shell).`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(i),data:i}}}catch(n){let i={message:`Error stopping task: ${n instanceof Error?n.message:String(n)}`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(i),data:i}}}};var ryr=`${ze}/hands`,I_e="hawa/handsData",nyr=[w6()?pg:oo,Vd,fg,Pf,Lf,kf,Mf,Vz,Yz,jz],oyr=[pg,oo,Vd,fg,Pf,Lf,kf,Mf,Vz,Yz,jz];var v_e=null;function F1o(e,t){v_e={name:e,client:t},$C.cache.clear?.(),d9.cache.clear?.(),lo.clear()}function Q1o(){$C.cache.clear?.(),d9.cache.clear?.(),lo.clear()}function cyr(e){let t={};if(e)for(let r of e){let[n,...o]=r.split("=");if(!n||o.length===0)throw new Error(`Invalid environment variable format: ${r}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);t[n]=o.join("=")}return t}var U1o=["project","global","mcprc"],H1o=["project","global"];function D_e(e){if(!e)return"project";let t=process.env.USER_TYPE==="external"?H1o:U1o;if(!t.includes(e))throw new Error(`Invalid scope: ${e}. Must be one of: ${t.join(", ")}`);return e}function l7e(e,t,r="project"){if(r==="mcprc"){let n=uyr(ke(),".mcp.json"),o={};if(iyr(n))try{let i=syr(n,"utf-8"),s=xS(i);s&&typeof s=="object"&&(o=s)}catch{}o[e]=t;try{ayr(n,JSON.stringify(o,null,2),"utf-8")}catch(i){throw new Error(`Failed to write to .mcp.json: ${i}`)}}else if(r==="global"){let n=sr();n.mcpServers||(n.mcpServers={}),n.mcpServers[e]=t,fo(n)}else{let n=Dn();n.mcpServers||(n.mcpServers={}),n.mcpServers[e]=t,bi(n)}}function lyr(e,t="project"){if(t==="mcprc"){let r=uyr(ke(),".mcp.json");if(!iyr(r))throw new Error("No .mcp.json file found in this directory");try{let n=syr(r,"utf-8"),o=xS(n);if(!o||typeof o!="object"||!o[e])throw new Error(`No MCP server found with name: ${e} in .mcp.json`);delete o[e],ayr(r,JSON.stringify(o,null,2),"utf-8")}catch(n){throw n instanceof Error?n:new Error(`Failed to remove from .mcp.json: ${n}`)}}else if(t==="global"){let r=sr();if(!r.mcpServers?.[e])throw new Error(`No global MCP server found with name: ${e}`);delete r.mcpServers[e],fo(r)}else{let r=Dn();if(!r.mcpServers?.[e])throw new Error(`No local MCP server found with name: ${e}`);delete r.mcpServers[e],bi(r)}}function dyr(){let e=sr(),t=Fv(),r=Dn();return{...e.mcpServers??{},...t??{},...r.mcpServers??{}}}function R_e(e){let t=Dn(),r=Fv(),n=sr();if(t.mcpServers?.[e])return{...t.mcpServers[e],scope:"project"};if(r?.[e])return{...r[e],scope:"mcprc"};if(n.mcpServers?.[e])return{...n.mcpServers[e],scope:"global"}}async function fyr(e,t,r=!1,n=null){if(t.type==="sse"||t.type==="http"){let o=new fge(t.url,t.headers,e);return await o.connectD(r,n),o}else{let o=t.type==="sse"?new oge(new URL(t.url)):new KAe({command:t.command,args:t.args,env:{...process.env,...t.env},stderr:"pipe"}),i=new $x({name:`${ze}`,version:"0.1.0"},{capabilities:{}}),s=t.timeout??5e3,a=i.connect(o),u=new Promise((c,l)=>{let d=setTimeout(()=>{l(new Error(`Connection to MCP server "${e}" timed out after ${s}ms`))},s);a.then(()=>clearTimeout(d),()=>clearTimeout(d))});return await Promise.race([a,u]),t.type==="stdio"&&o.stderr?.on("data",c=>{let l=c.toString().trim();l&&ev(e,`Server stderr: ${l}`)}),i}}function zz(e){let t=Dn();return t.approvedMcprcServers?.includes(e)?"approved":t.rejectedMcprcServers?.includes(e)?"rejected":"pending"}var G1o=async(e,t=!1,r=null)=>{zz(e)==="rejected"&&uBt(e);let o=R_e(e);if(!o)return{name:e,type:"failed"};try{let i=await fyr(e,o,t,r),s=await $C(),a={name:e,client:i,type:"connected"},u=s.findIndex(c=>c.name===e);return u!==-1?s[u]=a:s.push(a),d9.cache.clear?.(),a}catch{return{name:e,type:"failed"}}},q1o=()=>(Q1o(),$C()),$C=Ve(async()=>{if(process.env.CI)return[];let e=sr().mcpServers??{},t=Fv(),r=Dn().mcpServers??{},n=Are(t,(c,l)=>zz(l)==="approved"),o=Are(t,(c,l)=>zz(l)==="rejected"),i=Object.keys(o).map(c=>({name:c,type:"disabled"})),s={...Kcr,...e,...n,...r},a=await Promise.all(Object.entries(s).map(async([c,l])=>{try{let d=await fyr(c,l);return Oe("tengu_mcp_server_connection_succeeded",{}),{name:c,client:d,type:"connected"}}catch(d){return d instanceof Hc?{name:c,type:"oauth"}:(Oe("tengu_mcp_server_connection_failed",{}),ev(c,`Connection failed: ${d instanceof Error?d.message:String(d)}`),{name:c,type:"failed"})}})),u=v_e?[{name:v_e.name,client:v_e.client,type:"connected"}]:[];return[...a,...u,...i]});async function pyr(e,t,r){let n=await $C();return(await Promise.allSettled(n.map(async i=>{if(i.type!=="connected")return null;try{return(await i.client.getServerCapabilities())?.[r]?{client:i,result:await i.client.request(e,t)}:null}catch(s){return i.type==="connected"&&ev(i.name,`Failed to request '${e.method}': ${s instanceof Error?s.message:String(s)}`),null}}))).filter(i=>i.status==="fulfilled").map(i=>i.value).filter(i=>i!==null)}function x_e(e){return e.replaceAll(".","-")}async function w_e(e){return(await d9()).filter(n=>n.name.startsWith(`mcp_${e}_`))}function $1o(e){try{return e.client.getServerVersion?.()?.name===ryr}catch{return!1}}var V1o=new Map(oyr.map(e=>[e.name,e]));function Y1o(e,t,r){return{...jB,name:"mcp_"+x_e(e.name)+"_"+x_e(t.name),async description(){return t.description??""},userFacingName(n){return"H-"+r.userFacingName(n)},async prompt(){return t.description??""},isMcp(){return!0},async isEnabled(){return!0},renderToolResultMessage:r.renderToolResultMessage,inputSchema:Gd(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(n){let{data:o,resultForAssistant:i}=await W1o({client:e,tool:t.name,args:n});yield{type:"result",data:o,resultForAssistant:i}}}}function j1o(e,t){return{...jB,name:"mcp_"+x_e(e.name)+"_"+x_e(t.name),async description(){return t.description??""},async prompt(){return t.description??""},isMcp(){return!0},inputSchema:Gd(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(r){let n=await z1o({client:e,tool:t.name,args:r});yield{type:"result",data:{},resultForAssistant:n}},userFacingName(){return`${e.name.length>10?`...${e.name.slice(-10)}`:e.name}:${t.name}`}}}var d9=Ve(async()=>{let t=(await pyr({method:"tools/list"},XV,"tools")).flatMap(({client:r,result:{tools:n}})=>{let o=$1o(r);return n.map(i=>{if(o){let s=V1o.get(i.name);if(s)return Y1o(r,i,s)}return j1o(r,i)})});return ige.batchUpdateMcpTools(t),t});async function z1o({client:{client:e,name:t},tool:r,args:n}){let o=await e.callTool({name:r,arguments:n},H_);return(await zcr(o,r,t)).content}async function W1o({client:{client:e},tool:t,args:r}){let n=await e.callTool({name:t,arguments:r},H_),o=n?._meta?.[I_e],i=Array.isArray(n?.content)?n.content.filter(u=>u?.type==="text"&&typeof u.text=="string").map(u=>u.text).join(""):"",s=typeof o?.resultForAssistant=="string"?o.resultForAssistant:i;return{data:o&&"data"in o?o.data:s,resultForAssistant:s}}var myr=Ve(async()=>(await pyr({method:"prompts/list"},ZV,"prompts")).flatMap(({client:t,result:r})=>r.prompts?.map(n=>{let o=Object.values(n.arguments??{}).map(i=>i.name);return{type:"prompt",name:"mcp__"+t.name+"__"+n.name,description:()=>n.description??"",isEnabled:!0,isHidden:!1,progressMessage:"running",userFacingName(){return`${t.name}:${n.name} (MCP)`},argNames:o,async getPromptForCommand(i){let s=i.split(" ");return await K1o({name:n.name,client:t},Nxe(o,s))}}})));lo.add(myr);lo.getMCPCommands=myr;lo.getMcpServer=R_e;lo.getClients=$C;lo.reloadClients=q1o;lo.reconnect=G1o;lo.registerIDEClient=F1o;async function K1o({name:e,client:t},r){try{return(await t.client.getPrompt({name:e,arguments:r})).messages.map(o=>({role:o.role,content:[o.content.type==="text"?{type:"text",text:o.content.text}:{type:"image",source:{data:String(o.content.data),media_type:o.content.mimeType,type:"base64"}}]}))}catch(n){throw ev(t.name,`Error running command '${e}': ${n instanceof Error?n.message:String(n)}`),n}}function Ayr({serverName:e,serverConfig:t,onBack:r,onViewTools:n,onServerDisable:o,onServerReconnect:i,context:s}){let[a,u]=(0,BD.useState)(0),[c,l]=(0,BD.useState)("connected"),[d,f]=(0,BD.useState)([]),[p,g]=(0,BD.useState)(null),[h,E]=(0,BD.useState)(!1),y=K();(0,BD.useEffect)(()=>{l(e.status),w_e(e.name).then(U=>{f(U)})},[e]),vt((U,k)=>{if(k.return){c==="connected"?a===0?n():a===1?b():a===2&&I():a===0?b():a===1&&I();return}if(k.upArrow){let z=c==="connected"?2:1;u(Y=>Math.max(0,Y-1));return}if(k.downArrow){let z=c==="connected"?2:1;u(Y=>Math.min(z,Y+1));return}});let b=async()=>{E(!0);try{await i(e.name,c,U=>{g(U)})}finally{E(!1)}},I=()=>{o(e.name)},O=(U=>{switch(U){case"connected":return{icon:Vr.tick,color:y.success};case"failed":return{icon:Vr.cross,color:y.error};case"disabled":case"oauth":return{icon:Vr.circle,color:y.secondaryText};default:return{icon:Vr.circle,color:y.secondaryText}}})(c),Q=c==="connected"?[{label:"View tools",action:"View available tools"},{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:c==="failed"?[{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:c==="oauth"?[{label:"Reconnect(oauth)",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:[{label:"Reconnect",action:"Reconnect to server"}];return so.createElement(D,{flexDirection:"column",height:"100%"},so.createElement(D,{flexDirection:"column",borderStyle:"single",borderColor:"white"},so.createElement(D,{padding:1},so.createElement(C,{bold:!0,color:y.claude},e.name," MCP Server")),so.createElement(D,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},so.createElement(D,null,so.createElement(C,null,"Status: "),so.createElement(C,{color:O.color},O.icon," ",c)),t?.command&&so.createElement(D,null,so.createElement(C,null,"Command: "),so.createElement(C,{color:y.text},t.command)),t?.args&&so.createElement(D,null,so.createElement(C,null,"Args: "),so.createElement(C,{color:y.text},Array.isArray(t.args)?t.args.join(" "):t.args)),t?.url&&so.createElement(D,null,so.createElement(C,null,"URL: "),so.createElement(C,{color:y.text},t.url)),t&&so.createElement(D,null,so.createElement(C,null,"Config location: "),so.createElement(C,{color:y.secondaryText},t.configPath||"Unknown")),c==="connected"&&so.createElement(so.Fragment,null,so.createElement(D,null,so.createElement(C,null,"Capabilities: tools")),so.createElement(D,null,so.createElement(C,null,"Tools: ",d.length," tools")))),so.createElement(D,{flexDirection:"column",paddingX:1,marginBottom:1},h?so.createElement(D,{flexDirection:"row"},so.createElement(LB,null),so.createElement(C,{color:y.claude},"Reconnecting...")):Q.map((U,k)=>{let z=k===a;return so.createElement(D,{key:k},so.createElement(C,{color:z?y.claude:y.text},z?Vr.pointer:" "),so.createElement(C,{color:z?y.claude:y.text,bold:z},k+1,". ",U.label))})),so.createElement(D,{padding:1},so.createElement(C,{color:y.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back"))),c==="oauth"&&p&&so.createElement(D,{flexDirection:"column",paddingX:1},so.createElement(C,null,"Open in browser:"),so.createElement(C,{wrap:"wrap",color:y.link||"blue"},p)))}var ku=G(se(),1),VC=G(se(),1);Be();function gyr({serverName:e,onBack:t,onToolSelect:r}){let[n,o]=(0,VC.useState)(0),[i,s]=(0,VC.useState)([]),[a,u]=(0,VC.useState)({}),[c,l]=(0,VC.useState)(0),d=K(),f=15;(0,VC.useEffect)(()=>{let E=async()=>{let y={};for(let b=0;b<i.length;b++){let I=i[b];try{if(I.description){let x=await I.description();typeof x=="string"&&x.toLowerCase().includes("read")&&x.toLowerCase().includes("only")?y[b]="read-only":y[b]="read-write"}else y[b]="read-write"}catch(x){pe("Error loading tool description for access level:",x),y[b]="read-write"}}u(y)};i.length>0&&E()},[i]),(0,VC.useEffect)(()=>{e&&(async()=>{try{let y=await w_e(e.name);s(y)}catch{s([])}})()},[e]),vt((E,y)=>{if(y.return){if(i.length>0){let b=i[n];r(b)}return}if(y.upArrow){let b=Math.max(0,n-1);o(b),b<c&&l(b);return}if(y.downArrow){let b=Math.min(i.length-1,n+1);o(b),b>=c+f&&l(b-f+1);return}}),(0,VC.useEffect)(()=>{l(0),o(0)},[i]);let p=E=>{let y=E.name.match(/^mcp_[^_]+_(.+)$/);return y?y[1]:E.name},g=i.slice(c,c+f),h=i.length>f;return ku.createElement(D,{flexDirection:"column",height:"100%",borderStyle:"single",borderColor:"white"},ku.createElement(D,{padding:1},ku.createElement(C,{bold:!0,color:d.claude},"Tools for ",e.name," (",i.length," tools)")),ku.createElement(D,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},i.length===0?ku.createElement(C,{color:d.secondaryText},"No tools available for this server"):ku.createElement(ku.Fragment,null,h&&c>0&&ku.createElement(D,null,ku.createElement(C,{color:d.secondaryText},"\u2191 More tools above")),ku.createElement(D,{flexDirection:"column",flexGrow:1},g.map((E,y)=>{let b=c+y,I=b===n,x=p(E),O=a[b]||"read-write";return ku.createElement(D,{key:E.name},ku.createElement(C,{color:I?d.claude:d.text},I?Vr.pointer:" "),ku.createElement(C,{color:d.secondaryText},b+1,"."),ku.createElement(C,{color:I?d.claude:d.text,bold:I},x),ku.createElement(C,null," "),ku.createElement(C,{color:d.secondaryText},O))})),h&&c+f<i.length&&ku.createElement(D,null,ku.createElement(C,{color:d.secondaryText},"\u2193 More tools below")))),ku.createElement(D,{padding:1},ku.createElement(C,{color:d.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back")))}var qc=G(se(),1);function hyr({tool:e,serverName:t,onBack:r}){let[n,o]=(0,qc.useState)(""),[i,s]=(0,qc.useState)(!0),[a,u]=(0,qc.useState)(0),[c,l]=(0,qc.useState)(20),d=(0,qc.useRef)(null),f=K(),{stdout:p}=YOe();(0,qc.useEffect)(()=>{(async()=>{if(e?.description)try{let k=await e.description();o(k||"")}catch{o("")}else o("");s(!1)})()},[e]),(0,qc.useEffect)(()=>{p?.rows&&l(Math.max(10,p.rows-8))},[p]);let g=U=>{let k=U.name.match(/^mcp__[^_]+__(.+)$/);return k?k[1]:U.name},h=()=>i?"loading...":n&&n.toLowerCase().includes("read")&&n.toLowerCase().includes("only")?"read-only":"read-write",E=g(e),y=h(),I=(()=>{let U=[];return n&&(U.push("Description:"),U.push(...n.split(`
1564
1564
  `).map(k=>k.trim())),U.push("")),e.inputSchema&&(U.push("Parameters:"),e.inputSchema.properties?U.push(...(e.inputSchema+"").split(`
1565
1565
  `).map(k=>k.trim())):U.push("No parameters required")),U})(),x=c-6;vt((U,k)=>{if(k.escape){r();return}if(k.upArrow){u(z=>Math.max(0,z-1));return}if(k.downArrow){let z=I.length/x,Y=a+1;Y>z&&Y--,u(Y);return}});let O=I.slice(a*x,(a+1)*x),P=a>0,Q=(a+1)*x<I.length;return qc.default.createElement(D,{flexDirection:"column",borderStyle:"single",borderColor:"white",height:c},qc.default.createElement(D,{paddingX:1},qc.default.createElement(C,{bold:!0,color:f.claude},E," (",t.name,") [",y,"]")),i&&qc.default.createElement(D,{paddingX:1},qc.default.createElement(C,{color:f.secondaryText},"Loading tool details...")),qc.default.createElement(D,{flexDirection:"column",paddingX:1,flexGrow:1,height:c-3,ref:d},O.map((U,k)=>qc.default.createElement(C,{key:k,color:f.text},U))),qc.default.createElement(D,{paddingX:1},qc.default.createElement(C,{color:f.secondaryText,wrap:"truncate"},P&&"\u2191"," ",Q&&"\u2193"," to scroll (Esc back)")))}Id();function Eyr({onClose:e,context:t}){let[r,n]=(0,EM.useState)("list"),[o,i]=(0,EM.useState)(""),[s,a]=(0,EM.useState)(null),[u,c]=(0,EM.useState)([]),l=K(),d=25;Fa(()=>{e(-1)}),(0,EM.useEffect)(()=>{(async()=>{let b=await lo.getClients();c(b.filter(I=>I.name!=="___ide_").map(I=>({name:I.name,status:I.type})))})()},[]);let f=b=>{cBt(b),lo.reloadClients().then(I=>{c(I.filter(x=>x.name!=="___ide_").map(x=>({name:x.name,status:x.type}))),n("list"),Rn.emit("repl:reloadtools")})},p=async(b,I,x)=>{if((I==="oauth"?await lo.reconnect(b,!0,x):await lo.reconnect(b)).type==="connected"){let P=await lo.getClients();c(P.filter(Q=>Q.name!=="___ide_").map(Q=>({name:Q.name,status:Q.type}))),n("list"),Rn.emit("repl:reloadtools")}},g=b=>{i(b),n("details")},h=b=>{i(b),n("tools")},E=b=>{a(b),n("tool-details")};vt((b,I)=>{I.escape&&(r==="list"?e(-1):y())});let y=()=>{r==="details"?n("list"):r==="tools"?n("details"):r==="tool-details"&&n("tools")};return r==="list"?Fy.createElement(D,{flexDirection:"column",height:d},Fy.createElement(jnr,{servers:u,onServerSelect:g,onViewTools:h,onClose:e})):r==="details"?Fy.createElement(D,{flexDirection:"column",height:d},Fy.createElement(Ayr,{serverName:o,serverConfig:lo.getMcpServer(o),onBack:y,onServerDisable:f,onServerReconnect:p,onViewTools:()=>h(o),context:t})):r==="tools"?Fy.createElement(D,{flexDirection:"column",height:d},Fy.createElement(gyr,{serverName:o,onBack:y,onToolSelect:E})):r==="tool-details"?Fy.createElement(D,{flexDirection:"column",height:d},Fy.createElement(hyr,{tool:s,serverName:o,onBack:y})):Fy.createElement(C,null,"Unknown view: ",r)}var _yr=G(se(),1),J1o={type:"local-jsx",name:"mcp",description:()=>"Manage MCP servers",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e,t){return _yr.default.createElement(Eyr,{onClose:e,context:t})},userFacingName(){return"mcp"}},Syr=J1o;Ov();var fr=G(se(),1),O_e=G(se(),1);zr();oDe();Ww();xse();Ov();var N_e=["Mode","Dependencies","Overrides","Config"];function Z1o(e){return e?.enabled?e.autoAllowBashIfSandboxed!==!1?"auto-allow":"regular":"disabled"}function X1o(e){switch(e){case"auto-allow":return"Sandbox BashTool, with auto-allow";case"regular":return"Sandbox BashTool, with regular permissions";case"disabled":return"No Sandbox"}}function evo(e){switch(e){case"auto-allow":return"\u2713 Sandbox enabled with auto-allow for bash commands";case"regular":return"\u2713 Sandbox enabled with regular permissions";case"disabled":return"\u2713 Sandbox disabled"}}function tvo(e){return{network:{allowedDomains:e.network?.allowedDomains??[],deniedDomains:e.network?.deniedDomains??[],allowLocalBinding:e.network?.allowLocalBinding,allowUnixSockets:e.network?.allowUnixSockets,allowAllUnixSockets:e.network?.allowAllUnixSockets},filesystem:{allowWrite:e.filesystem?.allowWrite??[],denyWrite:e.filesystem?.denyWrite??[],denyRead:e.filesystem?.denyRead??[],allowRead:e.filesystem?.allowRead,allowGitConfig:e.filesystem?.allowGitConfig},ignoreViolations:e.ignoreViolations,enableWeakerNestedSandbox:e.enableWeakerNestedSandbox,enableWeakerNetworkIsolation:e.enableWeakerNetworkIsolation}}async function rvo(e,t){console.log("applyRuntimeSandbox",e);let r=Nc.isSandboxingEnabled();e?(r&&await Nc.stopSandbox(),await Nc.startSandbox(tvo(t))):r&&await Nc.stopSandbox()}function yyr({onClose:e}){let t=qt(),[r,n]=(0,O_e.useState)(t.sandbox??{}),[o,i]=(0,O_e.useState)(0),[s,a]=(0,O_e.useState)(0),u=Z1o(r),c=r.enabled===!0,l=r.allowUnsandboxedCommands!==!1,d=!0,f=hDt(),p=f.hasSeccompBpf&&f.hasSeccompApply,g=jw(),h=r.filesystem?.allowWrite??[],E=r.filesystem?.denyWrite??[],y=null;try{gf.isSandboxingEnabled()&&(y=gf.getFsWriteConfig())}catch{}let b=y?y.allowOnly:[...g,...h],I=y?y.denyWithinAllow:E;function x(ge){n(ge);let te=ol.loadSettings();ol.saveProjectSettings({...te,sandbox:ge})}vt((ge,te)=>{if(te.escape){e();return}if(te.leftArrow){i(le=>Math.max(0,le-1)),a(0);return}if(te.rightArrow){i(le=>Math.min(N_e.length-1,le+1)),a(0);return}let F=N_e[o];if(F==="Mode"){let le=["auto-allow","regular","disabled"];if(te.upArrow){a(Ee=>Math.max(0,Ee-1));return}if(te.downArrow){a(Ee=>Math.min(le.length-1,Ee+1));return}if(te.return||ge===" "){let Ee=le[s],ie={...r,enabled:Ee!=="disabled",autoAllowBashIfSandboxed:Ee==="auto-allow"};rvo(Ee!=="disabled",ie).catch(()=>{}),x(ie),e(evo(Ee));return}}if(F==="Overrides"){if(!c)return;if(te.upArrow){a(le=>Math.max(0,le-1));return}if(te.downArrow){a(le=>Math.min(1,le+1));return}if(te.return||ge===" "){let le=s===0;x({...r,allowUnsandboxedCommands:le}),e(le?"\u2713 Allow unsandboxed fallback enabled":"\u2713 Strict sandbox mode enabled");return}}});let O=K();function P(){return fr.createElement(D,{marginBottom:1},fr.createElement(C,{bold:!0,color:O.claude}," Sandbox: "),N_e.map((ge,te)=>fr.createElement(D,{key:ge},fr.createElement(C,{color:te===o?O.claude:void 0,bold:te===o},` ${ge} `))))}function Q(){return fr.createElement(D,{flexDirection:"column"},!p&&fr.createElement(C,{dimColor:!0}," Cannot block unix domain sockets (see Dependencies tab)",`
1566
1566
  `),fr.createElement(C,{bold:!0}," Configure Mode:",`
package/hands.js CHANGED
@@ -752,7 +752,7 @@ data: ${JSON.stringify($)}
752
752
  [Search queries used: ${r.groundingMetadata.webSearchQueries.join(", ")}]`}));let i={id:`msg_${Math.random().toString(36).slice(2)}`,type:"message",role:"assistant",model:t.modelVersion||"gemini",content:n,stop_reason:r.finishReason?r.finishReason==="STOP"&&n.some(o=>o.type==="tool_use")?"tool_use":this.mapGeminiFinishReason(r.finishReason):"end_turn",stop_sequence:null,usage:{input_tokens:t.usageMetadata?.promptTokenCount||0,output_tokens:t.usageMetadata?.candidatesTokenCount||0}};return this.logger&&this.logger.debug({result:i},"Conversion complete, final Anthropic response"),i}catch{throw zMr(`Provider error: ${JSON.stringify(t)}`,500,"provider_error")}}mapGeminiFinishReason(t){switch(t){case"STOP":return"end_turn";case"MAX_TOKENS":return"max_tokens";case"SAFETY":case"RECITATION":return"stop_sequence";default:return"end_turn"}}},ZEe=new JEe;var Elt=ie(mlt(),1);function fA(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function glt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function ozr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function szr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function azr(e,t="chat"){let r={request:{},response:{},openai:{request:{},response:{}}};return r.request.model=e.request.body.model,r.request.messages=e.request.body.messages,r.request.system=e.request.body.system,r.response.content=e.response.body.content,t==="responses"?(r.openai.request.model=e.openai.request.body.model,r.openai.request.input=e.openai.request.body.input,r.openai.response.output=e.openai.response.body?.output):(r.openai.request.model=e.openai.request.body.model,r.openai.request.messages=e.openai.request.body.messages,r.openai.response.choices=e.openai.response.body.choices),r}function eU(e,t,r){cG(t,e),dG(t,azr(e,r),r)}function dR(e){let t=[],r=e.getReader(),n,i=new Promise(u=>n=u),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(u){try{let{done:l,value:c}=await r.read();if(l){u.close(),s();return}t.push(c),u.enqueue(c)}catch(l){u.error(l),s()}},cancel(u){r.cancel(u).catch(()=>{}),s()}}),done:i}}function tU(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function vCe(e,t,r,n,i){let o;try{o={type:"error",error:{type:"api_error",message:JSON.parse(i).error?.message??`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}catch{o={type:"error",error:{type:"api_error",message:`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}return new Response(JSON.stringify(o),{status:r,statusText:n,headers:{"Content-Type":"application/json"}})}var hlt=["/v1/messages"];function DCe(e){let t;try{typeof e=="string"?t=new ST(e):e instanceof ST?t=e:t=new ST(e.url)}catch{return""}let r=t.pathname;for(let n of hlt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function SK(e,t){let r=typeof e=="string"?e:e instanceof ST?e.toString():e.url,n;try{n=new ST(r).pathname}catch{return!1}return hlt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function uzr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await TV.transformRequestOut(n),o=DCe(t)+"/chat/completions",s=fA(r.headers),a=s.authorization??s.Authorization??"";ozr(i,glt(s));let u=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i)});if(!u.ok){let _=await u.text();return le(`OpenAI Chat Completions API error: ${u.status}`,{url:o,errorResponse:_}),vCe("OpenAI Chat Completions API error","OPENROUTER",u.status,u.statusText,_)}let l=n.stream===!0,c=s["x-agent-id"],f={request:{url:o,method:r.method,headers:s,body:n},response:{status:u.status,statusText:u.statusText,headers:fA(u.headers)},openai:{request:{body:i},response:{}}};if(!l){let _=await u.text(),C=new Response(_,{status:u.status,statusText:u.statusText,headers:tU(u.headers)}),S=await TV.transformResponseIn(C,n),T=await S.text();try{eU({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(T)}},c)}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",x)}return new Response(T,{status:S.status,statusText:S.statusText,headers:S.headers})}let A=dR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:tU(u.headers)}),g=await TV.transformResponseIn(m,n),E=dR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{eU({...f,openai:{...f.openai,response:{body:await qXe(_)}},response:{...f.response,body:await YL(C)}},c)}catch(S){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(E.stream,{status:g.status,statusText:g.statusText,headers:g.headers})}}function lzr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await vV.transformRequestOut(n),o=fA(r.headers);szr(i,glt(o));let s=JSON.stringify(i),u=DCe(t)+"/responses",l=o.authorization??o.Authorization??"";if(!l)return new Response(JSON.stringify({type:"error",error:{type:"api_error",message:"Missing Authorization header",code:"RESPONSES_AUTH_MISSING"}}),{status:401,headers:{"Content-Type":"application/json"}});let c=await e(u,{method:"POST",headers:{"Content-Type":"application/json",Authorization:l,"x-api-key":l.replace(/^Bearer\s+/i,"").trim()},body:s});if(!c.ok){let S=await c.text();return le(`OpenAI Responses API error: ${c.status} ${c.statusText}`,{url:u,status:c.status,errorResponse:S}),vCe("OpenAI Responses API error","RESPONSES",c.status,c.statusText,S)}let f=n.stream===!0,A=o["x-agent-id"],m={request:{url:u,method:r.method,headers:o,body:n},response:{status:c.status,statusText:c.statusText,headers:fA(c.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await c.text(),T=new Response(S,{status:c.status,statusText:c.statusText,headers:tU(c.headers)}),x=await vV.transformResponseIn(T,n),O=await x.text();try{eU({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},A,"responses")}catch(q){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",q)}return new Response(O,{status:x.status,statusText:x.statusText,headers:x.headers})}let g=dR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:tU(c.headers)}),_=await vV.transformResponseIn(E,n),C=dR(_.body);return Promise.all([g.done,C.done]).then(async([S,T])=>{try{eU({...m,openai:{...m.openai,response:{body:await HXe(S)}},response:{...m.response,body:await YL(T)}},A,"responses")}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+x?.stack)}}).catch(S=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(C.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function czr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=fA(r.headers),o=await ZEe.transformRequestOut(n),s=JSON.stringify(o),a=DCe(t)+`/models/${n.model}:streamGenerateContent?alt=sse`,u=i.authorization??i.Authorization??"",l;try{l=await e(a,{method:"POST",headers:{"Content-Type":"application/json","x-goog-api-key":String(u).replace(/^Bearer\s+/i,"").trim()},body:s})}catch(C){throw le("gemini request error:",C),C}if(!l.ok){let C=await l.text();return le(`Gemini API error response: ${l.status} ${l.statusText}`,{url:a,status:l.status,errorResponse:C}),vCe("Gemini API error","Gemini",l.status,l.statusText,C)}let c=n.stream===!0,f=i["x-agent-id"],A={request:{url:a,method:r.method,headers:fA(r.headers),body:n},response:{status:l.status,statusText:l.statusText,headers:fA(l.headers)},openai:{request:{body:o},response:{}}},m=dR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:tU(l.headers)}),E=await ZEe.transformResponseIn(g),_=dR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let T=c?GXe(C):JSON.parse(C),x=c?await YL(S):JSON.parse(S);eU({...A,openai:{...A.openai,response:{body:T}},response:{...A.response,body:x}},f)}catch(T){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+T?.stack)}}).catch(C=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+C)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function dzr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=r.body;if(r.body)try{let f=JSON.parse(r.body);n=JSON.stringify(f)}catch{}let i=fA(r.headers);["1","true"].includes(String(process.env.HAWA_CODE_X_API_KEY_DISABLED??"").toLowerCase())&&(delete i["x-api-key"],delete i["X-API-Key"]),["1","true"].includes(String(process.env.HAWA_CODE_AUTH_DISABLED??"").toLowerCase())&&(delete i.authorization,delete i.Authorization),delete i["content-length"];let a=await e(t,{method:r.method,headers:i,body:n});if(!a.ok){let f=await a.text();le(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof ST?t.toString():t.url,status:a.status,errorResponse:f});let A;try{let m=JSON.parse(f);A={type:"error",error:{type:"api_error",message:m.error?.message||m.message||`API error: ${a.statusText}`,code:m.error?.code||m.code||`API_${a.status}_ERROR`}},m.error?.details&&(A.error.details=m.error.details)}catch{A={type:"error",error:{type:"api_error",message:`API error: ${a.statusText}`,code:`API_${a.status}_ERROR`}}}return new Response(JSON.stringify(A),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"application/json"}})}let u=a.clone(),l=!(Object.hasOwn(JSON.parse(n),"stream")&&!JSON.parse(n).stream),c={request:{url:typeof t=="string"?t:t instanceof ST?t.toString():t.url,method:r.method,headers:fA(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:fA(a.headers)}};return(async()=>{if(l){let m=await a.text();c.response.body=await YL(m)}else c.response.body=await a.json();let A=fA(r.headers)["x-agent-id"];cG(A,c),dG(A,{request:c.request.body.messages,response:c.response.body.content})})().catch(f=>le(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
753
753
  Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var TCe=null,Alt=!1;function fzr(){if(Alt)return TCe;Alt=!0;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(TCe=new Elt.ProxyAgent({uri:e}),qt(`[proxy] using proxy: ${e}`)),TCe}function pzr(){let e=fzr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function IK(e){let t=e||process.env.API_TYPE,r=pzr();switch(t){case"openai":return uzr(r);case"openai-responses":return lzr(r);case"gemini":return czr(r);default:return dzr(r)}}var hzr=ie(Ce(),1);function _lt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=mzr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function mzr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Azr(t)?0:gzr(t)?2:1}function Azr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function gzr(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function pA(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function eC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();_d();var S0={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0};function TK(e,t){S0.totalCost+=e,S0.totalAPIDuration+=t}function vK(e,t){S0.inputTokens+=e,S0.outputTokens+=t,Ci.emit("token:change",{inputTokens:S0.inputTokens,outputTokens:S0.outputTokens})}function Ezr(){return Date.now()-S0.startTime}function _zr(e){return`$${e>.5?yzr(e,100).toFixed(2):e.toFixed(4)}`}function ylt(){return _r.grey(`Total cost: ${_zr(S0.totalCost)}
754
754
  Total duration (API): ${pA(S0.totalAPIDuration)}
755
- Total duration (wall): ${pA(Ezr())}`)}function yzr(e,t){return Math.round(e*t)/t}Ue();He();He();var wCe="1.36.2";globalThis.MACRO={VERSION:wCe,PACKAGE_URL:`@dahawa/${Ao}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var DK=process.env.HAWA_CODE_USER_AGENT||`${Ao}/${wCe} (${process.env.USER_TYPE})`;import{randomUUID as Ek}from"crypto";var bzr=()=>[],Czr=()=>{};function xK(){return bzr}function blt(){return Czr}Ue();ir();Br();Ue();He();import{existsSync as D0,readdirSync as $Vr,statSync as zVr}from"fs";import{join as nC,relative as YVr}from"path";import{homedir as Ydt}from"os";import{platform as jVr}from"process";import{readFile as iC}from"fs/promises";Br();I0();kr();import{join as Dzr,sep as xzr}from"path";function qp(){if(!Hp())return!1;try{let e=yr();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Tf(){return(Dzr(Fe(),".hcode","team-memory")+xzr).normalize("NFC")}function NCe(e){let t=e.normalize("NFC"),r=Tf();return t.startsWith(r)}var jdt=ie(HK(),1);qi();var qdt=ie(HK(),1);Br();He();Ue();od();import{readFile as Udt}from"fs/promises";import{existsSync as VCe,readdirSync as UVr,statSync as HVr}from"fs";import{join as WCe,relative as Gdt}from"path";import{homedir as qVr}from"os";function Hdt(e){try{let t=(0,qdt.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return we(t),{paths:[],content:e.trim()}}}function GVr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return we(n),!1}})}function KCe(e){let t=[];try{if(!VCe(e))return t;let r=UVr(e);for(let n of r){let i=WCe(e,n),o=HVr(i);o.isDirectory()?t.push(...KCe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){we(r)}return t}async function $dt(){let e=[];try{let t=WCe(qVr(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){we(i)}}}catch(t){we(t)}try{let t=WCe(Fe(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:Gdt(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){we(i)}}}catch(t){we(t)}return e}function zdt(e,t){e=aY(e);let r=aY(Fe()),n=e.startsWith(r)?Gdt(r,e):e;return t.filter(i=>GVr(n,i.paths))}var VVr=`# hawaCodeMd
755
+ Total duration (wall): ${pA(Ezr())}`)}function yzr(e,t){return Math.round(e*t)/t}Ue();He();He();var wCe="1.36.3";globalThis.MACRO={VERSION:wCe,PACKAGE_URL:`@dahawa/${Ao}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var DK=process.env.HAWA_CODE_USER_AGENT||`${Ao}/${wCe} (${process.env.USER_TYPE})`;import{randomUUID as Ek}from"crypto";var bzr=()=>[],Czr=()=>{};function xK(){return bzr}function blt(){return Czr}Ue();ir();Br();Ue();He();import{existsSync as D0,readdirSync as $Vr,statSync as zVr}from"fs";import{join as nC,relative as YVr}from"path";import{homedir as Ydt}from"os";import{platform as jVr}from"process";import{readFile as iC}from"fs/promises";Br();I0();kr();import{join as Dzr,sep as xzr}from"path";function qp(){if(!Hp())return!1;try{let e=yr();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Tf(){return(Dzr(Fe(),".hcode","team-memory")+xzr).normalize("NFC")}function NCe(e){let t=e.normalize("NFC"),r=Tf();return t.startsWith(r)}var jdt=ie(HK(),1);qi();var qdt=ie(HK(),1);Br();He();Ue();od();import{readFile as Udt}from"fs/promises";import{existsSync as VCe,readdirSync as UVr,statSync as HVr}from"fs";import{join as WCe,relative as Gdt}from"path";import{homedir as qVr}from"os";function Hdt(e){try{let t=(0,qdt.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return we(t),{paths:[],content:e.trim()}}}function GVr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return we(n),!1}})}function KCe(e){let t=[];try{if(!VCe(e))return t;let r=UVr(e);for(let n of r){let i=WCe(e,n),o=HVr(i);o.isDirectory()?t.push(...KCe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){we(r)}return t}async function $dt(){let e=[];try{let t=WCe(qVr(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){we(i)}}}catch(t){we(t)}try{let t=WCe(Fe(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:Gdt(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){we(i)}}}catch(t){we(t)}return e}function zdt(e,t){e=aY(e);let r=aY(Fe()),n=e.startsWith(r)?Gdt(r,e):e;return t.filter(i=>GVr(n,i.paths))}var VVr=`# hawaCodeMd
756
756
  Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function WVr(e="default"){let r=Ye.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(i=>{let o=i.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${i.filePath} (${o}):
757
757
 
758
758
  ${i.content}`}).join(`
@@ -1015,7 +1015,7 @@ try {
1015
1015
  `],{encoding:"utf8",maxBuffer:SAt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function $Zr(){try{let e=HU("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var zZr="[Image pasted]";function DAt(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function wAt({value:e,onChange:t,onSubmit:r,onExit:n,onExitMessage:i,onMessage:o,onHistoryUp:s,onHistoryDown:a,onHistoryReset:u,mask:l="",multiline:c=!1,cursorChar:f,invert:A,columns:m,onImagePaste:g,disableCursorMovementForUpDownKeys:E=!1,externalOffset:_,onOffsetChange:C}){let S=_,T=C,x=UU.fromText(e,m,S),[O,q]=(0,xAt.useState)(null);function $(){O&&(clearTimeout(O),q(null),o?.(!1))}let H=qT(ce=>{$(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),L=qT(ce=>{$(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function Y(){return UU.fromText("",m,0)}let z=qT(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function fe(){return $(),x.text===""?(z(),x):x.del()}function me(){if(l)return x;let ce=vAt();return ce===null?(TAt()&&(o?.(!0,IAt),$(),q(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(zZr))}let M=DAt([["a",()=>x.startOfLine()],["b",()=>x.left()],["c",H],["d",fe],["e",()=>x.endOfLine()],["f",()=>x.right()],["h",()=>($(),x.backspace())],["k",()=>x.deleteToLineEnd()],["l",()=>Y()],["n",()=>ee()],["p",()=>ae()],["u",()=>x.deleteToLineStart()],["v",me],["w",()=>x.deleteWordBefore()],["o",me]]),ue=DAt([["b",()=>x.prevWord()],["f",()=>x.nextWord()],["d",()=>x.deleteWordAfter()]]);function Ae(ce){if(c&&x.offset>0&&x.text[x.offset-1]==="\\")return x.backspace().insert(`
1016
1016
  `);if(ce.meta)return x.insert(`
1017
1017
  `);r?.(e)}function ae(){if(E)return s?.(),x;let ce=x.up();return ce.equals(x)&&s?.(),ce}function ee(){if(E)return a?.(),x;let ce=x.down();return ce.equals(x)&&a?.(),ce}function ve(ce,Ge){if(Ge.tab)return;if(Ge.backspace||Ge.delete||ce==="\b"||ce==="\x7F"||ce==="\b"){let K=x.backspace();x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}if(!Ge.ctrl&&!Ge.meta&&ce.length>1){let K=x.insert(ce);x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}let Ee=Se(Ge)(ce);Ee&&(x.equals(Ee)||(T(Ee.offset),x.text!==Ee.text&&t(Ee.text)))}function Se(ce){if(ce.backspace||ce.delete)return $(),()=>x.backspace();switch(!0){case ce.escape:return L;case(ce.leftArrow&&(ce.ctrl||ce.meta||"fn"in ce&&ce.fn)):return()=>x.prevWord();case(ce.rightArrow&&(ce.ctrl||ce.meta||"fn"in ce&&ce.fn)):return()=>x.nextWord();case ce.ctrl:return M;case("home"in ce&&ce.home):return()=>x.startOfLine();case("end"in ce&&ce.end):return()=>x.endOfLine();case ce.pageDown:return()=>x.endOfLine();case ce.pageUp:return()=>x.startOfLine();case ce.meta:return ue;case ce.return:return()=>Ae(ce);case ce.upArrow:return ae;case ce.downArrow:return ee;case ce.leftArrow:return()=>x.left();case ce.rightArrow:return()=>x.right()}return function(Ge){switch(!0){case(Ge=="\x1B[H"||Ge=="\x1B[1~"):return x.startOfLine();case(Ge=="\x1B[F"||Ge=="\x1B[4~"):return x.endOfLine();case(Ge==="\b"||Ge==="\x7F"||Ge==="\b"):return $(),x.backspace();default:return x.insert(Ge.replace(/\r/g,`
1018
- `))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function qU({value:e,placeholder:t="",focus:r=!0,mask:n,multiline:i=!1,highlightPastedText:o=!1,showCursor:s=!0,onChange:a,onSubmit:u,onExit:l,onHistoryUp:c,onHistoryDown:f,onExitMessage:A,onMessage:m,onHistoryReset:g,columns:E,onImagePaste:_,onPaste:C,isDimmed:S=!1,disableCursorMovementForUpDownKeys:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=wAt({value:e,onChange:a,onSubmit:u,onExit:l,onExitMessage:A,onMessage:m,onHistoryReset:g,onHistoryUp:c,onHistoryDown:f,focus:r,mask:n,multiline:i,cursorChar:s?" ":"",highlightPastedText:o,invert:ue=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(ye().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=sSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(ye().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(ye().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return sSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var aSe=ie(Ce(),1),GU=ie(Ce(),1);fU();_d();qi();UT();kr();var BAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function jT(){let e=[...BAt,...[...BAt].reverse()],[t,r]=(0,GU.useState)(0);return(0,GU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),aSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},aSe.createElement(v,{color:ye().claude},e[t]))}qi();function lC(){return Ye.getSessionContext().window_size?{...Ye.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}He();import{homedir as ZU}from"os";import{join as VR}from"path";import{existsSync as XU,mkdirSync as _ht,appendFileSync as Eht,readFileSync as yht,constants as qtn,writeFileSync as Gtn,unlinkSync as bht,statSync as $tn}from"fs";import{platform as Cht}from"process";Ue();import{accessSync as ztn}from"fs";Ue();var oyi=ie(xSe(),1);var Htn="1.36.2",JU={VERSION:Htn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var WT=VR(vI,".update.lock"),Ytn=300*1e3;function Sht(){try{if(XU(vI)||_ht(vI,{recursive:!0}),XU(WT)){let e=$tn(WT);if(Date.now()-e.mtimeMs<Ytn)return!1;try{bht(WT)}catch(r){return we(`Failed to remove stale lock file: ${r}`),!1}}return Gtn(WT,`${process.pid}`,"utf8"),!0}catch(e){return we(`Failed to acquire lock: ${e}`),!1}}function Iht(){try{XU(WT)&&yht(WT,"utf8")===`${process.pid}`&&bht(WT)}catch(e){we(`Failed to release lock: ${e}`)}}async function wSe(){try{let e=await Wn("npm -g config get prefix");if(e.code!==0)return we("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{ztn(t,qtn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(we("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return we(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function Tht(e){if(!Sht())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:JU.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{XU(e)||_ht(e,{recursive:!0});let t=await Wn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1018
+ `))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function qU({value:e,placeholder:t="",focus:r=!0,mask:n,multiline:i=!1,highlightPastedText:o=!1,showCursor:s=!0,onChange:a,onSubmit:u,onExit:l,onHistoryUp:c,onHistoryDown:f,onExitMessage:A,onMessage:m,onHistoryReset:g,columns:E,onImagePaste:_,onPaste:C,isDimmed:S=!1,disableCursorMovementForUpDownKeys:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=wAt({value:e,onChange:a,onSubmit:u,onExit:l,onExitMessage:A,onMessage:m,onHistoryReset:g,onHistoryUp:c,onHistoryDown:f,focus:r,mask:n,multiline:i,cursorChar:s?" ":"",highlightPastedText:o,invert:ue=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(ye().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=sSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(ye().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(ye().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return sSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var aSe=ie(Ce(),1),GU=ie(Ce(),1);fU();_d();qi();UT();kr();var BAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function jT(){let e=[...BAt,...[...BAt].reverse()],[t,r]=(0,GU.useState)(0);return(0,GU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),aSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},aSe.createElement(v,{color:ye().claude},e[t]))}qi();function lC(){return Ye.getSessionContext().window_size?{...Ye.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}He();import{homedir as ZU}from"os";import{join as VR}from"path";import{existsSync as XU,mkdirSync as _ht,appendFileSync as Eht,readFileSync as yht,constants as qtn,writeFileSync as Gtn,unlinkSync as bht,statSync as $tn}from"fs";import{platform as Cht}from"process";Ue();import{accessSync as ztn}from"fs";Ue();var oyi=ie(xSe(),1);var Htn="1.36.3",JU={VERSION:Htn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var WT=VR(vI,".update.lock"),Ytn=300*1e3;function Sht(){try{if(XU(vI)||_ht(vI,{recursive:!0}),XU(WT)){let e=$tn(WT);if(Date.now()-e.mtimeMs<Ytn)return!1;try{bht(WT)}catch(r){return we(`Failed to remove stale lock file: ${r}`),!1}}return Gtn(WT,`${process.pid}`,"utf8"),!0}catch(e){return we(`Failed to acquire lock: ${e}`),!1}}function Iht(){try{XU(WT)&&yht(WT,"utf8")===`${process.pid}`&&bht(WT)}catch(e){we(`Failed to release lock: ${e}`)}}async function wSe(){try{let e=await Wn("npm -g config get prefix");if(e.code!==0)return we("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{ztn(t,qtn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(we("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return we(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function Tht(e){if(!Sht())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:JU.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{XU(e)||_ht(e,{recursive:!0});let t=await Wn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1019
1019
  # npm global path
1020
1020
  export PATH="${e}/bin:$PATH"
1021
1021
  `;if(Cht==="win32"){let n=await Wn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[VR(ZU(),".bashrc"),VR(ZU(),".bash_profile"),VR(ZU(),".zshrc"),VR(ZU(),".config","fish","config.fish")];for(let i of n)if(XU(i))try{if(!yht(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
@@ -1424,7 +1424,7 @@ ${o}
1424
1424
  - Task IDs can be found using the /tasks command
1425
1425
  - Works for both shell tasks (IDs starting with 's') and agent tasks (IDs starting with 'a')
1426
1426
  - For shell tasks, sends SIGTERM first, then SIGKILL if needed
1427
- - For agent tasks, marks the task as failed and triggers completion handlers`;mA();SI();PB();var Mbn=Le(()=>V.strictObject({task_id:V.string().describe("The ID of the background task to stop")})),L9={name:DOt,async description(){return xOt},async prompt(){return wOt},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return Mbn()},userFacingName(){return"Stop Task"},async isEnabled(){return!0},needsPermissions(){return!1},async validateInput({task_id:e}){return!e||e.trim().length===0?{result:!1,message:"task_id is required and cannot be empty"}:{result:!0}},renderToolUseMessage({task_id:e}){return`Stop task: ${e}`},renderToolUseRejectedMessage(){return wte.createElement(v,{color:"red"},"\xA0\xA0\u23BF \xA0 Task stop operation was rejected")},renderToolResultMessage(e){let{stopped:t,task_id:r,message:n}=e;return t?wte.createElement(v,{color:"green"},"\xA0\xA0\u23BF \xA0",n):wte.createElement(v,{color:"red"},"\xA0\xA0\u23BF \xA0",n)},renderResultForAssistant({stopped:e,task_id:t,message:r,task_type:n}){return`Task ${t} (${n}) stop operation: ${r}`},async*call(e,{abortController:t}){let{task_id:r}=e;if(t.signal.aborted){let n={message:"Operation cancelled",task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(n),data:n};return}try{let n=r.startsWith("a"),i=r.startsWith("s");if(n){let o=pc.stopTask(r),s={message:o.reason,task_id:r,stopped:o.success,task_type:"agent"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else if(i){let o=r.startsWith("sp")?yp.stop(r):uu.stop(r),s={message:o?`Successfully stopped shell task: ${r}`:`Failed to stop shell task: ${r}`,task_id:r,stopped:o,task_type:"shell"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else{let o={message:`Unknown task type for ID: ${r}. Task IDs should start with 'a' (agent) or 's' (shell).`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(o),data:o}}}catch(n){let o={message:`Error stopping task: ${n instanceof Error?n.message:String(n)}`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(o),data:o}}}};var BOt=`${rt}/hands`,Bte="hawa/handsData",NOt=[iQ()?um:Mi,zC,YC,JC,ZC,VC,Sh,F9,Q9,L9],ROt=[um,Mi,zC,YC,JC,ZC,VC,Sh,F9,Q9,L9];var Nte=null;function Fbn(e,t){Nte={name:e,client:t},_O.cache.clear?.(),yO.cache.clear?.(),Bn.clear()}function Qbn(){_O.cache.clear?.(),yO.cache.clear?.(),Bn.clear()}function OOt(e){let t=sd(),r=QQ(),n=tn();if(t.mcpServers?.[e])return{...t.mcpServers[e],scope:"project"};if(r?.[e])return{...r[e],scope:"mcprc"};if(n.mcpServers?.[e])return{...n.mcpServers[e],scope:"global"}}async function kOt(e,t,r=!1,n=null){if(t.type==="sse"||t.type==="http"){let i=new _Z(t.url,t.headers,e);return await i.connectD(r,n),i}else{let i=t.type==="sse"?new cZ(new URL(t.url)):new rZ({command:t.command,args:t.args,env:{...process.env,...t.env},stderr:"pipe"}),o=new sC({name:`${rt}`,version:"0.1.0"},{capabilities:{}}),s=t.timeout??5e3,a=o.connect(i),u=new Promise((l,c)=>{let f=setTimeout(()=>{c(new Error(`Connection to MCP server "${e}" timed out after ${s}ms`))},s);a.then(()=>clearTimeout(f),()=>clearTimeout(f))});return await Promise.race([a,u]),t.type==="stdio"&&i.stderr?.on("data",l=>{let c=l.toString().trim();c&&Hy(e,`Server stderr: ${c}`)}),o}}function ZNe(e){let t=sd();return t.approvedMcprcServers?.includes(e)?"approved":t.rejectedMcprcServers?.includes(e)?"rejected":"pending"}var Lbn=async(e,t=!1,r=null)=>{ZNe(e)==="rejected"&&BKe(e);let i=OOt(e);if(!i)return{name:e,type:"failed"};try{let o=await kOt(e,i,t,r),s=await _O(),a={name:e,client:o,type:"connected"},u=s.findIndex(l=>l.name===e);return u!==-1?s[u]=a:s.push(a),yO.cache.clear?.(),a}catch{return{name:e,type:"failed"}}},Pbn=()=>(Qbn(),_O()),_O=Le(async()=>{if(process.env.CI)return[];let e=tn().mcpServers??{},t=QQ(),r=sd().mcpServers??{},n=jq(t,(l,c)=>ZNe(c)==="approved"),i=jq(t,(l,c)=>ZNe(c)==="rejected"),o=Object.keys(i).map(l=>({name:l,type:"disabled"})),s={...C1t,...e,...n,...r},a=await Promise.all(Object.entries(s).map(async([l,c])=>{try{let f=await kOt(l,c);return dt("tengu_mcp_server_connection_succeeded",{}),{name:l,client:f,type:"connected"}}catch(f){return f instanceof Ca?{name:l,type:"oauth"}:(dt("tengu_mcp_server_connection_failed",{}),Hy(l,`Connection failed: ${f instanceof Error?f.message:String(f)}`),{name:l,type:"failed"})}})),u=Nte?[{name:Nte.name,client:Nte.client,type:"connected"}]:[];return[...a,...u,...o]});async function MOt(e,t,r){let n=await _O();return(await Promise.allSettled(n.map(async o=>{if(o.type!=="connected")return null;try{return(await o.client.getServerCapabilities())?.[r]?{client:o,result:await o.client.request(e,t)}:null}catch(s){return o.type==="connected"&&Hy(o.name,`Failed to request '${e.method}': ${s instanceof Error?s.message:String(s)}`),null}}))).filter(o=>o.status==="fulfilled").map(o=>o.value).filter(o=>o!==null)}function Rte(e){return e.replaceAll(".","-")}async function Ote(e){return(await yO()).filter(n=>n.name.startsWith(`mcp_${e}_`))}function Ubn(e){try{return e.client.getServerVersion?.()?.name===BOt}catch{return!1}}var Hbn=new Map(ROt.map(e=>[e.name,e]));function qbn(e,t,r){return{...CIe,name:"mcp_"+Rte(e.name)+"_"+Rte(t.name),async description(){return t.description??""},userFacingName(){return"H-"+r.userFacingName()},async prompt(){return t.description??""},isMcp(){return!0},async isEnabled(){return!0},renderToolResultMessage:r.renderToolResultMessage,inputSchema:cl(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(n){let{data:i,resultForAssistant:o}=await zbn({client:e,tool:t.name,args:n});yield{type:"result",data:i,resultForAssistant:o}}}}function Gbn(e,t){return{...CIe,name:"mcp_"+Rte(e.name)+"_"+Rte(t.name),async description(){return t.description??""},async prompt(){return t.description??""},isMcp(){return!0},inputSchema:cl(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(r){let n=await $bn({client:e,tool:t.name,args:r});yield{type:"result",data:{},resultForAssistant:n}},userFacingName(){return`${e.name.length>10?`...${e.name.slice(-10)}`:e.name}:${t.name}`}}}var yO=Le(async()=>{let t=(await MOt({method:"tools/list"},BM,"tools")).flatMap(({client:r,result:{tools:n}})=>{let i=Ubn(r);return n.map(o=>{if(i){let s=Hbn.get(o.name);if(s)return qbn(r,o,s)}return Gbn(r,o)})});return fZ.batchUpdateMcpTools(t),t});async function $bn({client:{client:e,name:t},tool:r,args:n}){let i=await e.callTool({name:r,arguments:n},Mm);return(await y1t(i,r,t)).content}async function zbn({client:{client:e},tool:t,args:r}){let n=await e.callTool({name:t,arguments:r},Mm),i=n?._meta?.[Bte],o=Array.isArray(n?.content)?n.content.filter(u=>u?.type==="text"&&typeof u.text=="string").map(u=>u.text).join(""):"",s=typeof i?.resultForAssistant=="string"?i.resultForAssistant:o;return{data:i&&"data"in i?i.data:s,resultForAssistant:s}}var FOt=Le(async()=>(await MOt({method:"prompts/list"},wM,"prompts")).flatMap(({client:t,result:r})=>r.prompts?.map(n=>{let i=Object.values(n.arguments??{}).map(o=>o.name);return{type:"prompt",name:"mcp__"+t.name+"__"+n.name,description:()=>n.description??"",isEnabled:!0,isHidden:!1,progressMessage:"running",userFacingName(){return`${t.name}:${n.name} (MCP)`},argNames:i,async getPromptForCommand(o){let s=o.split(" ");return await Ybn({name:n.name,client:t},Ffe(i,s))}}})));Bn.add(FOt);Bn.getMCPCommands=FOt;Bn.getMcpServer=OOt;Bn.getClients=_O;Bn.reloadClients=Pbn;Bn.reconnect=Lbn;Bn.registerIDEClient=Fbn;async function Ybn({name:e,client:t},r){try{return(await t.client.getPrompt({name:e,arguments:r})).messages.map(i=>({role:i.role,content:[i.content.type==="text"?{type:"text",text:i.content.text}:{type:"image",source:{data:String(i.content.data),media_type:i.content.mimeType,type:"base64"}}]}))}catch(n){throw Hy(t.name,`Error running command '${e}': ${n instanceof Error?n.message:String(n)}`),n}}function QOt({serverName:e,serverConfig:t,onBack:r,onViewTools:n,onServerDisable:i,onServerReconnect:o,context:s}){let[a,u]=(0,XC.useState)(0),[l,c]=(0,XC.useState)("connected"),[f,A]=(0,XC.useState)([]),[m,g]=(0,XC.useState)(null),[E,_]=(0,XC.useState)(!1),C=ye();(0,XC.useEffect)(()=>{c(e.status),Ote(e.name).then(H=>{A(H)})},[e]),dr((H,L)=>{if(L.return){l==="connected"?a===0?n():a===1?S():a===2&&T():a===0?S():a===1&&T();return}if(L.upArrow){let Y=l==="connected"?2:1;u(z=>Math.max(0,z-1));return}if(L.downArrow){let Y=l==="connected"?2:1;u(z=>Math.min(Y,z+1));return}});let S=async()=>{_(!0);try{await o(e.name,l,H=>{g(H)})}finally{_(!1)}},T=()=>{i(e.name)},O=(H=>{switch(H){case"connected":return{icon:xr.tick,color:C.success};case"failed":return{icon:xr.cross,color:C.error};case"disabled":case"oauth":return{icon:xr.circle,color:C.secondaryText};default:return{icon:xr.circle,color:C.secondaryText}}})(l),$=l==="connected"?[{label:"View tools",action:"View available tools"},{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:l==="failed"?[{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:l==="oauth"?[{label:"Reconnect(oauth)",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:[{label:"Reconnect",action:"Reconnect to server"}];return An.createElement(N,{flexDirection:"column",height:"100%"},An.createElement(N,{flexDirection:"column",borderStyle:"single",borderColor:"white"},An.createElement(N,{padding:1},An.createElement(v,{bold:!0,color:C.claude},e.name," MCP Server")),An.createElement(N,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},An.createElement(N,null,An.createElement(v,null,"Status: "),An.createElement(v,{color:O.color},O.icon," ",l)),t?.command&&An.createElement(N,null,An.createElement(v,null,"Command: "),An.createElement(v,{color:C.text},t.command)),t?.args&&An.createElement(N,null,An.createElement(v,null,"Args: "),An.createElement(v,{color:C.text},Array.isArray(t.args)?t.args.join(" "):t.args)),t?.url&&An.createElement(N,null,An.createElement(v,null,"URL: "),An.createElement(v,{color:C.text},t.url)),t&&An.createElement(N,null,An.createElement(v,null,"Config location: "),An.createElement(v,{color:C.secondaryText},t.configPath||"Unknown")),l==="connected"&&An.createElement(An.Fragment,null,An.createElement(N,null,An.createElement(v,null,"Capabilities: tools")),An.createElement(N,null,An.createElement(v,null,"Tools: ",f.length," tools")))),An.createElement(N,{flexDirection:"column",paddingX:1,marginBottom:1},E?An.createElement(N,{flexDirection:"row"},An.createElement(jT,null),An.createElement(v,{color:C.claude},"Reconnecting...")):$.map((H,L)=>{let Y=L===a;return An.createElement(N,{key:L},An.createElement(v,{color:Y?C.claude:C.text},Y?xr.pointer:" "),An.createElement(v,{color:Y?C.claude:C.text,bold:Y},L+1,". ",H.label))})),An.createElement(N,{padding:1},An.createElement(v,{color:C.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back"))),l==="oauth"&&m&&An.createElement(N,{flexDirection:"column",paddingX:1},An.createElement(v,null,"Open in browser:"),An.createElement(v,{wrap:"wrap",color:C.link||"blue"},m)))}var Ls=ie(Ce(),1),s_=ie(Ce(),1);Ue();function LOt({serverName:e,onBack:t,onToolSelect:r}){let[n,i]=(0,s_.useState)(0),[o,s]=(0,s_.useState)([]),[a,u]=(0,s_.useState)({}),[l,c]=(0,s_.useState)(0),f=ye(),A=15;(0,s_.useEffect)(()=>{let _=async()=>{let C={};for(let S=0;S<o.length;S++){let T=o[S];try{if(T.description){let x=await T.description();typeof x=="string"&&x.toLowerCase().includes("read")&&x.toLowerCase().includes("only")?C[S]="read-only":C[S]="read-write"}else C[S]="read-write"}catch(x){le("Error loading tool description for access level:",x),C[S]="read-write"}}u(C)};o.length>0&&_()},[o]),(0,s_.useEffect)(()=>{e&&(async()=>{try{let C=await Ote(e.name);s(C)}catch{s([])}})()},[e]),dr((_,C)=>{if(C.return){if(o.length>0){let S=o[n];r(S)}return}if(C.upArrow){let S=Math.max(0,n-1);i(S),S<l&&c(S);return}if(C.downArrow){let S=Math.min(o.length-1,n+1);i(S),S>=l+A&&c(S-A+1);return}}),(0,s_.useEffect)(()=>{c(0),i(0)},[o]);let m=_=>{let C=_.name.match(/^mcp_[^_]+_(.+)$/);return C?C[1]:_.name},g=o.slice(l,l+A),E=o.length>A;return Ls.createElement(N,{flexDirection:"column",height:"100%",borderStyle:"single",borderColor:"white"},Ls.createElement(N,{padding:1},Ls.createElement(v,{bold:!0,color:f.claude},"Tools for ",e.name," (",o.length," tools)")),Ls.createElement(N,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},o.length===0?Ls.createElement(v,{color:f.secondaryText},"No tools available for this server"):Ls.createElement(Ls.Fragment,null,E&&l>0&&Ls.createElement(N,null,Ls.createElement(v,{color:f.secondaryText},"\u2191 More tools above")),Ls.createElement(N,{flexDirection:"column",flexGrow:1},g.map((_,C)=>{let S=l+C,T=S===n,x=m(_),O=a[S]||"read-write";return Ls.createElement(N,{key:_.name},Ls.createElement(v,{color:T?f.claude:f.text},T?xr.pointer:" "),Ls.createElement(v,{color:f.secondaryText},S+1,"."),Ls.createElement(v,{color:T?f.claude:f.text,bold:T},x),Ls.createElement(v,null," "),Ls.createElement(v,{color:f.secondaryText},O))})),E&&l+A<o.length&&Ls.createElement(N,null,Ls.createElement(v,{color:f.secondaryText},"\u2193 More tools below")))),Ls.createElement(N,{padding:1},Ls.createElement(v,{color:f.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back")))}var Ia=ie(Ce(),1);function POt({tool:e,serverName:t,onBack:r}){let[n,i]=(0,Ia.useState)(""),[o,s]=(0,Ia.useState)(!0),[a,u]=(0,Ia.useState)(0),[l,c]=(0,Ia.useState)(20),f=(0,Ia.useRef)(null),A=ye(),{stdout:m}=nfe();(0,Ia.useEffect)(()=>{(async()=>{if(e?.description)try{let L=await e.description();i(L||"")}catch{i("")}else i("");s(!1)})()},[e]),(0,Ia.useEffect)(()=>{m?.rows&&c(Math.max(10,m.rows-8))},[m]);let g=H=>{let L=H.name.match(/^mcp__[^_]+__(.+)$/);return L?L[1]:H.name},E=()=>o?"loading...":n&&n.toLowerCase().includes("read")&&n.toLowerCase().includes("only")?"read-only":"read-write",_=g(e),C=E(),T=(()=>{let H=[];return n&&(H.push("Description:"),H.push(...n.split(`
1427
+ - For agent tasks, marks the task as failed and triggers completion handlers`;mA();SI();PB();var Mbn=Le(()=>V.strictObject({task_id:V.string().describe("The ID of the background task to stop")})),L9={name:DOt,async description(){return xOt},async prompt(){return wOt},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return Mbn()},userFacingName(){return"Stop Task"},async isEnabled(){return!0},needsPermissions(){return!1},async validateInput({task_id:e}){return!e||e.trim().length===0?{result:!1,message:"task_id is required and cannot be empty"}:{result:!0}},renderToolUseMessage({task_id:e}){return`Stop task: ${e}`},renderToolUseRejectedMessage(){return wte.createElement(v,{color:"red"},"\xA0\xA0\u23BF \xA0 Task stop operation was rejected")},renderToolResultMessage(e){let{stopped:t,task_id:r,message:n}=e;return t?wte.createElement(v,{color:"green"},"\xA0\xA0\u23BF \xA0",n):wte.createElement(v,{color:"red"},"\xA0\xA0\u23BF \xA0",n)},renderResultForAssistant({stopped:e,task_id:t,message:r,task_type:n}){return`Task ${t} (${n}) stop operation: ${r}`},async*call(e,{abortController:t}){let{task_id:r}=e;if(t.signal.aborted){let n={message:"Operation cancelled",task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(n),data:n};return}try{let n=r.startsWith("a"),i=r.startsWith("s");if(n){let o=pc.stopTask(r),s={message:o.reason,task_id:r,stopped:o.success,task_type:"agent"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else if(i){let o=r.startsWith("sp")?yp.stop(r):uu.stop(r),s={message:o?`Successfully stopped shell task: ${r}`:`Failed to stop shell task: ${r}`,task_id:r,stopped:o,task_type:"shell"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(s),data:s}}else{let o={message:`Unknown task type for ID: ${r}. Task IDs should start with 'a' (agent) or 's' (shell).`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(o),data:o}}}catch(n){let o={message:`Error stopping task: ${n instanceof Error?n.message:String(n)}`,task_id:r,stopped:!1,task_type:"unknown"};yield{type:"result",resultForAssistant:this.renderResultForAssistant(o),data:o}}}};var BOt=`${rt}/hands`,Bte="hawa/handsData",NOt=[iQ()?um:Mi,zC,YC,JC,ZC,VC,Sh,F9,Q9,L9],ROt=[um,Mi,zC,YC,JC,ZC,VC,Sh,F9,Q9,L9];var Nte=null;function Fbn(e,t){Nte={name:e,client:t},_O.cache.clear?.(),yO.cache.clear?.(),Bn.clear()}function Qbn(){_O.cache.clear?.(),yO.cache.clear?.(),Bn.clear()}function OOt(e){let t=sd(),r=QQ(),n=tn();if(t.mcpServers?.[e])return{...t.mcpServers[e],scope:"project"};if(r?.[e])return{...r[e],scope:"mcprc"};if(n.mcpServers?.[e])return{...n.mcpServers[e],scope:"global"}}async function kOt(e,t,r=!1,n=null){if(t.type==="sse"||t.type==="http"){let i=new _Z(t.url,t.headers,e);return await i.connectD(r,n),i}else{let i=t.type==="sse"?new cZ(new URL(t.url)):new rZ({command:t.command,args:t.args,env:{...process.env,...t.env},stderr:"pipe"}),o=new sC({name:`${rt}`,version:"0.1.0"},{capabilities:{}}),s=t.timeout??5e3,a=o.connect(i),u=new Promise((l,c)=>{let f=setTimeout(()=>{c(new Error(`Connection to MCP server "${e}" timed out after ${s}ms`))},s);a.then(()=>clearTimeout(f),()=>clearTimeout(f))});return await Promise.race([a,u]),t.type==="stdio"&&i.stderr?.on("data",l=>{let c=l.toString().trim();c&&Hy(e,`Server stderr: ${c}`)}),o}}function ZNe(e){let t=sd();return t.approvedMcprcServers?.includes(e)?"approved":t.rejectedMcprcServers?.includes(e)?"rejected":"pending"}var Lbn=async(e,t=!1,r=null)=>{ZNe(e)==="rejected"&&BKe(e);let i=OOt(e);if(!i)return{name:e,type:"failed"};try{let o=await kOt(e,i,t,r),s=await _O(),a={name:e,client:o,type:"connected"},u=s.findIndex(l=>l.name===e);return u!==-1?s[u]=a:s.push(a),yO.cache.clear?.(),a}catch{return{name:e,type:"failed"}}},Pbn=()=>(Qbn(),_O()),_O=Le(async()=>{if(process.env.CI)return[];let e=tn().mcpServers??{},t=QQ(),r=sd().mcpServers??{},n=jq(t,(l,c)=>ZNe(c)==="approved"),i=jq(t,(l,c)=>ZNe(c)==="rejected"),o=Object.keys(i).map(l=>({name:l,type:"disabled"})),s={...C1t,...e,...n,...r},a=await Promise.all(Object.entries(s).map(async([l,c])=>{try{let f=await kOt(l,c);return dt("tengu_mcp_server_connection_succeeded",{}),{name:l,client:f,type:"connected"}}catch(f){return f instanceof Ca?{name:l,type:"oauth"}:(dt("tengu_mcp_server_connection_failed",{}),Hy(l,`Connection failed: ${f instanceof Error?f.message:String(f)}`),{name:l,type:"failed"})}})),u=Nte?[{name:Nte.name,client:Nte.client,type:"connected"}]:[];return[...a,...u,...o]});async function MOt(e,t,r){let n=await _O();return(await Promise.allSettled(n.map(async o=>{if(o.type!=="connected")return null;try{return(await o.client.getServerCapabilities())?.[r]?{client:o,result:await o.client.request(e,t)}:null}catch(s){return o.type==="connected"&&Hy(o.name,`Failed to request '${e.method}': ${s instanceof Error?s.message:String(s)}`),null}}))).filter(o=>o.status==="fulfilled").map(o=>o.value).filter(o=>o!==null)}function Rte(e){return e.replaceAll(".","-")}async function Ote(e){return(await yO()).filter(n=>n.name.startsWith(`mcp_${e}_`))}function Ubn(e){try{return e.client.getServerVersion?.()?.name===BOt}catch{return!1}}var Hbn=new Map(ROt.map(e=>[e.name,e]));function qbn(e,t,r){return{...CIe,name:"mcp_"+Rte(e.name)+"_"+Rte(t.name),async description(){return t.description??""},userFacingName(n){return"H-"+r.userFacingName(n)},async prompt(){return t.description??""},isMcp(){return!0},async isEnabled(){return!0},renderToolResultMessage:r.renderToolResultMessage,inputSchema:cl(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(n){let{data:i,resultForAssistant:o}=await zbn({client:e,tool:t.name,args:n});yield{type:"result",data:i,resultForAssistant:o}}}}function Gbn(e,t){return{...CIe,name:"mcp_"+Rte(e.name)+"_"+Rte(t.name),async description(){return t.description??""},async prompt(){return t.description??""},isMcp(){return!0},inputSchema:cl(t.inputSchema),inputJSONSchema:t.inputSchema,async*call(r){let n=await $bn({client:e,tool:t.name,args:r});yield{type:"result",data:{},resultForAssistant:n}},userFacingName(){return`${e.name.length>10?`...${e.name.slice(-10)}`:e.name}:${t.name}`}}}var yO=Le(async()=>{let t=(await MOt({method:"tools/list"},BM,"tools")).flatMap(({client:r,result:{tools:n}})=>{let i=Ubn(r);return n.map(o=>{if(i){let s=Hbn.get(o.name);if(s)return qbn(r,o,s)}return Gbn(r,o)})});return fZ.batchUpdateMcpTools(t),t});async function $bn({client:{client:e,name:t},tool:r,args:n}){let i=await e.callTool({name:r,arguments:n},Mm);return(await y1t(i,r,t)).content}async function zbn({client:{client:e},tool:t,args:r}){let n=await e.callTool({name:t,arguments:r},Mm),i=n?._meta?.[Bte],o=Array.isArray(n?.content)?n.content.filter(u=>u?.type==="text"&&typeof u.text=="string").map(u=>u.text).join(""):"",s=typeof i?.resultForAssistant=="string"?i.resultForAssistant:o;return{data:i&&"data"in i?i.data:s,resultForAssistant:s}}var FOt=Le(async()=>(await MOt({method:"prompts/list"},wM,"prompts")).flatMap(({client:t,result:r})=>r.prompts?.map(n=>{let i=Object.values(n.arguments??{}).map(o=>o.name);return{type:"prompt",name:"mcp__"+t.name+"__"+n.name,description:()=>n.description??"",isEnabled:!0,isHidden:!1,progressMessage:"running",userFacingName(){return`${t.name}:${n.name} (MCP)`},argNames:i,async getPromptForCommand(o){let s=o.split(" ");return await Ybn({name:n.name,client:t},Ffe(i,s))}}})));Bn.add(FOt);Bn.getMCPCommands=FOt;Bn.getMcpServer=OOt;Bn.getClients=_O;Bn.reloadClients=Pbn;Bn.reconnect=Lbn;Bn.registerIDEClient=Fbn;async function Ybn({name:e,client:t},r){try{return(await t.client.getPrompt({name:e,arguments:r})).messages.map(i=>({role:i.role,content:[i.content.type==="text"?{type:"text",text:i.content.text}:{type:"image",source:{data:String(i.content.data),media_type:i.content.mimeType,type:"base64"}}]}))}catch(n){throw Hy(t.name,`Error running command '${e}': ${n instanceof Error?n.message:String(n)}`),n}}function QOt({serverName:e,serverConfig:t,onBack:r,onViewTools:n,onServerDisable:i,onServerReconnect:o,context:s}){let[a,u]=(0,XC.useState)(0),[l,c]=(0,XC.useState)("connected"),[f,A]=(0,XC.useState)([]),[m,g]=(0,XC.useState)(null),[E,_]=(0,XC.useState)(!1),C=ye();(0,XC.useEffect)(()=>{c(e.status),Ote(e.name).then(H=>{A(H)})},[e]),dr((H,L)=>{if(L.return){l==="connected"?a===0?n():a===1?S():a===2&&T():a===0?S():a===1&&T();return}if(L.upArrow){let Y=l==="connected"?2:1;u(z=>Math.max(0,z-1));return}if(L.downArrow){let Y=l==="connected"?2:1;u(z=>Math.min(Y,z+1));return}});let S=async()=>{_(!0);try{await o(e.name,l,H=>{g(H)})}finally{_(!1)}},T=()=>{i(e.name)},O=(H=>{switch(H){case"connected":return{icon:xr.tick,color:C.success};case"failed":return{icon:xr.cross,color:C.error};case"disabled":case"oauth":return{icon:xr.circle,color:C.secondaryText};default:return{icon:xr.circle,color:C.secondaryText}}})(l),$=l==="connected"?[{label:"View tools",action:"View available tools"},{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:l==="failed"?[{label:"Reconnect",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:l==="oauth"?[{label:"Reconnect(oauth)",action:"Reconnect to server"},{label:"Disable",action:"Disable this server"}]:[{label:"Reconnect",action:"Reconnect to server"}];return An.createElement(N,{flexDirection:"column",height:"100%"},An.createElement(N,{flexDirection:"column",borderStyle:"single",borderColor:"white"},An.createElement(N,{padding:1},An.createElement(v,{bold:!0,color:C.claude},e.name," MCP Server")),An.createElement(N,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},An.createElement(N,null,An.createElement(v,null,"Status: "),An.createElement(v,{color:O.color},O.icon," ",l)),t?.command&&An.createElement(N,null,An.createElement(v,null,"Command: "),An.createElement(v,{color:C.text},t.command)),t?.args&&An.createElement(N,null,An.createElement(v,null,"Args: "),An.createElement(v,{color:C.text},Array.isArray(t.args)?t.args.join(" "):t.args)),t?.url&&An.createElement(N,null,An.createElement(v,null,"URL: "),An.createElement(v,{color:C.text},t.url)),t&&An.createElement(N,null,An.createElement(v,null,"Config location: "),An.createElement(v,{color:C.secondaryText},t.configPath||"Unknown")),l==="connected"&&An.createElement(An.Fragment,null,An.createElement(N,null,An.createElement(v,null,"Capabilities: tools")),An.createElement(N,null,An.createElement(v,null,"Tools: ",f.length," tools")))),An.createElement(N,{flexDirection:"column",paddingX:1,marginBottom:1},E?An.createElement(N,{flexDirection:"row"},An.createElement(jT,null),An.createElement(v,{color:C.claude},"Reconnecting...")):$.map((H,L)=>{let Y=L===a;return An.createElement(N,{key:L},An.createElement(v,{color:Y?C.claude:C.text},Y?xr.pointer:" "),An.createElement(v,{color:Y?C.claude:C.text,bold:Y},L+1,". ",H.label))})),An.createElement(N,{padding:1},An.createElement(v,{color:C.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back"))),l==="oauth"&&m&&An.createElement(N,{flexDirection:"column",paddingX:1},An.createElement(v,null,"Open in browser:"),An.createElement(v,{wrap:"wrap",color:C.link||"blue"},m)))}var Ls=ie(Ce(),1),s_=ie(Ce(),1);Ue();function LOt({serverName:e,onBack:t,onToolSelect:r}){let[n,i]=(0,s_.useState)(0),[o,s]=(0,s_.useState)([]),[a,u]=(0,s_.useState)({}),[l,c]=(0,s_.useState)(0),f=ye(),A=15;(0,s_.useEffect)(()=>{let _=async()=>{let C={};for(let S=0;S<o.length;S++){let T=o[S];try{if(T.description){let x=await T.description();typeof x=="string"&&x.toLowerCase().includes("read")&&x.toLowerCase().includes("only")?C[S]="read-only":C[S]="read-write"}else C[S]="read-write"}catch(x){le("Error loading tool description for access level:",x),C[S]="read-write"}}u(C)};o.length>0&&_()},[o]),(0,s_.useEffect)(()=>{e&&(async()=>{try{let C=await Ote(e.name);s(C)}catch{s([])}})()},[e]),dr((_,C)=>{if(C.return){if(o.length>0){let S=o[n];r(S)}return}if(C.upArrow){let S=Math.max(0,n-1);i(S),S<l&&c(S);return}if(C.downArrow){let S=Math.min(o.length-1,n+1);i(S),S>=l+A&&c(S-A+1);return}}),(0,s_.useEffect)(()=>{c(0),i(0)},[o]);let m=_=>{let C=_.name.match(/^mcp_[^_]+_(.+)$/);return C?C[1]:_.name},g=o.slice(l,l+A),E=o.length>A;return Ls.createElement(N,{flexDirection:"column",height:"100%",borderStyle:"single",borderColor:"white"},Ls.createElement(N,{padding:1},Ls.createElement(v,{bold:!0,color:f.claude},"Tools for ",e.name," (",o.length," tools)")),Ls.createElement(N,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingX:1},o.length===0?Ls.createElement(v,{color:f.secondaryText},"No tools available for this server"):Ls.createElement(Ls.Fragment,null,E&&l>0&&Ls.createElement(N,null,Ls.createElement(v,{color:f.secondaryText},"\u2191 More tools above")),Ls.createElement(N,{flexDirection:"column",flexGrow:1},g.map((_,C)=>{let S=l+C,T=S===n,x=m(_),O=a[S]||"read-write";return Ls.createElement(N,{key:_.name},Ls.createElement(v,{color:T?f.claude:f.text},T?xr.pointer:" "),Ls.createElement(v,{color:f.secondaryText},S+1,"."),Ls.createElement(v,{color:T?f.claude:f.text,bold:T},x),Ls.createElement(v,null," "),Ls.createElement(v,{color:f.secondaryText},O))})),E&&l+A<o.length&&Ls.createElement(N,null,Ls.createElement(v,{color:f.secondaryText},"\u2193 More tools below")))),Ls.createElement(N,{padding:1},Ls.createElement(v,{color:f.secondaryText},"Use \u2191\u2193 to navigate, Enter to select, Esc to go back")))}var Ia=ie(Ce(),1);function POt({tool:e,serverName:t,onBack:r}){let[n,i]=(0,Ia.useState)(""),[o,s]=(0,Ia.useState)(!0),[a,u]=(0,Ia.useState)(0),[l,c]=(0,Ia.useState)(20),f=(0,Ia.useRef)(null),A=ye(),{stdout:m}=nfe();(0,Ia.useEffect)(()=>{(async()=>{if(e?.description)try{let L=await e.description();i(L||"")}catch{i("")}else i("");s(!1)})()},[e]),(0,Ia.useEffect)(()=>{m?.rows&&c(Math.max(10,m.rows-8))},[m]);let g=H=>{let L=H.name.match(/^mcp__[^_]+__(.+)$/);return L?L[1]:H.name},E=()=>o?"loading...":n&&n.toLowerCase().includes("read")&&n.toLowerCase().includes("only")?"read-only":"read-write",_=g(e),C=E(),T=(()=>{let H=[];return n&&(H.push("Description:"),H.push(...n.split(`
1428
1428
  `).map(L=>L.trim())),H.push("")),e.inputSchema&&(H.push("Parameters:"),e.inputSchema.properties?H.push(...(e.inputSchema+"").split(`
1429
1429
  `).map(L=>L.trim())):H.push("No parameters required")),H})(),x=l-6;dr((H,L)=>{if(L.escape){r();return}if(L.upArrow){u(Y=>Math.max(0,Y-1));return}if(L.downArrow){let Y=T.length/x,z=a+1;z>Y&&z--,u(z);return}});let O=T.slice(a*x,(a+1)*x),q=a>0,$=(a+1)*x<T.length;return Ia.default.createElement(N,{flexDirection:"column",borderStyle:"single",borderColor:"white",height:l},Ia.default.createElement(N,{paddingX:1},Ia.default.createElement(v,{bold:!0,color:A.claude},_," (",t.name,") [",C,"]")),o&&Ia.default.createElement(N,{paddingX:1},Ia.default.createElement(v,{color:A.secondaryText},"Loading tool details...")),Ia.default.createElement(N,{flexDirection:"column",paddingX:1,flexGrow:1,height:l-3,ref:f},O.map((H,L)=>Ia.default.createElement(v,{key:L,color:A.text},H))),Ia.default.createElement(N,{paddingX:1},Ia.default.createElement(v,{color:A.secondaryText,wrap:"truncate"},q&&"\u2191"," ",$&&"\u2193"," to scroll (Esc back)")))}_d();function UOt({onClose:e,context:t}){let[r,n]=(0,Dv.useState)("list"),[i,o]=(0,Dv.useState)(""),[s,a]=(0,Dv.useState)(null),[u,l]=(0,Dv.useState)([]),c=ye(),f=25;Vp(()=>{e(-1)}),(0,Dv.useEffect)(()=>{(async()=>{let S=await Bn.getClients();l(S.filter(T=>T.name!=="___ide_").map(T=>({name:T.name,status:T.type})))})()},[]);let A=S=>{NKe(S),Bn.reloadClients().then(T=>{l(T.filter(x=>x.name!=="___ide_").map(x=>({name:x.name,status:x.type}))),n("list"),Ci.emit("repl:reloadtools")})},m=async(S,T,x)=>{if((T==="oauth"?await Bn.reconnect(S,!0,x):await Bn.reconnect(S)).type==="connected"){let q=await Bn.getClients();l(q.filter($=>$.name!=="___ide_").map($=>({name:$.name,status:$.type}))),n("list"),Ci.emit("repl:reloadtools")}},g=S=>{o(S),n("details")},E=S=>{o(S),n("tools")},_=S=>{a(S),n("tool-details")};dr((S,T)=>{T.escape&&(r==="list"?e(-1):C())});let C=()=>{r==="details"?n("list"):r==="tools"?n("details"):r==="tool-details"&&n("tools")};return r==="list"?Ih.createElement(N,{flexDirection:"column",height:f},Ih.createElement(bEt,{servers:u,onServerSelect:g,onViewTools:E,onClose:e})):r==="details"?Ih.createElement(N,{flexDirection:"column",height:f},Ih.createElement(QOt,{serverName:i,serverConfig:Bn.getMcpServer(i),onBack:C,onServerDisable:A,onServerReconnect:m,onViewTools:()=>E(i),context:t})):r==="tools"?Ih.createElement(N,{flexDirection:"column",height:f},Ih.createElement(LOt,{serverName:i,onBack:C,onToolSelect:_})):r==="tool-details"?Ih.createElement(N,{flexDirection:"column",height:f},Ih.createElement(POt,{tool:s,serverName:i,onBack:C})):Ih.createElement(v,null,"Unknown view: ",r)}var HOt=ie(Ce(),1),jbn={type:"local-jsx",name:"mcp",description:()=>"Manage MCP servers",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e,t){return HOt.default.createElement(UOt,{onClose:e,context:t})},userFacingName(){return"mcp"}},qOt=jbn;SI();var zt=ie(Ce(),1),Mte=ie(Ce(),1);kr();lpe();oI();oY();SI();var kte=["Mode","Dependencies","Overrides","Config"];function Vbn(e){return e?.enabled?e.autoAllowBashIfSandboxed!==!1?"auto-allow":"regular":"disabled"}function Wbn(e){switch(e){case"auto-allow":return"Sandbox BashTool, with auto-allow";case"regular":return"Sandbox BashTool, with regular permissions";case"disabled":return"No Sandbox"}}function Kbn(e){switch(e){case"auto-allow":return"\u2713 Sandbox enabled with auto-allow for bash commands";case"regular":return"\u2713 Sandbox enabled with regular permissions";case"disabled":return"\u2713 Sandbox disabled"}}function Jbn(e){return{network:{allowedDomains:e.network?.allowedDomains??[],deniedDomains:e.network?.deniedDomains??[],allowLocalBinding:e.network?.allowLocalBinding,allowUnixSockets:e.network?.allowUnixSockets,allowAllUnixSockets:e.network?.allowAllUnixSockets},filesystem:{allowWrite:e.filesystem?.allowWrite??[],denyWrite:e.filesystem?.denyWrite??[],denyRead:e.filesystem?.denyRead??[],allowRead:e.filesystem?.allowRead,allowGitConfig:e.filesystem?.allowGitConfig},ignoreViolations:e.ignoreViolations,enableWeakerNestedSandbox:e.enableWeakerNestedSandbox,enableWeakerNetworkIsolation:e.enableWeakerNetworkIsolation}}async function Zbn(e,t){console.log("applyRuntimeSandbox",e);let r=uu.isSandboxingEnabled();e?(r&&await uu.stopSandbox(),await uu.startSandbox(Jbn(t))):r&&await uu.stopSandbox()}function GOt({onClose:e}){let t=yr(),[r,n]=(0,Mte.useState)(t.sandbox??{}),[i,o]=(0,Mte.useState)(0),[s,a]=(0,Mte.useState)(0),u=Vbn(r),l=r.enabled===!0,c=r.allowUnsandboxedCommands!==!1,f=!0,A=zze(),m=A.hasSeccompBpf&&A.hasSeccompApply,g=nI(),E=r.filesystem?.allowWrite??[],_=r.filesystem?.denyWrite??[],C=null;try{Ol.isSandboxingEnabled()&&(C=Ol.getFsWriteConfig())}catch{}let S=C?C.allowOnly:[...g,...E],T=C?C.denyWithinAllow:_;function x(fe){n(fe);let me=Yu.loadSettings();Yu.saveProjectSettings({...me,sandbox:fe})}dr((fe,me)=>{if(me.escape){e();return}if(me.leftArrow){o(ue=>Math.max(0,ue-1)),a(0);return}if(me.rightArrow){o(ue=>Math.min(kte.length-1,ue+1)),a(0);return}let M=kte[i];if(M==="Mode"){let ue=["auto-allow","regular","disabled"];if(me.upArrow){a(Ae=>Math.max(0,Ae-1));return}if(me.downArrow){a(Ae=>Math.min(ue.length-1,Ae+1));return}if(me.return||fe===" "){let Ae=ue[s],ae={...r,enabled:Ae!=="disabled",autoAllowBashIfSandboxed:Ae==="auto-allow"};Zbn(Ae!=="disabled",ae).catch(()=>{}),x(ae),e(Kbn(Ae));return}}if(M==="Overrides"){if(!l)return;if(me.upArrow){a(ue=>Math.max(0,ue-1));return}if(me.downArrow){a(ue=>Math.min(1,ue+1));return}if(me.return||fe===" "){let ue=s===0;x({...r,allowUnsandboxedCommands:ue}),e(ue?"\u2713 Allow unsandboxed fallback enabled":"\u2713 Strict sandbox mode enabled");return}}});let O=ye();function q(){return zt.createElement(N,{marginBottom:1},zt.createElement(v,{bold:!0,color:O.claude}," Sandbox: "),kte.map((fe,me)=>zt.createElement(N,{key:fe},zt.createElement(v,{color:me===i?O.claude:void 0,bold:me===i},` ${fe} `))))}function $(){return zt.createElement(N,{flexDirection:"column"},!m&&zt.createElement(v,{dimColor:!0}," Cannot block unix domain sockets (see Dependencies tab)",`
1430
1430
  `),zt.createElement(v,{bold:!0}," Configure Mode:",`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dahawa/hawa-code",
3
- "version": "1.36.2",
3
+ "version": "1.36.3",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },