@dahawa/hawa-code 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  `)),dUn(e,o,{encoding:r,flush:!0})}var xHt=new cde.default({fetchMethod:e=>EUn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function kHt(e){let t=EV(e);return xHt.get(t)||xHt.fetchMethod?.(t)}async function EUn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await Xkt(e,t.signal,15),n=0;for(let o of r)mB(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function PHt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var _Un=new cde.default({fetchMethod:e=>LHt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Ym(e){let t=EV(e);return PHt(_Un,t,()=>LHt(t))}function LHt(e){let r=Buffer.alloc(4096),n;try{n=wHt(e,"r");let o=RHt(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&&NHt(n)}}var SUn=new cde.default({fetchMethod:e=>QHt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function mB(e){let t=EV(e);return PHt(SUn,t,()=>QHt(t))}function QHt(e,t="utf8"){try{if(!DHt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=wHt(e,"r"),i=RHt(o,n,0,4096,0);NHt(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 VF(e){let t=OHt(e)?e:EV(ke(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function fPe(e){return e?OHt(e)?e:EV(ke(),e):void 0}function UHt(e){try{let t=fPe(e),r=t?gUn(ke(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return ee("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function ude(e){try{let t=AUn(e),r=CHt(e,IHt(e));if(!fUn(t))return;let i=pUn(t).filter(s=>CHt(s,IHt(s))===r&&hUn(t,s)!==e)[0];return i||void 0}catch(t){Se(`Error finding similar file for ${e}: ${t}`);return}}function pPe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function ew({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return pPe()?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 FHt(e){try{let t=mUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function Kx(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function CUn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function mPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,HHt.gt)(MACRO.VERSION,o))&&(i=wue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&CUn()},[s,r]),!r&&!s)return null;let a=yUn(TUn(e,Ci)),c=FHt(e),l=!a&&!c,u=NF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=X();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:X().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:X().secondaryText},"\u2022 ",p))))),e===bUn()&&Ki.createElement(C,{color:X().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var jF=F(ne(),1);var YF=F(ne(),1);var _V=F(ne(),1);function gPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return _V.default.createElement(x,{...o.option({isFocused:e})},e&&_V.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),_V.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&_V.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var jm=F(ne(),1);import{isDeepStrictEqual as IUn}from"node:util";var SV=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:APe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var vUn=(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}}},hPe=e=>e.flatMap(t=>{if("options"in t){let r=hPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),GHt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=hPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new SV(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}},EPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=hPe(t),[a,c]=(0,jm.useReducer)(vUn,{visibleOptionCount:e,defaultValue:r,options:t},GHt),[l,u]=(0,jm.useState)(s);s!==l&&!IUn(s,l)&&(c({type:"reset",state:GHt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,jm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,jm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,jm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,jm.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,jm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,jm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,jm.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 _Pe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var APe=e=>`HEADER-${e.optionValues.join(",")}`;function CC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=EPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});_Pe({isDisabled:e,state:c});let{styles:l}=ms("Select");return YF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:APe(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=YF.default.createElement(YF.default.Fragment,null,h.slice(0,S),YF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return YF.default.createElement(gPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function $Ht({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),jF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:X().secondaryBorder},jF.default.createElement(x,{marginBottom:1,flexDirection:"column"},jF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),jF.default.createElement(x,null,jF.default.createElement(CC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Pp=F(ne(),1);Ge();Ar();by();var RUn="2.3.1",Cy={VERSION:RUn,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 TPe=46,YHt=["(\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 dde({isDefaultModel:e=!1}){let t=Math.max(TPe,ke().length+12),r=X(),n=YHt[Math.floor(Math.random()*YHt.length)];return Pp.createElement(x,{flexDirection:"column"},Pp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Pp.createElement(C,null,Pp.createElement(C,null,n)," Welcome to"," ",Pp.createElement(C,{bold:!0},et),Pp.createElement(C,{color:r.secondaryText}," v",Cy.VERSION)),Pp.createElement(Pp.Fragment,null,Pp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Pp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Pp.createElement(C,{color:r.secondaryText},"cwd: ",ke()),Pp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Pp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var gS=F(ne(),1);De();var NJ=F(ne(),1);import{randomUUID as dS}from"crypto";$s();De();nr();Ar();De();Ge();import{existsSync as xC,readdirSync as Z9n,statSync as X9n}from"fs";import{join as ow,relative as e4n}from"path";import{homedir as _8t}from"os";import{platform as t4n}from"process";import{readFile as iw}from"fs/promises";Ar();fE();gr();import{join as kUn,sep as PUn}from"path";function Lp(){if(!zm())return!1;try{let e=nt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Wm(){return(kUn(ke(),".hcode","team-memory")+PUn).normalize("NFC")}function pE(e){let t=e.normalize("NFC"),r=Wm();return t.startsWith(r)}var S8t=F(RV(),1);Xo();var g8t=F(RV(),1);Ar();Ge();De();Op();import{readFile as p8t}from"fs/promises";import{existsSync as FPe,readdirSync as z9n,statSync as W9n}from"fs";import{join as HPe,relative as A8t}from"path";import{homedir as K9n}from"os";function m8t(e){try{let t=(0,g8t.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 J9n(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 GPe(e){let t=[];try{if(!FPe(e))return t;let r=z9n(e);for(let n of r){let o=HPe(e,n),i=W9n(o);i.isDirectory()?t.push(...GPe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function h8t(){let e=[];try{let t=HPe(K9n(),Fn,"rules");if(FPe(t)){let r=GPe(t);for(let n of r)try{let o=await p8t(n,"utf-8"),{paths:i,content:s}=m8t(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=HPe(ke(),Fn,"rules");if(FPe(t)){let r=GPe(t);for(let n of r)try{let o=await p8t(n,"utf-8"),{paths:i,content:s}=m8t(o);i.length>0&&e.push({filePath:A8t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function E8t(e,t){e=zce(e);let r=zce(ke()),n=e.startsWith(r)?A8t(r,e):e;return t.filter(o=>J9n(n,o.paths))}var r4n=`# hawaCodeMd
679
+ `)}function FHt(e){try{let t=mUn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return Se(`Error checking directory: ${t}`),!1}}Ge();function Kx(){let e=Xn();e.hasCompletedProjectOnboarding||ps({...e,hasCompletedProjectOnboarding:!0})}function CUn(){let e=hr();To({...e,lastReleaseNotesSeen:MACRO.VERSION})}function mPe({workspaceDir:e}){let r=!Xn().hasCompletedProjectOnboarding,o=hr().lastReleaseNotesSeen,i=[];(!o||(0,HHt.gt)(MACRO.VERSION,o))&&(i=wue[MACRO.VERSION]||[]);let s=i.length>0;if(Ki.useEffect(()=>{s&&!r&&CUn()},[s,r]),!r&&!s)return null;let a=yUn(TUn(e,Ci)),c=FHt(e),l=!a&&!c,u=NF.isEnabled&&!hr().shiftEnterKeyBindingInstalled,d=X();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:X().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:X().secondaryText},"\u2022 ",p))))),e===bUn()&&Ki.createElement(C,{color:X().warning},"Note: You have launched ",Ki.createElement(C,{bold:!0},et)," in your home directory. For the best experience, launch it in a project directory instead."))}var jF=F(ne(),1);var YF=F(ne(),1);var _V=F(ne(),1);function gPe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=ms("Select");return _V.default.createElement(x,{...o.option({isFocused:e})},e&&_V.default.createElement(C,{...o.focusIndicator()},r?Jr.triangleDownSmall:Jr.pointer),_V.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&_V.default.createElement(C,{...o.selectedIndicator()},Jr.tick))}var jm=F(ne(),1);import{isDeepStrictEqual as IUn}from"node:util";var SV=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:APe(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var vUn=(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}}},hPe=e=>e.flatMap(t=>{if("options"in t){let r=hPe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),GHt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=hPe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new SV(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}},EPe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=hPe(t),[a,c]=(0,jm.useReducer)(vUn,{visibleOptionCount:e,defaultValue:r,options:t},GHt),[l,u]=(0,jm.useState)(s);s!==l&&!IUn(s,l)&&(c({type:"reset",state:GHt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,jm.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,jm.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,jm.useCallback)(()=>{c({type:"select-focused-option"})},[]),A=(0,jm.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,jm.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,jm.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,jm.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 _Pe=({isDisabled:e=!1,state:t})=>{Ct((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var APe=e=>`HEADER-${e.optionValues.join(",")}`;function CC({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=EPe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});_Pe({isDisabled:e,state:c});let{styles:l}=ms("Select");return YF.default.createElement(x,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:APe(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=YF.default.createElement(YF.default.Fragment,null,h.slice(0,S),YF.default.createElement(C,{...l.highlightedText()},r),h.slice(S+r.length))}return YF.default.createElement(gPe,{key:d,isFocused:p,isSelected:f,smallPointer:A},E)}))}function $Ht({onDone:e}){return Ct((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),jF.default.createElement(x,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:X().secondaryBorder},jF.default.createElement(x,{marginBottom:1,flexDirection:"column"},jF.default.createElement(C,{bold:!0},"You've spent $5 this session.")),jF.default.createElement(x,null,jF.default.createElement(CC,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var An=F(ne(),1),Kt=F(ne(),1);var Pp=F(ne(),1);Ge();Ar();by();var RUn="2.3.2",Cy={VERSION:RUn,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 TPe=46,YHt=["(\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 dde({isDefaultModel:e=!1}){let t=Math.max(TPe,ke().length+12),r=X(),n=YHt[Math.floor(Math.random()*YHt.length)];return Pp.createElement(x,{flexDirection:"column"},Pp.createElement(x,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},Pp.createElement(C,null,Pp.createElement(C,null,n)," Welcome to"," ",Pp.createElement(C,{bold:!0},et),Pp.createElement(C,{color:r.secondaryText}," v",Cy.VERSION)),Pp.createElement(Pp.Fragment,null,Pp.createElement(x,{paddingLeft:2,flexDirection:"column",gap:1},Pp.createElement(C,{color:r.secondaryText,italic:!0},"/help for help"),Pp.createElement(C,{color:r.secondaryText},"cwd: ",ke()),Pp.createElement(C,{color:r.secondaryText},"model: ",bo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),Pp.createElement(C,{color:r.secondaryText},"small fast model: ",bo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var gS=F(ne(),1);De();var NJ=F(ne(),1);import{randomUUID as dS}from"crypto";$s();De();nr();Ar();De();Ge();import{existsSync as xC,readdirSync as Z9n,statSync as X9n}from"fs";import{join as ow,relative as e4n}from"path";import{homedir as _8t}from"os";import{platform as t4n}from"process";import{readFile as iw}from"fs/promises";Ar();fE();gr();import{join as kUn,sep as PUn}from"path";function Lp(){if(!zm())return!1;try{let e=nt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Wm(){return(kUn(ke(),".hcode","team-memory")+PUn).normalize("NFC")}function pE(e){let t=e.normalize("NFC"),r=Wm();return t.startsWith(r)}var S8t=F(RV(),1);Xo();var g8t=F(RV(),1);Ar();Ge();De();Op();import{readFile as p8t}from"fs/promises";import{existsSync as FPe,readdirSync as z9n,statSync as W9n}from"fs";import{join as HPe,relative as A8t}from"path";import{homedir as K9n}from"os";function m8t(e){try{let t=(0,g8t.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 J9n(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 GPe(e){let t=[];try{if(!FPe(e))return t;let r=z9n(e);for(let n of r){let o=HPe(e,n),i=W9n(o);i.isDirectory()?t.push(...GPe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){Se(r)}return t}async function h8t(){let e=[];try{let t=HPe(K9n(),Fn,"rules");if(FPe(t)){let r=GPe(t);for(let n of r)try{let o=await p8t(n,"utf-8"),{paths:i,content:s}=m8t(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=HPe(ke(),Fn,"rules");if(FPe(t)){let r=GPe(t);for(let n of r)try{let o=await p8t(n,"utf-8"),{paths:i,content:s}=m8t(o);i.length>0&&e.push({filePath:A8t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){Se(o)}}}catch(t){Se(t)}return e}function E8t(e,t){e=zce(e);let r=zce(ke()),n=e.startsWith(r)?A8t(r,e):e;return t.filter(o=>J9n(n,o.paths))}var r4n=`# 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 n4n(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 rge=null,b4e=!1;function Uno(){rge=null,b4e=!1}kt.on("proxy:changed",Uno);function Fno(){if(b4e)return rge;if(b4e=!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&&(rge=new RZt.ProxyAgent({uri:e}),zt(`[proxy] using proxy: ${e}`)),rge}function Hno(){let e=Fno();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function oge(e){let t=e||process.env.API_TYPE,r=Hno();switch(t){case"openai":return kno(r);case"openai-responses":return Pno(r);case"gemini":return Lno(r);default:return Qno(r)}}by();var DZt=F(ne(),1);function NZt(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=Gno(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function Gno(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||$no(t)?0:qno(t)?2:1}function $no(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function qno(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 C0(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function v4e(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m ${o}s`:`${n}m ${o}s`}function zC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function ige(e,t,r){let n=[];return typeof e=="number"&&n.push(v4e(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${zC(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}De();$s();var eu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function sge(e,t){eu.totalCost+=e,eu.totalAPIDuration+=t}function age(e,t){eu.inputTokens+=e,eu.outputTokens+=t,kt.emit("token:change",{inputTokens:eu.inputTokens,outputTokens:eu.outputTokens})}function cge(e,t){eu.cacheCreationTokens+=e,eu.cacheReadTokens+=t}function uM(){return{inputTokens:eu.inputTokens,outputTokens:eu.outputTokens,cacheCreationTokens:eu.cacheCreationTokens,cacheReadTokens:eu.cacheReadTokens}}function m9(){return eu.totalCost}function lge(){return Date.now()-eu.startTime}function OZt(){return eu.totalAPIDuration}function BZt(e){eu.currentContextTokens=e}function MZt(){return eu.currentContextTokens}function Vno(){return St.grey(`Total duration (API): ${C0(eu.totalAPIDuration)}
775
775
  Total duration (wall): ${C0(lge())}`)}function kZt(){(0,DZt.useEffect)(()=>{let e=()=>{process.stdout.write(`
