@dahawa/hawa-code 1.41.3 → 1.41.4
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/cli.js
CHANGED
|
@@ -668,7 +668,7 @@ globstar while`,t,f,r,p,A),this.matchOne(t.slice(f),r.slice(p),n))return this.de
|
|
|
668
668
|
`)),uOn(e,o,{encoding:r,flush:!0})}var t3t=new gue.default({fetchMethod:e=>AOn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function u3t(e){let t=Yq(e);return t3t.get(t)||t3t.fetchMethod?.(t)}async function AOn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await tBt(e,t.signal,15),n=0;for(let o of r)SO(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function l3t(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var hOn=new gue.default({fetchMethod:e=>d3t(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Im(e){let t=Yq(e);return l3t(hOn,t,()=>d3t(t))}function d3t(e){let r=Buffer.alloc(4096),n;try{n=r3t(e,"r");let o=n3t(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 he(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&o3t(n)}}var EOn=new gue.default({fetchMethod:e=>f3t(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function SO(e){let t=Yq(e);return l3t(EOn,t,()=>f3t(t))}function f3t(e,t="utf8"){try{if(!i3t(e).isFile())return"LF";let n=Buffer.alloc(4096),o=r3t(e,"r"),i=n3t(o,n,0,4096,0);o3t(o);let s=n.toString(t,0,i),a=0,c=0;for(let u=0;u<s.length;u++)s[u]===`
|
|
669
669
|
`&&(u>0&&s[u-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return he(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function PMe(e){let t=s3t(e)?e:Yq(Me(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function LMe(e){return e?s3t(e)?e:Yq(Me(),e):void 0}function p3t(e){try{let t=LMe(e),r=t?pOn(Me(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return pe("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function hue(e){try{let t=mOn(e),r=ZUt(e,XUt(e));if(!lOn(t))return;let i=dOn(t).filter(s=>ZUt(s,XUt(s))===r&&gOn(t,s)!==e)[0];return i||void 0}catch(t){he(`Error finding similar file for ${e}: ${t}`);return}}function FMe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function dx({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return FMe()?r.map((n,o)=>`${o+t} ${n}`).join(`
|
|
670
670
|
`):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
|
|
671
|
-
`)}function m3t(e){try{let t=fOn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return he(`Error checking directory: ${t}`),!1}}Le();function ax(){let e=Bn();e.hasCompletedProjectOnboarding||Di({...e,hasCompletedProjectOnboarding:!0})}function TOn(){let e=lr();mo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function QMe({workspaceDir:e}){let r=!Bn().hasCompletedProjectOnboarding,o=lr().lastReleaseNotesSeen,i=[];(!o||(0,g3t.gt)(MACRO.VERSION,o))&&(i=kce[MACRO.VERSION]||[]);let s=i.length>0;if(Fi.useEffect(()=>{s&&!r&&TOn()},[s,r]),!r&&!s)return null;let a=_On(SOn(e,di)),c=m3t(e),u=!a&&!c,l=RQ.isEnabled&&!lr().shiftEnterKeyBindingInstalled,d=K();return Fi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Fi.createElement(Fi.Fragment,null,Fi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Fi.createElement(xd,{children:[]},(()=>{let f=[];return c&&f.push(Fi.createElement(xd.Item,{key:"workspace"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),u&&f.push(Fi.createElement(xd.Item,{key:"claudemd"},Fi.createElement(C,{color:d.secondaryText},"Run ",Fi.createElement(C,{color:d.text},"/init")," to create a",di," file with instructions for Hawa code."))),l&&f.push(Fi.createElement(xd.Item,{key:"terminal"},Fi.createElement(C,{color:d.secondaryText},"Run ",Fi.createElement(C,{color:d.text},"/terminal-setup"),Fi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Fi.createElement(xd.Item,{key:"questions"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Fi.createElement(xd.Item,{key:"changes"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Fi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Fi.createElement(D,{flexDirection:"column",gap:0},Fi.createElement(D,{marginBottom:1},Fi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Fi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Fi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===yOn()&&Fi.createElement(C,{color:K().warning},"Note: You have launched ",Fi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var VQ=U(re(),1);var $Q=U(re(),1);var jq=U(re(),1);function UMe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Zi("Select");return jq.default.createElement(D,{...o.option({isFocused:e})},e&&jq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),jq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&jq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var vm=U(re(),1);import{isDeepStrictEqual as bOn}from"node:util";var zq=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:HMe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var COn=(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}}},GMe=e=>e.flatMap(t=>{if("options"in t){let r=GMe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),A3t=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=GMe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new zq(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}},qMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=GMe(t),[a,c]=(0,vm.useReducer)(COn,{visibleOptionCount:e,defaultValue:r,options:t},A3t),[u,l]=(0,vm.useState)(s);s!==u&&!bOn(s,u)&&(c({type:"reset",state:A3t({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,vm.useCallback)(()=>{c({type:"focus-next-option"})},[]),f=(0,vm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),p=(0,vm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,vm.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,vm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,vm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,vm.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:f,selectFocusedOption:p}};var $Me=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var HMe=e=>`HEADER-${e.optionValues.join(",")}`;function qb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=qMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});$Me({isDisabled:e,state:c});let{styles:u}=Zi("Select");return $Q.default.createElement(D,{...u.container()},c.visibleOptions.map(l=>{let d="value"in l?l.value:HMe(l),f=!e&&c.focusedValue!==void 0&&("value"in l?c.focusedValue===l.value:l.optionValues.includes(c.focusedValue)),p=!!c.value&&("value"in l?c.value===l.value:l.optionValues.includes(c.value)),A="header"in l,h="label"in l?l.label:l.header,_=h;if(r&&h.includes(r)){let y=h.indexOf(r);_=$Q.default.createElement($Q.default.Fragment,null,h.slice(0,y),$Q.default.createElement(C,{...u.highlightedText()},r),h.slice(y+r.length))}return $Q.default.createElement(UMe,{key:d,isFocused:f,isSelected:p,smallPointer:A},_)}))}function h3t({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),VQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},VQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},VQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),VQ.default.createElement(D,null,VQ.default.createElement(qb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var Cn=U(re(),1),fr=U(re(),1);var Sp=U(re(),1);Le();Sr();jS();var wOn="1.41.3",zS={VERSION:wOn,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 YMe=46,_3t=["(\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 Eue({isDefaultModel:e=!1}){let t=Math.max(YMe,Me().length+12),r=K(),n=_3t[Math.floor(Math.random()*_3t.length)];return Sp.createElement(D,{flexDirection:"column"},Sp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Sp.createElement(C,null,Sp.createElement(C,null,n)," Welcome to"," ",Sp.createElement(C,{bold:!0},ze),Sp.createElement(C,{color:r.secondaryText}," v",zS.VERSION)),Sp.createElement(Sp.Fragment,null,Sp.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},Sp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Sp.createElement(C,{color:r.secondaryText},"cwd: ",Me()),Sp.createElement(C,{color:r.secondaryText},"model: ",go.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Sp.createElement(C,{color:r.secondaryText},"small fast model: ",go.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var B0=U(re(),1);Ne();var eK=U(re(),1);import{randomUUID as R0}from"crypto";var S3t=()=>[],y3t=()=>{};function T3t(e){S3t=e}function _ue(){return S3t}function b3t(e){y3t=e}function C3t(){return y3t}Ne();Xt();Sr();Ne();Le();import{existsSync as Yb,readdirSync as X2n,statSync as ekn}from"fs";import{join as mx,relative as tkn}from"path";import{homedir as J5t}from"os";import{platform as rkn}from"process";import{readFile as gx}from"fs/promises";Sr();WS();br();import{join as POn,sep as LOn}from"path";function yp(){if(!xm())return!1;try{let e=Tt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Dm(){return(POn(Me(),".hcode","team-memory")+LOn).normalize("NFC")}function zQ(e){let t=e.normalize("NFC"),r=Dm();return t.startsWith(r)}var Z5t=U(o$(),1);qo();var j5t=U(o$(),1);Sr();Le();Ne();Ap();import{readFile as V5t}from"fs/promises";import{existsSync as l2e,readdirSync as W2n,statSync as K2n}from"fs";import{join as d2e,relative as z5t}from"path";import{homedir as J2n}from"os";function Y5t(e){try{let t=(0,j5t.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 he(t),{paths:[],content:e.trim()}}}function Z2n(e,t){return t.length===0?!0:t.some(r=>{try{return Rd(e,r,{matchBase:!0,dot:!0})}catch(n){return he(n),!1}})}function f2e(e){let t=[];try{if(!l2e(e))return t;let r=W2n(e);for(let n of r){let o=d2e(e,n),i=K2n(o);i.isDirectory()?t.push(...f2e(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){he(r)}return t}async function W5t(){let e=[];try{let t=d2e(J2n(),In,"rules");if(l2e(t)){let r=f2e(t);for(let n of r)try{let o=await V5t(n,"utf-8"),{paths:i,content:s}=Y5t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){he(o)}}}catch(t){he(t)}try{let t=d2e(Me(),In,"rules");if(l2e(t)){let r=f2e(t);for(let n of r)try{let o=await V5t(n,"utf-8"),{paths:i,content:s}=Y5t(o);i.length>0&&e.push({filePath:z5t(Me(),n),content:s,paths:i,isProjectRule:!0})}catch(o){he(o)}}}catch(t){he(t)}return e}function K5t(e,t){e=Aae(e);let r=Aae(Me()),n=e.startsWith(r)?z5t(r,e):e;return t.filter(o=>Z2n(n,o.paths))}var nkn=`# hawaCodeMd
|
|
671
|
+
`)}function m3t(e){try{let t=fOn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return he(`Error checking directory: ${t}`),!1}}Le();function ax(){let e=Bn();e.hasCompletedProjectOnboarding||Di({...e,hasCompletedProjectOnboarding:!0})}function TOn(){let e=lr();mo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function QMe({workspaceDir:e}){let r=!Bn().hasCompletedProjectOnboarding,o=lr().lastReleaseNotesSeen,i=[];(!o||(0,g3t.gt)(MACRO.VERSION,o))&&(i=kce[MACRO.VERSION]||[]);let s=i.length>0;if(Fi.useEffect(()=>{s&&!r&&TOn()},[s,r]),!r&&!s)return null;let a=_On(SOn(e,di)),c=m3t(e),u=!a&&!c,l=RQ.isEnabled&&!lr().shiftEnterKeyBindingInstalled,d=K();return Fi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Fi.createElement(Fi.Fragment,null,Fi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Fi.createElement(xd,{children:[]},(()=>{let f=[];return c&&f.push(Fi.createElement(xd.Item,{key:"workspace"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),u&&f.push(Fi.createElement(xd.Item,{key:"claudemd"},Fi.createElement(C,{color:d.secondaryText},"Run ",Fi.createElement(C,{color:d.text},"/init")," to create a",di," file with instructions for Hawa code."))),l&&f.push(Fi.createElement(xd.Item,{key:"terminal"},Fi.createElement(C,{color:d.secondaryText},"Run ",Fi.createElement(C,{color:d.text},"/terminal-setup"),Fi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Fi.createElement(xd.Item,{key:"questions"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Fi.createElement(xd.Item,{key:"changes"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Fi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Fi.createElement(D,{flexDirection:"column",gap:0},Fi.createElement(D,{marginBottom:1},Fi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Fi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Fi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===yOn()&&Fi.createElement(C,{color:K().warning},"Note: You have launched ",Fi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var VQ=U(re(),1);var $Q=U(re(),1);var jq=U(re(),1);function UMe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Zi("Select");return jq.default.createElement(D,{...o.option({isFocused:e})},e&&jq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),jq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&jq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var vm=U(re(),1);import{isDeepStrictEqual as bOn}from"node:util";var zq=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:HMe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var COn=(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}}},GMe=e=>e.flatMap(t=>{if("options"in t){let r=GMe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),A3t=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=GMe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new zq(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}},qMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=GMe(t),[a,c]=(0,vm.useReducer)(COn,{visibleOptionCount:e,defaultValue:r,options:t},A3t),[u,l]=(0,vm.useState)(s);s!==u&&!bOn(s,u)&&(c({type:"reset",state:A3t({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,vm.useCallback)(()=>{c({type:"focus-next-option"})},[]),f=(0,vm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),p=(0,vm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,vm.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,vm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,vm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,vm.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:f,selectFocusedOption:p}};var $Me=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var HMe=e=>`HEADER-${e.optionValues.join(",")}`;function qb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=qMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});$Me({isDisabled:e,state:c});let{styles:u}=Zi("Select");return $Q.default.createElement(D,{...u.container()},c.visibleOptions.map(l=>{let d="value"in l?l.value:HMe(l),f=!e&&c.focusedValue!==void 0&&("value"in l?c.focusedValue===l.value:l.optionValues.includes(c.focusedValue)),p=!!c.value&&("value"in l?c.value===l.value:l.optionValues.includes(c.value)),A="header"in l,h="label"in l?l.label:l.header,_=h;if(r&&h.includes(r)){let y=h.indexOf(r);_=$Q.default.createElement($Q.default.Fragment,null,h.slice(0,y),$Q.default.createElement(C,{...u.highlightedText()},r),h.slice(y+r.length))}return $Q.default.createElement(UMe,{key:d,isFocused:f,isSelected:p,smallPointer:A},_)}))}function h3t({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),VQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},VQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},VQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),VQ.default.createElement(D,null,VQ.default.createElement(qb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var Cn=U(re(),1),fr=U(re(),1);var Sp=U(re(),1);Le();Sr();jS();var wOn="1.41.4",zS={VERSION:wOn,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 YMe=46,_3t=["(\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 Eue({isDefaultModel:e=!1}){let t=Math.max(YMe,Me().length+12),r=K(),n=_3t[Math.floor(Math.random()*_3t.length)];return Sp.createElement(D,{flexDirection:"column"},Sp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Sp.createElement(C,null,Sp.createElement(C,null,n)," Welcome to"," ",Sp.createElement(C,{bold:!0},ze),Sp.createElement(C,{color:r.secondaryText}," v",zS.VERSION)),Sp.createElement(Sp.Fragment,null,Sp.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},Sp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Sp.createElement(C,{color:r.secondaryText},"cwd: ",Me()),Sp.createElement(C,{color:r.secondaryText},"model: ",go.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Sp.createElement(C,{color:r.secondaryText},"small fast model: ",go.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var B0=U(re(),1);Ne();var eK=U(re(),1);import{randomUUID as R0}from"crypto";var S3t=()=>[],y3t=()=>{};function T3t(e){S3t=e}function _ue(){return S3t}function b3t(e){y3t=e}function C3t(){return y3t}Ne();Xt();Sr();Ne();Le();import{existsSync as Yb,readdirSync as X2n,statSync as ekn}from"fs";import{join as mx,relative as tkn}from"path";import{homedir as J5t}from"os";import{platform as rkn}from"process";import{readFile as gx}from"fs/promises";Sr();WS();br();import{join as POn,sep as LOn}from"path";function yp(){if(!xm())return!1;try{let e=Tt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Dm(){return(POn(Me(),".hcode","team-memory")+LOn).normalize("NFC")}function zQ(e){let t=e.normalize("NFC"),r=Dm();return t.startsWith(r)}var Z5t=U(o$(),1);qo();var j5t=U(o$(),1);Sr();Le();Ne();Ap();import{readFile as V5t}from"fs/promises";import{existsSync as l2e,readdirSync as W2n,statSync as K2n}from"fs";import{join as d2e,relative as z5t}from"path";import{homedir as J2n}from"os";function Y5t(e){try{let t=(0,j5t.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 he(t),{paths:[],content:e.trim()}}}function Z2n(e,t){return t.length===0?!0:t.some(r=>{try{return Rd(e,r,{matchBase:!0,dot:!0})}catch(n){return he(n),!1}})}function f2e(e){let t=[];try{if(!l2e(e))return t;let r=W2n(e);for(let n of r){let o=d2e(e,n),i=K2n(o);i.isDirectory()?t.push(...f2e(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){he(r)}return t}async function W5t(){let e=[];try{let t=d2e(J2n(),In,"rules");if(l2e(t)){let r=f2e(t);for(let n of r)try{let o=await V5t(n,"utf-8"),{paths:i,content:s}=Y5t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){he(o)}}}catch(t){he(t)}try{let t=d2e(Me(),In,"rules");if(l2e(t)){let r=f2e(t);for(let n of r)try{let o=await V5t(n,"utf-8"),{paths:i,content:s}=Y5t(o);i.length>0&&e.push({filePath:z5t(Me(),n),content:s,paths:i,isProjectRule:!0})}catch(o){he(o)}}}catch(t){he(t)}return e}function K5t(e,t){e=Aae(e);let r=Aae(Me()),n=e.startsWith(r)?z5t(r,e):e;return t.filter(o=>Z2n(n,o.paths))}var nkn=`# hawaCodeMd
|
|
672
672
|
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 okn(e="default"){let r=$e.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(o=>{let i=o.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${o.filePath} (${i}):
|
|
673
673
|
|
|
674
674
|
${o.content}`}).join(`
|
|
@@ -766,7 +766,7 @@ data: ${JSON.stringify(Q)}
|
|
|
766
766
|
Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var lpe=null,jUe=!1;function UWn(){lpe=null,jUe=!1}cr.on("proxy:changed",UWn);function HWn(){if(jUe)return lpe;if(jUe=!0,Tt().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(lpe=new a7t.ProxyAgent({uri:e}),Ft(`[proxy] using proxy: ${e}`)),lpe}function GWn(){let e=HWn();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function fpe(e){let t=e||process.env.API_TYPE,r=GWn();switch(t){case"openai":return PWn(r);case"openai-responses":return LWn(r);case"gemini":return FWn(r);default:return QWn(r)}}jS();var u7t=U(re(),1);function c7t(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=qWn(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function qWn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||$Wn(t)?0:VWn(t)?2:1}function $Wn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function VWn(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 V_(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 KUe(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 pC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function ppe(e,t,r){let n=[];return typeof e=="number"&&n.push(KUe(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${pC(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}Ne();Hs();var Hu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function mpe(e,t){Hu.totalCost+=e,Hu.totalAPIDuration+=t}function gpe(e,t){Hu.inputTokens+=e,Hu.outputTokens+=t,cr.emit("token:change",{inputTokens:Hu.inputTokens,outputTokens:Hu.outputTokens})}function Ape(e,t){Hu.cacheCreationTokens+=e,Hu.cacheReadTokens+=t}function AB(){return{inputTokens:Hu.inputTokens,outputTokens:Hu.outputTokens,cacheCreationTokens:Hu.cacheCreationTokens,cacheReadTokens:Hu.cacheReadTokens}}function m3(){return Hu.totalCost}function hpe(){return Date.now()-Hu.startTime}function l7t(){return Hu.totalAPIDuration}function d7t(e){Hu.currentContextTokens=e}function f7t(){return Hu.currentContextTokens}function YWn(){return ht.grey(`Total duration (API): ${V_(Hu.totalAPIDuration)}
|
|
767
767
|
Total duration (wall): ${V_(hpe())}`)}function p7t(){(0,u7t.useEffect)(()=>{let e=()=>{process.stdout.write(`
|
|
768
768
|
`+YWn()+`
|
|
769
|
-
`);let t=Bn();Di({...t,lastCost:Hu.totalCost,lastAPIDuration:Hu.totalAPIDuration,lastDuration:hpe(),lastSessionId:__})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Ne();Le();Le();var JUe="1.41.
|
|
769
|
+
`);let t=Bn();Di({...t,lastCost:Hu.totalCost,lastAPIDuration:Hu.totalAPIDuration,lastDuration:hpe(),lastSessionId:__})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Ne();Le();Le();var JUe="1.41.4";globalThis.MACRO={VERSION:JUe,PACKAGE_URL:`@dahawa/${fi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Epe=process.env.HAWA_CODE_USER_AGENT||`${fi}/${JUe} (${process.env.USER_TYPE})`;Ne();Ne();Xt();function Mf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Ef(t);if(n?.type==="user"){t[t.length-1]=KWn(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Ef(t);n?.type==="user"&&(t[t.length-1]=jWn(n,r));return}}}),t}function jWn(e,t){return{...e,message:{...e.message,content:WWn(e.message.content,zWn(t.content.content))}}}function zWn(e){return`
|
|
770
770
|
<system-reminder>
|
|
771
771
|
The user sent the following message:
|
|
772
772
|
${e}
|
package/hands.js
CHANGED
|
@@ -751,7 +751,7 @@ data: ${JSON.stringify(G)}
|
|
|
751
751
|
`);a=F.pop()||"";for(let G of F){let j=G.trim();if(!(!j||j==="data: [DONE]"))if(j.startsWith("data: ")){let U=j.slice(6);try{let $=JSON.parse(U);x($)}catch($){this.logger&&this.logger.error({err:$,line:j},"Failed to parse Gemini SSE chunk")}}else try{let U=JSON.parse(j);x(U)}catch{}}};(async()=>{try{for(;;){let{value:F,done:G}=await s.read();if(G)break;a+=n.decode(F,{stream:!0}),O()}I()}catch(F){o.error(F)}})()}})}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_${jN()}`,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:`
|
|
752
752
|
|
|
753
753
|
[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 zQr(`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"}}},L0e=new Q0e;var bct=te(Ect(),1);pr();hs();function CA(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function _ct(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function ojr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function sjr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function ajr(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 TU(e,t,r){HG(t,e),qG(t,ajr(e,r),r)}function MR(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 vU(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function f1e(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 yct=["/v1/messages"];function p1e(e){let t;try{typeof e=="string"?t=new LT(e):e instanceof LT?t=e:t=new LT(e.url)}catch{return""}let r=t.pathname;for(let n of yct){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function tJ(e,t){let r=typeof e=="string"?e:e instanceof LT?e.toString():e.url,n;try{n=new LT(r).pathname}catch{return!1}return yct.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function ujr(e){return async(t,r)=>{if(!tJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await rW.transformRequestOut(n),o=p1e(t)+"/chat/completions",s=CA(r.headers),a=s.authorization??s.Authorization??"";ojr(i,_ct(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:_}),f1e("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:CA(u.headers)},openai:{request:{body:i},response:{}}};if(!l){let _=await u.text(),C=new Response(_,{status:u.status,statusText:u.statusText,headers:vU(u.headers)}),S=await rW.transformResponseIn(C,n),I=await S.text();try{TU({...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=MR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:vU(u.headers)}),g=await rW.transformResponseIn(m,n),E=MR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{TU({...f,openai:{...f.openai,response:{body:await Vet(_)}},response:{...f.response,body:await hP(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 ljr(e){return async(t,r)=>{if(!tJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await nW.transformRequestOut(n),o=CA(r.headers);sjr(i,_ct(o));let s=JSON.stringify(i),u=p1e(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}),f1e("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:CA(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:vU(c.headers)}),x=await nW.transformResponseIn(I,n),O=await x.text();try{TU({...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=MR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:vU(c.headers)}),_=await nW.transformResponseIn(E,n),C=MR(_.body);return Promise.all([g.done,C.done]).then(async([S,I])=>{try{TU({...m,openai:{...m.openai,response:{body:await jet(S)}},response:{...m.response,body:await hP(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 cjr(e){return async(t,r)=>{if(!tJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=CA(r.headers),o=await L0e.transformRequestOut(n),s=JSON.stringify(o),a=p1e(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}),f1e("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:CA(r.headers),body:n},response:{status:l.status,statusText:l.statusText,headers:CA(l.headers)},openai:{request:{body:o},response:{}}},m=MR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:vU(l.headers)}),E=await L0e.transformResponseIn(g),_=MR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let I=c?Wet(C):JSON.parse(C),x=c?await hP(S):JSON.parse(S);TU({...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 djr(e){return async(t,r)=>{if(!tJ(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=CA(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 LT?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 LT?t.toString():t.url,method:r.method,headers:CA(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:CA(a.headers)}};return(async()=>{if(l){let m=await a.text();c.response.body=await hP(m)}else c.response.body=await a.json();let A=CA(r.headers)["x-agent-id"];HG(A,c),qG(A,{request:c.request.body.messages,response:c.response.body.content})})().catch(f=>le(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
|
|
754
|
-
Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var eJ=null,d1e=!1;function fjr(){eJ=null,d1e=!1}Cr.on("proxy:changed",fjr);function pjr(){if(d1e)return eJ;if(d1e=!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&&(eJ=new bct.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),eJ}function mjr(){let e=pjr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function rJ(e){let t=e||process.env.API_TYPE,r=mjr();switch(t){case"openai":return ujr(r);case"openai-responses":return ljr(r);case"gemini":return cjr(r);default:return djr(r)}}Yg();var Ejr=te(he(),1);function Cct(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Ajr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Ajr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||gjr(t)?0:hjr(t)?2:1}function gjr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function hjr(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 k0(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 pC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();hs();var il={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function nJ(e,t){il.totalCost+=e,il.totalAPIDuration+=t}function iJ(e,t){il.inputTokens+=e,il.outputTokens+=t,Cr.emit("token:change",{inputTokens:il.inputTokens,outputTokens:il.outputTokens})}function oJ(e,t){il.cacheCreationTokens+=e,il.cacheReadTokens+=t}function m1e(){return{inputTokens:il.inputTokens,outputTokens:il.outputTokens,cacheCreationTokens:il.cacheCreationTokens,cacheReadTokens:il.cacheReadTokens}}function Sct(){return il.totalCost}function Ict(){return Date.now()-il.startTime}function Tct(){return il.totalAPIDuration}function vct(e){il.currentContextTokens=e}function xct(){return il.currentContextTokens}Ue();Me();Me();var A1e="1.41.
|
|
754
|
+
Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var eJ=null,d1e=!1;function fjr(){eJ=null,d1e=!1}Cr.on("proxy:changed",fjr);function pjr(){if(d1e)return eJ;if(d1e=!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&&(eJ=new bct.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),eJ}function mjr(){let e=pjr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function rJ(e){let t=e||process.env.API_TYPE,r=mjr();switch(t){case"openai":return ujr(r);case"openai-responses":return ljr(r);case"gemini":return cjr(r);default:return djr(r)}}Yg();var Ejr=te(he(),1);function Cct(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Ajr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Ajr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||gjr(t)?0:hjr(t)?2:1}function gjr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function hjr(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 k0(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 pC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();hs();var il={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function nJ(e,t){il.totalCost+=e,il.totalAPIDuration+=t}function iJ(e,t){il.inputTokens+=e,il.outputTokens+=t,Cr.emit("token:change",{inputTokens:il.inputTokens,outputTokens:il.outputTokens})}function oJ(e,t){il.cacheCreationTokens+=e,il.cacheReadTokens+=t}function m1e(){return{inputTokens:il.inputTokens,outputTokens:il.outputTokens,cacheCreationTokens:il.cacheCreationTokens,cacheReadTokens:il.cacheReadTokens}}function Sct(){return il.totalCost}function Ict(){return Date.now()-il.startTime}function Tct(){return il.totalAPIDuration}function vct(e){il.currentContextTokens=e}function xct(){return il.currentContextTokens}Ue();Me();Me();var A1e="1.41.4";globalThis.MACRO={VERSION:A1e,PACKAGE_URL:`@dahawa/${$i}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var sJ=process.env.HAWA_CODE_USER_AGENT||`${$i}/${A1e} (${process.env.USER_TYPE})`;import{randomUUID as U_}from"crypto";var _jr=()=>[],yjr=()=>{};function aJ(){return _jr}function Dct(){return yjr}Ue();Kt();xr();Ue();Me();import{existsSync as L0,readdirSync as qKr,statSync as GKr}from"fs";import{join as gC,relative as $Kr}from"path";import{homedir as Xft}from"os";import{platform as zKr}from"process";import{readFile as hC}from"fs/promises";xr();M0();pr();import{join as Tjr,sep as vjr}from"path";function Jp(){if(!Kp())return!1;try{let e=Ht();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Bf(){return(Tjr(Fe(),".hcode","team-memory")+vjr).normalize("NFC")}function h1e(e){let t=e.normalize("NFC"),r=Bf();return t.startsWith(r)}var ept=te(MU(),1);Si();var Wft=te(MU(),1);xr();Me();Ue();Ac();import{readFile as jft}from"fs/promises";import{existsSync as k1e,readdirSync as LKr,statSync as PKr}from"fs";import{join as M1e,relative as Kft}from"path";import{homedir as UKr}from"os";function Vft(e){try{let t=(0,Wft.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 HKr(e,t){return t.length===0?!0:t.some(r=>{try{return el(e,r,{matchBase:!0,dot:!0})}catch(n){return Ie(n),!1}})}function F1e(e){let t=[];try{if(!k1e(e))return t;let r=LKr(e);for(let n of r){let i=M1e(e,n),o=PKr(i);o.isDirectory()?t.push(...F1e(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){Ie(r)}return t}async function Jft(){let e=[];try{let t=M1e(UKr(),Gr,"rules");if(k1e(t)){let r=F1e(t);for(let n of r)try{let i=await jft(n,"utf-8"),{paths:o,content:s}=Vft(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=M1e(Fe(),Gr,"rules");if(k1e(t)){let r=F1e(t);for(let n of r)try{let i=await jft(n,"utf-8"),{paths:o,content:s}=Vft(i);o.length>0&&e.push({filePath:Kft(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){Ie(i)}}}catch(t){Ie(t)}return e}function Zft(e,t){e=LY(e);let r=LY(Fe()),n=e.startsWith(r)?Kft(r,e):e;return t.filter(i=>HKr(n,i.paths))}var YKr=`# 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 jKr(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(`
|
|
@@ -1116,7 +1116,7 @@ try {
|
|
|
1116
1116
|
`],{encoding:"utf8",maxBuffer:Jgt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Otn(){try{let e=A3("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var ktn="[Image pasted]";function tht(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function nht({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=m3.fromText(e,m,S),[O,F]=(0,rht.useState)(null);function G(){O&&(clearTimeout(O),F(null),o?.(!1))}let j=av(ce=>{G(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),U=av(ce=>{G(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function $(){return m3.fromText("",m,0)}let q=av(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function de(){return G(),x.text===""?(q(),x):x.del()}function _e(){if(l)return x;let ce=eht();return ce===null?(Xgt()&&(o?.(!0,Zgt),G(),F(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(ktn))}let k=tht([["a",()=>x.startOfLine()],["b",()=>x.left()],["c",j],["d",de],["e",()=>x.endOfLine()],["f",()=>x.right()],["h",()=>(G(),x.backspace())],["k",()=>x.deleteToLineEnd()],["l",()=>$()],["n",()=>ee()],["p",()=>ae()],["u",()=>x.deleteToLineStart()],["v",_e],["w",()=>x.deleteWordBefore()],["o",_e]]),ue=tht([["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(`
|
|
1117
1117
|
`);if(ce.meta)return x.insert(`
|
|
1118
1118
|
`);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 ye=Te($e)(ce);ye&&(x.equals(ye)||(I(ye.offset),x.text!==ye.text&&t(ye.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,`
|
|
1119
|
-
`))}}}return{onInput:xe,renderedValue:x.render(f,l,A),offset:S,setOffset:I}}function g3({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}=nht({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=>yr.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>yr.hex(ge().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:I,externalOffset:x,onOffsetChange:O}),[j,U]=nIe.default.useState({chunks:[],timeoutId:null}),$=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{U(({chunks:me})=>{let ae=me.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));ir((ue,me)=>{if(C&&(ue.length>10||j.timeoutId)){U(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:$(ee)}));return}F(ue,me)},{isActive:r});let de=t?yr.hex(ge().secondaryText)(t):void 0,_e=ue=>yr.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(de=t.length>0?_e(t[0])+yr.hex(ge().secondaryText)(t.slice(1)):_e(" "));let k=e.length==0&&t;return nIe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var iIe=te(he(),1),h3=te(he(),1);LU();hs();Si();ov();pr();var iht=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function mv(){let e=[...iht,...[...iht].reverse()],[t,r]=(0,h3.useState)(0);return(0,h3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),iIe.createElement(B,{flexWrap:"nowrap",height:1,width:2},iIe.createElement(v,{color:ge().claude},e[t]))}Si();function SC(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as v3}from"os";import{join as y2}from"path";import{existsSync as x3,mkdirSync as jEt,appendFileSync as YEt,readFileSync as VEt,constants as Nin,writeFileSync as Rin,unlinkSync as WEt,statSync as Oin}from"fs";import{platform as KEt}from"process";Ue();import{accessSync as kin}from"fs";Ue();var wSi=te(TIe(),1);var Bin="1.41.
|
|
1119
|
+
`))}}}return{onInput:xe,renderedValue:x.render(f,l,A),offset:S,setOffset:I}}function g3({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}=nht({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=>yr.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>yr.hex(ge().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:I,externalOffset:x,onOffsetChange:O}),[j,U]=nIe.default.useState({chunks:[],timeoutId:null}),$=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{U(({chunks:me})=>{let ae=me.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));ir((ue,me)=>{if(C&&(ue.length>10||j.timeoutId)){U(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:$(ee)}));return}F(ue,me)},{isActive:r});let de=t?yr.hex(ge().secondaryText)(t):void 0,_e=ue=>yr.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(de=t.length>0?_e(t[0])+yr.hex(ge().secondaryText)(t.slice(1)):_e(" "));let k=e.length==0&&t;return nIe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var iIe=te(he(),1),h3=te(he(),1);LU();hs();Si();ov();pr();var iht=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function mv(){let e=[...iht,...[...iht].reverse()],[t,r]=(0,h3.useState)(0);return(0,h3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),iIe.createElement(B,{flexWrap:"nowrap",height:1,width:2},iIe.createElement(v,{color:ge().claude},e[t]))}Si();function SC(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as v3}from"os";import{join as y2}from"path";import{existsSync as x3,mkdirSync as jEt,appendFileSync as YEt,readFileSync as VEt,constants as Nin,writeFileSync as Rin,unlinkSync as WEt,statSync as Oin}from"fs";import{platform as KEt}from"process";Ue();import{accessSync as kin}from"fs";Ue();var wSi=te(TIe(),1);var Bin="1.41.4",T3={VERSION:Bin,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 gv=y2(HI,".update.lock"),Min=300*1e3;function JEt(){try{if(x3(HI)||jEt(HI,{recursive:!0}),x3(gv)){let e=Oin(gv);if(Date.now()-e.mtimeMs<Min)return!1;try{WEt(gv)}catch(r){return Ie(`Failed to remove stale lock file: ${r}`),!1}}return Rin(gv,`${process.pid}`,"utf8"),!0}catch(e){return Ie(`Failed to acquire lock: ${e}`),!1}}function ZEt(){try{x3(gv)&&VEt(gv,"utf8")===`${process.pid}`&&WEt(gv)}catch(e){Ie(`Failed to release lock: ${e}`)}}async function vIe(){try{let e=await Xn("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{kin(t,Nin.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 XEt(e){if(!JEt())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:T3.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{x3(e)||jEt(e,{recursive:!0});let t=await Xn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
|
|
1120
1120
|
# npm global path
|
|
1121
1121
|
export PATH="${e}/bin:$PATH"
|
|
1122
1122
|
`;if(KEt==="win32"){let n=await Xn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[y2(v3(),".bashrc"),y2(v3(),".bash_profile"),y2(v3(),".zshrc"),y2(v3(),".config","fish","config.fish")];for(let i of n)if(x3(i))try{if(!VEt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
|