@dahawa/hawa-code 1.41.0 → 1.41.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 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
  `)),aOn(e,o,{encoding:r,flush:!0})}var e3t=new mue.default({fetchMethod:e=>mOn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function c3t(e){let t=Vq(e);return e3t.get(t)||e3t.fetchMethod?.(t)}async function mOn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await eBt(e,t.signal,15),n=0;for(let o of r)_O(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function u3t(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var gOn=new mue.default({fetchMethod:e=>l3t(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Im(e){let t=Vq(e);return u3t(gOn,t,()=>l3t(t))}function l3t(e){let r=Buffer.alloc(4096),n;try{n=t3t(e,"r");let o=r3t(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&&n3t(n)}}var AOn=new mue.default({fetchMethod:e=>d3t(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function _O(e){let t=Vq(e);return u3t(AOn,t,()=>d3t(t))}function d3t(e,t="utf8"){try{if(!o3t(e).isFile())return"LF";let n=Buffer.alloc(4096),o=t3t(e,"r"),i=r3t(o,n,0,4096,0);n3t(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 kMe(e){let t=i3t(e)?e:Vq(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 PMe(e){return e?i3t(e)?e:Vq(Me(),e):void 0}function f3t(e){try{let t=PMe(e),r=t?dOn(Me(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return pe("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Aue(e){try{let t=fOn(e),r=JUt(e,ZUt(e));if(!cOn(t))return;let i=uOn(t).filter(s=>JUt(s,ZUt(s))===r&&pOn(t,s)!==e)[0];return i||void 0}catch(t){he(`Error finding similar file for ${e}: ${t}`);return}}function LMe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function lx({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return LMe()?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 p3t(e){try{let t=lOn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return he(`Error checking directory: ${t}`),!1}}Le();function sx(){let e=Bn();e.hasCompletedProjectOnboarding||Di({...e,hasCompletedProjectOnboarding:!0})}function SOn(){let e=lr();mo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function FMe({workspaceDir:e}){let r=!Bn().hasCompletedProjectOnboarding,o=lr().lastReleaseNotesSeen,i=[];(!o||(0,m3t.gt)(MACRO.VERSION,o))&&(i=Mce[MACRO.VERSION]||[]);let s=i.length>0;if(Fi.useEffect(()=>{s&&!r&&SOn()},[s,r]),!r&&!s)return null;let a=hOn(EOn(e,di)),c=p3t(e),u=!a&&!c,l=DQ.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(vd,{children:[]},(()=>{let f=[];return c&&f.push(Fi.createElement(vd.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(vd.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(vd.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(vd.Item,{key:"questions"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Fi.createElement(vd.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===_On()&&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 $Q=U(re(),1);var qQ=U(re(),1);var Yq=U(re(),1);function QMe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Zi("Select");return Yq.default.createElement(D,{...o.option({isFocused:e})},e&&Yq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),Yq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&Yq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var vm=U(re(),1);import{isDeepStrictEqual as yOn}from"node:util";var jq=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:UMe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var TOn=(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}}},HMe=e=>e.flatMap(t=>{if("options"in t){let r=HMe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),g3t=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=HMe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new jq(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}},GMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=HMe(t),[a,c]=(0,vm.useReducer)(TOn,{visibleOptionCount:e,defaultValue:r,options:t},g3t),[u,l]=(0,vm.useState)(s);s!==u&&!yOn(s,u)&&(c({type:"reset",state:g3t({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 qMe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var UMe=e=>`HEADER-${e.optionValues.join(",")}`;function Gb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=GMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});qMe({isDisabled:e,state:c});let{styles:u}=Zi("Select");return qQ.default.createElement(D,{...u.container()},c.visibleOptions.map(l=>{let d="value"in l?l.value:UMe(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);_=qQ.default.createElement(qQ.default.Fragment,null,h.slice(0,y),qQ.default.createElement(C,{...u.highlightedText()},r),h.slice(y+r.length))}return qQ.default.createElement(QMe,{key:d,isFocused:f,isSelected:p,smallPointer:A},_)}))}function A3t({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),$Q.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},$Q.default.createElement(D,{marginBottom:1,flexDirection:"column"},$Q.default.createElement(C,{bold:!0},"You've spent $5 this session.")),$Q.default.createElement(D,null,$Q.default.createElement(Gb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var Cn=U(re(),1),fr=U(re(),1);var _p=U(re(),1);Le();Sr();Le();Ne();import bOn from"os";import COn from"path";import zq from"fs";var IOn={sources:{},routing:{}};function _3t(){let e=bOn.homedir();return COn.join(e,In,"config.json")}function h3t(){try{let e=_3t();if(!zq.existsSync(e))return IOn;let t=zq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:vOn(r)}catch(e){throw he(e),e}}function vOn(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 E3t(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 $Me=class{config;constructor(){try{this.config=h3t()}catch(t){console.log(t)}}reload(){this.config=h3t()}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=E3t(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=E3t(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=_3t(),r={};if(zq.existsSync(t)){let o=zq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};zq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){he(t)}}},qo=new $Me;var xOn="1.41.0",YS={VERSION:xOn,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 VMe=46,S3t=["(\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 hue({isDefaultModel:e=!1}){let t=Math.max(VMe,Me().length+12),r=K(),n=S3t[Math.floor(Math.random()*S3t.length)];return _p.createElement(D,{flexDirection:"column"},_p.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},_p.createElement(C,null,_p.createElement(C,null,n)," Welcome to"," ",_p.createElement(C,{bold:!0},ze),_p.createElement(C,{color:r.secondaryText}," v",YS.VERSION)),_p.createElement(_p.Fragment,null,_p.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},_p.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),_p.createElement(C,{color:r.secondaryText},"cwd: ",Me()),_p.createElement(C,{color:r.secondaryText},"model: ",qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),_p.createElement(C,{color:r.secondaryText},"small fast model: ",qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var B0=U(re(),1);Ne();var XW=U(re(),1);import{randomUUID as R0}from"crypto";var y3t=()=>[],T3t=()=>{};function b3t(e){y3t=e}function Eue(){return y3t}function C3t(e){T3t=e}function I3t(){return T3t}Ne();Xt();Sr();Ne();Le();import{existsSync as Vb,readdirSync as K2n,statSync as J2n}from"fs";import{join as px,relative as Z2n}from"path";import{homedir as Z9t}from"os";import{platform as X2n}from"process";import{readFile as mx}from"fs/promises";Sr();jS();br();import{join as BOn,sep as MOn}from"path";function Sp(){if(!xm())return!1;try{let e=Tt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Dm(){return(BOn(Me(),".hcode","team-memory")+MOn).normalize("NFC")}function jQ(e){let t=e.normalize("NFC"),r=Dm();return t.startsWith(r)}var X9t=U(n$(),1);Go();var z9t=U(n$(),1);Sr();Le();Ne();gp();import{readFile as Y9t}from"fs/promises";import{existsSync as u2e,readdirSync as Y2n,statSync as j2n}from"fs";import{join as l2e,relative as W9t}from"path";import{homedir as z2n}from"os";function j9t(e){try{let t=(0,z9t.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 W2n(e,t){return t.length===0?!0:t.some(r=>{try{return Dd(e,r,{matchBase:!0,dot:!0})}catch(n){return he(n),!1}})}function d2e(e){let t=[];try{if(!u2e(e))return t;let r=Y2n(e);for(let n of r){let o=l2e(e,n),i=j2n(o);i.isDirectory()?t.push(...d2e(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){he(r)}return t}async function K9t(){let e=[];try{let t=l2e(z2n(),In,"rules");if(u2e(t)){let r=d2e(t);for(let n of r)try{let o=await Y9t(n,"utf-8"),{paths:i,content:s}=j9t(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=l2e(Me(),In,"rules");if(u2e(t)){let r=d2e(t);for(let n of r)try{let o=await Y9t(n,"utf-8"),{paths:i,content:s}=j9t(o);i.length>0&&e.push({filePath:W9t(Me(),n),content:s,paths:i,isProjectRule:!0})}catch(o){he(o)}}}catch(t){he(t)}return e}function J9t(e,t){e=gae(e);let r=gae(Me()),n=e.startsWith(r)?W9t(r,e):e;return t.filter(o=>W2n(n,o.paths))}var ekn=`# hawaCodeMd
