@dahawa/hawa-code 1.39.0 → 1.39.1
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.
- package/cli.js +2 -2
- package/hands.js +2 -2
- package/package.json +1 -1
- package/webServer/app.js +61 -61
package/cli.js
CHANGED
|
@@ -676,7 +676,7 @@ globstar while`,t,p,r,f,A),this.matchOne(t.slice(p),r.slice(f),n))return this.de
|
|
|
676
676
|
`)),OUn(e,o,{encoding:r,flush:!0})}var MGt=new Rle.default({fetchMethod:e=>FUn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function GGt(e){let t=e8(e);return MGt.get(t)||MGt.fetchMethod?.(t)}async function FUn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await MMt(e,t.signal,15),n=0;for(let o of r)bw(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function HGt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var UUn=new Rle.default({fetchMethod:e=>qGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Rm(e){let t=e8(e);return HGt(UUn,t,()=>qGt(t))}function qGt(e){let r=Buffer.alloc(4096),n;try{n=BGt(e,"r");let o=kGt(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&&PGt(n)}}var QUn=new Rle.default({fetchMethod:e=>$Gt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function bw(e){let t=e8(e);return HGt(QUn,t,()=>$Gt(t))}function $Gt(e,t="utf8"){try{if(!LGt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=BGt(e,"r"),i=kGt(o,n,0,4096,0);PGt(o);let s=n.toString(t,0,i),a=0,c=0;for(let l=0;l<s.length;l++)s[l]===`
|
|
677
677
|
`&&(l>0&&s[l-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return be(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function rke(e){let t=FGt(e)?e:e8(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 nke(e){return e?FGt(e)?e:e8(ke(),e):void 0}function YGt(e){try{let t=nke(e),r=t?kUn(ke(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return he("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Nle(e){try{let t=PUn(e),r=xGt(e,OGt(e));if(!wUn(t))return;let i=MUn(t).filter(s=>xGt(s,OGt(s))===r&&LUn(t,s)!==e)[0];return i||void 0}catch(t){be(`Error finding similar file for ${e}: ${t}`);return}}function oke(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function AD({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return oke()?r.map((n,o)=>`${o+t} ${n}`).join(`
|
|
678
678
|
`):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
|
|
679
|
-
`)}function VGt(e){try{let t=BUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}Qe();function pD(){let e=Hn();e.hasCompletedProjectOnboarding||wi({...e,hasCompletedProjectOnboarding:!0})}function $Un(){let e=Ar();bo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function ike({workspaceDir:e}){let r=!Hn().hasCompletedProjectOnboarding,o=Ar().lastReleaseNotesSeen,i=[];(!o||(0,zGt.gt)(MACRO.VERSION,o))&&(i=zce[MACRO.VERSION]||[]);let s=i.length>0;if(qi.useEffect(()=>{s&&!r&&$Un()},[s,r]),!r&&!s)return null;let a=GUn(HUn(e,_i)),c=VGt(e),l=!a&&!c,u=kU.isEnabled&&!Ar().shiftEnterKeyBindingInstalled,d=X();return qi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&qi.createElement(qi.Fragment,null,qi.createElement(I,{color:d.secondaryText},"Tips for getting started:"),qi.createElement(vd,{children:[]},(()=>{let p=[];return c&&p.push(qi.createElement(vd.Item,{key:"workspace"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," to create a new app or clone a repository."))),l&&p.push(qi.createElement(vd.Item,{key:"claudemd"},qi.createElement(I,{color:d.secondaryText},"Run ",qi.createElement(I,{color:d.text},"/init")," to create a",_i," file with instructions for Hawa code."))),u&&p.push(qi.createElement(vd.Item,{key:"terminal"},qi.createElement(I,{color:d.secondaryText},"Run ",qi.createElement(I,{color:d.text},"/terminal-setup"),qi.createElement(I,{bold:!1}," to set up terminal integration")))),p.push(qi.createElement(vd.Item,{key:"questions"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," questions about your codebase."))),p.push(qi.createElement(vd.Item,{key:"changes"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," to implement changes to your codebase."))),p})())),!r&&s&&qi.createElement(D,{borderColor:X().secondaryBorder,flexDirection:"column",marginRight:1},qi.createElement(D,{flexDirection:"column",gap:0},qi.createElement(D,{marginBottom:1},qi.createElement(I,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),qi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((p,f)=>qi.createElement(I,{key:f,color:X().secondaryText},"\u2022 ",p))))),e===qUn()&&qi.createElement(I,{color:X().warning},"Note: You have launched ",qi.createElement(I,{bold:!0},Je)," in your home directory. For the best experience, launch it in a project directory instead."))}var JU=G(ae(),1);var KU=G(ae(),1);var t8=G(ae(),1);function ske({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=is("Select");return t8.default.createElement(D,{...o.option({isFocused:e})},e&&t8.default.createElement(I,{...o.focusIndicator()},r?Xr.triangleDownSmall:Xr.pointer),t8.default.createElement(I,{...o.label({isFocused:e,isSelected:t})},n),t&&t8.default.createElement(I,{...o.selectedIndicator()},Xr.tick))}var Dm=G(ae(),1);import{isDeepStrictEqual as YUn}from"node:util";var r8=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:ake(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var VUn=(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}}},cke=e=>e.flatMap(t=>{if("options"in t){let r=cke(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),WGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=cke(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new r8(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}},lke=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=cke(t),[a,c]=(0,Dm.useReducer)(VUn,{visibleOptionCount:e,defaultValue:r,options:t},WGt),[l,u]=(0,Dm.useState)(s);s!==l&&!YUn(s,l)&&(c({type:"reset",state:WGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Dm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Dm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Dm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Dm.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Dm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Dm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Dm.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 uke=({isDisabled:e=!1,state:t})=>{wt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var ake=e=>`HEADER-${e.optionValues.join(",")}`;function KC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=lke({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});uke({isDisabled:e,state:c});let{styles:l}=is("Select");return KU.default.createElement(D,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:ake(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,_=h;if(r&&h.includes(r)){let T=h.indexOf(r);_=KU.default.createElement(KU.default.Fragment,null,h.slice(0,T),KU.default.createElement(I,{...l.highlightedText()},r),h.slice(T+r.length))}return KU.default.createElement(ske,{key:d,isFocused:p,isSelected:f,smallPointer:A},_)}))}function jGt({onDone:e}){return wt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),JU.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:X().secondaryBorder},JU.default.createElement(D,{marginBottom:1,flexDirection:"column"},JU.default.createElement(I,{bold:!0},"You've spent $5 this session.")),JU.default.createElement(D,null,JU.default.createElement(KC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var wn=G(ae(),1),_r=G(ae(),1);var Ef=G(ae(),1);Qe();Dr();Qe();we();import zUn from"os";import WUn from"path";import n8 from"fs";var jUn={sources:{},routing:{}};function ZGt(){let e=zUn.homedir();return WUn.join(e,Mn,"config.json")}function KGt(){try{let e=ZGt();if(!n8.existsSync(e))return jUn;let t=n8.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:KUn(r)}catch(e){throw be(e),e}}function KUn(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 JGt(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 dke=class{config;constructor(){try{this.config=KGt()}catch(t){console.log(t)}}reload(){this.config=KGt()}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=JGt(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=JGt(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=ZGt(),r={};if(n8.existsSync(t)){let o=n8.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};n8.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},jo=new dke;var JUn="1.39.0",tb={VERSION:JUn,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 pke=46,XGt=["(\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 xle({isDefaultModel:e=!1}){let t=Math.max(pke,ke().length+12),r=X(),n=XGt[Math.floor(Math.random()*XGt.length)];return Ef.createElement(D,{flexDirection:"column"},Ef.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Ef.createElement(I,null,Ef.createElement(I,null,n)," Welcome to"," ",Ef.createElement(I,{bold:!0},Je),Ef.createElement(I,{color:r.secondaryText}," v",tb.VERSION)),Ef.createElement(Ef.Fragment,null,Ef.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},Ef.createElement(I,{color:r.secondaryText,italic:!0},"/help for help"),Ef.createElement(I,{color:r.secondaryText},"cwd: ",ke()),Ef.createElement(I,{color:r.secondaryText},"model: ",jo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Ef.createElement(I,{color:r.secondaryText},"small fast model: ",jo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var WS=G(ae(),1);we();var cK=G(ae(),1);import{randomUUID as $S}from"crypto";var e3t=()=>[],t3t=()=>{};function r3t(e){e3t=e}function Ole(){return e3t}function n3t(e){t3t=e}function o3t(){return t3t}we();or();Dr();we();Qe();import{existsSync as XC,readdirSync as S9n,statSync as T9n}from"fs";import{join as ED,relative as b9n}from"path";import{homedir as O4t}from"os";import{platform as y9n}from"process";import{readFile as SD}from"fs/promises";Dr();rb();Mr();import{join as nQn,sep as oQn}from"path";function Sf(){if(!Nm())return!1;try{let e=vt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function xm(){return(nQn(ke(),".hcode","team-memory")+oQn).normalize("NFC")}function eQ(e){let t=e.normalize("NFC"),r=xm();return t.startsWith(r)}var w4t=G(p8(),1);Wo();var R4t=G(p8(),1);Dr();Qe();we();gf();import{readFile as I4t}from"fs/promises";import{existsSync as xke,readdirSync as A9n,statSync as h9n}from"fs";import{join as Oke,relative as D4t}from"path";import{homedir as _9n}from"os";function v4t(e){try{let t=(0,R4t.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 E9n(e,t){return t.length===0?!0:t.some(r=>{try{return Dd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function wke(e){let t=[];try{if(!xke(e))return t;let r=A9n(e);for(let n of r){let o=Oke(e,n),i=h9n(o);i.isDirectory()?t.push(...wke(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function N4t(){let e=[];try{let t=Oke(_9n(),Mn,"rules");if(xke(t)){let r=wke(t);for(let n of r)try{let o=await I4t(n,"utf-8"),{paths:i,content:s}=v4t(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=Oke(ke(),Mn,"rules");if(xke(t)){let r=wke(t);for(let n of r)try{let o=await I4t(n,"utf-8"),{paths:i,content:s}=v4t(o);i.length>0&&e.push({filePath:D4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function x4t(e,t){e=Dae(e);let r=Dae(ke()),n=e.startsWith(r)?D4t(r,e):e;return t.filter(o=>E9n(n,o.paths))}var C9n=`# hawaCodeMd
|
|
679
|
+
`)}function VGt(e){try{let t=BUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}Qe();function pD(){let e=Hn();e.hasCompletedProjectOnboarding||wi({...e,hasCompletedProjectOnboarding:!0})}function $Un(){let e=Ar();bo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function ike({workspaceDir:e}){let r=!Hn().hasCompletedProjectOnboarding,o=Ar().lastReleaseNotesSeen,i=[];(!o||(0,zGt.gt)(MACRO.VERSION,o))&&(i=zce[MACRO.VERSION]||[]);let s=i.length>0;if(qi.useEffect(()=>{s&&!r&&$Un()},[s,r]),!r&&!s)return null;let a=GUn(HUn(e,_i)),c=VGt(e),l=!a&&!c,u=kU.isEnabled&&!Ar().shiftEnterKeyBindingInstalled,d=X();return qi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&qi.createElement(qi.Fragment,null,qi.createElement(I,{color:d.secondaryText},"Tips for getting started:"),qi.createElement(vd,{children:[]},(()=>{let p=[];return c&&p.push(qi.createElement(vd.Item,{key:"workspace"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," to create a new app or clone a repository."))),l&&p.push(qi.createElement(vd.Item,{key:"claudemd"},qi.createElement(I,{color:d.secondaryText},"Run ",qi.createElement(I,{color:d.text},"/init")," to create a",_i," file with instructions for Hawa code."))),u&&p.push(qi.createElement(vd.Item,{key:"terminal"},qi.createElement(I,{color:d.secondaryText},"Run ",qi.createElement(I,{color:d.text},"/terminal-setup"),qi.createElement(I,{bold:!1}," to set up terminal integration")))),p.push(qi.createElement(vd.Item,{key:"questions"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," questions about your codebase."))),p.push(qi.createElement(vd.Item,{key:"changes"},qi.createElement(I,{color:d.secondaryText},"Ask ",Je," to implement changes to your codebase."))),p})())),!r&&s&&qi.createElement(D,{borderColor:X().secondaryBorder,flexDirection:"column",marginRight:1},qi.createElement(D,{flexDirection:"column",gap:0},qi.createElement(D,{marginBottom:1},qi.createElement(I,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),qi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((p,f)=>qi.createElement(I,{key:f,color:X().secondaryText},"\u2022 ",p))))),e===qUn()&&qi.createElement(I,{color:X().warning},"Note: You have launched ",qi.createElement(I,{bold:!0},Je)," in your home directory. For the best experience, launch it in a project directory instead."))}var JU=G(ae(),1);var KU=G(ae(),1);var t8=G(ae(),1);function ske({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=is("Select");return t8.default.createElement(D,{...o.option({isFocused:e})},e&&t8.default.createElement(I,{...o.focusIndicator()},r?Xr.triangleDownSmall:Xr.pointer),t8.default.createElement(I,{...o.label({isFocused:e,isSelected:t})},n),t&&t8.default.createElement(I,{...o.selectedIndicator()},Xr.tick))}var Dm=G(ae(),1);import{isDeepStrictEqual as YUn}from"node:util";var r8=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:ake(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var VUn=(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}}},cke=e=>e.flatMap(t=>{if("options"in t){let r=cke(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),WGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=cke(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new r8(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}},lke=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=cke(t),[a,c]=(0,Dm.useReducer)(VUn,{visibleOptionCount:e,defaultValue:r,options:t},WGt),[l,u]=(0,Dm.useState)(s);s!==l&&!YUn(s,l)&&(c({type:"reset",state:WGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Dm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Dm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Dm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Dm.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Dm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Dm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Dm.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 uke=({isDisabled:e=!1,state:t})=>{wt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var ake=e=>`HEADER-${e.optionValues.join(",")}`;function KC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=lke({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});uke({isDisabled:e,state:c});let{styles:l}=is("Select");return KU.default.createElement(D,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:ake(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,_=h;if(r&&h.includes(r)){let T=h.indexOf(r);_=KU.default.createElement(KU.default.Fragment,null,h.slice(0,T),KU.default.createElement(I,{...l.highlightedText()},r),h.slice(T+r.length))}return KU.default.createElement(ske,{key:d,isFocused:p,isSelected:f,smallPointer:A},_)}))}function jGt({onDone:e}){return wt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),JU.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:X().secondaryBorder},JU.default.createElement(D,{marginBottom:1,flexDirection:"column"},JU.default.createElement(I,{bold:!0},"You've spent $5 this session.")),JU.default.createElement(D,null,JU.default.createElement(KC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var wn=G(ae(),1),_r=G(ae(),1);var Ef=G(ae(),1);Qe();Dr();Qe();we();import zUn from"os";import WUn from"path";import n8 from"fs";var jUn={sources:{},routing:{}};function ZGt(){let e=zUn.homedir();return WUn.join(e,Mn,"config.json")}function KGt(){try{let e=ZGt();if(!n8.existsSync(e))return jUn;let t=n8.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:KUn(r)}catch(e){throw be(e),e}}function KUn(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 JGt(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 dke=class{config;constructor(){try{this.config=KGt()}catch(t){console.log(t)}}reload(){this.config=KGt()}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=JGt(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=JGt(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=ZGt(),r={};if(n8.existsSync(t)){let o=n8.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};n8.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},jo=new dke;var JUn="1.39.1",tb={VERSION:JUn,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 pke=46,XGt=["(\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 xle({isDefaultModel:e=!1}){let t=Math.max(pke,ke().length+12),r=X(),n=XGt[Math.floor(Math.random()*XGt.length)];return Ef.createElement(D,{flexDirection:"column"},Ef.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Ef.createElement(I,null,Ef.createElement(I,null,n)," Welcome to"," ",Ef.createElement(I,{bold:!0},Je),Ef.createElement(I,{color:r.secondaryText}," v",tb.VERSION)),Ef.createElement(Ef.Fragment,null,Ef.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},Ef.createElement(I,{color:r.secondaryText,italic:!0},"/help for help"),Ef.createElement(I,{color:r.secondaryText},"cwd: ",ke()),Ef.createElement(I,{color:r.secondaryText},"model: ",jo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Ef.createElement(I,{color:r.secondaryText},"small fast model: ",jo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var WS=G(ae(),1);we();var cK=G(ae(),1);import{randomUUID as $S}from"crypto";var e3t=()=>[],t3t=()=>{};function r3t(e){e3t=e}function Ole(){return e3t}function n3t(e){t3t=e}function o3t(){return t3t}we();or();Dr();we();Qe();import{existsSync as XC,readdirSync as S9n,statSync as T9n}from"fs";import{join as ED,relative as b9n}from"path";import{homedir as O4t}from"os";import{platform as y9n}from"process";import{readFile as SD}from"fs/promises";Dr();rb();Mr();import{join as nQn,sep as oQn}from"path";function Sf(){if(!Nm())return!1;try{let e=vt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function xm(){return(nQn(ke(),".hcode","team-memory")+oQn).normalize("NFC")}function eQ(e){let t=e.normalize("NFC"),r=xm();return t.startsWith(r)}var w4t=G(p8(),1);Wo();var R4t=G(p8(),1);Dr();Qe();we();gf();import{readFile as I4t}from"fs/promises";import{existsSync as xke,readdirSync as A9n,statSync as h9n}from"fs";import{join as Oke,relative as D4t}from"path";import{homedir as _9n}from"os";function v4t(e){try{let t=(0,R4t.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 E9n(e,t){return t.length===0?!0:t.some(r=>{try{return Dd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function wke(e){let t=[];try{if(!xke(e))return t;let r=A9n(e);for(let n of r){let o=Oke(e,n),i=h9n(o);i.isDirectory()?t.push(...wke(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function N4t(){let e=[];try{let t=Oke(_9n(),Mn,"rules");if(xke(t)){let r=wke(t);for(let n of r)try{let o=await I4t(n,"utf-8"),{paths:i,content:s}=v4t(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=Oke(ke(),Mn,"rules");if(xke(t)){let r=wke(t);for(let n of r)try{let o=await I4t(n,"utf-8"),{paths:i,content:s}=v4t(o);i.length>0&&e.push({filePath:D4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function x4t(e,t){e=Dae(e);let r=Dae(ke()),n=e.startsWith(r)?D4t(r,e):e;return t.filter(o=>E9n(n,o.paths))}var C9n=`# hawaCodeMd
|
|
680
680
|
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 I9n(e="default"){let r=Ye.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}):
|
|
681
681
|
|
|
682
682
|
${o.content}`}).join(`
|
|
@@ -774,7 +774,7 @@ data: ${JSON.stringify(U)}
|
|
|
774
774
|
Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var bfe=null,fGe=!1;function aoo(){bfe=null,fGe=!1}Ir.on("proxy:changed",aoo);function coo(){if(fGe)return bfe;if(fGe=!0,vt().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(bfe=new Gjt.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),bfe}function loo(){let e=coo();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function Cfe(e){let t=e||process.env.API_TYPE,r=loo();switch(t){case"openai":return noo(r);case"openai-responses":return ooo(r);case"gemini":return ioo(r);default:return soo(r)}}var qjt=G(ae(),1);function Hjt(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||doo(t)?0:poo(t)?2:1}function doo(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function poo(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 sS(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 AGe(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 S0(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Ife(e,t,r){let n=[];return typeof e=="number"&&n.push(AGe(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${S0(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}we();ca();var fA={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0};function vfe(e,t){fA.totalCost+=e,fA.totalAPIDuration+=t}function Rfe(e,t){fA.inputTokens+=e,fA.outputTokens+=t,Ir.emit("token:change",{inputTokens:fA.inputTokens,outputTokens:fA.outputTokens})}function uV(){return{inputTokens:fA.inputTokens,outputTokens:fA.outputTokens}}function Dfe(){return fA.totalCost}function $jt(){return Date.now()-fA.startTime}function hGe(){return Tt.grey(`Total duration (API): ${sS(fA.totalAPIDuration)}
|
|
775
775
|
Total duration (wall): ${sS($jt())}`)}function Yjt(){(0,qjt.useEffect)(()=>{let e=()=>{process.stdout.write(`
|
|
776
776
|
`+hGe()+`
|
|
777
|
-
`);let t=Hn();wi({...t,lastCost:fA.totalCost,lastAPIDuration:fA.totalAPIDuration,lastDuration:$jt(),lastSessionId:BE})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}we();Qe();Qe();var _Ge="1.39.
|
|
777
|
+
`);let t=Hn();wi({...t,lastCost:fA.totalCost,lastAPIDuration:fA.totalAPIDuration,lastDuration:$jt(),lastSessionId:BE})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}we();Qe();Qe();var _Ge="1.39.1";globalThis.MACRO={VERSION:_Ge,PACKAGE_URL:`@dahawa/${Ei}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Nfe=process.env.HAWA_CODE_USER_AGENT||`${Ei}/${_Ge} (${process.env.USER_TYPE})`;we();we();or();function Op(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=gp(t);if(n?.type==="user"){t[t.length-1]=Aoo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=gp(t);n?.type==="user"&&(t[t.length-1]=foo(n,r));return}}}),t}function foo(e,t){return{...e,message:{...e.message,content:goo(e.message.content,moo(t.content.content))}}}function moo(e){return`
|
|
778
778
|
<system-reminder>
|
|
779
779
|
The user sent the following message:
|
|
780
780
|
${e}
|
package/hands.js
CHANGED
|
@@ -751,7 +751,7 @@ data: ${JSON.stringify(G)}
|
|
|
751
751
|
|
|
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 vQr(`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"}}},R0e=new N0e;var mct=te(dct(),1);hr();vs();function _A(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function fct(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function UYr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function HYr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function qYr(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 bU(e,t,r){FG(t,e),QG(t,qYr(e,r),r)}function RR(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 CU(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function s1e(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 pct=["/v1/messages"];function a1e(e){let t;try{typeof e=="string"?t=new MT(e):e instanceof MT?t=e:t=new MT(e.url)}catch{return""}let r=t.pathname;for(let n of pct){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function KK(e,t){let r=typeof e=="string"?e:e instanceof MT?e.toString():e.url,n;try{n=new MT(r).pathname}catch{return!1}return pct.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function GYr(e){return async(t,r)=>{if(!KK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await JV.transformRequestOut(n),o=a1e(t)+"/chat/completions",s=_A(r.headers),a=s.authorization??s.Authorization??"";UYr(i,fct(s));let u=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i),signal:r.signal});if(!u.ok){let _=await u.text();return le(`OpenAI Chat Completions API error: ${u.status}`,{url:o,errorResponse:_}),s1e("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:_A(u.headers)},openai:{request:{body:i},response:{}}};if(!l){let _=await u.text(),C=new Response(_,{status:u.status,statusText:u.statusText,headers:CU(u.headers)}),S=await JV.transformResponseIn(C,n),I=await S.text();try{bU({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(I)}},c)}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",x)}return new Response(I,{status:S.status,statusText:S.statusText,headers:S.headers})}let A=RR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:CU(u.headers)}),g=await JV.transformResponseIn(m,n),E=RR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{bU({...f,openai:{...f.openai,response:{body:await Het(_)}},response:{...f.response,body:await pP(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 $Yr(e){return async(t,r)=>{if(!KK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await ZV.transformRequestOut(n),o=_A(r.headers);HYr(i,fct(o));let s=JSON.stringify(i),u=a1e(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,signal:r.signal});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}),s1e("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:_A(c.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await c.text(),I=new Response(S,{status:c.status,statusText:c.statusText,headers:CU(c.headers)}),x=await ZV.transformResponseIn(I,n),O=await x.text();try{bU({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},A,"responses")}catch(F){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",F)}return new Response(O,{status:x.status,statusText:x.statusText,headers:x.headers})}let g=RR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:CU(c.headers)}),_=await ZV.transformResponseIn(E,n),C=RR(_.body);return Promise.all([g.done,C.done]).then(async([S,I])=>{try{bU({...m,openai:{...m.openai,response:{body:await Uet(S)}},response:{...m.response,body:await pP(I)}},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 zYr(e){return async(t,r)=>{if(!KK(t,r))return e(t,r);let n=JSON.parse(r.body),i=_A(r.headers),o=await R0e.transformRequestOut(n),s=JSON.stringify(o),a=a1e(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,signal:r.signal})}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}),s1e("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:_A(r.headers),body:n},response:{status:l.status,statusText:l.statusText,headers:_A(l.headers)},openai:{request:{body:o},response:{}}},m=RR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:CU(l.headers)}),E=await R0e.transformResponseIn(g),_=RR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let I=c?qet(C):JSON.parse(C),x=c?await pP(S):JSON.parse(S);bU({...A,openai:{...A.openai,response:{body:I}},response:{...A.response,body:x}},f)}catch(I){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+I?.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 YYr(e){return async(t,r)=>{if(!KK(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=_A(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();le(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof MT?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 MT?t.toString():t.url,method:r.method,headers:_A(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:_A(a.headers)}};return(async()=>{if(l){let m=await a.text();c.response.body=await pP(m)}else c.response.body=await a.json();let A=_A(r.headers)["x-agent-id"];FG(A,c),QG(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 WK=null,o1e=!1;function jYr(){WK=null,o1e=!1}Mr.on("proxy:changed",jYr);function VYr(){if(o1e)return WK;if(o1e=!0,Ht().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(WK=new mct.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),WK}function WYr(){let e=VYr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function JK(e){let t=e||process.env.API_TYPE,r=WYr();switch(t){case"openai":return GYr(r);case"openai-responses":return $Yr(r);case"gemini":return zYr(r);default:return YYr(r)}}var XYr=te(Ee(),1);function Act(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=KYr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function KYr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||JYr(t)?0:ZYr(t)?2:1}function JYr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function ZYr(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 yA(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 lC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();vs();var cC={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0};function ZK(e,t){cC.totalCost+=e,cC.totalAPIDuration+=t}function XK(e,t){cC.inputTokens+=e,cC.outputTokens+=t,Mr.emit("token:change",{inputTokens:cC.inputTokens,outputTokens:cC.outputTokens})}function ejr(){return Date.now()-cC.startTime}function gct(){return pr.grey(`Total duration (API): ${yA(cC.totalAPIDuration)}
|
|
754
|
-
Total duration (wall): ${yA(ejr())}`)}Ue();Me();Me();var u1e="1.39.
|
|
754
|
+
Total duration (wall): ${yA(ejr())}`)}Ue();Me();Me();var u1e="1.39.1";globalThis.MACRO={VERSION:u1e,PACKAGE_URL:`@dahawa/${qi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var eJ=process.env.HAWA_CODE_USER_AGENT||`${qi}/${u1e} (${process.env.USER_TYPE})`;import{randomUUID as F_}from"crypto";var tjr=()=>[],rjr=()=>{};function tJ(){return tjr}function hct(){return rjr}Ue();Kt();vr();Ue();Me();import{existsSync as k0,readdirSync as IKr,statSync as TKr}from"fs";import{join as pC,relative as vKr}from"path";import{homedir as qft}from"os";import{platform as xKr}from"process";import{readFile as mC}from"fs/promises";vr();N0();hr();import{join as ajr,sep as ujr}from"path";function Vp(){if(!jp())return!1;try{let e=Ht();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function vf(){return(ajr(Fe(),".hcode","team-memory")+ujr).normalize("NFC")}function c1e(e){let t=e.normalize("NFC"),r=vf();return t.startsWith(r)}var Gft=te(NU(),1);bi();var Lft=te(NU(),1);vr();Me();Ue();cc();import{readFile as Fft}from"fs/promises";import{existsSync as x1e,readdirSync as yKr,statSync as bKr}from"fs";import{join as D1e,relative as Pft}from"path";import{homedir as CKr}from"os";function Qft(e){try{let t=(0,Lft.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 Ie(t),{paths:[],content:e.trim()}}}function SKr(e,t){return t.length===0?!0:t.some(r=>{try{return Zu(e,r,{matchBase:!0,dot:!0})}catch(n){return Ie(n),!1}})}function w1e(e){let t=[];try{if(!x1e(e))return t;let r=yKr(e);for(let n of r){let i=D1e(e,n),o=bKr(i);o.isDirectory()?t.push(...w1e(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){Ie(r)}return t}async function Uft(){let e=[];try{let t=D1e(CKr(),qr,"rules");if(x1e(t)){let r=w1e(t);for(let n of r)try{let i=await Fft(n,"utf-8"),{paths:o,content:s}=Qft(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){Ie(i)}}}catch(t){Ie(t)}try{let t=D1e(Fe(),qr,"rules");if(x1e(t)){let r=w1e(t);for(let n of r)try{let i=await Fft(n,"utf-8"),{paths:o,content:s}=Qft(i);o.length>0&&e.push({filePath:Pft(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){Ie(i)}}}catch(t){Ie(t)}return e}function Hft(e,t){e=OY(e);let r=OY(Fe()),n=e.startsWith(r)?Pft(r,e):e;return t.filter(i=>SKr(n,i.paths))}var DKr=`# hawaCodeMd
|
|
755
755
|
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 wKr(e="default"){let r=Ge.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}):
|
|
756
756
|
|
|
757
757
|
${i.content}`}).join(`
|
|
@@ -1014,7 +1014,7 @@ try {
|
|
|
1014
1014
|
`],{encoding:"utf8",maxBuffer:wgt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function ken(){try{let e=l3("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var Men="[Image pasted]";function Ogt(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function Mgt({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=_,I=C,x=u3.fromText(e,m,S),[O,F]=(0,kgt.useState)(null);function G(){O&&(clearTimeout(O),F(null),o?.(!1))}let H=iv(ce=>{G(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),U=iv(ce=>{G(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function z(){return u3.fromText("",m,0)}let Y=iv(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function de(){return G(),x.text===""?(Y(),x):x.del()}function be(){if(l)return x;let ce=Rgt();return ce===null?(Ngt()&&(o?.(!0,Bgt),G(),F(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(Men))}let k=Ogt([["a",()=>x.startOfLine()],["b",()=>x.left()],["c",H],["d",de],["e",()=>x.endOfLine()],["f",()=>x.right()],["h",()=>(G(),x.backspace())],["k",()=>x.deleteToLineEnd()],["l",()=>z()],["n",()=>ee()],["p",()=>ae()],["u",()=>x.deleteToLineStart()],["v",be],["w",()=>x.deleteWordBefore()],["o",be]]),ue=Ogt([["b",()=>x.prevWord()],["f",()=>x.nextWord()],["d",()=>x.deleteWordAfter()]]);function me(ce){if(c&&x.offset>0&&x.text[x.offset-1]==="\\")return x.backspace().insert(`
|
|
1015
1015
|
`);if(ce.meta)return x.insert(`
|
|
1016
1016
|
`);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 xe(ce,$e){if($e.tab)return;if($e.backspace||$e.delete||ce==="\b"||ce==="\x7F"||ce==="\b"){let K=x.backspace();x.equals(K)||(I(K.offset),x.text!==K.text&&t(K.text));return}if(!$e.ctrl&&!$e.meta&&ce.length>1){let K=x.insert(ce);x.equals(K)||(I(K.offset),x.text!==K.text&&t(K.text));return}let _e=Te($e)(ce);_e&&(x.equals(_e)||(I(_e.offset),x.text!==_e.text&&t(_e.text)))}function Te(ce){if(ce.backspace||ce.delete)return G(),()=>x.backspace();switch(!0){case ce.escape:return U;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 k;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()=>me(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($e){switch(!0){case($e=="\x1B[H"||$e=="\x1B[1~"):return x.startOfLine();case($e=="\x1B[F"||$e=="\x1B[4~"):return x.endOfLine();case($e==="\b"||$e==="\x7F"||$e==="\b"):return G(),x.backspace();default:return x.insert($e.replace(/\r/g,`
|
|
1017
|
-
`))}}}return{onInput:xe,renderedValue:x.render(f,l,A),offset:S,setOffset:I}}function c3({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:I=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:F,renderedValue:G}=Mgt({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=>pr.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>pr.hex(ge().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:I,externalOffset:x,onOffsetChange:O}),[H,U]=zSe.default.useState({chunks:[],timeoutId:null}),z=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{U(({chunks:me})=>{let ae=me.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));ur((ue,me)=>{if(C&&(ue.length>10||H.timeoutId)){U(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:z(ee)}));return}F(ue,me)},{isActive:r});let de=t?pr.hex(ge().secondaryText)(t):void 0,be=ue=>pr.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(de=t.length>0?be(t[0])+pr.hex(ge().secondaryText)(t.slice(1)):be(" "));let k=e.length==0&&t;return zSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var YSe=te(Ee(),1),d3=te(Ee(),1);kU();vs();bi();rv();hr();var Fgt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function dv(){let e=[...Fgt,...[...Fgt].reverse()],[t,r]=(0,d3.useState)(0);return(0,d3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),YSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},YSe.createElement(v,{color:ge().claude},e[t]))}bi();function _C(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as y3}from"os";import{join as A2}from"path";import{existsSync as b3,mkdirSync as TEt,appendFileSync as IEt,readFileSync as vEt,constants as Rnn,writeFileSync as Onn,unlinkSync as xEt,statSync as knn}from"fs";import{platform as DEt}from"process";Ue();import{accessSync as Mnn}from"fs";Ue();var C1i=te(pIe(),1);var Nnn="1.39.
|
|
1017
|
+
`))}}}return{onInput:xe,renderedValue:x.render(f,l,A),offset:S,setOffset:I}}function c3({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:I=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:F,renderedValue:G}=Mgt({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=>pr.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>pr.hex(ge().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:I,externalOffset:x,onOffsetChange:O}),[H,U]=zSe.default.useState({chunks:[],timeoutId:null}),z=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{U(({chunks:me})=>{let ae=me.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));ur((ue,me)=>{if(C&&(ue.length>10||H.timeoutId)){U(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:z(ee)}));return}F(ue,me)},{isActive:r});let de=t?pr.hex(ge().secondaryText)(t):void 0,be=ue=>pr.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(de=t.length>0?be(t[0])+pr.hex(ge().secondaryText)(t.slice(1)):be(" "));let k=e.length==0&&t;return zSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var YSe=te(Ee(),1),d3=te(Ee(),1);kU();vs();bi();rv();hr();var Fgt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function dv(){let e=[...Fgt,...[...Fgt].reverse()],[t,r]=(0,d3.useState)(0);return(0,d3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),YSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},YSe.createElement(v,{color:ge().claude},e[t]))}bi();function _C(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as y3}from"os";import{join as A2}from"path";import{existsSync as b3,mkdirSync as TEt,appendFileSync as IEt,readFileSync as vEt,constants as Rnn,writeFileSync as Onn,unlinkSync as xEt,statSync as knn}from"fs";import{platform as DEt}from"process";Ue();import{accessSync as Mnn}from"fs";Ue();var C1i=te(pIe(),1);var Nnn="1.39.1",_3={VERSION:Nnn,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"};Me();var pv=A2(LI,".update.lock"),Fnn=300*1e3;function wEt(){try{if(b3(LI)||TEt(LI,{recursive:!0}),b3(pv)){let e=knn(pv);if(Date.now()-e.mtimeMs<Fnn)return!1;try{xEt(pv)}catch(r){return Ie(`Failed to remove stale lock file: ${r}`),!1}}return Onn(pv,`${process.pid}`,"utf8"),!0}catch(e){return Ie(`Failed to acquire lock: ${e}`),!1}}function BEt(){try{b3(pv)&&vEt(pv,"utf8")===`${process.pid}`&&xEt(pv)}catch(e){Ie(`Failed to release lock: ${e}`)}}async function mIe(){try{let e=await Kn("npm -g config get prefix");if(e.code!==0)return Ie("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{Mnn(t,Rnn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(Ie("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return Ie(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function NEt(e){if(!wEt())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:_3.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{b3(e)||TEt(e,{recursive:!0});let t=await Kn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
|
|
1018
1018
|
# npm global path
|
|
1019
1019
|
export PATH="${e}/bin:$PATH"
|
|
1020
1020
|
`;if(DEt==="win32"){let n=await Kn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[A2(y3(),".bashrc"),A2(y3(),".bash_profile"),A2(y3(),".zshrc"),A2(y3(),".config","fish","config.fish")];for(let i of n)if(b3(i))try{if(!vEt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
|