776
776
  `+Vno()+`
777
- `);let t=Xn();ps({...t,lastCost:eu.totalCost,lastAPIDuration:eu.totalAPIDuration,lastDuration:lge(),lastSessionId:Z_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}De();Ge();Ge();var x4e="2.3.1";globalThis.MACRO={VERSION:x4e,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 uge=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${x4e} (${process.env.USER_TYPE})`;De();De();nr();function Yf(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]=Wno(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]=Yno(n,r));return}}}),t}function Yno(e,t){return{...e,message:{...e.message,content:zno(e.message.content,jno(t.content.content))}}}function jno(e){return`
777
+ `);let t=Xn();ps({...t,lastCost:eu.totalCost,lastAPIDuration:eu.totalAPIDuration,lastDuration:lge(),lastSessionId:Z_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}De();Ge();Ge();var x4e="2.3.2";globalThis.MACRO={VERSION:x4e,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 uge=process.env.HAWA_CODE_USER_AGENT||`${Ii}/${x4e} (${process.env.USER_TYPE})`;De();De();nr();function Yf(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]=Wno(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]=Yno(n,r));return}}}),t}function Yno(e,t){return{...e,message:{...e.message,content:zno(e.message.content,jno(t.content.content))}}}function jno(e){return`
778
778
  <system-reminder>
779
779
  The user sent the following message:
780
780
  ${e}
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_${QB()}`,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 O3r(`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"}}},zye=new Gye;var gmt=X(fmt(),1);ar();us();function kg(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function pmt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function YXr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function VXr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function WXr(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 R5(e,t,r){hz(t,e),Ez(t,WXr(e,r),r)}function I2(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 N5(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function _Ie(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 mmt=["/v1/messages"];function yIe(e){let t;try{typeof e=="string"?t=new hv(e):e instanceof hv?t=e:t=new hv(e.url)}catch{return""}let r=t.pathname;for(let n of mmt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function RZ(e,t){let r=typeof e=="string"?e:e instanceof hv?e.toString():e.url,n;try{n=new hv(r).pathname}catch{return!1}return mmt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function KXr(e){return async(t,r)=>{if(!RZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await NK.transformRequestOut(n),o=yIe(t)+"/chat/completions",s=kg(r.headers),a=s.authorization??s.Authorization??"";YXr(i,pmt(s));let l=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i),signal:r.signal});if(!l.ok){let _=await l.text();return Z(`OpenAI Chat Completions API error: ${l.status}`,{url:o,errorResponse:_}),_Ie("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:kg(l.headers)},openai:{request:{body:i},response:{}}};if(!c){let _=await l.text(),b=new Response(_,{status:l.status,statusText:l.statusText,headers:N5(l.headers)}),S=await NK.transformResponseIn(b,n),I=await S.text();try{R5({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(I)}},u)}catch(w){Z("\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=I2(l.body),m=new Response(g.stream,{status:l.status,statusText:l.statusText,headers:N5(l.headers)}),A=await NK.transformResponseIn(m,n),E=I2(A.body);return Promise.all([g.done,E.done]).then(async([_,b])=>{try{R5({...f,openai:{...f.openai,response:{body:await qit(_)}},response:{...f.response,body:await CU(b)}},u)}catch(S){Z("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>Z("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(E.stream,{status:A.status,statusText:A.statusText,headers:A.headers})}}function JXr(e){return async(t,r)=>{if(!RZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await BK.transformRequestOut(n),o=kg(r.headers);VXr(i,pmt(o));let s=JSON.stringify(i),l=yIe(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 Z(`OpenAI Responses API error: ${u.status} ${u.statusText}`,{url:l,status:u.status,errorResponse:S}),_Ie("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:kg(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:N5(u.headers)}),w=await BK.transformResponseIn(I,n),O=await w.text();try{R5({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},g,"responses")}catch(P){Z("\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=I2(u.body),E=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:N5(u.headers)}),_=await BK.transformResponseIn(E,n),b=I2(_.body);return Promise.all([A.done,b.done]).then(async([S,I])=>{try{R5({...m,openai:{...m.openai,response:{body:await Hit(S)}},response:{...m.response,body:await CU(I)}},g,"responses")}catch(w){Z("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+w?.stack)}}).catch(S=>Z("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(b.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function ZXr(e){return async(t,r)=>{if(!RZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=kg(r.headers),o=await zye.transformRequestOut(n),s=JSON.stringify(o),a=yIe(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 Z("gemini request error:",b),b}if(!c.ok){let b=await c.text();return Z(`Gemini API error response: ${c.status} ${c.statusText}`,{url:a,status:c.status,errorResponse:b}),_Ie("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:kg(r.headers),body:n},response:{status:c.status,statusText:c.statusText,headers:kg(c.headers)},openai:{request:{body:o},response:{}}},m=I2(c.body),A=new Response(m.stream,{status:c.status,statusText:c.statusText,headers:N5(c.headers)}),E=await zye.transformResponseIn(A),_=I2(E.body);return Promise.all([m.done,_.done]).then(async([b,S])=>{try{let I=u?$it(b):JSON.parse(b),w=u?await CU(S):JSON.parse(S);R5({...g,openai:{...g.openai,response:{body:I}},response:{...g.response,body:w}},f)}catch(I){Z("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+I?.stack)}}).catch(b=>Z("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+b)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function XXr(e){return async(t,r)=>{if(!RZ(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=kg(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();Z(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof hv?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 hv?t.toString():t.url,method:r.method,headers:kg(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:kg(a.headers)}};return(async()=>{if(c){let m=await a.text();u.response.body=await CU(m)}else u.response.body=await a.json();let g=kg(r.headers)["x-agent-id"];hz(g,u),Ez(g,{request:u.request.body.messages,response:u.response.body.content})})().catch(f=>Z(`\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 DZ=null,EIe=!1;function een(){DZ=null,EIe=!1}pr.on("proxy:changed",een);function ten(){if(EIe)return DZ;if(EIe=!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&&(DZ=new gmt.ProxyAgent({uri:e}),Kt(`[proxy] using proxy: ${e}`)),DZ}function ren(){let e=ten();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function NZ(e){let t=e||process.env.API_TYPE,r=ren();switch(t){case"openai":return KXr(r);case"openai-responses":return JXr(r);case"gemini":return ZXr(r);default:return XXr(r)}}dh();var sen=X(Ae(),1);function Amt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=nen(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function nen(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ien(t)?0:oen(t)?2:1}function ien(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function oen(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 o_(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 zC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Me();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function BZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function OZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function kZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function bIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function hmt(){return dc.totalCost}function Emt(){return Date.now()-dc.startTime}function _mt(){return dc.totalAPIDuration}function ymt(e){dc.currentContextTokens=e}function bmt(){return dc.currentContextTokens}Me();qe();qe();var CIe="2.3.1";globalThis.MACRO={VERSION:CIe,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 MZ=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${CIe} (${process.env.USER_TYPE})`;import{randomUUID as my}from"crypto";us();Me();Zt();vr();Me();qe();import{existsSync as u_,readdirSync as wnn,statSync as Dnn}from"fs";import{join as VC,relative as Rnn}from"path";import{homedir as jAt}from"os";import{platform as Nnn}from"process";import{readFile as WC}from"fs/promises";vr();Mg();ar();import{join as den,sep as fen}from"path";function dm(){if(!um())return!1;try{let e=lt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function $f(){return(den(Qe(),".hcode","team-memory")+fen).normalize("NFC")}function a_(e){let t=e.normalize("NFC"),r=$f();return t.startsWith(r)}var YAt=X(U5(),1);Qi();var qAt=X(U5(),1);vr();qe();Me();Cu();import{readFile as UAt}from"fs/promises";import{existsSync as FIe,readdirSync as Inn,statSync as Tnn}from"fs";import{join as UIe,relative as $At}from"path";import{homedir as vnn}from"os";function HAt(e){try{let t=(0,qAt.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 xnn(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 HIe(e){let t=[];try{if(!FIe(e))return t;let r=Inn(e);for(let n of r){let i=UIe(e,n),o=Tnn(i);o.isDirectory()?t.push(...HIe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function GAt(){let e=[];try{let t=UIe(vnn(),Xr,"rules");if(FIe(t)){let r=HIe(t);for(let n of r)try{let i=await UAt(n,"utf-8"),{paths:o,content:s}=HAt(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=UIe(Qe(),Xr,"rules");if(FIe(t)){let r=HIe(t);for(let n of r)try{let i=await UAt(n,"utf-8"),{paths:o,content:s}=HAt(i);o.length>0&&e.push({filePath:$At(Qe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function zAt(e,t){e=mV(e);let r=mV(Qe()),n=e.startsWith(r)?$At(r,e):e;return t.filter(i=>xnn(n,i.paths))}var Bnn=`# hawaCodeMd
760
+ Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var DZ=null,EIe=!1;function een(){DZ=null,EIe=!1}pr.on("proxy:changed",een);function ten(){if(EIe)return DZ;if(EIe=!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&&(DZ=new gmt.ProxyAgent({uri:e}),Kt(`[proxy] using proxy: ${e}`)),DZ}function ren(){let e=ten();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function NZ(e){let t=e||process.env.API_TYPE,r=ren();switch(t){case"openai":return KXr(r);case"openai-responses":return JXr(r);case"gemini":return ZXr(r);default:return XXr(r)}}dh();var sen=X(Ae(),1);function Amt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=nen(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function nen(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||ien(t)?0:oen(t)?2:1}function ien(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function oen(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 o_(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 zC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}Me();us();var dc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function BZ(e,t){dc.totalCost+=e,dc.totalAPIDuration+=t}function OZ(e,t){dc.inputTokens+=e,dc.outputTokens+=t,pr.emit("token:change",{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens})}function kZ(e,t){dc.cacheCreationTokens+=e,dc.cacheReadTokens+=t}function bIe(){return{inputTokens:dc.inputTokens,outputTokens:dc.outputTokens,cacheCreationTokens:dc.cacheCreationTokens,cacheReadTokens:dc.cacheReadTokens}}function hmt(){return dc.totalCost}function Emt(){return Date.now()-dc.startTime}function _mt(){return dc.totalAPIDuration}function ymt(e){dc.currentContextTokens=e}function bmt(){return dc.currentContextTokens}Me();qe();qe();var CIe="2.3.2";globalThis.MACRO={VERSION:CIe,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 MZ=process.env.HAWA_CODE_USER_AGENT||`${Ki}/${CIe} (${process.env.USER_TYPE})`;import{randomUUID as my}from"crypto";us();Me();Zt();vr();Me();qe();import{existsSync as u_,readdirSync as wnn,statSync as Dnn}from"fs";import{join as VC,relative as Rnn}from"path";import{homedir as jAt}from"os";import{platform as Nnn}from"process";import{readFile as WC}from"fs/promises";vr();Mg();ar();import{join as den,sep as fen}from"path";function dm(){if(!um())return!1;try{let e=lt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function $f(){return(den(Qe(),".hcode","team-memory")+fen).normalize("NFC")}function a_(e){let t=e.normalize("NFC"),r=$f();return t.startsWith(r)}var YAt=X(U5(),1);Qi();var qAt=X(U5(),1);vr();qe();Me();Cu();import{readFile as UAt}from"fs/promises";import{existsSync as FIe,readdirSync as Inn,statSync as Tnn}from"fs";import{join as UIe,relative as $At}from"path";import{homedir as vnn}from"os";function HAt(e){try{let t=(0,qAt.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 xnn(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 HIe(e){let t=[];try{if(!FIe(e))return t;let r=Inn(e);for(let n of r){let i=UIe(e,n),o=Tnn(i);o.isDirectory()?t.push(...HIe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function GAt(){let e=[];try{let t=UIe(vnn(),Xr,"rules");if(FIe(t)){let r=HIe(t);for(let n of r)try{let i=await UAt(n,"utf-8"),{paths:o,content:s}=HAt(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=UIe(Qe(),Xr,"rules");if(FIe(t)){let r=HIe(t);for(let n of r)try{let i=await UAt(n,"utf-8"),{paths:o,content:s}=HAt(i);o.length>0&&e.push({filePath:$At(Qe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function zAt(e,t){e=mV(e);let r=mV(Qe()),n=e.startsWith(r)?$At(r,e):e;return t.filter(i=>xnn(n,i.paths))}var Bnn=`# 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 Onn(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 Kv(){return H5()?`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:AI(c.inputSchema));return{name:c.name,description:`${u}
1130
1130
 
1131
1131
  Schema:
1132
- ${f}`}}),{messages:a}=t,l=iln(o);return oln(o,l,s,a)}},$_t=sln;Pg();var ku=X(Ae(),1),uO=X(Ae(),1);Me();Me();import{existsSync as aln,readdirSync as lln,statSync as cln}from"fs";import{join as uln}from"path";function dln(){let e=Ji.plan();if(!aln(e))return[];try{return lln(e).filter(r=>r.endsWith(".md")).map(r=>{let n=uln(e,r),i=cln(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var G_t=({onSelect:e})=>{let[t,r]=(0,uO.useState)([]),[n,i]=(0,uO.useState)(0),[o,s]=(0,uO.useState)(!1);(0,uO.useEffect)(()=>{let c=dln();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}))];Tr((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?ku.createElement(N,{flexDirection:"column",marginY:1},ku.createElement(N,{marginBottom:1},ku.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")),ku.createElement(N,{marginBottom:1},ku.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 ku.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},ku.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),ku.createElement(v,{color:f?l.claude:l.text}," "),ku.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&ku.createElement(v,{dimColor:!0}," ","(",Oge(c.modified),")"))}),ku.createElement(N,{marginTop:1,marginLeft:2},ku.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):ku.createElement(N,{flexDirection:"column",marginY:1},ku.createElement(v,null,"Loading plan history..."))};var z_t=X(Ae(),1),fln={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):z_t.createElement(G_t,{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"}},j_t=fln;Pg();var pln={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"}},Y_t=pln;vr();import{resolve as mln}from"path";var gln={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=Qe(),n=mln(r,t);la(n);let i=Qe();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},V_t=gln;var TCt=X(Ae(),1);var Hn=X(Ae(),1);var Yln=X(Ae(),1);var S9=X(Ae(),1),Gln=X(Z_t(),1);var X_t={info:"blue",success:"green",error:"red",warning:"yellow"},Dln={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:X_t[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:X_t[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}}},eyt=Dln;var Rln={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},tyt=Rln;var Nln={styles:{input:({isFocused:e})=>({dimColor:!e})}},ryt=Nln;var Bln={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})}},nyt=Bln;var Oln={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},iyt=Oln;var kln={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Qr.square,remainingCharacter:Qr.squareLightShade})},oyt=kln;var Mln={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=Mln;var Qln={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},ayt=Qln;var Pln={success:"green",error:"red",warning:"yellow",info:"blue"},Lln={success:Qr.tick,error:Qr.cross,warning:Qr.warning,info:Qr.info},Fln={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Pln[e]}),message:()=>({})},config:({variant:e})=>({icon:Lln[e]})},lyt=Fln;var Uln={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Qr.line})},cyt=Uln;var Hln={styles:{value:()=>({})}},uyt=Hln;var qln={styles:{value:()=>({})}},dyt=qln;var $ln={styles:{value:()=>({})}},fyt=$ln;var zln={components:{Alert:eyt,Badge:tyt,ConfirmInput:ryt,MultiSelect:nyt,OrderedList:iyt,ProgressBar:oyt,Select:syt,Spinner:ayt,StatusMessage:lyt,UnorderedList:cyt,TextInput:uyt,EmailInput:dyt,PasswordInput:fyt}},jln=(0,S9.createContext)(zln);var po=e=>(0,S9.useContext)(jln).components[e];var Vln=X(Ae(),1);var __=X(Ae(),1);var fO=X(Ae(),1);var pyt=X(Ae(),1);var I9=Qr.line;var ZX=(0,pyt.createContext)({marker:I9});function myt({children:e}){let{marker:t}=(0,fO.useContext)(ZX),{styles:r}=po("UnorderedList");return fO.default.createElement(N,{...r.listItem()},fO.default.createElement(v,{...r.marker()},t),fO.default.createElement(N,{...r.content()},e))}var gyt=X(Ae(),1),Tve=(0,gyt.createContext)({depth:0});function Wln({children:e}){let{depth:t}=(0,__.useContext)(Tve),{styles:r,config:n}=po("UnorderedList"),i=(0,__.useMemo)(()=>({depth:t+1}),[t]),o=(0,__.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??I9}:{marker:I9}},[n,t]);return __.default.createElement(Tve.Provider,{value:i},__.default.createElement(ZX.Provider,{value:o},__.default.createElement(N,{...r.list()},e)))}Wln.Item=myt;var Jln=X(Ae(),1);var Kln=X(Ae(),1);var T9=X(Ae(),1);var pO=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 Ayt=X(Ae(),1);var mO=X(Ae(),1);var v9=X(Ae(),1);function hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return v9.default.createElement(N,{...n.option({isFocused:e})},e&&v9.default.createElement(v,{...n.focusIndicator()},Qr.pointer),v9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&v9.default.createElement(v,{...n.selectedIndicator()},Qr.tick))}var hm=X(Ae(),1);import{isDeepStrictEqual as Zln}from"node:util";var Xln=(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}},Eyt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new pO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},_yt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,hm.useReducer)(Xln,{visibleOptionCount:e,defaultValue:r,options:t},Eyt),[s,a]=(0,hm.useState)(t);t!==s&&!Zln(t,s)&&(o({type:"reset",state:Eyt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,hm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,hm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,hm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,hm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,hm.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 yyt=({isDisabled:e=!1,state:t})=>{Tr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function gO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=_yt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});yyt({isDisabled:e,state:s});let{styles:a}=po("Select");return mO.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=mO.default.createElement(mO.default.Fragment,null,l.label.slice(0,u),mO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return mO.default.createElement(hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var ecn=X(Ae(),1);var byt=X(Ae(),1);var rcn=X(Ae(),1);var XX=X(Ae(),1);var tcn=X(Ae(),1);var oBi=sr.inverse(" ");var qg=X(Ae(),1);var AO=X(Ae(),1);var Cyt=X(Ae(),1);var eee=(0,Cyt.createContext)({marker:Qr.line});function tee({children:e}){let{marker:t}=(0,AO.useContext)(eee),{styles:r}=po("OrderedList");return AO.default.createElement(N,{...r.listItem()},AO.default.createElement(v,{...r.marker()},t),AO.default.createElement(N,{...r.content()},e))}var Syt=X(Ae(),1),vve=(0,Syt.createContext)({marker:""});function $g({children:e}){let{marker:t}=(0,qg.useContext)(vve),{styles:r}=po("OrderedList"),n=0;for(let o of qg.default.Children.toArray(e))!(0,qg.isValidElement)(o)||o.type!==tee||n++;let i=String(n).length;return qg.default.createElement(N,{...r.list()},qg.default.Children.map(e,(o,s)=>{if(!(0,qg.isValidElement)(o)||o.type!==tee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return qg.default.createElement(vve.Provider,{value:{marker:l}},qg.default.createElement(eee.Provider,{value:{marker:l}},o))}))}$g.Item=tee;var icn=X(Ae(),1);var xve=X(Ae(),1);var ncn=X(Ae(),1);var kBi=sr.inverse(" ");var ocn=X(Ae(),1);var scn=X(Ae(),1);var lcn=X(Ae(),1);var ree=X(Ae(),1);var acn=X(Ae(),1);var i2i=sr.inverse(" ");var qi=X(Ae(),1);var wve=X(Ae(),1),Dve=X(Ae(),1);$5();us();Qi();Lv();ar();var Iyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function Jv(){let e=[...Iyt,...[...Iyt].reverse()],{frame:t}=pR({interval:120});return wve.createElement(N,{flexWrap:"nowrap",height:1,width:2},wve.createElement(v,{color:Pe().claude},e[t%e.length]))}var oee=X(Ae(),1);var iee=null,y_=null,nee=new Set;function Nve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=bpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Rve(){y_&&(iee=Nve(y_),nee.forEach(e=>e(iee)))}function ccn(e,t){return y_!==e&&(y_&&y_.off("resize",Rve),y_=e,iee=Nve(e),e.on("resize",Rve)),nee.add(t),()=>{nee.delete(t),nee.size===0&&y_&&(y_.off("resize",Rve),y_=null,iee=null)}}function Bve(){let{stdout:e}=fR(),[t,r]=(0,oee.useState)(()=>Nve(e));return(0,oee.useEffect)(()=>ccn(e,r),[e]),t}function hO(){return Bve()}qe();bf();Me();sh();Me();var YOi=X(Xve(),1);import{homedir as M9}from"os";import{join as yO}from"path";import{existsSync as Q9,mkdirSync as pCt,appendFileSync as fCt,readFileSync as mCt,constants as sfn,writeFileSync as afn,unlinkSync as gCt,statSync as lfn}from"fs";import{platform as ACt}from"process";import{accessSync as cfn}from"fs";var ofn="2.3.1",k9={VERSION:ofn,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"};qe();var Xv=yO(O0,".update.lock"),ufn=300*1e3;function hCt(){try{if(Q9(O0)||pCt(O0,{recursive:!0}),Q9(Xv)){let e=lfn(Xv);if(Date.now()-e.mtimeMs<ufn)return!1;try{gCt(Xv)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return afn(Xv,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function ECt(){try{Q9(Xv)&&mCt(Xv,"utf8")===`${process.pid}`&&gCt(Xv)}catch(e){ve(`Failed to release lock: ${e}`)}}async function exe(){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{cfn(t,sfn.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 _Ct(e){if(!hCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:k9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{Q9(e)||pCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1132
+ ${f}`}}),{messages:a}=t,l=iln(o);return oln(o,l,s,a)}},$_t=sln;Pg();var ku=X(Ae(),1),uO=X(Ae(),1);Me();Me();import{existsSync as aln,readdirSync as lln,statSync as cln}from"fs";import{join as uln}from"path";function dln(){let e=Ji.plan();if(!aln(e))return[];try{return lln(e).filter(r=>r.endsWith(".md")).map(r=>{let n=uln(e,r),i=cln(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var G_t=({onSelect:e})=>{let[t,r]=(0,uO.useState)([]),[n,i]=(0,uO.useState)(0),[o,s]=(0,uO.useState)(!1);(0,uO.useEffect)(()=>{let c=dln();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}))];Tr((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?ku.createElement(N,{flexDirection:"column",marginY:1},ku.createElement(N,{marginBottom:1},ku.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")),ku.createElement(N,{marginBottom:1},ku.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 ku.createElement(N,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},ku.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),ku.createElement(v,{color:f?l.claude:l.text}," "),ku.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&ku.createElement(v,{dimColor:!0}," ","(",Oge(c.modified),")"))}),ku.createElement(N,{marginTop:1,marginLeft:2},ku.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):ku.createElement(N,{flexDirection:"column",marginY:1},ku.createElement(v,null,"Loading plan history..."))};var z_t=X(Ae(),1),fln={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):z_t.createElement(G_t,{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"}},j_t=fln;Pg();var pln={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"}},Y_t=pln;vr();import{resolve as mln}from"path";var gln={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=Qe(),n=mln(r,t);la(n);let i=Qe();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},V_t=gln;var TCt=X(Ae(),1);var Hn=X(Ae(),1);var Yln=X(Ae(),1);var S9=X(Ae(),1),Gln=X(Z_t(),1);var X_t={info:"blue",success:"green",error:"red",warning:"yellow"},Dln={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:X_t[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:X_t[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}}},eyt=Dln;var Rln={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},tyt=Rln;var Nln={styles:{input:({isFocused:e})=>({dimColor:!e})}},ryt=Nln;var Bln={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})}},nyt=Bln;var Oln={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},iyt=Oln;var kln={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Qr.square,remainingCharacter:Qr.squareLightShade})},oyt=kln;var Mln={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=Mln;var Qln={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},ayt=Qln;var Pln={success:"green",error:"red",warning:"yellow",info:"blue"},Lln={success:Qr.tick,error:Qr.cross,warning:Qr.warning,info:Qr.info},Fln={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Pln[e]}),message:()=>({})},config:({variant:e})=>({icon:Lln[e]})},lyt=Fln;var Uln={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Qr.line})},cyt=Uln;var Hln={styles:{value:()=>({})}},uyt=Hln;var qln={styles:{value:()=>({})}},dyt=qln;var $ln={styles:{value:()=>({})}},fyt=$ln;var zln={components:{Alert:eyt,Badge:tyt,ConfirmInput:ryt,MultiSelect:nyt,OrderedList:iyt,ProgressBar:oyt,Select:syt,Spinner:ayt,StatusMessage:lyt,UnorderedList:cyt,TextInput:uyt,EmailInput:dyt,PasswordInput:fyt}},jln=(0,S9.createContext)(zln);var po=e=>(0,S9.useContext)(jln).components[e];var Vln=X(Ae(),1);var __=X(Ae(),1);var fO=X(Ae(),1);var pyt=X(Ae(),1);var I9=Qr.line;var ZX=(0,pyt.createContext)({marker:I9});function myt({children:e}){let{marker:t}=(0,fO.useContext)(ZX),{styles:r}=po("UnorderedList");return fO.default.createElement(N,{...r.listItem()},fO.default.createElement(v,{...r.marker()},t),fO.default.createElement(N,{...r.content()},e))}var gyt=X(Ae(),1),Tve=(0,gyt.createContext)({depth:0});function Wln({children:e}){let{depth:t}=(0,__.useContext)(Tve),{styles:r,config:n}=po("UnorderedList"),i=(0,__.useMemo)(()=>({depth:t+1}),[t]),o=(0,__.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??I9}:{marker:I9}},[n,t]);return __.default.createElement(Tve.Provider,{value:i},__.default.createElement(ZX.Provider,{value:o},__.default.createElement(N,{...r.list()},e)))}Wln.Item=myt;var Jln=X(Ae(),1);var Kln=X(Ae(),1);var T9=X(Ae(),1);var pO=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 Ayt=X(Ae(),1);var mO=X(Ae(),1);var v9=X(Ae(),1);function hyt({isFocused:e,isSelected:t,children:r}){let{styles:n}=po("Select");return v9.default.createElement(N,{...n.option({isFocused:e})},e&&v9.default.createElement(v,{...n.focusIndicator()},Qr.pointer),v9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&v9.default.createElement(v,{...n.selectedIndicator()},Qr.tick))}var hm=X(Ae(),1);import{isDeepStrictEqual as Zln}from"node:util";var Xln=(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}},Eyt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new pO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},_yt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,hm.useReducer)(Xln,{visibleOptionCount:e,defaultValue:r,options:t},Eyt),[s,a]=(0,hm.useState)(t);t!==s&&!Zln(t,s)&&(o({type:"reset",state:Eyt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,hm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,hm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,hm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,hm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,hm.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 yyt=({isDisabled:e=!1,state:t})=>{Tr((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function gO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=_yt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});yyt({isDisabled:e,state:s});let{styles:a}=po("Select");return mO.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=mO.default.createElement(mO.default.Fragment,null,l.label.slice(0,u),mO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return mO.default.createElement(hyt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var ecn=X(Ae(),1);var byt=X(Ae(),1);var rcn=X(Ae(),1);var XX=X(Ae(),1);var tcn=X(Ae(),1);var oBi=sr.inverse(" ");var qg=X(Ae(),1);var AO=X(Ae(),1);var Cyt=X(Ae(),1);var eee=(0,Cyt.createContext)({marker:Qr.line});function tee({children:e}){let{marker:t}=(0,AO.useContext)(eee),{styles:r}=po("OrderedList");return AO.default.createElement(N,{...r.listItem()},AO.default.createElement(v,{...r.marker()},t),AO.default.createElement(N,{...r.content()},e))}var Syt=X(Ae(),1),vve=(0,Syt.createContext)({marker:""});function $g({children:e}){let{marker:t}=(0,qg.useContext)(vve),{styles:r}=po("OrderedList"),n=0;for(let o of qg.default.Children.toArray(e))!(0,qg.isValidElement)(o)||o.type!==tee||n++;let i=String(n).length;return qg.default.createElement(N,{...r.list()},qg.default.Children.map(e,(o,s)=>{if(!(0,qg.isValidElement)(o)||o.type!==tee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return qg.default.createElement(vve.Provider,{value:{marker:l}},qg.default.createElement(eee.Provider,{value:{marker:l}},o))}))}$g.Item=tee;var icn=X(Ae(),1);var xve=X(Ae(),1);var ncn=X(Ae(),1);var kBi=sr.inverse(" ");var ocn=X(Ae(),1);var scn=X(Ae(),1);var lcn=X(Ae(),1);var ree=X(Ae(),1);var acn=X(Ae(),1);var i2i=sr.inverse(" ");var qi=X(Ae(),1);var wve=X(Ae(),1),Dve=X(Ae(),1);$5();us();Qi();Lv();ar();var Iyt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function Jv(){let e=[...Iyt,...[...Iyt].reverse()],{frame:t}=pR({interval:120});return wve.createElement(N,{flexWrap:"nowrap",height:1,width:2},wve.createElement(v,{color:Pe().claude},e[t%e.length]))}var oee=X(Ae(),1);var iee=null,y_=null,nee=new Set;function Nve(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=bpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function Rve(){y_&&(iee=Nve(y_),nee.forEach(e=>e(iee)))}function ccn(e,t){return y_!==e&&(y_&&y_.off("resize",Rve),y_=e,iee=Nve(e),e.on("resize",Rve)),nee.add(t),()=>{nee.delete(t),nee.size===0&&y_&&(y_.off("resize",Rve),y_=null,iee=null)}}function Bve(){let{stdout:e}=fR(),[t,r]=(0,oee.useState)(()=>Nve(e));return(0,oee.useEffect)(()=>ccn(e,r),[e]),t}function hO(){return Bve()}qe();bf();Me();sh();Me();var YOi=X(Xve(),1);import{homedir as M9}from"os";import{join as yO}from"path";import{existsSync as Q9,mkdirSync as pCt,appendFileSync as fCt,readFileSync as mCt,constants as sfn,writeFileSync as afn,unlinkSync as gCt,statSync as lfn}from"fs";import{platform as ACt}from"process";import{accessSync as cfn}from"fs";var ofn="2.3.2",k9={VERSION:ofn,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"};qe();var Xv=yO(O0,".update.lock"),ufn=300*1e3;function hCt(){try{if(Q9(O0)||pCt(O0,{recursive:!0}),Q9(Xv)){let e=lfn(Xv);if(Date.now()-e.mtimeMs<ufn)return!1;try{gCt(Xv)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return afn(Xv,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function ECt(){try{Q9(Xv)&&mCt(Xv,"utf8")===`${process.pid}`&&gCt(Xv)}catch(e){ve(`Failed to release lock: ${e}`)}}async function exe(){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{cfn(t,sfn.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 _Ct(e){if(!hCt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:k9.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{Q9(e)||pCt(e,{recursive:!0});let t=await si(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1133
1133
  # npm global path
1134
1134
  export PATH="${e}/bin:$PATH"
1135
1135
  `;if(ACt==="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=[yO(M9(),".bashrc"),yO(M9(),".bash_profile"),yO(M9(),".zshrc"),yO(M9(),".config","fish","config.fish")];for(let i of n)if(Q9(i))try{if(!mCt(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dahawa/hawa-code",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },
package/webServer/app.js CHANGED
@@ -85,7 +85,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let n="<p>An error
85
85
  `))),r&&!t&&We.default.createElement("div",{className:"expand-toggle",onClick:()=>l(!0)},"... ",c.length-30," more lines (click to expand)")),f&&We.default.createElement("pre",{className:"code-block stderr-block"},We.default.createElement("code",null,e.stderr)))}var ye=x(k(),1);function zv({data:e}){let[t,l]=(0,ye.useState)(!1);if(e.run_in_background)return ye.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},ye.default.createElement("div",{className:"result-header"},ye.default.createElement("span",{className:"result-status status-info"},"Running in background")));let n=e.stdout&&e.stdout.trim(),a=e.stderr&&e.stderr.trim();if(!n&&!a&&!e.interrupted)return ye.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},ye.default.createElement("div",{className:"result-header"},ye.default.createElement("span",{className:"result-status status-success"},"Done (no output)")));let s=n?e.stdout.split(`
86
86
  `):[],i=t?s:s.slice(0,30),u=s.length>30;return ye.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},ye.default.createElement("div",{className:"result-header"},e.interrupted?ye.default.createElement("span",{className:"result-status status-warn"},"Interrupted"):ye.default.createElement("span",{className:"result-status status-success"},"exit 0"),e.stdoutLines>0&&ye.default.createElement("span",{className:"tool-meta"},e.stdoutLines," lines")),n&&ye.default.createElement(ye.default.Fragment,null,ye.default.createElement("pre",{className:"code-block stdout-block"},ye.default.createElement("code",null,i.join(`
87
87
  `))),u&&!t&&ye.default.createElement("div",{className:"expand-toggle",onClick:()=>l(!0)},"... ",s.length-30," more lines (click to expand)")),a&&ye.default.createElement("pre",{className:"code-block stderr-block"},ye.default.createElement("code",null,e.stderr)),e.interrupted&&ye.default.createElement("div",{className:"result-note"},"Command was aborted before completion"))}var ao=x(k(),1);function Ov({data:e}){let t=e.toolNames||[];return ao.default.createElement("div",{className:"tool-result-detail tool-result-toolloader"},ao.default.createElement("div",{className:"result-header"},ao.default.createElement("span",{className:"result-status status-success"},e.message||`Tools loaded: ${t.join(", ")}`)))}var so=x(k(),1);function Uv({data:e}){let l=e.message?.startsWith("<error>")?"status-error":"status-success";return so.default.createElement("div",{className:"tool-result-detail tool-result-toolunloader"},so.default.createElement("div",{className:"result-header"},so.default.createElement("span",{className:`result-status ${l}`},e.message||"Tools unloaded")))}var Sl=x(k(),1);function Dv({data:e}){return e.error?Sl.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Sl.default.createElement("div",{className:"result-header"},Sl.default.createElement("span",{className:"result-status status-error"},e.error))):Sl.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Sl.default.createElement("div",{className:"result-header"},Sl.default.createElement("span",{className:"result-status status-success"},e.edit_mode==="delete"?`Deleted cell ${e.cell_number}`:`${e.edit_mode==="insert"?"Inserted":"Updated"} cell ${e.cell_number}`)),Sl.default.createElement("pre",{className:"code-block"},Sl.default.createElement("code",null,e.new_source)))}var Il=x(k(),1);function wv({data:e}){return Il.default.createElement("div",{className:"tool-result-detail tool-result-websearch"},Il.default.createElement("div",{className:"result-header"},Il.default.createElement("span",{className:"result-status status-success"},"Found ",e.results.length," ",e.results.length===1?"result":"results")),e.summaryText&&Il.default.createElement("div",{className:"result-summary markdown-body"},e.summaryText),e.results.length>0&&Il.default.createElement("ul",{className:"result-list"},e.results.map((t,l)=>Il.default.createElement("li",{key:l},Il.default.createElement("a",{href:t.link,target:"_blank",rel:"noreferrer"},t.title)))))}var Nl=x(k(),1);function qv({data:e}){let[t,l]=(0,Nl.useState)(!1),n=e.aiAnalysis||"No content could be analyzed",a=n.length>400,s=t||!a?n:n.slice(0,400)+"...";return Nl.default.createElement("div",{className:"tool-result-detail tool-result-webfetch"},Nl.default.createElement("div",{className:"result-header"},Nl.default.createElement("span",{className:"result-status status-success"},"Content ",e.fromCache?"from cache":"fetched"," and analyzed"),Nl.default.createElement("span",{className:"tool-meta"},e.url)),Nl.default.createElement("div",{className:"result-content markdown-body",style:{whiteSpace:"pre-wrap"}},s),a&&!t&&Nl.default.createElement("div",{className:"expand-toggle",onClick:()=>l(!0)},"click to expand"))}var Qs=x(k(),1);function Hv({data:e}){return Qs.default.createElement("div",{className:"tool-result-detail tool-result-taskstop"},Qs.default.createElement("div",{className:"result-header"},Qs.default.createElement("span",{className:`result-status ${e.stopped?"status-success":"status-error"}`},e.message),Qs.default.createElement("span",{className:"tool-meta"},e.task_id," (",e.task_type,")")))}var en=x(k(),1);function bS(e){return e==="completed"?"\u2612":"\u2610"}function Bv({data:e}){let t=e.todos||[];return t.length===0?en.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},en.default.createElement("div",{className:"result-header"},en.default.createElement("span",{className:"result-status status-info"},"No todos currently"))):en.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},t.map((l,n)=>{let a=l.status==="completed",s=l.status==="in_progress";return en.default.createElement("div",{key:n,className:"todo-item"},en.default.createElement("span",{className:`todo-checkbox ${a?"completed":""}`},bS(l.status)),en.default.createElement("span",{className:`todo-content ${a?"completed":""} ${s?"in-progress":""}`},l.content))}))}var Xs=x(k(),1);function Lv({data:e}){return Xs.default.createElement("div",{className:"tool-result-detail tool-result-think"},Xs.default.createElement("div",{className:"result-header"},Xs.default.createElement("span",{className:"result-status status-success"},"Thought logged")),Xs.default.createElement("div",{className:"result-content"},e.thought))}var Xe=x(k(),1);function jv({data:e}){if(e.error)return Xe.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},Xe.default.createElement("div",{className:"result-header"},Xe.default.createElement("span",{className:"result-status status-error"},e.error)));if(e.cancelled)return Xe.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},Xe.default.createElement("div",{className:"result-header"},Xe.default.createElement("span",{className:"result-status status-warn"},"Question asking was cancelled")));let t=Object.entries(e.answers||{});return t.length===0?Xe.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},Xe.default.createElement("div",{className:"result-header"},Xe.default.createElement("span",{className:"result-status status-info"},"No answers provided by user"))):Xe.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},Xe.default.createElement("div",{className:"result-header"},Xe.default.createElement("span",{className:"result-status status-success"},"User answered questions")),Xe.default.createElement("ul",{className:"result-list"},t.map(([l,n],a)=>Xe.default.createElement("li",{key:a},Xe.default.createElement("strong",null,l)," \u2192 ",n))))}var Mn=x(k(),1);function Gv({data:e}){return e.error?Mn.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},Mn.default.createElement("div",{className:"result-header"},Mn.default.createElement("span",{className:"result-status status-error"},e.error))):Mn.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},Mn.default.createElement("div",{className:"result-header"},Mn.default.createElement("span",{className:`result-status ${e.approved?"status-success":"status-warn"}`},e.approved?"Entered plan mode":"User declined to enter plan mode")))}var Ct=x(k(),1);function Yv({data:e}){return e.error?Ct.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Ct.default.createElement("div",{className:"result-header"},Ct.default.createElement("span",{className:"result-status status-error"},e.error))):e.cancelled||!e.approved?Ct.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Ct.default.createElement("div",{className:"result-header"},Ct.default.createElement("span",{className:"result-status status-warn"},"Keep planning"))):Ct.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Ct.default.createElement("div",{className:"result-header"},Ct.default.createElement("span",{className:"result-status status-success"},"User approved ",e.manualApproval?"manual approval":"auto-accept"," plan")),e.plan&&Ct.default.createElement("div",{className:"result-content markdown-body"},e.plan),e.planFilePath&&Ct.default.createElement("div",{className:"tool-meta"},"Plan saved to: ",e.planFilePath))}var Zs=x(k(),1);function Qv({data:e}){let t=e.message?.startsWith("Failed")||!e.worktreePath;return Zs.default.createElement("div",{className:"tool-result-detail tool-result-enterworktree"},Zs.default.createElement("div",{className:"result-header"},Zs.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Created worktree")),Zs.default.createElement("div",{className:"result-content"},e.message))}var Ca=x(k(),1);function Xv({data:e}){let t=e.message?.startsWith("Error")||e.message?.startsWith("Cancelled");return Ca.default.createElement("div",{className:"tool-result-detail tool-result-exitworktree"},Ca.default.createElement("div",{className:"result-header"},Ca.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Exited worktree"),Ca.default.createElement("span",{className:"tool-meta"},e.action)),Ca.default.createElement("div",{className:"result-content"},e.message))}var Vs=x(k(),1);function Zv({data:e}){let t=e.message?.startsWith("<error>");return Vs.default.createElement("div",{className:"tool-result-detail tool-result-slashcommand"},Vs.default.createElement("div",{className:"result-header"},Vs.default.createElement("span",{className:`result-status ${t?"status-error":"status-info"}`},'The "',e.commandWithArgs?.split(" ")[0],'" slash command is running')),t&&Vs.default.createElement("div",{className:"result-content"},e.message))}var Cn=x(k(),1);function Vv({data:e}){let t=e.message?.startsWith("<error>");return Cn.default.createElement("div",{className:"tool-result-detail tool-result-skill"},Cn.default.createElement("div",{className:"result-header"},Cn.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Skill error":e.fork?"Skill completed":"Successfully loaded skill"),Cn.default.createElement("span",{className:"tool-meta"},e.skillName)),!t&&e.baseDirectory&&Cn.default.createElement("div",{className:"tool-meta"},"Base directory: ",e.baseDirectory),t&&Cn.default.createElement("div",{className:"result-content"},e.message))}var io=x(k(),1);function Kv({data:e}){let t=e.message?.startsWith("Error");return io.default.createElement("div",{className:"tool-result-detail tool-result-croncreate"},io.default.createElement("div",{className:"result-header"},io.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?e.message:`Scheduled ${e.jobId} ${e.description}`)))}var uo=x(k(),1);function Jv({data:e}){return uo.default.createElement("div",{className:"tool-result-detail tool-result-crondelete"},uo.default.createElement("div",{className:"result-header"},uo.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-warn"}`},e.message)))}var Gt=x(k(),1);function $v({data:e}){return!e.jobs||e.jobs.length===0?Gt.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},Gt.default.createElement("div",{className:"result-header"},Gt.default.createElement("span",{className:"result-status status-info"},"No cron jobs scheduled"))):Gt.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},Gt.default.createElement("div",{className:"result-header"},Gt.default.createElement("span",{className:"result-status status-success"},"Scheduled cron jobs")),Gt.default.createElement("ul",{className:"result-list"},e.jobs.map(t=>{let l=t.prompt.length>50?t.prompt.slice(0,50)+"...":t.prompt;return Gt.default.createElement("li",{key:t.id},Gt.default.createElement("code",null,t.id),": ",l," ",Gt.default.createElement("span",{className:"tool-meta"},"(",t.recurring?"recurring":"one-shot"," \xB7 ",t.description,")"))})))}var tn=x(k(),1);function Wv({data:e}){return tn.default.createElement("div",{className:"tool-result-detail tool-result-teamcreate"},tn.default.createElement("div",{className:"result-header"},tn.default.createElement("span",{className:"result-status status-success"},"Created team: ",e.name)),tn.default.createElement("div",{className:"result-content"},e.description&&tn.default.createElement("div",null,"Description: ",e.description),tn.default.createElement("div",null,"Lead: ",e.leadAgentId),tn.default.createElement("div",null,"Members: ",e.members?.length||0)))}var Ks=x(k(),1);function Pv({data:e}){return Ks.default.createElement("div",{className:"tool-result-detail tool-result-teamdelete"},Ks.default.createElement("div",{className:"result-header"},Ks.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?`Deleted team: ${e.teamName}`:`Failed to delete team: ${e.teamName}`)),!e.success&&Ks.default.createElement("div",{className:"result-content"},e.message))}var Js=x(k(),1);function Fv({data:e}){return Js.default.createElement("div",{className:"tool-result-detail tool-result-sendmessage"},Js.default.createElement("div",{className:"result-header"},Js.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?e.message:"Failed to send message")),!e.success&&Js.default.createElement("div",{className:"result-content"},e.message))}var ln=x(k(),1);function SS(e){let t=!1,l=!1;for(let n of Object.values(e))for(let a of n)a==="__tool_result__"?t=!0:l=!0;return{hasToolResult:t,hasInputFields:l}}function NS(e){return e==="__tool_result__"?"tool result":`input field "${e}"`}function Rv({data:e}){let t=e.action==="archive"?"Archived":"Unarchived",l=e.action==="archive"?e.archivedToolUseInputFields??{}:e.unarchivedToolUseInputFields??{},n=Object.keys(l).length,{hasToolResult:a,hasInputFields:s}=SS(l),i="tool result(s)";return a&&s?i="tool result(s) and input field(s)":s&&(i="input field(s)"),ln.default.createElement("div",{className:"tool-result-detail tool-result-messagearchiving"},ln.default.createElement("div",{className:"result-header"},ln.default.createElement("span",{className:"result-status status-success"},t," ",i," for ",n," tool use(s)")),Object.entries(l).map(([u,o])=>ln.default.createElement("div",{key:u,className:"result-fields"},ln.default.createElement("span",{className:"result-tool-use-id"},u,":"),o.map((f,c)=>ln.default.createElement("span",{key:`${f}-${c}`,className:"result-field"},c>0?", ":"",NS(f))))),e.action==="archive"&&e.summary&&ln.default.createElement("div",{className:"result-summary"},e.summary))}var V=x(k(),1);function Iv({data:e}){return V.default.createElement("div",{className:"tool-result-detail tool-result-memo"},(()=>{switch(e.action){case"write":{let{result:l}=e;return V.default.createElement(V.default.Fragment,null,V.default.createElement("div",{className:"result-header"},V.default.createElement("span",{className:`result-status ${l.success?"status-success":"status-error"}`},"\u23BF Memo ",l.success?"saved":"failed",": ",l.key),l.success&&l.savedChars!==void 0&&V.default.createElement("span",{className:"result-meta"},"(",l.savedChars," chars)")),!l.success&&l.error&&V.default.createElement("div",{className:"memo-error"},l.error))}case"read":{let{note:l}=e;return l?V.default.createElement(V.default.Fragment,null,V.default.createElement("div",{className:"result-header"},V.default.createElement("span",{className:"result-status status-success"},"\u23BF Memo read: ",l.key),V.default.createElement("span",{className:"result-meta"},l.summary)),V.default.createElement("div",{className:"memo-content"},l.content)):V.default.createElement("div",{className:"result-header"},V.default.createElement("span",{className:"result-status status-warn"},"\u23BF Memo not found"))}case"list":{let{notes:l}=e;return V.default.createElement(V.default.Fragment,null,V.default.createElement("div",{className:"result-header"},V.default.createElement("span",{className:"result-status status-info"},"\u23BF Memo list (",l.length," memos)")),l.length>0&&V.default.createElement("table",{className:"memo-table"},V.default.createElement("thead",null,V.default.createElement("tr",null,V.default.createElement("th",null,"#"),V.default.createElement("th",null,"Key"),V.default.createElement("th",null,"Summary"),V.default.createElement("th",null,"Updated"))),V.default.createElement("tbody",null,l.map((n,a)=>V.default.createElement("tr",{key:n.key},V.default.createElement("td",null,a+1),V.default.createElement("td",{className:"memo-key"},n.key),V.default.createElement("td",null,n.summary),V.default.createElement("td",{className:"memo-date"},n.updatedAt))))))}case"delete":{let{success:l,key:n}=e;return V.default.createElement("div",{className:"result-header"},V.default.createElement("span",{className:`result-status ${l?"status-success":"status-warn"}`},"\u23BF Memo ",l?"deleted":"not found",": ",n))}default:return null}})())}function ey({message:e}){let{toolName:t,toolData:l,isError:n,isRemote:a}=e.metadata||{},[s,i]=(0,H.useState)(!1),u=e.content,o=u.length>200,f=s||!o?u:u.substring(0,200)+"... (click to expand)",c=(0,H.useMemo)(()=>{try{return J.parse(f)}catch{return f}},[f]);if(n||!l)return H.default.createElement("div",{className:`message-item message-tool-result ${n?"error":""}`},H.default.createElement("div",{className:"result-content markdown-body",onClick:()=>o&&i(!s),style:{cursor:o?"pointer":"default"},dangerouslySetInnerHTML:{__html:c}}));let m=l;return m?.type==="mcp"?H.default.createElement("div",{className:`message-item message-tool-result${a?" remote":""}`},H.default.createElement(Mv,{data:m})):H.default.createElement("div",{className:`message-item message-tool-result${a?" remote":""}`},(()=>{switch(t){case"Read":return H.default.createElement(bv,{data:m});case"Edit":return H.default.createElement(Sv,{data:m});case"Write":return H.default.createElement(Nv,{data:m});case"Bash":return H.default.createElement(Tv,{data:m});case"Grep":return H.default.createElement(kv,{data:m});case"Glob":return H.default.createElement(xv,{data:m});case"Agent":return H.default.createElement(Ev,{data:m});case"LSP":return H.default.createElement(Av,{data:m});case"Cwd":return H.default.createElement(_v,{data:m});case"TaskOutput":return H.default.createElement(Cv,{data:m});case"PowerShell":return H.default.createElement(zv,{data:m});case"ToolLoader":return H.default.createElement(Ov,{data:m});case"ToolUnLoader":return H.default.createElement(Uv,{data:m});case"NotebookEdit":return H.default.createElement(Dv,{data:m});case"WebSearch":return H.default.createElement(wv,{data:m});case"WebFetch":return H.default.createElement(qv,{data:m});case"TaskStop":return H.default.createElement(Hv,{data:m});case"TodoWrite":return H.default.createElement(Bv,{data:m});case"Think":return H.default.createElement(Lv,{data:m});case"AskUserQuestion":return H.default.createElement(jv,{data:m});case"EnterPlanMode":return H.default.createElement(Gv,{data:m});case"ExitPlanMode":return H.default.createElement(Yv,{data:m});case"EnterWorktreeTool":return H.default.createElement(Qv,{data:m});case"ExitWorktreeTool":return H.default.createElement(Xv,{data:m});case"SlashCommand":return H.default.createElement(Zv,{data:m});case"Skill":return H.default.createElement(Vv,{data:m});case"CronCreate":return H.default.createElement(Kv,{data:m});case"CronDelete":return H.default.createElement(Jv,{data:m});case"CronList":return H.default.createElement($v,{data:m});case"TeamCreate":return H.default.createElement(Wv,{data:m});case"TeamDelete":return H.default.createElement(Pv,{data:m});case"SendMessage":return H.default.createElement(Fv,{data:m});case"MessageArchiving":return H.default.createElement(Rv,{data:m});case"Memo":return H.default.createElement(Iv,{data:m});default:return H.default.createElement("pre",{className:"tool-result-text"},e.content)}})())}J.setOptions({breaks:!0,gfm:!0});function ty({message:e,pendingUserResponses:t,sendUserResponse:l}){switch(e.messageType){case"user_text":return ge.default.createElement(TS,{content:e.content});case"assistant_text":return ge.default.createElement(kS,{content:e.content,metadata:e.metadata});case"assistant_thinking":return ge.default.createElement(xS,{content:e.content});case"tool_use":return ge.default.createElement(yv,{message:e,pendingUserResponses:t,sendUserResponse:l});case"tool_result":return ge.default.createElement(ey,{message:e});case"progress":return ge.default.createElement(ES,{content:e.content});case"error":return ge.default.createElement(AS,{content:e.content});default:return null}}function oo(e){return(0,ge.useMemo)(()=>{try{return J.parse(e)}catch{return e}},[e])}function TS({content:e}){let t=oo(e);return ge.default.createElement("div",{className:"message-item message-user"},ge.default.createElement("div",{className:"message-content markdown-body",dangerouslySetInnerHTML:{__html:t}}))}function kS({content:e,metadata:t}){let l=oo(e);return ge.default.createElement("div",{className:"message-item message-assistant"},ge.default.createElement("div",{className:"message-content markdown-body",dangerouslySetInnerHTML:{__html:l}}))}function xS({content:e}){let[t,l]=(0,ge.useState)(!1),n=oo(e);return ge.default.createElement("div",{className:"message-item message-thinking"},ge.default.createElement("details",{open:t,onToggle:a=>l(a.target.open)},ge.default.createElement("summary",null,"Thinking..."),t&&ge.default.createElement("div",{className:"message-content markdown-body",style:{marginTop:4},dangerouslySetInnerHTML:{__html:n}})))}function ES({content:e}){let t=oo(e);return ge.default.createElement("div",{className:"message-item message-progress"},ge.default.createElement("div",{className:"markdown-body",dangerouslySetInnerHTML:{__html:t}}))}function AS({content:e}){return ge.default.createElement("div",{className:"message-item message-error"},e)}var _S=new Set(["TaskCreate","TaskGet","TaskList","TaskUpdate","TodoWrite","TeamCreate"]),MS=new Set(["ToolLoader","ToolUnLoader","MessageArchiving"]);function CS(e,t){return!!(_S.has(e)||t!=="DAHAWA_DEBUG"&&MS.has(e))}var ly="*-* ",ny="<system-notification>";function uy(e,t={}){let{userType:l}=t,n=[],a=0,s=new Map;for(let i of e)if(i.type==="user"&&i.message?.content){let u=i.message.content;if(Array.isArray(u))for(let o of u)o.type==="tool_result"&&o.tool_use_id&&s.set(o.tool_use_id,o)}for(let i of e)if(!(!i||!i.type))switch(i.type){case"user":zS(i,s,n,()=>`msg_${a++}`);break;case"assistant":OS(i,s,e,n,()=>`msg_${a++}`,l);break;case"progress":US(i,n,()=>`msg_${a++}`);break}return n}function zS(e,t,l,n){let a=e.message?.content;if(a){if(typeof a=="string"){if(!a.trim())return;let s=a.trim();if(s.startsWith(ly)||s.startsWith(ny)||/<system-reminder>.*?<\/system-reminder>/s.test(s))return;let i=ay(s);l.push({id:n(),messageType:"user_text",content:i??s});return}if(Array.isArray(a)){for(let s of a)if(s.type==="text"){if(!s.text||s.text.trim()==="")continue;let i=s.text.trim();if(i.startsWith(ly)||i.startsWith(ny)||/<system-reminder>.*?<\/system-reminder>/s.test(i))continue;let u=ay(s.text);l.push({id:n(),messageType:"user_text",content:u??s.text})}}}}function ay(e){let t=sy(e,"command-message");if(!t)return null;let l=sy(e,"command-args");return`> /${t}${l?" "+l:""}`}function sy(e,t){if(!e.trim()||!t.trim())return null;let l=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`<${l}(?:\\s+[^>]*)?>([\\s\\S]*?)<\\/${l}>`,"i").exec(e)?.[1]??null}function OS(e,t,l,n,a,s){let i=e.message?.content;if(!(!i||!Array.isArray(i)))for(let u of i)switch(u.type){case"text":if(u.text&&u.text.trim()){if(u.text.trim()==="No response requested.")break;n.push({id:a(),messageType:"assistant_text",content:u.text,metadata:{costUSD:e.costUSD,durationMs:e.durationMs}})}break;case"thinking":u.thinking&&u.thinking.trim()&&n.push({id:a(),messageType:"assistant_thinking",content:u.thinking,metadata:{isCollapsed:!0}});break;case"tool_use":{let o=u.id,f=u.name||"unknown_tool";if(CS(f,s))break;let{name:c,isRemote:m,displayName:r}=DS(f),d=r??c,h=o?t.has(o):!1;if(n.push({id:a(),messageType:"tool_use",content:c,metadata:{toolName:c,toolDisplayName:d,toolInput:BS(u.input),toolUseId:o,toolInputRaw:u.input,isRemote:m,isInProgress:!h}}),o&&t.has(o)){let y=t.get(o),E=HS(y),p=qS(l,o),v=f.startsWith("mcp_")&&!f.startsWith("mcp_hands_")?wS(y,d):p;n.push({id:a(),messageType:"tool_result",content:E,metadata:{toolName:c,toolDisplayName:d,toolUseId:o,isError:y.is_error||!1,toolData:v,isRemote:m}})}break}}}function US(e,t,l){let n=e.content?.message?.content;if(!(!n||!Array.isArray(n)))for(let a of n)a.type==="text"&&a.text&&a.text.trim()&&t.push({id:l(),messageType:"progress",content:a.text})}var iy={mcp_hands_Read:"Read",mcp_hands_Edit:"Edit",mcp_hands_Write:"Write",mcp_hands_Bash:"Bash",mcp_hands_Grep:"Grep",mcp_hands_Glob:"Glob",mcp_hands_LSP:"LSP",mcp_hands_NotebookEdit:"NotebookEdit",mcp_hands_TaskOutput:"TaskOutput",mcp_hands_TaskStop:"TaskStop",mcp_hands_PowerShell:"PowerShell"};function DS(e){if(iy[e]){let t=iy[e];return{name:t,isRemote:!0,displayName:`\u2601 ${t}`}}if(e.startsWith("mcp_hands_")){let t=e.slice(10);return{name:t,isRemote:!0,displayName:`\u2601 ${t}`}}if(e.startsWith("mcp_")){let t=e.slice(4),l=t.indexOf("_");if(l!==-1){let n=t.slice(0,l),a=t.slice(l+1);return{name:e,isRemote:!1,displayName:`${n}:${a}`}}}return{name:e,isRemote:!1}}function wS(e,t){return e?{type:"mcp",displayName:t,content:e.content??"",isError:e.is_error||!1}:{type:"mcp",displayName:t,content:"",isError:!1}}function qS(e,t){for(let l of e){if(!l.toolUseResult?.data)continue;let n=l.message?.content;if(!Array.isArray(n))continue;if(n.some(s=>s.type==="tool_result"&&s.tool_use_id===t))return l.toolUseResult.data}}function HS(e){if(!e)return"";let t=e.content;return t?typeof t=="string"?t:Array.isArray(t)?t.filter(l=>l.type==="text").map(l=>l.text||"").join(`
88
- `):JSON.stringify(t):e.is_error?"[Error]":"[Empty result]"}function BS(e){if(!e)return"";let t=typeof e=="string"?e:JSON.stringify(e,null,2);return t.length>800?t.substring(0,800)+"...":t}function oy({rawMessages:e,autoScroll:t,userType:l,pendingUserResponses:n,sendUserResponse:a}){let s=(0,zt.useRef)(null),i=(0,zt.useRef)(!1),u=(0,zt.useMemo)(()=>uy(e,{userType:l}),[e,l]);(0,zt.useEffect)(()=>{t&&s.current&&!i.current&&(s.current.scrollTop=s.current.scrollHeight)},[u,t]);let o=()=>{if(!s.current)return;let{scrollTop:f,scrollHeight:c,clientHeight:m}=s.current,r=c-f-m<50;i.current=!r};return u.length===0?zt.default.createElement("div",{className:"message-list"},zt.default.createElement("div",{className:"empty-state"},"Waiting for messages...")):zt.default.createElement("div",{className:"message-list",ref:s,onScroll:o},u.map(f=>zt.default.createElement(ty,{key:f.id,message:f,pendingUserResponses:n,sendUserResponse:a})))}var Ze=x(k(),1);function ry({activeAgent:e,isLoading:t=!1,promptStatus:l,onSubmit:n,onInterrupt:a}){let[s,i]=(0,Ze.useState)(""),u=(0,Ze.useRef)(null),o=e==="main",f=o&&s.trim()!=="",c=o&&t,m=(0,Ze.useCallback)(()=>{let E=u.current;E&&(E.style.height="auto",E.style.height=`${Math.min(E.scrollHeight,200)}px`)},[]);(0,Ze.useEffect)(()=>{m()},[s,m]);let r=E=>{E.key==="Enter"&&!E.shiftKey&&(E.preventDefault(),f&&(n(s),i("")))},d=()=>{f&&(n(s),i(""))},h=s.startsWith("!")?"bash":s.startsWith("/")?"command":"text",y=l?.status==="received"?"Received":l?.status==="queued"?"Queued":l?.status==="executing"?"Executing...":l?.status==="rejected"?l.message||"Rejected":l?.status==="completed"?"Completed":t&&o?"Agent is busy; prompt will be queued":null;return Ze.default.createElement("div",{className:"prompt-input-bar"},Ze.default.createElement("div",{className:"prompt-input-inner"},Ze.default.createElement("span",{className:`prompt-input-mode ${h}`},h==="bash"?"!":h==="command"?"/":">"),Ze.default.createElement("textarea",{ref:u,className:"prompt-input-field",value:s,onChange:E=>i(E.target.value),onKeyDown:r,placeholder:o?t?"Agent is busy; your prompt will be queued...":"Type a prompt and press Enter...":"Switch to Main agent to type a prompt",disabled:!o,rows:1}),c?Ze.default.createElement("button",{className:"prompt-input-interrupt",onClick:a,type:"button"},"Interrupt"):Ze.default.createElement("button",{className:"prompt-input-send",onClick:d,disabled:!f,type:"button"},"Send")),y&&Ze.default.createElement("div",{className:`prompt-input-status ${l?.status}`},y))}var zn=x(k(),1);function cy({status:e,agents:t,messageCount:l,onToggleScroll:n}){let a=t.filter(s=>s.status==="running"||s.status==="started");return zn.default.createElement("div",{className:"status-bar"},zn.default.createElement("div",{className:"status-bar-left"},zn.default.createElement("span",null,"Agents: ",t.length," (",a.length," active)"),zn.default.createElement("span",null,"Messages: ",l)),zn.default.createElement("div",{className:"status-bar-right"},zn.default.createElement("span",null,"WS: ",e)))}var W=x(k(),1);var ht=x(k(),1);function fy(){let[e,t]=(0,ht.useState)(null),[l,n]=(0,ht.useState)(null),[a,s]=(0,ht.useState)(null),[i,u]=(0,ht.useState)(!0),[o,f]=(0,ht.useState)(null),c=(0,ht.useCallback)(async()=>{try{let[h,y,E]=await Promise.all([fetch("/api/settings"),fetch("/api/settings/sources"),fetch("/api/model-config")]);if(!h.ok)throw new Error(`Failed to load settings: ${h.status}`);if(!y.ok)throw new Error(`Failed to load settings sources: ${y.status}`);if(!E.ok)throw new Error(`Failed to load model config: ${E.status}`);let p=await h.json(),g=await y.json(),v=await E.json();t(p),n({user:g.user||{},project:g.project||{}}),s(v),f(null)}catch(h){f(h instanceof Error?h.message:"Failed to load settings")}finally{u(!1)}},[]);(0,ht.useEffect)(()=>{c();let h=()=>{c()};return window.addEventListener("settings:changed",h),()=>{window.removeEventListener("settings:changed",h)}},[c]);let m=(0,ht.useCallback)(async(h,y,E)=>{let p=await fetch(`/api/settings/${h}/${y}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:E})});if(!p.ok){let g=await p.json().catch(()=>({error:"Update failed"}));throw new Error(g.error||"Update failed")}await c()},[c]),r=(0,ht.useCallback)(async(h,y)=>{let E=await fetch(`/api/settings/${h}/${y}`,{method:"DELETE"});if(!E.ok){let p=await E.json().catch(()=>({error:"Reset failed"}));throw new Error(p.error||"Reset failed")}await c()},[c]),d=(0,ht.useCallback)(async h=>{let y=await fetch("/api/model-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)});if(!y.ok){let E=await y.json().catch(()=>({error:"Update model config failed",details:[]})),p=[E.error,...E.details||[]].filter(Boolean).join(`
88
+ `):JSON.stringify(t):e.is_error?"[Error]":"[Empty result]"}function BS(e){if(!e)return"";let t=typeof e=="string"?e:JSON.stringify(e,null,2);return t.length>800?t.substring(0,800)+"...":t}function oy({rawMessages:e,autoScroll:t,userType:l,pendingUserResponses:n,sendUserResponse:a}){let s=(0,zt.useRef)(null),i=(0,zt.useRef)(!1),u=(0,zt.useMemo)(()=>uy(e,{userType:l}),[e,l]);(0,zt.useEffect)(()=>{t&&s.current&&!i.current&&(s.current.scrollTop=s.current.scrollHeight)},[u,t]);let o=()=>{if(!s.current)return;let{scrollTop:f,scrollHeight:c,clientHeight:m}=s.current,r=c-f-m<50;i.current=!r};return u.length===0?zt.default.createElement("div",{className:"message-list"},zt.default.createElement("div",{className:"empty-state"},"Waiting for messages...")):zt.default.createElement("div",{className:"message-list",ref:s,onScroll:o},u.map(f=>zt.default.createElement(ty,{key:f.id,message:f,pendingUserResponses:n,sendUserResponse:a})))}var Ze=x(k(),1);function ry({activeAgent:e,isLoading:t=!1,promptStatus:l,onSubmit:n,onInterrupt:a}){let[s,i]=(0,Ze.useState)(""),u=(0,Ze.useRef)(null),o=e==="main",f=o&&s.trim()!=="",c=o&&t,m=(0,Ze.useCallback)(()=>{let E=u.current;if(!E)return;E.style.height="auto";let p=parseFloat(getComputedStyle(E).minHeight)||0;E.style.height=`${Math.min(Math.max(E.scrollHeight,p),200)}px`},[]);(0,Ze.useEffect)(()=>{m()},[s,m]);let r=E=>{E.key==="Enter"&&!E.shiftKey&&!E.nativeEvent.isComposing&&(E.preventDefault(),f&&(n(s),i("")))},d=()=>{f&&(n(s),i(""))},h=s.startsWith("!")?"bash":s.startsWith("/")?"command":"text",y=l?.status==="received"?"Received":l?.status==="queued"?"Queued":l?.status==="executing"?"Executing...":l?.status==="rejected"?l.message||"Rejected":l?.status==="completed"?"Completed":t&&o?"Agent is busy; prompt will be queued":null;return Ze.default.createElement("div",{className:"prompt-input-bar"},Ze.default.createElement("div",{className:"prompt-input-inner"},Ze.default.createElement("span",{className:`prompt-input-mode ${h}`},h==="bash"?"!":h==="command"?"/":null),Ze.default.createElement("textarea",{ref:u,className:"prompt-input-field",value:s,onChange:E=>i(E.target.value),onKeyDown:r,placeholder:o?t?"Agent is busy; your prompt will be queued...":"Type a prompt and press Enter...":"Switch to Main agent to type a prompt",disabled:!o,rows:3}),c?Ze.default.createElement("button",{className:"prompt-input-interrupt",onClick:a,type:"button"},"Interrupt"):Ze.default.createElement("button",{className:"prompt-input-send",onClick:d,disabled:!f,type:"button"},"Send")),y&&Ze.default.createElement("div",{className:`prompt-input-status ${l?.status}`},y))}var zn=x(k(),1);function cy({status:e,agents:t,messageCount:l,onToggleScroll:n}){let a=t.filter(s=>s.status==="running"||s.status==="started");return zn.default.createElement("div",{className:"status-bar"},zn.default.createElement("div",{className:"status-bar-left"},zn.default.createElement("span",null,"Agents: ",t.length," (",a.length," active)"),zn.default.createElement("span",null,"Messages: ",l)),zn.default.createElement("div",{className:"status-bar-right"},zn.default.createElement("span",null,"WS: ",e)))}var W=x(k(),1);var ht=x(k(),1);function fy(){let[e,t]=(0,ht.useState)(null),[l,n]=(0,ht.useState)(null),[a,s]=(0,ht.useState)(null),[i,u]=(0,ht.useState)(!0),[o,f]=(0,ht.useState)(null),c=(0,ht.useCallback)(async()=>{try{let[h,y,E]=await Promise.all([fetch("/api/settings"),fetch("/api/settings/sources"),fetch("/api/model-config")]);if(!h.ok)throw new Error(`Failed to load settings: ${h.status}`);if(!y.ok)throw new Error(`Failed to load settings sources: ${y.status}`);if(!E.ok)throw new Error(`Failed to load model config: ${E.status}`);let p=await h.json(),g=await y.json(),v=await E.json();t(p),n({user:g.user||{},project:g.project||{}}),s(v),f(null)}catch(h){f(h instanceof Error?h.message:"Failed to load settings")}finally{u(!1)}},[]);(0,ht.useEffect)(()=>{c();let h=()=>{c()};return window.addEventListener("settings:changed",h),()=>{window.removeEventListener("settings:changed",h)}},[c]);let m=(0,ht.useCallback)(async(h,y,E)=>{let p=await fetch(`/api/settings/${h}/${y}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:E})});if(!p.ok){let g=await p.json().catch(()=>({error:"Update failed"}));throw new Error(g.error||"Update failed")}await c()},[c]),r=(0,ht.useCallback)(async(h,y)=>{let E=await fetch(`/api/settings/${h}/${y}`,{method:"DELETE"});if(!E.ok){let p=await E.json().catch(()=>({error:"Reset failed"}));throw new Error(p.error||"Reset failed")}await c()},[c]),d=(0,ht.useCallback)(async h=>{let y=await fetch("/api/model-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)});if(!y.ok){let E=await y.json().catch(()=>({error:"Update model config failed",details:[]})),p=[E.error,...E.details||[]].filter(Boolean).join(`
89
89
  `);throw new Error(p||"Update model config failed")}await c()},[c]);return{settings:e,sources:l,modelConfig:a,loading:i,error:o,updateSetting:m,resetSetting:r,updateModelConfig:d,refresh:c}}var se=x(k(),1);var ro=x(k(),1);function co({label:e,value:t,onChange:l}){return ro.default.createElement("div",{className:"setting-row"},ro.default.createElement("span",{className:"setting-label"},e),ro.default.createElement("button",{className:`setting-toggle ${t?"on":"off"}`,onClick:()=>l(!t)},t?"On":"Off"))}var $s=x(k(),1);function dy({label:e,value:t,options:l,onChange:n}){return $s.default.createElement("div",{className:"setting-row"},$s.default.createElement("span",{className:"setting-label"},e),$s.default.createElement("select",{className:"setting-select",value:t,onChange:a=>n(a.target.value)},l.map(a=>$s.default.createElement("option",{key:a,value:a},a))))}var fo=x(k(),1);function mo({label:e,value:t,onChange:l,placeholder:n}){return fo.default.createElement("div",{className:"setting-row"},fo.default.createElement("span",{className:"setting-label"},e),fo.default.createElement("input",{className:"setting-input",type:"text",value:t,placeholder:n,onChange:a=>l(a.target.value)}))}var po=x(k(),1);function go({label:e,value:t,onChange:l,min:n,max:a}){return po.default.createElement("div",{className:"setting-row"},po.default.createElement("span",{className:"setting-label"},e),po.default.createElement("input",{className:"setting-input",type:"number",value:t,min:n,max:a,onChange:s=>l(parseInt(s.target.value,10)||0)}))}var On=x(k(),1);function Un({label:e,value:t,fields:l,onChange:n}){let a=t||{},s=(i,u)=>{n({...a,[i]:u})};return On.default.createElement("div",{className:"setting-object"},On.default.createElement("h4",{className:"setting-object-title"},e),On.default.createElement("div",{className:"setting-object-fields"},l.map(i=>{let u=a[i.key];switch(i.type){case"boolean":return On.default.createElement(co,{key:i.key,label:i.label,value:!!u,onChange:o=>s(i.key,o)});case"number":return On.default.createElement(go,{key:i.key,label:i.label,value:typeof u=="number"?u:0,min:i.min,max:i.max,onChange:o=>s(i.key,o)});case"string":return On.default.createElement(mo,{key:i.key,label:i.label,value:typeof u=="string"?u:"",placeholder:i.placeholder,onChange:o=>s(i.key,o)});default:return null}})))}var Pt=x(k(),1);function my(e){return JSON.stringify(e??{},null,2)}function ho({label:e,value:t,onChange:l,rows:n=8,className:a}){let[s,i]=(0,Pt.useState)(()=>my(t)),[u,o]=(0,Pt.useState)(null);(0,Pt.useEffect)(()=>{i(my(t)),o(null)},[t]);let f=()=>{try{let c=JSON.parse(s);o(null),l(c)}catch(c){o(c instanceof Error?c.message:"Invalid JSON")}};return Pt.default.createElement("div",{className:`setting-json-editor ${a||""}`},Pt.default.createElement("label",{className:"setting-json-label"},e),Pt.default.createElement("textarea",{className:"setting-json-textarea",value:s,onChange:c=>i(c.target.value),onBlur:f,rows:n,spellCheck:!1}),u&&Pt.default.createElement("div",{className:"setting-json-error"},u))}var at=x(k(),1);function py(e){return Object.entries(e??{}).map(([t,l])=>({key:t,value:String(l??"")}))}function gy(e){let t={};for(let l of e){let n=l.key.trim();n&&(t[n]=l.value)}return t}function LS(e,t){let l=Object.keys(e),n=Object.keys(t);return l.length!==n.length?!1:l.every(a=>e[a]===t[a])}function hy({label:e,value:t,onChange:l}){let[n,a]=(0,at.useState)(()=>py(t));(0,at.useEffect)(()=>{a(py(t))},[t]);let s=gy(n),i=m=>{let r=gy(m);LS(s,r)||l(r),a(m)},u=(m,r)=>{let d=n.map((h,y)=>y===m?{...h,key:r}:h);i(d)},o=(m,r)=>{let d=n.map((h,y)=>y===m?{...h,value:r}:h);i(d)},f=()=>{a([...n,{key:"",value:""}])},c=m=>{let r=n.filter((d,h)=>h!==m);i(r)};return at.default.createElement("div",{className:"setting-key-value"},at.default.createElement("h4",{className:"setting-key-value-title"},e),at.default.createElement("div",{className:"setting-key-value-list"},n.map((m,r)=>at.default.createElement("div",{key:r,className:"setting-key-value-row"},at.default.createElement("input",{className:"setting-input setting-key-value-key",type:"text",value:m.key,placeholder:"KEY",onChange:d=>u(r,d.target.value)}),at.default.createElement("span",{className:"setting-key-value-separator"},"="),at.default.createElement("input",{className:"setting-input setting-key-value-value",type:"text",value:m.value,placeholder:"value",onChange:d=>o(r,d.target.value)}),at.default.createElement("button",{className:"setting-key-value-remove",onClick:()=>c(r),title:"Remove"},"\xD7")))),at.default.createElement("button",{className:"setting-key-value-add",onClick:f},"+ Add"))}var z=x(k(),1);function nn(e){return JSON.parse(JSON.stringify(e))}function vy(e){return!e||typeof e!="object"||Array.isArray(e)?{sources:{},routing:{}}:{sources:typeof e.sources=="object"&&!Array.isArray(e.sources)?e.sources:{},routing:typeof e.routing=="object"&&!Array.isArray(e.routing)?e.routing:{}}}function yy(e){return Array.isArray(e)?e.join(", "):""}function jS(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}var GS=["anthropic","openai","openai-responses","gemini"];function za({label:e,children:t}){return z.default.createElement("div",{className:"model-config-field"},z.default.createElement("label",{className:"model-config-field-label"},e),z.default.createElement("div",{className:"model-config-field-input"},t))}function Nf({label:e,value:t,onChange:l,placeholder:n}){return z.default.createElement(za,{label:e},z.default.createElement("input",{className:"model-config-input",type:"text",value:t,placeholder:n,onChange:a=>l(a.target.value)}))}function YS({models:e,onChange:t}){let[l,n]=(0,z.useState)(yy(e));return(0,z.useEffect)(()=>{n(yy(e))},[e]),z.default.createElement(za,{label:"Models (comma separated)"},z.default.createElement("input",{className:"model-config-input",type:"text",value:l,placeholder:"model-a, model-b",onChange:a=>n(a.target.value),onBlur:a=>t(jS(a.target.value))}))}function QS({label:e,value:t,onChange:l,min:n}){return z.default.createElement(za,{label:e},z.default.createElement("input",{className:"model-config-input",type:"number",value:t,min:n,onChange:a=>l(parseInt(a.target.value,10)||0)}))}function by({value:e,onChange:t}){let[l,n]=(0,z.useState)("form"),a=vy(e),s=(r,d,h)=>{let y=nn(a);y.sources[r]||(y.sources[r]={base_url:"",auth_token:"",api_type:"anthropic",models:[]}),y.sources[r][d]=h,t(y)},i=()=>{let r=nn(a),d=1;for(;r.sources[`source${d}`];)d++;r.sources[`source${d}`]={base_url:"",auth_token:"",api_type:"anthropic",models:[]},t(r)},u=r=>{let d=nn(a);delete d.sources[r];for(let h of Object.keys(d.routing)){let y=h;d.routing[y]=(d.routing[y]||[]).filter(E=>E.source!==r)}t(d)},o=(r,d,h,y)=>{let E=nn(a);E.routing[r]||(E.routing[r]=[]);let p=E.routing[r];p[d]||(p[d]={source:"",model:""}),p[d][h]=y,t(E)},f=r=>{let d=nn(a);d.routing[r]||(d.routing[r]=[]),d.routing[r].push({source:"",model:"",weight:100}),t(d)},c=(r,d)=>{let h=nn(a);h.routing[r]&&h.routing[r].splice(d,1),t(h)};return z.default.createElement("div",{className:"model-config-setting"},z.default.createElement("div",{className:"model-config-tabs"},z.default.createElement("button",{className:`model-config-tab ${l==="form"?"active":""}`,onClick:()=>n("form")},"Form"),z.default.createElement("button",{className:`model-config-tab ${l==="json"?"active":""}`,onClick:()=>n("json")},"JSON")),l==="form"?z.default.createElement("div",{className:"model-config-form"},z.default.createElement("div",{className:"model-config-section"},z.default.createElement("h4",{className:"model-config-section-title"},"Sources"),Object.keys(a.sources).length===0&&z.default.createElement("div",{className:"model-config-empty"},"No sources configured"),Object.entries(a.sources).map(([r,d])=>z.default.createElement("div",{key:r,className:"model-config-card"},z.default.createElement("div",{className:"model-config-card-header"},z.default.createElement(Nf,{label:"Source Name",value:r,onChange:h=>{if(h===r||!h.trim())return;let y=nn(a);y.sources[h]=y.sources[r],delete y.sources[r];for(let E of Object.keys(y.routing)){let p=E;y.routing[p]=(y.routing[p]||[]).map(g=>g.source===r?{...g,source:h}:g)}t(y)}}),z.default.createElement("button",{className:"model-config-remove-button",onClick:()=>u(r)},"Remove")),z.default.createElement(Nf,{label:"Base URL",value:d.base_url||"",onChange:h=>s(r,"base_url",h),placeholder:"https://api.example.com"}),z.default.createElement(Nf,{label:"Auth Token",value:d.auth_token||"",onChange:h=>s(r,"auth_token",h),placeholder:"sk-..."}),z.default.createElement(za,{label:"API Type"},z.default.createElement("select",{className:"model-config-select",value:d.api_type||"anthropic",onChange:h=>s(r,"api_type",h.target.value)},GS.map(h=>z.default.createElement("option",{key:h,value:h},h)))),z.default.createElement(YS,{models:d.models,onChange:h=>s(r,"models",h)}))),z.default.createElement("button",{className:"model-config-add-button",onClick:i},"Add Source")),z.default.createElement("div",{className:"model-config-section"},z.default.createElement("h4",{className:"model-config-section-title"},"Routing"),["MODEL","SMALL_FAST_MODEL"].map(r=>z.default.createElement("div",{key:r,className:"model-config-routing-group"},z.default.createElement("h5",{className:"model-config-routing-type"},r),(a.routing[r]||[]).length===0&&z.default.createElement("div",{className:"model-config-empty"},"No routing items"),(a.routing[r]||[]).map((d,h)=>z.default.createElement("div",{key:h,className:"model-config-card"},z.default.createElement("div",{className:"model-config-card-row"},z.default.createElement(za,{label:"Source"},z.default.createElement("select",{className:"model-config-select",value:d.source||"",onChange:y=>{let E=y.target.value,p=nn(a);p.routing[r]||(p.routing[r]=[]);let g=p.routing[r];if(!g[h])g[h]={source:E,model:""};else{g[h].source=E;let v=p.sources[E]?.models||[];v.length>0&&!v.includes(g[h].model)?g[h].model=v[0]:v.length===0&&(g[h].model="")}t(p)}},z.default.createElement("option",{value:""},"Select source"),Object.keys(a.sources).map(y=>z.default.createElement("option",{key:y,value:y},y)))),z.default.createElement(za,{label:"Model"},z.default.createElement("select",{className:"model-config-select",value:d.model||"",onChange:y=>o(r,h,"model",y.target.value),disabled:!d.source||!a.sources[d.source]?.models?.length},z.default.createElement("option",{value:""},d.source?a.sources[d.source]?.models?.length?"Select model":"No models available":"Select source first"),(a.sources[d.source]?.models||[]).map(y=>z.default.createElement("option",{key:y,value:y},y)))),z.default.createElement(QS,{label:"Weight",value:typeof d.weight=="number"?d.weight:100,min:0,onChange:y=>o(r,h,"weight",y)}),z.default.createElement("button",{className:"model-config-remove-button",onClick:()=>c(r,h)},"Remove")))),z.default.createElement("button",{className:"model-config-add-button",onClick:()=>f(r)},"Add ",r," Route"))))):z.default.createElement("div",{className:"model-config-json-wrapper"},z.default.createElement(ho,{label:"Model Config (config.json)",value:a,onChange:r=>t(vy(r)),className:"model-config-json-editor"})))}var C=x(k(),1);var De=x(k(),1);async function Dn(e,t){let l=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await l.json().catch(()=>({error:"Request failed"}));if(!l.ok)throw new Error(n.error||`Request failed: ${l.status}`);return n}async function XS(e){let t=await fetch(e,{method:"DELETE"}),l=await t.json().catch(()=>({error:"Request failed"}));if(!t.ok)throw new Error(l.error||`Request failed: ${t.status}`);return l}function Sy(){let[e,t]=(0,De.useState)([]),[l,n]=(0,De.useState)([]),[a,s]=(0,De.useState)([]),[i,u]=(0,De.useState)(!0),[o,f]=(0,De.useState)(null),c=(0,De.useCallback)(async()=>{try{u(!0);let[v,b,T]=await Promise.all([fetch("/api/marketplaces"),fetch("/api/plugins"),fetch("/api/plugins/available")]);if(!v.ok)throw new Error(`Failed to load marketplaces: ${v.status}`);if(!b.ok)throw new Error(`Failed to load plugins: ${b.status}`);if(!T.ok)throw new Error(`Failed to load available plugins: ${T.status}`);let A=await v.json(),N=await b.json(),M=await T.json();t(A.marketplaces||[]),n(N.plugins||[]),s(M.available||[]),f(null)}catch(v){f(v instanceof Error?v.message:"Failed to load plugins")}finally{u(!1)}},[]);(0,De.useEffect)(()=>{c()},[c]);let m=(0,De.useCallback)(async v=>{let b=await Dn("/api/marketplaces",{source:v});return await c(),b.name},[c]),r=(0,De.useCallback)(async v=>{await XS(`/api/marketplaces/${encodeURIComponent(v)}`),await c()},[c]),d=(0,De.useCallback)(async v=>{let b=await Dn(`/api/marketplaces/${encodeURIComponent(v)}/update`,{});return await c(),{updated:b.updated||[],errors:b.errors||[]}},[c]),h=(0,De.useCallback)(async v=>{let b=await Dn("/api/plugins/install",{spec:v});return await c(),b.id},[c]),y=(0,De.useCallback)(async v=>{await Dn("/api/plugins/uninstall",{spec:v}),await c()},[c]),E=(0,De.useCallback)(async v=>{let b=await Dn("/api/plugins/update",{spec:v});return await c(),{updated:b.updated||[],errors:b.errors||[]}},[c]),p=(0,De.useCallback)(async v=>{await Dn("/api/plugins/enable",{spec:v}),await c()},[c]),g=(0,De.useCallback)(async v=>{await Dn("/api/plugins/disable",{spec:v}),await c()},[c]);return{marketplaces:e,plugins:l,available:a,loading:i,error:o,refresh:c,addMarketplace:m,removeMarketplace:r,updateMarketplace:d,installPlugin:h,uninstallPlugin:y,updatePlugin:E,enablePlugin:p,disablePlugin:g}}function Ny({value:e,onChange:t}){let{marketplaces:l,plugins:n,available:a,loading:s,error:i,addMarketplace:u,removeMarketplace:o,updateMarketplace:f,installPlugin:c,uninstallPlugin:m,updatePlugin:r,enablePlugin:d,disablePlugin:h}=Sy(),[y,E]=(0,C.useState)(""),[p,g]=(0,C.useState)(""),[v,b]=(0,C.useState)(null),[T,A]=(0,C.useState)(null),N=_=>{b(_),A(null)},M=_=>{A(_),b(null)},D=async()=>{if(y.trim())try{let _=await u(y.trim());E(""),M(_?`Added marketplace "${_}"`:"Marketplace added")}catch(_){N(_ instanceof Error?_.message:"Failed to add marketplace")}},q=async _=>{try{await o(_),M(`Removed marketplace "${_}"`)}catch(K){N(K instanceof Error?K.message:"Failed to remove marketplace")}},je=async _=>{try{let K=await f(_);K.errors.length>0?N(K.errors.join(`
90
90
  `)):M(`Updated marketplace "${_}"`)}catch(K){N(K instanceof Error?K.message:"Failed to update marketplace")}},me=async _=>{let K=_??p;if(K.trim())try{let Ft=await c(K.trim());_||g(""),M(Ft?`Installed plugin "${Ft}"`:"Plugin installed")}catch(Ft){N(Ft instanceof Error?Ft.message:"Failed to install plugin")}},O=async _=>{try{await m(_),M(`Uninstalled plugin "${_}"`)}catch(K){N(K instanceof Error?K.message:"Failed to uninstall plugin")}},L=async _=>{try{let K=await r(_);K.errors.length>0?N(K.errors.join(`
91
91
  `)):M(`Updated ${K.updated.length} plugin(s)`)}catch(K){N(K instanceof Error?K.message:"Failed to update plugin")}};return C.default.createElement("div",{className:"plugins-setting"},s&&C.default.createElement("div",{className:"setting-loading"},"Loading plugins..."),i&&C.default.createElement("div",{className:"setting-error"},i),v&&C.default.createElement("div",{className:"setting-error"},v),T&&C.default.createElement("div",{className:"setting-success"},T),C.default.createElement("div",{className:"plugins-section"},C.default.createElement(Un,{label:"Plugin Settings",value:e||{},fields:[{key:"pluginClaudeCompat",label:"Claude Code plugin compatibility",type:"boolean"},{key:"pluginAutoUpdate",label:"Auto update plugins",type:"boolean"},{key:"pluginAutoUpdateInterval",label:"Auto update interval (minutes)",type:"number",min:1},{key:"pluginSandboxHooks",label:"Sandbox plugin hooks",type:"boolean"}],onChange:t})),C.default.createElement("div",{className:"plugins-section"},C.default.createElement("h4",{className:"setting-section-subtitle"},"Marketplaces"),C.default.createElement("div",{className:"plugin-input-row"},C.default.createElement("input",{className:"setting-input plugin-input",type:"text",value:y,placeholder:"marketplace source (path, URL, or owner/repo)",onChange:_=>E(_.target.value),onKeyDown:_=>{_.key==="Enter"&&D()}})),C.default.createElement("div",{className:"plugin-actions-row"},C.default.createElement("button",{className:"setting-button-small",onClick:D,disabled:!y.trim()},"Add Marketplace")),C.default.createElement("div",{className:"plugins-list"},l.length===0&&!s&&C.default.createElement("div",{className:"setting-empty"},"No marketplaces registered."),l.map(_=>C.default.createElement("div",{key:_.name,className:"plugin-row"},C.default.createElement("div",{className:"plugin-info"},C.default.createElement("div",{className:"plugin-name"},_.name),C.default.createElement("div",{className:"plugin-meta"},_.type," \u2014 ",_.source)),C.default.createElement("div",{className:"plugin-actions"},C.default.createElement("button",{className:"setting-button-small",onClick:()=>je(_.name)},"Update"),C.default.createElement("button",{className:"setting-button-small",onClick:()=>q(_.name)},"Remove")))))),C.default.createElement("div",{className:"plugins-section"},C.default.createElement("h4",{className:"setting-section-subtitle"},"Available Plugins"),C.default.createElement("div",{className:"plugins-list"},a.length===0&&!s&&C.default.createElement("div",{className:"setting-empty"},"No available plugins."),a.map(_=>C.default.createElement("div",{key:`${_.plugin}@${_.marketplace}`,className:"plugin-row"},C.default.createElement("div",{className:"plugin-info"},C.default.createElement("div",{className:"plugin-name"},_.plugin),C.default.createElement("div",{className:"plugin-meta"},_.marketplace," \u2014 ",_.description||"No description")),C.default.createElement("div",{className:"plugin-actions"},C.default.createElement("button",{className:"setting-button-small",onClick:()=>me(`${_.plugin}@${_.marketplace}`)},"Install")))))),C.default.createElement("div",{className:"plugins-section"},C.default.createElement("h4",{className:"setting-section-subtitle"},"Installed Plugins"),C.default.createElement("div",{className:"plugin-input-row"},C.default.createElement("input",{className:"setting-input plugin-input",type:"text",value:p,placeholder:"plugin[@marketplace]",onChange:_=>g(_.target.value),onKeyDown:_=>{_.key==="Enter"&&me()}})),C.default.createElement("div",{className:"plugin-actions-row"},C.default.createElement("button",{className:"setting-button-small",onClick:me,disabled:!p.trim()},"Install"),C.default.createElement("button",{className:"setting-button-small",onClick:()=>L()},"Update All")),C.default.createElement("div",{className:"plugins-list"},n.length===0&&!s&&C.default.createElement("div",{className:"setting-empty"},"No plugins installed."),n.map(_=>C.default.createElement("div",{key:_.id,className:"plugin-row"},C.default.createElement("div",{className:"plugin-info"},C.default.createElement("div",{className:"plugin-name"},_.plugin),C.default.createElement("div",{className:"plugin-meta"},_.marketplace," \u2014 ",_.version," \u2014 ",_.enabled?"enabled":"disabled")),C.default.createElement("div",{className:"plugin-actions"},_.enabled?C.default.createElement("button",{className:"setting-button-small",onClick:()=>h(_.id)},"Disable"):C.default.createElement("button",{className:"setting-button-small",onClick:()=>d(_.id)},"Enable"),C.default.createElement("button",{className:"setting-button-small",onClick:()=>L(_.id)},"Update"),C.default.createElement("button",{className:"setting-button-small",onClick:()=>O(_.id)},"Uninstall")))))))}function Ty(e){return e===void 0?"undefined":e===null?"null":typeof e=="boolean"?e?"true":"false":typeof e=="string"?e:JSON.stringify(e,null,2)}function ky({label:e,keys:t,settings:l,modelConfig:n,onUpdate:a,onModelConfigUpdate:s}){let[i,u]=(0,se.useState)(new Set),o=c=>{u(m=>{let r=new Set(m);return r.has(c)?r.delete(c):r.add(c),r})},f=c=>{let m=l[c];switch(c){case"proxy":case"lazyTool":case"disableSuggestion":case"memo":case"messageArchiving":case"archiveToolUseInputs":return se.default.createElement(co,{label:c==="archiveToolUseInputs"?"Archive Tool Use Inputs":c,value:!!m,onChange:r=>a(c,r)});case"plugins":return se.default.createElement(Ny,{value:m||{},onChange:r=>a(c,r)});case"thinking":return se.default.createElement(dy,{label:c,value:m||"medium",options:["off","low","medium","high"],onChange:r=>a(c,r)});case"language":case"planDirectory":return se.default.createElement(mo,{label:c,value:m||"",placeholder:c==="planDirectory"?"/path/to/plan/directory":"auto",onChange:r=>a(c,r)});case"agentDepth":return se.default.createElement(go,{label:c,value:typeof m=="number"?m:1,min:1,max:5,onChange:r=>a(c,r)});case"webServer":return se.default.createElement(Un,{label:"Web Server",value:m||{},fields:[{key:"enabled",label:"Enabled",type:"boolean"},{key:"port",label:"Port",type:"number",min:1,max:65535},{key:"host",label:"Host",type:"string"}],onChange:r=>a(c,r)});case"autoMode":return se.default.createElement(Un,{label:"Auto Mode",value:m||{},fields:[{key:"enabled",label:"Enabled",type:"boolean"},{key:"model",label:"Model",type:"string"},{key:"maxConsecutiveDenials",label:"Max Consecutive Denials",type:"number",min:0},{key:"maxTotalDenials",label:"Max Total Denials",type:"number",min:0}],onChange:r=>a(c,r)});case"autoMemory":return se.default.createElement(Un,{label:"Auto Memory",value:m||{},fields:[{key:"enabled",label:"Enabled",type:"boolean"},{key:"minTokens",label:"Min Tokens",type:"number",min:0},{key:"minTurns",label:"Min Turns",type:"number",min:0},{key:"teamMemoryEnabled",label:"Team Memory Enabled",type:"boolean"}],onChange:r=>a(c,r)});case"autoDream":return se.default.createElement(Un,{label:"Auto Dream",value:m||{},fields:[{key:"enabled",label:"Enabled",type:"boolean"},{key:"minHours",label:"Min Hours",type:"number",min:0},{key:"minSessions",label:"Min Sessions",type:"number",min:0}],onChange:r=>a(c,r)});case"modelConfig":return se.default.createElement(by,{value:n||{sources:{},routing:{}},onChange:r=>s?.(r)});case"sandbox":case"sessionSummary":case"permissions":return se.default.createElement(ho,{label:c,value:m,onChange:r=>a(c,r)});case"env":return se.default.createElement(hy,{label:c,value:m||{},onChange:r=>a(c,r)});default:{let r=m!==null&&typeof m=="object",d=i.has(c);return se.default.createElement(se.default.Fragment,null,se.default.createElement("div",{className:"setting-row"},se.default.createElement("span",{className:"setting-key"},c),r?se.default.createElement("button",{className:"setting-expand-button",onClick:()=>o(c)},d?"Collapse":"Expand"):se.default.createElement("span",{className:"setting-value"},Ty(m))),r&&d&&se.default.createElement("pre",{className:"setting-json"},Ty(m)))}}};return se.default.createElement("div",{className:"setting-section"},se.default.createElement("h3",{className:"setting-section-title"},e),se.default.createElement("div",{className:"setting-list"},t.map(c=>se.default.createElement("div",{key:c,className:"setting-item"},f(c)))))}var xy=[{id:"general",label:"General",keys:["proxy","lazyTool","thinking","language","disableSuggestion","memo","messageArchiving","archiveToolUseInputs","planDirectory","agentDepth"]},{id:"plugins",label:"Plugins",keys:["plugins"]},{id:"webServer",label:"Web Server",keys:["webServer"]},{id:"auto",label:"Auto Mode",keys:["autoMode"]},{id:"memory",label:"Memory",keys:["autoMemory","autoDream"]},{id:"model",label:"Model Config",keys:["modelConfig"]},{id:"advanced",label:"Advanced",keys:["env","permissions","sandbox","sessionSummary"]}];function vo(e){return JSON.parse(JSON.stringify(e))}function Tf(e,t){return e===t?!0:typeof e!=typeof t||e===null||t===null?!1:typeof e=="object"?JSON.stringify(e)===JSON.stringify(t):!1}function Ey(e,t){let l=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(l).filter(n=>!Tf(e[n],t[n]))}function Ay({onClose:e}){let{settings:t,modelConfig:l,loading:n,error:a,updateSetting:s,updateModelConfig:i,refresh:u}=fy(),[o,f]=(0,W.useState)("general"),[c,m]=(0,W.useState)(null),[r,d]=(0,W.useState)(null),[h,y]=(0,W.useState)(!1),[E,p]=(0,W.useState)(null),[g,v]=(0,W.useState)(!1);(0,W.useEffect)(()=>{t&&c===null&&m(vo(t))},[t,c]),(0,W.useEffect)(()=>{l&&r===null&&d(vo(l))},[l,r]);let b=(me,O)=>{m(L=>L&&{...L,[me]:O}),v(!1)},T=me=>{d(me),v(!1)},A=async()=>{if(!t||!c)return;let me=Ey(t,c),O=l&&r&&!Tf(l,r);if(!(me.length===0&&!O)){y(!0),p(null),v(!1);try{for(let L of me)await s("project",L,c[L]);O&&r&&await i(r),await u(),m(null),d(null),v(!0)}catch(L){p(L instanceof Error?L.message:"Save failed")}finally{y(!1)}}},N=()=>{t&&m(vo(t)),l&&d(vo(l)),p(null),v(!1)};if(n)return W.default.createElement("div",{className:"settings-panel"},W.default.createElement("div",{className:"empty-state"},"Loading settings..."));if(a)return W.default.createElement("div",{className:"settings-panel"},W.default.createElement("div",{className:"settings-error"},W.default.createElement("div",{className:"settings-error-message"},a),W.default.createElement("button",{className:"settings-close-button",onClick:e},"Close")));if(!t||!c||!l||!r)return null;let M=xy.find(me=>me.id===o),D=Ey(t,c),q=l&&r&&!Tf(l,r),je=D.length>0||q;return W.default.createElement("div",{className:"settings-panel"},W.default.createElement("div",{className:"settings-header"},W.default.createElement("h2",{className:"settings-title"},"Settings"),W.default.createElement("div",{className:"settings-header-actions"},je&&W.default.createElement("button",{className:"settings-reset-button",onClick:N,disabled:h},"Reset"),W.default.createElement("button",{className:"settings-save-button",onClick:A,disabled:!je||h},h?"Saving...":"Save"),W.default.createElement("button",{className:"settings-close-button",onClick:e},"Close"))),E&&W.default.createElement("div",{className:"settings-save-error"},E.split(`
@@ -1748,7 +1748,7 @@ html, body {
1748
1748
 
1749
1749
  .prompt-input-inner {
1750
1750
  display: flex;
1751
- align-items: flex-start;
1751
+ align-items: center;
1752
1752
  gap: 8px;
1753
1753
  }
1754
1754
 
@@ -1785,7 +1785,7 @@ html, body {
1785
1785
  line-height: 1.5;
1786
1786
  resize: none;
1787
1787
  overflow: hidden;
1788
- min-height: 28px;
1788
+ min-height: 72px;
1789
1789
  max-height: 200px;
1790
1790
  }
1791
1791