671
+ `)}function p3t(e){try{let t=lOn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return he(`Error checking directory: ${t}`),!1}}Le();function sx(){let e=Bn();e.hasCompletedProjectOnboarding||Di({...e,hasCompletedProjectOnboarding:!0})}function SOn(){let e=lr();mo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function FMe({workspaceDir:e}){let r=!Bn().hasCompletedProjectOnboarding,o=lr().lastReleaseNotesSeen,i=[];(!o||(0,m3t.gt)(MACRO.VERSION,o))&&(i=Mce[MACRO.VERSION]||[]);let s=i.length>0;if(Fi.useEffect(()=>{s&&!r&&SOn()},[s,r]),!r&&!s)return null;let a=hOn(EOn(e,di)),c=p3t(e),u=!a&&!c,l=DQ.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(vd,{children:[]},(()=>{let f=[];return c&&f.push(Fi.createElement(vd.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(vd.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(vd.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(vd.Item,{key:"questions"},Fi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Fi.createElement(vd.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===_On()&&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 $Q=U(re(),1);var qQ=U(re(),1);var Yq=U(re(),1);function QMe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Zi("Select");return Yq.default.createElement(D,{...o.option({isFocused:e})},e&&Yq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),Yq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&Yq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var vm=U(re(),1);import{isDeepStrictEqual as yOn}from"node:util";var jq=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:UMe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var TOn=(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}}},HMe=e=>e.flatMap(t=>{if("options"in t){let r=HMe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),g3t=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=HMe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new jq(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}},GMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=HMe(t),[a,c]=(0,vm.useReducer)(TOn,{visibleOptionCount:e,defaultValue:r,options:t},g3t),[u,l]=(0,vm.useState)(s);s!==u&&!yOn(s,u)&&(c({type:"reset",state:g3t({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 qMe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var UMe=e=>`HEADER-${e.optionValues.join(",")}`;function Gb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=GMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});qMe({isDisabled:e,state:c});let{styles:u}=Zi("Select");return qQ.default.createElement(D,{...u.container()},c.visibleOptions.map(l=>{let d="value"in l?l.value:UMe(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);_=qQ.default.createElement(qQ.default.Fragment,null,h.slice(0,y),qQ.default.createElement(C,{...u.highlightedText()},r),h.slice(y+r.length))}return qQ.default.createElement(QMe,{key:d,isFocused:f,isSelected:p,smallPointer:A},_)}))}function A3t({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),$Q.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},$Q.default.createElement(D,{marginBottom:1,flexDirection:"column"},$Q.default.createElement(C,{bold:!0},"You've spent $5 this session.")),$Q.default.createElement(D,null,$Q.default.createElement(Gb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var Cn=U(re(),1),fr=U(re(),1);var _p=U(re(),1);Le();Sr();Le();Ne();import bOn from"os";import COn from"path";import zq from"fs";var IOn={sources:{},routing:{}};function _3t(){let e=bOn.homedir();return COn.join(e,In,"config.json")}function h3t(){try{let e=_3t();if(!zq.existsSync(e))return IOn;let t=zq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:vOn(r)}catch(e){throw he(e),e}}function vOn(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 E3t(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 $Me=class{config;constructor(){try{this.config=h3t()}catch(t){console.log(t)}}reload(){this.config=h3t()}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=E3t(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=E3t(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=_3t(),r={};if(zq.existsSync(t)){let o=zq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};zq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){he(t)}}},qo=new $Me;var xOn="1.41.1",YS={VERSION:xOn,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 VMe=46,S3t=["(\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 hue({isDefaultModel:e=!1}){let t=Math.max(VMe,Me().length+12),r=K(),n=S3t[Math.floor(Math.random()*S3t.length)];return _p.createElement(D,{flexDirection:"column"},_p.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},_p.createElement(C,null,_p.createElement(C,null,n)," Welcome to"," ",_p.createElement(C,{bold:!0},ze),_p.createElement(C,{color:r.secondaryText}," v",YS.VERSION)),_p.createElement(_p.Fragment,null,_p.createElement(D,{paddingLeft:2,flexDirection:"column",gap:1},_p.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),_p.createElement(C,{color:r.secondaryText},"cwd: ",Me()),_p.createElement(C,{color:r.secondaryText},"model: ",qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),_p.createElement(C,{color:r.secondaryText},"small fast model: ",qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var B0=U(re(),1);Ne();var XW=U(re(),1);import{randomUUID as R0}from"crypto";var y3t=()=>[],T3t=()=>{};function b3t(e){y3t=e}function Eue(){return y3t}function C3t(e){T3t=e}function I3t(){return T3t}Ne();Xt();Sr();Ne();Le();import{existsSync as Vb,readdirSync as K2n,statSync as J2n}from"fs";import{join as px,relative as Z2n}from"path";import{homedir as Z9t}from"os";import{platform as X2n}from"process";import{readFile as mx}from"fs/promises";Sr();jS();br();import{join as BOn,sep as MOn}from"path";function Sp(){if(!xm())return!1;try{let e=Tt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Dm(){return(BOn(Me(),".hcode","team-memory")+MOn).normalize("NFC")}function jQ(e){let t=e.normalize("NFC"),r=Dm();return t.startsWith(r)}var X9t=U(n$(),1);Go();var z9t=U(n$(),1);Sr();Le();Ne();gp();import{readFile as Y9t}from"fs/promises";import{existsSync as u2e,readdirSync as Y2n,statSync as j2n}from"fs";import{join as l2e,relative as W9t}from"path";import{homedir as z2n}from"os";function j9t(e){try{let t=(0,z9t.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 W2n(e,t){return t.length===0?!0:t.some(r=>{try{return Dd(e,r,{matchBase:!0,dot:!0})}catch(n){return he(n),!1}})}function d2e(e){let t=[];try{if(!u2e(e))return t;let r=Y2n(e);for(let n of r){let o=l2e(e,n),i=j2n(o);i.isDirectory()?t.push(...d2e(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){he(r)}return t}async function K9t(){let e=[];try{let t=l2e(z2n(),In,"rules");if(u2e(t)){let r=d2e(t);for(let n of r)try{let o=await Y9t(n,"utf-8"),{paths:i,content:s}=j9t(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=l2e(Me(),In,"rules");if(u2e(t)){let r=d2e(t);for(let n of r)try{let o=await Y9t(n,"utf-8"),{paths:i,content:s}=j9t(o);i.length>0&&e.push({filePath:W9t(Me(),n),content:s,paths:i,isProjectRule:!0})}catch(o){he(o)}}}catch(t){he(t)}return e}function J9t(e,t){e=gae(e);let r=gae(Me()),n=e.startsWith(r)?W9t(r,e):e;return t.filter(o=>W2n(n,o.paths))}var ekn=`# 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 tkn(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 upe=null,YUe=!1;function LWn(){upe=null,YUe=!1}cr.on("proxy:changed",LWn);function FWn(){if(YUe)return upe;if(YUe=!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&&(upe=new c7t.ProxyAgent({uri:e}),Ft(`[proxy] using proxy: ${e}`)),upe}function QWn(){let e=FWn();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function dpe(e){let t=e||process.env.API_TYPE,r=QWn();switch(t){case"openai":return BWn(r);case"openai-responses":return MWn(r);case"gemini":return kWn(r);default:return PWn(r)}}var l7t=U(re(),1);function u7t(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=UWn(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function UWn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||HWn(t)?0:GWn(t)?2:1}function HWn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function GWn(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 WUe(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 fC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function fpe(e,t,r){let n=[];return typeof e=="number"&&n.push(WUe(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${fC(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 ppe(e,t){Hu.totalCost+=e,Hu.totalAPIDuration+=t}function mpe(e,t){Hu.inputTokens+=e,Hu.outputTokens+=t,cr.emit("token:change",{inputTokens:Hu.inputTokens,outputTokens:Hu.outputTokens})}function gpe(e,t){Hu.cacheCreationTokens+=e,Hu.cacheReadTokens+=t}function gB(){return{inputTokens:Hu.inputTokens,outputTokens:Hu.outputTokens,cacheCreationTokens:Hu.cacheCreationTokens,cacheReadTokens:Hu.cacheReadTokens}}function p3(){return Hu.totalCost}function Ape(){return Date.now()-Hu.startTime}function d7t(){return Hu.totalAPIDuration}function f7t(e){Hu.currentContextTokens=e}function p7t(){return Hu.currentContextTokens}function qWn(){return ht.grey(`Total duration (API): ${V_(Hu.totalAPIDuration)}
767
767
  Total duration (wall): ${V_(Ape())}`)}function m7t(){(0,l7t.useEffect)(()=>{let e=()=>{process.stdout.write(`
