@dahawa/hawa-code 1.36.1 → 1.36.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/cli.js +454 -454
  2. package/hands.js +2 -2
  3. package/package.json +1 -1
package/hands.js CHANGED
@@ -752,7 +752,7 @@ data: ${JSON.stringify($)}
752
752
  [Search queries used: ${r.groundingMetadata.webSearchQueries.join(", ")}]`}));let i={id:`msg_${Math.random().toString(36).slice(2)}`,type:"message",role:"assistant",model:t.modelVersion||"gemini",content:n,stop_reason:r.finishReason?r.finishReason==="STOP"&&n.some(o=>o.type==="tool_use")?"tool_use":this.mapGeminiFinishReason(r.finishReason):"end_turn",stop_sequence:null,usage:{input_tokens:t.usageMetadata?.promptTokenCount||0,output_tokens:t.usageMetadata?.candidatesTokenCount||0}};return this.logger&&this.logger.debug({result:i},"Conversion complete, final Anthropic response"),i}catch{throw zMr(`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"}}},ZEe=new JEe;var Elt=ie(mlt(),1);function fA(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function glt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function ozr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function szr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function azr(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 eU(e,t,r){cG(t,e),dG(t,azr(e,r),r)}function dR(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 vCe(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 hlt=["/v1/messages"];function DCe(e){let t;try{typeof e=="string"?t=new ST(e):e instanceof ST?t=e:t=new ST(e.url)}catch{return""}let r=t.pathname;for(let n of hlt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function SK(e,t){let r=typeof e=="string"?e:e instanceof ST?e.toString():e.url,n;try{n=new ST(r).pathname}catch{return!1}return hlt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function uzr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await TV.transformRequestOut(n),o=DCe(t)+"/chat/completions",s=fA(r.headers),a=s.authorization??s.Authorization??"";ozr(i,glt(s));let u=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i)});if(!u.ok){let _=await u.text();return le(`OpenAI Chat Completions API error: ${u.status}`,{url:o,errorResponse:_}),vCe("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:fA(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 TV.transformResponseIn(C,n),T=await S.text();try{eU({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(T)}},c)}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",x)}return new Response(T,{status:S.status,statusText:S.statusText,headers:S.headers})}let A=dR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:tU(u.headers)}),g=await TV.transformResponseIn(m,n),E=dR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{eU({...f,openai:{...f.openai,response:{body:await qXe(_)}},response:{...f.response,body:await YL(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 lzr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await vV.transformRequestOut(n),o=fA(r.headers);szr(i,glt(o));let s=JSON.stringify(i),u=DCe(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});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}),vCe("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:fA(c.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await c.text(),T=new Response(S,{status:c.status,statusText:c.statusText,headers:tU(c.headers)}),x=await vV.transformResponseIn(T,n),O=await x.text();try{eU({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},A,"responses")}catch(q){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",q)}return new Response(O,{status:x.status,statusText:x.statusText,headers:x.headers})}let g=dR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:tU(c.headers)}),_=await vV.transformResponseIn(E,n),C=dR(_.body);return Promise.all([g.done,C.done]).then(async([S,T])=>{try{eU({...m,openai:{...m.openai,response:{body:await HXe(S)}},response:{...m.response,body:await YL(T)}},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 czr(e){return async(t,r)=>{if(!SK(t,r))return e(t,r);let n=JSON.parse(r.body),i=fA(r.headers),o=await ZEe.transformRequestOut(n),s=JSON.stringify(o),a=DCe(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})}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}),vCe("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:fA(r.headers),body:n},response:{status:l.status,statusText:l.statusText,headers:fA(l.headers)},openai:{request:{body:o},response:{}}},m=dR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:tU(l.headers)}),E=await ZEe.transformResponseIn(g),_=dR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let T=c?GXe(C):JSON.parse(C),x=c?await YL(S):JSON.parse(S);eU({...A,openai:{...A.openai,response:{body:T}},response:{...A.response,body:x}},f)}catch(T){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+T?.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 dzr(e){return async(t,r)=>{if(!SK(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=fA(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});if(!a.ok){let f=await a.text();le(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof ST?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 ST?t.toString():t.url,method:r.method,headers:fA(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:fA(a.headers)}};return(async()=>{if(l){let m=await a.text();c.response.body=await YL(m)}else c.response.body=await a.json();let A=fA(r.headers)["x-agent-id"];cG(A,c),dG(A,{request:c.request.body.messages,response:c.response.body.content})})().catch(f=>le(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
753
753
  Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var TCe=null,Alt=!1;function fzr(){if(Alt)return TCe;Alt=!0;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(TCe=new Elt.ProxyAgent({uri:e}),qt(`[proxy] using proxy: ${e}`)),TCe}function pzr(){let e=fzr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function IK(e){let t=e||process.env.API_TYPE,r=pzr();switch(t){case"openai":return uzr(r);case"openai-responses":return lzr(r);case"gemini":return czr(r);default:return dzr(r)}}var hzr=ie(Ce(),1);function _lt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=mzr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function mzr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Azr(t)?0:gzr(t)?2:1}function Azr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function gzr(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 pA(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 eC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Ue();_d();var S0={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0};function TK(e,t){S0.totalCost+=e,S0.totalAPIDuration+=t}function vK(e,t){S0.inputTokens+=e,S0.outputTokens+=t,Ci.emit("token:change",{inputTokens:S0.inputTokens,outputTokens:S0.outputTokens})}function Ezr(){return Date.now()-S0.startTime}function _zr(e){return`$${e>.5?yzr(e,100).toFixed(2):e.toFixed(4)}`}function ylt(){return _r.grey(`Total cost: ${_zr(S0.totalCost)}
754
754
  Total duration (API): ${pA(S0.totalAPIDuration)}
755
- Total duration (wall): ${pA(Ezr())}`)}function yzr(e,t){return Math.round(e*t)/t}Ue();He();He();var wCe="1.36.1";globalThis.MACRO={VERSION:wCe,PACKAGE_URL:`@dahawa/${Ao}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var DK=process.env.HAWA_CODE_USER_AGENT||`${Ao}/${wCe} (${process.env.USER_TYPE})`;import{randomUUID as Ek}from"crypto";var bzr=()=>[],Czr=()=>{};function xK(){return bzr}function blt(){return Czr}Ue();ir();Br();Ue();He();import{existsSync as D0,readdirSync as $Vr,statSync as zVr}from"fs";import{join as nC,relative as YVr}from"path";import{homedir as Ydt}from"os";import{platform as jVr}from"process";import{readFile as iC}from"fs/promises";Br();I0();kr();import{join as Dzr,sep as xzr}from"path";function qp(){if(!Hp())return!1;try{let e=yr();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Tf(){return(Dzr(Fe(),".hcode","team-memory")+xzr).normalize("NFC")}function NCe(e){let t=e.normalize("NFC"),r=Tf();return t.startsWith(r)}var jdt=ie(HK(),1);qi();var qdt=ie(HK(),1);Br();He();Ue();od();import{readFile as Udt}from"fs/promises";import{existsSync as VCe,readdirSync as UVr,statSync as HVr}from"fs";import{join as WCe,relative as Gdt}from"path";import{homedir as qVr}from"os";function Hdt(e){try{let t=(0,qdt.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 we(t),{paths:[],content:e.trim()}}}function GVr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return we(n),!1}})}function KCe(e){let t=[];try{if(!VCe(e))return t;let r=UVr(e);for(let n of r){let i=WCe(e,n),o=HVr(i);o.isDirectory()?t.push(...KCe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){we(r)}return t}async function $dt(){let e=[];try{let t=WCe(qVr(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){we(i)}}}catch(t){we(t)}try{let t=WCe(Fe(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:Gdt(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){we(i)}}}catch(t){we(t)}return e}function zdt(e,t){e=aY(e);let r=aY(Fe()),n=e.startsWith(r)?Gdt(r,e):e;return t.filter(i=>GVr(n,i.paths))}var VVr=`# hawaCodeMd
755
+ Total duration (wall): ${pA(Ezr())}`)}function yzr(e,t){return Math.round(e*t)/t}Ue();He();He();var wCe="1.36.2";globalThis.MACRO={VERSION:wCe,PACKAGE_URL:`@dahawa/${Ao}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var DK=process.env.HAWA_CODE_USER_AGENT||`${Ao}/${wCe} (${process.env.USER_TYPE})`;import{randomUUID as Ek}from"crypto";var bzr=()=>[],Czr=()=>{};function xK(){return bzr}function blt(){return Czr}Ue();ir();Br();Ue();He();import{existsSync as D0,readdirSync as $Vr,statSync as zVr}from"fs";import{join as nC,relative as YVr}from"path";import{homedir as Ydt}from"os";import{platform as jVr}from"process";import{readFile as iC}from"fs/promises";Br();I0();kr();import{join as Dzr,sep as xzr}from"path";function qp(){if(!Hp())return!1;try{let e=yr();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Tf(){return(Dzr(Fe(),".hcode","team-memory")+xzr).normalize("NFC")}function NCe(e){let t=e.normalize("NFC"),r=Tf();return t.startsWith(r)}var jdt=ie(HK(),1);qi();var qdt=ie(HK(),1);Br();He();Ue();od();import{readFile as Udt}from"fs/promises";import{existsSync as VCe,readdirSync as UVr,statSync as HVr}from"fs";import{join as WCe,relative as Gdt}from"path";import{homedir as qVr}from"os";function Hdt(e){try{let t=(0,qdt.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 we(t),{paths:[],content:e.trim()}}}function GVr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return we(n),!1}})}function KCe(e){let t=[];try{if(!VCe(e))return t;let r=UVr(e);for(let n of r){let i=WCe(e,n),o=HVr(i);o.isDirectory()?t.push(...KCe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){we(r)}return t}async function $dt(){let e=[];try{let t=WCe(qVr(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){we(i)}}}catch(t){we(t)}try{let t=WCe(Fe(),dn,"rules");if(VCe(t)){let r=KCe(t);for(let n of r)try{let i=await Udt(n,"utf-8"),{paths:o,content:s}=Hdt(i);o.length>0&&e.push({filePath:Gdt(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){we(i)}}}catch(t){we(t)}return e}function zdt(e,t){e=aY(e);let r=aY(Fe()),n=e.startsWith(r)?Gdt(r,e):e;return t.filter(i=>GVr(n,i.paths))}var VVr=`# hawaCodeMd
756
756
  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 WVr(e="default"){let r=Ye.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}):
757
757
 
758
758
  ${i.content}`}).join(`
@@ -1015,7 +1015,7 @@ try {
1015
1015
  `],{encoding:"utf8",maxBuffer:SAt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function $Zr(){try{let e=HU("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var zZr="[Image pasted]";function DAt(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function wAt({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=_,T=C,x=UU.fromText(e,m,S),[O,q]=(0,xAt.useState)(null);function $(){O&&(clearTimeout(O),q(null),o?.(!1))}let H=qT(ce=>{$(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),L=qT(ce=>{$(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function Y(){return UU.fromText("",m,0)}let z=qT(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function fe(){return $(),x.text===""?(z(),x):x.del()}function me(){if(l)return x;let ce=vAt();return ce===null?(TAt()&&(o?.(!0,IAt),$(),q(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(zZr))}let M=DAt([["a",()=>x.startOfLine()],["b",()=>x.left()],["c",H],["d",fe],["e",()=>x.endOfLine()],["f",()=>x.right()],["h",()=>($(),x.backspace())],["k",()=>x.deleteToLineEnd()],["l",()=>Y()],["n",()=>ee()],["p",()=>ae()],["u",()=>x.deleteToLineStart()],["v",me],["w",()=>x.deleteWordBefore()],["o",me]]),ue=DAt([["b",()=>x.prevWord()],["f",()=>x.nextWord()],["d",()=>x.deleteWordAfter()]]);function Ae(ce){if(c&&x.offset>0&&x.text[x.offset-1]==="\\")return x.backspace().insert(`
1016
1016
  `);if(ce.meta)return x.insert(`
1017
1017
  `);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 ve(ce,Ge){if(Ge.tab)return;if(Ge.backspace||Ge.delete||ce==="\b"||ce==="\x7F"||ce==="\b"){let K=x.backspace();x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}if(!Ge.ctrl&&!Ge.meta&&ce.length>1){let K=x.insert(ce);x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}let Ee=Se(Ge)(ce);Ee&&(x.equals(Ee)||(T(Ee.offset),x.text!==Ee.text&&t(Ee.text)))}function Se(ce){if(ce.backspace||ce.delete)return $(),()=>x.backspace();switch(!0){case ce.escape:return L;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 M;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()=>Ae(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(Ge){switch(!0){case(Ge=="\x1B[H"||Ge=="\x1B[1~"):return x.startOfLine();case(Ge=="\x1B[F"||Ge=="\x1B[4~"):return x.endOfLine();case(Ge==="\b"||Ge==="\x7F"||Ge==="\b"):return $(),x.backspace();default:return x.insert(Ge.replace(/\r/g,`
1018
- `))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function qU({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:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=wAt({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=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(ye().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=sSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(ye().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(ye().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return sSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var aSe=ie(Ce(),1),GU=ie(Ce(),1);fU();_d();qi();UT();kr();var BAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function jT(){let e=[...BAt,...[...BAt].reverse()],[t,r]=(0,GU.useState)(0);return(0,GU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),aSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},aSe.createElement(v,{color:ye().claude},e[t]))}qi();function lC(){return Ye.getSessionContext().window_size?{...Ye.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}He();import{homedir as ZU}from"os";import{join as VR}from"path";import{existsSync as XU,mkdirSync as _ht,appendFileSync as Eht,readFileSync as yht,constants as qtn,writeFileSync as Gtn,unlinkSync as bht,statSync as $tn}from"fs";import{platform as Cht}from"process";Ue();import{accessSync as ztn}from"fs";Ue();var oyi=ie(xSe(),1);var Htn="1.36.1",JU={VERSION:Htn,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 WT=VR(vI,".update.lock"),Ytn=300*1e3;function Sht(){try{if(XU(vI)||_ht(vI,{recursive:!0}),XU(WT)){let e=$tn(WT);if(Date.now()-e.mtimeMs<Ytn)return!1;try{bht(WT)}catch(r){return we(`Failed to remove stale lock file: ${r}`),!1}}return Gtn(WT,`${process.pid}`,"utf8"),!0}catch(e){return we(`Failed to acquire lock: ${e}`),!1}}function Iht(){try{XU(WT)&&yht(WT,"utf8")===`${process.pid}`&&bht(WT)}catch(e){we(`Failed to release lock: ${e}`)}}async function wSe(){try{let e=await Wn("npm -g config get prefix");if(e.code!==0)return we("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{ztn(t,qtn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(we("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return we(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function Tht(e){if(!Sht())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:JU.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{XU(e)||_ht(e,{recursive:!0});let t=await Wn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1018
+ `))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function qU({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:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=wAt({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=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(ye().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=sSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(ye().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(ye().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return sSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var aSe=ie(Ce(),1),GU=ie(Ce(),1);fU();_d();qi();UT();kr();var BAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function jT(){let e=[...BAt,...[...BAt].reverse()],[t,r]=(0,GU.useState)(0);return(0,GU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),aSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},aSe.createElement(v,{color:ye().claude},e[t]))}qi();function lC(){return Ye.getSessionContext().window_size?{...Ye.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}He();import{homedir as ZU}from"os";import{join as VR}from"path";import{existsSync as XU,mkdirSync as _ht,appendFileSync as Eht,readFileSync as yht,constants as qtn,writeFileSync as Gtn,unlinkSync as bht,statSync as $tn}from"fs";import{platform as Cht}from"process";Ue();import{accessSync as ztn}from"fs";Ue();var oyi=ie(xSe(),1);var Htn="1.36.2",JU={VERSION:Htn,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 WT=VR(vI,".update.lock"),Ytn=300*1e3;function Sht(){try{if(XU(vI)||_ht(vI,{recursive:!0}),XU(WT)){let e=$tn(WT);if(Date.now()-e.mtimeMs<Ytn)return!1;try{bht(WT)}catch(r){return we(`Failed to remove stale lock file: ${r}`),!1}}return Gtn(WT,`${process.pid}`,"utf8"),!0}catch(e){return we(`Failed to acquire lock: ${e}`),!1}}function Iht(){try{XU(WT)&&yht(WT,"utf8")===`${process.pid}`&&bht(WT)}catch(e){we(`Failed to release lock: ${e}`)}}async function wSe(){try{let e=await Wn("npm -g config get prefix");if(e.code!==0)return we("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{ztn(t,qtn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(we("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return we(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function Tht(e){if(!Sht())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:JU.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{XU(e)||_ht(e,{recursive:!0});let t=await Wn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1019
1019
  # npm global path
1020
1020
  export PATH="${e}/bin:$PATH"
1021
1021
  `;if(Cht==="win32"){let n=await Wn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[VR(ZU(),".bashrc"),VR(ZU(),".bash_profile"),VR(ZU(),".zshrc"),VR(ZU(),".config","fish","config.fish")];for(let i of n)if(XU(i))try{if(!yht(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.36.1",
3
+ "version": "1.36.2",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },