@dahawa/hawa-code 2.4.2 → 2.4.3
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 +19 -19
- package/hands.js +19 -19
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -676,7 +676,7 @@ globstar while`,t,p,r,f,A),this.matchOne(t.slice(p),r.slice(f),n))return this.de
|
|
|
676
676
|
`)),WUn(e,o,{encoding:r,flush:!0})}var jHt=new gde.default({fetchMethod:e=>rFn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function tGt(e){let t=bV(e);return jHt.get(t)||jHt.fetchMethod?.(t)}async function rFn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await _2t(e,t.signal,15),n=0;for(let o of r)gB(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function rGt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var nFn=new gde.default({fetchMethod:e=>nGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function zm(e){let t=bV(e);return rGt(nFn,t,()=>nGt(t))}function nGt(e){let r=Buffer.alloc(4096),n;try{n=zHt(e,"r");let o=WHt(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&&KHt(n)}}var oFn=new gde.default({fetchMethod:e=>oGt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function gB(e){let t=bV(e);return rGt(oFn,t,()=>oGt(t))}function oGt(e,t="utf8"){try{if(!JHt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=zHt(e,"r"),i=WHt(o,n,0,4096,0);KHt(o);let s=n.toString(t,0,i),a=0,c=0;for(let l=0;l<s.length;l++)s[l]===`
|
|
677
677
|
`&&(l>0&&s[l-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return Se(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function jF(e){let t=ZHt(e)?e:bV(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 xPe(e){return e?ZHt(e)?e:bV(Be(),e):void 0}function iGt(e){try{let t=xPe(e),r=t?XUn(Be(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return X("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function hde(e){try{let t=eFn(e),r=qHt(e,VHt(e));if(!KUn(t))return;let i=JUn(t).filter(s=>qHt(s,VHt(s))===r&&tFn(t,s)!==e)[0];return i||void 0}catch(t){Se(`Error finding similar file for ${e}: ${t}`);return}}function wPe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function rw({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return wPe()?r.map((n,o)=>`${o+t} ${n}`).join(`
|
|
678
678
|
`):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
|
|
679
|
-
`)}function sGt(e){try{let t=ZUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function Zx(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function cFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function RPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,aGt.gt)(MACRO.VERSION,o))&&(i=kue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&cFn()},[s,r]),!r&&!s)return null;let a=iFn(sFn(e,Ci)),c=sGt(e),l=!a&&!c,u=OF.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===aFn()&&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 WF=F(ne(),1);var zF=F(ne(),1);var CV=F(ne(),1);function NPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return CV.default.createElement(x,{...o.option({isFocused:e})},e&&CV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),CV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&CV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Wm=F(ne(),1);import{isDeepStrictEqual as lFn}from"node:util";var IV=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:DPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var uFn=(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}}},OPe=e=>e.flatMap(t=>{if("options"in t){let r=OPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),cGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=OPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new IV(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}},BPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=OPe(t),[a,c]=(0,Wm.useReducer)(uFn,{visibleOptionCount:e,defaultValue:r,options:t},cGt),[l,u]=(0,Wm.useState)(s);s!==l&&!lFn(s,l)&&(c({type:"reset",state:cGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Wm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Wm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Wm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Wm.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Wm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Wm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Wm.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 MPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var DPe=e=>`HEADER-${e.optionValues.join(",")}`;function vC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=BPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});MPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return zF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:DPe(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=zF.default.createElement(zF.default.Fragment,null,h.slice(0,S),zF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return zF.default.createElement(NPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function lGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),WF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},WF.default.createElement(x,{marginBottom:1,flexDirection:"column"},WF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),WF.default.createElement(x,null,WF.default.createElement(vC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Lp=F(ne(),1);Ge();sr();Cy();var pFn="2.4.2",Iy={VERSION:pFn,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 LPe=46,fGt=["(\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 Ede({isDefaultModel:e=!1}){let t=Math.max(LPe,Be().length+12),r=ee(),n=fGt[Math.floor(Math.random()*fGt.length)];return Lp.createElement(x,{flexDirection:"column"},Lp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Lp.createElement(C,null,Lp.createElement(C,null,n)," Welcome to"," ",Lp.createElement(C,{bold:!0},et),Lp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Lp.createElement(Lp.Fragment,null,Lp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Lp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Lp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Lp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Lp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var ES=F(ne(),1);Re();var LJ=F(ne(),1);import{randomUUID as mS}from"crypto";$s();Re();nr();sr();Re();Ge();import{existsSync as RC,readdirSync as P4n,statSync as L4n}from"fs";import{join as sw,relative as Q4n}from"path";import{homedir as U$t}from"os";import{platform as U4n}from"process";import{readFile as aw}from"fs/promises";sr();AE();Ar();import{join as _Fn,sep as SFn}from"path";function Qp(){if(!Km())return!1;try{let e=nt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Jm(){return(_Fn(Be(),".hcode","team-memory")+SFn).normalize("NFC")}function hE(e){let t=e.normalize("NFC"),r=Jm();return t.startsWith(r)}var F$t=F(MV(),1);Xo();var k$t=F(MV(),1);sr();Ge();Re();Bp();import{readFile as B$t}from"fs/promises";import{existsSync as tLe,readdirSync as O4n,statSync as B4n}from"fs";import{join as rLe,relative as P$t}from"path";import{homedir as M4n}from"os";function M$t(e){try{let t=(0,k$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 k4n(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 nLe(e){let t=[];try{if(!tLe(e))return t;let r=O4n(e);for(let n of r){let o=rLe(e,n),i=B4n(o);i.isDirectory()?t.push(...nLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function L$t(){let e=[];try{let t=rLe(M4n(),Fn,"rules");if(tLe(t)){let r=nLe(t);for(let n of r)try{let o=await B$t(n,"utf-8"),{paths:i,content:s}=M$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=rLe(Be(),Fn,"rules");if(tLe(t)){let r=nLe(t);for(let n of r)try{let o=await B$t(n,"utf-8"),{paths:i,content:s}=M$t(o);i.length>0&&e.push({filePath:P$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=tle(e);let r=tle(Be()),n=e.startsWith(r)?P$t(r,e):e;return t.filter(o=>k4n(n,o.paths))}var F4n=`# hawaCodeMd
|
|
679
|
+
`)}function sGt(e){try{let t=ZUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function Zx(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function cFn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function RPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,aGt.gt)(MACRO.VERSION,o))&&(i=kue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&cFn()},[s,r]),!r&&!s)return null;let a=iFn(sFn(e,Ci)),c=sGt(e),l=!a&&!c,u=OF.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===aFn()&&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 WF=F(ne(),1);var zF=F(ne(),1);var CV=F(ne(),1);function NPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return CV.default.createElement(x,{...o.option({isFocused:e})},e&&CV.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),CV.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&CV.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var Wm=F(ne(),1);import{isDeepStrictEqual as lFn}from"node:util";var IV=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:DPe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var uFn=(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}}},OPe=e=>e.flatMap(t=>{if("options"in t){let r=OPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),cGt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=OPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new IV(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}},BPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=OPe(t),[a,c]=(0,Wm.useReducer)(uFn,{visibleOptionCount:e,defaultValue:r,options:t},cGt),[l,u]=(0,Wm.useState)(s);s!==l&&!lFn(s,l)&&(c({type:"reset",state:cGt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,Wm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,Wm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,Wm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,Wm.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,Wm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,Wm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,Wm.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 MPe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var DPe=e=>`HEADER-${e.optionValues.join(",")}`;function vC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=BPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});MPe({isDisabled:e,state:c});let{styles:l}=ms("Select");return zF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:DPe(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=zF.default.createElement(zF.default.Fragment,null,h.slice(0,S),zF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return zF.default.createElement(NPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function lGt({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),WF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:ee().secondaryBorder},WF.default.createElement(x,{marginBottom:1,flexDirection:"column"},WF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),WF.default.createElement(x,null,WF.default.createElement(vC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Lp=F(ne(),1);Ge();sr();Cy();var pFn="2.4.3",Iy={VERSION:pFn,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 LPe=46,fGt=["(\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 Ede({isDefaultModel:e=!1}){let t=Math.max(LPe,Be().length+12),r=ee(),n=fGt[Math.floor(Math.random()*fGt.length)];return Lp.createElement(x,{flexDirection:"column"},Lp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Lp.createElement(C,null,Lp.createElement(C,null,n)," Welcome to"," ",Lp.createElement(C,{bold:!0},et),Lp.createElement(C,{color:r.secondaryText}," v",Iy.VERSION)),Lp.createElement(Lp.Fragment,null,Lp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Lp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Lp.createElement(C,{color:r.secondaryText},"cwd: ",Be()),Lp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Lp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var ES=F(ne(),1);Re();var LJ=F(ne(),1);import{randomUUID as mS}from"crypto";$s();Re();nr();sr();Re();Ge();import{existsSync as RC,readdirSync as P4n,statSync as L4n}from"fs";import{join as sw,relative as Q4n}from"path";import{homedir as U$t}from"os";import{platform as U4n}from"process";import{readFile as aw}from"fs/promises";sr();AE();Ar();import{join as _Fn,sep as SFn}from"path";function Qp(){if(!Km())return!1;try{let e=nt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Jm(){return(_Fn(Be(),".hcode","team-memory")+SFn).normalize("NFC")}function hE(e){let t=e.normalize("NFC"),r=Jm();return t.startsWith(r)}var F$t=F(MV(),1);Xo();var k$t=F(MV(),1);sr();Ge();Re();Bp();import{readFile as B$t}from"fs/promises";import{existsSync as tLe,readdirSync as O4n,statSync as B4n}from"fs";import{join as rLe,relative as P$t}from"path";import{homedir as M4n}from"os";function M$t(e){try{let t=(0,k$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 k4n(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 nLe(e){let t=[];try{if(!tLe(e))return t;let r=O4n(e);for(let n of r){let o=rLe(e,n),i=B4n(o);i.isDirectory()?t.push(...nLe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function L$t(){let e=[];try{let t=rLe(M4n(),Fn,"rules");if(tLe(t)){let r=nLe(t);for(let n of r)try{let o=await B$t(n,"utf-8"),{paths:i,content:s}=M$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=rLe(Be(),Fn,"rules");if(tLe(t)){let r=nLe(t);for(let n of r)try{let o=await B$t(n,"utf-8"),{paths:i,content:s}=M$t(o);i.length>0&&e.push({filePath:P$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=tle(e);let r=tle(Be()),n=e.startsWith(r)?P$t(r,e):e;return t.filter(o=>k4n(n,o.paths))}var F4n=`# hawaCodeMd
|
|
680
680
|
Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function H4n(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}):
|
|
681
681
|
|
|
682
682
|
${o.content}`}).join(`
|
|
@@ -774,7 +774,7 @@ data: ${JSON.stringify(H)}
|
|
|
774
774
|
Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var lge=null,Q4e=!1;function boo(){lge=null,Q4e=!1}kt.on("proxy:changed",boo);function Coo(){if(Q4e)return lge;if(Q4e=!0,nt().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(lge=new WZt.ProxyAgent({uri:e}),zt(`[proxy] using proxy: ${e}`)),lge}function Ioo(){let e=Coo();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function dge(e){let t=e||process.env.API_TYPE,r=Ioo();switch(t){case"openai":return _oo(r);case"openai-responses":return Soo(r);case"gemini":return yoo(r);default:return Too(r)}}Cy();var JZt=F(ne(),1);function KZt(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=voo(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function voo(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||xoo(t)?0:woo(t)?2:1}function xoo(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function woo(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 x0(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 H4e(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 KC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function fge(e,t,r){let n=[];return typeof e=="number"&&n.push(H4e(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${KC(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}Re();$s();var eu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function pge(e,t){eu.totalCost+=e,eu.totalAPIDuration+=t}function mge(e,t){eu.inputTokens+=e,eu.outputTokens+=t,kt.emit("token:change",{inputTokens:eu.inputTokens,outputTokens:eu.outputTokens})}function gge(e,t){eu.cacheCreationTokens+=e,eu.cacheReadTokens+=t}function dM(){return{inputTokens:eu.inputTokens,outputTokens:eu.outputTokens,cacheCreationTokens:eu.cacheCreationTokens,cacheReadTokens:eu.cacheReadTokens}}function A9(){return eu.totalCost}function Age(){return Date.now()-eu.startTime}function ZZt(){return eu.totalAPIDuration}function XZt(e){eu.currentContextTokens=e}function eXt(){return eu.currentContextTokens}function Roo(){return St.grey(`Total duration (API): ${x0(eu.totalAPIDuration)}
|
|
775
775
|
Total duration (wall): ${x0(Age())}`)}function tXt(){(0,JZt.useEffect)(()=>{let e=()=>{process.stdout.write(`
|
|
776
776
|
`+Roo()+`
|
|
777
|
-
`);let t=Xn();ps({...t,lastCost:eu.totalCost,lastAPIDuration:eu.totalAPIDuration,lastDuration:Age(),lastSessionId:t0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var G4e="2.4.
|
|
777
|
+
`);let t=Xn();ps({...t,lastCost:eu.totalCost,lastAPIDuration:eu.totalAPIDuration,lastDuration:Age(),lastSessionId:t0})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}Re();Ge();Ge();var G4e="2.4.3";globalThis.MACRO={VERSION:G4e,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 hge=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${G4e} (${process.env.USER_TYPE})`;Re();Re();nr();function jf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Nf(t);if(n?.type==="user"){t[t.length-1]=Boo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Nf(t);n?.type==="user"&&(t[t.length-1]=Noo(n,r));return}}}),t}function Noo(e,t){return{...e,message:{...e.message,content:Ooo(e.message.content,Doo(t.content.content))}}}function Doo(e){return`
|
|
778
778
|
<system-reminder>
|
|
779
779
|
The user sent the following message:
|
|
780
780
|
${e}
|
|
@@ -3458,33 +3458,29 @@ process.on('message', async (msg) => {
|
|
|
3458
3458
|
});
|
|
3459
3459
|
`;function x8o(){return Wrt(Wrt(Wrt(I8o(import.meta.url))))}function w8o(){let e=Krt(C8o(),"hawa-codemode");T8o(e)||b8o(e,{recursive:!0});let t=Krt(e,"executor-runtime.js");return y8o(t,v8o,"utf-8"),t}function R8o(e){return e.map(t=>({name:jT(t.name),tools:Object.keys(t.fns)}))}function N8o(e){return e instanceof Error&&e.name==="ZodError"&&Array.isArray(e.issues)}function $Lr(e){return N8o(e)?JSON.stringify({name:e.name,message:e.message,issues:e.issues}):e instanceof Error?e.message:String(e)}var wbe=class{async execute(t,r,n){let o=w8o(),i=Be(),s=x8o(),a=R8o(r),c=S8o(process.execPath,[o],{cwd:i,stdio:["pipe","pipe","pipe","ipc"],env:{...process.env,NODE_PATH:Krt(s,"node_modules")}}),l=[];return c.stderr?.on("data",u=>l.push(u)),new Promise(u=>{let d=!1,p=new Map(r.map(h=>[jT(h.name),h])),f=setTimeout(()=>{d||(d=!0,c.kill("SIGTERM"),u({result:null,error:`Codemode execution timed out after ${GLr}ms`}))},GLr);function A(){clearTimeout(f);try{c.kill("SIGKILL")}catch{}}c.on("error",h=>{d||(d=!0,A(),u({result:null,error:`Executor spawn error: ${h.message}`}))}),c.on("exit",(h,E)=>{if(d)return;d=!0,A();let S=Buffer.concat(l).toString("utf-8").trim();u({result:null,error:`Executor process exited with code ${h??E}.`+(S?`\\n${S}`:"")})}),c.on("message",async h=>{if(h?.type==="ready"){c.send({type:"run",code:t});return}if(h?.type==="result"){if(d)return;d=!0,A();let E=Buffer.concat(l).toString("utf-8").trim();h.error?u({result:null,error:E?`${h.error}\\n${E}`:h.error}):u({result:h.result,error:E||void 0});return}if(h?.type==="call"){if(h.namespace==="__codemodeMeta"){if(!n){c.send({type:"callResponse",id:h.id,error:"Meta functions are not enabled"});return}let b=n[h.fn];if(typeof b!="function"){c.send({type:"callResponse",id:h.id,error:`Unknown meta function: ${h.fn}`});return}try{let I=await b(h.args);c.send({type:"callResponse",id:h.id,result:I})}catch(I){c.send({type:"callResponse",id:h.id,error:$Lr(I)})}return}let E=p.get(h.namespace);if(!E){c.send({type:"callResponse",id:h.id,error:`Unknown namespace: ${h.namespace}`});return}let S=E.fns[h.fn];if(!S){c.send({type:"callResponse",id:h.id,error:`Unknown tool: ${h.fn} in namespace ${h.namespace}`});return}try{let b=await S(h.args);c.send({type:"callResponse",id:h.id,result:b})}catch(b){c.send({type:"callResponse",id:h.id,error:$Lr(b)})}}}),c.send({type:"init",namespaces:a,metaEnabled:!!n})})}};sr();import{existsSync as D8o,readFileSync as O8o}from"fs";import{homedir as B8o}from"os";import{join as qLr}from"path";Re();var M8o=qLr(B8o(),".hcode",".codemode.json"),k8o=qLr(Be(),".codemode.json");function VLr(e){if(!D8o(e))return null;try{let t=O8o(e,"utf-8"),r=Ym(t);return r&&typeof r=="object"&&!Array.isArray(r)?"mcpServers"in r&&r.mcpServers&&typeof r.mcpServers=="object"&&!Array.isArray(r.mcpServers)?r.mcpServers:r:(X(`Invalid codemode config format at ${e}: expected object`),null)}catch(t){return X(`Failed to read codemode config ${e}:`,t),null}}function P8o(){return VLr(M8o)??{}}function L8o(){return VLr(k8o)??{}}function vJ(){return{...P8o(),...L8o()}}function YLr(e){let t=e.trim();return t.startsWith("async")?t:`async () => {
|
|
3460
3460
|
${t}
|
|
3461
|
-
}`}sr();import{existsSync as Q8o,readFileSync as U8o,writeFileSync as F8o}from"fs";import{join as H8o}from"path";Re();function jLr(){return H8o(Be(),".codemode-snippets.json")}function Jrt(){let e=jLr();if(!Q8o(e))return[];try{let t=U8o(e,"utf-8"),r=Ym(t);return Array.isArray(r)?r:(X(`Invalid snippets file format at ${e}: expected array`),[])}catch(t){return X(`Failed to read snippets ${e}:`,t),[]}}function G8o(e){let t=jLr();try{F8o(t,JSON.stringify(e,null,2),"utf-8")}catch(r){throw X(`Failed to write snippets ${t}:`,r),r}}function zLr(e){let t=Jrt(),r=t.findIndex(n=>n.name===e.name);r>=0?t[r]=e:t.push(e),G8o(t)}var WLr=50,Rbe={path:12,
|
|
3461
|
+
}`}sr();import{existsSync as Q8o,readFileSync as U8o,writeFileSync as F8o}from"fs";import{join as H8o}from"path";Re();function jLr(){return H8o(Be(),".codemode-snippets.json")}function Jrt(){let e=jLr();if(!Q8o(e))return[];try{let t=U8o(e,"utf-8"),r=Ym(t);return Array.isArray(r)?r:(X(`Invalid snippets file format at ${e}: expected array`),[])}catch(t){return X(`Failed to read snippets ${e}:`,t),[]}}function G8o(e){let t=jLr();try{F8o(t,JSON.stringify(e,null,2),"utf-8")}catch(r){throw X(`Failed to write snippets ${t}:`,r),r}}function zLr(e){let t=Jrt(),r=t.findIndex(n=>n.name===e.name);r>=0?t[r]=e:t.push(e),G8o(t)}var WLr=50,Rbe={path:12,provider:8,method:10,description:5};function xJ(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_./:-]+/g," ").toLowerCase().trim()}function Obe(e){return xJ(e).split(/[^a-z0-9]+/).map(t=>t.trim()).filter(Boolean)}function Nbe(e){return{raw:xJ(e??""),tokens:Obe(e??"")}}function Dbe(e,t,r,n){if(r.raw.length===0)return{score:0,matchedTokens:new Set,exactPhrase:!1};let o=0,i=new Set,s=e.length>0&&r.raw.includes(e);e.length>0&&(r.raw===e?o+=n*14:r.raw.startsWith(e)?o+=n*9:s&&(o+=n*6));for(let a of t)r.tokens.includes(a)?(o+=n*4,i.add(a)):r.tokens.some(c=>c.startsWith(a)||a.startsWith(c))?(o+=n*2,i.add(a)):r.raw.includes(a)&&(o+=n,i.add(a));return{score:o,matchedTokens:i,exactPhrase:s}}function $8o(e,t){let r=xJ(t),n=Obe(t);if(r.length===0||n.length===0)return null;let o=[Dbe(r,n,Nbe(e.path),Rbe.path),Dbe(r,n,Nbe(e.provider),Rbe.provider),Dbe(r,n,Nbe(e.method),Rbe.method),Dbe(r,n,Nbe(e.description),Rbe.description)],i=new Set,s=0,a=!1;for(let p of o){s+=p.score,a||=p.exactPhrase;for(let f of p.matchedTokens)i.add(f)}if(i.size===0)return null;let c=i.size/n.length,l=n.length<=2?1:.6;if(c<l&&!a)return null;c===1?s+=25:s+=Math.round(c*10);let u=Obe(e.path),d=Obe(e.method);return(u[0]===n[0]||d[0]===n[0])&&(s+=8),(xJ(e.path)===r||xJ(e.method)===r)&&(s+=20),{path:e.path,provider:e.provider,method:e.method,description:e.description,...e.requiresApproval?{requiresApproval:!0}:{},kind:e.kind,score:s}}function KLr(e,t,r,n=[]){let o=[];for(let c of n){let u=`cm_${jT(c)}_`,d=t.filter(p=>p.name.startsWith(u));for(let p of d){let f=p.name.slice(u.length),A=p.description??"";o.push({path:`${c}.${f}`,provider:c,method:f,description:A,kind:"method"})}}for(let c of r)o.push({path:c.name,provider:"snippet",method:c.name,description:c.description,kind:"snippet"});let i=o.map(c=>$8o(c,e)).filter(c=>c!==null).sort((c,l)=>l.score-c.score||c.path.localeCompare(l.path)),s=i.length;return{results:i.slice(0,WLr),total:s,truncated:s>WLr}}function Bbe(e){return e.replace(/\*\//g,"* /").replace(/\r?\n/g," ")}function q8o(){return typeof process<"u"&&process.env?.HAWA_CODE_JSDOC==="true"}function V8o(e){let t={};if(e&&typeof e=="object"&&e.properties)for(let[r,n]of Object.entries(e.properties))n&&typeof n=="object"&&n.description&&(t[r]=n.description);return t}function Zrt(e,t){return e==null?"unknown":Array.isArray(e.type)?e.type.map(r=>JLr(r,e,t)).join(" | "):JLr(e.type,e,t)}function JLr(e,t,r){switch(e){case"string":return t.enum?t.enum.map(n=>JSON.stringify(n)).join(" | "):"string";case"number":case"integer":return"number";case"boolean":return"boolean";case"array":return`Array<${Zrt(t.items,r)}>`;case"object":{let n=["{"],o=t.properties??{},i=new Set(t.required??[]);for(let[s,a]of Object.entries(o)){let c=i.has(s)?"":"?",l=Zrt(a,`${r} `),u=[];typeof a=="object"&&a?.description&&u.push(Bbe(a.description)),typeof a=="object"&&a&&(a.minimum!==void 0&&u.push(`Minimum: ${a.minimum}`),a.maximum!==void 0&&u.push(`Maximum: ${a.maximum}`),a.minLength!==void 0&&u.push(`Min length: ${a.minLength}`),a.maxLength!==void 0&&u.push(`Max length: ${a.maxLength}`)),u.length>0&&n.push(`${r} /** ${u.join(" ")} */`),n.push(`${r} ${s}${c}: ${l};`)}return t.additionalProperties&&n.push(`${r} [key: string]: unknown;`),n.push(`${r}}`),n.join(`
|
|
3462
3462
|
`)}case"null":return"null";default:return"unknown"}}function Xrt(e,t="codemode"){let r=[`declare const ${t}: {`];for(let[n,o]of Object.entries(e)){let i=/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(n)?n:`'${n}'`,s=Zrt(o.inputSchema," "),a=[];if(o.description?.trim()&&a.push(Bbe(o.description.trim())),q8o()){let c=V8o(o.inputSchema);for(let[l,u]of Object.entries(c))a.push(Bbe(`@param input.${l} - ${u}`))}else a.push(Bbe("@param input - Input parameters."));if(a.length>0){r.push(" /**");for(let c of a)r.push(` * ${c}`);r.push(" */")}r.push(` ${i}(input: ${s}): Promise<unknown>;`)}return r.push("};"),r.join(`
|
|
3463
3463
|
`)}function ZLr(e,t,r){let n=r.find(u=>u.name===e);if(n)return{path:n.name,description:n.description,types:`${n.description}
|
|
3464
3464
|
|
|
3465
3465
|
\`\`\`ts
|
|
3466
3466
|
${n.code}
|
|
3467
|
-
\`\`\``,kind:"snippet"};let[o,i]=e.includes(".")?e.split(".",2):[e,void 0],s=jT(o),a=t.filter(u=>u.name.startsWith(`cm_${s}_`));if(i===void 0&&a.length>0){let u={};for(let d of a){let p=`cm_${s}_`,f=d.name.slice(p.length);u[jT(f)]={description:d.description||void 0,inputSchema:d.inputSchema??{type:"object"}}}return{path:o,description:`
|
|
3467
|
+
\`\`\``,kind:"snippet"};let[o,i]=e.includes(".")?e.split(".",2):[e,void 0],s=jT(o),a=t.filter(u=>u.name.startsWith(`cm_${s}_`));if(i===void 0&&a.length>0){let u={};for(let d of a){let p=`cm_${s}_`,f=d.name.slice(p.length);u[jT(f)]={description:d.description||void 0,inputSchema:d.inputSchema??{type:"object"}}}return{path:o,description:`Provider ${o}`,types:Xrt(u,s),kind:"provider"}}let c=i?jT(i):void 0,l=c?a.filter(u=>u.name===`cm_${s}_${c}`||u.name.endsWith(`_${c}`)):a;for(let u of l){let d=`cm_${s}_`,p=u.name.slice(d.length),f=jT(p);return{path:`${o}.${p}`,description:u.description??"",types:Xrt({[f]:{description:u.description||void 0,inputSchema:u.inputSchema??{type:"object"}}},s),kind:"method"}}return{path:e,description:void 0,types:`"${e}" not found.`,kind:"method"}}kz();FA();Re();var Mbe=1e4;function Y8o(e){let t=(e.type??"").toLowerCase();return t==="http"||t==="sse"||t==="streamable-http"}async function j8o(e,t){try{let r;if(Y8o(t)){if(!t.url)return{name:e,error:"Missing url for HTTP/SSE MCP server"};let n=(t.type??"").toLowerCase(),o={headers:t.headers??{}},i=n==="sse"?new L4(new URL(t.url),{requestInit:o}):new Sk(new URL(t.url),{requestInit:o});r=new U0({name:"hawa-codemode",version:"0.1.0"},{capabilities:{}});let s=r.connect(i),a=new Promise((c,l)=>{setTimeout(()=>{l(new Error(`Connection to MCP server "${e}" timed out after ${Mbe}ms`))},Mbe)});await Promise.race([s,a])}else{if(!t.command)return{name:e,error:"Missing command for stdio MCP server"};let n=new R4({command:t.command,args:t.args??[],env:{...process.env,...t.env},stderr:"pipe"});r=new U0({name:"hawa-codemode",version:"0.1.0"},{capabilities:{}});let o=r.connect(n),i=new Promise((s,a)=>{setTimeout(()=>{a(new Error(`Connection to MCP server "${e}" timed out after ${Mbe}ms`))},Mbe)});await Promise.race([o,i]),n.stderr?.on("data",s=>{let a=s.toString().trim();a&&Of(e,`Server stderr: ${a}`)})}return{name:e,client:r,instructions:r.getInstructions()}}catch(r){let n=r instanceof Error?r.message:String(r);return Of(e,`Connection failed: ${n}`),{name:e,error:n}}}async function kbe(){let e=vJ();return Promise.all(Object.entries(e).map(([t,r])=>j8o(t,r)))}async function Pbe(){let e=await kbe(),t=[];for(let r of e)if(!("error"in r))try{let n=await r.client.listTools();for(let o of n.tools)t.push({...o,name:`cm_${r.name}_${o.name}`})}catch(n){let o=n instanceof Error?n.message:String(n);Of(r.name,`Failed to list tools: ${o}`)}return t}async function XLr(e,t,r){let n=await e.callTool({name:t,arguments:r},UA),o=n.content;if(n.isError){let s=o.filter(a=>a.type==="text").map(a=>"text"in a?a.text:"").join(`
|
|
3468
3468
|
`);throw new Error(s||"Tool call failed")}let i=o.filter(s=>s.type==="text").map(s=>"text"in s?s.text:"").join(`
|
|
3469
3469
|
`);if(i)try{return JSON.parse(i)}catch{return i}return n.content}Re();var z8o=Q.object({code:Q.string().describe("JavaScript async arrow function to execute")}),W8o=`Execute JavaScript code to solve tasks.
|
|
3470
3470
|
|
|
3471
|
-
Available
|
|
3471
|
+
Available providers and their methods are exposed under <codemode.<provider>.<method>(...)>. The detailed list can be found at the end of this prompt under "Available connectors & methods".
|
|
3472
3472
|
|
|
3473
|
-
You can also search or describe available
|
|
3473
|
+
You can also search or describe available methods/snippets:
|
|
3474
3474
|
- const matches = await codemode.search("short intent phrase");
|
|
3475
|
-
- const docs = await codemode.describe("
|
|
3475
|
+
- const docs = await codemode.describe("provider.method");
|
|
3476
3476
|
- await codemode.saveSnippet(name, code, description);
|
|
3477
3477
|
|
|
3478
|
-
## Configured servers
|
|
3479
|
-
|
|
3480
|
-
{{servers}}
|
|
3481
|
-
|
|
3482
3478
|
## Rules
|
|
3483
3479
|
|
|
3484
|
-
- The ONLY globals are the configured codemode
|
|
3485
|
-
- Never guess method names or their parameters. If you have not used a
|
|
3486
|
-
- \`codemode.search("short intent phrase")\` returns matching
|
|
3487
|
-
- \`codemode.describe("
|
|
3480
|
+
- The ONLY globals are the configured codemode providers and \`codemode\` itself (plus standard JavaScript). There is no \`host\`, \`fs\`, \`require\`, \`process\`, or Node.js API \u2014 all I/O goes through the providers listed below.
|
|
3481
|
+
- Never guess method names or their parameters. If you have not used a provider in this conversation, run a discovery pass first.
|
|
3482
|
+
- \`codemode.search("short intent phrase")\` returns matching methods/snippets with their names and descriptions.
|
|
3483
|
+
- \`codemode.describe("provider.method")\` returns TypeScript type declarations and documentation.
|
|
3488
3484
|
- \`codemode.saveSnippet(name, code, description)\` saves a code snippet to .codemode-snippets.json.
|
|
3489
3485
|
|
|
3490
3486
|
Write an async arrow function in JavaScript that returns the result.
|
|
@@ -3493,12 +3489,16 @@ Do NOT define named functions then call them \u2014 just write the arrow functio
|
|
|
3493
3489
|
|
|
3494
3490
|
Example:
|
|
3495
3491
|
async () => {
|
|
3496
|
-
const result = await codemode.
|
|
3492
|
+
const result = await codemode.my_provider.my_method({ key: "value" });
|
|
3497
3493
|
return result;
|
|
3498
|
-
}
|
|
3499
|
-
|
|
3494
|
+
}
|
|
3495
|
+
|
|
3496
|
+
## Available connectors & methods
|
|
3497
|
+
|
|
3498
|
+
{{providers}}`;async function K8o(){let e=vJ(),t=Object.keys(e);if(t.length===0)return"No providers configured. You can still write plain JavaScript.";let r=await kbe().catch(()=>[]),n={},o={};for(let i of t)n[i]=[];for(let i of r)if(!("error"in i)){o[i.name]=i.instructions;try{let{tools:s}=await i.client.listTools();for(let a of s)n[i.name].push(a.name)}catch(s){let a=s instanceof Error?s.message:String(s);Of(i.name,`Failed to list tools: ${a}`)}}return t.map(i=>{let s=n[i],a=o[i]?.replace(/\r\n/g,`
|
|
3499
|
+
`).replace(/\n+/g,"\\n").trim(),c=s.length>0?s.join(" "):"(no methods available)";return`- ${i}:${a??""}
|
|
3500
3500
|
- ${c}`}).join(`
|
|
3501
|
-
`)}async function eQr(){return W8o.replace("{{
|
|
3501
|
+
`)}async function eQr(){return W8o.replace("{{providers}}",await K8o())}async function J8o(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=>XLr(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 tQr(){let e=new wbe;return{name:"codemode",inputSchema:z8o,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":eQr()},async prompt(){return eQr()},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}`:xbe(t.result)},renderToolUseMessage(t){return t.code.split(`
|
|
3502
3502
|
`)[0]??"codemode"},renderToolResultMessage(t){return Lbe.createElement(x,{flexDirection:"column",gap:1},t.error?Lbe.createElement(C,{key:"error",color:"red"},`Error: ${t.error}`):null,Lbe.createElement(C,{key:"result"},xbe(t.result)))},async*call(t,r,n){let o=r??{abortController:new AbortController,readFileTimestamps:{}},i=vJ(),s=Object.keys(i),[a,c]=await Promise.all([kbe(),Pbe().catch(()=>[])]),l=await J8o(a),u=Jrt(),d={search:async f=>KLr(f,c,u,s),describe:async f=>ZLr(f,c,u),saveSnippet:async(f,A,h)=>{let E={name:f,description:h,code:A,savedAt:Date.now(),connectors:s};return zLr(E),{saved:!0,name:f}}},p=await e.execute(YLr(t.code),l,d);yield{type:"result",data:p,resultForAssistant:p.error?`Error: ${p.error}`:xbe(p.result)}}}}var Z8o=Q.object({code:Q.string().describe("JavaScript async arrow function to execute")}),KH=tQr(),rQr={...KH,name:"codemode",inputSchema:Z8o,async description(e){return KH.description(e)},async prompt(){return KH.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await Pbe()).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}`:KH.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return KH.renderToolResultMessage(e)},async*call(e,t,r){yield*KH.call(e,t,r)}};var nQr=()=>[QLr,rQr,_Or,NLr,mo,ZA,iK,sK,ip,sp,lOr,JA,uf,op,np,QK,wK,LMr,$Mr,ZMr,XMr,ekr,tkr,Qbe,ykr,gkr,Ikr,Rkr,Bkr,oK,Pkr,Fkr,pLr,mLr,gLr,yLr,xLr,n2r,qkr,zkr,Zkr],mf=Ye(async()=>{let e=[...nQr(),...await W3()],t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])}),MH=Ye(async()=>{let e=nQr().filter(r=>r.isReadOnly()),t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])});Rn.add(mf);Rn.add(MH);Rn.getTools=mf;Ge();var Akr="Launch a new agent to handle complex, multi-step tasks autonomously.";async function oQr(e,t){let r=e.tools,n=await Xtt(t);if(r){let o=Array.isArray(r)&&r.length===1&&r[0]==="*";r==="*"||o||Array.isArray(r)&&(n=n.filter(i=>r.includes(i.name)))}return n}async function Xtt(e){return await(e?MH():mf())}async function hkr(e){let r=(await c1()).map(n=>{let o=Array.isArray(n.tools)?n.tools.join(", "):"*";return`- ${n.agentType}: ${n.whenToUse} (Tools: ${o})`}).join(`
|
|
3503
3503
|
`);return`Launch a new agent to handle complex, multi-step tasks autonomously.
|
|
3504
3504
|
|
package/hands.js
CHANGED
|
@@ -757,7 +757,7 @@ data: ${JSON.stringify(z)}
|
|
|
757
757
|
`);a=P.pop()||"";for(let z of P){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:P,done:z}=await s.read();if(z)break;a+=n.decode(P,{stream:!0}),O()}I()}catch(P){o.error(P)}})()}})}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_${LB()}`,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:`
|
|
758
758
|
|
|
759
759
|
[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 h6r(`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"}}},sbe=new obe;var Mmt=X(Bmt(),1);ar();us();function Qg(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function Omt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function Nen(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function Ben(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function Oen(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 M5(e,t,r){Iz(t,e),Tz(t,Oen(e,r),r)}function v2(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 Q5(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function kIe(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 kmt=["/v1/messages"];function MIe(e){let t;try{typeof e=="string"?t=new Ev(e):e instanceof Ev?t=e:t=new Ev(e.url)}catch{return""}let r=t.pathname;for(let n of kmt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function PZ(e,t){let r=typeof e=="string"?e:e instanceof Ev?e.toString():e.url,n;try{n=new Ev(r).pathname}catch{return!1}return kmt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function ken(e){return async(t,r)=>{if(!PZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await LK.transformRequestOut(n),o=MIe(t)+"/chat/completions",s=Qg(r.headers),a=s.authorization??s.Authorization??"";Nen(i,Omt(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:_}),kIe("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:Qg(l.headers)},openai:{request:{body:i},response:{}}};if(!c){let _=await l.text(),b=new Response(_,{status:l.status,statusText:l.statusText,headers:Q5(l.headers)}),S=await LK.transformResponseIn(b,n),I=await S.text();try{M5({...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=v2(l.body),m=new Response(g.stream,{status:l.status,statusText:l.statusText,headers:Q5(l.headers)}),A=await LK.transformResponseIn(m,n),E=v2(A.body);return Promise.all([g.done,E.done]).then(async([_,b])=>{try{M5({...f,openai:{...f.openai,response:{body:await lot(_)}},response:{...f.response,body:await xU(b)}},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 Men(e){return async(t,r)=>{if(!PZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await FK.transformRequestOut(n),o=Qg(r.headers);Ben(i,Omt(o));let s=JSON.stringify(i),l=MIe(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}),kIe("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:Qg(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:Q5(u.headers)}),w=await FK.transformResponseIn(I,n),O=await w.text();try{M5({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},g,"responses")}catch(P){J("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",P)}return new Response(O,{status:w.status,statusText:w.statusText,headers:w.headers})}let A=v2(u.body),E=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:Q5(u.headers)}),_=await FK.transformResponseIn(E,n),b=v2(_.body);return Promise.all([A.done,b.done]).then(async([S,I])=>{try{M5({...m,openai:{...m.openai,response:{body:await aot(S)}},response:{...m.response,body:await xU(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(b.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function Qen(e){return async(t,r)=>{if(!PZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=Qg(r.headers),o=await sbe.transformRequestOut(n),s=JSON.stringify(o),a=MIe(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(b){throw J("gemini request error:",b),b}if(!c.ok){let b=await c.text();return J(`Gemini API error response: ${c.status} ${c.statusText}`,{url:a,status:c.status,errorResponse:b}),kIe("Gemini API error","Gemini",c.status,c.statusText,b)}let u=n.stream===!0,f=i["x-agent-id"],g={request:{url:a,method:r.method,headers:Qg(r.headers),body:n},response:{status:c.status,statusText:c.statusText,headers:Qg(c.headers)},openai:{request:{body:o},response:{}}},m=v2(c.body),A=new Response(m.stream,{status:c.status,statusText:c.statusText,headers:Q5(c.headers)}),E=await sbe.transformResponseIn(A),_=v2(E.body);return Promise.all([m.done,_.done]).then(async([b,S])=>{try{let I=u?cot(b):JSON.parse(b),w=u?await xU(S):JSON.parse(S);M5({...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(b=>J("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+b)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function Pen(e){return async(t,r)=>{if(!PZ(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=Qg(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 Ev?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 Ev?t.toString():t.url,method:r.method,headers:Qg(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:Qg(a.headers)}};return(async()=>{if(c){let m=await a.text();u.response.body=await xU(m)}else u.response.body=await a.json();let g=Qg(r.headers)["x-agent-id"];Iz(g,u),Tz(g,{request:u.request.body.messages,response:u.response.body.content})})().catch(f=>J(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
|
|
760
|
-
Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var QZ=null,OIe=!1;function Len(){QZ=null,OIe=!1}pr.on("proxy:changed",Len);function Fen(){if(OIe)return QZ;if(OIe=!0,lt().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(QZ=new Mmt.ProxyAgent({uri:e}),Kt(`[proxy] using proxy: ${e}`)),QZ}function Uen(){let e=Fen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function LZ(e){let t=e||process.env.API_TYPE,r=Uen();switch(t){case"openai":return ken(r);case"openai-responses":return Men(r);case"gemini":return Qen(r);default:return Pen(r)}}ph();var Gen=X(Ae(),1);function Qmt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Hen(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Hen(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||$en(t)?0:qen(t)?2:1}function $en(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function qen(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 l_(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 YC(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 FZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function UZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function HZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function QIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Pmt(){return dc.totalCost}function Lmt(){return Date.now()-dc.startTime}function Fmt(){return dc.totalAPIDuration}function Umt(e){dc.currentContextTokens=e}function Hmt(){return dc.currentContextTokens}ke();$e();$e();var PIe="2.4.
|
|
760
|
+
Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var QZ=null,OIe=!1;function Len(){QZ=null,OIe=!1}pr.on("proxy:changed",Len);function Fen(){if(OIe)return QZ;if(OIe=!0,lt().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(QZ=new Mmt.ProxyAgent({uri:e}),Kt(`[proxy] using proxy: ${e}`)),QZ}function Uen(){let e=Fen();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function LZ(e){let t=e||process.env.API_TYPE,r=Uen();switch(t){case"openai":return ken(r);case"openai-responses":return Men(r);case"gemini":return Qen(r);default:return Pen(r)}}ph();var Gen=X(Ae(),1);function Qmt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Hen(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Hen(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||$en(t)?0:qen(t)?2:1}function $en(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function qen(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 l_(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 YC(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 FZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function UZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function HZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function QIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function Pmt(){return dc.totalCost}function Lmt(){return Date.now()-dc.startTime}function Fmt(){return dc.totalAPIDuration}function Umt(e){dc.currentContextTokens=e}function Hmt(){return dc.currentContextTokens}ke();$e();$e();var PIe="2.4.3";globalThis.MACRO={VERSION:PIe,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 $Z=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${PIe} (${process.env.USER_TYPE})`;import{randomUUID as hy}from"crypto";us();ke();Zt();_r();ke();$e();import{existsSync as p_,readdirSync as fin,statSync as pin}from"fs";import{join as KC,relative as min}from"path";import{homedir as fht}from"os";import{platform as gin}from"process";import{readFile as JC}from"fs/promises";_r();Pg();ar();import{join as Wen,sep as Ken}from"path";function mm(){if(!pm())return!1;try{let e=lt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function jf(){return(Wen(Be(),".hcode","team-memory")+Ken).normalize("NFC")}function u_(e){let t=e.normalize("NFC"),r=jf();return t.startsWith(r)}var pht=X(z5(),1);Qi();var lht=X(z5(),1);_r();$e();ke();Su();import{readFile as sht}from"fs/promises";import{existsSync as eTe,readdirSync as lin,statSync as cin}from"fs";import{join as tTe,relative as cht}from"path";import{homedir as uin}from"os";function aht(e){try{let t=(0,lht.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 din(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 rTe(e){let t=[];try{if(!eTe(e))return t;let r=lin(e);for(let n of r){let i=tTe(e,n),o=cin(i);o.isDirectory()?t.push(...rTe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function uht(){let e=[];try{let t=tTe(uin(),Xr,"rules");if(eTe(t)){let r=rTe(t);for(let n of r)try{let i=await sht(n,"utf-8"),{paths:o,content:s}=aht(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=tTe(Be(),Xr,"rules");if(eTe(t)){let r=rTe(t);for(let n of r)try{let i=await sht(n,"utf-8"),{paths:o,content:s}=aht(i);o.length>0&&e.push({filePath:cht(Be(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function dht(e,t){e=bV(e);let r=bV(Be()),n=e.startsWith(r)?cht(r,e):e;return t.filter(i=>din(n,i.paths))}var Ain=`# hawaCodeMd
|
|
761
761
|
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 hin(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}):
|
|
762
762
|
|
|
763
763
|
${i.content}`}).join(`
|
|
@@ -1129,7 +1129,7 @@ You are powered by the model ${e}.`}async function Jv(){return j5()?`gitStatus:
|
|
|
1129
1129
|
<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:hI(c.inputSchema));return{name:c.name,description:`${u}
|
|
1130
1130
|
|
|
1131
1131
|
Schema:
|
|
1132
|
-
${f}`}}),{messages:a}=t,l=$ln(o);return qln(o,l,s,a)}},cyt=Gln;Ug();var Mu=X(Ae(),1),fO=X(Ae(),1);ke();ke();import{existsSync as zln,readdirSync as jln,statSync as Yln}from"fs";import{join as Vln}from"path";function Wln(){let e=Ji.plan();if(!zln(e))return[];try{return jln(e).filter(r=>r.endsWith(".md")).map(r=>{let n=Vln(e,r),i=Yln(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var uyt=({onSelect:e})=>{let[t,r]=(0,fO.useState)([]),[n,i]=(0,fO.useState)(0),[o,s]=(0,fO.useState)(!1);(0,fO.useEffect)(()=>{let c=Wln();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=Pe();return o?Mu.createElement(N,{flexDirection:"column",marginY:1},Mu.createElement(N,{marginBottom:1},Mu.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")),Mu.createElement(N,{marginBottom:1},Mu.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 Mu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Mu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Mu.createElement(v,{color:f?l.claude:l.text}," "),Mu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Mu.createElement(v,{dimColor:!0}," ","(",Vge(c.modified),")"))}),Mu.createElement(N,{marginTop:1,marginLeft:2},Mu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Mu.createElement(N,{flexDirection:"column",marginY:1},Mu.createElement(v,null,"Loading plan history..."))};var dyt=X(Ae(),1),Kln={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):dyt.createElement(uyt,{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"}},fyt=Kln;Ug();var Jln={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"}},pyt=Jln;_r();import{resolve as Zln}from"path";var Xln={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=Zln(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},myt=Xln;var zCt=X(Ae(),1);var Hn=X(Ae(),1);var Ncn=X(Ae(),1);var D9=X(Ae(),1),wcn=X(Eyt(),1);var _yt={info:"blue",success:"green",error:"red",warning:"yellow"},pcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:_yt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:_yt[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=Qr.info),e==="success"&&(t=Qr.tick),e==="error"&&(t=Qr.cross),e==="warning"&&(t=Qr.warning),{icon:t}}},yyt=pcn;var mcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},byt=mcn;var gcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},Cyt=gcn;var Acn={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})}},Syt=Acn;var hcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},Iyt=hcn;var Ecn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Qr.square,remainingCharacter:Qr.squareLightShade})},Tyt=Ecn;var _cn={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})}},vyt=_cn;var ycn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},xyt=ycn;var bcn={success:"green",error:"red",warning:"yellow",info:"blue"},Ccn={success:Qr.tick,error:Qr.cross,warning:Qr.warning,info:Qr.info},Scn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:bcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Ccn[e]})},wyt=Scn;var Icn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Qr.line})},Dyt=Icn;var Tcn={styles:{value:()=>({})}},Ryt=Tcn;var vcn={styles:{value:()=>({})}},Nyt=vcn;var xcn={styles:{value:()=>({})}},Byt=xcn;var Dcn={components:{Alert:yyt,Badge:byt,ConfirmInput:Cyt,MultiSelect:Syt,OrderedList:Iyt,ProgressBar:Tyt,Select:vyt,Spinner:xyt,StatusMessage:wyt,UnorderedList:Dyt,TextInput:Ryt,EmailInput:Nyt,PasswordInput:Byt}},Rcn=(0,D9.createContext)(Dcn);var po=e=>(0,D9.useContext)(Rcn).components[e];var Bcn=X(Ae(),1);var C_=X(Ae(),1);var mO=X(Ae(),1);var Oyt=X(Ae(),1);var R9=Qr.line;var iee=(0,Oyt.createContext)({marker:R9});function kyt({children:e}){let{marker:t}=(0,mO.useContext)(iee),{styles:r}=po("UnorderedList");return mO.default.createElement(N,{...r.listItem()},mO.default.createElement(v,{...r.marker()},t),mO.default.createElement(N,{...r.content()},e))}var Myt=X(Ae(),1),Uve=(0,Myt.createContext)({depth:0});function Ocn({children:e}){let{depth:t}=(0,C_.useContext)(Uve),{styles:r,config:n}=po("UnorderedList"),i=(0,C_.useMemo)(()=>({depth:t+1}),[t]),o=(0,C_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??R9}:{marker:R9}},[n,t]);return C_.default.createElement(Uve.Provider,{value:i},C_.default.createElement(iee.Provider,{value:o},C_.default.createElement(N,{...r.list()},e)))}Ocn.Item=kyt;var Mcn=X(Ae(),1);var kcn=X(Ae(),1);var N9=X(Ae(),1);var gO=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 Qyt=X(Ae(),1);var AO=X(Ae(),1);var B9=X(Ae(),1);function Pyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return B9.default.createElement(N,{...n.option({isFocused:e})},e&&B9.default.createElement(v,{...n.focusIndicator()},Qr.pointer),B9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&B9.default.createElement(v,{...n.selectedIndicator()},Qr.tick))}var ym=X(Ae(),1);import{isDeepStrictEqual as Qcn}from"node:util";var Pcn=(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}},Lyt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new gO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},Fyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,ym.useReducer)(Pcn,{visibleOptionCount:e,defaultValue:r,options:t},Lyt),[s,a]=(0,ym.useState)(t);t!==s&&!Qcn(t,s)&&(o({type:"reset",state:Lyt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,ym.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,ym.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,ym.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,ym.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,ym.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 Uyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function hO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=Fyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Uyt({isDisabled:e,state:s});let{styles:a}=po("Select");return AO.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=AO.default.createElement(AO.default.Fragment,null,l.label.slice(0,u),AO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return AO.default.createElement(Pyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Lcn=X(Ae(),1);var Hyt=X(Ae(),1);var Ucn=X(Ae(),1);var oee=X(Ae(),1);var Fcn=X(Ae(),1);var S2i=sr.inverse(" ");var zg=X(Ae(),1);var EO=X(Ae(),1);var $yt=X(Ae(),1);var see=(0,$yt.createContext)({marker:Qr.line});function aee({children:e}){let{marker:t}=(0,EO.useContext)(see),{styles:r}=po("OrderedList");return EO.default.createElement(N,{...r.listItem()},EO.default.createElement(v,{...r.marker()},t),EO.default.createElement(N,{...r.content()},e))}var qyt=X(Ae(),1),Hve=(0,qyt.createContext)({marker:""});function jg({children:e}){let{marker:t}=(0,zg.useContext)(Hve),{styles:r}=po("OrderedList"),n=0;for(let o of zg.default.Children.toArray(e))!(0,zg.isValidElement)(o)||o.type!==aee||n++;let i=String(n).length;return zg.default.createElement(N,{...r.list()},zg.default.Children.map(e,(o,s)=>{if(!(0,zg.isValidElement)(o)||o.type!==aee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return zg.default.createElement(Hve.Provider,{value:{marker:l}},zg.default.createElement(see.Provider,{value:{marker:l}},o))}))}jg.Item=aee;var $cn=X(Ae(),1);var $ve=X(Ae(),1);var Hcn=X(Ae(),1);var Z2i=sr.inverse(" ");var qcn=X(Ae(),1);var Gcn=X(Ae(),1);var jcn=X(Ae(),1);var lee=X(Ae(),1);var zcn=X(Ae(),1);var COi=sr.inverse(" ");var $i=X(Ae(),1);var qve=X(Ae(),1),Gve=X(Ae(),1);V5();us();Qi();Fv();ar();var Gyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function Zv(){let e=[...Gyt,...[...Gyt].reverse()],{frame:t}=gR({interval:120});return qve.createElement(N,{flexWrap:"nowrap",height:1,width:2},qve.createElement(v,{color:Pe().claude},e[t%e.length]))}var dee=X(Ae(),1);var uee=null,S_=null,cee=new Set;function jve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Qpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function zve(){S_&&(uee=jve(S_),cee.forEach(e=>e(uee)))}function Ycn(e,t){return S_!==e&&(S_&&S_.off("resize",zve),S_=e,uee=jve(e),e.on("resize",zve)),cee.add(t),()=>{cee.delete(t),cee.size===0&&S_&&(S_.off("resize",zve),S_=null,uee=null)}}function Yve(){let{stdout:e}=mR(),[t,r]=(0,dee.useState)(()=>jve(e));return(0,dee.useEffect)(()=>Ycn(e,r),[e]),t}function _O(){return Yve()}$e();If();ke();lh();ke();var dMi=X(mxe(),1);import{homedir as H9}from"os";import{join as CO}from"path";import{existsSync as $9,mkdirSync as OCt,appendFileSync as BCt,readFileSync as kCt,constants as Gfn,writeFileSync as zfn,unlinkSync as MCt,statSync as jfn}from"fs";import{platform as QCt}from"process";import{accessSync as Yfn}from"fs";var qfn="2.4.2",U9={VERSION:qfn,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"};$e();var ex=CO(Q0,".update.lock"),Vfn=300*1e3;function PCt(){try{if($9(Q0)||OCt(Q0,{recursive:!0}),$9(ex)){let e=jfn(ex);if(Date.now()-e.mtimeMs<Vfn)return!1;try{MCt(ex)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return zfn(ex,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function LCt(){try{$9(ex)&&kCt(ex,"utf8")===`${process.pid}`&&MCt(ex)}catch(e){ve(`Failed to release lock: ${e}`)}}async function gxe(){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{Yfn(t,Gfn.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 FCt(e){if(!PCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:U9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{$9(e)||OCt(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
|
+
${f}`}}),{messages:a}=t,l=$ln(o);return qln(o,l,s,a)}},cyt=Gln;Ug();var Mu=X(Ae(),1),fO=X(Ae(),1);ke();ke();import{existsSync as zln,readdirSync as jln,statSync as Yln}from"fs";import{join as Vln}from"path";function Wln(){let e=Ji.plan();if(!zln(e))return[];try{return jln(e).filter(r=>r.endsWith(".md")).map(r=>{let n=Vln(e,r),i=Yln(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var uyt=({onSelect:e})=>{let[t,r]=(0,fO.useState)([]),[n,i]=(0,fO.useState)(0),[o,s]=(0,fO.useState)(!1);(0,fO.useEffect)(()=>{let c=Wln();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=Pe();return o?Mu.createElement(N,{flexDirection:"column",marginY:1},Mu.createElement(N,{marginBottom:1},Mu.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")),Mu.createElement(N,{marginBottom:1},Mu.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 Mu.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},Mu.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),Mu.createElement(v,{color:f?l.claude:l.text}," "),Mu.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&Mu.createElement(v,{dimColor:!0}," ","(",Vge(c.modified),")"))}),Mu.createElement(N,{marginTop:1,marginLeft:2},Mu.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):Mu.createElement(N,{flexDirection:"column",marginY:1},Mu.createElement(v,null,"Loading plan history..."))};var dyt=X(Ae(),1),Kln={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):dyt.createElement(uyt,{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"}},fyt=Kln;Ug();var Jln={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"}},pyt=Jln;_r();import{resolve as Zln}from"path";var Xln={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=Zln(r,t);la(n);let i=Be();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},myt=Xln;var zCt=X(Ae(),1);var Hn=X(Ae(),1);var Ncn=X(Ae(),1);var D9=X(Ae(),1),wcn=X(Eyt(),1);var _yt={info:"blue",success:"green",error:"red",warning:"yellow"},pcn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:_yt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:_yt[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=Qr.info),e==="success"&&(t=Qr.tick),e==="error"&&(t=Qr.cross),e==="warning"&&(t=Qr.warning),{icon:t}}},yyt=pcn;var mcn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},byt=mcn;var gcn={styles:{input:({isFocused:e})=>({dimColor:!e})}},Cyt=gcn;var Acn={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})}},Syt=Acn;var hcn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},Iyt=hcn;var Ecn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Qr.square,remainingCharacter:Qr.squareLightShade})},Tyt=Ecn;var _cn={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})}},vyt=_cn;var ycn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},xyt=ycn;var bcn={success:"green",error:"red",warning:"yellow",info:"blue"},Ccn={success:Qr.tick,error:Qr.cross,warning:Qr.warning,info:Qr.info},Scn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:bcn[e]}),message:()=>({})},config:({variant:e})=>({icon:Ccn[e]})},wyt=Scn;var Icn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Qr.line})},Dyt=Icn;var Tcn={styles:{value:()=>({})}},Ryt=Tcn;var vcn={styles:{value:()=>({})}},Nyt=vcn;var xcn={styles:{value:()=>({})}},Byt=xcn;var Dcn={components:{Alert:yyt,Badge:byt,ConfirmInput:Cyt,MultiSelect:Syt,OrderedList:Iyt,ProgressBar:Tyt,Select:vyt,Spinner:xyt,StatusMessage:wyt,UnorderedList:Dyt,TextInput:Ryt,EmailInput:Nyt,PasswordInput:Byt}},Rcn=(0,D9.createContext)(Dcn);var po=e=>(0,D9.useContext)(Rcn).components[e];var Bcn=X(Ae(),1);var C_=X(Ae(),1);var mO=X(Ae(),1);var Oyt=X(Ae(),1);var R9=Qr.line;var iee=(0,Oyt.createContext)({marker:R9});function kyt({children:e}){let{marker:t}=(0,mO.useContext)(iee),{styles:r}=po("UnorderedList");return mO.default.createElement(N,{...r.listItem()},mO.default.createElement(v,{...r.marker()},t),mO.default.createElement(N,{...r.content()},e))}var Myt=X(Ae(),1),Uve=(0,Myt.createContext)({depth:0});function Ocn({children:e}){let{depth:t}=(0,C_.useContext)(Uve),{styles:r,config:n}=po("UnorderedList"),i=(0,C_.useMemo)(()=>({depth:t+1}),[t]),o=(0,C_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??R9}:{marker:R9}},[n,t]);return C_.default.createElement(Uve.Provider,{value:i},C_.default.createElement(iee.Provider,{value:o},C_.default.createElement(N,{...r.list()},e)))}Ocn.Item=kyt;var Mcn=X(Ae(),1);var kcn=X(Ae(),1);var N9=X(Ae(),1);var gO=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 Qyt=X(Ae(),1);var AO=X(Ae(),1);var B9=X(Ae(),1);function Pyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return B9.default.createElement(N,{...n.option({isFocused:e})},e&&B9.default.createElement(v,{...n.focusIndicator()},Qr.pointer),B9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&B9.default.createElement(v,{...n.selectedIndicator()},Qr.tick))}var ym=X(Ae(),1);import{isDeepStrictEqual as Qcn}from"node:util";var Pcn=(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}},Lyt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new gO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},Fyt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,ym.useReducer)(Pcn,{visibleOptionCount:e,defaultValue:r,options:t},Lyt),[s,a]=(0,ym.useState)(t);t!==s&&!Qcn(t,s)&&(o({type:"reset",state:Lyt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,ym.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,ym.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,ym.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,ym.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,ym.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 Uyt=({isDisabled:e=!1,state:t})=>{vr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function hO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=Fyt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Uyt({isDisabled:e,state:s});let{styles:a}=po("Select");return AO.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=AO.default.createElement(AO.default.Fragment,null,l.label.slice(0,u),AO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return AO.default.createElement(Pyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Lcn=X(Ae(),1);var Hyt=X(Ae(),1);var Ucn=X(Ae(),1);var oee=X(Ae(),1);var Fcn=X(Ae(),1);var S2i=sr.inverse(" ");var zg=X(Ae(),1);var EO=X(Ae(),1);var $yt=X(Ae(),1);var see=(0,$yt.createContext)({marker:Qr.line});function aee({children:e}){let{marker:t}=(0,EO.useContext)(see),{styles:r}=po("OrderedList");return EO.default.createElement(N,{...r.listItem()},EO.default.createElement(v,{...r.marker()},t),EO.default.createElement(N,{...r.content()},e))}var qyt=X(Ae(),1),Hve=(0,qyt.createContext)({marker:""});function jg({children:e}){let{marker:t}=(0,zg.useContext)(Hve),{styles:r}=po("OrderedList"),n=0;for(let o of zg.default.Children.toArray(e))!(0,zg.isValidElement)(o)||o.type!==aee||n++;let i=String(n).length;return zg.default.createElement(N,{...r.list()},zg.default.Children.map(e,(o,s)=>{if(!(0,zg.isValidElement)(o)||o.type!==aee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return zg.default.createElement(Hve.Provider,{value:{marker:l}},zg.default.createElement(see.Provider,{value:{marker:l}},o))}))}jg.Item=aee;var $cn=X(Ae(),1);var $ve=X(Ae(),1);var Hcn=X(Ae(),1);var Z2i=sr.inverse(" ");var qcn=X(Ae(),1);var Gcn=X(Ae(),1);var jcn=X(Ae(),1);var lee=X(Ae(),1);var zcn=X(Ae(),1);var COi=sr.inverse(" ");var $i=X(Ae(),1);var qve=X(Ae(),1),Gve=X(Ae(),1);V5();us();Qi();Fv();ar();var Gyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function Zv(){let e=[...Gyt,...[...Gyt].reverse()],{frame:t}=gR({interval:120});return qve.createElement(N,{flexWrap:"nowrap",height:1,width:2},qve.createElement(v,{color:Pe().claude},e[t%e.length]))}var dee=X(Ae(),1);var uee=null,S_=null,cee=new Set;function jve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Qpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function zve(){S_&&(uee=jve(S_),cee.forEach(e=>e(uee)))}function Ycn(e,t){return S_!==e&&(S_&&S_.off("resize",zve),S_=e,uee=jve(e),e.on("resize",zve)),cee.add(t),()=>{cee.delete(t),cee.size===0&&S_&&(S_.off("resize",zve),S_=null,uee=null)}}function Yve(){let{stdout:e}=mR(),[t,r]=(0,dee.useState)(()=>jve(e));return(0,dee.useEffect)(()=>Ycn(e,r),[e]),t}function _O(){return Yve()}$e();If();ke();lh();ke();var dMi=X(mxe(),1);import{homedir as H9}from"os";import{join as CO}from"path";import{existsSync as $9,mkdirSync as OCt,appendFileSync as BCt,readFileSync as kCt,constants as Gfn,writeFileSync as zfn,unlinkSync as MCt,statSync as jfn}from"fs";import{platform as QCt}from"process";import{accessSync as Yfn}from"fs";var qfn="2.4.3",U9={VERSION:qfn,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"};$e();var ex=CO(Q0,".update.lock"),Vfn=300*1e3;function PCt(){try{if($9(Q0)||OCt(Q0,{recursive:!0}),$9(ex)){let e=jfn(ex);if(Date.now()-e.mtimeMs<Vfn)return!1;try{MCt(ex)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return zfn(ex,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function LCt(){try{$9(ex)&&kCt(ex,"utf8")===`${process.pid}`&&MCt(ex)}catch(e){ve(`Failed to release lock: ${e}`)}}async function gxe(){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{Yfn(t,Gfn.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 FCt(e){if(!PCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:U9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{$9(e)||OCt(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=`
|
|
1133
1133
|
# npm global path
|
|
1134
1134
|
export PATH="${e}/bin:$PATH"
|
|
1135
1135
|
`;if(QCt==="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=[CO(H9(),".bashrc"),CO(H9(),".bash_profile"),CO(H9(),".zshrc"),CO(H9(),".config","fish","config.fish")];for(let i of n)if($9(i))try{if(!kCt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
|
|
@@ -3293,33 +3293,29 @@ process.on('message', async (msg) => {
|
|
|
3293
3293
|
});
|
|
3294
3294
|
`;function F5n(){return HLe(HLe(HLe(P5n(import.meta.url))))}function U5n(){let e=$Le(Q5n(),"hawa-codemode");k5n(e)||M5n(e,{recursive:!0});let t=$Le(e,"executor-runtime.js");return O5n(t,L5n,"utf-8"),t}function H5n(e){return e.map(t=>({name:IE(t.name),tools:Object.keys(t.fns)}))}function $5n(e){return e instanceof Error&&e.name==="ZodError"&&Array.isArray(e.issues)}function JGt(e){return $5n(e)?JSON.stringify({name:e.name,message:e.message,issues:e.issues}):e instanceof Error?e.message:String(e)}var ese=class{async execute(t,r,n){let i=U5n(),o=Be(),s=F5n(),a=H5n(r),l=B5n(process.execPath,[i],{cwd:o,stdio:["pipe","pipe","pipe","ipc"],env:{...process.env,NODE_PATH:$Le(s,"node_modules")}}),c=[];return l.stderr?.on("data",u=>c.push(u)),new Promise(u=>{let f=!1,g=new Map(r.map(E=>[IE(E.name),E])),m=setTimeout(()=>{f||(f=!0,l.kill("SIGTERM"),u({result:null,error:`Codemode execution timed out after ${KGt}ms`}))},KGt);function A(){clearTimeout(m);try{l.kill("SIGKILL")}catch{}}l.on("error",E=>{f||(f=!0,A(),u({result:null,error:`Executor spawn error: ${E.message}`}))}),l.on("exit",(E,_)=>{if(f)return;f=!0,A();let b=Buffer.concat(c).toString("utf-8").trim();u({result:null,error:`Executor process exited with code ${E??_}.`+(b?`\\n${b}`:"")})}),l.on("message",async E=>{if(E?.type==="ready"){l.send({type:"run",code:t});return}if(E?.type==="result"){if(f)return;f=!0,A();let _=Buffer.concat(c).toString("utf-8").trim();E.error?u({result:null,error:_?`${E.error}\\n${_}`:E.error}):u({result:E.result,error:_||void 0});return}if(E?.type==="call"){if(E.namespace==="__codemodeMeta"){if(!n){l.send({type:"callResponse",id:E.id,error:"Meta functions are not enabled"});return}let S=n[E.fn];if(typeof S!="function"){l.send({type:"callResponse",id:E.id,error:`Unknown meta function: ${E.fn}`});return}try{let I=await S(E.args);l.send({type:"callResponse",id:E.id,result:I})}catch(I){l.send({type:"callResponse",id:E.id,error:JGt(I)})}return}let _=g.get(E.namespace);if(!_){l.send({type:"callResponse",id:E.id,error:`Unknown namespace: ${E.namespace}`});return}let b=_.fns[E.fn];if(!b){l.send({type:"callResponse",id:E.id,error:`Unknown tool: ${E.fn} in namespace ${E.namespace}`});return}try{let S=await b(E.args);l.send({type:"callResponse",id:E.id,result:S})}catch(S){l.send({type:"callResponse",id:E.id,error:JGt(S)})}}}),l.send({type:"init",namespaces:a,metaEnabled:!!n})})}};_r();import{existsSync as q5n,readFileSync as G5n}from"fs";import{homedir as z5n}from"os";import{join as ZGt}from"path";ke();var j5n=ZGt(z5n(),".hcode",".codemode.json"),Y5n=ZGt(Be(),".codemode.json");function XGt(e){if(!q5n(e))return null;try{let t=G5n(e,"utf-8"),r=Yp(t);return r&&typeof r=="object"&&!Array.isArray(r)?"mcpServers"in r&&r.mcpServers&&typeof r.mcpServers=="object"&&!Array.isArray(r.mcpServers)?r.mcpServers:r:(J(`Invalid codemode config format at ${e}: expected object`),null)}catch(t){return J(`Failed to read codemode config ${e}:`,t),null}}function V5n(){return XGt(j5n)??{}}function W5n(){return XGt(Y5n)??{}}function H6(){return{...V5n(),...W5n()}}function ezt(e){let t=e.trim();return t.startsWith("async")?t:`async () => {
|
|
3295
3295
|
${t}
|
|
3296
|
-
}`}_r();import{existsSync as K5n,readFileSync as J5n,writeFileSync as Z5n}from"fs";import{join as X5n}from"path";ke();function tzt(){return X5n(Be(),".codemode-snippets.json")}function qLe(){let e=tzt();if(!K5n(e))return[];try{let t=J5n(e,"utf-8"),r=Yp(t);return Array.isArray(r)?r:(J(`Invalid snippets file format at ${e}: expected array`),[])}catch(t){return J(`Failed to read snippets ${e}:`,t),[]}}function e9n(e){let t=tzt();try{Z5n(t,JSON.stringify(e,null,2),"utf-8")}catch(r){throw J(`Failed to write snippets ${t}:`,r),r}}function rzt(e){let t=qLe(),r=t.findIndex(n=>n.name===e.name);r>=0?t[r]=e:t.push(e),e9n(t)}var nzt=50,tse={path:12,
|
|
3296
|
+
}`}_r();import{existsSync as K5n,readFileSync as J5n,writeFileSync as Z5n}from"fs";import{join as X5n}from"path";ke();function tzt(){return X5n(Be(),".codemode-snippets.json")}function qLe(){let e=tzt();if(!K5n(e))return[];try{let t=J5n(e,"utf-8"),r=Yp(t);return Array.isArray(r)?r:(J(`Invalid snippets file format at ${e}: expected array`),[])}catch(t){return J(`Failed to read snippets ${e}:`,t),[]}}function e9n(e){let t=tzt();try{Z5n(t,JSON.stringify(e,null,2),"utf-8")}catch(r){throw J(`Failed to write snippets ${t}:`,r),r}}function rzt(e){let t=qLe(),r=t.findIndex(n=>n.name===e.name);r>=0?t[r]=e:t.push(e),e9n(t)}var nzt=50,tse={path:12,provider:8,method:10,description:5};function $6(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_./:-]+/g," ").toLowerCase().trim()}function ise(e){return $6(e).split(/[^a-z0-9]+/).map(t=>t.trim()).filter(Boolean)}function rse(e){return{raw:$6(e??""),tokens:ise(e??"")}}function nse(e,t,r,n){if(r.raw.length===0)return{score:0,matchedTokens:new Set,exactPhrase:!1};let i=0,o=new Set,s=e.length>0&&r.raw.includes(e);e.length>0&&(r.raw===e?i+=n*14:r.raw.startsWith(e)?i+=n*9:s&&(i+=n*6));for(let a of t)r.tokens.includes(a)?(i+=n*4,o.add(a)):r.tokens.some(l=>l.startsWith(a)||a.startsWith(l))?(i+=n*2,o.add(a)):r.raw.includes(a)&&(i+=n,o.add(a));return{score:i,matchedTokens:o,exactPhrase:s}}function t9n(e,t){let r=$6(t),n=ise(t);if(r.length===0||n.length===0)return null;let i=[nse(r,n,rse(e.path),tse.path),nse(r,n,rse(e.provider),tse.provider),nse(r,n,rse(e.method),tse.method),nse(r,n,rse(e.description),tse.description)],o=new Set,s=0,a=!1;for(let g of i){s+=g.score,a||=g.exactPhrase;for(let m of g.matchedTokens)o.add(m)}if(o.size===0)return null;let l=o.size/n.length,c=n.length<=2?1:.6;if(l<c&&!a)return null;l===1?s+=25:s+=Math.round(l*10);let u=ise(e.path),f=ise(e.method);return(u[0]===n[0]||f[0]===n[0])&&(s+=8),($6(e.path)===r||$6(e.method)===r)&&(s+=20),{path:e.path,provider:e.provider,method:e.method,description:e.description,...e.requiresApproval?{requiresApproval:!0}:{},kind:e.kind,score:s}}function izt(e,t,r,n=[]){let i=[];for(let l of n){let u=`cm_${IE(l)}_`,f=t.filter(g=>g.name.startsWith(u));for(let g of f){let m=g.name.slice(u.length),A=g.description??"";i.push({path:`${l}.${m}`,provider:l,method:m,description:A,kind:"method"})}}for(let l of r)i.push({path:l.name,provider:"snippet",method:l.name,description:l.description,kind:"snippet"});let o=i.map(l=>t9n(l,e)).filter(l=>l!==null).sort((l,c)=>c.score-l.score||l.path.localeCompare(c.path)),s=o.length;return{results:o.slice(0,nzt),total:s,truncated:s>nzt}}function ose(e){return e.replace(/\*\//g,"* /").replace(/\r?\n/g," ")}function r9n(){return typeof process<"u"&&process.env?.HAWA_CODE_JSDOC==="true"}function n9n(e){let t={};if(e&&typeof e=="object"&&e.properties)for(let[r,n]of Object.entries(e.properties))n&&typeof n=="object"&&n.description&&(t[r]=n.description);return t}function GLe(e,t){return e==null?"unknown":Array.isArray(e.type)?e.type.map(r=>ozt(r,e,t)).join(" | "):ozt(e.type,e,t)}function ozt(e,t,r){switch(e){case"string":return t.enum?t.enum.map(n=>JSON.stringify(n)).join(" | "):"string";case"number":case"integer":return"number";case"boolean":return"boolean";case"array":return`Array<${GLe(t.items,r)}>`;case"object":{let n=["{"],i=t.properties??{},o=new Set(t.required??[]);for(let[s,a]of Object.entries(i)){let l=o.has(s)?"":"?",c=GLe(a,`${r} `),u=[];typeof a=="object"&&a?.description&&u.push(ose(a.description)),typeof a=="object"&&a&&(a.minimum!==void 0&&u.push(`Minimum: ${a.minimum}`),a.maximum!==void 0&&u.push(`Maximum: ${a.maximum}`),a.minLength!==void 0&&u.push(`Min length: ${a.minLength}`),a.maxLength!==void 0&&u.push(`Max length: ${a.maxLength}`)),u.length>0&&n.push(`${r} /** ${u.join(" ")} */`),n.push(`${r} ${s}${l}: ${c};`)}return t.additionalProperties&&n.push(`${r} [key: string]: unknown;`),n.push(`${r}}`),n.join(`
|
|
3297
3297
|
`)}case"null":return"null";default:return"unknown"}}function zLe(e,t="codemode"){let r=[`declare const ${t}: {`];for(let[n,i]of Object.entries(e)){let o=/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(n)?n:`'${n}'`,s=GLe(i.inputSchema," "),a=[];if(i.description?.trim()&&a.push(ose(i.description.trim())),r9n()){let l=n9n(i.inputSchema);for(let[c,u]of Object.entries(l))a.push(ose(`@param input.${c} - ${u}`))}else a.push(ose("@param input - Input parameters."));if(a.length>0){r.push(" /**");for(let l of a)r.push(` * ${l}`);r.push(" */")}r.push(` ${o}(input: ${s}): Promise<unknown>;`)}return r.push("};"),r.join(`
|
|
3298
3298
|
`)}function szt(e,t,r){let n=r.find(u=>u.name===e);if(n)return{path:n.name,description:n.description,types:`${n.description}
|
|
3299
3299
|
|
|
3300
3300
|
\`\`\`ts
|
|
3301
3301
|
${n.code}
|
|
3302
|
-
\`\`\``,kind:"snippet"};let[i,o]=e.includes(".")?e.split(".",2):[e,void 0],s=IE(i),a=t.filter(u=>u.name.startsWith(`cm_${s}_`));if(o===void 0&&a.length>0){let u={};for(let f of a){let g=`cm_${s}_`,m=f.name.slice(g.length);u[IE(m)]={description:f.description||void 0,inputSchema:f.inputSchema??{type:"object"}}}return{path:i,description:`
|
|
3302
|
+
\`\`\``,kind:"snippet"};let[i,o]=e.includes(".")?e.split(".",2):[e,void 0],s=IE(i),a=t.filter(u=>u.name.startsWith(`cm_${s}_`));if(o===void 0&&a.length>0){let u={};for(let f of a){let g=`cm_${s}_`,m=f.name.slice(g.length);u[IE(m)]={description:f.description||void 0,inputSchema:f.inputSchema??{type:"object"}}}return{path:i,description:`Provider ${i}`,types:zLe(u,s),kind:"provider"}}let l=o?IE(o):void 0,c=l?a.filter(u=>u.name===`cm_${s}_${l}`||u.name.endsWith(`_${l}`)):a;for(let u of c){let f=`cm_${s}_`,g=u.name.slice(f.length),m=IE(g);return{path:`${i}.${g}`,description:u.description??"",types:zLe({[m]:{description:u.description||void 0,inputSchema:u.inputSchema??{type:"object"}}},s),kind:"method"}}return{path:e,description:void 0,types:`"${e}" not found.`,kind:"method"}}W5();gf();ke();var sse=1e4;function i9n(e){let t=(e.type??"").toLowerCase();return t==="http"||t==="sse"||t==="streamable-http"}async function o9n(e,t){try{let r;if(i9n(t)){if(!t.url)return{name:e,error:"Missing url for HTTP/SSE MCP server"};let n=(t.type??"").toLowerCase(),i={headers:t.headers??{}},o=n==="sse"?new QO(new URL(t.url),{requestInit:i}):new cx(new URL(t.url),{requestInit:i});r=new Lg({name:"hawa-codemode",version:"0.1.0"},{capabilities:{}});let s=r.connect(o),a=new Promise((l,c)=>{setTimeout(()=>{c(new Error(`Connection to MCP server "${e}" timed out after ${sse}ms`))},sse)});await Promise.race([s,a])}else{if(!t.command)return{name:e,error:"Missing command for stdio MCP server"};let n=new wO({command:t.command,args:t.args??[],env:{...process.env,...t.env},stderr:"pipe"});r=new Lg({name:"hawa-codemode",version:"0.1.0"},{capabilities:{}});let i=r.connect(n),o=new Promise((s,a)=>{setTimeout(()=>{a(new Error(`Connection to MCP server "${e}" timed out after ${sse}ms`))},sse)});await Promise.race([i,o]),n.stderr?.on("data",s=>{let a=s.toString().trim();a&&Uc(e,`Server stderr: ${a}`)})}return{name:e,client:r,instructions:r.getInstructions()}}catch(r){let n=r instanceof Error?r.message:String(r);return Uc(e,`Connection failed: ${n}`),{name:e,error:n}}}async function ase(){let e=H6();return Promise.all(Object.entries(e).map(([t,r])=>o9n(t,r)))}async function lse(){let e=await ase(),t=[];for(let r of e)if(!("error"in r))try{let n=await r.client.listTools();for(let i of n.tools)t.push({...i,name:`cm_${r.name}_${i.name}`})}catch(n){let i=n instanceof Error?n.message:String(n);Uc(r.name,`Failed to list tools: ${i}`)}return t}async function azt(e,t,r){let n=await e.callTool({name:t,arguments:r},mf),i=n.content;if(n.isError){let s=i.filter(a=>a.type==="text").map(a=>"text"in a?a.text:"").join(`
|
|
3303
3303
|
`);throw new Error(s||"Tool call failed")}let o=i.filter(s=>s.type==="text").map(s=>"text"in s?s.text:"").join(`
|
|
3304
3304
|
`);if(o)try{return JSON.parse(o)}catch{return o}return n.content}ke();var s9n=k.object({code:k.string().describe("JavaScript async arrow function to execute")}),a9n=`Execute JavaScript code to solve tasks.
|
|
3305
3305
|
|
|
3306
|
-
Available
|
|
3306
|
+
Available providers and their methods are exposed under <codemode.<provider>.<method>(...)>. The detailed list can be found at the end of this prompt under "Available connectors & methods".
|
|
3307
3307
|
|
|
3308
|
-
You can also search or describe available
|
|
3308
|
+
You can also search or describe available methods/snippets:
|
|
3309
3309
|
- const matches = await codemode.search("short intent phrase");
|
|
3310
|
-
- const docs = await codemode.describe("
|
|
3310
|
+
- const docs = await codemode.describe("provider.method");
|
|
3311
3311
|
- await codemode.saveSnippet(name, code, description);
|
|
3312
3312
|
|
|
3313
|
-
## Configured servers
|
|
3314
|
-
|
|
3315
|
-
{{servers}}
|
|
3316
|
-
|
|
3317
3313
|
## Rules
|
|
3318
3314
|
|
|
3319
|
-
- The ONLY globals are the configured codemode
|
|
3320
|
-
- Never guess method names or their parameters. If you have not used a
|
|
3321
|
-
- \`codemode.search("short intent phrase")\` returns matching
|
|
3322
|
-
- \`codemode.describe("
|
|
3315
|
+
- The ONLY globals are the configured codemode providers and \`codemode\` itself (plus standard JavaScript). There is no \`host\`, \`fs\`, \`require\`, \`process\`, or Node.js API \u2014 all I/O goes through the providers listed below.
|
|
3316
|
+
- Never guess method names or their parameters. If you have not used a provider in this conversation, run a discovery pass first.
|
|
3317
|
+
- \`codemode.search("short intent phrase")\` returns matching methods/snippets with their names and descriptions.
|
|
3318
|
+
- \`codemode.describe("provider.method")\` returns TypeScript type declarations and documentation.
|
|
3323
3319
|
- \`codemode.saveSnippet(name, code, description)\` saves a code snippet to .codemode-snippets.json.
|
|
3324
3320
|
|
|
3325
3321
|
Write an async arrow function in JavaScript that returns the result.
|
|
@@ -3328,12 +3324,16 @@ Do NOT define named functions then call them \u2014 just write the arrow functio
|
|
|
3328
3324
|
|
|
3329
3325
|
Example:
|
|
3330
3326
|
async () => {
|
|
3331
|
-
const result = await codemode.
|
|
3327
|
+
const result = await codemode.my_provider.my_method({ key: "value" });
|
|
3332
3328
|
return result;
|
|
3333
|
-
}
|
|
3334
|
-
|
|
3329
|
+
}
|
|
3330
|
+
|
|
3331
|
+
## Available connectors & methods
|
|
3332
|
+
|
|
3333
|
+
{{providers}}`;async function l9n(){let e=H6(),t=Object.keys(e);if(t.length===0)return"No providers configured. You can still write plain JavaScript.";let r=await ase().catch(()=>[]),n={},i={};for(let o of t)n[o]=[];for(let o of r)if(!("error"in o)){i[o.name]=o.instructions;try{let{tools:s}=await o.client.listTools();for(let a of s)n[o.name].push(a.name)}catch(s){let a=s instanceof Error?s.message:String(s);Uc(o.name,`Failed to list tools: ${a}`)}}return t.map(o=>{let s=n[o],a=i[o]?.replace(/\r\n/g,`
|
|
3334
|
+
`).replace(/\n+/g,"\\n").trim(),l=s.length>0?s.join(" "):"(no methods available)";return`- ${o}:${a??""}
|
|
3335
3335
|
- ${l}`}).join(`
|
|
3336
|
-
`)}async function lzt(){return a9n.replace("{{
|
|
3336
|
+
`)}async function lzt(){return a9n.replace("{{providers}}",await l9n())}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=>azt(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 czt(){let e=new ese;return{name:"codemode",inputSchema:s9n,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":lzt()},async prompt(){return lzt()},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}`:Xoe(t.result)},renderToolUseMessage(t){return t.code.split(`
|
|
3337
3337
|
`)[0]??"codemode"},renderToolResultMessage(t){return cse.createElement(N,{flexDirection:"column",gap:1},t.error?cse.createElement(v,{key:"error",color:"red"},`Error: ${t.error}`):null,cse.createElement(v,{key:"result"},Xoe(t.result)))},async*call(t,r,n){let i=r??{abortController:new AbortController,readFileTimestamps:{}},o=H6(),s=Object.keys(o),[a,l]=await Promise.all([ase(),lse().catch(()=>[])]),c=await c9n(a),u=qLe(),f={search:async m=>izt(m,l,u,s),describe:async m=>szt(m,l,u),saveSnippet:async(m,A,E)=>{let _={name:m,description:E,code:A,savedAt:Date.now(),connectors:s};return rzt(_),{saved:!0,name:m}}},g=await e.execute(ezt(t.code),c,f);yield{type:"result",data:g,resultForAssistant:g.error?`Error: ${g.error}`:Xoe(g.result)}}}}var u9n=k.object({code:k.string().describe("JavaScript async arrow function to execute")}),YM=czt(),uzt={...YM,name:"codemode",inputSchema:u9n,async description(e){return YM.description(e)},async prompt(){return YM.description()},userFacingName(){return"codemode"},async isEnabled(){try{return(await lse()).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}`:YM.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return YM.renderToolResultMessage(e)},async*call(e,t,r){yield*YM.call(e,t,r)}};var dzt=()=>[jGt,uzt,r5t,LGt,qi,Om,v3,x3,GS,zS,jUt,FS,LS,HS,iE,a5t,C6,C4t,J8t,sHt,aHt,lHt,cHt,use,DHt,SHt,OHt,PHt,HHt,T3,GHt,VHt,bGt,CGt,SGt,DGt,MGt,d$t,ZHt,r$t,s$t],Xd=Fe(async()=>{let e=[...dzt(),...await Kk()],t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])}),NM=Fe(async()=>{let e=dzt().filter(r=>r.isReadOnly()),t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])});an.add(Xd);an.add(NM);an.getTools=Xd;$e();var IHt="Launch a new agent to handle complex, multi-step tasks autonomously.";async function fzt(e,t){let r=e.tools,n=await zPe(t);if(r){let i=Array.isArray(r)&&r.length===1&&r[0]==="*";r==="*"||i||Array.isArray(r)&&(n=n.filter(o=>r.includes(o.name)))}return n}async function zPe(e){return await(e?NM():Xd())}async function THt(e){let r=(await ly()).map(n=>{let i=Array.isArray(n.tools)?n.tools.join(", "):"*";return`- ${n.agentType}: ${n.whenToUse} (Tools: ${i})`}).join(`
|
|
3338
3338
|
`);return`Launch a new agent to handle complex, multi-step tasks autonomously.
|
|
3339
3339
|
|