768
768
  `+qWn()+`
769
- `);let t=Bn();Di({...t,lastCost:Hu.totalCost,lastAPIDuration:Hu.totalAPIDuration,lastDuration:Ape(),lastSessionId:__})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Ne();Le();Le();var KUe="1.41.0";globalThis.MACRO={VERSION:KUe,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 hpe=process.env.HAWA_CODE_USER_AGENT||`${fi}/${KUe} (${process.env.USER_TYPE})`;Ne();Ne();Xt();function Of(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=hf(t);if(n?.type==="user"){t[t.length-1]=jWn(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=hf(t);n?.type==="user"&&(t[t.length-1]=$Wn(n,r));return}}}),t}function $Wn(e,t){return{...e,message:{...e.message,content:YWn(e.message.content,VWn(t.content.content))}}}function VWn(e){return`
769
+ `);let t=Bn();Di({...t,lastCost:Hu.totalCost,lastAPIDuration:Hu.totalAPIDuration,lastDuration:Ape(),lastSessionId:__})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Ne();Le();Le();var KUe="1.41.1";globalThis.MACRO={VERSION:KUe,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 hpe=process.env.HAWA_CODE_USER_AGENT||`${fi}/${KUe} (${process.env.USER_TYPE})`;Ne();Ne();Xt();function Of(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=hf(t);if(n?.type==="user"){t[t.length-1]=jWn(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=hf(t);n?.type==="user"&&(t[t.length-1]=$Wn(n,r));return}}}),t}function $Wn(e,t){return{...e,message:{...e.message,content:YWn(e.message.content,VWn(t.content.content))}}}function VWn(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_${YN()}`,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 qQr(`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"}}},Q0e=new F0e;var Cct=te(_ct(),1);pr();hs();function CA(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function yct(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function rjr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function njr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function ijr(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 IU(e,t,r){UG(t,e),HG(t,ijr(e,r),r)}function kR(e){let t=[],r=e.getReader(),n,i=new Promise(u=>n=u),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(u){try{let{done:l,value:c}=await r.read();if(l){u.close(),s();return}t.push(c),u.enqueue(c)}catch(l){u.error(l),s()}},cancel(u){r.cancel(u).catch(()=>{}),s()}}),done:i}}function TU(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function d1e(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 bct=["/v1/messages"];function f1e(e){let t;try{typeof e=="string"?t=new QT(e):e instanceof QT?t=e:t=new QT(e.url)}catch{return""}let r=t.pathname;for(let n of bct){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function eJ(e,t){let r=typeof e=="string"?e:e instanceof QT?e.toString():e.url,n;try{n=new QT(r).pathname}catch{return!1}return bct.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function ojr(e){return async(t,r)=>{if(!eJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await tW.transformRequestOut(n),o=f1e(t)+"/chat/completions",s=CA(r.headers),a=s.authorization??s.Authorization??"";rjr(i,yct(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:_}),d1e("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:TU(u.headers)}),S=await tW.transformResponseIn(C,n),I=await S.text();try{IU({...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=kR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:TU(u.headers)}),g=await tW.transformResponseIn(m,n),E=kR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{IU({...f,openai:{...f.openai,response:{body:await Wet(_)}},response:{...f.response,body:await gP(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 sjr(e){return async(t,r)=>{if(!eJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await rW.transformRequestOut(n),o=CA(r.headers);njr(i,yct(o));let s=JSON.stringify(i),u=f1e(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}),d1e("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:TU(c.headers)}),x=await rW.transformResponseIn(I,n),O=await x.text();try{IU({...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=kR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:TU(c.headers)}),_=await rW.transformResponseIn(E,n),C=kR(_.body);return Promise.all([g.done,C.done]).then(async([S,I])=>{try{IU({...m,openai:{...m.openai,response:{body:await Vet(S)}},response:{...m.response,body:await gP(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 ajr(e){return async(t,r)=>{if(!eJ(t,r))return e(t,r);let n=JSON.parse(r.body),i=CA(r.headers),o=await Q0e.transformRequestOut(n),s=JSON.stringify(o),a=f1e(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}),d1e("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=kR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:TU(l.headers)}),E=await Q0e.transformResponseIn(g),_=kR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let I=c?Ket(C):JSON.parse(C),x=c?await gP(S):JSON.parse(S);IU({...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 ujr(e){return async(t,r)=>{if(!eJ(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 QT?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 QT?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 gP(m)}else c.response.body=await a.json();let A=CA(r.headers)["x-agent-id"];UG(A,c),HG(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 XK=null,c1e=!1;function ljr(){XK=null,c1e=!1}Cr.on("proxy:changed",ljr);function cjr(){if(c1e)return XK;if(c1e=!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&&(XK=new Cct.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),XK}function djr(){let e=cjr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function tJ(e){let t=e||process.env.API_TYPE,r=djr();switch(t){case"openai":return ojr(r);case"openai-responses":return sjr(r);case"gemini":return ajr(r);default:return ujr(r)}}var Ajr=te(he(),1);function Sct(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=fjr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function fjr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||pjr(t)?0:mjr(t)?2:1}function pjr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function mjr(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 O0(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 fC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();hs();var nl={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function rJ(e,t){nl.totalCost+=e,nl.totalAPIDuration+=t}function nJ(e,t){nl.inputTokens+=e,nl.outputTokens+=t,Cr.emit("token:change",{inputTokens:nl.inputTokens,outputTokens:nl.outputTokens})}function iJ(e,t){nl.cacheCreationTokens+=e,nl.cacheReadTokens+=t}function p1e(){return{inputTokens:nl.inputTokens,outputTokens:nl.outputTokens,cacheCreationTokens:nl.cacheCreationTokens,cacheReadTokens:nl.cacheReadTokens}}function Ict(){return nl.totalCost}function Tct(){return Date.now()-nl.startTime}function vct(){return nl.totalAPIDuration}function xct(e){nl.currentContextTokens=e}function Dct(){return nl.currentContextTokens}Ue();Me();Me();var m1e="1.41.0";globalThis.MACRO={VERSION:m1e,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 oJ=process.env.HAWA_CODE_USER_AGENT||`${$i}/${m1e} (${process.env.USER_TYPE})`;import{randomUUID as P_}from"crypto";var gjr=()=>[],hjr=()=>{};function sJ(){return gjr}function wct(){return hjr}Ue();Kt();xr();Ue();Me();import{existsSync as Q0,readdirSync as PKr,statSync as UKr}from"fs";import{join as AC,relative as HKr}from"path";import{homedir as ept}from"os";import{platform as qKr}from"process";import{readFile as gC}from"fs/promises";xr();k0();pr();import{join as Cjr,sep as Sjr}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(Cjr(Fe(),".hcode","team-memory")+Sjr).normalize("NFC")}function g1e(e){let t=e.normalize("NFC"),r=Bf();return t.startsWith(r)}var tpt=te(kU(),1);Si();var Kft=te(kU(),1);xr();Me();Ue();pc();import{readFile as Vft}from"fs/promises";import{existsSync as O1e,readdirSync as MKr,statSync as FKr}from"fs";import{join as k1e,relative as Jft}from"path";import{homedir as QKr}from"os";function Wft(e){try{let t=(0,Kft.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 LKr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return Ie(n),!1}})}function M1e(e){let t=[];try{if(!O1e(e))return t;let r=MKr(e);for(let n of r){let i=k1e(e,n),o=FKr(i);o.isDirectory()?t.push(...M1e(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){Ie(r)}return t}async function Zft(){let e=[];try{let t=k1e(QKr(),Gr,"rules");if(O1e(t)){let r=M1e(t);for(let n of r)try{let i=await Vft(n,"utf-8"),{paths:o,content:s}=Wft(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=k1e(Fe(),Gr,"rules");if(O1e(t)){let r=M1e(t);for(let n of r)try{let i=await Vft(n,"utf-8"),{paths:o,content:s}=Wft(i);o.length>0&&e.push({filePath:Jft(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){Ie(i)}}}catch(t){Ie(t)}return e}function Xft(e,t){e=QY(e);let r=QY(Fe()),n=e.startsWith(r)?Jft(r,e):e;return t.filter(i=>LKr(n,i.paths))}var GKr=`# hawaCodeMd
754
+ Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var XK=null,c1e=!1;function ljr(){XK=null,c1e=!1}Cr.on("proxy:changed",ljr);function cjr(){if(c1e)return XK;if(c1e=!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&&(XK=new Cct.ProxyAgent({uri:e}),$t(`[proxy] using proxy: ${e}`)),XK}function djr(){let e=cjr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function tJ(e){let t=e||process.env.API_TYPE,r=djr();switch(t){case"openai":return ojr(r);case"openai-responses":return sjr(r);case"gemini":return ajr(r);default:return ujr(r)}}var Ajr=te(he(),1);function Sct(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=fjr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function fjr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||pjr(t)?0:mjr(t)?2:1}function pjr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function mjr(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 O0(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 fC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();hs();var nl={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function rJ(e,t){nl.totalCost+=e,nl.totalAPIDuration+=t}function nJ(e,t){nl.inputTokens+=e,nl.outputTokens+=t,Cr.emit("token:change",{inputTokens:nl.inputTokens,outputTokens:nl.outputTokens})}function iJ(e,t){nl.cacheCreationTokens+=e,nl.cacheReadTokens+=t}function p1e(){return{inputTokens:nl.inputTokens,outputTokens:nl.outputTokens,cacheCreationTokens:nl.cacheCreationTokens,cacheReadTokens:nl.cacheReadTokens}}function Ict(){return nl.totalCost}function Tct(){return Date.now()-nl.startTime}function vct(){return nl.totalAPIDuration}function xct(e){nl.currentContextTokens=e}function Dct(){return nl.currentContextTokens}Ue();Me();Me();var m1e="1.41.1";globalThis.MACRO={VERSION:m1e,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 oJ=process.env.HAWA_CODE_USER_AGENT||`${$i}/${m1e} (${process.env.USER_TYPE})`;import{randomUUID as P_}from"crypto";var gjr=()=>[],hjr=()=>{};function sJ(){return gjr}function wct(){return hjr}Ue();Kt();xr();Ue();Me();import{existsSync as Q0,readdirSync as PKr,statSync as UKr}from"fs";import{join as AC,relative as HKr}from"path";import{homedir as ept}from"os";import{platform as qKr}from"process";import{readFile as gC}from"fs/promises";xr();k0();pr();import{join as Cjr,sep as Sjr}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(Cjr(Fe(),".hcode","team-memory")+Sjr).normalize("NFC")}function g1e(e){let t=e.normalize("NFC"),r=Bf();return t.startsWith(r)}var tpt=te(kU(),1);Si();var Kft=te(kU(),1);xr();Me();Ue();pc();import{readFile as Vft}from"fs/promises";import{existsSync as O1e,readdirSync as MKr,statSync as FKr}from"fs";import{join as k1e,relative as Jft}from"path";import{homedir as QKr}from"os";function Wft(e){try{let t=(0,Kft.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 LKr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return Ie(n),!1}})}function M1e(e){let t=[];try{if(!O1e(e))return t;let r=MKr(e);for(let n of r){let i=k1e(e,n),o=FKr(i);o.isDirectory()?t.push(...M1e(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){Ie(r)}return t}async function Zft(){let e=[];try{let t=k1e(QKr(),Gr,"rules");if(O1e(t)){let r=M1e(t);for(let n of r)try{let i=await Vft(n,"utf-8"),{paths:o,content:s}=Wft(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=k1e(Fe(),Gr,"rules");if(O1e(t)){let r=M1e(t);for(let n of r)try{let i=await Vft(n,"utf-8"),{paths:o,content:s}=Wft(i);o.length>0&&e.push({filePath:Jft(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){Ie(i)}}}catch(t){Ie(t)}return e}function Xft(e,t){e=QY(e);let r=QY(Fe()),n=e.startsWith(r)?Jft(r,e):e;return t.filter(i=>LKr(n,i.paths))}var GKr=`# 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 $Kr(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:Wgt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Btn(){try{let e=m3("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var Ntn="[Image pasted]";function Xgt(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function tht({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=p3.fromText(e,m,S),[O,F]=(0,eht.useState)(null);function G(){O&&(clearTimeout(O),F(null),o?.(!1))}let j=sv(ce=>{G(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),U=sv(ce=>{G(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function $(){return p3.fromText("",m,0)}let q=sv(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function de(){return G(),x.text===""?(q(),x):x.del()}function _e(){if(l)return x;let ce=Zgt();return ce===null?(Jgt()&&(o?.(!0,Kgt),G(),F(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(Ntn))}let k=Xgt([["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=Xgt([["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 A3({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}=tht({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]=rIe.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 rIe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var nIe=te(he(),1),g3=te(he(),1);QU();hs();Si();iv();pr();var rht=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function pv(){let e=[...rht,...[...rht].reverse()],[t,r]=(0,g3.useState)(0);return(0,g3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),nIe.createElement(B,{flexWrap:"nowrap",height:1,width:2},nIe.createElement(v,{color:ge().claude},e[t]))}Si();function CC(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as T3}from"os";import{join as _2}from"path";import{existsSync as v3,mkdirSync as zEt,appendFileSync as $Et,readFileSync as YEt,constants as Din,writeFileSync as win,unlinkSync as jEt,statSync as Bin}from"fs";import{platform as VEt}from"process";Ue();import{accessSync as Nin}from"fs";Ue();var TSi=te(IIe(),1);var xin="1.41.0",I3={VERSION:xin,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 Av=_2(UI,".update.lock"),Rin=300*1e3;function WEt(){try{if(v3(UI)||zEt(UI,{recursive:!0}),v3(Av)){let e=Bin(Av);if(Date.now()-e.mtimeMs<Rin)return!1;try{jEt(Av)}catch(r){return Ie(`Failed to remove stale lock file: ${r}`),!1}}return win(Av,`${process.pid}`,"utf8"),!0}catch(e){return Ie(`Failed to acquire lock: ${e}`),!1}}function KEt(){try{v3(Av)&&YEt(Av,"utf8")===`${process.pid}`&&jEt(Av)}catch(e){Ie(`Failed to release lock: ${e}`)}}async function TIe(){try{let e=await Zn("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{Nin(t,Din.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 JEt(e){if(!WEt())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:I3.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{v3(e)||zEt(e,{recursive:!0});let t=await Zn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1119
+ `))}}}return{onInput:xe,renderedValue:x.render(f,l,A),offset:S,setOffset:I}}function A3({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}=tht({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]=rIe.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 rIe.default.createElement(v,{wrap:"truncate-end",dimColor:S},k?de:G)}var nIe=te(he(),1),g3=te(he(),1);QU();hs();Si();iv();pr();var rht=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function pv(){let e=[...rht,...[...rht].reverse()],[t,r]=(0,g3.useState)(0);return(0,g3.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),nIe.createElement(B,{flexWrap:"nowrap",height:1,width:2},nIe.createElement(v,{color:ge().claude},e[t]))}Si();function CC(){return Ge.getSessionContext().window_size?{...Ge.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Me();import{homedir as T3}from"os";import{join as _2}from"path";import{existsSync as v3,mkdirSync as zEt,appendFileSync as $Et,readFileSync as YEt,constants as Din,writeFileSync as win,unlinkSync as jEt,statSync as Bin}from"fs";import{platform as VEt}from"process";Ue();import{accessSync as Nin}from"fs";Ue();var TSi=te(IIe(),1);var xin="1.41.1",I3={VERSION:xin,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 Av=_2(UI,".update.lock"),Rin=300*1e3;function WEt(){try{if(v3(UI)||zEt(UI,{recursive:!0}),v3(Av)){let e=Bin(Av);if(Date.now()-e.mtimeMs<Rin)return!1;try{jEt(Av)}catch(r){return Ie(`Failed to remove stale lock file: ${r}`),!1}}return win(Av,`${process.pid}`,"utf8"),!0}catch(e){return Ie(`Failed to acquire lock: ${e}`),!1}}function KEt(){try{v3(Av)&&YEt(Av,"utf8")===`${process.pid}`&&jEt(Av)}catch(e){Ie(`Failed to release lock: ${e}`)}}async function TIe(){try{let e=await Zn("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{Nin(t,Din.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 JEt(e){if(!WEt())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:I3.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{v3(e)||zEt(e,{recursive:!0});let t=await Zn(`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(VEt==="win32"){let n=await Zn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[_2(T3(),".bashrc"),_2(T3(),".bash_profile"),_2(T3(),".zshrc"),_2(T3(),".config","fish","config.fish")];for(let i of n)if(v3(i))try{if(!YEt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dahawa/hawa-code",
3
- "version": "1.41.0",
3
+ "version": "1.41.1",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },