@dahawa/hawa-code 2.4.19 → 2.4.20
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 +3 -3
- package/hands.js +3 -3
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -675,7 +675,7 @@ globstar while`,t,p,r,f,A),this.matchOne(t.slice(p),r.slice(f),n))return this.de
|
|
|
675
675
|
`)),cFn(e,o,{encoding:r,flush:!0})}var XHt=new bde.default({fetchMethod:e=>gFn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function aGt(e){let t=wV(e);return XHt.get(t)||XHt.fetchMethod?.(t)}async function gFn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await I2t(e,t.signal,15),n=0;for(let o of r)_B(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function cGt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var AFn=new bde.default({fetchMethod:e=>lGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Wm(e){let t=wV(e);return cGt(AFn,t,()=>lGt(t))}function lGt(e){let r=Buffer.alloc(4096),n;try{n=eGt(e,"r");let o=tGt(n,r,0,4096,0);return o===0?"utf8":o>=2&&r[0]===255&&r[1]===254?"utf16le":o>=3&&r[0]===239&&r[1]===187&&r[2]===191||r.slice(0,o).toString("utf8").length>0?"utf8":"ascii"}catch(o){return Se(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&rGt(n)}}var hFn=new bde.default({fetchMethod:e=>uGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function _B(e){let t=wV(e);return cGt(hFn,t,()=>uGt(t))}function uGt(e,t="utf8"){try{if(!nGt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=eGt(e,"r"),i=tGt(o,n,0,4096,0);rGt(o);let s=n.toString(t,0,i),a=0,c=0;for(let l=0;l<s.length;l++)s[l]===`
|
|
676
676
|
`&&(l>0&&s[l-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return Se(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function WF(e){let t=oGt(e)?e:wV(Be(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function DPe(e){return e?oGt(e)?e:wV(Be(),e):void 0}function dGt(e){try{let t=DPe(e),r=t?fFn(Be(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return X("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Ide(e){try{let t=pFn(e),r=KHt(e,JHt(e));if(!lFn(t))return;let i=uFn(t).filter(s=>KHt(s,JHt(s))===r&&mFn(t,s)!==e)[0];return i||void 0}catch(t){Se(`Error finding similar file for ${e}: ${t}`);return}}function OPe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function ow({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return OPe()?r.map((n,o)=>`${o+t} ${n}`).join(`
|
|
677
677
|
`):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
|
|
678
|
-
`)}function fGt(e){try{let t=dFn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function ew(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function yFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function BPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,pGt.gt)(MACRO.VERSION,o))&&(i=$ue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&yFn()},[s,r]),!r&&!s)return null;let a=EFn(_Fn(e,Ci)),c=fGt(e),l=!a&&!c,u=MF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=ee();return Ki.createElement(x,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Ki.createElement(Ki.Fragment,null,Ki.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Ki.createElement(Ud,{children:[]},(()=>{let p=[];return c&&p.push(Ki.createElement(Ud.Item,{key:"workspace"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to create a new app or clone a repository."))),l&&p.push(Ki.createElement(Ud.Item,{key:"claudemd"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/init")," to create a",Ci," file with instructions for Hawa code."))),u&&p.push(Ki.createElement(Ud.Item,{key:"terminal"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/terminal-setup"),Ki.createElement(C,{bold:!1}," to set up terminal integration")))),p.push(Ki.createElement(Ud.Item,{key:"questions"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," questions about your codebase."))),p.push(Ki.createElement(Ud.Item,{key:"changes"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to implement changes to your codebase."))),p})())),!r&&s&&Ki.createElement(x,{borderColor:ee().secondaryBorder,flexDirection:"column",marginRight:1},Ki.createElement(x,{flexDirection:"column",gap:0},Ki.createElement(x,{marginBottom:1},Ki.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Ki.createElement(x,{flexDirection:"column",marginLeft:1},i.map((p,f)=>Ki.createElement(C,{key:f,color:ee().secondaryText},"\u2022 ",p))))),e===SFn()&&Ki.createElement(C,{color:ee().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var JF=F(ne(),1);var KF=F(ne(),1);var RV=F(ne(),1);function MPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return RV.default.createElement(x,{...o.option({isFocused:e})},e&&RV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),RV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&RV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Km=F(ne(),1);import{isDeepStrictEqual as TFn}from"node:util";var NV=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let c="value"in s?s.value:kPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var bFn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},PPe=e=>e.flatMap(t=>{if("options"in t){let r=PPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),mGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=PPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new NV(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},LPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=PPe(t),[a,c]=(0,Km.useReducer)(bFn,{visibleOptionCount:e,defaultValue:r,options:t},mGt),[l,u]=(0,Km.useState)(s);s!==l&&!TFn(s,l)&&(c({type:"reset",state:mGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Km.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Km.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Km.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Km.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Km.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Km.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Km.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:A,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var QPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var kPe=e=>`HEADER-${e.optionValues.join(",")}`;function xC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=LPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});QPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return KF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:kPe(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),A="header"in u,h="label"in u?u.label:u.header,E=h;if(r&&h.includes(r)){let S=h.indexOf(r);E=KF.default.createElement(KF.default.Fragment,null,h.slice(0,S),KF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return KF.default.createElement(MPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function gGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),JF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},JF.default.createElement(x,{marginBottom:1,flexDirection:"column"},JF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),JF.default.createElement(x,null,JF.default.createElement(xC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Qp=F(ne(),1);Ge();sr();Cy();var vFn="2.4.19",Iy={VERSION:vFn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var HPe=46,EGt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function vde({isDefaultModel:e=!1}){let t=Math.max(HPe,Be().length+12),r=ee(),n=EGt[Math.floor(Math.random()*EGt.length)];return Qp.createElement(x,{flexDirection:"column"},Qp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Qp.createElement(C,null,Qp.createElement(C,null,n)," Welcome to"," ",Qp.createElement(C,{bold:!0},et),Qp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Qp.createElement(Qp.Fragment,null,Qp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Qp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Qp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Qp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Qp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var SS=F(ne(),1);Re();var qJ=F(ne(),1);import{randomUUID as AS}from"crypto";$s();Re();Zt();sr();Re();Ge();import{existsSync as NC,readdirSync as W4n,statSync as K4n}from"fs";import{join as cw,relative as J4n}from"path";import{homedir as V$t}from"os";import{platform as Z4n}from"process";import{readFile as lw}from"fs/promises";sr();EE();gr();import{join as OFn,sep as BFn}from"path";function Up(){if(!Jm())return!1;try{let e=ot();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Zm(){return(OFn(Be(),".hcode","team-memory")+BFn).normalize("NFC")}function _E(e){let t=e.normalize("NFC"),r=Zm();return t.startsWith(r)}var j$t=F(UV(),1);Xo();var H$t=F(UV(),1);sr();Ge();Re();Mp();import{readFile as U$t}from"fs/promises";import{existsSync as iLe,readdirSync as V4n,statSync as j4n}from"fs";import{join as sLe,relative as G$t}from"path";import{homedir as Y4n}from"os";function F$t(e){try{let t=(0,H$t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return Se(t),{paths:[],content:e.trim()}}}function z4n(e,t){return t.length===0?!0:t.some(r=>{try{return Hd(e,r,{matchBase:!0,dot:!0})}catch(n){return Se(n),!1}})}function aLe(e){let t=[];try{if(!iLe(e))return t;let r=V4n(e);for(let n of r){let o=sLe(e,n),i=j4n(o);i.isDirectory()?t.push(...aLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function $$t(){let e=[];try{let t=sLe(Y4n(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){Se(o)}}}catch(t){Se(t)}try{let t=sLe(Be(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:G$t(Be(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function q$t(e,t){e=lle(e);let r=lle(Be()),n=e.startsWith(r)?G$t(r,e):e;return t.filter(o=>z4n(n,o.paths))}var X4n=`# hawaCodeMd
|
|
678
|
+
`)}function fGt(e){try{let t=dFn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function ew(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function yFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function BPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,pGt.gt)(MACRO.VERSION,o))&&(i=$ue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&yFn()},[s,r]),!r&&!s)return null;let a=EFn(_Fn(e,Ci)),c=fGt(e),l=!a&&!c,u=MF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=ee();return Ki.createElement(x,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Ki.createElement(Ki.Fragment,null,Ki.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Ki.createElement(Ud,{children:[]},(()=>{let p=[];return c&&p.push(Ki.createElement(Ud.Item,{key:"workspace"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to create a new app or clone a repository."))),l&&p.push(Ki.createElement(Ud.Item,{key:"claudemd"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/init")," to create a",Ci," file with instructions for Hawa code."))),u&&p.push(Ki.createElement(Ud.Item,{key:"terminal"},Ki.createElement(C,{color:d.secondaryText},"Run ",Ki.createElement(C,{color:d.text},"/terminal-setup"),Ki.createElement(C,{bold:!1}," to set up terminal integration")))),p.push(Ki.createElement(Ud.Item,{key:"questions"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," questions about your codebase."))),p.push(Ki.createElement(Ud.Item,{key:"changes"},Ki.createElement(C,{color:d.secondaryText},"Ask ",et," to implement changes to your codebase."))),p})())),!r&&s&&Ki.createElement(x,{borderColor:ee().secondaryBorder,flexDirection:"column",marginRight:1},Ki.createElement(x,{flexDirection:"column",gap:0},Ki.createElement(x,{marginBottom:1},Ki.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Ki.createElement(x,{flexDirection:"column",marginLeft:1},i.map((p,f)=>Ki.createElement(C,{key:f,color:ee().secondaryText},"\u2022 ",p))))),e===SFn()&&Ki.createElement(C,{color:ee().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var JF=F(ne(),1);var KF=F(ne(),1);var RV=F(ne(),1);function MPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return RV.default.createElement(x,{...o.option({isFocused:e})},e&&RV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),RV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&RV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Km=F(ne(),1);import{isDeepStrictEqual as TFn}from"node:util";var NV=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let c="value"in s?s.value:kPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var bFn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},PPe=e=>e.flatMap(t=>{if("options"in t){let r=PPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),mGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=PPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new NV(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},LPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=PPe(t),[a,c]=(0,Km.useReducer)(bFn,{visibleOptionCount:e,defaultValue:r,options:t},mGt),[l,u]=(0,Km.useState)(s);s!==l&&!TFn(s,l)&&(c({type:"reset",state:mGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Km.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Km.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Km.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Km.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Km.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Km.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Km.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:A,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var QPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var kPe=e=>`HEADER-${e.optionValues.join(",")}`;function xC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=LPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});QPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return KF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:kPe(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),A="header"in u,h="label"in u?u.label:u.header,E=h;if(r&&h.includes(r)){let S=h.indexOf(r);E=KF.default.createElement(KF.default.Fragment,null,h.slice(0,S),KF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return KF.default.createElement(MPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function gGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),JF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},JF.default.createElement(x,{marginBottom:1,flexDirection:"column"},JF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),JF.default.createElement(x,null,JF.default.createElement(xC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Qp=F(ne(),1);Ge();sr();Cy();var vFn="2.4.20",Iy={VERSION:vFn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var HPe=46,EGt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function vde({isDefaultModel:e=!1}){let t=Math.max(HPe,Be().length+12),r=ee(),n=EGt[Math.floor(Math.random()*EGt.length)];return Qp.createElement(x,{flexDirection:"column"},Qp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Qp.createElement(C,null,Qp.createElement(C,null,n)," Welcome to"," ",Qp.createElement(C,{bold:!0},et),Qp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Qp.createElement(Qp.Fragment,null,Qp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Qp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Qp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Qp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Qp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var SS=F(ne(),1);Re();var qJ=F(ne(),1);import{randomUUID as AS}from"crypto";$s();Re();Zt();sr();Re();Ge();import{existsSync as NC,readdirSync as W4n,statSync as K4n}from"fs";import{join as cw,relative as J4n}from"path";import{homedir as V$t}from"os";import{platform as Z4n}from"process";import{readFile as lw}from"fs/promises";sr();EE();gr();import{join as OFn,sep as BFn}from"path";function Up(){if(!Jm())return!1;try{let e=ot();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Zm(){return(OFn(Be(),".hcode","team-memory")+BFn).normalize("NFC")}function _E(e){let t=e.normalize("NFC"),r=Zm();return t.startsWith(r)}var j$t=F(UV(),1);Xo();var H$t=F(UV(),1);sr();Ge();Re();Mp();import{readFile as U$t}from"fs/promises";import{existsSync as iLe,readdirSync as V4n,statSync as j4n}from"fs";import{join as sLe,relative as G$t}from"path";import{homedir as Y4n}from"os";function F$t(e){try{let t=(0,H$t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return Se(t),{paths:[],content:e.trim()}}}function z4n(e,t){return t.length===0?!0:t.some(r=>{try{return Hd(e,r,{matchBase:!0,dot:!0})}catch(n){return Se(n),!1}})}function aLe(e){let t=[];try{if(!iLe(e))return t;let r=V4n(e);for(let n of r){let o=sLe(e,n),i=j4n(o);i.isDirectory()?t.push(...aLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function $$t(){let e=[];try{let t=sLe(Y4n(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){Se(o)}}}catch(t){Se(t)}try{let t=sLe(Be(),Fn,"rules");if(iLe(t)){let r=aLe(t);for(let n of r)try{let o=await U$t(n,"utf-8"),{paths:i,content:s}=F$t(o);i.length>0&&e.push({filePath:G$t(Be(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function q$t(e,t){e=lle(e);let r=lle(Be()),n=e.startsWith(r)?G$t(r,e):e;return t.filter(o=>z4n(n,o.paths))}var X4n=`# hawaCodeMd
|
|
679
679
|
Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function e3n(e="default"){let r=Ke.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(o=>{let i=o.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${o.filePath} (${i}):
|
|
680
680
|
|
|
681
681
|
${o.content}`}).join(`
|
|
@@ -773,7 +773,7 @@ data: ${JSON.stringify(H)}
|
|
|
773
773
|
Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var hge=null,G4e=!1;function Poo(){hge=null,G4e=!1}kt.on("proxy:changed",Poo);function Loo(){if(G4e)return hge;if(G4e=!0,ot().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(hge=new tXt.ProxyAgent({uri:e}),zt(`[proxy] using proxy: ${e}`)),hge}function Qoo(){let e=Loo();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function _ge(e){let t=e||process.env.API_TYPE,r=Qoo();switch(t){case"openai":return Ooo(r);case"openai-responses":return Boo(r);case"gemini":return Moo(r);default:return koo(r)}}Cy();var nXt=F(ne(),1);function rXt(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=Uoo(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function Uoo(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Foo(t)?0:Hoo(t)?2:1}function Foo(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function Hoo(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function R0(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function V4e(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m ${o}s`:`${n}m ${o}s`}function JC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Sge(e,t,r){let n=[];return typeof e=="number"&&n.push(V4e(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${JC(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}Re();$s();var tu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function yge(e,t){tu.totalCost+=e,tu.totalAPIDuration+=t}function Tge(e,t){tu.inputTokens+=e,tu.outputTokens+=t,kt.emit("token:change",{inputTokens:tu.inputTokens,outputTokens:tu.outputTokens})}function bge(e,t){tu.cacheCreationTokens+=e,tu.cacheReadTokens+=t}function gM(){return{inputTokens:tu.inputTokens,outputTokens:tu.outputTokens,cacheCreationTokens:tu.cacheCreationTokens,cacheReadTokens:tu.cacheReadTokens}}function E9(){return tu.totalCost}function Cge(){return Date.now()-tu.startTime}function oXt(){return tu.totalAPIDuration}function iXt(e){tu.currentContextTokens=e}function sXt(){return tu.currentContextTokens}function Goo(){return St.grey(`Total duration (API): ${R0(tu.totalAPIDuration)}
|
|
774
774
|
Total duration (wall): ${R0(Cge())}`)}function aXt(){(0,nXt.useEffect)(()=>{let e=()=>{process.stdout.write(`
|
|
775
775
|
`+Goo()+`
|
|
776
|
-
`);let t=Xn();ps({...t,lastCost:tu.totalCost,lastAPIDuration:tu.totalAPIDuration,lastDuration:Cge(),lastSessionId:n0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var j4e="2.4.
|
|
776
|
+
`);let t=Xn();ps({...t,lastCost:tu.totalCost,lastAPIDuration:tu.totalAPIDuration,lastDuration:Cge(),lastSessionId:n0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var j4e="2.4.20";globalThis.MACRO={VERSION:j4e,PACKAGE_URL:`@dahawa/${Ii}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Ige=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${j4e} (${process.env.USER_TYPE})`;Re();Re();Zt();function Jf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Of(t);if(n?.type==="user"){t[t.length-1]=joo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Of(t);n?.type==="user"&&(t[t.length-1]=$oo(n,r));return}}}),t}function $oo(e,t){return{...e,message:{...e.message,content:Voo(e.message.content,qoo(t.content.content))}}}function qoo(e){return`
|
|
777
777
|
<system-reminder>
|
|
778
778
|
The user sent the following message:
|
|
779
779
|
${e}
|
|
@@ -3514,7 +3514,7 @@ async () => {
|
|
|
3514
3514
|
`).replace(/\n+/g,"\\n").trim(),c=s.length>0?s.join(" "):"(no methods available)";return`- ${i}:${a??""}
|
|
3515
3515
|
- ${c}`}).join(`
|
|
3516
3516
|
`)}async function aQr(){return cqo.replace("{{providers}}",await lqo())}async function uqo(e){let t=[];for(let r of e){if("error"in r)continue;let n={};try{let{tools:o}=await r.client.listTools();for(let i of o)n[i.name]=async s=>sQr(r.client,i.name,s)}catch(o){console.warn(`Failed to list tools for codemode client ${r.name}:`,o);continue}t.push({name:r.name,fns:n})}return t}function cQr(){let e=new Bbe;return{name:"codemode",inputSchema:aqo,inputJSONSchema:{type:"object",properties:{code:{type:"string",description:"JavaScript async arrow function to execute"}},required:["code"]},async description(t){return t?.code?"Execute JavaScript code":aQr()},async prompt(){return aQr()},userFacingName(){return"codemode"},async isEnabled(){return!0},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(t){return!t.code||typeof t.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(t){return t.error?`Error: ${t.error}`:ent(t.result)},renderToolUseMessage(t){return t.code.split(`
|
|
3517
|
-
`)[0]??"codemode"},renderToolResultMessage(t){let r=zLr(t.result);return xN.createElement(x,{flexDirection:"column"},t.error?xN.createElement(x,{flexDirection:"row",key:"error"},xN.createElement(C,null," \u23BF "),xN.createElement(C,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,xN.createElement(x,{flexDirection:"row",key:"result"},xN.createElement(C,null," \u23BF "),xN.createElement(C,{key:"result-text"},r)))},async*call(t,r,n){let o=r??{abortController:new AbortController,readFileTimestamps:{}},i=OJ(),s=Object.keys(i),[a,c]=await Promise.all([Fbe(),Hbe().catch(()=>[])]),l=await uqo(a),u=nnt(),d={search:async f=>nQr(f,c,u,s),describe:async f=>iQr(f,c,u),saveSnippet:async(f,A,h)=>{let E={name:f,description:h,code:A,savedAt:Date.now(),connectors:s};return tQr(E),{saved:!0,name:f}}},p=await e.execute(XLr(t.code),l,d);yield{type:"result",data:p,resultForAssistant:p.error?`Error: ${p.error}`:ent(p.result)}}}}var dqo=L.object({code:L.string().describe("JavaScript async arrow function to execute")}),XH=cQr(),lQr={...XH,name:"codemode",inputSchema:dqo,async description(e){return XH.description(e)},async prompt(){return XH.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await Hbe()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:XH.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return XH.renderToolResultMessage(e)},async*call(e,t,r){yield*XH.call(e,t,r)}};var eG=F(ne(),1);hn();Zt();dz();Ge();var uQr=_l,dQr="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",fQr=`\u5F53\u524D\u5904\u4E8E\u4EE3\u7406\uFF08Proxy\uFF09\u6A21\u5F0F\uFF0C\
|
|
3517
|
+
`)[0]??"codemode"},renderToolResultMessage(t){let r=zLr(t.result);return xN.createElement(x,{flexDirection:"column"},t.error?xN.createElement(x,{flexDirection:"row",key:"error"},xN.createElement(C,null," \u23BF "),xN.createElement(C,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,xN.createElement(x,{flexDirection:"row",key:"result"},xN.createElement(C,null," \u23BF "),xN.createElement(C,{key:"result-text"},r)))},async*call(t,r,n){let o=r??{abortController:new AbortController,readFileTimestamps:{}},i=OJ(),s=Object.keys(i),[a,c]=await Promise.all([Fbe(),Hbe().catch(()=>[])]),l=await uqo(a),u=nnt(),d={search:async f=>nQr(f,c,u,s),describe:async f=>iQr(f,c,u),saveSnippet:async(f,A,h)=>{let E={name:f,description:h,code:A,savedAt:Date.now(),connectors:s};return tQr(E),{saved:!0,name:f}}},p=await e.execute(XLr(t.code),l,d);yield{type:"result",data:p,resultForAssistant:p.error?`Error: ${p.error}`:ent(p.result)}}}}var dqo=L.object({code:L.string().describe("JavaScript async arrow function to execute")}),XH=cQr(),lQr={...XH,name:"codemode",inputSchema:dqo,async description(e){return XH.description(e)},async prompt(){return XH.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await Hbe()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:XH.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return XH.renderToolResultMessage(e)},async*call(e,t,r){yield*XH.call(e,t,r)}};var eG=F(ne(),1);hn();Zt();dz();Ge();var uQr=_l,dQr="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",fQr=`\u5F53\u524D\u5904\u4E8E\u4EE3\u7406\uFF08Proxy\uFF09\u6A21\u5F0F\uFF0C <available_tools> \u4E2D\u5DE5\u5177\u5FC5\u987B\u901A\u8FC7 ${_l} \u4EE3\u7406\u8C03\u7528\u3002<available_tools> \u4E2D\u7684\u5DE5\u5177\u4E0D\u80FD\u76F4\u63A5\u8C03\u7528\u3002
|
|
3518
3518
|
|
|
3519
3519
|
## \u4F7F\u7528\u6D41\u7A0B
|
|
3520
3520
|
- \u82E5\u4E0D\u786E\u5B9A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u7ED3\u6784\uFF0C\u5148\u8C03\u7528 ${_l}({ action: "describe", name: "Grep" }) \u83B7\u53D6\u8BE5\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E JSON Schema\u3002
|
package/hands.js
CHANGED
|
@@ -756,7 +756,7 @@ data: ${JSON.stringify(z)}
|
|
|
756
756
|
`);a=Q.pop()||"";for(let z of Q){let Y=z.trim();if(!(!Y||Y==="data: [DONE]"))if(Y.startsWith("data: ")){let q=Y.slice(6);try{let G=JSON.parse(q);w(G)}catch(G){this.logger&&this.logger.error({err:G,line:Y},"Failed to parse Gemini SSE chunk")}}else try{let q=JSON.parse(Y);w(q)}catch{}}};(async()=>{try{for(;;){let{value:Q,done:z}=await s.read();if(z)break;a+=n.decode(Q,{stream:!0}),O()}I()}catch(Q){o.error(Q)}})()}})}convertGeminiResponseToAnthropic(t){this.logger&&this.logger.debug({response:t},"Original Gemini response");try{if(!t.candidates||!t.candidates[0])throw new Error("No candidates found in Gemini response");let r=t.candidates[0],n=[];r.content&&r.content.parts&&r.content.parts.forEach(o=>{if(o.text&&n.push({type:"text",text:o.text}),o.functionCall){let s=`toolu_${UB()}`,a=o.functionCall.thoughtSignature||o.functionCall.thought_signature||null;n.push({type:"tool_use",id:s,name:o.functionCall.name,input:o.functionCall.args||{},thought_signature:a})}}),r.groundingMetadata&&(this.logger&&this.logger.debug({groundingMetadata:r.groundingMetadata},"Processing grounding metadata"),r.groundingMetadata.webSearchQueries&&n.push({type:"text",text:`
|
|
757
757
|
|
|
758
758
|
[Search queries used: ${r.groundingMetadata.webSearchQueries.join(", ")}]`}));let i={id:`msg_${Math.random().toString(36).slice(2)}`,type:"message",role:"assistant",model:t.modelVersion||"gemini",content:n,stop_reason:r.finishReason?r.finishReason==="STOP"&&n.some(o=>o.type==="tool_use")?"tool_use":this.mapGeminiFinishReason(r.finishReason):"end_turn",stop_sequence:null,usage:{input_tokens:t.usageMetadata?.promptTokenCount||0,output_tokens:t.usageMetadata?.candidatesTokenCount||0}};return this.logger&&this.logger.debug({result:i},"Conversion complete, final Anthropic response"),i}catch{throw R6r(`Provider error: ${JSON.stringify(t)}`,500,"provider_error")}}mapGeminiFinishReason(t){switch(t){case"STOP":return"end_turn";case"MAX_TOKENS":return"max_tokens";case"SAFETY":case"RECITATION":return"stop_sequence";default:return"end_turn"}}},lbe=new abe;var Fmt=X(Qmt(),1);or();us();function Lg(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function Pmt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function Gen(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function zen(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function jen(e,t="chat"){let r={request:{},response:{},openai:{request:{},response:{}}};return r.request.model=e.request.body.model,r.request.messages=e.request.body.messages,r.request.system=e.request.body.system,r.response.content=e.response.body.content,r.response.usage=e.response.body?.usage,t==="responses"?(r.openai.request.model=e.openai.request.body.model,r.openai.request.input=e.openai.request.body.input,r.openai.response.output=e.openai.response.body?.output,r.openai.response.usage=e.openai.response.body?.usage):(r.openai.request.model=e.openai.request.body.model,r.openai.request.messages=e.openai.request.body.messages,r.openai.response.choices=e.openai.response.body.choices,r.openai.response.usage=e.openai.response.body?.usage),r}function U5(e,t,r){Dz(t,e),Rz(t,jen(e,r),r)}function w2(e){let t=[],r=e.getReader(),n,i=new Promise(l=>n=l),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(l){try{let{done:c,value:u}=await r.read();if(c){l.close(),s();return}t.push(u),l.enqueue(u)}catch(c){l.error(c),s()}},cancel(l){r.cancel(l).catch(()=>{}),s()}}),done:i}}function H5(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function QIe(e,t,r,n,i){let o;try{o={type:"error",error:{type:"api_error",message:JSON.parse(i).error?.message??`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}catch{o={type:"error",error:{type:"api_error",message:`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}return new Response(JSON.stringify(o),{status:r,statusText:n,headers:{"Content-Type":"application/json"}})}var Lmt=["/v1/messages"];function PIe(e){let t;try{typeof e=="string"?t=new bv(e):e instanceof bv?t=e:t=new bv(e.url)}catch{return""}let r=t.pathname;for(let n of Lmt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function $Z(e,t){let r=typeof e=="string"?e:e instanceof bv?e.toString():e.url,n;try{n=new bv(r).pathname}catch{return!1}return Lmt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function Yen(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=await qK.transformRequestOut(n),o=PIe(t)+"/chat/completions",s=Lg(r.headers),a=s.authorization??s.Authorization??"";Gen(i,Pmt(s));let l=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i),signal:r.signal});if(!l.ok){let _=await l.text();return J(`OpenAI Chat Completions API error: ${l.status}`,{url:o,errorResponse:_}),QIe("OpenAI Chat Completions API error","OPENROUTER",l.status,l.statusText,_)}let c=n.stream===!0,u=s["x-agent-id"],f={request:{url:o,method:r.method,headers:s,body:n},response:{status:l.status,statusText:l.statusText,headers:Lg(l.headers)},openai:{request:{body:i},response:{}}};if(!c){let _=await l.text(),C=new Response(_,{status:l.status,statusText:l.statusText,headers:H5(l.headers)}),S=await qK.transformResponseIn(C,n),I=await S.text();try{U5({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(I)}},u)}catch(w){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",w)}return new Response(I,{status:S.status,statusText:S.statusText,headers:S.headers})}let g=w2(l.body),m=new Response(g.stream,{status:l.status,statusText:l.statusText,headers:H5(l.headers)}),A=await qK.transformResponseIn(m,n),E=w2(A.body);return Promise.all([g.done,E.done]).then(async([_,C])=>{try{U5({...f,openai:{...f.openai,response:{body:await fot(_)}},response:{...f.response,body:await BU(C)}},u)}catch(S){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(E.stream,{status:A.status,statusText:A.statusText,headers:A.headers})}}function Ven(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=await GK.transformRequestOut(n),o=Lg(r.headers);zen(i,Pmt(o));let s=JSON.stringify(i),l=PIe(t)+"/responses",c=o.authorization??o.Authorization??"";if(!c)return new Response(JSON.stringify({type:"error",error:{type:"api_error",message:"Missing Authorization header",code:"RESPONSES_AUTH_MISSING"}}),{status:401,headers:{"Content-Type":"application/json"}});let u=await e(l,{method:"POST",headers:{"Content-Type":"application/json",Authorization:c,"x-api-key":c.replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal});if(!u.ok){let S=await u.text();return J(`OpenAI Responses API error: ${u.status} ${u.statusText}`,{url:l,status:u.status,errorResponse:S}),QIe("OpenAI Responses API error","RESPONSES",u.status,u.statusText,S)}let f=n.stream===!0,g=o["x-agent-id"],m={request:{url:l,method:r.method,headers:o,body:n},response:{status:u.status,statusText:u.statusText,headers:Lg(u.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await u.text(),I=new Response(S,{status:u.status,statusText:u.statusText,headers:H5(u.headers)}),w=await GK.transformResponseIn(I,n),O=await w.text();try{U5({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},g,"responses")}catch(Q){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",Q)}return new Response(O,{status:w.status,statusText:w.statusText,headers:w.headers})}let A=w2(u.body),E=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:H5(u.headers)}),_=await GK.transformResponseIn(E,n),C=w2(_.body);return Promise.all([A.done,C.done]).then(async([S,I])=>{try{U5({...m,openai:{...m.openai,response:{body:await dot(S)}},response:{...m.response,body:await BU(I)}},g,"responses")}catch(w){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+w?.stack)}}).catch(S=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(C.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function Wen(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=JSON.parse(r.body),i=Lg(r.headers),o=await lbe.transformRequestOut(n),s=JSON.stringify(o),a=PIe(t)+`/models/${n.model}:streamGenerateContent?alt=sse`,l=i.authorization??i.Authorization??"",c;try{c=await e(a,{method:"POST",headers:{"Content-Type":"application/json","x-goog-api-key":String(l).replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal})}catch(C){throw J("gemini request error:",C),C}if(!c.ok){let C=await c.text();return J(`Gemini API error response: ${c.status} ${c.statusText}`,{url:a,status:c.status,errorResponse:C}),QIe("Gemini API error","Gemini",c.status,c.statusText,C)}let u=n.stream===!0,f=i["x-agent-id"],g={request:{url:a,method:r.method,headers:Lg(r.headers),body:n},response:{status:c.status,statusText:c.statusText,headers:Lg(c.headers)},openai:{request:{body:o},response:{}}},m=w2(c.body),A=new Response(m.stream,{status:c.status,statusText:c.statusText,headers:H5(c.headers)}),E=await lbe.transformResponseIn(A),_=w2(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let I=u?pot(C):JSON.parse(C),w=u?await BU(S):JSON.parse(S);U5({...g,openai:{...g.openai,response:{body:I}},response:{...g.response,body:w}},f)}catch(I){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+I?.stack)}}).catch(C=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+C)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function Ken(e){return async(t,r)=>{if(!$Z(t,r))return e(t,r);let n=r.body;if(r.body)try{let f=JSON.parse(r.body);n=JSON.stringify(f)}catch{}let i=Lg(r.headers);["1","true"].includes(String(process.env.HAWA_CODE_X_API_KEY_DISABLED??"").toLowerCase())&&(delete i["x-api-key"],delete i["X-API-Key"]),["1","true"].includes(String(process.env.HAWA_CODE_AUTH_DISABLED??"").toLowerCase())&&(delete i.authorization,delete i.Authorization),delete i["content-length"];let a=await e(t,{method:r.method,headers:i,body:n,signal:r.signal});if(!a.ok){let f=await a.text();J(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof bv?t.toString():t.url,status:a.status,errorResponse:f});let g;try{let m=JSON.parse(f);g={type:"error",error:{type:"api_error",message:m.error?.message||m.message||`API error: ${a.statusText}`,code:m.error?.code||m.code||`API_${a.status}_ERROR`}},m.error?.details&&(g.error.details=m.error.details)}catch{g={type:"error",error:{type:"api_error",message:`API error: ${a.statusText}`,code:`API_${a.status}_ERROR`}}}return new Response(JSON.stringify(g),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"application/json"}})}let l=a.clone(),c=!(Object.hasOwn(JSON.parse(n),"stream")&&!JSON.parse(n).stream),u={request:{url:typeof t=="string"?t:t instanceof bv?t.toString():t.url,method:r.method,headers:Lg(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:Lg(a.headers)}};return(async()=>{if(c){let m=await a.text();u.response.body=await BU(m)}else u.response.body=await a.json();let g=Lg(r.headers)["x-agent-id"];Dz(g,u),Rz(g,{request:u.request.body.messages,response:u.response.body.content,usage:u.response.body?.usage})})().catch(f=>J(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
|
|
759
|
-
Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var HZ=null,MIe=!1;function Jen(){HZ=null,MIe=!1}pr.on("proxy:changed",Jen);function Zen(){if(MIe)return HZ;if(MIe=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(HZ=new Fmt.ProxyAgent({uri:e}),Jt(`[proxy] using proxy: ${e}`)),HZ}function Xen(){let e=Zen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function qZ(e){let t=e||process.env.API_TYPE,r=Xen();switch(t){case"openai":return Yen(r);case"openai-responses":return Ven(r);case"gemini":return Wen(r);default:return Ken(r)}}ph();var ntn=X(he(),1);function Umt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=etn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function etn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ttn(t)?0:rtn(t)?2:1}function ttn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function rtn(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function u_(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function WC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function GZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function zZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function jZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function LIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Hmt(){return dc.totalCost}function $mt(){return Date.now()-dc.startTime}function qmt(){return dc.totalAPIDuration}function Gmt(e){dc.currentContextTokens=e}function zmt(){return dc.currentContextTokens}ke();He();He();var FIe="2.4.
|
|
759
|
+
Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var HZ=null,MIe=!1;function Jen(){HZ=null,MIe=!1}pr.on("proxy:changed",Jen);function Zen(){if(MIe)return HZ;if(MIe=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(HZ=new Fmt.ProxyAgent({uri:e}),Jt(`[proxy] using proxy: ${e}`)),HZ}function Xen(){let e=Zen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function qZ(e){let t=e||process.env.API_TYPE,r=Xen();switch(t){case"openai":return Yen(r);case"openai-responses":return Ven(r);case"gemini":return Wen(r);default:return Ken(r)}}ph();var ntn=X(he(),1);function Umt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=etn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function etn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ttn(t)?0:rtn(t)?2:1}function ttn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function rtn(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function u_(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function WC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function GZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function zZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function jZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function LIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Hmt(){return dc.totalCost}function $mt(){return Date.now()-dc.startTime}function qmt(){return dc.totalAPIDuration}function Gmt(e){dc.currentContextTokens=e}function zmt(){return dc.currentContextTokens}ke();He();He();var FIe="2.4.20";globalThis.MACRO={VERSION:FIe,PACKAGE_URL:`@dahawa/${Ki}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var YZ=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${FIe} (${process.env.USER_TYPE})`;import{randomUUID as _y}from"crypto";us();ke();Kt();_r();ke();He();import{existsSync as g_,readdirSync as Tin,statSync as vin}from"fs";import{join as ZC,relative as xin}from"path";import{homedir as Aht}from"os";import{platform as win}from"process";import{readFile as XC}from"fs/promises";_r();Fg();or();import{join as ltn,sep as ctn}from"path";function Am(){if(!gm())return!1;try{let e=ut();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Yf(){return(ltn(Be(),".hcode","team-memory")+ctn).normalize("NFC")}function f_(e){let t=e.normalize("NFC"),r=Yf();return t.startsWith(r)}var hht=X(K5(),1);Qi();var fht=X(K5(),1);_r();He();ke();Iu();import{readFile as uht}from"fs/promises";import{existsSync as rTe,readdirSync as bin,statSync as Cin}from"fs";import{join as nTe,relative as pht}from"path";import{homedir as Sin}from"os";function dht(e){try{let t=(0,fht.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return ve(t),{paths:[],content:e.trim()}}}function Iin(e,t){return t.length===0?!0:t.some(r=>{try{return ac(e,r,{matchBase:!0,dot:!0})}catch(n){return ve(n),!1}})}function iTe(e){let t=[];try{if(!rTe(e))return t;let r=bin(e);for(let n of r){let i=nTe(e,n),o=Cin(i);o.isDirectory()?t.push(...iTe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function mht(){let e=[];try{let t=nTe(Sin(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){ve(i)}}}catch(t){ve(t)}try{let t=nTe(Be(),Xr,"rules");if(rTe(t)){let r=iTe(t);for(let n of r)try{let i=await uht(n,"utf-8"),{paths:o,content:s}=dht(i);o.length>0&&e.push({filePath:pht(Be(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function ght(e,t){e=vV(e);let r=vV(Be()),n=e.startsWith(r)?pht(r,e):e;return t.filter(i=>Iin(n,i.paths))}var Din=`# hawaCodeMd
|
|
760
760
|
Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function Rin(e="default"){let r=Je.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(i=>{let o=i.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${i.filePath} (${o}):
|
|
761
761
|
|
|
762
762
|
${i.content}`}).join(`
|
|
@@ -1128,7 +1128,7 @@ You are powered by the model ${e}.`}async function ex(){return J5()?`gitStatus:
|
|
|
1128
1128
|
<context name="${c}">${u}</context>`;let s=i.map(c=>{let u=c.prompt({},t),f=JSON.stringify("inputJSONSchema"in c&&c.inputJSONSchema?c.inputJSONSchema:r0(c.inputSchema));return{name:c.name,description:`${u}
|
|
1129
1129
|
|
|
1130
1130
|
Schema:
|
|
1131
|
-
${f}`}}),{messages:a}=t,l=tcn(o);return rcn(o,l,s,a)}},pyt=ncn;$g();var Qu=X(he(),1),mO=X(he(),1);ke();ke();import{existsSync as icn,readdirSync as ocn,statSync as scn}from"fs";import{join as acn}from"path";function lcn(){let e=Ji.plan();if(!icn(e))return[];try{return ocn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=acn(e,r),i=scn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var myt=({onSelect:e})=>{let[t,r]=(0,mO.useState)([]),[n,i]=(0,mO.useState)(0),[o,s]=(0,mO.useState)(!1);(0,mO.useEffect)(()=>{let c=lcn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];vr((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Le();return o?Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return Qu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Qu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Qu.createElement(v,{color:f?l.claude:l.text}," "),Qu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Qu.createElement(v,{dimColor:!0}," ","(",Kge(c.modified),")"))}),Qu.createElement(N,{marginTop:1,marginLeft:2},Qu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(v,null,"Loading plan history..."))};var gyt=X(he(),1),ccn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return Ti.isPlanMode()?(e("Already in plan mode."),null):gyt.createElement(myt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?Ti.setCurrentPlanFilePath(t):Ti.generatePlanFilePath(),Ti.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},Ayt=ccn;$g();var ucn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return Ti.isAutoMode()?"Already in auto mode.":(Ti.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},hyt=ucn;_r();import{resolve as dcn}from"path";var fcn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Be(),n=dcn(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Eyt=fcn;var WCt=X(he(),1);var Hn=X(he(),1);var Gcn=X(he(),1);var k9=X(he(),1),Hcn=X(Cyt(),1);var Syt={info:"blue",success:"green",error:"red",warning:"yellow"},vcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:Syt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Syt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Pr.info),e==="success"&&(t=Pr.tick),e==="error"&&(t=Pr.cross),e==="warning"&&(t=Pr.warning),{icon:t}}},Iyt=vcn;var xcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Tyt=xcn;var wcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},vyt=wcn;var Dcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},xyt=Dcn;var Rcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},wyt=Rcn;var Ncn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Pr.square,remainingCharacter:Pr.squareLightShade})},Dyt=Ncn;var Bcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Ryt=Bcn;var Ocn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Nyt=Ocn;var kcn={success:"green",error:"red",warning:"yellow",info:"blue"},Mcn={success:Pr.tick,error:Pr.cross,warning:Pr.warning,info:Pr.info},Qcn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:kcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Mcn[e]})},Byt=Qcn;var Pcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Pr.line})},Oyt=Pcn;var Lcn={styles:{value:()=>({})}},kyt=Lcn;var Fcn={styles:{value:()=>({})}},Myt=Fcn;var Ucn={styles:{value:()=>({})}},Qyt=Ucn;var $cn={components:{Alert:Iyt,Badge:Tyt,ConfirmInput:vyt,MultiSelect:xyt,OrderedList:wyt,ProgressBar:Dyt,Select:Ryt,Spinner:Nyt,StatusMessage:Byt,UnorderedList:Oyt,TextInput:kyt,EmailInput:Myt,PasswordInput:Qyt}},qcn=(0,k9.createContext)($cn);var po=e=>(0,k9.useContext)(qcn).components[e];var zcn=X(he(),1);var I_=X(he(),1);var AO=X(he(),1);var Pyt=X(he(),1);var M9=Pr.line;var cee=(0,Pyt.createContext)({marker:M9});function Lyt({children:e}){let{marker:t}=(0,AO.useContext)(cee),{styles:r}=po("UnorderedList");return AO.default.createElement(N,{...r.listItem()},AO.default.createElement(v,{...r.marker()},t),AO.default.createElement(N,{...r.content()},e))}var Fyt=X(he(),1),$ve=(0,Fyt.createContext)({depth:0});function jcn({children:e}){let{depth:t}=(0,I_.useContext)($ve),{styles:r,config:n}=po("UnorderedList"),i=(0,I_.useMemo)(()=>({depth:t+1}),[t]),o=(0,I_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??M9}:{marker:M9}},[n,t]);return I_.default.createElement($ve.Provider,{value:i},I_.default.createElement(cee.Provider,{value:o},I_.default.createElement(N,{...r.list()},e)))}jcn.Item=Lyt;var Vcn=X(he(),1);var Ycn=X(he(),1);var Q9=X(he(),1);var hO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Uyt=X(he(),1);var EO=X(he(),1);var P9=X(he(),1);function Hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return P9.default.createElement(N,{...n.option({isFocused:e})},e&&P9.default.createElement(v,{...n.focusIndicator()},Pr.pointer),P9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&P9.default.createElement(v,{...n.selectedIndicator()},Pr.tick))}var Cm=X(he(),1);import{isDeepStrictEqual as Wcn}from"node:util";var Kcn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},$yt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new hO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},qyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Cm.useReducer)(Kcn,{visibleOptionCount:e,defaultValue:r,options:t},$yt),[s,a]=(0,Cm.useState)(t);t!==s&&!Wcn(t,s)&&(o({type:"reset",state:$yt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Cm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Cm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Cm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Cm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Cm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Gyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function _O({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=qyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Gyt({isDisabled:e,state:s});let{styles:a}=po("Select");return EO.default.createElement(N,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=EO.default.createElement(EO.default.Fragment,null,l.label.slice(0,u),EO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return EO.default.createElement(Hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Jcn=X(he(),1);var zyt=X(he(),1);var Xcn=X(he(),1);var uee=X(he(),1);var Zcn=X(he(),1);var H2i=ar.inverse(" ");var Yg=X(he(),1);var yO=X(he(),1);var jyt=X(he(),1);var dee=(0,jyt.createContext)({marker:Pr.line});function fee({children:e}){let{marker:t}=(0,yO.useContext)(dee),{styles:r}=po("OrderedList");return yO.default.createElement(N,{...r.listItem()},yO.default.createElement(v,{...r.marker()},t),yO.default.createElement(N,{...r.content()},e))}var Yyt=X(he(),1),qve=(0,Yyt.createContext)({marker:""});function Vg({children:e}){let{marker:t}=(0,Yg.useContext)(qve),{styles:r}=po("OrderedList"),n=0;for(let o of Yg.default.Children.toArray(e))!(0,Yg.isValidElement)(o)||o.type!==fee||n++;let i=String(n).length;return Yg.default.createElement(N,{...r.list()},Yg.default.Children.map(e,(o,s)=>{if(!(0,Yg.isValidElement)(o)||o.type!==fee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Yg.default.createElement(qve.Provider,{value:{marker:l}},Yg.default.createElement(dee.Provider,{value:{marker:l}},o))}))}Vg.Item=fee;var tun=X(he(),1);var Gve=X(he(),1);var eun=X(he(),1);var AOi=ar.inverse(" ");var run=X(he(),1);var nun=X(he(),1);var oun=X(he(),1);var pee=X(he(),1);var iun=X(he(),1);var UOi=ar.inverse(" ");var $i=X(he(),1);var zve=X(he(),1),jve=X(he(),1);X5();us();Qi();$v();or();var Vyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function tx(){let e=[...Vyt,...[...Vyt].reverse()],{frame:t}=hR({interval:120});return zve.createElement(N,{flexWrap:"nowrap",height:1,width:2},zve.createElement(v,{color:Le().claude},e[t%e.length]))}var Aee=X(he(),1);var gee=null,T_=null,mee=new Set;function Vve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Lpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Yve(){T_&&(gee=Vve(T_),mee.forEach(e=>e(gee)))}function sun(e,t){return T_!==e&&(T_&&T_.off("resize",Yve),T_=e,gee=Vve(e),e.on("resize",Yve)),mee.add(t),()=>{mee.delete(t),mee.size===0&&T_&&(T_.off("resize",Yve),T_=null,gee=null)}}function Wve(){let{stdout:e}=AR(),[t,r]=(0,Aee.useState)(()=>Vve(e));return(0,Aee.useEffect)(()=>sun(e,r),[e]),t}function bO(){return Wve()}He();Tf();ke();lh();ke();var DMi=X(Axe(),1);import{homedir as j9}from"os";import{join as IO}from"path";import{existsSync as Y9,mkdirSync as PCt,appendFileSync as QCt,readFileSync as LCt,constants as npn,writeFileSync as ipn,unlinkSync as FCt,statSync as opn}from"fs";import{platform as UCt}from"process";import{accessSync as spn}from"fs";var rpn="2.4.19",z9={VERSION:rpn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var nx=IO(L0,".update.lock"),apn=300*1e3;function HCt(){try{if(Y9(L0)||PCt(L0,{recursive:!0}),Y9(nx)){let e=opn(nx);if(Date.now()-e.mtimeMs<apn)return!1;try{FCt(nx)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return ipn(nx,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function $Ct(){try{Y9(nx)&&LCt(nx,"utf8")===`${process.pid}`&&FCt(nx)}catch(e){ve(`Failed to release lock: ${e}`)}}async function hxe(){try{let e=await si("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{spn(t,npn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function qCt(e){if(!HCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:z9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{Y9(e)||PCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
|
|
1131
|
+
${f}`}}),{messages:a}=t,l=tcn(o);return rcn(o,l,s,a)}},pyt=ncn;$g();var Qu=X(he(),1),mO=X(he(),1);ke();ke();import{existsSync as icn,readdirSync as ocn,statSync as scn}from"fs";import{join as acn}from"path";function lcn(){let e=Ji.plan();if(!icn(e))return[];try{return ocn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=acn(e,r),i=scn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var myt=({onSelect:e})=>{let[t,r]=(0,mO.useState)([]),[n,i]=(0,mO.useState)(0),[o,s]=(0,mO.useState)(!1);(0,mO.useEffect)(()=>{let c=lcn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];vr((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Le();return o?Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),Qu.createElement(N,{marginBottom:1},Qu.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return Qu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Qu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Qu.createElement(v,{color:f?l.claude:l.text}," "),Qu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Qu.createElement(v,{dimColor:!0}," ","(",Kge(c.modified),")"))}),Qu.createElement(N,{marginTop:1,marginLeft:2},Qu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Qu.createElement(N,{flexDirection:"column",marginY:1},Qu.createElement(v,null,"Loading plan history..."))};var gyt=X(he(),1),ccn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return Ti.isPlanMode()?(e("Already in plan mode."),null):gyt.createElement(myt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?Ti.setCurrentPlanFilePath(t):Ti.generatePlanFilePath(),Ti.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},Ayt=ccn;$g();var ucn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return Ti.isAutoMode()?"Already in auto mode.":(Ti.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},hyt=ucn;_r();import{resolve as dcn}from"path";var fcn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Be(),n=dcn(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Eyt=fcn;var WCt=X(he(),1);var Hn=X(he(),1);var Gcn=X(he(),1);var k9=X(he(),1),Hcn=X(Cyt(),1);var Syt={info:"blue",success:"green",error:"red",warning:"yellow"},vcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:Syt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Syt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Pr.info),e==="success"&&(t=Pr.tick),e==="error"&&(t=Pr.cross),e==="warning"&&(t=Pr.warning),{icon:t}}},Iyt=vcn;var xcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Tyt=xcn;var wcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},vyt=wcn;var Dcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},xyt=Dcn;var Rcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},wyt=Rcn;var Ncn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Pr.square,remainingCharacter:Pr.squareLightShade})},Dyt=Ncn;var Bcn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Ryt=Bcn;var Ocn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Nyt=Ocn;var kcn={success:"green",error:"red",warning:"yellow",info:"blue"},Mcn={success:Pr.tick,error:Pr.cross,warning:Pr.warning,info:Pr.info},Qcn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:kcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Mcn[e]})},Byt=Qcn;var Pcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Pr.line})},Oyt=Pcn;var Lcn={styles:{value:()=>({})}},kyt=Lcn;var Fcn={styles:{value:()=>({})}},Myt=Fcn;var Ucn={styles:{value:()=>({})}},Qyt=Ucn;var $cn={components:{Alert:Iyt,Badge:Tyt,ConfirmInput:vyt,MultiSelect:xyt,OrderedList:wyt,ProgressBar:Dyt,Select:Ryt,Spinner:Nyt,StatusMessage:Byt,UnorderedList:Oyt,TextInput:kyt,EmailInput:Myt,PasswordInput:Qyt}},qcn=(0,k9.createContext)($cn);var po=e=>(0,k9.useContext)(qcn).components[e];var zcn=X(he(),1);var I_=X(he(),1);var AO=X(he(),1);var Pyt=X(he(),1);var M9=Pr.line;var cee=(0,Pyt.createContext)({marker:M9});function Lyt({children:e}){let{marker:t}=(0,AO.useContext)(cee),{styles:r}=po("UnorderedList");return AO.default.createElement(N,{...r.listItem()},AO.default.createElement(v,{...r.marker()},t),AO.default.createElement(N,{...r.content()},e))}var Fyt=X(he(),1),$ve=(0,Fyt.createContext)({depth:0});function jcn({children:e}){let{depth:t}=(0,I_.useContext)($ve),{styles:r,config:n}=po("UnorderedList"),i=(0,I_.useMemo)(()=>({depth:t+1}),[t]),o=(0,I_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??M9}:{marker:M9}},[n,t]);return I_.default.createElement($ve.Provider,{value:i},I_.default.createElement(cee.Provider,{value:o},I_.default.createElement(N,{...r.list()},e)))}jcn.Item=Lyt;var Vcn=X(he(),1);var Ycn=X(he(),1);var Q9=X(he(),1);var hO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Uyt=X(he(),1);var EO=X(he(),1);var P9=X(he(),1);function Hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return P9.default.createElement(N,{...n.option({isFocused:e})},e&&P9.default.createElement(v,{...n.focusIndicator()},Pr.pointer),P9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&P9.default.createElement(v,{...n.selectedIndicator()},Pr.tick))}var Cm=X(he(),1);import{isDeepStrictEqual as Wcn}from"node:util";var Kcn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},$yt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new hO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},qyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Cm.useReducer)(Kcn,{visibleOptionCount:e,defaultValue:r,options:t},$yt),[s,a]=(0,Cm.useState)(t);t!==s&&!Wcn(t,s)&&(o({type:"reset",state:$yt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Cm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Cm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Cm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Cm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Cm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Gyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function _O({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=qyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Gyt({isDisabled:e,state:s});let{styles:a}=po("Select");return EO.default.createElement(N,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=EO.default.createElement(EO.default.Fragment,null,l.label.slice(0,u),EO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return EO.default.createElement(Hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Jcn=X(he(),1);var zyt=X(he(),1);var Xcn=X(he(),1);var uee=X(he(),1);var Zcn=X(he(),1);var H2i=ar.inverse(" ");var Yg=X(he(),1);var yO=X(he(),1);var jyt=X(he(),1);var dee=(0,jyt.createContext)({marker:Pr.line});function fee({children:e}){let{marker:t}=(0,yO.useContext)(dee),{styles:r}=po("OrderedList");return yO.default.createElement(N,{...r.listItem()},yO.default.createElement(v,{...r.marker()},t),yO.default.createElement(N,{...r.content()},e))}var Yyt=X(he(),1),qve=(0,Yyt.createContext)({marker:""});function Vg({children:e}){let{marker:t}=(0,Yg.useContext)(qve),{styles:r}=po("OrderedList"),n=0;for(let o of Yg.default.Children.toArray(e))!(0,Yg.isValidElement)(o)||o.type!==fee||n++;let i=String(n).length;return Yg.default.createElement(N,{...r.list()},Yg.default.Children.map(e,(o,s)=>{if(!(0,Yg.isValidElement)(o)||o.type!==fee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Yg.default.createElement(qve.Provider,{value:{marker:l}},Yg.default.createElement(dee.Provider,{value:{marker:l}},o))}))}Vg.Item=fee;var tun=X(he(),1);var Gve=X(he(),1);var eun=X(he(),1);var AOi=ar.inverse(" ");var run=X(he(),1);var nun=X(he(),1);var oun=X(he(),1);var pee=X(he(),1);var iun=X(he(),1);var UOi=ar.inverse(" ");var $i=X(he(),1);var zve=X(he(),1),jve=X(he(),1);X5();us();Qi();$v();or();var Vyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function tx(){let e=[...Vyt,...[...Vyt].reverse()],{frame:t}=hR({interval:120});return zve.createElement(N,{flexWrap:"nowrap",height:1,width:2},zve.createElement(v,{color:Le().claude},e[t%e.length]))}var Aee=X(he(),1);var gee=null,T_=null,mee=new Set;function Vve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Lpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Yve(){T_&&(gee=Vve(T_),mee.forEach(e=>e(gee)))}function sun(e,t){return T_!==e&&(T_&&T_.off("resize",Yve),T_=e,gee=Vve(e),e.on("resize",Yve)),mee.add(t),()=>{mee.delete(t),mee.size===0&&T_&&(T_.off("resize",Yve),T_=null,gee=null)}}function Wve(){let{stdout:e}=AR(),[t,r]=(0,Aee.useState)(()=>Vve(e));return(0,Aee.useEffect)(()=>sun(e,r),[e]),t}function bO(){return Wve()}He();Tf();ke();lh();ke();var DMi=X(Axe(),1);import{homedir as j9}from"os";import{join as IO}from"path";import{existsSync as Y9,mkdirSync as PCt,appendFileSync as QCt,readFileSync as LCt,constants as npn,writeFileSync as ipn,unlinkSync as FCt,statSync as opn}from"fs";import{platform as UCt}from"process";import{accessSync as spn}from"fs";var rpn="2.4.20",z9={VERSION:rpn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var nx=IO(L0,".update.lock"),apn=300*1e3;function HCt(){try{if(Y9(L0)||PCt(L0,{recursive:!0}),Y9(nx)){let e=opn(nx);if(Date.now()-e.mtimeMs<apn)return!1;try{FCt(nx)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return ipn(nx,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function $Ct(){try{Y9(nx)&&LCt(nx,"utf8")===`${process.pid}`&&FCt(nx)}catch(e){ve(`Failed to release lock: ${e}`)}}async function hxe(){try{let e=await si("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{spn(t,npn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function qCt(e){if(!HCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:z9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{Y9(e)||PCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
|
|
1132
1132
|
# npm global path
|
|
1133
1133
|
export PATH="${e}/bin:$PATH"
|
|
1134
1134
|
`;if(UCt==="win32"){let n=await si(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[IO(j9(),".bashrc"),IO(j9(),".bash_profile"),IO(j9(),".zshrc"),IO(j9(),".config","fish","config.fish")];for(let i of n)if(Y9(i))try{if(!LCt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
|
|
@@ -3349,7 +3349,7 @@ async () => {
|
|
|
3349
3349
|
`).replace(/\n+/g,"\\n").trim(),l=s.length>0?s.join(" "):"(no methods available)";return`- ${o}:${a??""}
|
|
3350
3350
|
- ${l}`}).join(`
|
|
3351
3351
|
`)}async function pzt(){return y9n.replace("{{providers}}",await b9n())}async function C9n(e){let t=[];for(let r of e){if("error"in r)continue;let n={};try{let{tools:i}=await r.client.listTools();for(let o of i)n[o.name]=async s=>fzt(r.client,o.name,s)}catch(i){console.warn(`Failed to list tools for codemode client ${r.name}:`,i);continue}t.push({name:r.name,fns:n})}return t}function mzt(){let e=new nse;return{name:"codemode",inputSchema:_9n,inputJSONSchema:{type:"object",properties:{code:{type:"string",description:"JavaScript async arrow function to execute"}},required:["code"]},async description(t){return t?.code?"Execute JavaScript code":pzt()},async prompt(){return pzt()},userFacingName(){return"codemode"},async isEnabled(){return!0},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(t){return!t.code||typeof t.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(t){return t.error?`Error: ${t.error}`:GLe(t.result)},renderToolUseMessage(t){return t.code.split(`
|
|
3352
|
-
`)[0]??"codemode"},renderToolResultMessage(t){let r=ezt(t.result);return x1.createElement(N,{flexDirection:"column"},t.error?x1.createElement(N,{flexDirection:"row",key:"error"},x1.createElement(v,null," \u23BF "),x1.createElement(v,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,x1.createElement(N,{flexDirection:"row",key:"result"},x1.createElement(v,null," \u23BF "),x1.createElement(v,{key:"result-text"},r)))},async*call(t,r,n){let i=r??{abortController:new AbortController,readFileTimestamps:{}},o=j6(),s=Object.keys(o),[a,l]=await Promise.all([use(),dse().catch(()=>[])]),c=await C9n(a),u=YLe(),f={search:async m=>czt(m,l,u,s),describe:async m=>dzt(m,l,u),saveSnippet:async(m,A,E)=>{let _={name:m,description:E,code:A,savedAt:Date.now(),connectors:s};return azt(_),{saved:!0,name:m}}},g=await e.execute(ozt(t.code),c,f);yield{type:"result",data:g,resultForAssistant:g.error?`Error: ${g.error}`:GLe(g.result)}}}}var S9n=k.object({code:k.string().describe("JavaScript async arrow function to execute")}),KM=mzt(),gzt={...KM,name:"codemode",inputSchema:S9n,async description(e){return KM.description(e)},async prompt(){return KM.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await dse()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:KM.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return KM.renderToolResultMessage(e)},async*call(e,t,r){yield*KM.call(e,t,r)}};var JM=X(he(),1);Qr();Kt();mP();He();var Azt=ec,hzt="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",Ezt=`\u5F53\u524D\u5904\u4E8E\u4EE3\u7406\uFF08Proxy\uFF09\u6A21\u5F0F\uFF0C\
|
|
3352
|
+
`)[0]??"codemode"},renderToolResultMessage(t){let r=ezt(t.result);return x1.createElement(N,{flexDirection:"column"},t.error?x1.createElement(N,{flexDirection:"row",key:"error"},x1.createElement(v,null," \u23BF "),x1.createElement(v,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,x1.createElement(N,{flexDirection:"row",key:"result"},x1.createElement(v,null," \u23BF "),x1.createElement(v,{key:"result-text"},r)))},async*call(t,r,n){let i=r??{abortController:new AbortController,readFileTimestamps:{}},o=j6(),s=Object.keys(o),[a,l]=await Promise.all([use(),dse().catch(()=>[])]),c=await C9n(a),u=YLe(),f={search:async m=>czt(m,l,u,s),describe:async m=>dzt(m,l,u),saveSnippet:async(m,A,E)=>{let _={name:m,description:E,code:A,savedAt:Date.now(),connectors:s};return azt(_),{saved:!0,name:m}}},g=await e.execute(ozt(t.code),c,f);yield{type:"result",data:g,resultForAssistant:g.error?`Error: ${g.error}`:GLe(g.result)}}}}var S9n=k.object({code:k.string().describe("JavaScript async arrow function to execute")}),KM=mzt(),gzt={...KM,name:"codemode",inputSchema:S9n,async description(e){return KM.description(e)},async prompt(){return KM.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await dse()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:KM.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return KM.renderToolResultMessage(e)},async*call(e,t,r){yield*KM.call(e,t,r)}};var JM=X(he(),1);Qr();Kt();mP();He();var Azt=ec,hzt="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",Ezt=`\u5F53\u524D\u5904\u4E8E\u4EE3\u7406\uFF08Proxy\uFF09\u6A21\u5F0F\uFF0C <available_tools> \u4E2D\u5DE5\u5177\u5FC5\u987B\u901A\u8FC7 ${ec} \u4EE3\u7406\u8C03\u7528\u3002<available_tools> \u4E2D\u7684\u5DE5\u5177\u4E0D\u80FD\u76F4\u63A5\u8C03\u7528\u3002
|
|
3353
3353
|
|
|
3354
3354
|
## \u4F7F\u7528\u6D41\u7A0B
|
|
3355
3355
|
- \u82E5\u4E0D\u786E\u5B9A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u7ED3\u6784\uFF0C\u5148\u8C03\u7528 ${ec}({ action: "describe", name: "Grep" }) \u83B7\u53D6\u8BE5\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E JSON Schema\u3002
|