@dahawa/hawa-code 2.4.17 → 2.4.18

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
@@ -675,7 +675,7 @@ globstar while`,t,p,r,f,A),this.matchOne(t.slice(p),r.slice(f),n))return this.de
675
675
  `)),cFn(e,o,{encoding:r,flush:!0})}var XHt=new bde.default({fetchMethod:e=>gFn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function aGt(e){let t=RV(e);return XHt.get(t)||XHt.fetchMethod?.(t)}async function gFn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await I2t(e,t.signal,15),n=0;for(let o of r)SB(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function cGt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var AFn=new bde.default({fetchMethod:e=>lGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Wm(e){let t=RV(e);return cGt(AFn,t,()=>lGt(t))}function lGt(e){let r=Buffer.alloc(4096),n;try{n=eGt(e,"r");let o=tGt(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 Se(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&rGt(n)}}var hFn=new bde.default({fetchMethod:e=>uGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function SB(e){let t=RV(e);return cGt(hFn,t,()=>uGt(t))}function uGt(e,t="utf8"){try{if(!nGt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=eGt(e,"r"),i=tGt(o,n,0,4096,0);rGt(o);let s=n.toString(t,0,i),a=0,c=0;for(let l=0;l<s.length;l++)s[l]===`
676
676
  `&&(l>0&&s[l-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return Se(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function KF(e){let t=oGt(e)?e:RV(Be(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function DPe(e){return e?oGt(e)?e:RV(Be(),e):void 0}function dGt(e){try{let t=DPe(e),r=t?fFn(Be(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return X("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Ide(e){try{let t=pFn(e),r=KHt(e,JHt(e));if(!lFn(t))return;let i=uFn(t).filter(s=>KHt(s,JHt(s))===r&&mFn(t,s)!==e)[0];return i||void 0}catch(t){Se(`Error finding similar file for ${e}: ${t}`);return}}function OPe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function ow({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return OPe()?r.map((n,o)=>`${o+t} ${n}`).join(`
677
677
  `):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
678
- `)}function fGt(e){try{let t=dFn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function ew(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function yFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function BPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,pGt.gt)(MACRO.VERSION,o))&&(i=$ue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&yFn()},[s,r]),!r&&!s)return null;let a=EFn(_Fn(e,Ci)),c=fGt(e),l=!a&&!c,u=kF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=ee();return Ki.createElement(x,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Ki.createElement(Ki.Fragment,null,Ki.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Ki.createElement(Ud,{children:[]},(()=>{let p=[];return c&&p.push(Ki.createElement(Ud.Item,{key:"workspace"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to create a new app or clone a repository."))),l&&p.push(Ki.createElement(Ud.Item,{key:"claudemd"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/init")," to create a",Ci," file with instructions for Hawa code."))),u&&p.push(Ki.createElement(Ud.Item,{key:"terminal"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/terminal-setup"),Ki.createElement(C,{bold:!1}," to set up terminal integration")))),p.push(Ki.createElement(Ud.Item,{key:"questions"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," questions about your codebase."))),p.push(Ki.createElement(Ud.Item,{key:"changes"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to implement changes to your codebase."))),p})())),!r&&s&&Ki.createElement(x,{borderColor:ee().secondaryBorder,flexDirection:"column",marginRight:1},Ki.createElement(x,{flexDirection:"column",gap:0},Ki.createElement(x,{marginBottom:1},Ki.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Ki.createElement(x,{flexDirection:"column",marginLeft:1},i.map((p,f)=>Ki.createElement(C,{key:f,color:ee().secondaryText},"\u2022 ",p))))),e===SFn()&&Ki.createElement(C,{color:ee().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var ZF=F(ne(),1);var JF=F(ne(),1);var NV=F(ne(),1);function MPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return NV.default.createElement(x,{...o.option({isFocused:e})},e&&NV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),NV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&NV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Km=F(ne(),1);import{isDeepStrictEqual as TFn}from"node:util";var DV=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 c="value"in s?s.value:kPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var bFn=(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}}},PPe=e=>e.flatMap(t=>{if("options"in t){let r=PPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),mGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=PPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new DV(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}},LPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=PPe(t),[a,c]=(0,Km.useReducer)(bFn,{visibleOptionCount:e,defaultValue:r,options:t},mGt),[l,u]=(0,Km.useState)(s);s!==l&&!TFn(s,l)&&(c({type:"reset",state:mGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Km.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Km.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Km.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Km.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Km.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Km.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Km.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:A,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var QPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var kPe=e=>`HEADER-${e.optionValues.join(",")}`;function xC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=LPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});QPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return JF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:kPe(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),A="header"in u,h="label"in u?u.label:u.header,E=h;if(r&&h.includes(r)){let S=h.indexOf(r);E=JF.default.createElement(JF.default.Fragment,null,h.slice(0,S),JF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return JF.default.createElement(MPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function gGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),ZF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},ZF.default.createElement(x,{marginBottom:1,flexDirection:"column"},ZF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),ZF.default.createElement(x,null,ZF.default.createElement(xC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Qp=F(ne(),1);Ge();sr();Cy();var vFn="2.4.17",Iy={VERSION:vFn,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 HPe=46,EGt=["(\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 vde({isDefaultModel:e=!1}){let t=Math.max(HPe,Be().length+12),r=ee(),n=EGt[Math.floor(Math.random()*EGt.length)];return Qp.createElement(x,{flexDirection:"column"},Qp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Qp.createElement(C,null,Qp.createElement(C,null,n)," Welcome to"," ",Qp.createElement(C,{bold:!0},et),Qp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Qp.createElement(Qp.Fragment,null,Qp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Qp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Qp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Qp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Qp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var SS=F(ne(),1);Re();var VJ=F(ne(),1);import{randomUUID as AS}from"crypto";$s();Re();Zt();sr();Re();Ge();import{existsSync as NC,readdirSync as W4n,statSync as K4n}from"fs";import{join as cw,relative as J4n}from"path";import{homedir as V$t}from"os";import{platform as Z4n}from"process";import{readFile as lw}from"fs/promises";sr();EE();gr();import{join as OFn,sep as BFn}from"path";function Up(){if(!Jm())return!1;try{let e=ot();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Zm(){return(OFn(Be(),".hcode","team-memory")+BFn).normalize("NFC")}function _E(e){let t=e.normalize("NFC"),r=Zm();return t.startsWith(r)}var j$t=F(FV(),1);Xo();var H$t=F(FV(),1);sr();Ge();Re();Mp();import{readFile as U$t}from"fs/promises";import{existsSync as iLe,readdirSync as V4n,statSync as j4n}from"fs";import{join as sLe,relative as G$t}from"path";import{homedir as Y4n}from"os";function F$t(e){try{let t=(0,H$t.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 Se(t),{paths:[],content:e.trim()}}}function z4n(e,t){return t.length===0?!0:t.some(r=>{try{return Hd(e,r,{matchBase:!0,dot:!0})}catch(n){return Se(n),!1}})}function aLe(e){let t=[];try{if(!iLe(e))return t;let r=V4n(e);for(let n of r){let o=sLe(e,n),i=j4n(o);i.isDirectory()?t.push(...aLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function $$t(){let e=[];try{let t=sLe(Y4n(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){Se(o)}}}catch(t){Se(t)}try{let t=sLe(Be(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:G$t(Be(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function q$t(e,t){e=lle(e);let r=lle(Be()),n=e.startsWith(r)?G$t(r,e):e;return t.filter(o=>z4n(n,o.paths))}var X4n=`# hawaCodeMd
678
+ `)}function fGt(e){try{let t=dFn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function ew(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function yFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function BPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,pGt.gt)(MACRO.VERSION,o))&&(i=$ue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&yFn()},[s,r]),!r&&!s)return null;let a=EFn(_Fn(e,Ci)),c=fGt(e),l=!a&&!c,u=kF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=ee();return Ki.createElement(x,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Ki.createElement(Ki.Fragment,null,Ki.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Ki.createElement(Ud,{children:[]},(()=>{let p=[];return c&&p.push(Ki.createElement(Ud.Item,{key:"workspace"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to create a new app or clone a repository."))),l&&p.push(Ki.createElement(Ud.Item,{key:"claudemd"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/init")," to create a",Ci," file with instructions for Hawa code."))),u&&p.push(Ki.createElement(Ud.Item,{key:"terminal"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/terminal-setup"),Ki.createElement(C,{bold:!1}," to set up terminal integration")))),p.push(Ki.createElement(Ud.Item,{key:"questions"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," questions about your codebase."))),p.push(Ki.createElement(Ud.Item,{key:"changes"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to implement changes to your codebase."))),p})())),!r&&s&&Ki.createElement(x,{borderColor:ee().secondaryBorder,flexDirection:"column",marginRight:1},Ki.createElement(x,{flexDirection:"column",gap:0},Ki.createElement(x,{marginBottom:1},Ki.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Ki.createElement(x,{flexDirection:"column",marginLeft:1},i.map((p,f)=>Ki.createElement(C,{key:f,color:ee().secondaryText},"\u2022 ",p))))),e===SFn()&&Ki.createElement(C,{color:ee().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var ZF=F(ne(),1);var JF=F(ne(),1);var NV=F(ne(),1);function MPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return NV.default.createElement(x,{...o.option({isFocused:e})},e&&NV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),NV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&NV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Km=F(ne(),1);import{isDeepStrictEqual as TFn}from"node:util";var DV=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 c="value"in s?s.value:kPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var bFn=(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}}},PPe=e=>e.flatMap(t=>{if("options"in t){let r=PPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),mGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=PPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new DV(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}},LPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=PPe(t),[a,c]=(0,Km.useReducer)(bFn,{visibleOptionCount:e,defaultValue:r,options:t},mGt),[l,u]=(0,Km.useState)(s);s!==l&&!TFn(s,l)&&(c({type:"reset",state:mGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Km.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Km.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Km.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Km.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Km.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Km.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Km.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:A,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var QPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var kPe=e=>`HEADER-${e.optionValues.join(",")}`;function xC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=LPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});QPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return JF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:kPe(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),A="header"in u,h="label"in u?u.label:u.header,E=h;if(r&&h.includes(r)){let S=h.indexOf(r);E=JF.default.createElement(JF.default.Fragment,null,h.slice(0,S),JF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return JF.default.createElement(MPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function gGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),ZF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},ZF.default.createElement(x,{marginBottom:1,flexDirection:"column"},ZF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),ZF.default.createElement(x,null,ZF.default.createElement(xC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Qp=F(ne(),1);Ge();sr();Cy();var vFn="2.4.18",Iy={VERSION:vFn,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 HPe=46,EGt=["(\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 vde({isDefaultModel:e=!1}){let t=Math.max(HPe,Be().length+12),r=ee(),n=EGt[Math.floor(Math.random()*EGt.length)];return Qp.createElement(x,{flexDirection:"column"},Qp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Qp.createElement(C,null,Qp.createElement(C,null,n)," Welcome to"," ",Qp.createElement(C,{bold:!0},et),Qp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Qp.createElement(Qp.Fragment,null,Qp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Qp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Qp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Qp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Qp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var SS=F(ne(),1);Re();var VJ=F(ne(),1);import{randomUUID as AS}from"crypto";$s();Re();Zt();sr();Re();Ge();import{existsSync as NC,readdirSync as W4n,statSync as K4n}from"fs";import{join as cw,relative as J4n}from"path";import{homedir as V$t}from"os";import{platform as Z4n}from"process";import{readFile as lw}from"fs/promises";sr();EE();gr();import{join as OFn,sep as BFn}from"path";function Up(){if(!Jm())return!1;try{let e=ot();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Zm(){return(OFn(Be(),".hcode","team-memory")+BFn).normalize("NFC")}function _E(e){let t=e.normalize("NFC"),r=Zm();return t.startsWith(r)}var j$t=F(FV(),1);Xo();var H$t=F(FV(),1);sr();Ge();Re();Mp();import{readFile as U$t}from"fs/promises";import{existsSync as iLe,readdirSync as V4n,statSync as j4n}from"fs";import{join as sLe,relative as G$t}from"path";import{homedir as Y4n}from"os";function F$t(e){try{let t=(0,H$t.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 Se(t),{paths:[],content:e.trim()}}}function z4n(e,t){return t.length===0?!0:t.some(r=>{try{return Hd(e,r,{matchBase:!0,dot:!0})}catch(n){return Se(n),!1}})}function aLe(e){let t=[];try{if(!iLe(e))return t;let r=V4n(e);for(let n of r){let o=sLe(e,n),i=j4n(o);i.isDirectory()?t.push(...aLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function $$t(){let e=[];try{let t=sLe(Y4n(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){Se(o)}}}catch(t){Se(t)}try{let t=sLe(Be(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:G$t(Be(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function q$t(e,t){e=lle(e);let r=lle(Be()),n=e.startsWith(r)?G$t(r,e):e;return t.filter(o=>z4n(n,o.paths))}var X4n=`# hawaCodeMd
679
679
  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 e3n(e="default"){let r=Ke.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}):
680
680
 
681
681
  ${o.content}`}).join(`
@@ -773,7 +773,7 @@ data: ${JSON.stringify(H)}
773
773
  Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var hge=null,G4e=!1;function Poo(){hge=null,G4e=!1}kt.on("proxy:changed",Poo);function Loo(){if(G4e)return hge;if(G4e=!0,ot().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(hge=new tXt.ProxyAgent({uri:e}),zt(`[proxy] using proxy: ${e}`)),hge}function Qoo(){let e=Loo();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function _ge(e){let t=e||process.env.API_TYPE,r=Qoo();switch(t){case"openai":return Ooo(r);case"openai-responses":return Boo(r);case"gemini":return Moo(r);default:return koo(r)}}Cy();var nXt=F(ne(),1);function rXt(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=Uoo(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function Uoo(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Foo(t)?0:Hoo(t)?2:1}function Foo(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function Hoo(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 R0(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 V4e(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m ${o}s`:`${n}m ${o}s`}function JC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Sge(e,t,r){let n=[];return typeof e=="number"&&n.push(V4e(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${JC(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}Re();$s();var tu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function yge(e,t){tu.totalCost+=e,tu.totalAPIDuration+=t}function Tge(e,t){tu.inputTokens+=e,tu.outputTokens+=t,kt.emit("token:change",{inputTokens:tu.inputTokens,outputTokens:tu.outputTokens})}function bge(e,t){tu.cacheCreationTokens+=e,tu.cacheReadTokens+=t}function AM(){return{inputTokens:tu.inputTokens,outputTokens:tu.outputTokens,cacheCreationTokens:tu.cacheCreationTokens,cacheReadTokens:tu.cacheReadTokens}}function _9(){return tu.totalCost}function Cge(){return Date.now()-tu.startTime}function oXt(){return tu.totalAPIDuration}function iXt(e){tu.currentContextTokens=e}function sXt(){return tu.currentContextTokens}function Goo(){return St.grey(`Total duration (API): ${R0(tu.totalAPIDuration)}
774
774
  Total duration (wall): ${R0(Cge())}`)}function aXt(){(0,nXt.useEffect)(()=>{let e=()=>{process.stdout.write(`
775
775
  `+Goo()+`
776
- `);let t=Xn();ps({...t,lastCost:tu.totalCost,lastAPIDuration:tu.totalAPIDuration,lastDuration:Cge(),lastSessionId:n0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var j4e="2.4.17";globalThis.MACRO={VERSION:j4e,PACKAGE_URL:`@dahawa/${Ii}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Ige=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${j4e} (${process.env.USER_TYPE})`;Re();Re();Zt();function Jf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Of(t);if(n?.type==="user"){t[t.length-1]=joo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Of(t);n?.type==="user"&&(t[t.length-1]=$oo(n,r));return}}}),t}function $oo(e,t){return{...e,message:{...e.message,content:Voo(e.message.content,qoo(t.content.content))}}}function qoo(e){return`
776
+ `);let t=Xn();ps({...t,lastCost:tu.totalCost,lastAPIDuration:tu.totalAPIDuration,lastDuration:Cge(),lastSessionId:n0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var j4e="2.4.18";globalThis.MACRO={VERSION:j4e,PACKAGE_URL:`@dahawa/${Ii}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Ige=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${j4e} (${process.env.USER_TYPE})`;Re();Re();Zt();function Jf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Of(t);if(n?.type==="user"){t[t.length-1]=joo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Of(t);n?.type==="user"&&(t[t.length-1]=$oo(n,r));return}}}),t}function $oo(e,t){return{...e,message:{...e.message,content:Voo(e.message.content,qoo(t.content.content))}}}function qoo(e){return`
777
777
  <system-reminder>
778
778
  The user sent the following message:
779
779
  ${e}
@@ -3525,7 +3525,7 @@ async () => {
3525
3525
  ## \u6CE8\u610F
3526
3526
  - \u53EA\u80FD\u4EE3\u7406 <available_tools> \u6E05\u5355\u4E2D\u5217\u51FA\u7684\u5DE5\u5177\u3002
3527
3527
  - input \u5FC5\u987B\u662F\u76EE\u6807\u5DE5\u5177\u8981\u6C42\u7684\u5165\u53C2\u5BF9\u8C61\uFF1B\u5982\u62A5\u9519\uFF0C\u8BF7\u5148 describe \u518D call\u3002
3528
- `;Pf();Ge();gr();var fqo=qe(()=>L.object({action:L.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:L.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:L.record(L.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF1Bdescribe \u6A21\u5F0F\uFF1A\u5FFD\u7565")})),pqo={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\u4E0B\u4E3A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF1Bdescribe \u6A21\u5F0F\u5FFD\u7565"}},required:["name"]};async function pQr(e){return e?.options?._tools??await Sn.getTools(!1)??[]}function mQr(e){return e.name!==pc&&e.name!==nO}var gQr={name:uQr,async description(){return dQr},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await pQr(t)).filter(mQr),o=(await Promise.all(n.map(async i=>`<tool><name>${i.name}</name><description>${i.isMcp?.()?H4.getSimpleDescription(i.name):await i.description?.()}</description></tool>`))).join(`
3528
+ `;Pf();Ge();gr();var fqo=qe(()=>L.object({action:L.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:L.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:L.record(L.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 Schema \u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002")})),pqo={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 Schema \u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function pQr(e){return e?.options?._tools??await Sn.getTools(!1)??[]}function mQr(e){return e.name!==pc&&e.name!==nO}var gQr={name:uQr,async description(){return dQr},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await pQr(t)).filter(mQr),o=(await Promise.all(n.map(async i=>`<tool><name>${i.name}</name><description>${i.isMcp?.()?H4.getSimpleDescription(i.name):await i.description?.()}</description></tool>`))).join(`
3529
3529
  `);return`${fQr}
3530
3530
  <available_tools>
3531
3531
  ${o}
package/hands.js CHANGED
@@ -756,7 +756,7 @@ data: ${JSON.stringify(z)}
756
756
  `);a=Q.pop()||"";for(let z of Q){let Y=z.trim();if(!(!Y||Y==="data: [DONE]"))if(Y.startsWith("data: ")){let q=Y.slice(6);try{let G=JSON.parse(q);w(G)}catch(G){this.logger&&this.logger.error({err:G,line:Y},"Failed to parse Gemini SSE chunk")}}else try{let q=JSON.parse(Y);w(q)}catch{}}};(async()=>{try{for(;;){let{value:Q,done:z}=await s.read();if(z)break;a+=n.decode(Q,{stream:!0}),O()}I()}catch(Q){o.error(Q)}})()}})}convertGeminiResponseToAnthropic(t){this.logger&&this.logger.debug({response:t},"Original Gemini response");try{if(!t.candidates||!t.candidates[0])throw new Error("No candidates found in Gemini response");let r=t.candidates[0],n=[];r.content&&r.content.parts&&r.content.parts.forEach(o=>{if(o.text&&n.push({type:"text",text:o.text}),o.functionCall){let s=`toolu_${HB()}`,a=o.functionCall.thoughtSignature||o.functionCall.thought_signature||null;n.push({type:"tool_use",id:s,name:o.functionCall.name,input:o.functionCall.args||{},thought_signature:a})}}),r.groundingMetadata&&(this.logger&&this.logger.debug({groundingMetadata:r.groundingMetadata},"Processing grounding metadata"),r.groundingMetadata.webSearchQueries&&n.push({type:"text",text:`
757
757
 
758
758
  [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 R6r(`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"}}},lbe=new abe;var Fmt=X(Qmt(),1);or();us();function Lg(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function Pmt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function Gen(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function zen(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function jen(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,r.response.usage=e.response.body?.usage,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.response.usage=e.openai.response.body?.usage):(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.openai.response.usage=e.openai.response.body?.usage),r}function H5(e,t,r){Dz(t,e),Rz(t,jen(e,r),r)}function D2(e){let t=[],r=e.getReader(),n,i=new Promise(l=>n=l),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(l){try{let{done:c,value:u}=await r.read();if(c){l.close(),s();return}t.push(u),l.enqueue(u)}catch(c){l.error(c),s()}},cancel(l){r.cancel(l).catch(()=>{}),s()}}),done:i}}function $5(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function QIe(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 Lmt=["/v1/messages"];function PIe(e){let t;try{typeof e=="string"?t=new Cv(e):e instanceof Cv?t=e:t=new Cv(e.url)}catch{return""}let r=t.pathname;for(let n of Lmt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function $Z(e,t){let r=typeof e=="string"?e:e instanceof Cv?e.toString():e.url,n;try{n=new Cv(r).pathname}catch{return!1}return Lmt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function Yen(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=await qK.transformRequestOut(n),o=PIe(t)+"/chat/completions",s=Lg(r.headers),a=s.authorization??s.Authorization??"";Gen(i,Pmt(s));let l=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i),signal:r.signal});if(!l.ok){let _=await l.text();return J(`OpenAI Chat Completions API error: ${l.status}`,{url:o,errorResponse:_}),QIe("OpenAI Chat Completions API error","OPENROUTER",l.status,l.statusText,_)}let c=n.stream===!0,u=s["x-agent-id"],f={request:{url:o,method:r.method,headers:s,body:n},response:{status:l.status,statusText:l.statusText,headers:Lg(l.headers)},openai:{request:{body:i},response:{}}};if(!c){let _=await l.text(),C=new Response(_,{status:l.status,statusText:l.statusText,headers:$5(l.headers)}),S=await qK.transformResponseIn(C,n),I=await S.text();try{H5({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(I)}},u)}catch(w){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",w)}return new Response(I,{status:S.status,statusText:S.statusText,headers:S.headers})}let g=D2(l.body),m=new Response(g.stream,{status:l.status,statusText:l.statusText,headers:$5(l.headers)}),A=await qK.transformResponseIn(m,n),E=D2(A.body);return Promise.all([g.done,E.done]).then(async([_,C])=>{try{H5({...f,openai:{...f.openai,response:{body:await fot(_)}},response:{...f.response,body:await OU(C)}},u)}catch(S){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(E.stream,{status:A.status,statusText:A.statusText,headers:A.headers})}}function Ven(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=await GK.transformRequestOut(n),o=Lg(r.headers);zen(i,Pmt(o));let s=JSON.stringify(i),l=PIe(t)+"/responses",c=o.authorization??o.Authorization??"";if(!c)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 u=await e(l,{method:"POST",headers:{"Content-Type":"application/json",Authorization:c,"x-api-key":c.replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal});if(!u.ok){let S=await u.text();return J(`OpenAI Responses API error: ${u.status} ${u.statusText}`,{url:l,status:u.status,errorResponse:S}),QIe("OpenAI Responses API error","RESPONSES",u.status,u.statusText,S)}let f=n.stream===!0,g=o["x-agent-id"],m={request:{url:l,method:r.method,headers:o,body:n},response:{status:u.status,statusText:u.statusText,headers:Lg(u.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await u.text(),I=new Response(S,{status:u.status,statusText:u.statusText,headers:$5(u.headers)}),w=await GK.transformResponseIn(I,n),O=await w.text();try{H5({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},g,"responses")}catch(Q){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",Q)}return new Response(O,{status:w.status,statusText:w.statusText,headers:w.headers})}let A=D2(u.body),E=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:$5(u.headers)}),_=await GK.transformResponseIn(E,n),C=D2(_.body);return Promise.all([A.done,C.done]).then(async([S,I])=>{try{H5({...m,openai:{...m.openai,response:{body:await dot(S)}},response:{...m.response,body:await OU(I)}},g,"responses")}catch(w){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+w?.stack)}}).catch(S=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(C.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function Wen(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=Lg(r.headers),o=await lbe.transformRequestOut(n),s=JSON.stringify(o),a=PIe(t)+`/models/${n.model}:streamGenerateContent?alt=sse`,l=i.authorization??i.Authorization??"",c;try{c=await e(a,{method:"POST",headers:{"Content-Type":"application/json","x-goog-api-key":String(l).replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal})}catch(C){throw J("gemini request error:",C),C}if(!c.ok){let C=await c.text();return J(`Gemini API error response: ${c.status} ${c.statusText}`,{url:a,status:c.status,errorResponse:C}),QIe("Gemini API error","Gemini",c.status,c.statusText,C)}let u=n.stream===!0,f=i["x-agent-id"],g={request:{url:a,method:r.method,headers:Lg(r.headers),body:n},response:{status:c.status,statusText:c.statusText,headers:Lg(c.headers)},openai:{request:{body:o},response:{}}},m=D2(c.body),A=new Response(m.stream,{status:c.status,statusText:c.statusText,headers:$5(c.headers)}),E=await lbe.transformResponseIn(A),_=D2(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let I=u?pot(C):JSON.parse(C),w=u?await OU(S):JSON.parse(S);H5({...g,openai:{...g.openai,response:{body:I}},response:{...g.response,body:w}},f)}catch(I){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+I?.stack)}}).catch(C=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+C)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function Ken(e){return async(t,r)=>{if(!$Z(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=Lg(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,signal:r.signal});if(!a.ok){let f=await a.text();J(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof Cv?t.toString():t.url,status:a.status,errorResponse:f});let g;try{let m=JSON.parse(f);g={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&&(g.error.details=m.error.details)}catch{g={type:"error",error:{type:"api_error",message:`API error: ${a.statusText}`,code:`API_${a.status}_ERROR`}}}return new Response(JSON.stringify(g),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"application/json"}})}let l=a.clone(),c=!(Object.hasOwn(JSON.parse(n),"stream")&&!JSON.parse(n).stream),u={request:{url:typeof t=="string"?t:t instanceof Cv?t.toString():t.url,method:r.method,headers:Lg(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:Lg(a.headers)}};return(async()=>{if(c){let m=await a.text();u.response.body=await OU(m)}else u.response.body=await a.json();let g=Lg(r.headers)["x-agent-id"];Dz(g,u),Rz(g,{request:u.request.body.messages,response:u.response.body.content,usage:u.response.body?.usage})})().catch(f=>J(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
759
- Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var HZ=null,MIe=!1;function Jen(){HZ=null,MIe=!1}pr.on("proxy:changed",Jen);function Zen(){if(MIe)return HZ;if(MIe=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(HZ=new Fmt.ProxyAgent({uri:e}),Jt(`[proxy] using proxy: ${e}`)),HZ}function Xen(){let e=Zen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function qZ(e){let t=e||process.env.API_TYPE,r=Xen();switch(t){case"openai":return Yen(r);case"openai-responses":return Ven(r);case"gemini":return Wen(r);default:return Ken(r)}}ph();var ntn=X(he(),1);function Umt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=etn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function etn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ttn(t)?0:rtn(t)?2:1}function ttn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function rtn(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 u_(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 WC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function GZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function zZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function jZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function LIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Hmt(){return dc.totalCost}function $mt(){return Date.now()-dc.startTime}function qmt(){return dc.totalAPIDuration}function Gmt(e){dc.currentContextTokens=e}function zmt(){return dc.currentContextTokens}ke();He();He();var FIe="2.4.17";globalThis.MACRO={VERSION:FIe,PACKAGE_URL:`@dahawa/${Ki}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var YZ=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${FIe} (${process.env.USER_TYPE})`;import{randomUUID as _y}from"crypto";us();ke();Kt();_r();ke();He();import{existsSync as g_,readdirSync as Tin,statSync as vin}from"fs";import{join as ZC,relative as xin}from"path";import{homedir as Aht}from"os";import{platform as win}from"process";import{readFile as XC}from"fs/promises";_r();Fg();or();import{join as ltn,sep as ctn}from"path";function Am(){if(!gm())return!1;try{let e=ut();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Yf(){return(ltn(Be(),".hcode","team-memory")+ctn).normalize("NFC")}function f_(e){let t=e.normalize("NFC"),r=Yf();return t.startsWith(r)}var hht=X(J5(),1);Qi();var fht=X(J5(),1);_r();He();ke();Iu();import{readFile as uht}from"fs/promises";import{existsSync as rTe,readdirSync as bin,statSync as Cin}from"fs";import{join as nTe,relative as pht}from"path";import{homedir as Sin}from"os";function dht(e){try{let t=(0,fht.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 ve(t),{paths:[],content:e.trim()}}}function Iin(e,t){return t.length===0?!0:t.some(r=>{try{return ac(e,r,{matchBase:!0,dot:!0})}catch(n){return ve(n),!1}})}function iTe(e){let t=[];try{if(!rTe(e))return t;let r=bin(e);for(let n of r){let i=nTe(e,n),o=Cin(i);o.isDirectory()?t.push(...iTe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function mht(){let e=[];try{let t=nTe(Sin(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){ve(i)}}}catch(t){ve(t)}try{let t=nTe(Be(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:pht(Be(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function ght(e,t){e=vV(e);let r=vV(Be()),n=e.startsWith(r)?pht(r,e):e;return t.filter(i=>Iin(n,i.paths))}var Din=`# hawaCodeMd
759
+ Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var HZ=null,MIe=!1;function Jen(){HZ=null,MIe=!1}pr.on("proxy:changed",Jen);function Zen(){if(MIe)return HZ;if(MIe=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(HZ=new Fmt.ProxyAgent({uri:e}),Jt(`[proxy] using proxy: ${e}`)),HZ}function Xen(){let e=Zen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function qZ(e){let t=e||process.env.API_TYPE,r=Xen();switch(t){case"openai":return Yen(r);case"openai-responses":return Ven(r);case"gemini":return Wen(r);default:return Ken(r)}}ph();var ntn=X(he(),1);function Umt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=etn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function etn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ttn(t)?0:rtn(t)?2:1}function ttn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function rtn(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 u_(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 WC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function GZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function zZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function jZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function LIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Hmt(){return dc.totalCost}function $mt(){return Date.now()-dc.startTime}function qmt(){return dc.totalAPIDuration}function Gmt(e){dc.currentContextTokens=e}function zmt(){return dc.currentContextTokens}ke();He();He();var FIe="2.4.18";globalThis.MACRO={VERSION:FIe,PACKAGE_URL:`@dahawa/${Ki}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var YZ=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${FIe} (${process.env.USER_TYPE})`;import{randomUUID as _y}from"crypto";us();ke();Kt();_r();ke();He();import{existsSync as g_,readdirSync as Tin,statSync as vin}from"fs";import{join as ZC,relative as xin}from"path";import{homedir as Aht}from"os";import{platform as win}from"process";import{readFile as XC}from"fs/promises";_r();Fg();or();import{join as ltn,sep as ctn}from"path";function Am(){if(!gm())return!1;try{let e=ut();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Yf(){return(ltn(Be(),".hcode","team-memory")+ctn).normalize("NFC")}function f_(e){let t=e.normalize("NFC"),r=Yf();return t.startsWith(r)}var hht=X(J5(),1);Qi();var fht=X(J5(),1);_r();He();ke();Iu();import{readFile as uht}from"fs/promises";import{existsSync as rTe,readdirSync as bin,statSync as Cin}from"fs";import{join as nTe,relative as pht}from"path";import{homedir as Sin}from"os";function dht(e){try{let t=(0,fht.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 ve(t),{paths:[],content:e.trim()}}}function Iin(e,t){return t.length===0?!0:t.some(r=>{try{return ac(e,r,{matchBase:!0,dot:!0})}catch(n){return ve(n),!1}})}function iTe(e){let t=[];try{if(!rTe(e))return t;let r=bin(e);for(let n of r){let i=nTe(e,n),o=Cin(i);o.isDirectory()?t.push(...iTe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function mht(){let e=[];try{let t=nTe(Sin(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){ve(i)}}}catch(t){ve(t)}try{let t=nTe(Be(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:pht(Be(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function ght(e,t){e=vV(e);let r=vV(Be()),n=e.startsWith(r)?pht(r,e):e;return t.filter(i=>Iin(n,i.paths))}var Din=`# hawaCodeMd
760
760
  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 Rin(e="default"){let r=Je.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}):
761
761
 
762
762
  ${i.content}`}).join(`
@@ -1128,7 +1128,7 @@ You are powered by the model ${e}.`}async function tx(){return Z5()?`gitStatus:
1128
1128
  <context name="${c}">${u}</context>`;let s=i.map(c=>{let u=c.prompt({},t),f=JSON.stringify("inputJSONSchema"in c&&c.inputJSONSchema?c.inputJSONSchema:r0(c.inputSchema));return{name:c.name,description:`${u}
1129
1129
 
1130
1130
  Schema:
1131
- ${f}`}}),{messages:a}=t,l=tcn(o);return rcn(o,l,s,a)}},pyt=ncn;$g();var Qu=X(he(),1),gO=X(he(),1);ke();ke();import{existsSync as icn,readdirSync as ocn,statSync as scn}from"fs";import{join as acn}from"path";function lcn(){let e=Ji.plan();if(!icn(e))return[];try{return ocn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=acn(e,r),i=scn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var myt=({onSelect:e})=>{let[t,r]=(0,gO.useState)([]),[n,i]=(0,gO.useState)(0),[o,s]=(0,gO.useState)(!1);(0,gO.useEffect)(()=>{let c=lcn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];vr((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Le();return o?Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return Qu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Qu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Qu.createElement(v,{color:f?l.claude:l.text}," "),Qu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Qu.createElement(v,{dimColor:!0}," ","(",Kge(c.modified),")"))}),Qu.createElement(N,{marginTop:1,marginLeft:2},Qu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(v,null,"Loading plan history..."))};var gyt=X(he(),1),ccn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return Ti.isPlanMode()?(e("Already in plan mode."),null):gyt.createElement(myt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?Ti.setCurrentPlanFilePath(t):Ti.generatePlanFilePath(),Ti.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},Ayt=ccn;$g();var ucn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return Ti.isAutoMode()?"Already in auto mode.":(Ti.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},hyt=ucn;_r();import{resolve as dcn}from"path";var fcn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Be(),n=dcn(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Eyt=fcn;var WCt=X(he(),1);var Hn=X(he(),1);var Gcn=X(he(),1);var M9=X(he(),1),Hcn=X(Cyt(),1);var Syt={info:"blue",success:"green",error:"red",warning:"yellow"},vcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:Syt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Syt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Pr.info),e==="success"&&(t=Pr.tick),e==="error"&&(t=Pr.cross),e==="warning"&&(t=Pr.warning),{icon:t}}},Iyt=vcn;var xcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Tyt=xcn;var wcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},vyt=wcn;var Dcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},xyt=Dcn;var Rcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},wyt=Rcn;var Ncn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Pr.square,remainingCharacter:Pr.squareLightShade})},Dyt=Ncn;var Bcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Ryt=Bcn;var Ocn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Nyt=Ocn;var kcn={success:"green",error:"red",warning:"yellow",info:"blue"},Mcn={success:Pr.tick,error:Pr.cross,warning:Pr.warning,info:Pr.info},Qcn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:kcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Mcn[e]})},Byt=Qcn;var Pcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Pr.line})},Oyt=Pcn;var Lcn={styles:{value:()=>({})}},kyt=Lcn;var Fcn={styles:{value:()=>({})}},Myt=Fcn;var Ucn={styles:{value:()=>({})}},Qyt=Ucn;var $cn={components:{Alert:Iyt,Badge:Tyt,ConfirmInput:vyt,MultiSelect:xyt,OrderedList:wyt,ProgressBar:Dyt,Select:Ryt,Spinner:Nyt,StatusMessage:Byt,UnorderedList:Oyt,TextInput:kyt,EmailInput:Myt,PasswordInput:Qyt}},qcn=(0,M9.createContext)($cn);var po=e=>(0,M9.useContext)(qcn).components[e];var zcn=X(he(),1);var I_=X(he(),1);var hO=X(he(),1);var Pyt=X(he(),1);var Q9=Pr.line;var cee=(0,Pyt.createContext)({marker:Q9});function Lyt({children:e}){let{marker:t}=(0,hO.useContext)(cee),{styles:r}=po("UnorderedList");return hO.default.createElement(N,{...r.listItem()},hO.default.createElement(v,{...r.marker()},t),hO.default.createElement(N,{...r.content()},e))}var Fyt=X(he(),1),$ve=(0,Fyt.createContext)({depth:0});function jcn({children:e}){let{depth:t}=(0,I_.useContext)($ve),{styles:r,config:n}=po("UnorderedList"),i=(0,I_.useMemo)(()=>({depth:t+1}),[t]),o=(0,I_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??Q9}:{marker:Q9}},[n,t]);return I_.default.createElement($ve.Provider,{value:i},I_.default.createElement(cee.Provider,{value:o},I_.default.createElement(N,{...r.list()},e)))}jcn.Item=Lyt;var Vcn=X(he(),1);var Ycn=X(he(),1);var P9=X(he(),1);var EO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Uyt=X(he(),1);var _O=X(he(),1);var L9=X(he(),1);function Hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return L9.default.createElement(N,{...n.option({isFocused:e})},e&&L9.default.createElement(v,{...n.focusIndicator()},Pr.pointer),L9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&L9.default.createElement(v,{...n.selectedIndicator()},Pr.tick))}var Cm=X(he(),1);import{isDeepStrictEqual as Wcn}from"node:util";var Kcn=(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;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},$yt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new EO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},qyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Cm.useReducer)(Kcn,{visibleOptionCount:e,defaultValue:r,options:t},$yt),[s,a]=(0,Cm.useState)(t);t!==s&&!Wcn(t,s)&&(o({type:"reset",state:$yt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Cm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Cm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Cm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Cm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Cm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Gyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function yO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=qyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Gyt({isDisabled:e,state:s});let{styles:a}=po("Select");return _O.default.createElement(N,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=_O.default.createElement(_O.default.Fragment,null,l.label.slice(0,u),_O.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return _O.default.createElement(Hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Jcn=X(he(),1);var zyt=X(he(),1);var Xcn=X(he(),1);var uee=X(he(),1);var Zcn=X(he(),1);var H2i=ar.inverse(" ");var Yg=X(he(),1);var bO=X(he(),1);var jyt=X(he(),1);var dee=(0,jyt.createContext)({marker:Pr.line});function fee({children:e}){let{marker:t}=(0,bO.useContext)(dee),{styles:r}=po("OrderedList");return bO.default.createElement(N,{...r.listItem()},bO.default.createElement(v,{...r.marker()},t),bO.default.createElement(N,{...r.content()},e))}var Yyt=X(he(),1),qve=(0,Yyt.createContext)({marker:""});function Vg({children:e}){let{marker:t}=(0,Yg.useContext)(qve),{styles:r}=po("OrderedList"),n=0;for(let o of Yg.default.Children.toArray(e))!(0,Yg.isValidElement)(o)||o.type!==fee||n++;let i=String(n).length;return Yg.default.createElement(N,{...r.list()},Yg.default.Children.map(e,(o,s)=>{if(!(0,Yg.isValidElement)(o)||o.type!==fee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Yg.default.createElement(qve.Provider,{value:{marker:l}},Yg.default.createElement(dee.Provider,{value:{marker:l}},o))}))}Vg.Item=fee;var tun=X(he(),1);var Gve=X(he(),1);var eun=X(he(),1);var AOi=ar.inverse(" ");var run=X(he(),1);var nun=X(he(),1);var oun=X(he(),1);var pee=X(he(),1);var iun=X(he(),1);var UOi=ar.inverse(" ");var $i=X(he(),1);var zve=X(he(),1),jve=X(he(),1);e9();us();Qi();qv();or();var Vyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function rx(){let e=[...Vyt,...[...Vyt].reverse()],{frame:t}=ER({interval:120});return zve.createElement(N,{flexWrap:"nowrap",height:1,width:2},zve.createElement(v,{color:Le().claude},e[t%e.length]))}var Aee=X(he(),1);var gee=null,T_=null,mee=new Set;function Vve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Lpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Yve(){T_&&(gee=Vve(T_),mee.forEach(e=>e(gee)))}function sun(e,t){return T_!==e&&(T_&&T_.off("resize",Yve),T_=e,gee=Vve(e),e.on("resize",Yve)),mee.add(t),()=>{mee.delete(t),mee.size===0&&T_&&(T_.off("resize",Yve),T_=null,gee=null)}}function Wve(){let{stdout:e}=hR(),[t,r]=(0,Aee.useState)(()=>Vve(e));return(0,Aee.useEffect)(()=>sun(e,r),[e]),t}function CO(){return Wve()}He();Tf();ke();lh();ke();var DMi=X(Axe(),1);import{homedir as Y9}from"os";import{join as TO}from"path";import{existsSync as V9,mkdirSync as PCt,appendFileSync as QCt,readFileSync as LCt,constants as npn,writeFileSync as ipn,unlinkSync as FCt,statSync as opn}from"fs";import{platform as UCt}from"process";import{accessSync as spn}from"fs";var rpn="2.4.17",j9={VERSION:rpn,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 ix=TO(L0,".update.lock"),apn=300*1e3;function HCt(){try{if(V9(L0)||PCt(L0,{recursive:!0}),V9(ix)){let e=opn(ix);if(Date.now()-e.mtimeMs<apn)return!1;try{FCt(ix)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return ipn(ix,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function $Ct(){try{V9(ix)&&LCt(ix,"utf8")===`${process.pid}`&&FCt(ix)}catch(e){ve(`Failed to release lock: ${e}`)}}async function hxe(){try{let e=await si("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{spn(t,npn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function qCt(e){if(!HCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:j9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{V9(e)||PCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1131
+ ${f}`}}),{messages:a}=t,l=tcn(o);return rcn(o,l,s,a)}},pyt=ncn;$g();var Qu=X(he(),1),gO=X(he(),1);ke();ke();import{existsSync as icn,readdirSync as ocn,statSync as scn}from"fs";import{join as acn}from"path";function lcn(){let e=Ji.plan();if(!icn(e))return[];try{return ocn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=acn(e,r),i=scn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var myt=({onSelect:e})=>{let[t,r]=(0,gO.useState)([]),[n,i]=(0,gO.useState)(0),[o,s]=(0,gO.useState)(!1);(0,gO.useEffect)(()=>{let c=lcn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];vr((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Le();return o?Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return Qu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Qu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Qu.createElement(v,{color:f?l.claude:l.text}," "),Qu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Qu.createElement(v,{dimColor:!0}," ","(",Kge(c.modified),")"))}),Qu.createElement(N,{marginTop:1,marginLeft:2},Qu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(v,null,"Loading plan history..."))};var gyt=X(he(),1),ccn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return Ti.isPlanMode()?(e("Already in plan mode."),null):gyt.createElement(myt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?Ti.setCurrentPlanFilePath(t):Ti.generatePlanFilePath(),Ti.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},Ayt=ccn;$g();var ucn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return Ti.isAutoMode()?"Already in auto mode.":(Ti.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},hyt=ucn;_r();import{resolve as dcn}from"path";var fcn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Be(),n=dcn(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Eyt=fcn;var WCt=X(he(),1);var Hn=X(he(),1);var Gcn=X(he(),1);var M9=X(he(),1),Hcn=X(Cyt(),1);var Syt={info:"blue",success:"green",error:"red",warning:"yellow"},vcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:Syt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Syt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Pr.info),e==="success"&&(t=Pr.tick),e==="error"&&(t=Pr.cross),e==="warning"&&(t=Pr.warning),{icon:t}}},Iyt=vcn;var xcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Tyt=xcn;var wcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},vyt=wcn;var Dcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},xyt=Dcn;var Rcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},wyt=Rcn;var Ncn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Pr.square,remainingCharacter:Pr.squareLightShade})},Dyt=Ncn;var Bcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Ryt=Bcn;var Ocn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Nyt=Ocn;var kcn={success:"green",error:"red",warning:"yellow",info:"blue"},Mcn={success:Pr.tick,error:Pr.cross,warning:Pr.warning,info:Pr.info},Qcn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:kcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Mcn[e]})},Byt=Qcn;var Pcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Pr.line})},Oyt=Pcn;var Lcn={styles:{value:()=>({})}},kyt=Lcn;var Fcn={styles:{value:()=>({})}},Myt=Fcn;var Ucn={styles:{value:()=>({})}},Qyt=Ucn;var $cn={components:{Alert:Iyt,Badge:Tyt,ConfirmInput:vyt,MultiSelect:xyt,OrderedList:wyt,ProgressBar:Dyt,Select:Ryt,Spinner:Nyt,StatusMessage:Byt,UnorderedList:Oyt,TextInput:kyt,EmailInput:Myt,PasswordInput:Qyt}},qcn=(0,M9.createContext)($cn);var po=e=>(0,M9.useContext)(qcn).components[e];var zcn=X(he(),1);var I_=X(he(),1);var hO=X(he(),1);var Pyt=X(he(),1);var Q9=Pr.line;var cee=(0,Pyt.createContext)({marker:Q9});function Lyt({children:e}){let{marker:t}=(0,hO.useContext)(cee),{styles:r}=po("UnorderedList");return hO.default.createElement(N,{...r.listItem()},hO.default.createElement(v,{...r.marker()},t),hO.default.createElement(N,{...r.content()},e))}var Fyt=X(he(),1),$ve=(0,Fyt.createContext)({depth:0});function jcn({children:e}){let{depth:t}=(0,I_.useContext)($ve),{styles:r,config:n}=po("UnorderedList"),i=(0,I_.useMemo)(()=>({depth:t+1}),[t]),o=(0,I_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??Q9}:{marker:Q9}},[n,t]);return I_.default.createElement($ve.Provider,{value:i},I_.default.createElement(cee.Provider,{value:o},I_.default.createElement(N,{...r.list()},e)))}jcn.Item=Lyt;var Vcn=X(he(),1);var Ycn=X(he(),1);var P9=X(he(),1);var EO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Uyt=X(he(),1);var _O=X(he(),1);var L9=X(he(),1);function Hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return L9.default.createElement(N,{...n.option({isFocused:e})},e&&L9.default.createElement(v,{...n.focusIndicator()},Pr.pointer),L9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&L9.default.createElement(v,{...n.selectedIndicator()},Pr.tick))}var Cm=X(he(),1);import{isDeepStrictEqual as Wcn}from"node:util";var Kcn=(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;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},$yt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new EO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},qyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Cm.useReducer)(Kcn,{visibleOptionCount:e,defaultValue:r,options:t},$yt),[s,a]=(0,Cm.useState)(t);t!==s&&!Wcn(t,s)&&(o({type:"reset",state:$yt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Cm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Cm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Cm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Cm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Cm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Gyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function yO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=qyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Gyt({isDisabled:e,state:s});let{styles:a}=po("Select");return _O.default.createElement(N,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=_O.default.createElement(_O.default.Fragment,null,l.label.slice(0,u),_O.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return _O.default.createElement(Hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Jcn=X(he(),1);var zyt=X(he(),1);var Xcn=X(he(),1);var uee=X(he(),1);var Zcn=X(he(),1);var H2i=ar.inverse(" ");var Yg=X(he(),1);var bO=X(he(),1);var jyt=X(he(),1);var dee=(0,jyt.createContext)({marker:Pr.line});function fee({children:e}){let{marker:t}=(0,bO.useContext)(dee),{styles:r}=po("OrderedList");return bO.default.createElement(N,{...r.listItem()},bO.default.createElement(v,{...r.marker()},t),bO.default.createElement(N,{...r.content()},e))}var Yyt=X(he(),1),qve=(0,Yyt.createContext)({marker:""});function Vg({children:e}){let{marker:t}=(0,Yg.useContext)(qve),{styles:r}=po("OrderedList"),n=0;for(let o of Yg.default.Children.toArray(e))!(0,Yg.isValidElement)(o)||o.type!==fee||n++;let i=String(n).length;return Yg.default.createElement(N,{...r.list()},Yg.default.Children.map(e,(o,s)=>{if(!(0,Yg.isValidElement)(o)||o.type!==fee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Yg.default.createElement(qve.Provider,{value:{marker:l}},Yg.default.createElement(dee.Provider,{value:{marker:l}},o))}))}Vg.Item=fee;var tun=X(he(),1);var Gve=X(he(),1);var eun=X(he(),1);var AOi=ar.inverse(" ");var run=X(he(),1);var nun=X(he(),1);var oun=X(he(),1);var pee=X(he(),1);var iun=X(he(),1);var UOi=ar.inverse(" ");var $i=X(he(),1);var zve=X(he(),1),jve=X(he(),1);e9();us();Qi();qv();or();var Vyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function rx(){let e=[...Vyt,...[...Vyt].reverse()],{frame:t}=ER({interval:120});return zve.createElement(N,{flexWrap:"nowrap",height:1,width:2},zve.createElement(v,{color:Le().claude},e[t%e.length]))}var Aee=X(he(),1);var gee=null,T_=null,mee=new Set;function Vve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Lpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Yve(){T_&&(gee=Vve(T_),mee.forEach(e=>e(gee)))}function sun(e,t){return T_!==e&&(T_&&T_.off("resize",Yve),T_=e,gee=Vve(e),e.on("resize",Yve)),mee.add(t),()=>{mee.delete(t),mee.size===0&&T_&&(T_.off("resize",Yve),T_=null,gee=null)}}function Wve(){let{stdout:e}=hR(),[t,r]=(0,Aee.useState)(()=>Vve(e));return(0,Aee.useEffect)(()=>sun(e,r),[e]),t}function CO(){return Wve()}He();Tf();ke();lh();ke();var DMi=X(Axe(),1);import{homedir as Y9}from"os";import{join as TO}from"path";import{existsSync as V9,mkdirSync as PCt,appendFileSync as QCt,readFileSync as LCt,constants as npn,writeFileSync as ipn,unlinkSync as FCt,statSync as opn}from"fs";import{platform as UCt}from"process";import{accessSync as spn}from"fs";var rpn="2.4.18",j9={VERSION:rpn,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 ix=TO(L0,".update.lock"),apn=300*1e3;function HCt(){try{if(V9(L0)||PCt(L0,{recursive:!0}),V9(ix)){let e=opn(ix);if(Date.now()-e.mtimeMs<apn)return!1;try{FCt(ix)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return ipn(ix,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function $Ct(){try{V9(ix)&&LCt(ix,"utf8")===`${process.pid}`&&FCt(ix)}catch(e){ve(`Failed to release lock: ${e}`)}}async function hxe(){try{let e=await si("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{spn(t,npn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function qCt(e){if(!HCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:j9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{V9(e)||PCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1132
1132
  # npm global path
1133
1133
  export PATH="${e}/bin:$PATH"
1134
1134
  `;if(UCt==="win32"){let n=await si(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[TO(Y9(),".bashrc"),TO(Y9(),".bash_profile"),TO(Y9(),".zshrc"),TO(Y9(),".config","fish","config.fish")];for(let i of n)if(V9(i))try{if(!LCt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
@@ -3360,7 +3360,7 @@ async () => {
3360
3360
  ## \u6CE8\u610F
3361
3361
  - \u53EA\u80FD\u4EE3\u7406 <available_tools> \u6E05\u5355\u4E2D\u5217\u51FA\u7684\u5DE5\u5177\u3002
3362
3362
  - input \u5FC5\u987B\u662F\u76EE\u6807\u5DE5\u5177\u8981\u6C42\u7684\u5165\u53C2\u5BF9\u8C61\uFF1B\u5982\u62A5\u9519\uFF0C\u8BF7\u5148 describe \u518D call\u3002
3363
- `;Ed();He();or();var I9n=Pe(()=>k.object({action:k.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:k.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:k.record(k.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF1Bdescribe \u6A21\u5F0F\uFF1A\u5FFD\u7565")})),T9n={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\u4E0B\u4E3A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF1Bdescribe \u6A21\u5F0F\u5FFD\u7565"}},required:["name"]};async function _zt(e){return e?.options?._tools??await en.getTools(!1)??[]}function yzt(e){return e.name!==Ga&&e.name!==XI}var bzt={name:Azt,async description(){return hzt},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await _zt(t)).filter(yzt),i=(await Promise.all(n.map(async o=>`<tool><name>${o.name}</name><description>${o.isMcp?.()?UO.getSimpleDescription(o.name):await o.description?.()}</description></tool>`))).join(`
3363
+ `;Ed();He();or();var I9n=Pe(()=>k.object({action:k.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:k.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:k.record(k.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 Schema \u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002")})),T9n={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 Schema \u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function _zt(e){return e?.options?._tools??await en.getTools(!1)??[]}function yzt(e){return e.name!==Ga&&e.name!==XI}var bzt={name:Azt,async description(){return hzt},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await _zt(t)).filter(yzt),i=(await Promise.all(n.map(async o=>`<tool><name>${o.name}</name><description>${o.isMcp?.()?UO.getSimpleDescription(o.name):await o.description?.()}</description></tool>`))).join(`
3364
3364
  `);return`${Ezt}
3365
3365
  <available_tools>
3366
3366
  ${i}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dahawa/hawa-code",
3
- "version": "2.4.17",
3
+ "version": "2.4.18",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },