@dahawa/hawa-code 1.37.1 → 1.37.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 +4 -4
- package/hands.js +2 -2
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -667,7 +667,7 @@ globstar while`,t,f,r,p,g),this.matchOne(t.slice(f),r.slice(p),n))return this.de
|
|
|
667
667
|
`)),Ewn(e,o,{encoding:r,flush:!0})}var JQt=new Que.default({fetchMethod:e=>Iwn(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function iUt(e){let t=Tq(e);return JQt.get(t)||JQt.fetchMethod?.(t)}async function Iwn(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await JNt(e,t.signal,15),n=0;for(let o of r)nO(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function sUt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var vwn=new Que.default({fetchMethod:e=>aUt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function Em(e){let t=Tq(e);return sUt(vwn,t,()=>aUt(t))}function aUt(e){let r=Buffer.alloc(4096),n;try{n=ZQt(e,"r");let o=XQt(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 be(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&eUt(n)}}var xwn=new Que.default({fetchMethod:e=>uUt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function nO(e){let t=Tq(e);return sUt(xwn,t,()=>uUt(t))}function uUt(e,t="utf8"){try{if(!tUt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=ZQt(e,"r"),i=XQt(o,n,0,4096,0);eUt(o);let s=n.toString(t,0,i),a=0,u=0;for(let c=0;c<s.length;c++)s[c]===`
|
|
668
668
|
`&&(c>0&&s[c-1]==="\r"?a++:u++);return a>u?"CRLF":"LF"}catch(r){return be(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function jBe(e){let t=rUt(e)?e:Tq(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 zBe(e){return e?rUt(e)?e:Tq(ke(),e):void 0}function cUt(e){try{let t=zBe(e),r=t?Twn(ke(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return pe("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function Hue(e){try{let t=bwn(e),r=zQt(e,WQt(e));if(!_wn(t))return;let i=Swn(t).filter(s=>zQt(s,WQt(s))===r&&Cwn(t,s)!==e)[0];return i||void 0}catch(t){be(`Error finding similar file for ${e}: ${t}`);return}}function WBe(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function Kv({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return WBe()?r.map((n,o)=>`${o+t} ${n}`).join(`
|
|
669
669
|
`):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
|
|
670
|
-
`)}function lUt(e){try{let t=ywn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}He();function Yv(){let e=Dn();e.hasCompletedProjectOnboarding||bi({...e,hasCompletedProjectOnboarding:!0})}function Nwn(){let e=sr();fo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function KBe({workspaceDir:e}){let r=!Dn().hasCompletedProjectOnboarding,o=sr().lastReleaseNotesSeen,i=[];(!o||(0,dUt.gt)(MACRO.VERSION,o))&&(i=iue[MACRO.VERSION]||[]);let s=i.length>0;if(Mi.useEffect(()=>{s&&!r&&Nwn()},[s,r]),!r&&!s)return null;let a=Dwn(Rwn(e,ci)),u=lUt(e),c=!a&&!u,l=oQ.isEnabled&&!sr().shiftEnterKeyBindingInstalled,d=K();return Mi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Mi.createElement(Mi.Fragment,null,Mi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Mi.createElement(_d,{children:[]},(()=>{let f=[];return u&&f.push(Mi.createElement(_d.Item,{key:"workspace"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),c&&f.push(Mi.createElement(_d.Item,{key:"claudemd"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/init")," to create a",ci," file with instructions for Hawa code."))),l&&f.push(Mi.createElement(_d.Item,{key:"terminal"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/terminal-setup"),Mi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Mi.createElement(_d.Item,{key:"questions"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Mi.createElement(_d.Item,{key:"changes"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Mi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Mi.createElement(D,{flexDirection:"column",gap:0},Mi.createElement(D,{marginBottom:1},Mi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Mi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Mi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===wwn()&&Mi.createElement(C,{color:K().warning},"Note: You have launched ",Mi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var SQ=G(se(),1);var _Q=G(se(),1);var bq=G(se(),1);function JBe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Wi("Select");return bq.default.createElement(D,{...o.option({isFocused:e})},e&&bq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),bq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&bq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var _m=G(se(),1);import{isDeepStrictEqual as Own}from"node:util";var Cq=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 u="value"in s?s.value:ZBe(s);r.push([u,a]),i++,o=a}super(r),this.first=n}};var Bwn=(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}}},XBe=e=>e.flatMap(t=>{if("options"in t){let r=XBe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),fUt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=XBe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new Cq(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}},eMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=XBe(t),[a,u]=(0,_m.useReducer)(Bwn,{visibleOptionCount:e,defaultValue:r,options:t},fUt),[c,l]=(0,_m.useState)(s);s!==c&&!Own(s,c)&&(u({type:"reset",state:fUt({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,_m.useCallback)(()=>{u({type:"focus-next-option"})},[]),f=(0,_m.useCallback)(()=>{u({type:"focus-previous-option"})},[]),p=(0,_m.useCallback)(()=>{u({type:"select-focused-option"})},[]),g=(0,_m.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,_m.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,_m.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,_m.useEffect)(()=>{i&&u({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:f,selectFocusedOption:p}};var tMe=({isDisabled:e=!1,state:t})=>{vt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var ZBe=e=>`HEADER-${e.optionValues.join(",")}`;function Nb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let u=eMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});tMe({isDisabled:e,state:u});let{styles:c}=Wi("Select");return _Q.default.createElement(D,{...c.container()},u.visibleOptions.map(l=>{let d="value"in l?l.value:ZBe(l),f=!e&&u.focusedValue!==void 0&&("value"in l?u.focusedValue===l.value:l.optionValues.includes(u.focusedValue)),p=!!u.value&&("value"in l?u.value===l.value:l.optionValues.includes(u.value)),g="header"in l,h="label"in l?l.label:l.header,E=h;if(r&&h.includes(r)){let y=h.indexOf(r);E=_Q.default.createElement(_Q.default.Fragment,null,h.slice(0,y),_Q.default.createElement(C,{...c.highlightedText()},r),h.slice(y+r.length))}return _Q.default.createElement(JBe,{key:d,isFocused:f,isSelected:p,smallPointer:g},E)}))}function pUt({onDone:e}){return vt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),SQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},SQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},SQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),SQ.default.createElement(D,null,SQ.default.createElement(Nb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var kn=G(se(),1),Ar=G(se(),1);var pp=G(se(),1);He();Ir();He();Be();import Mwn from"os";import kwn from"path";import Iq from"fs";var Pwn={sources:{},routing:{}};function gUt(){let e=Mwn.homedir();return kwn.join(e,Xn,"config.json")}function mUt(){try{let e=gUt();if(!Iq.existsSync(e))return Pwn;let t=Iq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:Lwn(r)}catch(e){throw be(e),e}}function Lwn(e){let t={},r={};for(let[n,o]of Object.entries(e))if(o?.enable===!0&&o?.env){let i=o.env,s=n;t[s]={base_url:i.BASE_URL||"",auth_token:i.AUTH_TOKEN||"",api_type:i.API_TYPE||"anthropic",models:[]},i.MODEL&&(r.MODEL=[{source:s,model:i.MODEL,weight:100}],t[s].models.push(i.MODEL)),i.SMALL_FAST_MODEL&&(r.SMALL_FAST_MODEL=[{source:s,model:i.SMALL_FAST_MODEL,weight:100}],t[s].models.includes(i.SMALL_FAST_MODEL)||t[s].models.push(i.SMALL_FAST_MODEL));break}return{sources:t,routing:r}}function AUt(e){if(e.length===0)throw new Error("No items to select from");if(e.length===1)return e[0];let t=e.reduce((n,o)=>n+(o.weight??100),0),r=Math.random()*t;for(let n of e){let o=n.weight??100;if(r-=o,r<=0)return n}return e[e.length-1]}var rMe=class{config;constructor(){try{this.config=mUt()}catch(t){console.log(t)}}reload(){this.config=mUt()}getConfig(){return this.config}hasModelRouting(){return!!(this.config.routing?.MODEL&&this.config.routing.MODEL.length>0)}getModelRoutingModels(){let t=this.config.routing?.MODEL;return!t||t.length===0?[]:t.map(r=>r.model)}hasSmallFastModelRouting(){return!!(this.config.routing?.SMALL_FAST_MODEL&&this.config.routing.SMALL_FAST_MODEL.length>0)}getModel(){let t=this.config.routing?.MODEL;if(!t||t.length===0)throw new Error("No MODEL routing configuration found");let r=AUt(t);return`${r.source}__${r.model}`}getSmallFastModel(){let t=this.config.routing?.SMALL_FAST_MODEL;if(!t||t.length===0)throw new Error("No SMALL_FAST_MODEL routing configuration found");let r=AUt(t);return`${r.source}__${r.model}`}getSourceConfig(t){return this.config.sources?.[t]}parseModelKey(t){let r=t.indexOf("__");return r===-1?{source:"",model:t}:{source:t.slice(0,r),model:t.slice(r+2)}}getModelSourceConfig(t){let{source:r}=this.parseModelKey(t);if(r)return this.getSourceConfig(r)}setModelRouting(t){this.config.routing.MODEL=t,this.saveConfig()}setSmallFastModelRouting(t){this.config.routing.SMALL_FAST_MODEL=t,this.saveConfig()}getAvailableModels(){let t=[];for(let[r,n]of Object.entries(this.config.sources||{}))for(let o of n.models||[])t.push(`${r}__${o}`);return t}saveConfig(){try{let t=gUt(),r={};if(Iq.existsSync(t)){let o=Iq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};Iq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},Qo=new rMe;var Fwn="1.37.1",PS={VERSION:Fwn,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 nMe=46,hUt=["(\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 Gue({isDefaultModel:e=!1}){let t=Math.max(nMe,ke().length+12),r=K(),n=hUt[Math.floor(Math.random()*hUt.length)];return pp.createElement(D,{flexDirection:"column"},pp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},pp.createElement(C,null,pp.createElement(C,null,n)," Welcome to"," ",pp.createElement(C,{bold:!0},ze),pp.createElement(C,{color:r.secondaryText}," v",PS.VERSION)),pp.createElement(pp.Fragment,null,pp.createElement(D,{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: ",Qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),pp.createElement(C,{color:r.secondaryText},"small fast model: ",Qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var y0=G(se(),1);Be();var bW=G(se(),1);import{randomUUID as gI}from"crypto";var EUt=()=>[],_Ut=()=>{};function SUt(e){EUt=e}function que(){return EUt}function yUt(e){_Ut=e}function TUt(){return _Ut}Be();dr();Ir();Be();He();import{existsSync as Mb,readdirSync as aMn,statSync as uMn}from"fs";import{join as Xv,relative as cMn}from"path";import{homedir as W4t}from"os";import{platform as lMn}from"process";import{readFile as ex}from"fs/promises";Ir();LS();zr();import{join as $wn,sep as Vwn}from"path";function mp(){if(!Sm())return!1;try{let e=qt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ym(){return($wn(ke(),".hcode","team-memory")+Vwn).normalize("NFC")}function bQ(e){let t=e.normalize("NFC"),r=ym();return t.startsWith(r)}var K4t=G(tce(),1);qo();var V4t=G(tce(),1);Ir();He();Be();hm();import{readFile as q4t}from"fs/promises";import{existsSync as yMe,readdirSync as nMn,statSync as oMn}from"fs";import{join as TMe,relative as Y4t}from"path";import{homedir as iMn}from"os";function $4t(e){try{let t=(0,V4t.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 be(t),{paths:[],content:e.trim()}}}function sMn(e,t){return t.length===0?!0:t.some(r=>{try{return yd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function bMe(e){let t=[];try{if(!yMe(e))return t;let r=nMn(e);for(let n of r){let o=TMe(e,n),i=oMn(o);i.isDirectory()?t.push(...bMe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function j4t(){let e=[];try{let t=TMe(iMn(),Xn,"rules");if(yMe(t)){let r=bMe(t);for(let n of r)try{let o=await q4t(n,"utf-8"),{paths:i,content:s}=$4t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=TMe(ke(),Xn,"rules");if(yMe(t)){let r=bMe(t);for(let n of r)try{let o=await q4t(n,"utf-8"),{paths:i,content:s}=$4t(o);i.length>0&&e.push({filePath:Y4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function z4t(e,t){e=Use(e);let r=Use(ke()),n=e.startsWith(r)?Y4t(r,e):e;return t.filter(o=>sMn(n,o.paths))}var dMn=`# hawaCodeMd
|
|
670
|
+
`)}function lUt(e){try{let t=ywn(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}He();function Yv(){let e=Dn();e.hasCompletedProjectOnboarding||bi({...e,hasCompletedProjectOnboarding:!0})}function Nwn(){let e=sr();fo({...e,lastReleaseNotesSeen:MACRO.VERSION})}function KBe({workspaceDir:e}){let r=!Dn().hasCompletedProjectOnboarding,o=sr().lastReleaseNotesSeen,i=[];(!o||(0,dUt.gt)(MACRO.VERSION,o))&&(i=iue[MACRO.VERSION]||[]);let s=i.length>0;if(Mi.useEffect(()=>{s&&!r&&Nwn()},[s,r]),!r&&!s)return null;let a=Dwn(Rwn(e,ci)),u=lUt(e),c=!a&&!u,l=oQ.isEnabled&&!sr().shiftEnterKeyBindingInstalled,d=K();return Mi.createElement(D,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&Mi.createElement(Mi.Fragment,null,Mi.createElement(C,{color:d.secondaryText},"Tips for getting started:"),Mi.createElement(_d,{children:[]},(()=>{let f=[];return u&&f.push(Mi.createElement(_d.Item,{key:"workspace"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to create a new app or clone a repository."))),c&&f.push(Mi.createElement(_d.Item,{key:"claudemd"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/init")," to create a",ci," file with instructions for Hawa code."))),l&&f.push(Mi.createElement(_d.Item,{key:"terminal"},Mi.createElement(C,{color:d.secondaryText},"Run ",Mi.createElement(C,{color:d.text},"/terminal-setup"),Mi.createElement(C,{bold:!1}," to set up terminal integration")))),f.push(Mi.createElement(_d.Item,{key:"questions"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," questions about your codebase."))),f.push(Mi.createElement(_d.Item,{key:"changes"},Mi.createElement(C,{color:d.secondaryText},"Ask ",ze," to implement changes to your codebase."))),f})())),!r&&s&&Mi.createElement(D,{borderColor:K().secondaryBorder,flexDirection:"column",marginRight:1},Mi.createElement(D,{flexDirection:"column",gap:0},Mi.createElement(D,{marginBottom:1},Mi.createElement(C,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),Mi.createElement(D,{flexDirection:"column",marginLeft:1},i.map((f,p)=>Mi.createElement(C,{key:p,color:K().secondaryText},"\u2022 ",f))))),e===wwn()&&Mi.createElement(C,{color:K().warning},"Note: You have launched ",Mi.createElement(C,{bold:!0},ze)," in your home directory. For the best experience, launch it in a project directory instead."))}var SQ=G(se(),1);var _Q=G(se(),1);var bq=G(se(),1);function JBe({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Wi("Select");return bq.default.createElement(D,{...o.option({isFocused:e})},e&&bq.default.createElement(C,{...o.focusIndicator()},r?Vr.triangleDownSmall:Vr.pointer),bq.default.createElement(C,{...o.label({isFocused:e,isSelected:t})},n),t&&bq.default.createElement(C,{...o.selectedIndicator()},Vr.tick))}var _m=G(se(),1);import{isDeepStrictEqual as Own}from"node:util";var Cq=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 u="value"in s?s.value:ZBe(s);r.push([u,a]),i++,o=a}super(r),this.first=n}};var Bwn=(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}}},XBe=e=>e.flatMap(t=>{if("options"in t){let r=XBe(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),fUt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=XBe(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new Cq(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}},eMe=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=XBe(t),[a,u]=(0,_m.useReducer)(Bwn,{visibleOptionCount:e,defaultValue:r,options:t},fUt),[c,l]=(0,_m.useState)(s);s!==c&&!Own(s,c)&&(u({type:"reset",state:fUt({visibleOptionCount:e,defaultValue:r,options:t})}),l(s));let d=(0,_m.useCallback)(()=>{u({type:"focus-next-option"})},[]),f=(0,_m.useCallback)(()=>{u({type:"focus-previous-option"})},[]),p=(0,_m.useCallback)(()=>{u({type:"select-focused-option"})},[]),g=(0,_m.useMemo)(()=>s.map((h,E)=>({...h,index:E})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,_m.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,_m.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,_m.useEffect)(()=>{i&&u({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:f,selectFocusedOption:p}};var tMe=({isDisabled:e=!1,state:t})=>{vt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var ZBe=e=>`HEADER-${e.optionValues.join(",")}`;function Nb({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let u=eMe({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});tMe({isDisabled:e,state:u});let{styles:c}=Wi("Select");return _Q.default.createElement(D,{...c.container()},u.visibleOptions.map(l=>{let d="value"in l?l.value:ZBe(l),f=!e&&u.focusedValue!==void 0&&("value"in l?u.focusedValue===l.value:l.optionValues.includes(u.focusedValue)),p=!!u.value&&("value"in l?u.value===l.value:l.optionValues.includes(u.value)),g="header"in l,h="label"in l?l.label:l.header,E=h;if(r&&h.includes(r)){let y=h.indexOf(r);E=_Q.default.createElement(_Q.default.Fragment,null,h.slice(0,y),_Q.default.createElement(C,{...c.highlightedText()},r),h.slice(y+r.length))}return _Q.default.createElement(JBe,{key:d,isFocused:f,isSelected:p,smallPointer:g},E)}))}function pUt({onDone:e}){return vt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),SQ.default.createElement(D,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:K().secondaryBorder},SQ.default.createElement(D,{marginBottom:1,flexDirection:"column"},SQ.default.createElement(C,{bold:!0},"You've spent $5 this session.")),SQ.default.createElement(D,null,SQ.default.createElement(Nb,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var kn=G(se(),1),Ar=G(se(),1);var pp=G(se(),1);He();Ir();He();Be();import Mwn from"os";import kwn from"path";import Iq from"fs";var Pwn={sources:{},routing:{}};function gUt(){let e=Mwn.homedir();return kwn.join(e,Xn,"config.json")}function mUt(){try{let e=gUt();if(!Iq.existsSync(e))return Pwn;let t=Iq.readFileSync(e,"utf-8"),r=JSON.parse(t);return r.sources&&r.routing?r:Lwn(r)}catch(e){throw be(e),e}}function Lwn(e){let t={},r={};for(let[n,o]of Object.entries(e))if(o?.enable===!0&&o?.env){let i=o.env,s=n;t[s]={base_url:i.BASE_URL||"",auth_token:i.AUTH_TOKEN||"",api_type:i.API_TYPE||"anthropic",models:[]},i.MODEL&&(r.MODEL=[{source:s,model:i.MODEL,weight:100}],t[s].models.push(i.MODEL)),i.SMALL_FAST_MODEL&&(r.SMALL_FAST_MODEL=[{source:s,model:i.SMALL_FAST_MODEL,weight:100}],t[s].models.includes(i.SMALL_FAST_MODEL)||t[s].models.push(i.SMALL_FAST_MODEL));break}return{sources:t,routing:r}}function AUt(e){if(e.length===0)throw new Error("No items to select from");if(e.length===1)return e[0];let t=e.reduce((n,o)=>n+(o.weight??100),0),r=Math.random()*t;for(let n of e){let o=n.weight??100;if(r-=o,r<=0)return n}return e[e.length-1]}var rMe=class{config;constructor(){try{this.config=mUt()}catch(t){console.log(t)}}reload(){this.config=mUt()}getConfig(){return this.config}hasModelRouting(){return!!(this.config.routing?.MODEL&&this.config.routing.MODEL.length>0)}getModelRoutingModels(){let t=this.config.routing?.MODEL;return!t||t.length===0?[]:t.map(r=>r.model)}hasSmallFastModelRouting(){return!!(this.config.routing?.SMALL_FAST_MODEL&&this.config.routing.SMALL_FAST_MODEL.length>0)}getModel(){let t=this.config.routing?.MODEL;if(!t||t.length===0)throw new Error("No MODEL routing configuration found");let r=AUt(t);return`${r.source}__${r.model}`}getSmallFastModel(){let t=this.config.routing?.SMALL_FAST_MODEL;if(!t||t.length===0)throw new Error("No SMALL_FAST_MODEL routing configuration found");let r=AUt(t);return`${r.source}__${r.model}`}getSourceConfig(t){return this.config.sources?.[t]}parseModelKey(t){let r=t.indexOf("__");return r===-1?{source:"",model:t}:{source:t.slice(0,r),model:t.slice(r+2)}}getModelSourceConfig(t){let{source:r}=this.parseModelKey(t);if(r)return this.getSourceConfig(r)}setModelRouting(t){this.config.routing.MODEL=t,this.saveConfig()}setSmallFastModelRouting(t){this.config.routing.SMALL_FAST_MODEL=t,this.saveConfig()}getAvailableModels(){let t=[];for(let[r,n]of Object.entries(this.config.sources||{}))for(let o of n.models||[])t.push(`${r}__${o}`);return t}saveConfig(){try{let t=gUt(),r={};if(Iq.existsSync(t)){let o=Iq.readFileSync(t,"utf-8");r=JSON.parse(o)}let n={...r,sources:this.config.sources,routing:this.config.routing};Iq.writeFileSync(t,JSON.stringify(n,null,2))}catch(t){be(t)}}},Qo=new rMe;var Fwn="1.37.2",PS={VERSION:Fwn,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 nMe=46,hUt=["(\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 Gue({isDefaultModel:e=!1}){let t=Math.max(nMe,ke().length+12),r=K(),n=hUt[Math.floor(Math.random()*hUt.length)];return pp.createElement(D,{flexDirection:"column"},pp.createElement(D,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},pp.createElement(C,null,pp.createElement(C,null,n)," Welcome to"," ",pp.createElement(C,{bold:!0},ze),pp.createElement(C,{color:r.secondaryText}," v",PS.VERSION)),pp.createElement(pp.Fragment,null,pp.createElement(D,{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: ",Qo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),pp.createElement(C,{color:r.secondaryText},"small fast model: ",Qo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var y0=G(se(),1);Be();var bW=G(se(),1);import{randomUUID as gI}from"crypto";var EUt=()=>[],_Ut=()=>{};function SUt(e){EUt=e}function que(){return EUt}function yUt(e){_Ut=e}function TUt(){return _Ut}Be();dr();Ir();Be();He();import{existsSync as Mb,readdirSync as aMn,statSync as uMn}from"fs";import{join as Xv,relative as cMn}from"path";import{homedir as W4t}from"os";import{platform as lMn}from"process";import{readFile as ex}from"fs/promises";Ir();LS();zr();import{join as $wn,sep as Vwn}from"path";function mp(){if(!Sm())return!1;try{let e=qt();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ym(){return($wn(ke(),".hcode","team-memory")+Vwn).normalize("NFC")}function bQ(e){let t=e.normalize("NFC"),r=ym();return t.startsWith(r)}var K4t=G(tce(),1);qo();var V4t=G(tce(),1);Ir();He();Be();hm();import{readFile as q4t}from"fs/promises";import{existsSync as yMe,readdirSync as nMn,statSync as oMn}from"fs";import{join as TMe,relative as Y4t}from"path";import{homedir as iMn}from"os";function $4t(e){try{let t=(0,V4t.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 be(t),{paths:[],content:e.trim()}}}function sMn(e,t){return t.length===0?!0:t.some(r=>{try{return yd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function bMe(e){let t=[];try{if(!yMe(e))return t;let r=nMn(e);for(let n of r){let o=TMe(e,n),i=oMn(o);i.isDirectory()?t.push(...bMe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function j4t(){let e=[];try{let t=TMe(iMn(),Xn,"rules");if(yMe(t)){let r=bMe(t);for(let n of r)try{let o=await q4t(n,"utf-8"),{paths:i,content:s}=$4t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=TMe(ke(),Xn,"rules");if(yMe(t)){let r=bMe(t);for(let n of r)try{let o=await q4t(n,"utf-8"),{paths:i,content:s}=$4t(o);i.length>0&&e.push({filePath:Y4t(ke(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function z4t(e,t){e=Use(e);let r=Use(ke()),n=e.startsWith(r)?Y4t(r,e):e;return t.filter(o=>sMn(n,o.paths))}var dMn=`# hawaCodeMd
|
|
671
671
|
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 fMn(e="default"){let r=$e.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(o=>{let i=o.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${o.filePath} (${i}):
|
|
672
672
|
|
|
673
673
|
${o.content}`}).join(`
|
|
@@ -766,7 +766,7 @@ Stack trace: `+d.stack)),new Response(u.body,{status:a.status,statusText:a.statu
|
|
|
766
766
|
Total duration (API): ${M_(Mm.totalAPIDuration)}
|
|
767
767
|
Total duration (wall): ${M_(czt())}`)}function lzt(){(0,uzt.useEffect)(()=>{let e=()=>{process.stdout.write(`
|
|
768
768
|
`+uUe()+`
|
|
769
|
-
`);let t=Dn();bi({...t,lastCost:Mm.totalCost,lastAPIDuration:Mm.totalAPIDuration,lastDuration:czt(),lastSessionId:u_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}function e7n(e,t){return Math.round(e*t)/t}Be();He();He();var cUe="1.37.
|
|
769
|
+
`);let t=Dn();bi({...t,lastCost:Mm.totalCost,lastAPIDuration:Mm.totalAPIDuration,lastDuration:czt(),lastSessionId:u_})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}function e7n(e,t){return Math.round(e*t)/t}Be();He();He();var cUe="1.37.2";globalThis.MACRO={VERSION:cUe,PACKAGE_URL:`@dahawa/${Bi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var Ufe=process.env.HAWA_CODE_USER_AGENT||`${Bi}/${cUe} (${process.env.USER_TYPE})`;Be();Be();dr();function vf(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=df(t);if(n?.type==="user"){t[t.length-1]=o7n(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=df(t);n?.type==="user"&&(t[t.length-1]=t7n(n,r));return}}}),t}function t7n(e,t){return{...e,message:{...e.message,content:n7n(e.message.content,r7n(t.content.content))}}}function r7n(e){return`
|
|
770
770
|
<system-reminder>
|
|
771
771
|
The user sent the following message:
|
|
772
772
|
${e}
|
|
@@ -3431,7 +3431,7 @@ Return ONLY a JSON object with the following format:
|
|
|
3431
3431
|
{"selected_memories": ["filename1.md", "filename2.md"]}`;try{let c=(await mC({systemPrompt:[vLo],userPrompt:a,signal:r})).message.content.find(g=>g.type==="text");if(!c||c.type!=="text")return[];let l=c.text.trim(),d=l.match(/\{[\s\S]*\}/),f=d?d[0]:l;return(Vse(f).selected_memories||[]).filter(g=>o.has(g))}catch(u){return r.aborted?[]:(be(`[memdir] selectRelevantMemories failed: ${u}`),[])}}var MZe=200,kZe=4096;async function XNr(e){return(await Promise.all(e.map(async({path:r})=>{try{let{content:n,totalLines:o}=Uue(r,0,MZe),i=n.length>kZe,s=i?n.slice(0,kZe):n,u=o>MZe||i?`
|
|
3432
3432
|
|
|
3433
3433
|
> This memory file was truncated (${i?`${kZe} byte limit`:`first ${MZe} lines`}). Use the Read tool to view the complete file at: ${r}`:"";return{path:r,content:s+u}}catch(n){return be(`[memoryRecall] failed to read memory file ${r}: ${n}`),null}}))).filter(r=>r!==null)}LS();function eOr(e){return typeof e=="string"?{type:"text",text:e}:e}function DLo(e){if(typeof e=="string")return e;let t=[];if(Array.isArray(e))for(let r of e)t.push(eOr(r));else t.push(eOr(e));return t}async function RLo(e,t,r){if(process.env.USER_TYPE!=="ant"||!r||!await e1r()){let i=await t();return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:{message:i,shouldSkipPermissionCheck:!1}}let[n,o]=await Promise.all([t(),t()]);return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:o.isApiErrorMessage?{message:n,shouldSkipPermissionCheck:!1}:n.isApiErrorMessage?{message:o,shouldSkipPermissionCheck:!1}:t1r(n,o)?await r(n,o):{message:n,shouldSkipPermissionCheck:!1}}async function*EW(e,t,r,n,o,i){o.hookContext={hooks:qt().hooks},$e.onQueryStart(),f1r.tryStart();let s=[...e];for(;;){for await(let d of mE([...s],t,r,n,o,i))yield d,s.push(d);let a=[];if(no.needNotification()&&a.push(...await no.takeNotificationMessages()),es.needNotification()){let d=await es.takeNotificationMessages();d&&a.push(...d)}let u=await _s.takeTeamLeadMailInbox();u&&u.length>0&&a.push({type:"text",text:_s.formatMessagesForContext(u)});let l=$e.getSessionContext(o.agentId).takePendingPrompts();if(l.length>0){let d=l.join(`
|
|
3434
|
-
`);a.push({type:"text",text:d})}if(a.length>0){let d=_t(a);yield d,s.push(d);continue}for await(let d of d1r.tryStop(s,t,r,n,o))yield d,s.push(d);if(s.length>0&&s[s.length-1].type
|
|
3434
|
+
`);a.push({type:"text",text:d})}if(a.length>0){let d=_t(a);yield d,s.push(d);continue}for await(let d of d1r.tryStop(s,t,r,n,o))yield d,s.push(d);if(s.length>0&&s[s.length-1].type!=="user")break}!o.abortController.signal.aborted&&!qt().disableSuggestion&&zNr.getSuggestionPrompt(s).then(a=>{a&&Rn.emit(vre,a)}),o.abortController.signal.aborted||wLo(s,t,r,o).catch(a=>{be(a)});try{if(It.isLazyToolEnable()){let a=$e.getInQueryContext()[um];a&&a.size>0&&(a=[...a],yield _t(`<system-notification> unload ${a.map(u=>u+" tool").join(", ")} success, must be reloaded before their next use. </system-notification>`))}}catch(a){throw a}$e.onQueryEnd(null,o.abortController.signal.aborted)}async function wLo(e,t,r,n){let o=n;It.isLazyToolEnable()&&!n.agentId&&n.options._tools&&(o={...n,options:{...n.options,tools:n.options._tools}});let i={messages:[...e],systemPrompt:t,userContext:r,systemContext:await fi(),toolUseContext:o,querySource:"repl_main_thread"};ZNr(i).catch(s=>{be(s)}),$Nr(i).catch(s=>{be(s)})}async function*mE(e,t,r,n,o,i){qt(),It.isLazyToolEnable()?o.agentId||(o.options._tools||(o.options._tools=o.options.tools),o.options.tools=o.options._tools.filter(U=>pS.includes(U.name)||$e.getInQueryContext()[um]?.has(U.name))):o.agentId||o.options._tools&&(o.options.tools=o.options._tools,delete o.options._tools),e=dxt(e);let{messages:s,wasCompacted:a}=await l1r(e,o);if(a){e=s;for(let U of e)yield U}Pd("session:startup",{agentId:o.agentId,messages:e.length,timestamp:Date.now(),context:r||{}});let u=e.filter(U=>U.type==="user").pop();if(u&&u.message.content){let U=u.message.content;typeof U=="string"&&n1r(U).catch(k=>{be(k)})}FLo(o.agentId,u,o.abortController.signal);let{systemPrompt:c,reminders:l}=await Ger(t,r,{agentId:o.agentId,permissionMode:o.options?.permissionMode,tools:o.options.tools}),d=$e.getInQueryContext()[Gw];if(d&&d.filePath&&!$e.getInQueryContext().open_in_ide&&(yield qy("File opened in IDE: "+d.filePath),$e.getInQueryContext().open_in_ide=!0),!o.agentName){let U=await _s.takeMailInbox(_s.getCurrentTeamName(),o.agentName||Z1);if(U&&U.length>0){let k=_s.formatMessagesForContext(U),z=_t([{type:"text",text:k}]);yield z,e.push(z)}}let p=$e.getSessionContext(o.agentId).takePendingPrompts();if(p&&p.length>0){let U=rOr(p.join(`
|
|
3435
3435
|
`));yield U,e.push(U)}let g=PLo(e,l);function h(){return Ru(vf(e),c,o.options.tools,o.abortController.signal,{dangerouslySkipPermissions:o.options.dangerouslySkipPermissions??!1,model:o.options.slowAndCapableModel,prependCLISysprompt:!0,agentId:o.agentId,thinking:o.options.thinking})}let E=await RLo(o,h,i);if(E.message===null){yield ur(Qu);return}let y=E.message;if(process.env[w6]==="true")try{y.message.content=y.message.content.map(U=>{if(U.type==="tool_use"){let k=o.options.tools.find(z=>z.name===U.name);if(k.isMcp?.()){let z=k.inputSchema.safeParse(U.input);return z.success?U.input=z.data:(pe("\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u975E\u6CD5\uFF0C\u9700\u8981\u8FDB\u884C\u4FEE\u590D "+U.input),U.input=WNr(U.input)),U}else if(k?.isFixSchema?.()){let z=k.inputSchema.safeParse(U.input);return z.success&&(U.input=z.data),U}}return U})}catch(U){pe(`Error in fixing tool input schema: ${U}`)}let b=E.shouldSkipPermissionCheck,I=await fi();A1r([...e,y],t,r,I,o,o.agentId?"subagent":"repl_main_thread").catch(U=>{be(U)}),yield y;let x=y.message.content.filter(U=>U.type==="tool_use");if(!x.length)return;let O=await Z4t(x,o.agentId);if(O)for(let U of O)yield U;o={...o};let P=[];for await(let U of NLo(x,y,n,o,b,e))yield U,U.type==="user"&&P.push(U);if(o.abortController.signal.aborted){yield ur(g5);return}let Q=P.sort((U,k)=>{let z=x.findIndex(ge=>ge.id===U.message.content[0].id),Y=x.findIndex(ge=>ge.id===k.message.content[0].id);return z-Y});kLo(e,g),yield*await mE([...e,y,...Q],t,r,n,o,i)}async function*NLo(e,t,r,n,o,i){let s=new Vme;for(let a of e){let u=new qme,c=n.options.tools.find(l=>l.name===a.name);c?(u.sync=!c.isReadOnly(),u.toolName=c.name):u.sync=!0,u.callable=()=>OLo(a,new Set(e.map(l=>l.id)),t,r,n,o,i),s.addTask(u)}for await(let a of s.getResult())yield a}async function*OLo(e,t,r,n,o,i,s){try{let a=e.name,u=o.options.tools.find(l=>l.name===a);if(!u){Oe("tengu_tool_use_error",{error:`No such tool available: ${a}`,messageID:r.message.id,toolName:a,toolUseID:e.id});let l=It.isLazyToolEnable()&&!o.agentId;yield _t([{type:"tool_result",content:l?`Error: No such tool available: ${a}, Use the ToolLoader to load it`:`Error: No such tool available: ${a}`,is_error:!0,tool_use_id:e.id}]);return}let c=e.input;try{if(o.abortController.signal.aborted){Oe("tengu_tool_use_cancelled",{toolName:u.name,toolUseID:e.id}),yield _t([FZe(e.id)]);return}for await(let l of MLo(u,e.id,t,c,o,n,r,i,s))yield l}catch(l){let d=LZe(l);be(l),yield _t([{type:"tool_result",content:`call tool ${e.id} error ${d} `,is_error:!0,tool_use_id:e.id}])}}catch(a){let u=LZe(a);yield _t([{type:"tool_result",content:`call tool ${e.id} error ${u} `,is_error:!0,tool_use_id:e.id}])}}function BLo(e,t){switch(e){case io:{let{command:r,timeout:n,run_in_background:o}=io.inputSchema.parse(t);return{command:r.replace(`cd ${ke()} && `,""),...n?{timeout:n}:{},...o!==void 0?{run_in_background:o}:{}}}default:return t}}async function*MLo(e,t,r,n,o,i,s,a,u){let c=e.inputSchema.safeParse(n);if(!c.success){Oe("tengu_tool_use_error",{error:`InputValidationError: ${c.error.message}`,messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200)}),yield _t([{type:"tool_result",content:`InputValidationError: ${c.error.message}`,is_error:!0,tool_use_id:t}]);return}let l=BLo(e,n),d=await e.validateInput?.(l,o);if(d?.result===!1){Oe("tengu_tool_use_error",{error:d?.message.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200),...d?.meta??{}}),yield _t([{type:"tool_result",content:d.message,is_error:!0,tool_use_id:t}]);return}let f=new I7(o.hookContext?.hooks),p=$e.getSessionContext(o.agentId).getSessionId(),g={session_id:p,transcript_path:nc(),cwd:ke(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PreToolUse",tool_name:e.name,tool_input:l,tool_use_id:t},h={hookWarning:null,forceCheck:!1},E=await f.execute(g);if(E){if(E.systemMessage&&!E.suppressOutput&&(yield QS(t,r,ur(E.systemMessage),[],[],{multiline:!1,freeze:!0})),E.continue===!1){Oe("tengu_tool_use_blocked_by_hook",{toolName:e.name,toolUseID:t,reason:E.stopReason?"Error: "+E.stopReason:"Tool execution blocked by PreToolUse hook"}),yield _t([{type:"tool_result",content:E.stopReason?"Error: "+E.stopReason:"Tool execution blocked by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(E.hookSpecificOutput?.permissionDecision==="deny"){Oe("tengu_tool_use_denied_by_hook",{toolName:e.name,toolUseID:t,reason:E.hookSpecificOutput.permissionDecisionReason||"Denied by PreToolUse hook"}),yield _t([{type:"tool_result",content:E.hookSpecificOutput.permissionDecisionReason||"Tool execution denied by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(E.hookSpecificOutput?.permissionDecision==="ask"?(a=!1,h.forceCheck=!0):E.hookSpecificOutput?.permissionDecision==="allow"&&(yield QS(t,r,ur(E.hookSpecificOutput.permissionDecisionReason||"Tool execution allowed by PreToolUse hook"),[],[],{multiline:!1,freeze:!0})),E.hookSpecificOutput?.updatedInput)for(let b in E.hookSpecificOutput.updatedInput)b in l&&(l[b]=E.hookSpecificOutput.updatedInput[b]);h.hookWarning=`Hook PreToolUse:${e.name} requires confirmation for this command:${E.hookSpecificOutput.permissionDecisionReason}`}let y=a?{result:!0}:await i(e,l,o,s,t,h,u);if(y.result===!1){yield _t([{type:"tool_result",content:y.message,is_error:!0,tool_use_id:t}]);return}try{let b=e.call(l,o,i);for await(let{value:I,aborted:x}of i1r(b,o.abortController.signal)){if(x){let O=new P9(o.hookContext?.hooks),P={session_id:p,transcript_path:nc(),cwd:ke(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:l,tool_use_id:t,error:"User interrupted the tool execution",is_interrupt:!0};await O.execute(P)&&(yield QS(t,r,ur(`PostToolUseFailure hook executed for tool: ${e.name}`),[],[],{multiline:!1,freeze:!0})),yield _t([FZe(t)]);return}switch(I.type){case"result":Oe("tengu_tool_use_success",{messageID:s.message.id,toolName:e.name});let O=new v7(o.hookContext?.hooks),P={session_id:p,transcript_path:nc(),cwd:ke(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUse",tool_name:e.name,tool_input:l,tool_response:I.data||{},tool_use_id:t},Q=await O.execute(P);Q&&Q.decision==="block"&&(yield QS(t,r,ur(Q.reason?`PostToolUse:Read hook blocking error:${Q.reason}`:"Tool execution blocked by PostToolUse hook"),[],[],{multiline:!1,freeze:!0}));let U="";if(Q&&Q.hookSpecificOutput?.additionalContext&&(U=`<system-reminder>
|
|
3436
3436
|
PostToolUse:${e.name} hook additional context: ${Q.hookSpecificOutput.additionalContext}
|
|
3437
3437
|
</system-reminder>`),typeof I.resultForAssistant=="function"){let k=I.resultForAssistant(t);if(U&&Array.isArray(k)){let z=k.find(Y=>Y.type==="tool_result");z&&(Array.isArray(z.content)||(z.content=[{type:"text",text:z.content}]),z.content.push({type:"text",text:U}))}yield _t(k,{data:I.data,resultForAssistant:I.resultForAssistant})}else{let k=DLo(I.resultForAssistant),z=[];Array.isArray(k)?z.push(...k):k&&z.push({type:"text",text:k}),U&&z.push({type:"text",text:U}),yield _t([{type:"tool_result",content:z,tool_use_id:t}],{data:I.data,resultForAssistant:I.resultForAssistant})}return;case"progress":Oe("tengu_tool_use_progress",{messageID:s.message.id,toolName:e.name}),yield QS(t,r,I.content,I.normalizedMessages,I.tools,I.meta)}}}catch(b){pe("\u5DE5\u5177\u6267\u884C\u9519\u8BEF\uFF1A",b);let I=LZe(b);Oe("tengu_tool_use_error",{error:I.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,1e3)});let x=new P9(o.hookContext?.hooks),O={session_id:p,transcript_path:nc(),cwd:ke(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:l,tool_use_id:t,error:I,is_interrupt:!1},P=await x.execute(O),Q="";P?.hookSpecificOutput?.additionalContext&&(Q=`<system-reminder>
|
|
@@ -3601,7 +3601,7 @@ Summary:`))return t={...t,text:"\u273B Conversation compacted"},gR.createElement
|
|
|
3601
3601
|
Files modified by other users:
|
|
3602
3602
|
`+u}let s=(await mC({systemPrompt:["You are an expert at analyzing git history. Given a list of files and their modification counts, return exactly five filenames that are frequently modified and represent core application logic (not auto-generated files, dependencies, or configuration). Make sure filenames are diverse, not all in the same folder, and are a mix of user and other users. Return only the filenames' basenames (without the path) separated by newlines with no explanation."],userPrompt:e})).message.content[0];if(!s||s.type!=="text")return[];let a=s.text.trim().split(`
|
|
3603
3603
|
`);return a.length<5?[]:a}catch(e){return be(e),[]}}var fye=Ve(async()=>{let e=sr(),t=Dn(),r=Date.now(),n=t.exampleFilesGeneratedAt??0,o=10080*60*1e3;r-n>o&&(t.exampleFiles=[]);let i={...e,numStartups:(e.numStartups??0)+1};fo(i),t.exampleFiles?.length||CQo().then(a=>{a.length&&bi({...Dn(),exampleFiles:a,exampleFilesGeneratedAt:Date.now()})});let s=t.exampleFiles?.length?Hw(t.exampleFiles):"<filepath>";return["fix lint errors","fix typecheck errors",`how does ${s} work?`,`refactor ${s}`,"how do I log an error?",`edit ${s} to...`,`write a test for ${s}`,"create a util logging.py that..."]});var pn=G(se(),1);var fXe=G(se(),1);var IQo=100;function dXe(){return Dn().history??[]}function _R(e){let t=Dn(),r=t.history??[];r[0]!==e&&(r.unshift(e),bi({...t,history:r.slice(0,IQo)}))}function EBr(e,t){let[r,n]=(0,fXe.useState)(0),[o,i]=(0,fXe.useState)(""),s=l=>{if(l!==void 0&&typeof l=="string"){let d=l.startsWith("!")?"bash":"prompt",f=d==="bash"?l.slice(1):l;e(f,d)}};function a(){let l=dXe().filter(d=>typeof d=="string");if(r<l.length){r===0&&t.trim()!==""&&i(t);let d=r+1;n(d),s(l[r])}}function u(){let l=dXe().filter(d=>typeof d=="string");if(r>1){let d=r-1;n(d),s(l[d-1])}else r===1&&(n(0),s(o))}function c(){i(""),n(0)}return{historyIndex:r,setHistoryIndex:n,onHistoryUp:a,onHistoryDown:u,resetHistory:c}}var MW=G(se(),1);function _Br({commands:e,onInputChange:t,onSubmit:r,setCursorOffset:n}){let[o,i]=(0,MW.useState)([]),[s,a]=(0,MW.useState)(-1);function u(l){if(l.startsWith("/")){let d=l.slice(1).toLowerCase(),p=e.filter(h=>!h.isHidden).filter(h=>{let E=[h.userFacingName()];return h.aliases&&E.push(...h.aliases),E.some(y=>y.toLowerCase().startsWith(d))}).map(h=>h.userFacingName());i(p);let g=s>-1?p.indexOf(o[s]):0;g>-1?a(g):a(0)}else i([]),a(-1)}vt((l,d)=>{if(o.length>0){if(d.downArrow)return a(f=>f>=o.length-1?0:f+1),!0;if(d.upArrow)return a(f=>f<=0?o.length-1:f-1),!0;if(d.tab||d.return&&s>=0){s===-1&&d.tab&&a(0);let f=s>=0?s:0,p=o[f];if(!p)return!0;let g="/"+p+" ";if(t(g),n(g.length),i([]),a(-1),d.return){let h=FSe(p,e);(h.type!=="prompt"||(h.argNames??[]).length===0)&&r(g,!0)}return!0}}});let c=(0,MW.useCallback)(()=>{i([]),a(-1)},[]);return{suggestions:o,selectedSuggestion:s,updateSuggestions:u,clearSuggestions:c}}var Ac=G(se(),1);var SBr=G(se(),1);var kW=class extends SBr.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){xBt(t)}render(){return this.state.hasError?null:this.props.children}};var $f=G(se(),1);var yBr=G(hue(),1),pye=G(se(),1);Be();He();function pXe({debug:e,isUpdating:t,onChangeIsUpdating:r,onAutoUpdaterResult:n,autoUpdaterResult:o}){let i=K(),[s,a]=(0,pye.useState)({}),u=$f.useCallback(async()=>{if(t)return;let c=PS.VERSION,l=await vAe(),d=await ABt();if(a({global:c,latest:l}),!d&&c&&l&&!(0,yBr.gte)(c,l)){let f=Date.now();r(!0);let p=await G3();r(!1),p==="success"?Oe("tengu_auto_updater_success",{fromVersion:c,toVersion:l,durationMs:String(Date.now()-f)}):Oe("tengu_auto_updater_fail",{fromVersion:c,attemptedVersion:l,status:p,durationMs:String(Date.now()-f)}),n({version:l,status:p})}},[n]);return(0,pye.useEffect)(()=>{u()},[u]),YSe(u,1800*1e3),e?$f.createElement(D,{flexDirection:"row"},$f.createElement(C,{dimColor:!0},"globalVersion: ",s.global," \xB7 latestVersion:"," ",s.latest)):!o?.version&&(!s.global||!s.latest)||!o?.version&&!t?null:$f.createElement(D,{flexDirection:"row"},e&&$f.createElement(C,{dimColor:!0},"globalVersion: ",s.global," \xB7 latestVersion:"," ",s.latest),t&&$f.createElement($f.Fragment,null,$f.createElement(D,null,$f.createElement(C,{color:i.secondaryText,dimColor:!0,wrap:"end"},"Auto-updating to v",s.latest,"\u2026"))),o?.status==="success"&&o?.version?$f.createElement(C,{color:i.success},"\u2713 Update installed \xB7 Restart to apply"):null,(o?.status==="install_failed"||o?.status==="no_permissions")&&$f.createElement(C,{color:i.error},"\u2717 Auto-update failed \xB7 Try ",$f.createElement(C,{bold:!0},ze," doctor")," or"," ",$f.createElement(C,{bold:!0},"npm i -g ",PS.PACKAGE_URL)))}var mXe=G(se(),1);var AXe=19e4,gXe=AXe*.6,vQo=AXe*.8;function hXe({tokenUsage:e}){let t=K();if(e<gXe)return null;let r=e>=vQo;return mXe.createElement(D,{flexDirection:"row"},mXe.createElement(C,{color:r?t.error:t.warning},"Context low (",Math.max(0,100-Math.round(e/AXe*100)),"% remaining) \xB7 Run /compact to compact & continue"))}Be();await kY();ig();qo();Id();He();zr();function TBr(e){return`[Pasted text +${(e.match(/\r\n|\r|\n/g)||[]).length} lines] `}function xQo({commands:e,isDisabled:t,isLoading:r,onQuery:n,debug:o,verbose:i,messages:s,setToolJSX:a,onAutoUpdaterResult:u,autoUpdaterResult:c,tools:l,input:d,onInputChange:f,mode:p,onModeChange:g,submitCount:h,onSubmitCountChange:E,setIsLoading:y,setAbortController:b,onShowMessageSelector:I,setForkConvoWithMessagesOnTheNextRender:x,readFileTimestamps:O,reminderText:P}){let[Q,U]=(0,Ac.useState)(!1),[k,z]=(0,Ac.useState)({show:!1}),[Y,ge]=(0,Ac.useState)({show:!1}),[te,F]=(0,Ac.useState)(null),[le,Ee]=(0,Ac.useState)(""),[ie,oe]=(0,Ac.useState)(d.length),[we,De]=(0,Ac.useState)(null),he=$e.getSessionContext().getPendingPrompts(),[Ke,Ce]=(0,Ac.useState)(null);(0,Ac.useEffect)(()=>{Yx.isStarted()&&Ce([Yx.getProjectInfo().programmingLanguage])},[]);let[re,Ge]=(0,Ac.useState)(!1);(0,Ac.useEffect)(()=>{let Er=Rn.on(vre,Ft=>{Ee(Ft),Ge(!0)});return()=>{Er()}},[]),(0,Ac.useEffect)(()=>{fye().then(Er=>{re||Ee(`Try "${Hw(Er)}"`)})},[re]);let{columns:at}=mi(),Xe=(0,Ac.useMemo)(()=>Math.max(...e.map(Er=>Er.userFacingName().length))+5,[e]),{suggestions:et,selectedSuggestion:ct,updateSuggestions:Mt,clearSuggestions:Un}=_Br({commands:e,onInputChange:f,onSubmit:Ui,setCursorOffset:oe}),vn=(0,Ac.useCallback)(Er=>{if(re&&Er!==""&&Ge(!1),Er.startsWith("!")){g("bash");return}Mt(Er),f(Er)},[g,f,Mt,re]),{resetHistory:ni,onHistoryUp:Xr,onHistoryDown:_i}=EBr((Er,Ft)=>{vn(Er),g(Ft)},d),go=()=>{et.length<=1&&Xr()},ha=()=>{et.length<=1&&_i()};async function Ui(Er,Ft=!1){let Fr=Er;if(Er===""&&re&&le&&(Fr=le),Fr===""||t)return;if(re&&Ge(!1),r&&Fr.trim()){$e.getSessionContext().addPendingPrompt(Fr.trim()),f("");return}if(et.length>0&&!Ft)return;if(["exit","quit",":q",":q!",":wq",":wq!"].includes(Fr.trim())&&DQo(),we){let Tt=TBr(we);Fr.includes(Tt)&&(Fr=Fr.replace(Tt,we))}f(""),g("prompt"),Un(),F(null),De(null),E(Tt=>Tt+1),y(!0);let Zo=new AbortController;b(Zo);let as=await Du(),Ys=await GSe(Fr,p,a,{options:{commands:e,tools:l,verbose:i,slowAndCapableModel:as,thinking:qt().thinking},abortController:Zo,readFileTimestamps:O,setForkConvoWithMessagesOnTheNextRender:x},te??null);if(Ys.length)n(Ys,Zo);else{y(!1),_R(Fr),ni();return}for(let Tt of Ys)if(Tt.type==="user"){let cr=p==="bash"?`!${Fr}`:Fr;_R(cr),ni()}}function ss(Er){g("prompt"),F(Er)}function oi(Er){Ht(" onTextPaste "+Er);let Ft=Er.replace(/\r/g,`
|
|
3604
|
-
`),Fr=Ft;Ft.length+d.length>800&&(Fr=TBr(Ft));let Zo=d.slice(0,ie)+Fr+d.slice(ie);f(Zo),oe(ie+Fr.length),De(Ft)}vt((Er,Ft)=>{d===""&&(Ft.escape||Ft.backspace||Ft.delete)&&g("prompt"),Ft.escape&&s.length>0&&!d&&!r&&I()});let Ea=mi().columns-6,xt=(0,Ac.useMemo)(()=>cc(s),[s]),Br=K();return pn.createElement(D,{flexDirection:"column"},he.length>0&&pn.createElement(D,{flexDirection:"column",marginTop:1},he.map((Er,Ft)=>pn.createElement(C,{key:Ft,color:Br.primaryText},"> ",Er))),pn.createElement(D,{alignItems:"flex-start",justifyContent:"flex-start",borderColor:p==="bash"?Br.bashBorder:Br.secondaryBorder,borderDimColor:!0,borderStyle:"round",width:"100%",marginTop:he.length>0?0:1},pn.createElement(D,{alignItems:"flex-start",alignSelf:"flex-start",flexWrap:"nowrap",justifyContent:"flex-start",width:3},p==="bash"?pn.createElement(C,{color:Br.bashBorder},"\xA0!\xA0"):pn.createElement(C,{color:r?Br.secondaryText:void 0},"\xA0>\xA0")),pn.createElement(D,{paddingRight:1},pn.createElement(gC,{multiline:!0,onSubmit:Ui,onChange:vn,value:d,onHistoryUp:go,onHistoryDown:ha,onHistoryReset:()=>ni(),placeholder:re||h===0?le:void 0,onExit:()=>process.exit(0),onExitMessage:(Er,Ft)=>z({show:Er,key:Ft}),onMessage:(Er,Ft)=>ge({show:Er,text:Ft}),onImagePaste:ss,columns:Ea,isDimmed:t||r,disableCursorMovementForUpDownKeys:et.length>0,cursorOffset:ie,onChangeCursorOffset:oe,onPaste:oi}))),et.length===0&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0},pn.createElement(D,{justifyContent:"flex-start",gap:1},k.show?pn.createElement(C,{dimColor:!0},"Press ",k.key," again to exit"):Y.show?pn.createElement(C,{dimColor:!0},Y.text):pn.createElement(pn.Fragment,null,p==="prompt"&&pn.createElement(C,{dimColor:!0},"? for shortcuts (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)"),p==="edit"&&pn.createElement(C,{color:"red"},"\u23F5\u23F5 accept edits on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)"),p==="plan"&&pn.createElement(C,{color:Br.success},"\u23F8 plan mode on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle) "),p==="bash"&&pn.createElement(C,{color:Br.bashBorder},"! for bash mode "),p==="auto"&&pn.createElement(C,{color:"yellow"},"\u26A1 auto mode on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)")),pn.createElement(C,{dimColor:!0},"Ctrl+s switch session "),Ke&&Ke.length>0&&pn.createElement(C,{dimColor:!0},", LSP ",Ke.join(", "))),pn.createElement(kW,{children:[]},pn.createElement(D,{justifyContent:"flex-end",gap:1},!c&&!Q&&!o&&xt<gXe&&pn.createElement(C,{dimColor:!0},oQ.isEnabled&&iLt()?"shift + \u23CE for newline":"\\\u23CE for newline"),o&&pn.createElement(C,{dimColor:!0},`${cc(s)} tokens (${Math.round(1e4*(mzt(s)||1)/(cc(s)||1))/100}% cached)`),pn.createElement(hXe,{tokenUsage:xt}),pn.createElement(pXe,{debug:o,onAutoUpdaterResult:u,autoUpdaterResult:c,isUpdating:Q,onChangeIsUpdating:U})))),(P||xu.getBackgroundTaskCount()>0||no.backgroundNotiQueueSize()>0||es.getBackgroundRunningTask().size>0||es.notifyQueueSize()>0)&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0,marginTop:0},pn.createElement(D,{flexDirection:"row",gap:1},(xu.getBackgroundTaskCount()>0||no.backgroundNotiQueueSize()>0)&&pn.createElement(C,{color:"green"},"background agent(s)",xu.getBackgroundTaskCount()>0&&` ${xu.getBackgroundTaskCount()} running`,no.backgroundNotiQueueSize()>0&&` ${no.backgroundNotiQueueSize()} completed`),(es.getBackgroundRunningTask().size>0||es.notifyQueueSize()>0)&&pn.createElement(C,{color:"green"},"shell task(s)",es.getBackgroundRunningTask().size>0&&` ${es.getBackgroundRunningTask().size} running`,es.notifyQueueSize()>0&&` ${es.notifyQueueSize()} completed`)),pn.createElement(D,null,P&&pn.createElement(C,{dimColor:!0,wrap:"truncate-end"},P))),et.length>0&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0},pn.createElement(D,{flexDirection:"column"},et.map((Er,Ft)=>{let Fr=e.find(Zo=>Zo.userFacingName()===Er.replace("/",""));return pn.createElement(D,{key:Er,flexDirection:at<80?"column":"row"},pn.createElement(D,{width:at<80?void 0:Xe},pn.createElement(C,{color:Ft===ct?Br.suggestion:void 0,dimColor:Ft!==ct},"/",Er,Fr?.aliases&&Fr.aliases.length>0&&pn.createElement(C,{dimColor:!0}," (",Fr.aliases.join(", "),")"))),Fr&&pn.createElement(D,{width:at-(at<80?4:Xe+4),paddingLeft:at<80?4:0},pn.createElement(C,{color:Ft===ct?Br.suggestion:void 0,dimColor:Ft!==ct,wrap:"wrap"},pn.createElement(C,{dimColor:Ft!==ct},Fr.description(),Fr.type==="prompt"&&Fr.argNames?.length?` (arguments: ${Fr.argNames.join(", ")})`:null))))})),pn.createElement(kW,{children:[]},pn.createElement(D,{justifyContent:"flex-end",gap:1},pn.createElement(hXe,{tokenUsage:cc(s)}),pn.createElement(pXe,{debug:o,onAutoUpdaterResult:u,autoUpdaterResult:c,isUpdating:Q,onChangeIsUpdating:U})))))}var bBr=(0,Ac.memo)(xQo);function DQo(){CGe(""),process.exit(0)}var CBr=G(se(),1);Be();function IBr(){(0,CBr.useEffect)(()=>{let e=Math.round(process.uptime()*1e3);Oe("tengu_timer",{event:"startup",durationMs:String(e)})},[])}Be();function vBr(e,t,r,n,o,i,s,a){vt((u,c)=>{c.escape&&(a?.aborted||a&&o&&(i||s?.disableCancel||(Oe("tengu_cancel",{}),e(null),t(null,!0),r(null),n())))})}var xBr=G(se(),1);Be();Be();function RQo(e){return(0,xBr.useCallback)(async(t,r,n,o,i,s,a)=>new Promise(u=>{function c(){Oe("tengu_tool_use_cancelled",{messageID:o.message.id,toolName:t.name})}function l(){u({result:!1,message:SW}),n.abortController.abort()}if(n.abortController.signal.aborted){c(),l();return}return GD(t,r,n,o,i,s,a).then(async d=>{let f=oKe(n);if(!d.result&&(d.behavior==="deny"||f==="dontAsk"||f==="auto")){u({result:!1,message:d.message||"Permission denied "});return}if(d.result&&!s?.forceCheck){Oe("tengu_tool_use_granted_in_config",{messageID:o.message.id,toolName:t.name}),u({result:!0});return}let p=await t.description(r),g=t===io?YAe(io.inputSchema.parse(r).command):null;if(n.abortController.signal.aborted){c(),l();return}e({toolUseID:i,hookWarning:s?.hookWarning,assistantMessage:o,tool:t,description:p,input:r,commandPrefix:g,riskScore:null,onAbort(){c(),Oe("tengu_tool_use_rejected_in_prompt",{messageID:o.message.id,toolName:t.name}),l()},onAllow(h){h==="permanent"?Oe("tengu_tool_use_granted_in_prompt_permanent",{messageID:o.message.id,toolName:t.name}):Oe("tengu_tool_use_granted_in_prompt_temporary",{messageID:o.message.id,toolName:t.name}),u({result:!0})},onReject(){Oe("tengu_tool_use_rejected_in_prompt",{messageID:o.message.id,toolName:t.name}),l()}})}).catch(d=>{d instanceof _F?(c(),l()):be(d)})}),[e])}var DBr=RQo;var RBr=G(se(),1);Be();function wBr(e){(0,RBr.useEffect)(()=>{wA(e.filter(t=>t.type!=="progress"))},[e])}y3();Be();var mye=G(se(),1);var Gu=G(se(),1);var T5=G(se(),1);function EXe({debug:e,erroredToolUseIDs:t,inProgressToolUseIDs:r,message:n,normalizedMessages:o,tools:i,unresolvedToolUseIDs:s,verbose:a}){let{columns:u}=mi();return Zn([n]).filter(c=>c.type!=="progress").map((c,l)=>T5.createElement(D,{flexDirection:"column",key:l},T5.createElement(rT,{addMargin:!1,erroredToolUseIDs:t,debug:e,inProgressToolUseIDs:r,message:c,messages:o,shouldAnimate:!1,shouldShowDot:!0,tools:i,unresolvedToolUseIDs:s,verbose:a,width:u/2-6}),T5.createElement(wQo,{message:c,verbose:a})))}function wQo({message:e,verbose:t}){let{columns:r}=mi();if(e.type!=="assistant")return null;let n=e.message.content[0];switch(n.type){case"tool_use":switch(n.name){case Vd.name:{let o=Vd.inputSchema.safeParse(n.input);return o.success?T5.createElement(iye,{file_path:o.data.file_path,new_string:o.data.new_string,old_string:o.data.old_string,verbose:t,width:r/2-12}):null}case kf.name:{let o=kf.inputSchema.safeParse(n.input);return o.success?T5.createElement(lye,{file_path:o.data.file_path,content:o.data.content,verbose:t,width:r/2-12}):null}default:return null}default:return null}}He();var NQo="https://go/cli-feedback";function OQo(){return[{label:"Choose for me",value:"no-preference"},{label:"Left option looks better",value:"prefer-left"},{label:"Right option looks better",value:"prefer-right"},{label:`Neither, and tell ${ze} what to do differently (${St.bold.hex(K().warning)("esc")})`,value:"neither"}]}function NBr({m1:e,m2:t,onChoose:r,debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}){let l=K(),[d,f]=(0,Gu.useState)("no-preference"),[p,g]=(0,Gu.useState)(void 0),h=Fa(()=>process.exit(1));return vt((E,y)=>{y.leftArrow?g("prefer-left"):y.rightArrow?g("prefer-right"):y.escape&&r?.("neither")}),Gu.default.createElement(Gu.default.Fragment,null,Gu.default.createElement(D,{flexDirection:"column",height:"100%",width:"100%",borderStyle:"round",borderColor:l.permission},Gu.default.createElement(D,{width:"100%",justifyContent:"space-between",paddingX:1},Gu.default.createElement(C,{bold:!0,color:l.permission},"[ANT-ONLY] Help train ",ze),Gu.default.createElement(C,null,Gu.default.createElement(q3,{url:NQo},"[?]"))),Gu.default.createElement(D,{flexDirection:"row",width:"100%",flexGrow:1,paddingTop:1},Gu.default.createElement(D,{flexDirection:"column",flexGrow:1,flexBasis:1,gap:1,borderStyle:d==="prefer-left"?"bold":"single",borderColor:d==="prefer-left"?l.success:l.secondaryBorder,marginRight:1,padding:1},Gu.default.createElement(EXe,{erroredToolUseIDs:o,debug:n,inProgressToolUseIDs:i,message:e,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c})),Gu.default.createElement(D,{flexDirection:"column",flexGrow:1,flexBasis:1,gap:1,borderStyle:d==="prefer-right"?"bold":"single",borderColor:d==="prefer-right"?l.success:l.secondaryBorder,marginLeft:1,padding:1},Gu.default.createElement(EXe,{erroredToolUseIDs:o,debug:n,inProgressToolUseIDs:i,message:t,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}))),Gu.default.createElement(D,{flexDirection:"column",paddingTop:1,paddingX:1},Gu.default.createElement(C,null,"How do you want to proceed?"),Gu.default.createElement(Nb,{options:OQo(),onFocus:f,focusValue:p,onChange:r}))),h.pending?Gu.default.createElement(D,{marginLeft:3},Gu.default.createElement(C,{dimColor:!0},"Press ",h.keyName," again to exit")):Gu.default.createElement(C,null," "))}function OBr({m1:e,m2:t,resolve:r,debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}){let l=(0,mye.useCallback)(d=>{XIr(e,t,d),r(r1r(e,t,d))},[e,t,r]);return uye("${PRODUCT_NAME} needs your input on a response comparison"),mye.default.createElement(NBr,{debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,m1:e,m2:t,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c,onChoose:l})}cp();og();zr();Id();c_();var PW=G(se(),1),Aye=G(se(),1);var Ig=G(se(),1);Be();function b5({logs:e,onSelect:t}){let{rows:r,columns:n}=mi();if(e.length===0)return null;let o=r-3,i=Math.max(0,e.length-o),s=7,a=21,u=21,c=9,l=e.map((d,f)=>{let p=`[${f}]`.padEnd(s),g=pL(d.modified).padEnd(a),h=pL(d.created).padEnd(u),E=`${d.messageCount}`.padStart(c),y=d.firstPrompt,b="";d.sidechainNumber&&(b+=` (sidechain #${d.sidechainNumber})`);let I=`${p}${g}${h}${E} ${y}${b}`;return{label:I.length>n-2?`${I.slice(0,n-5)}...`:I,value:d.value.toString()}});return Ig.default.createElement(D,{flexDirection:"column",height:"100%",width:"100%"},Ig.default.createElement(D,{paddingLeft:9},Ig.default.createElement(C,{bold:!0,color:K().text},"Modified"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"Created"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"# Messages"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"First message")),Ig.default.createElement(Eu,{options:l,onChange:d=>t(parseInt(d,10)),visibleOptionCount:o}),i>0&&Ig.default.createElement(D,{paddingLeft:2},Ig.default.createElement(C,{color:K().secondaryText},"and ",i," more\u2026")))}Be();qU();He();function BBr({onSelect:e,onClose:t,verbose:r}){let[n,o]=(0,Aye.useState)([]);(0,Aye.useEffect)(()=>{async function s(){let a=await Yw(Wn.messages());o(a)}return s(),()=>{}},[]),vt((s,a)=>{a.escape&&t()});function i(s){let a=n[s].messages;for(let u=a.length-1;u>=0;u--){let c=a[u];if(c.type==="assistant"&&c.message&&c.message.content){let l=c.message.content;if(Array.isArray(l)){let d=l.find(f=>f.type==="tool_use"&&f.name===op&&f.input&&f.input.todos);if(d){let f=d.input.todos;f.every(g=>g.status==="completed")?rg.setTodos([]):rg.setTodos(f);break}}}}e(n[s].messages,n[s].date)}return PW.default.createElement(D,{flexDirection:"column",alignItems:"flex-start"},PW.default.createElement(b5,{logs:n,onSelect:i}),PW.default.createElement(D,{marginTop:1},PW.default.createElement(C,null,"ESC to exit")))}qo();He();ig();Zh();var is=G(se(),1),Zd=G(se(),1);Zh();qo();Id();var C5=G(se(),1);function gye({items:e,children:t}){let r=(0,C5.useRef)([]),n=(0,C5.useRef)(0),o=new Map(e.map(d=>[d.uuid,d]));if(r.current.some(d=>!o.has(d)))return setImmediate(()=>vi()),n.current+=1,r.current=e.map(d=>d.uuid),C5.default.createElement(zN,{key:n.current,items:e,children:t});let s=r.current.filter(d=>o.has(d)),a=new Set(s),u=e.map(d=>d.uuid).filter(d=>!a.has(d)),c=[...s,...u];r.current=c;let l=c.map(d=>o.get(d));return C5.default.createElement(zN,{key:n.current,items:l,children:t})}function BQo(e,t){switch(e.type){case"user":case"assistant":{let r=TW(e);return r?!t.has(r):!0}case"reminder":return!0;case"goal_status":return!0;case"progress":return!t.has(e.toolUseID);default:return!0}}function MBr({debug:e=!1,verbose:t=!1,tools:r,memberName:n,showSpinner:o=!0}){let[i,s]=(0,Zd.useState)([]),[a,u]=(0,Zd.useState)(""),[c,l]=(0,Zd.useState)(void 0),[d,f]=(0,Zd.useState)(""),[p,g]=(0,Zd.useState)(0),h=K(),{columns:E}=mi(),y=c?$e.getSessionContext(c):$e.getSessionContext(),b=y.getPendingPrompts(),I=(0,Zd.useCallback)(te=>{te.trim()&&(y.addPendingPrompt(te.trim()),f(""),g(0))},[y]),x=(0,Zd.useCallback)(te=>{f(te)},[]),O=(0,Zd.useCallback)(te=>{g(te)},[]);(0,Zd.useEffect)(()=>{if(!n)return;let te=Sn.getCurrentTeamName(),F=`${te}:${n}:change`;Sn.getMember(te,n).then(ie=>{if(ie?.taskId){let oe=$e.getInQueryContext(ie.taskId).getData(te+":"+n)||[];s([...oe]),l(ie.taskId)}u(ie.state)});let le=Rn.on(F,ie=>{s([...ie])}),Ee=Rn.on("team:change",({teamName:ie,eventType:oe})=>{oe==="member_state_updated"&&Sn.getMember(ie,n).then(we=>{u(we.state)})});return()=>{le(),Ee()}},[n]);let P=(0,Zd.useMemo)(()=>Zn(i).filter(E5),[i]),Q=(0,Zd.useMemo)(()=>qSe(P),[P]),{unresolvedToolUseIDs:U}=(0,Zd.useMemo)(()=>yW(Q),[Q]),k=(0,Zd.useMemo)(()=>[{type:"static",uuid:"logo",jsx:is.createElement(D,{flexDirection:"column"},is.createElement(Gue,{isDefaultModel:!1}))},...Q.filter(te=>te.type!=="progress").map(te=>{let F=te.type==="reminder"?is.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},is.createElement(D,{flexDirection:"row"},is.createElement(C,null,"\xA0\xA0\u23BF \xA0"),is.createElement(C,null,te.content))):te.type==="goal_status"?is.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},is.createElement(D,{flexDirection:"row"},te.content.met?is.createElement(C,{color:"green"},"\xA0\xA0\u2714 Goal achieved"):is.createElement(C,{color:"yellow"},"\xA0\xA0\u25EF Goal not yet met\u2026 continuing"))):is.createElement(rT,{message:te,messages:Q,addMargin:!0,tools:r,verbose:t,debug:e,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set,shouldAnimate:!1,shouldShowDot:!0});return{type:BQo(te,U)?"static":"transient",uuid:te.uuid,jsx:is.createElement(D,{key:te.uuid,width:"100%"},F)}})],[Q,t,r,U]),z=k.filter(te=>te.type==="static"),Y=k.filter(te=>te.type==="transient"),ge=n?`Message @${n}...`:"Message...";return is.createElement(D,{flexDirection:"column",width:"100%"},is.createElement(gye,{items:z.map((te,F)=>({...te,id:F}))},te=>te.jsx),Y.map(te=>te.jsx),is.createElement(D,{marginTop:1},is.createElement(C,null,a)),b.length>0&&is.createElement(D,{flexDirection:"column",marginTop:1},b.map((te,F)=>is.createElement(C,{key:F,color:h.primaryText},"> ",te))),o&&is.createElement(U3,null),is.createElement(D,{flexDirection:"column",marginTop:1,width:"100%"},is.createElement(D,{flexDirection:"row",width:"100%"},is.createElement(C,{color:h.secondaryBorder},"\u2500".repeat(Math.max(0,E-(n?n.length+3:0)))),n&&is.createElement(C,{color:h.secondaryText}," @",n," ")),is.createElement(D,{flexDirection:"row",alignItems:"center",width:"100%"},is.createElement(C,{color:h.primaryText},"\xA0\u276F\xA0"),is.createElement(gC,{value:d,onChange:x,onSubmit:I,placeholder:ge,multiline:!1,columns:E-4,cursorOffset:p,onChangeCursorOffset:O})),is.createElement(D,{flexDirection:"row",width:"100%"},is.createElement(C,{color:h.secondaryBorder},"\u2500".repeat(E)))))}import{writeFile as PBr,mkdir as MQo,readFile as kQo}from"fs/promises";fKe();function kBr(e){let t=[],r=!1;async function n(){if(!r&&t.length!==0){for(r=!0;t.length>0;){let{args:o,resolve:i,reject:s,context:a}=t.shift();try{let u=await e.apply(a,o);i(u)}catch(u){s(u)}}r=!1,t.length>0&&n()}}return function(...o){return new Promise((i,s)=>{t.push({args:o,resolve:i,reject:s,context:this}),n()})}}Be();zr();Be();He();function PQo(){return qt().sessionSummary?.enabled??!1}function LQo(){return qt().sessionSummary?.config??{}}var LBr;function FQo(e,t){let r=0,n=t==null;for(let o of e){if(!n){o.uuid===t&&(n=!0);continue}if(o.type==="assistant"){let i=o.message.content;Array.isArray(i)&&(r+=i.filter(s=>s.type==="tool_use").length)}}return r}function FBr(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r.type==="assistant"){let n=r.message.content;return Array.isArray(n)?n.some(o=>o.type==="tool_use"):!1}}return!1}function QQo(e){let t=cc(e);if(!ntr()){if(!itr(t))return!1;otr()}let r=atr(t),o=FQo(e,LBr)>=utr(),i=FBr(e);if(r&&o||r&&!i){let a=e[e.length-1];return a?.uuid&&(LBr=a.uuid),!0}return!1}async function UQo(e){let t=IGe();await MQo(t,{recursive:!0,mode:448});let r=tj();try{await PBr(r,"",{encoding:"utf-8",mode:384,flag:"wx"});let o=await vGe();await PBr(r,o,{encoding:"utf-8",mode:384})}catch(o){if(o.code!=="EEXIST")throw o}let n="";try{n=await kQo(r,{encoding:"utf-8"}),e.readFileTimestamps[r]=Date.now()}catch{n=""}return{memoryPath:r,currentMemory:n}}var HQo=(()=>{let e=!1;return()=>{if(e)return;let t=LQo(),r={minimumMessageTokensToInit:t.minimumMessageTokensToInit&&t.minimumMessageTokensToInit>0?t.minimumMessageTokensToInit:ej.minimumMessageTokensToInit,minimumTokensBetweenUpdate:t.minimumTokensBetweenUpdate&&t.minimumTokensBetweenUpdate>0?t.minimumTokensBetweenUpdate:ej.minimumTokensBetweenUpdate,toolCallsBetweenUpdates:t.toolCallsBetweenUpdates&&t.toolCallsBetweenUpdates>0?t.toolCallsBetweenUpdates:ej.toolCallsBetweenUpdates};etr(r),e=!0}})();var GQo=kBr(async function(e){let{messages:t,toolUseContext:r,querySource:n}=e;if(!(n!=="repl_main_thread"||!PQo()||!qt().autoCompactEnabled)&&(HQo(),!!QQo(t))){Ker();try{let i=pKe(r),{memoryPath:s,currentMemory:a}=await UQo(i),u=await htr(a,s);await L9({promptMessages:[_t(u)],cacheSafeParams:MM(e),canUseTool:qQo(s),querySource:"session_memory",forkLabel:"session_memory",overrides:{readFileTimestamps:i.readFileTimestamps,agentId:"asession_memory_extractor"}});let c=ttr();rtr(cc(t)),$Qo(t),_e("Session memory extraction completed")}catch(i){_e("Session memory extraction failed:",i)}finally{Jer()}}});function QBr(){m1r(GQo)}function qQo(e){return async(t,r)=>{if(t.name===Yi&&typeof r=="object"&&r!==null&&"file_path"in r){let n=r.file_path;if(typeof n=="string"&&n===e)return{result:!0}}return{result:!1,message:`Only FileEdit on ${e} is allowed for session memory extraction`}}}function $Qo(e){if(!FBr(e)){let t=e[e.length-1];t?.uuid&&Jx(t.uuid)}}process.on("unhandledRejection",(e,t)=>{pe("Unhandled Rejection at:",t,"reason:",e)});function LW({commands:e,dangerouslySkipPermissions:t,debug:r=!1,initialForkNumber:n=0,initialPrompt:o,shouldShowPromptInput:i,tools:s,verbose:a,initialMessages:u,isDefaultModel:c=!0}){(0,Ar.useEffect)(()=>(QBr(),Rn.on("switchConversation",()=>{ss(!0)})),[]);let l=a??sr().verbose,[d,f]=(0,Ar.useState)(n??0),[p,g]=(0,Ar.useState)(0),[h,E]=(0,Ar.useState)(null),[y,b]=(0,Ar.useState)(null),[I,x]=(0,Ar.useState)(null),[O,P]=(0,Ar.useState)(!1),[Q,U]=(0,Ar.useState)(null),[k,z]=(0,Ar.useState)(null),Y=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>{if(Y.current){Y.current=!1;return}k===null&&vi().then(()=>{g(Ue=>Ue+1)})},[k]);let ge=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>{let Ue=()=>{$e.getSessionContext().window_size={columns:process.stdout.columns||80,rows:process.stdout.rows||24},ge.current||(vi(),g(Cr=>Cr+1)),ge.current=!1};return process.stdout.on("resize",Ue),()=>process.stdout.off("resize",Ue)},[]),(0,Ar.useEffect)(()=>Rn.on("repl:refresh",()=>{g(Ue=>Ue+1)}),[]);let[te,F]=(0,Ar.useState)(null),le=(0,Ar.useRef)(null),Ee=(0,Ar.useCallback)((Ue,Cr=!1)=>{try{let Mr=$e.getSessionContext(),kr=Mr.getData("_toolUseConfirms");if(kr||(kr=[],Mr.setData("_toolUseConfirms",kr)),Ue)le.current?kr.push(Ue):(le.current=Ue,F(()=>Ue));else{if(Cr){Mr.setData("_toolUseConfirms",[]),le.current=null,F(()=>null);return}if(kr.length>0){let Si=kr.shift();le.current=Si,F(()=>null),setTimeout(()=>{F(()=>Si)},0)}else le.current=null,F(()=>null)}}catch(Mr){pe("\u8BBE\u7F6E\u5DE5\u5177\u7528\u6237\u786E\u8BA4\u7A97\u53E3\u5F02\u5E38\uFF1A",Mr)}},[]),[ie,oe]=(0,Ar.useState)(u??[]),[we,De]=(0,Ar.useState)(""),[he,Ke]=(0,Ar.useState)("prompt"),Ce=(0,Ar.useRef)(),re=Ue=>{Ue==="bash"?(Ce.current=he,Ke(Ue)):Ce.current&&(Ke(Ce.current),Ce.current=null)};(0,Ar.useEffect)(()=>{Jn.setModeUI=Ue=>{Ke(Ue)}},[]);let Ge=(0,Ar.useCallback)(()=>{Ke(Ue=>{switch(Ue){case"prompt":return Jn.setMode("plan"),"plan";case"plan":return Jn.setMode("edit"),"edit";case"edit":return qt().autoMode?.enabled?(Jn.setMode("auto"),"auto"):(Jn.setMode("prompt"),"prompt");case"auto":return Jn.setMode("prompt"),"prompt";default:return Jn.setMode("prompt"),"prompt"}})},[]),[at,Xe]=(0,Ar.useState)(0),[et,ct]=(0,Ar.useState)(!1),[Mt,Un]=(0,Ar.useState)(!1),[vn,ni]=(0,Ar.useState)(sr().hasAcknowledgedCostThreshold),[Xr,_i]=(0,Ar.useState)(null),[go,ha]=(0,Ar.useState)(()=>s),[Ui,ss]=(0,Ar.useState)(!1),[oi,Ea]=(0,Ar.useState)([]),[xt,Br]=(0,Ar.useState)(-1),[Er,Ft]=(0,Ar.useState)(-1),[Fr,Zo]=(0,Ar.useState)(!1),as=(0,Ar.useCallback)((Ue,Cr)=>new Promise(Mr=>{_i({m1:Ue,m2:Cr,resolve:Mr})}),[]),Ys=(0,Ar.useRef)({}),{status:Tt,reverify:cr}={status:"valid",reverify:()=>Promise},[en,$t]=(0,Ar.useState)(void 0),[nr,To]=(0,Ar.useState)(NV());(0,Ar.useEffect)(()=>{let Ue=Rn.on("token:change",Cr=>{To(Mr=>Cr)});return()=>{Ue()}},[]);function us(){O&&(P(!1),te?te.onAbort():I?.abort())}vBr(z,Ee,_i,us,O,et,k,I?.signal),(0,Ar.useEffect)(()=>{h&&(f(Ue=>Ue+1),E(null),oe(h))},[h]),(0,Ar.useEffect)(()=>{y&&(oe(Ue=>y.messages),f(Ue=>Ue+1),b(null))},[y]),(0,Ar.useEffect)(()=>{Qfe()>=5&&!Mt&&!vn&&(Oe("tengu_cost_threshold_reached",{}),Un(!0))},[ie,Mt,vn]);let $u=DBr(Ee);async function gc(){if(cr(),!o)return;P(!0);let Ue=new AbortController;x(Ue);let Cr=await Du(),Mr=await GSe(o,"prompt",z,{abortController:Ue,options:{commands:e,tools:go,verbose:l,slowAndCapableModel:Cr,thinking:qt().thinking},setForkConvoWithMessagesOnTheNextRender:E,readFileTimestamps:Ys.current},null);if(Mr.length){for(let _a of Mr)_a.type==="user"&&_R(o);if(oe(_a=>[..._a,...Mr]),Mr[Mr.length-1].type==="assistant"){x(null),P(!1);return}let[Si,au,zs]=await Promise.all([W_(),fi(),Du()]);for await(let _a of EW([...ie,...Mr],Si,au,$u,{options:{commands:e,tools:go,slowAndCapableModel:zs,verbose:l,dangerouslySkipPermissions:t,thinking:qt().thinking},readFileTimestamps:Ys.current,abortController:Ue,setToolJSX:z},as))oe(I0=>[...I0,_a])}else _R(o);ni(sr().hasAcknowledgedCostThreshold||!1),P(!1)}async function jc(Ue,Cr){oe(zs=>[...zs,...Ue]),Yv();let Mr=Ue[Ue.length-1];if(Mr.type==="user"&&typeof Mr.message.content=="string"&&qer(Mr.message.content),Mr.type==="assistant"){x(null),P(!1);return}let[kr,Si,au]=await Promise.all([W_(),fi(),Du()]);for await(let zs of EW([...ie,Mr],kr,Si,$u,{options:{commands:e,tools:go,slowAndCapableModel:au,verbose:l,dangerouslySkipPermissions:t,thinking:qt().thinking},readFileTimestamps:Ys.current,abortController:Cr,setToolJSX:z},as))oe(_a=>[..._a,zs]);P(!1)}lzt(),(0,Ar.useEffect)(()=>{SUt(()=>ie),yUt(oe)},[ie]),wBr(ie),IBr(),vt((Ue,Cr)=>{let Mr=!1;switch(vr.platform){case"windows":Mr=Cr.meta&&(Ue==="m"||Ue==="M");break;case"macos":Mr=Cr.shift&&Cr.tab;break;case"linux":Mr=Cr.shift&&Cr.tab;break;default:Mr=Cr.meta&&(Ue==="m"||Ue==="M")}if(Mr&&Ge(),Cr.ctrl&&Ue==="s"&&(Ui||ss(!0)),Cr.ctrl&&Ue==="b"&&(xu.runInBackgroud(),es.runInBackgroud()),oi.length>0){if(Cr.downArrow&&!Fr&&!Ui){Zo(!0),Ft(xt);return}if(Fr){if(Cr.leftArrow){Ft(kr=>{let Si=kr-1;return Si<-1?oi.length-1:Si});return}if(Cr.rightArrow){Ft(kr=>{let Si=kr+1;return Si>=oi.length?-1:Si});return}if(Cr.return){vi(),g(kr=>kr+1),Br(Er),Zo(!1);return}if(Cr.escape){Ft(xt),Zo(!1);return}}}}),(0,Ar.useEffect)(()=>{gc()},[]),(0,Ar.useEffect)(()=>{let Ue=async()=>{let Mr=_s.getCurrentTeamName();if(Mr)try{let Si=(await _s.getAllMembers(Mr)).filter(au=>au.name!=="team-lead");Ea(Si)}catch(kr){Ht("\u52A0\u8F7D Team \u6210\u5458\u5931\u8D25:",kr)}};Ue();let Cr=Rn.on("team:change",()=>{Ue()});return()=>{Cr()}},[]),(0,Ar.useEffect)(()=>{let Ue=Rn.on("repl:reloadtools",()=>{(async()=>{let Cr=await lo.getTools(!0);ha(Cr)})()});return()=>{Ue()}},[]);let lr=(0,Ar.useRef)(jc);lr.current=jc;let od=(0,Ar.useRef)(O);od.current=O,(0,Ar.useEffect)(()=>{let Ue=Rn.on(a_,Cr=>{(async()=>{if(od.current)return;if(Cr&&Cr.eventType==="loop"){try{if(!$e.isQuerying()){let kr=new AbortController;x(kr),P(!0);let Si=Cr.data?.prompt||"Loop task triggered";lr.current([_t(Si)],kr)}}catch(kr){pe(kr)}return}let Mr=Cr;if(Mr){let kr=await _s.takeMailInbox(Mr,Z1);if(kr&&kr.length>0){let Si=new AbortController;x(Si),P(!0),lr.current([_t(_s.formatMessagesForContext(kr))],Si)}}else try{let kr=no.needNotification(),Si=es.needNotification();if((kr||Si)&&!$e.isQuerying()){let au=new AbortController;x(au);let zs=[];if(kr){let _a=await no.takeNotificationMessages();_a&&zs.push(..._a)}if(Si){let _a=await es.takeNotificationMessages();_a&&zs.push(..._a)}zs.length>0&&(P(!0),lr.current([_t(zs)],au))}}catch(kr){pe(kr)}})()});return()=>{Ue()}},[]),(0,Ar.useEffect)(()=>{let Ue=Ay(),Cr=kr=>{$t(kr)};Ue.setStatusChangeCallback(Cr),Ue.onToolsReload=kr=>{ha(kr)};let Mr=async()=>{try{Ht("\u{1F680} Initiating auto-connect to IDE..."),await Ue.autoConnectToMatchingServer()?Ht("\u2705 Auto-connect completed successfully"):Ht("\u2139\uFE0F No matching IDE server found for auto-connect, or connection failed")}catch(kr){be("\u274C Error during auto-connect attempt:"+kr)}};return Ue.getCurrentConnection()||Mr(),()=>{Ue.setStatusChangeCallback(()=>{}),Ue.onToolsReload=kr=>{}}},[]);let cs=(0,Ar.useMemo)(()=>Zn(ie).filter(E5),[ie]),{unresolvedToolUseIDs:yl,unresolvedGroupToolUseIDs:xE}=(0,Ar.useMemo)(()=>yW(cs),[cs]),ef=(0,Ar.useMemo)(()=>_Or(cs),[cs]),su=(0,Ar.useMemo)(()=>new Set(SOr(cs).map(Ue=>Ue.message.content[0].id)),[cs]),b0=(0,Ar.useMemo)(()=>[{type:"static",uuid:"logo",jsx:kn.createElement(D,{flexDirection:"column",key:`logo${d}-${p}`},kn.createElement(Gue,{isDefaultModel:c}),kn.createElement(KBe,{workspaceDir:Ti()}))},...qSe(cs).map(Ue=>{let Cr=TW(Ue),Mr=Ue.type==="reminder"?kn.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},kn.createElement(D,{flexDirection:"row"},kn.createElement(C,null,"\xA0\xA0\u23BF \xA0"),kn.createElement(C,null,Ue.content))):Ue.type==="goal_status"?kn.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},kn.createElement(D,{flexDirection:"row"},Ue.content.met?kn.createElement(C,{color:"green"},"\xA0\xA0\u2714 Goal achieved"):kn.createElement(C,{color:"yellow"},"\xA0\xA0\u25EF Goal not yet met\u2026 continuing"))):Ue.type==="progress"?Ue.content.message.content[0]?.type==="text"&&Ue.content.message.content[0].text===Qu?kn.createElement(rT,{message:Ue.content,messages:Ue.normalizedMessages,addMargin:!1,tools:Ue.tools,verbose:l??!1,debug:r,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set,shouldAnimate:!1,shouldShowDot:!1}):kn.createElement(O0e,{meta:Ue.meta,children:[]},kn.createElement(rT,{message:Ue.content,messages:Ue.normalizedMessages,addMargin:!1,tools:Ue.tools,verbose:l??!1,debug:r,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set([Ue.content.message.content[0].id]),shouldAnimate:!1,shouldShowDot:!1})):kn.createElement(rT,{message:Ue,messages:cs,addMargin:!0,tools:go,verbose:l,debug:r,erroredToolUseIDs:su,inProgressToolUseIDs:ef,shouldAnimate:!k&&!te&&!et&&(!Cr||ef.has(Cr)),shouldShowDot:!0,unresolvedToolUseIDs:yl}),kr=VQo(Ue,cs,yl)?"static":"transient";return r?{type:kr,jsx:kn.createElement(D,{borderStyle:"single",borderColor:kr==="static"?"green":"red",key:Ue.uuid,width:"100%"},Mr)}:{type:kr,uuid:Ue.uuid,jsx:kn.createElement(D,{key:Ue.uuid,width:"100%"},Mr)}})],[d,p,cs,go,l,r,su,ef,k,te,et,yl,c]),Dg=!O&&Mt,Hi=xt>=0&&oi[xt],js=Hi?oi[xt]:null,Rg=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>(Rg.current?Rg.current=!0:(vi(),g(Ue=>Ue+1)),()=>{}),[Hi,js]);let C0=Ue=>Fr&&Er===Ue?"green":xt===Ue?"cyan":"gray",ls=Ue=>!!(Fr&&Er===Ue||xt===Ue),[Jt,an]=(0,Ar.useState)(!0);return(0,Ar.useEffect)(()=>{an(O&&!k&&!te&&!Xr)},[k,te,Xr,O]),kn.createElement(kn.Fragment,null,Hi?kn.createElement(MBr,{key:`AgentTeamREPL-messages-${js}-${d}-${p}`,debug:r,verbose:l,tools:go,memberName:js.name,showSpinner:Jt}):kn.createElement(kn.Fragment,null,kn.createElement(gye,{key:`static-messages-${d}-${p}`,items:b0.filter(Ue=>Ue.type==="static")},Ue=>Ue.jsx),b0.filter(Ue=>Ue.type==="transient").map(Ue=>Ue.jsx)),kn.createElement(D,{borderColor:"red",borderStyle:r?"single":void 0,flexDirection:"column",width:"100%"},Jt&&!Hi&&kn.createElement(U3,null),k?k.jsx:null,!k&&Xr&&!et&&kn.createElement(OBr,{m1:Xr.m1,m2:Xr.m2,resolve:Ue=>{Xr.resolve(Ue),setTimeout(()=>_i(null),0)},verbose:l,normalizedMessages:cs,tools:go,debug:r,erroredToolUseIDs:su,inProgressToolUseIDs:ef,unresolvedToolUseIDs:yl}),!k&&te&&!et&&!Xr&&kn.createElement(hBr,{toolUseConfirm:te,onDone:()=>Ee(null),verbose:l}),!k&&!te&&!et&&!Xr&&Dg&&kn.createElement(pUt,{onDone:()=>{Un(!1),ni(!0);let Ue=sr();fo({...Ue,hasAcknowledgedCostThreshold:!0}),Oe("tengu_cost_threshold_acknowledged",{})}}),!Ui&&!te&&!k?.shouldHidePromptInput&&i&&!et&&!Xr&&!Dg&&!Hi&&kn.createElement(kn.Fragment,null,kn.createElement(bBr,{commands:e,tools:go,isDisabled:Tt==="invalid",isLoading:O,onQuery:jc,debug:r,verbose:l,messages:ie,setToolJSX:z,onAutoUpdaterResult:U,autoUpdaterResult:Q,input:we,onInputChange:De,mode:he,onModeChange:re,submitCount:at,onSubmitCountChange:Xe,setIsLoading:P,setAbortController:x,onShowMessageSelector:()=>ct(Ue=>!Ue),setForkConvoWithMessagesOnTheNextRender:E,readFileTimestamps:Ys.current,reminderText:en}))),et&&kn.createElement(oBr,{erroredToolUseIDs:su,unresolvedToolUseIDs:yl,messages:vf(ie),onSelect:async Ue=>{ct(!1),ie.includes(Ue)&&(us(),setImmediate(async()=>{await vi(),oe([]),E(ie.slice(0,ie.indexOf(Ue))),typeof Ue.message.content=="string"&&De(Ue.message.content)}))},onEscape:()=>ct(!1),tools:go}),oi.length>0&&!te&&kn.createElement(D,{flexDirection:"column",width:"100%"},kn.createElement(D,{borderStyle:Fr?"single":void 0,borderColor:"green",paddingLeft:1,paddingRight:1},kn.createElement(C,{bold:Fr,color:Fr?"green":void 0},"Team Members:"),kn.createElement(C,{color:C0(-1),bold:ls(-1)}," ","team-lead"," "),oi.map((Ue,Cr)=>kn.createElement(C,{key:Ue.agentId,color:C0(Cr),bold:ls(Cr)},Ue.name," ")),Fr&&kn.createElement(C,{color:"yellow"}," [\u2190\u2192Switch Enter Confirm ESC Cancel]"))),kn.createElement(D,{justifyContent:"flex-end"},kn.createElement(C,null,"\u2191 "+nr.inputTokens+" \u2193 "+nr.outputTokens," tokens ")),kn.createElement(Mc,null),Ui&&kn.createElement(BBr,{onClose:()=>ss(Ue=>!1),onSelect:async(Ue,Cr)=>{ss(!1),us(),setImmediate(async()=>{await vi(),$e.getSessionContext().switchSessionId(Cr),b({messages:Ue})})}}))}function VQo(e,t,r){switch(e.type){case"user":case"assistant":{let n=TW(e);return n?!r.has(n):!0}case"reminder":return!0;case"goal_status":return!0;case"progress":return!r.has(e.toolUseID)}}var FMr=G(XBr(),1);dr();Ir();Be();zr();async function eMr({commands:e,dangerouslySkipPermissions:t,hasPermissionsToUseTool:r,prompt:n,cwd:o,tools:i,verbose:s=!1}){await Ca(o);let u=[_t(n)],[c,l,d]=await Promise.all([W_(),fi(),Du()]);for await(let g of EW(u,c,l,r,{options:{commands:e,tools:i,verbose:s,dangerouslySkipPermissions:t,slowAndCapableModel:d,thinking:qt().thinking},abortController:new AbortController,readFileTimestamps:{}}))u.push(g);let f=df(u);if(!f||f.type!=="assistant")throw new Error("Expected content to be an assistant message");if(f.message.content[0]?.type!=="text")throw new Error(`Expected first content item to be text, but got ${JSON.stringify(f.message.content[0],null,2)}`);let p=nc();return wA(u),{resultText:f.message.content[0].text,totalCost:Qfe(),messageHistoryFile:p}}Be();import{cwd as nA}from"process";var Xd=G(se(),1);He();Be();Ir();import{homedir as aUo}from"os";function tMr({onDone:e}){let t=K();Xd.default.useEffect(()=>{Oe("trust_dialog_shown",{})},[]);function r(o){let i=Dn();switch(o){case"yes":{let s=aUo()===ke();Oe("trust_dialog_accept",{isHomeDir:String(s)}),s||bi({...i,hasTrustDialogAccepted:!0}),e();break}case"no":{process.exit(1);break}}}let n=Fa(()=>process.exit(0));return vt((o,i)=>{if(i.escape){process.exit(0);return}}),Xd.default.createElement(Xd.default.Fragment,null,Xd.default.createElement(D,{flexDirection:"column",gap:1,padding:1,borderStyle:"round",borderColor:t.warning},Xd.default.createElement(C,{bold:!0,color:t.warning},"Do you trust the files in this folder?"),Xd.default.createElement(C,{bold:!0},process.cwd()),Xd.default.createElement(D,{flexDirection:"column",gap:1},Xd.default.createElement(C,null,ze," may read files in this folder. Reading untrusted files may lead to ",ze," to behave in an unexpected ways."),Xd.default.createElement(C,null,"With your permission ",ze," may execute files in this folder. Executing untrusted code is unsafe.")),Xd.default.createElement(Eu,{options:[{label:"Yes, proceed",value:"yes"},{label:"No, exit",value:"no"}],onChange:o=>r(o)})),Xd.default.createElement(D,{marginLeft:3},Xd.default.createElement(C,{dimColor:!0},n.pending?Xd.default.createElement(Xd.default.Fragment,null,"Press ",n.keyName," again to exit"):Xd.default.createElement(Xd.default.Fragment,null,"Enter to confirm \xB7 Esc to exit"))))}var a2=G(se(),1);Be();Be();Be();function MXe({context:e,type:t,logNumber:r}){let[n,o]=(0,a2.useState)([]),[i,s]=(0,a2.useState)(!1);(0,a2.useEffect)(()=>{Yw(t==="messages"?Wn.messages():Wn.errors()).then(u=>{if(r!==void 0){let c=u[r>=0?r:0];c?(console.log(JSON.stringify(c.messages,null,2)),process.exit(0)):(console.error("No log found at index",r),process.exit(1))}o(u)}).catch(u=>{be(u),r!==void 0?process.exit(1):e.unmount?.()})},[e,t,r]);function a(u){let c=n[u];c&&(s(!0),setTimeout(()=>{console.log(JSON.stringify(c.messages,null,2)),process.exit(0)},100))}return r!==void 0||i?null:a2.default.createElement(b5,{logs:n,onSelect:a})}var kXe=G(se(),1);function rMr(e){try{return e||[]}catch(t){return console.error("Error deserializing messages:",t),[]}}Be();qo();function nMr({context:e,commands:t,logs:r,tools:n,verbose:o}){async function i(s){let a=r[s];if(a)try{e.unmount?.();let u=await zY();$e.getSessionContext().switchSessionId(a.date),Ul(kXe.default.createElement(LW,{initialPrompt:"",shouldShowPromptInput:!0,verbose:o,commands:t,tools:n,initialMessages:rMr(a.messages,n),initialForkNumber:0,isDefaultModel:u}),{exitOnCtrlC:!1})}catch(u){throw be(`Failed to load conversation: ${u}`),u}}return kXe.default.createElement(b5,{logs:r,onSelect:i})}$9e();$h();LHe();JU();var _ye=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};FHe();var Sye=class extends n3{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(nY.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let i=this._loggingLevels.get(o);return i?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(i):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new S3,this.setRequestHandler(Mpe,n=>this._oninitialize(n)),this.setNotificationHandler(kpe,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(k9e,async(n,o)=>{let i=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:s}=n.params,a=nY.safeParse(s);return a.success&&this._loggingLevels.set(i,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new _ye(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Jpe(this._capabilities,t)}setRequestHandler(t,r){let o=ay(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let i;if(Lm(o)){let a=o;i=a._zod?.def?.value??a.value}else{let a=o;i=a._def?.value??a.value}if(typeof i!="string")throw new Error("Schema method literal must be a string");if(i==="tools/call"){let a=async(u,c)=>{let l=yp(t3,u);if(!l.success){let g=l.error instanceof Error?l.error.message:String(l.error);throw new Nt(jt.InvalidParams,`Invalid tools/call request: ${g}`)}let{params:d}=l.data,f=await Promise.resolve(r(u,c));if(d.task){let g=yp(oC,f);if(!g.success){let h=g.error instanceof Error?g.error.message:String(g.error);throw new Nt(jt.InvalidParams,`Invalid task creation result: ${h}`)}return g.data}let p=yp(H_,f);if(!p.success){let g=p.error instanceof Error?p.error.message:String(p.error);throw new Nt(jt.InvalidParams,`Invalid tools/call result: ${g}`)}return p.data};return super.setRequestHandler(t,a)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){Pme(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&kme(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:sB.includes(r)?r:Mx,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},nC)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],i=o.some(c=>c.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,a=s?Array.isArray(s.content)?s.content:[s.content]:[],u=a.some(c=>c.type==="tool_use");if(i){if(o.some(c=>c.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let c=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(c.size!==l.size||![...c].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},iY,r):this.request({method:"sampling/createMessage",params:t},oY,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},r3,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},i=await this.request({method:"elicitation/create",params:o},r3,r);if(i.action==="accept"&&i.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(i.content);if(!a.valid)throw new Nt(jt.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(s){throw s instanceof Nt?s:new Nt(jt.InternalError,`Error validating elicitation response: ${s instanceof Error?s.message:String(s)}`)}return i}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},Q9e,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};JU();q9e();$h();var iMr=Symbol.for("mcp.completable");function PXe(e){return!!e&&typeof e=="object"&&iMr in e}function sMr(e){return e[iMr]?.complete}var oMr;(function(e){e.Completable="McpCompletable"})(oMr||(oMr={}));var uUo=/^[A-Za-z0-9._-]{1,128}$/;function cUo(e){let t=[];if(e.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(" ")&&t.push("Tool name contains spaces, which may cause parsing issues"),e.includes(",")&&t.push("Tool name contains commas, which may cause parsing issues"),(e.startsWith("-")||e.endsWith("-"))&&t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(e.startsWith(".")||e.endsWith("."))&&t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!uUo.test(e)){let r=e.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,i)=>i.indexOf(n)===o);return t.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function lUo(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let r of t)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function LXe(e){let t=cUo(e);return lUo(e,t.warnings),t.isValid}var yye=class{constructor(t){this._mcpServer=t}registerToolTask(t,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${t}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(t,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}};$n();var Tye=class{constructor(t,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Sye(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new yye(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(SR(Wpe)),this.server.assertCanSetRequestHandler(SR(t3)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Wpe,()=>({tools:Object.entries(this._registeredTools).filter(([,t])=>t.enabled).map(([t,r])=>{let n={name:t,title:r.title,description:r.description,inputSchema:(()=>{let o=KU(r.inputSchema);return o?U9e(o,{strictUnions:!0,pipeStrategy:"input"}):dUo})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=KU(r.outputSchema);o&&(n.outputSchema=U9e(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(t3,async(t,r)=>{try{let n=this._registeredTools[t.params.name];if(!n)throw new Nt(jt.InvalidParams,`Tool ${t.params.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Tool ${t.params.name} disabled`);let o=!!t.params.task,i=n.execution?.taskSupport,s="createTask"in n.handler;if((i==="required"||i==="optional")&&!s)throw new Nt(jt.InternalError,`Tool ${t.params.name} has taskSupport '${i}' but was not registered with registerToolTask`);if(i==="required"&&!o)throw new Nt(jt.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(i==="optional"&&!o&&s)return await this.handleAutomaticTaskPolling(n,t,r);let a=await this.validateToolInput(n,t.params.arguments,t.params.name),u=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,u,t.params.name),u}catch(n){if(n instanceof Nt&&n.code===jt.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(t){return{content:[{type:"text",text:t}],isError:!0}}async validateToolInput(t,r,n){if(!t.inputSchema)return;let i=KU(t.inputSchema)??t.inputSchema,s=await Tpe(i,r);if(!s.success){let a="error"in s?s.error:"Unknown error",u=bpe(a);throw new Nt(jt.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${u}`)}return s.data}async validateToolOutput(t,r,n){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new Nt(jt.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=KU(t.outputSchema),i=await Tpe(o,r.structuredContent);if(!i.success){let s="error"in i?i.error:"Unknown error",a=bpe(s);throw new Nt(jt.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(t,r,n){let o=t.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let s={...n,taskStore:n.taskStore};if(t.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,s))}else{let a=o;return await Promise.resolve(a.createTask(s))}}if(t.inputSchema){let s=o;return await Promise.resolve(s(r,n))}else{let s=o;return await Promise.resolve(s(n))}}async handleAutomaticTaskPolling(t,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(t,r.params.arguments,r.params.name),i=t.handler,s={...n,taskStore:n.taskStore},a=o?await Promise.resolve(i.createTask(o,s)):await Promise.resolve(i.createTask(s)),u=a.task.taskId,c=a.task,l=c.pollInterval??5e3;for(;c.status!=="completed"&&c.status!=="failed"&&c.status!=="cancelled";){await new Promise(f=>setTimeout(f,l));let d=await n.taskStore.getTask(u);if(!d)throw new Nt(jt.InternalError,`Task ${u} not found during polling`);c=d}return await n.taskStore.getTaskResult(u)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(SR(Kpe)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Kpe,async t=>{switch(t.params.ref.type){case"ref/prompt":return FKt(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return QKt(t),this.handleResourceCompletion(t,t.params.ref);default:throw new Nt(jt.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let n=this._registeredPrompts[r.name];if(!n)throw new Nt(jt.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return QW;let i=ay(n.argsSchema)?.[t.params.argument.name];if(!PXe(i))return QW;let s=sMr(i);if(!s)return QW;let a=await s(t.params.argument.value,t.params.context);return uMr(a)}async handleResourceCompletion(t,r){let n=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return QW;throw new Nt(jt.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(t.params.argument.name);if(!o)return QW;let i=await o(t.params.argument.value,t.params.context);return uMr(i)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(SR($pe)),this.server.assertCanSetRequestHandler(SR(Vpe)),this.server.assertCanSetRequestHandler(SR(Ype)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler($pe,async(t,r)=>{let n=Object.entries(this._registeredResources).filter(([i,s])=>s.enabled).map(([i,s])=>({uri:i,name:s.name,...s.metadata})),o=[];for(let i of Object.values(this._registeredResourceTemplates)){if(!i.resourceTemplate.listCallback)continue;let s=await i.resourceTemplate.listCallback(r);for(let a of s.resources)o.push({...i.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Vpe,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Ype,async(t,r)=>{let n=new URL(t.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new Nt(jt.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let i of Object.values(this._registeredResourceTemplates)){let s=i.resourceTemplate.uriTemplate.match(n.toString());if(s)return i.readCallback(n,s,r)}throw new Nt(jt.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(SR(jpe)),this.server.assertCanSetRequestHandler(SR(zpe)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(jpe,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?pUo(r.argsSchema):void 0}))})),this.server.setRequestHandler(zpe,async(t,r)=>{let n=this._registeredPrompts[t.params.name];if(!n)throw new Nt(jt.InvalidParams,`Prompt ${t.params.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Prompt ${t.params.name} disabled`);if(n.argsSchema){let o=KU(n.argsSchema),i=await Tpe(o,t.params.arguments);if(!i.success){let u="error"in i?i.error:"Unknown error",c=bpe(u);throw new Nt(jt.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${c}`)}let s=i.data,a=n.callback;return await Promise.resolve(a(s,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(t,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let i=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let s=this._createRegisteredResourceTemplate(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(t,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let i=this._createRegisteredResourceTemplate(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}_createRegisteredResource(t,r,n,o,i){let s={name:t,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=s)),typeof a.name<"u"&&(s.name=a.name),typeof a.title<"u"&&(s.title=a.title),typeof a.metadata<"u"&&(s.metadata=a.metadata),typeof a.callback<"u"&&(s.readCallback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=s,s}_createRegisteredResourceTemplate(t,r,n,o,i){let s={resourceTemplate:n,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:c=>{typeof c.name<"u"&&c.name!==t&&(delete this._registeredResourceTemplates[t],c.name&&(this._registeredResourceTemplates[c.name]=s)),typeof c.title<"u"&&(s.title=c.title),typeof c.template<"u"&&(s.resourceTemplate=c.template),typeof c.metadata<"u"&&(s.metadata=c.metadata),typeof c.callback<"u"&&(s.readCallback=c.callback),typeof c.enabled<"u"&&(s.enabled=c.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=s;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(c=>!!n.completeCallback(c))&&this.setCompletionRequestHandler(),s}_createRegisteredPrompt(t,r,n,o,i){let s={title:r,description:n,argsSchema:o===void 0?void 0:iB(o),callback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==t&&(delete this._registeredPrompts[t],a.name&&(this._registeredPrompts[a.name]=s)),typeof a.title<"u"&&(s.title=a.title),typeof a.description<"u"&&(s.description=a.description),typeof a.argsSchema<"u"&&(s.argsSchema=iB(a.argsSchema)),typeof a.callback<"u"&&(s.callback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=s,o&&Object.values(o).some(u=>{let c=u instanceof Am?u._def?.innerType:u;return PXe(c)})&&this.setCompletionRequestHandler(),s}_createRegisteredTool(t,r,n,o,i,s,a,u,c){LXe(t);let l={title:r,description:n,inputSchema:aMr(o),outputSchema:aMr(i),annotations:s,execution:a,_meta:u,handler:c,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==t&&(typeof d.name=="string"&&LXe(d.name),delete this._registeredTools[t],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=iB(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=iB(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(t,...r){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let n,o,i,s;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let u=r[0];FXe(u)?(o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!FXe(r[0])&&(s=r.shift())):typeof u=="object"&&u!==null&&(s=r.shift())}let a=r[0];return this._createRegisteredTool(t,void 0,n,o,i,s,{taskSupport:"forbidden"},void 0,a)}registerTool(t,r,n){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:o,description:i,inputSchema:s,outputSchema:a,annotations:u,_meta:c}=r;return this._createRegisteredTool(t,o,i,s,a,u,{taskSupport:"forbidden"},c,n)}prompt(t,...r){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let i=r[0],s=this._createRegisteredPrompt(t,void 0,n,o,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(t,r,n){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:o,description:i,argsSchema:s}=r,a=this._createRegisteredPrompt(t,o,i,s,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(t,r){return this.server.sendLoggingMessage(t,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var dUo={type:"object",properties:{}};function cMr(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function fUo(e){return"_def"in e||"_zod"in e||cMr(e)}function FXe(e){return typeof e!="object"||e===null||fUo(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(cMr)}function aMr(e){if(e)return FXe(e)?iB(e):e}function pUo(e){let t=ay(e);return t?Object.entries(t).map(([r,n])=>{let o=GWt(n),i=qWt(n);return{name:r,description:o,required:!i}}):[]}function SR(e){let r=ay(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Cpe(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function uMr(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var QW={completion:{values:[],hasMore:!1}};import lMr from"node:process";var bye=class{constructor(t=lMr.stdin,r=lMr.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new z3,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=ZAe(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};import{Http2ServerRequest as mUo}from"http2";import{Http2ServerRequest as QXe}from"http2";import{Readable as dMr}from"stream";import vUo from"crypto";var u2=class extends Error{constructor(e,t){super(e,t),this.name="RequestError"}},AUo=e=>e instanceof u2?e:new u2(e.message,{cause:e}),gUo=global.Request,UW=class extends gUo{constructor(e,t){typeof e=="object"&&x5 in e&&(e=e[x5]()),typeof t?.body?.getReader<"u"&&(t.duplex??="half"),super(e,t)}},hUo=e=>{let t=[],r=e.rawHeaders;for(let n=0;n<r.length;n+=2){let{[n]:o,[n+1]:i}=r;o.charCodeAt(0)!==58&&t.push([o,i])}return new Headers(t)},pMr=Symbol("wrapBodyStream"),EUo=(e,t,r,n,o)=>{let i={method:e,headers:r,signal:o.signal};if(e==="TRACE"){i.method="GET";let s=new UW(t,i);return Object.defineProperty(s,"method",{get(){return"TRACE"}}),s}if(!(e==="GET"||e==="HEAD"))if("rawBody"in n&&n.rawBody instanceof Buffer)i.body=new ReadableStream({start(s){s.enqueue(n.rawBody),s.close()}});else if(n[pMr]){let s;i.body=new ReadableStream({async pull(a){try{s||=dMr.toWeb(n).getReader();let{done:u,value:c}=await s.read();u?a.close():a.enqueue(c)}catch(u){a.error(u)}}})}else i.body=dMr.toWeb(n);return new UW(t,i)},x5=Symbol("getRequestCache"),_Uo=Symbol("requestCache"),Cye=Symbol("incomingKey"),Iye=Symbol("urlKey"),SUo=Symbol("headersKey"),v5=Symbol("abortControllerKey"),yUo=Symbol("getAbortController"),vye={get method(){return this[Cye].method||"GET"},get url(){return this[Iye]},get headers(){return this[SUo]||=hUo(this[Cye])},[yUo](){return this[x5](),this[v5]},[x5](){return this[v5]||=new AbortController,this[_Uo]||=EUo(this.method,this[Iye],this.headers,this[Cye],this[v5])}};["body","bodyUsed","cache","credentials","destination","integrity","mode","redirect","referrer","referrerPolicy","signal","keepalive"].forEach(e=>{Object.defineProperty(vye,e,{get(){return this[x5]()[e]}})});["arrayBuffer","blob","clone","formData","json","text"].forEach(e=>{Object.defineProperty(vye,e,{value:function(){return this[x5]()[e]()}})});Object.setPrototypeOf(vye,UW.prototype);var TUo=(e,t)=>{let r=Object.create(vye);r[Cye]=e;let n=e.url||"";if(n[0]!=="/"&&(n.startsWith("http://")||n.startsWith("https://"))){if(e instanceof QXe)throw new u2("Absolute URL for :path is not allowed in HTTP/2");try{let a=new URL(n);r[Iye]=a.href}catch(a){throw new u2("Invalid absolute URL",{cause:a})}return r}let o=(e instanceof QXe?e.authority:e.headers.host)||t;if(!o)throw new u2("Missing host header");let i;if(e instanceof QXe){if(i=e.scheme,!(i==="http"||i==="https"))throw new u2("Unsupported scheme")}else i=e.socket&&e.socket.encrypted?"https":"http";let s=new URL(`${i}://${o}${n}`);if(s.hostname.length!==o.length&&s.hostname!==o.replace(/:\d+$/,""))throw new u2("Invalid host header");return r[Iye]=s.href,r},fMr=Symbol("responseCache"),I5=Symbol("getResponseCache"),c2=Symbol("cache"),HXe=global.Response,HW=class mMr{#e;#t;[I5](){return delete this[c2],this[fMr]||=new HXe(this.#e,this.#t)}constructor(t,r){let n;if(this.#e=t,r instanceof mMr){let o=r[fMr];if(o){this.#t=o,this[I5]();return}else this.#t=r.#t,n=new Headers(r.#t.headers)}else this.#t=r;(typeof t=="string"||typeof t?.getReader<"u"||t instanceof Blob||t instanceof Uint8Array)&&(n||=r?.headers||{"content-type":"text/plain; charset=UTF-8"},this[c2]=[r?.status||200,t,n])}get headers(){let t=this[c2];return t?(t[2]instanceof Headers||(t[2]=new Headers(t[2])),t[2]):this[I5]().headers}get status(){return this[c2]?.[0]??this[I5]().status}get ok(){let t=this.status;return t>=200&&t<300}};["body","bodyUsed","redirected","statusText","trailers","type","url"].forEach(e=>{Object.defineProperty(HW.prototype,e,{get(){return this[I5]()[e]}})});["arrayBuffer","blob","clone","formData","json","text"].forEach(e=>{Object.defineProperty(HW.prototype,e,{value:function(){return this[I5]()[e]()}})});Object.setPrototypeOf(HW,HXe);Object.setPrototypeOf(HW.prototype,HXe.prototype);async function bUo(e){return Promise.race([e,Promise.resolve().then(()=>Promise.resolve(void 0))])}function AMr(e,t,r){let n=a=>{e.cancel(a).catch(()=>{})};return t.on("close",n),t.on("error",n),(r??e.read()).then(s,o),e.closed.finally(()=>{t.off("close",n),t.off("error",n)});function o(a){a&&t.destroy(a)}function i(){e.read().then(s,o)}function s({done:a,value:u}){try{if(a)t.end();else if(!t.write(u))t.once("drain",i);else return e.read().then(s,o)}catch(c){o(c)}}}function CUo(e,t){if(e.locked)throw new TypeError("ReadableStream is locked.");return t.destroyed?void 0:AMr(e.getReader(),t)}var gMr=e=>{let t={};e instanceof Headers||(e=new Headers(e??void 0));let r=[];for(let[n,o]of e)n==="set-cookie"?r.push(o):t[n]=o;return r.length>0&&(t["set-cookie"]=r),t["content-type"]??="text/plain; charset=UTF-8",t},IUo="x-hono-already-sent";typeof global.crypto>"u"&&(global.crypto=vUo);var GXe=Symbol("outgoingEnded"),xUo=()=>new Response(null,{status:400}),hMr=e=>new Response(null,{status:e instanceof Error&&(e.name==="TimeoutError"||e.constructor.name==="TimeoutError")?504:500}),UXe=(e,t)=>{let r=e instanceof Error?e:new Error("unknown error",{cause:e});r.code==="ERR_STREAM_PREMATURE_CLOSE"?console.info("The user aborted a request."):(console.error(e),t.headersSent||t.writeHead(500,{"Content-Type":"text/plain"}),t.end(`Error: ${r.message}`),t.destroy(r))},EMr=e=>{"flushHeaders"in e&&e.writable&&e.flushHeaders()},_Mr=async(e,t)=>{let[r,n,o]=e[c2];o instanceof Headers&&(o=gMr(o)),typeof n=="string"?o["Content-Length"]=Buffer.byteLength(n):n instanceof Uint8Array?o["Content-Length"]=n.byteLength:n instanceof Blob&&(o["Content-Length"]=n.size),t.writeHead(r,o),typeof n=="string"||n instanceof Uint8Array?t.end(n):n instanceof Blob?t.end(new Uint8Array(await n.arrayBuffer())):(EMr(t),await CUo(n,t)?.catch(i=>UXe(i,t))),t[GXe]?.()},DUo=e=>typeof e.then=="function",RUo=async(e,t,r={})=>{if(DUo(e))if(r.errorHandler)try{e=await e}catch(o){let i=await r.errorHandler(o);if(!i)return;e=i}else e=await e.catch(hMr);if(c2 in e)return _Mr(e,t);let n=gMr(e.headers);if(e.body){let o=e.body.getReader(),i=[],s=!1,a;if(n["transfer-encoding"]!=="chunked"){let u=2;for(let c=0;c<u;c++){a||=o.read();let l=await bUo(a).catch(d=>{console.error(d),s=!0});if(!l){if(c===1){await new Promise(d=>setTimeout(d)),u=3;continue}break}if(a=void 0,l.value&&i.push(l.value),l.done){s=!0;break}}s&&!("content-length"in n)&&(n["content-length"]=i.reduce((c,l)=>c+l.length,0))}t.writeHead(e.status,n),i.forEach(u=>{t.write(u)}),s?t.end():(i.length===0&&EMr(t),await AMr(o,t,a))}else n[IUo]||(t.writeHead(e.status,n),t.end());t[GXe]?.()},qXe=(e,t={})=>{let r=t.autoCleanupIncoming??!0;return t.overrideGlobalObjects!==!1&&global.Request!==UW&&(Object.defineProperty(global,"Request",{value:UW}),Object.defineProperty(global,"Response",{value:HW})),async(n,o)=>{let i,s;try{s=TUo(n,t.hostname);let a=!r||n.method==="GET"||n.method==="HEAD";if(a||(n[pMr]=!0,n.on("end",()=>{a=!0}),n instanceof mUo&&(o[GXe]=()=>{a||setTimeout(()=>{a||setTimeout(()=>{n.destroy(),o.destroy()})})})),o.on("close",()=>{s[v5]&&(n.errored?s[v5].abort(n.errored.toString()):o.writableFinished||s[v5].abort("Client connection prematurely closed.")),a||setTimeout(()=>{a||setTimeout(()=>{n.destroy()})})}),i=e(s,{incoming:n,outgoing:o}),c2 in i)return _Mr(i,o)}catch(a){if(i)return UXe(a,o);if(t.errorHandler){if(i=await t.errorHandler(s?a:AUo(a)),!i)return}else s?i=hMr(a):i=xUo()}try{return await RUo(i,o,t)}catch(a){return UXe(a,o)}}};$h();var xye=class{constructor(t={}){this._started=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this.sessionIdGenerator=t.sessionIdGenerator,this._enableJsonResponse=t.enableJsonResponse??!1,this._eventStore=t.eventStore,this._onsessioninitialized=t.onsessioninitialized,this._onsessionclosed=t.onsessionclosed,this._allowedHosts=t.allowedHosts,this._allowedOrigins=t.allowedOrigins,this._enableDnsRebindingProtection=t.enableDnsRebindingProtection??!1,this._retryInterval=t.retryInterval}async start(){if(this._started)throw new Error("Transport already started");this._started=!0}createJsonErrorResponse(t,r,n,o){let i={code:r,message:n};return o?.data!==void 0&&(i.data=o.data),new Response(JSON.stringify({jsonrpc:"2.0",error:i,id:null}),{status:t,headers:{"Content-Type":"application/json",...o?.headers}})}validateRequestHeaders(t){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let r=t.headers.get("host");if(!r||!this._allowedHosts.includes(r)){let n=`Invalid Host header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let r=t.headers.get("origin");if(r&&!this._allowedOrigins.includes(r)){let n=`Invalid Origin header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}}}async handleRequest(t,r){let n=this.validateRequestHeaders(t);if(n)return n;switch(t.method){case"POST":return this.handlePostRequest(t,r);case"GET":return this.handleGetRequest(t);case"DELETE":return this.handleDeleteRequest(t);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(t,r,n,o){if(!this._eventStore||o<"2025-11-25")return;let i=await this._eventStore.storeEvent(n,{}),s=`id: ${i}
|
|
3604
|
+
`),Fr=Ft;Ft.length+d.length>800&&(Fr=TBr(Ft));let Zo=d.slice(0,ie)+Fr+d.slice(ie);f(Zo),oe(ie+Fr.length),De(Ft)}vt((Er,Ft)=>{d===""&&(Ft.escape||Ft.backspace||Ft.delete)&&g("prompt"),Ft.escape&&s.length>0&&!d&&!r&&I()});let Ea=mi().columns-6,xt=(0,Ac.useMemo)(()=>cc(s),[s]),Br=K();return pn.createElement(D,{flexDirection:"column"},he.length>0&&pn.createElement(D,{flexDirection:"column",marginTop:1},he.map((Er,Ft)=>pn.createElement(C,{key:Ft,color:Br.primaryText},"> ",Er))),pn.createElement(D,{alignItems:"flex-start",justifyContent:"flex-start",borderColor:p==="bash"?Br.bashBorder:Br.secondaryBorder,borderDimColor:!0,borderStyle:"round",width:"100%",marginTop:he.length>0?0:1},pn.createElement(D,{alignItems:"flex-start",alignSelf:"flex-start",flexWrap:"nowrap",justifyContent:"flex-start",width:3},p==="bash"?pn.createElement(C,{color:Br.bashBorder},"\xA0!\xA0"):pn.createElement(C,{color:r?Br.secondaryText:void 0},"\xA0>\xA0")),pn.createElement(D,{paddingRight:1},pn.createElement(gC,{multiline:!0,onSubmit:Ui,onChange:vn,value:d,onHistoryUp:go,onHistoryDown:ha,onHistoryReset:()=>ni(),placeholder:re||h===0?le:void 0,onExit:()=>process.exit(0),onExitMessage:(Er,Ft)=>z({show:Er,key:Ft}),onMessage:(Er,Ft)=>ge({show:Er,text:Ft}),onImagePaste:ss,columns:Ea,isDimmed:t||r,disableCursorMovementForUpDownKeys:et.length>0,cursorOffset:ie,onChangeCursorOffset:oe,onPaste:oi}))),et.length===0&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0},pn.createElement(D,{justifyContent:"flex-start",gap:1},k.show?pn.createElement(C,{dimColor:!0},"Press ",k.key," again to exit"):Y.show?pn.createElement(C,{dimColor:!0},Y.text):pn.createElement(pn.Fragment,null,p==="prompt"&&pn.createElement(C,{dimColor:!0},"? for shortcuts (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)"),p==="edit"&&pn.createElement(C,{color:"red"},"\u23F5\u23F5 accept edits on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)"),p==="plan"&&pn.createElement(C,{color:Br.success},"\u23F8 plan mode on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle) "),p==="bash"&&pn.createElement(C,{color:Br.bashBorder},"! for bash mode "),p==="auto"&&pn.createElement(C,{color:"yellow"},"\u26A1 auto mode on (",vr.platform==="windows"?"Alt+m":"Shift+Tab"," to cycle)")),pn.createElement(C,{dimColor:!0},"Ctrl+s switch session "),Ke&&Ke.length>0&&pn.createElement(C,{dimColor:!0},", LSP ",Ke.join(", "))),pn.createElement(kW,{children:[]},pn.createElement(D,{justifyContent:"flex-end",gap:1},!c&&!Q&&!o&&xt<gXe&&pn.createElement(C,{dimColor:!0},oQ.isEnabled&&iLt()?"shift + \u23CE for newline":"\\\u23CE for newline"),o&&pn.createElement(C,{dimColor:!0},`${cc(s)} tokens (${Math.round(1e4*(mzt(s)||1)/(cc(s)||1))/100}% cached)`),pn.createElement(hXe,{tokenUsage:xt}),pn.createElement(pXe,{debug:o,onAutoUpdaterResult:u,autoUpdaterResult:c,isUpdating:Q,onChangeIsUpdating:U})))),(P||xu.getBackgroundTaskCount()>0||no.backgroundNotiQueueSize()>0||es.getBackgroundRunningTask().size>0||es.notifyQueueSize()>0)&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0,marginTop:0},pn.createElement(D,{flexDirection:"row",gap:1},(xu.getBackgroundTaskCount()>0||no.backgroundNotiQueueSize()>0)&&pn.createElement(C,{color:"green"},"background agent(s)",xu.getBackgroundTaskCount()>0&&` ${xu.getBackgroundTaskCount()} running`,no.backgroundNotiQueueSize()>0&&` ${no.backgroundNotiQueueSize()} completed`),(es.getBackgroundRunningTask().size>0||es.notifyQueueSize()>0)&&pn.createElement(C,{color:"green"},"shell task(s)",es.getBackgroundRunningTask().size>0&&` ${es.getBackgroundRunningTask().size} running`,es.notifyQueueSize()>0&&` ${es.notifyQueueSize()} completed`)),pn.createElement(D,null,P&&pn.createElement(C,{dimColor:!0,wrap:"truncate-end"},P))),et.length>0&&pn.createElement(D,{flexDirection:"row",justifyContent:"space-between",paddingX:2,paddingY:0},pn.createElement(D,{flexDirection:"column"},et.map((Er,Ft)=>{let Fr=e.find(Zo=>Zo.userFacingName()===Er.replace("/",""));return pn.createElement(D,{key:Er,flexDirection:at<80?"column":"row"},pn.createElement(D,{width:at<80?void 0:Xe},pn.createElement(C,{color:Ft===ct?Br.suggestion:void 0,dimColor:Ft!==ct},"/",Er,Fr?.aliases&&Fr.aliases.length>0&&pn.createElement(C,{dimColor:!0}," (",Fr.aliases.join(", "),")"))),Fr&&pn.createElement(D,{width:at-(at<80?4:Xe+4),paddingLeft:at<80?4:0},pn.createElement(C,{color:Ft===ct?Br.suggestion:void 0,dimColor:Ft!==ct,wrap:"wrap"},pn.createElement(C,{dimColor:Ft!==ct},Fr.description(),Fr.type==="prompt"&&Fr.argNames?.length?` (arguments: ${Fr.argNames.join(", ")})`:null))))})),pn.createElement(kW,{children:[]},pn.createElement(D,{justifyContent:"flex-end",gap:1},pn.createElement(hXe,{tokenUsage:cc(s)}),pn.createElement(pXe,{debug:o,onAutoUpdaterResult:u,autoUpdaterResult:c,isUpdating:Q,onChangeIsUpdating:U})))))}var bBr=(0,Ac.memo)(xQo);function DQo(){CGe(""),process.exit(0)}var CBr=G(se(),1);Be();function IBr(){(0,CBr.useEffect)(()=>{let e=Math.round(process.uptime()*1e3);Oe("tengu_timer",{event:"startup",durationMs:String(e)})},[])}Be();function vBr(e,t,r,n,o,i,s,a){vt((u,c)=>{c.escape&&(a?.aborted||a&&o&&(i||s?.disableCancel||(Oe("tengu_cancel",{}),e(null),t(null,!0),r(null),n())))})}var xBr=G(se(),1);Be();Be();function RQo(e){return(0,xBr.useCallback)(async(t,r,n,o,i,s,a)=>new Promise(u=>{function c(){Oe("tengu_tool_use_cancelled",{messageID:o.message.id,toolName:t.name})}function l(){u({result:!1,message:SW}),n.abortController.abort()}if(n.abortController.signal.aborted){c(),l();return}return GD(t,r,n,o,i,s,a).then(async d=>{let f=oKe(n);if(!d.result&&(d.behavior==="deny"||f==="dontAsk"||f==="auto")){u({result:!1,message:d.message||"Permission denied "});return}if(d.result&&!s?.forceCheck){Oe("tengu_tool_use_granted_in_config",{messageID:o.message.id,toolName:t.name}),u({result:!0});return}let p=await t.description(r),g=t===io?YAe(io.inputSchema.parse(r).command):null;if(n.abortController.signal.aborted){c(),l();return}e({toolUseID:i,hookWarning:s?.hookWarning,assistantMessage:o,tool:t,description:p,input:r,commandPrefix:g,riskScore:null,onAbort(){c(),Oe("tengu_tool_use_rejected_in_prompt",{messageID:o.message.id,toolName:t.name}),l()},onAllow(h){h==="permanent"?Oe("tengu_tool_use_granted_in_prompt_permanent",{messageID:o.message.id,toolName:t.name}):Oe("tengu_tool_use_granted_in_prompt_temporary",{messageID:o.message.id,toolName:t.name}),u({result:!0})},onReject(){Oe("tengu_tool_use_rejected_in_prompt",{messageID:o.message.id,toolName:t.name}),l()}})}).catch(d=>{d instanceof _F?(c(),l()):be(d)})}),[e])}var DBr=RQo;var RBr=G(se(),1);Be();function wBr(e){(0,RBr.useEffect)(()=>{wA(e.filter(t=>t.type!=="progress"))},[e])}y3();Be();var mye=G(se(),1);var Gu=G(se(),1);var T5=G(se(),1);function EXe({debug:e,erroredToolUseIDs:t,inProgressToolUseIDs:r,message:n,normalizedMessages:o,tools:i,unresolvedToolUseIDs:s,verbose:a}){let{columns:u}=mi();return Zn([n]).filter(c=>c.type!=="progress").map((c,l)=>T5.createElement(D,{flexDirection:"column",key:l},T5.createElement(rT,{addMargin:!1,erroredToolUseIDs:t,debug:e,inProgressToolUseIDs:r,message:c,messages:o,shouldAnimate:!1,shouldShowDot:!0,tools:i,unresolvedToolUseIDs:s,verbose:a,width:u/2-6}),T5.createElement(wQo,{message:c,verbose:a})))}function wQo({message:e,verbose:t}){let{columns:r}=mi();if(e.type!=="assistant")return null;let n=e.message.content[0];switch(n.type){case"tool_use":switch(n.name){case Vd.name:{let o=Vd.inputSchema.safeParse(n.input);return o.success?T5.createElement(iye,{file_path:o.data.file_path,new_string:o.data.new_string,old_string:o.data.old_string,verbose:t,width:r/2-12}):null}case kf.name:{let o=kf.inputSchema.safeParse(n.input);return o.success?T5.createElement(lye,{file_path:o.data.file_path,content:o.data.content,verbose:t,width:r/2-12}):null}default:return null}default:return null}}He();var NQo="https://go/cli-feedback";function OQo(){return[{label:"Choose for me",value:"no-preference"},{label:"Left option looks better",value:"prefer-left"},{label:"Right option looks better",value:"prefer-right"},{label:`Neither, and tell ${ze} what to do differently (${St.bold.hex(K().warning)("esc")})`,value:"neither"}]}function NBr({m1:e,m2:t,onChoose:r,debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}){let l=K(),[d,f]=(0,Gu.useState)("no-preference"),[p,g]=(0,Gu.useState)(void 0),h=Fa(()=>process.exit(1));return vt((E,y)=>{y.leftArrow?g("prefer-left"):y.rightArrow?g("prefer-right"):y.escape&&r?.("neither")}),Gu.default.createElement(Gu.default.Fragment,null,Gu.default.createElement(D,{flexDirection:"column",height:"100%",width:"100%",borderStyle:"round",borderColor:l.permission},Gu.default.createElement(D,{width:"100%",justifyContent:"space-between",paddingX:1},Gu.default.createElement(C,{bold:!0,color:l.permission},"[ANT-ONLY] Help train ",ze),Gu.default.createElement(C,null,Gu.default.createElement(q3,{url:NQo},"[?]"))),Gu.default.createElement(D,{flexDirection:"row",width:"100%",flexGrow:1,paddingTop:1},Gu.default.createElement(D,{flexDirection:"column",flexGrow:1,flexBasis:1,gap:1,borderStyle:d==="prefer-left"?"bold":"single",borderColor:d==="prefer-left"?l.success:l.secondaryBorder,marginRight:1,padding:1},Gu.default.createElement(EXe,{erroredToolUseIDs:o,debug:n,inProgressToolUseIDs:i,message:e,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c})),Gu.default.createElement(D,{flexDirection:"column",flexGrow:1,flexBasis:1,gap:1,borderStyle:d==="prefer-right"?"bold":"single",borderColor:d==="prefer-right"?l.success:l.secondaryBorder,marginLeft:1,padding:1},Gu.default.createElement(EXe,{erroredToolUseIDs:o,debug:n,inProgressToolUseIDs:i,message:t,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}))),Gu.default.createElement(D,{flexDirection:"column",paddingTop:1,paddingX:1},Gu.default.createElement(C,null,"How do you want to proceed?"),Gu.default.createElement(Nb,{options:OQo(),onFocus:f,focusValue:p,onChange:r}))),h.pending?Gu.default.createElement(D,{marginLeft:3},Gu.default.createElement(C,{dimColor:!0},"Press ",h.keyName," again to exit")):Gu.default.createElement(C,null," "))}function OBr({m1:e,m2:t,resolve:r,debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c}){let l=(0,mye.useCallback)(d=>{XIr(e,t,d),r(r1r(e,t,d))},[e,t,r]);return uye("${PRODUCT_NAME} needs your input on a response comparison"),mye.default.createElement(NBr,{debug:n,erroredToolUseIDs:o,inProgressToolUseIDs:i,m1:e,m2:t,normalizedMessages:s,tools:a,unresolvedToolUseIDs:u,verbose:c,onChoose:l})}cp();og();zr();Id();c_();var PW=G(se(),1),Aye=G(se(),1);var Ig=G(se(),1);Be();function b5({logs:e,onSelect:t}){let{rows:r,columns:n}=mi();if(e.length===0)return null;let o=r-3,i=Math.max(0,e.length-o),s=7,a=21,u=21,c=9,l=e.map((d,f)=>{let p=`[${f}]`.padEnd(s),g=pL(d.modified).padEnd(a),h=pL(d.created).padEnd(u),E=`${d.messageCount}`.padStart(c),y=d.firstPrompt,b="";d.sidechainNumber&&(b+=` (sidechain #${d.sidechainNumber})`);let I=`${p}${g}${h}${E} ${y}${b}`;return{label:I.length>n-2?`${I.slice(0,n-5)}...`:I,value:d.value.toString()}});return Ig.default.createElement(D,{flexDirection:"column",height:"100%",width:"100%"},Ig.default.createElement(D,{paddingLeft:9},Ig.default.createElement(C,{bold:!0,color:K().text},"Modified"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"Created"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"# Messages"),Ig.default.createElement(C,null," "),Ig.default.createElement(C,{bold:!0,color:K().text},"First message")),Ig.default.createElement(Eu,{options:l,onChange:d=>t(parseInt(d,10)),visibleOptionCount:o}),i>0&&Ig.default.createElement(D,{paddingLeft:2},Ig.default.createElement(C,{color:K().secondaryText},"and ",i," more\u2026")))}Be();qU();He();function BBr({onSelect:e,onClose:t,verbose:r}){let[n,o]=(0,Aye.useState)([]);(0,Aye.useEffect)(()=>{async function s(){let a=await Yw(Wn.messages());o(a)}return s(),()=>{}},[]),vt((s,a)=>{a.escape&&t()});function i(s){let a=n[s].messages;for(let u=a.length-1;u>=0;u--){let c=a[u];if(c.type==="assistant"&&c.message&&c.message.content){let l=c.message.content;if(Array.isArray(l)){let d=l.find(f=>f.type==="tool_use"&&f.name===op&&f.input&&f.input.todos);if(d){let f=d.input.todos;f.every(g=>g.status==="completed")?rg.setTodos([]):rg.setTodos(f);break}}}}e(n[s].messages,n[s].date)}return PW.default.createElement(D,{flexDirection:"column",alignItems:"flex-start"},PW.default.createElement(b5,{logs:n,onSelect:i}),PW.default.createElement(D,{marginTop:1},PW.default.createElement(C,null,"ESC to exit")))}qo();He();ig();Zh();var is=G(se(),1),Zd=G(se(),1);Zh();qo();Id();var C5=G(se(),1);function gye({items:e,children:t}){let r=(0,C5.useRef)([]),n=(0,C5.useRef)(0),o=new Map(e.map(d=>[d.uuid,d]));if(r.current.some(d=>!o.has(d)))return setImmediate(()=>vi()),n.current+=1,r.current=e.map(d=>d.uuid),C5.default.createElement(zN,{key:n.current,items:e,children:t});let s=r.current.filter(d=>o.has(d)),a=new Set(s),u=e.map(d=>d.uuid).filter(d=>!a.has(d)),c=[...s,...u];r.current=c;let l=c.map(d=>o.get(d));return C5.default.createElement(zN,{key:n.current,items:l,children:t})}function BQo(e,t){switch(e.type){case"user":case"assistant":{let r=TW(e);return r?!t.has(r):!0}case"reminder":return!0;case"goal_status":return!0;case"progress":return!t.has(e.toolUseID);default:return!0}}function MBr({debug:e=!1,verbose:t=!1,tools:r,memberName:n,showSpinner:o=!0}){let[i,s]=(0,Zd.useState)([]),[a,u]=(0,Zd.useState)(""),[c,l]=(0,Zd.useState)(void 0),[d,f]=(0,Zd.useState)(""),[p,g]=(0,Zd.useState)(0),h=K(),{columns:E}=mi(),y=c?$e.getSessionContext(c):$e.getSessionContext(),b=y.getPendingPrompts(),I=(0,Zd.useCallback)(te=>{te.trim()&&(y.addPendingPrompt(te.trim()),f(""),g(0))},[y]),x=(0,Zd.useCallback)(te=>{f(te)},[]),O=(0,Zd.useCallback)(te=>{g(te)},[]);(0,Zd.useEffect)(()=>{if(!n)return;let te=Sn.getCurrentTeamName(),F=`${te}:${n}:change`;Sn.getMember(te,n).then(ie=>{if(ie?.taskId){let oe=$e.getInQueryContext(ie.taskId).getData(te+":"+n)||[];s([...oe]),l(ie.taskId)}u(ie.state)});let le=Rn.on(F,ie=>{s([...ie])}),Ee=Rn.on("team:change",({teamName:ie,eventType:oe})=>{oe==="member_state_updated"&&Sn.getMember(ie,n).then(we=>{u(we.state)})});return()=>{le(),Ee()}},[n]);let P=(0,Zd.useMemo)(()=>Zn(i).filter(E5),[i]),Q=(0,Zd.useMemo)(()=>qSe(P),[P]),{unresolvedToolUseIDs:U}=(0,Zd.useMemo)(()=>yW(Q),[Q]),k=(0,Zd.useMemo)(()=>[{type:"static",uuid:"logo",jsx:is.createElement(D,{flexDirection:"column"},is.createElement(Gue,{isDefaultModel:!1}))},...Q.filter(te=>te.type!=="progress").map(te=>{let F=te.type==="reminder"?is.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},is.createElement(D,{flexDirection:"row"},is.createElement(C,null,"\xA0\xA0\u23BF \xA0"),is.createElement(C,null,te.content))):te.type==="goal_status"?is.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},is.createElement(D,{flexDirection:"row"},te.content.met?is.createElement(C,{color:"green"},"\xA0\xA0\u2714 Goal achieved"):is.createElement(C,{color:"yellow"},"\xA0\xA0\u25EF Goal not yet met\u2026 continuing"))):is.createElement(rT,{message:te,messages:Q,addMargin:!0,tools:r,verbose:t,debug:e,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set,shouldAnimate:!1,shouldShowDot:!0});return{type:BQo(te,U)?"static":"transient",uuid:te.uuid,jsx:is.createElement(D,{key:te.uuid,width:"100%"},F)}})],[Q,t,r,U]),z=k.filter(te=>te.type==="static"),Y=k.filter(te=>te.type==="transient"),ge=n?`Message @${n}...`:"Message...";return is.createElement(D,{flexDirection:"column",width:"100%"},is.createElement(gye,{items:z.map((te,F)=>({...te,id:F}))},te=>te.jsx),Y.map(te=>te.jsx),is.createElement(D,{marginTop:1},is.createElement(C,null,a)),b.length>0&&is.createElement(D,{flexDirection:"column",marginTop:1},b.map((te,F)=>is.createElement(C,{key:F,color:h.primaryText},"> ",te))),o&&is.createElement(U3,null),is.createElement(D,{flexDirection:"column",marginTop:1,width:"100%"},is.createElement(D,{flexDirection:"row",width:"100%"},is.createElement(C,{color:h.secondaryBorder},"\u2500".repeat(Math.max(0,E-(n?n.length+3:0)))),n&&is.createElement(C,{color:h.secondaryText}," @",n," ")),is.createElement(D,{flexDirection:"row",alignItems:"center",width:"100%"},is.createElement(C,{color:h.primaryText},"\xA0\u276F\xA0"),is.createElement(gC,{value:d,onChange:x,onSubmit:I,placeholder:ge,multiline:!1,columns:E-4,cursorOffset:p,onChangeCursorOffset:O})),is.createElement(D,{flexDirection:"row",width:"100%"},is.createElement(C,{color:h.secondaryBorder},"\u2500".repeat(E)))))}import{writeFile as PBr,mkdir as MQo,readFile as kQo}from"fs/promises";fKe();function kBr(e){let t=[],r=!1;async function n(){if(!r&&t.length!==0){for(r=!0;t.length>0;){let{args:o,resolve:i,reject:s,context:a}=t.shift();try{let u=await e.apply(a,o);i(u)}catch(u){s(u)}}r=!1,t.length>0&&n()}}return function(...o){return new Promise((i,s)=>{t.push({args:o,resolve:i,reject:s,context:this}),n()})}}Be();zr();Be();He();function PQo(){return qt().sessionSummary?.enabled??!1}function LQo(){return qt().sessionSummary?.config??{}}var LBr;function FQo(e,t){let r=0,n=t==null;for(let o of e){if(!n){o.uuid===t&&(n=!0);continue}if(o.type==="assistant"){let i=o.message.content;Array.isArray(i)&&(r+=i.filter(s=>s.type==="tool_use").length)}}return r}function FBr(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r.type==="assistant"){let n=r.message.content;return Array.isArray(n)?n.some(o=>o.type==="tool_use"):!1}}return!1}function QQo(e){let t=cc(e);if(!ntr()){if(!itr(t))return!1;otr()}let r=atr(t),o=FQo(e,LBr)>=utr(),i=FBr(e);if(r&&o||r&&!i){let a=e[e.length-1];return a?.uuid&&(LBr=a.uuid),!0}return!1}async function UQo(e){let t=IGe();await MQo(t,{recursive:!0,mode:448});let r=tj();try{await PBr(r,"",{encoding:"utf-8",mode:384,flag:"wx"});let o=await vGe();await PBr(r,o,{encoding:"utf-8",mode:384})}catch(o){if(o.code!=="EEXIST")throw o}let n="";try{n=await kQo(r,{encoding:"utf-8"}),e.readFileTimestamps[r]=Date.now()}catch{n=""}return{memoryPath:r,currentMemory:n}}var HQo=(()=>{let e=!1;return()=>{if(e)return;let t=LQo(),r={minimumMessageTokensToInit:t.minimumMessageTokensToInit&&t.minimumMessageTokensToInit>0?t.minimumMessageTokensToInit:ej.minimumMessageTokensToInit,minimumTokensBetweenUpdate:t.minimumTokensBetweenUpdate&&t.minimumTokensBetweenUpdate>0?t.minimumTokensBetweenUpdate:ej.minimumTokensBetweenUpdate,toolCallsBetweenUpdates:t.toolCallsBetweenUpdates&&t.toolCallsBetweenUpdates>0?t.toolCallsBetweenUpdates:ej.toolCallsBetweenUpdates};etr(r),e=!0}})();var GQo=kBr(async function(e){let{messages:t,toolUseContext:r,querySource:n}=e;if(!(n!=="repl_main_thread"||!PQo()||!qt().autoCompactEnabled)&&(HQo(),!!QQo(t))){Ker();try{let i=pKe(r),{memoryPath:s,currentMemory:a}=await UQo(i),u=await htr(a,s);await L9({promptMessages:[_t(u)],cacheSafeParams:MM(e),canUseTool:qQo(s),querySource:"session_memory",forkLabel:"session_memory",overrides:{readFileTimestamps:i.readFileTimestamps,agentId:"asession_memory_extractor"}});let c=ttr();rtr(cc(t)),$Qo(t),_e("Session memory extraction completed")}catch(i){_e("Session memory extraction failed:",i)}finally{Jer()}}});function QBr(){m1r(GQo)}function qQo(e){return async(t,r)=>{if(t.name===Yi&&typeof r=="object"&&r!==null&&"file_path"in r){let n=r.file_path;if(typeof n=="string"&&n===e)return{result:!0}}return{result:!1,message:`Only FileEdit on ${e} is allowed for session memory extraction`}}}function $Qo(e){if(!FBr(e)){let t=e[e.length-1];t?.uuid&&Jx(t.uuid)}}process.on("unhandledRejection",(e,t)=>{pe("Unhandled Rejection at:",t,"reason:",e)});function LW({commands:e,dangerouslySkipPermissions:t,debug:r=!1,initialForkNumber:n=0,initialPrompt:o,shouldShowPromptInput:i,tools:s,verbose:a,initialMessages:u,isDefaultModel:c=!0}){(0,Ar.useEffect)(()=>(QBr(),Rn.on("switchConversation",()=>{ss(!0)})),[]);let l=a??sr().verbose,[d,f]=(0,Ar.useState)(n??0),[p,g]=(0,Ar.useState)(0),[h,E]=(0,Ar.useState)(null),[y,b]=(0,Ar.useState)(null),[I,x]=(0,Ar.useState)(null),[O,P]=(0,Ar.useState)(!1),[Q,U]=(0,Ar.useState)(null),[k,z]=(0,Ar.useState)(null),Y=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>{if(Y.current){Y.current=!1;return}k===null&&vi().then(()=>{g(Ue=>Ue+1)})},[k]);let ge=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>{let Ue=()=>{$e.getSessionContext().window_size={columns:process.stdout.columns||80,rows:process.stdout.rows||24},ge.current||(vi(),g(Cr=>Cr+1)),ge.current=!1};return process.stdout.on("resize",Ue),()=>process.stdout.off("resize",Ue)},[]),(0,Ar.useEffect)(()=>Rn.on("repl:refresh",()=>{g(Ue=>Ue+1)}),[]);let[te,F]=(0,Ar.useState)(null),le=(0,Ar.useRef)(null),Ee=(0,Ar.useCallback)((Ue,Cr=!1)=>{try{let Mr=$e.getSessionContext(),kr=Mr.getData("_toolUseConfirms");if(kr||(kr=[],Mr.setData("_toolUseConfirms",kr)),Ue)le.current?kr.push(Ue):(le.current=Ue,F(()=>Ue));else{if(Cr){Mr.setData("_toolUseConfirms",[]),le.current=null,F(()=>null);return}if(kr.length>0){let Si=kr.shift();le.current=Si,F(()=>null),setTimeout(()=>{F(()=>Si)},0)}else le.current=null,F(()=>null)}}catch(Mr){pe("\u8BBE\u7F6E\u5DE5\u5177\u7528\u6237\u786E\u8BA4\u7A97\u53E3\u5F02\u5E38\uFF1A",Mr)}},[]),[ie,oe]=(0,Ar.useState)(u??[]),[we,De]=(0,Ar.useState)(""),[he,Ke]=(0,Ar.useState)("prompt"),Ce=(0,Ar.useRef)(),re=Ue=>{Ue==="bash"?(Ce.current=he,Ke(Ue)):Ce.current&&(Ke(Ce.current),Ce.current=null)};(0,Ar.useEffect)(()=>{Jn.setModeUI=Ue=>{Ke(Ue)}},[]);let Ge=(0,Ar.useCallback)(()=>{Ke(Ue=>{switch(Ue){case"prompt":return Jn.setMode("plan"),"plan";case"plan":return Jn.setMode("edit"),"edit";case"edit":return qt().autoMode?.enabled?(Jn.setMode("auto"),"auto"):(Jn.setMode("prompt"),"prompt");case"auto":return Jn.setMode("prompt"),"prompt";default:return Jn.setMode("prompt"),"prompt"}})},[]),[at,Xe]=(0,Ar.useState)(0),[et,ct]=(0,Ar.useState)(!1),[Mt,Un]=(0,Ar.useState)(!1),[vn,ni]=(0,Ar.useState)(sr().hasAcknowledgedCostThreshold),[Xr,_i]=(0,Ar.useState)(null),[go,ha]=(0,Ar.useState)(()=>s),[Ui,ss]=(0,Ar.useState)(!1),[oi,Ea]=(0,Ar.useState)([]),[xt,Br]=(0,Ar.useState)(-1),[Er,Ft]=(0,Ar.useState)(-1),[Fr,Zo]=(0,Ar.useState)(!1),as=(0,Ar.useCallback)((Ue,Cr)=>new Promise(Mr=>{_i({m1:Ue,m2:Cr,resolve:Mr})}),[]),Ys=(0,Ar.useRef)({}),{status:Tt,reverify:cr}={status:"valid",reverify:()=>Promise},[en,$t]=(0,Ar.useState)(void 0),[nr,To]=(0,Ar.useState)(NV());(0,Ar.useEffect)(()=>{let Ue=Rn.on("token:change",Cr=>{To(Mr=>Cr)});return()=>{Ue()}},[]);function us(){O&&(P(!1),te?te.onAbort():I?.abort())}vBr(z,Ee,_i,us,O,et,k,I?.signal),(0,Ar.useEffect)(()=>{h&&(f(Ue=>Ue+1),E(null),oe(h))},[h]),(0,Ar.useEffect)(()=>{y&&(oe(Ue=>y.messages),f(Ue=>Ue+1),b(null))},[y]),(0,Ar.useEffect)(()=>{Qfe()>=5&&!Mt&&!vn&&(Oe("tengu_cost_threshold_reached",{}),Un(!0))},[ie,Mt,vn]);let $u=DBr(Ee);async function gc(){if(cr(),!o)return;P(!0);let Ue=new AbortController;x(Ue);let Cr=await Du(),Mr=await GSe(o,"prompt",z,{abortController:Ue,options:{commands:e,tools:go,verbose:l,slowAndCapableModel:Cr,thinking:qt().thinking},setForkConvoWithMessagesOnTheNextRender:E,readFileTimestamps:Ys.current},null);if(Mr.length){for(let _a of Mr)_a.type==="user"&&_R(o);if(oe(_a=>[..._a,...Mr]),Mr[Mr.length-1].type==="assistant"){x(null),P(!1);return}let[Si,au,zs]=await Promise.all([W_(),fi(),Du()]);for await(let _a of EW([...ie,...Mr],Si,au,$u,{options:{commands:e,tools:go,slowAndCapableModel:zs,verbose:l,dangerouslySkipPermissions:t,thinking:qt().thinking},readFileTimestamps:Ys.current,abortController:Ue,setToolJSX:z},as))oe(I0=>[...I0,_a])}else _R(o);ni(sr().hasAcknowledgedCostThreshold||!1),P(!1)}async function jc(Ue,Cr){oe(zs=>[...zs,...Ue]),Yv();let Mr=Ue[Ue.length-1];if(Mr.type==="user"&&typeof Mr.message.content=="string"&&qer(Mr.message.content),Mr.type==="assistant"){x(null),P(!1);return}let[kr,Si,au]=await Promise.all([W_(),fi(),Du()]);for await(let zs of EW([...ie,Mr],kr,Si,$u,{options:{commands:e,tools:go,slowAndCapableModel:au,verbose:l,dangerouslySkipPermissions:t,thinking:qt().thinking},readFileTimestamps:Ys.current,abortController:Cr,setToolJSX:z},as))oe(_a=>[..._a,zs]);P(!1)}lzt(),(0,Ar.useEffect)(()=>{SUt(()=>ie),yUt(oe)},[ie]),wBr(ie),IBr(),vt((Ue,Cr)=>{let Mr=!1;switch(vr.platform){case"windows":Mr=Cr.meta&&(Ue==="m"||Ue==="M");break;case"macos":Mr=Cr.shift&&Cr.tab;break;case"linux":Mr=Cr.shift&&Cr.tab;break;default:Mr=Cr.meta&&(Ue==="m"||Ue==="M")}if(Mr&&Ge(),Cr.ctrl&&Ue==="s"&&(Ui||ss(!0)),Cr.ctrl&&Ue==="b"&&(xu.runInBackgroud(),es.runInBackgroud()),oi.length>0){if(Cr.downArrow&&!Fr&&!Ui){Zo(!0),Ft(xt);return}if(Fr){if(Cr.leftArrow){Ft(kr=>{let Si=kr-1;return Si<-1?oi.length-1:Si});return}if(Cr.rightArrow){Ft(kr=>{let Si=kr+1;return Si>=oi.length?-1:Si});return}if(Cr.return){vi(),g(kr=>kr+1),Br(Er),Zo(!1);return}if(Cr.escape){Ft(xt),Zo(!1);return}}}}),(0,Ar.useEffect)(()=>{gc()},[]),(0,Ar.useEffect)(()=>{let Ue=async()=>{let Mr=_s.getCurrentTeamName();if(Mr)try{let Si=(await _s.getAllMembers(Mr)).filter(au=>au.name!=="team-lead");Ea(Si)}catch(kr){Ht("\u52A0\u8F7D Team \u6210\u5458\u5931\u8D25:",kr)}};Ue();let Cr=Rn.on("team:change",()=>{Ue()});return()=>{Cr()}},[]),(0,Ar.useEffect)(()=>{let Ue=Rn.on("repl:reloadtools",()=>{(async()=>{let Cr=await lo.getTools(!0);ha(Cr)})()});return()=>{Ue()}},[]);let lr=(0,Ar.useRef)(jc);lr.current=jc;let od=(0,Ar.useRef)(O);od.current=O,(0,Ar.useEffect)(()=>{let Ue=Rn.on(a_,Cr=>{(async()=>{if(od.current)return;if(Cr&&Cr.eventType==="loop"){try{if(!$e.isQuerying()){let kr=new AbortController;x(kr),P(!0);let Si=Cr.data?.prompt||"Loop task triggered";lr.current([_t(Si)],kr)}}catch(kr){pe(kr)}return}let Mr=Cr;if(Mr){let kr=await _s.takeMailInbox(Mr,Z1);if(kr&&kr.length>0){let Si=new AbortController;x(Si),P(!0),lr.current([_t(_s.formatMessagesForContext(kr))],Si)}}else try{let kr=no.needNotification(),Si=es.needNotification();if((kr||Si)&&!$e.isQuerying()){let au=new AbortController;x(au);let zs=[];if(kr){let _a=await no.takeNotificationMessages();_a&&zs.push(..._a)}if(Si){let _a=await es.takeNotificationMessages();_a&&zs.push(..._a)}zs.length>0&&(P(!0),lr.current([_t(zs)],au))}}catch(kr){pe(kr)}})()});return()=>{Ue()}},[]),(0,Ar.useEffect)(()=>{let Ue=Ay(),Cr=kr=>{$t(kr)};Ue.setStatusChangeCallback(Cr),Ue.onToolsReload=kr=>{ha(kr)};let Mr=async()=>{try{Ht("\u{1F680} Initiating auto-connect to IDE..."),await Ue.autoConnectToMatchingServer()?Ht("\u2705 Auto-connect completed successfully"):Ht("\u2139\uFE0F No matching IDE server found for auto-connect, or connection failed")}catch(kr){be("\u274C Error during auto-connect attempt:"+kr)}};return Ue.getCurrentConnection()||Mr(),()=>{Ue.setStatusChangeCallback(()=>{}),Ue.onToolsReload=kr=>{}}},[]);let cs=(0,Ar.useMemo)(()=>Zn(ie).filter(E5),[ie]),{unresolvedToolUseIDs:yl,unresolvedGroupToolUseIDs:xE}=(0,Ar.useMemo)(()=>yW(cs),[cs]),ef=(0,Ar.useMemo)(()=>_Or(cs),[cs]),su=(0,Ar.useMemo)(()=>new Set(SOr(cs).map(Ue=>Ue.message.content[0].id)),[cs]),b0=(0,Ar.useMemo)(()=>[{type:"static",uuid:"logo",jsx:kn.createElement(D,{flexDirection:"column",key:`logo${d}-${p}`},kn.createElement(Gue,{isDefaultModel:c}),kn.createElement(KBe,{workspaceDir:Ti()}))},...qSe(cs).map(Ue=>{let Cr=TW(Ue),Mr=Ue.type==="reminder"?kn.createElement(D,{flexDirection:"column",width:"100%",marginLeft:0},kn.createElement(D,{flexDirection:"row"},kn.createElement(C,null,"\xA0\xA0\u23BF \xA0"),kn.createElement(C,null,Ue.content))):Ue.type==="goal_status"?kn.createElement(D,{flexDirection:"column",width:"100%",marginTop:1,marginLeft:0},kn.createElement(D,{flexDirection:"row"},Ue.content.met?kn.createElement(C,{color:"green"},"\u2714 Goal achieved"):kn.createElement(C,{color:"yellow"},"\u25EF Goal not yet met\u2026 continuing"))):Ue.type==="progress"?Ue.content.message.content[0]?.type==="text"&&Ue.content.message.content[0].text===Qu?kn.createElement(rT,{message:Ue.content,messages:Ue.normalizedMessages,addMargin:!1,tools:Ue.tools,verbose:l??!1,debug:r,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set,shouldAnimate:!1,shouldShowDot:!1}):kn.createElement(O0e,{meta:Ue.meta,children:[]},kn.createElement(rT,{message:Ue.content,messages:Ue.normalizedMessages,addMargin:!1,tools:Ue.tools,verbose:l??!1,debug:r,erroredToolUseIDs:new Set,inProgressToolUseIDs:new Set,unresolvedToolUseIDs:new Set([Ue.content.message.content[0].id]),shouldAnimate:!1,shouldShowDot:!1})):kn.createElement(rT,{message:Ue,messages:cs,addMargin:!0,tools:go,verbose:l,debug:r,erroredToolUseIDs:su,inProgressToolUseIDs:ef,shouldAnimate:!k&&!te&&!et&&(!Cr||ef.has(Cr)),shouldShowDot:!0,unresolvedToolUseIDs:yl}),kr=VQo(Ue,cs,yl)?"static":"transient";return r?{type:kr,jsx:kn.createElement(D,{borderStyle:"single",borderColor:kr==="static"?"green":"red",key:Ue.uuid,width:"100%"},Mr)}:{type:kr,uuid:Ue.uuid,jsx:kn.createElement(D,{key:Ue.uuid,width:"100%"},Mr)}})],[d,p,cs,go,l,r,su,ef,k,te,et,yl,c]),Dg=!O&&Mt,Hi=xt>=0&&oi[xt],js=Hi?oi[xt]:null,Rg=(0,Ar.useRef)(!0);(0,Ar.useEffect)(()=>(Rg.current?Rg.current=!0:(vi(),g(Ue=>Ue+1)),()=>{}),[Hi,js]);let C0=Ue=>Fr&&Er===Ue?"green":xt===Ue?"cyan":"gray",ls=Ue=>!!(Fr&&Er===Ue||xt===Ue),[Jt,an]=(0,Ar.useState)(!0);return(0,Ar.useEffect)(()=>{an(O&&!k&&!te&&!Xr)},[k,te,Xr,O]),kn.createElement(kn.Fragment,null,Hi?kn.createElement(MBr,{key:`AgentTeamREPL-messages-${js}-${d}-${p}`,debug:r,verbose:l,tools:go,memberName:js.name,showSpinner:Jt}):kn.createElement(kn.Fragment,null,kn.createElement(gye,{key:`static-messages-${d}-${p}`,items:b0.filter(Ue=>Ue.type==="static")},Ue=>Ue.jsx),b0.filter(Ue=>Ue.type==="transient").map(Ue=>Ue.jsx)),kn.createElement(D,{borderColor:"red",borderStyle:r?"single":void 0,flexDirection:"column",width:"100%"},Jt&&!Hi&&kn.createElement(U3,null),k?k.jsx:null,!k&&Xr&&!et&&kn.createElement(OBr,{m1:Xr.m1,m2:Xr.m2,resolve:Ue=>{Xr.resolve(Ue),setTimeout(()=>_i(null),0)},verbose:l,normalizedMessages:cs,tools:go,debug:r,erroredToolUseIDs:su,inProgressToolUseIDs:ef,unresolvedToolUseIDs:yl}),!k&&te&&!et&&!Xr&&kn.createElement(hBr,{toolUseConfirm:te,onDone:()=>Ee(null),verbose:l}),!k&&!te&&!et&&!Xr&&Dg&&kn.createElement(pUt,{onDone:()=>{Un(!1),ni(!0);let Ue=sr();fo({...Ue,hasAcknowledgedCostThreshold:!0}),Oe("tengu_cost_threshold_acknowledged",{})}}),!Ui&&!te&&!k?.shouldHidePromptInput&&i&&!et&&!Xr&&!Dg&&!Hi&&kn.createElement(kn.Fragment,null,kn.createElement(bBr,{commands:e,tools:go,isDisabled:Tt==="invalid",isLoading:O,onQuery:jc,debug:r,verbose:l,messages:ie,setToolJSX:z,onAutoUpdaterResult:U,autoUpdaterResult:Q,input:we,onInputChange:De,mode:he,onModeChange:re,submitCount:at,onSubmitCountChange:Xe,setIsLoading:P,setAbortController:x,onShowMessageSelector:()=>ct(Ue=>!Ue),setForkConvoWithMessagesOnTheNextRender:E,readFileTimestamps:Ys.current,reminderText:en}))),et&&kn.createElement(oBr,{erroredToolUseIDs:su,unresolvedToolUseIDs:yl,messages:vf(ie),onSelect:async Ue=>{ct(!1),ie.includes(Ue)&&(us(),setImmediate(async()=>{await vi(),oe([]),E(ie.slice(0,ie.indexOf(Ue))),typeof Ue.message.content=="string"&&De(Ue.message.content)}))},onEscape:()=>ct(!1),tools:go}),oi.length>0&&!te&&kn.createElement(D,{flexDirection:"column",width:"100%"},kn.createElement(D,{borderStyle:Fr?"single":void 0,borderColor:"green",paddingLeft:1,paddingRight:1},kn.createElement(C,{bold:Fr,color:Fr?"green":void 0},"Team Members:"),kn.createElement(C,{color:C0(-1),bold:ls(-1)}," ","team-lead"," "),oi.map((Ue,Cr)=>kn.createElement(C,{key:Ue.agentId,color:C0(Cr),bold:ls(Cr)},Ue.name," ")),Fr&&kn.createElement(C,{color:"yellow"}," [\u2190\u2192Switch Enter Confirm ESC Cancel]"))),kn.createElement(D,{justifyContent:"flex-end"},kn.createElement(C,null,"\u2191 "+nr.inputTokens+" \u2193 "+nr.outputTokens," tokens ")),kn.createElement(Mc,null),Ui&&kn.createElement(BBr,{onClose:()=>ss(Ue=>!1),onSelect:async(Ue,Cr)=>{ss(!1),us(),setImmediate(async()=>{await vi(),$e.getSessionContext().switchSessionId(Cr),b({messages:Ue})})}}))}function VQo(e,t,r){switch(e.type){case"user":case"assistant":{let n=TW(e);return n?!r.has(n):!0}case"reminder":return!0;case"goal_status":return!0;case"progress":return!r.has(e.toolUseID)}}var FMr=G(XBr(),1);dr();Ir();Be();zr();async function eMr({commands:e,dangerouslySkipPermissions:t,hasPermissionsToUseTool:r,prompt:n,cwd:o,tools:i,verbose:s=!1}){await Ca(o);let u=[_t(n)],[c,l,d]=await Promise.all([W_(),fi(),Du()]);for await(let g of EW(u,c,l,r,{options:{commands:e,tools:i,verbose:s,dangerouslySkipPermissions:t,slowAndCapableModel:d,thinking:qt().thinking},abortController:new AbortController,readFileTimestamps:{}}))u.push(g);let f=df(u);if(!f||f.type!=="assistant")throw new Error("Expected content to be an assistant message");if(f.message.content[0]?.type!=="text")throw new Error(`Expected first content item to be text, but got ${JSON.stringify(f.message.content[0],null,2)}`);let p=nc();return wA(u),{resultText:f.message.content[0].text,totalCost:Qfe(),messageHistoryFile:p}}Be();import{cwd as nA}from"process";var Xd=G(se(),1);He();Be();Ir();import{homedir as aUo}from"os";function tMr({onDone:e}){let t=K();Xd.default.useEffect(()=>{Oe("trust_dialog_shown",{})},[]);function r(o){let i=Dn();switch(o){case"yes":{let s=aUo()===ke();Oe("trust_dialog_accept",{isHomeDir:String(s)}),s||bi({...i,hasTrustDialogAccepted:!0}),e();break}case"no":{process.exit(1);break}}}let n=Fa(()=>process.exit(0));return vt((o,i)=>{if(i.escape){process.exit(0);return}}),Xd.default.createElement(Xd.default.Fragment,null,Xd.default.createElement(D,{flexDirection:"column",gap:1,padding:1,borderStyle:"round",borderColor:t.warning},Xd.default.createElement(C,{bold:!0,color:t.warning},"Do you trust the files in this folder?"),Xd.default.createElement(C,{bold:!0},process.cwd()),Xd.default.createElement(D,{flexDirection:"column",gap:1},Xd.default.createElement(C,null,ze," may read files in this folder. Reading untrusted files may lead to ",ze," to behave in an unexpected ways."),Xd.default.createElement(C,null,"With your permission ",ze," may execute files in this folder. Executing untrusted code is unsafe.")),Xd.default.createElement(Eu,{options:[{label:"Yes, proceed",value:"yes"},{label:"No, exit",value:"no"}],onChange:o=>r(o)})),Xd.default.createElement(D,{marginLeft:3},Xd.default.createElement(C,{dimColor:!0},n.pending?Xd.default.createElement(Xd.default.Fragment,null,"Press ",n.keyName," again to exit"):Xd.default.createElement(Xd.default.Fragment,null,"Enter to confirm \xB7 Esc to exit"))))}var a2=G(se(),1);Be();Be();Be();function MXe({context:e,type:t,logNumber:r}){let[n,o]=(0,a2.useState)([]),[i,s]=(0,a2.useState)(!1);(0,a2.useEffect)(()=>{Yw(t==="messages"?Wn.messages():Wn.errors()).then(u=>{if(r!==void 0){let c=u[r>=0?r:0];c?(console.log(JSON.stringify(c.messages,null,2)),process.exit(0)):(console.error("No log found at index",r),process.exit(1))}o(u)}).catch(u=>{be(u),r!==void 0?process.exit(1):e.unmount?.()})},[e,t,r]);function a(u){let c=n[u];c&&(s(!0),setTimeout(()=>{console.log(JSON.stringify(c.messages,null,2)),process.exit(0)},100))}return r!==void 0||i?null:a2.default.createElement(b5,{logs:n,onSelect:a})}var kXe=G(se(),1);function rMr(e){try{return e||[]}catch(t){return console.error("Error deserializing messages:",t),[]}}Be();qo();function nMr({context:e,commands:t,logs:r,tools:n,verbose:o}){async function i(s){let a=r[s];if(a)try{e.unmount?.();let u=await zY();$e.getSessionContext().switchSessionId(a.date),Ul(kXe.default.createElement(LW,{initialPrompt:"",shouldShowPromptInput:!0,verbose:o,commands:t,tools:n,initialMessages:rMr(a.messages,n),initialForkNumber:0,isDefaultModel:u}),{exitOnCtrlC:!1})}catch(u){throw be(`Failed to load conversation: ${u}`),u}}return kXe.default.createElement(b5,{logs:r,onSelect:i})}$9e();$h();LHe();JU();var _ye=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};FHe();var Sye=class extends n3{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(nY.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let i=this._loggingLevels.get(o);return i?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(i):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new S3,this.setRequestHandler(Mpe,n=>this._oninitialize(n)),this.setNotificationHandler(kpe,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(k9e,async(n,o)=>{let i=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:s}=n.params,a=nY.safeParse(s);return a.success&&this._loggingLevels.set(i,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new _ye(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Jpe(this._capabilities,t)}setRequestHandler(t,r){let o=ay(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let i;if(Lm(o)){let a=o;i=a._zod?.def?.value??a.value}else{let a=o;i=a._def?.value??a.value}if(typeof i!="string")throw new Error("Schema method literal must be a string");if(i==="tools/call"){let a=async(u,c)=>{let l=yp(t3,u);if(!l.success){let g=l.error instanceof Error?l.error.message:String(l.error);throw new Nt(jt.InvalidParams,`Invalid tools/call request: ${g}`)}let{params:d}=l.data,f=await Promise.resolve(r(u,c));if(d.task){let g=yp(oC,f);if(!g.success){let h=g.error instanceof Error?g.error.message:String(g.error);throw new Nt(jt.InvalidParams,`Invalid task creation result: ${h}`)}return g.data}let p=yp(H_,f);if(!p.success){let g=p.error instanceof Error?p.error.message:String(p.error);throw new Nt(jt.InvalidParams,`Invalid tools/call result: ${g}`)}return p.data};return super.setRequestHandler(t,a)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){Pme(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&kme(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:sB.includes(r)?r:Mx,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},nC)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],i=o.some(c=>c.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,a=s?Array.isArray(s.content)?s.content:[s.content]:[],u=a.some(c=>c.type==="tool_use");if(i){if(o.some(c=>c.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let c=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(c.size!==l.size||![...c].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},iY,r):this.request({method:"sampling/createMessage",params:t},oY,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},r3,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},i=await this.request({method:"elicitation/create",params:o},r3,r);if(i.action==="accept"&&i.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(i.content);if(!a.valid)throw new Nt(jt.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(s){throw s instanceof Nt?s:new Nt(jt.InternalError,`Error validating elicitation response: ${s instanceof Error?s.message:String(s)}`)}return i}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},Q9e,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};JU();q9e();$h();var iMr=Symbol.for("mcp.completable");function PXe(e){return!!e&&typeof e=="object"&&iMr in e}function sMr(e){return e[iMr]?.complete}var oMr;(function(e){e.Completable="McpCompletable"})(oMr||(oMr={}));var uUo=/^[A-Za-z0-9._-]{1,128}$/;function cUo(e){let t=[];if(e.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(" ")&&t.push("Tool name contains spaces, which may cause parsing issues"),e.includes(",")&&t.push("Tool name contains commas, which may cause parsing issues"),(e.startsWith("-")||e.endsWith("-"))&&t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(e.startsWith(".")||e.endsWith("."))&&t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!uUo.test(e)){let r=e.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,i)=>i.indexOf(n)===o);return t.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function lUo(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let r of t)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function LXe(e){let t=cUo(e);return lUo(e,t.warnings),t.isValid}var yye=class{constructor(t){this._mcpServer=t}registerToolTask(t,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${t}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(t,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}};$n();var Tye=class{constructor(t,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Sye(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new yye(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(SR(Wpe)),this.server.assertCanSetRequestHandler(SR(t3)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Wpe,()=>({tools:Object.entries(this._registeredTools).filter(([,t])=>t.enabled).map(([t,r])=>{let n={name:t,title:r.title,description:r.description,inputSchema:(()=>{let o=KU(r.inputSchema);return o?U9e(o,{strictUnions:!0,pipeStrategy:"input"}):dUo})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=KU(r.outputSchema);o&&(n.outputSchema=U9e(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(t3,async(t,r)=>{try{let n=this._registeredTools[t.params.name];if(!n)throw new Nt(jt.InvalidParams,`Tool ${t.params.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Tool ${t.params.name} disabled`);let o=!!t.params.task,i=n.execution?.taskSupport,s="createTask"in n.handler;if((i==="required"||i==="optional")&&!s)throw new Nt(jt.InternalError,`Tool ${t.params.name} has taskSupport '${i}' but was not registered with registerToolTask`);if(i==="required"&&!o)throw new Nt(jt.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(i==="optional"&&!o&&s)return await this.handleAutomaticTaskPolling(n,t,r);let a=await this.validateToolInput(n,t.params.arguments,t.params.name),u=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,u,t.params.name),u}catch(n){if(n instanceof Nt&&n.code===jt.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(t){return{content:[{type:"text",text:t}],isError:!0}}async validateToolInput(t,r,n){if(!t.inputSchema)return;let i=KU(t.inputSchema)??t.inputSchema,s=await Tpe(i,r);if(!s.success){let a="error"in s?s.error:"Unknown error",u=bpe(a);throw new Nt(jt.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${u}`)}return s.data}async validateToolOutput(t,r,n){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new Nt(jt.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=KU(t.outputSchema),i=await Tpe(o,r.structuredContent);if(!i.success){let s="error"in i?i.error:"Unknown error",a=bpe(s);throw new Nt(jt.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(t,r,n){let o=t.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let s={...n,taskStore:n.taskStore};if(t.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,s))}else{let a=o;return await Promise.resolve(a.createTask(s))}}if(t.inputSchema){let s=o;return await Promise.resolve(s(r,n))}else{let s=o;return await Promise.resolve(s(n))}}async handleAutomaticTaskPolling(t,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(t,r.params.arguments,r.params.name),i=t.handler,s={...n,taskStore:n.taskStore},a=o?await Promise.resolve(i.createTask(o,s)):await Promise.resolve(i.createTask(s)),u=a.task.taskId,c=a.task,l=c.pollInterval??5e3;for(;c.status!=="completed"&&c.status!=="failed"&&c.status!=="cancelled";){await new Promise(f=>setTimeout(f,l));let d=await n.taskStore.getTask(u);if(!d)throw new Nt(jt.InternalError,`Task ${u} not found during polling`);c=d}return await n.taskStore.getTaskResult(u)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(SR(Kpe)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Kpe,async t=>{switch(t.params.ref.type){case"ref/prompt":return FKt(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return QKt(t),this.handleResourceCompletion(t,t.params.ref);default:throw new Nt(jt.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let n=this._registeredPrompts[r.name];if(!n)throw new Nt(jt.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return QW;let i=ay(n.argsSchema)?.[t.params.argument.name];if(!PXe(i))return QW;let s=sMr(i);if(!s)return QW;let a=await s(t.params.argument.value,t.params.context);return uMr(a)}async handleResourceCompletion(t,r){let n=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return QW;throw new Nt(jt.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(t.params.argument.name);if(!o)return QW;let i=await o(t.params.argument.value,t.params.context);return uMr(i)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(SR($pe)),this.server.assertCanSetRequestHandler(SR(Vpe)),this.server.assertCanSetRequestHandler(SR(Ype)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler($pe,async(t,r)=>{let n=Object.entries(this._registeredResources).filter(([i,s])=>s.enabled).map(([i,s])=>({uri:i,name:s.name,...s.metadata})),o=[];for(let i of Object.values(this._registeredResourceTemplates)){if(!i.resourceTemplate.listCallback)continue;let s=await i.resourceTemplate.listCallback(r);for(let a of s.resources)o.push({...i.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Vpe,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Ype,async(t,r)=>{let n=new URL(t.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new Nt(jt.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let i of Object.values(this._registeredResourceTemplates)){let s=i.resourceTemplate.uriTemplate.match(n.toString());if(s)return i.readCallback(n,s,r)}throw new Nt(jt.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(SR(jpe)),this.server.assertCanSetRequestHandler(SR(zpe)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(jpe,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?pUo(r.argsSchema):void 0}))})),this.server.setRequestHandler(zpe,async(t,r)=>{let n=this._registeredPrompts[t.params.name];if(!n)throw new Nt(jt.InvalidParams,`Prompt ${t.params.name} not found`);if(!n.enabled)throw new Nt(jt.InvalidParams,`Prompt ${t.params.name} disabled`);if(n.argsSchema){let o=KU(n.argsSchema),i=await Tpe(o,t.params.arguments);if(!i.success){let u="error"in i?i.error:"Unknown error",c=bpe(u);throw new Nt(jt.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${c}`)}let s=i.data,a=n.callback;return await Promise.resolve(a(s,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(t,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let i=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let s=this._createRegisteredResourceTemplate(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(t,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let i=this._createRegisteredResourceTemplate(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}_createRegisteredResource(t,r,n,o,i){let s={name:t,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=s)),typeof a.name<"u"&&(s.name=a.name),typeof a.title<"u"&&(s.title=a.title),typeof a.metadata<"u"&&(s.metadata=a.metadata),typeof a.callback<"u"&&(s.readCallback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=s,s}_createRegisteredResourceTemplate(t,r,n,o,i){let s={resourceTemplate:n,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:c=>{typeof c.name<"u"&&c.name!==t&&(delete this._registeredResourceTemplates[t],c.name&&(this._registeredResourceTemplates[c.name]=s)),typeof c.title<"u"&&(s.title=c.title),typeof c.template<"u"&&(s.resourceTemplate=c.template),typeof c.metadata<"u"&&(s.metadata=c.metadata),typeof c.callback<"u"&&(s.readCallback=c.callback),typeof c.enabled<"u"&&(s.enabled=c.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=s;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(c=>!!n.completeCallback(c))&&this.setCompletionRequestHandler(),s}_createRegisteredPrompt(t,r,n,o,i){let s={title:r,description:n,argsSchema:o===void 0?void 0:iB(o),callback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==t&&(delete this._registeredPrompts[t],a.name&&(this._registeredPrompts[a.name]=s)),typeof a.title<"u"&&(s.title=a.title),typeof a.description<"u"&&(s.description=a.description),typeof a.argsSchema<"u"&&(s.argsSchema=iB(a.argsSchema)),typeof a.callback<"u"&&(s.callback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=s,o&&Object.values(o).some(u=>{let c=u instanceof Am?u._def?.innerType:u;return PXe(c)})&&this.setCompletionRequestHandler(),s}_createRegisteredTool(t,r,n,o,i,s,a,u,c){LXe(t);let l={title:r,description:n,inputSchema:aMr(o),outputSchema:aMr(i),annotations:s,execution:a,_meta:u,handler:c,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==t&&(typeof d.name=="string"&&LXe(d.name),delete this._registeredTools[t],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=iB(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=iB(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(t,...r){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let n,o,i,s;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let u=r[0];FXe(u)?(o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!FXe(r[0])&&(s=r.shift())):typeof u=="object"&&u!==null&&(s=r.shift())}let a=r[0];return this._createRegisteredTool(t,void 0,n,o,i,s,{taskSupport:"forbidden"},void 0,a)}registerTool(t,r,n){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:o,description:i,inputSchema:s,outputSchema:a,annotations:u,_meta:c}=r;return this._createRegisteredTool(t,o,i,s,a,u,{taskSupport:"forbidden"},c,n)}prompt(t,...r){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let i=r[0],s=this._createRegisteredPrompt(t,void 0,n,o,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(t,r,n){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:o,description:i,argsSchema:s}=r,a=this._createRegisteredPrompt(t,o,i,s,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(t,r){return this.server.sendLoggingMessage(t,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var dUo={type:"object",properties:{}};function cMr(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function fUo(e){return"_def"in e||"_zod"in e||cMr(e)}function FXe(e){return typeof e!="object"||e===null||fUo(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(cMr)}function aMr(e){if(e)return FXe(e)?iB(e):e}function pUo(e){let t=ay(e);return t?Object.entries(t).map(([r,n])=>{let o=GWt(n),i=qWt(n);return{name:r,description:o,required:!i}}):[]}function SR(e){let r=ay(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Cpe(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function uMr(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var QW={completion:{values:[],hasMore:!1}};import lMr from"node:process";var bye=class{constructor(t=lMr.stdin,r=lMr.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new z3,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=ZAe(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};import{Http2ServerRequest as mUo}from"http2";import{Http2ServerRequest as QXe}from"http2";import{Readable as dMr}from"stream";import vUo from"crypto";var u2=class extends Error{constructor(e,t){super(e,t),this.name="RequestError"}},AUo=e=>e instanceof u2?e:new u2(e.message,{cause:e}),gUo=global.Request,UW=class extends gUo{constructor(e,t){typeof e=="object"&&x5 in e&&(e=e[x5]()),typeof t?.body?.getReader<"u"&&(t.duplex??="half"),super(e,t)}},hUo=e=>{let t=[],r=e.rawHeaders;for(let n=0;n<r.length;n+=2){let{[n]:o,[n+1]:i}=r;o.charCodeAt(0)!==58&&t.push([o,i])}return new Headers(t)},pMr=Symbol("wrapBodyStream"),EUo=(e,t,r,n,o)=>{let i={method:e,headers:r,signal:o.signal};if(e==="TRACE"){i.method="GET";let s=new UW(t,i);return Object.defineProperty(s,"method",{get(){return"TRACE"}}),s}if(!(e==="GET"||e==="HEAD"))if("rawBody"in n&&n.rawBody instanceof Buffer)i.body=new ReadableStream({start(s){s.enqueue(n.rawBody),s.close()}});else if(n[pMr]){let s;i.body=new ReadableStream({async pull(a){try{s||=dMr.toWeb(n).getReader();let{done:u,value:c}=await s.read();u?a.close():a.enqueue(c)}catch(u){a.error(u)}}})}else i.body=dMr.toWeb(n);return new UW(t,i)},x5=Symbol("getRequestCache"),_Uo=Symbol("requestCache"),Cye=Symbol("incomingKey"),Iye=Symbol("urlKey"),SUo=Symbol("headersKey"),v5=Symbol("abortControllerKey"),yUo=Symbol("getAbortController"),vye={get method(){return this[Cye].method||"GET"},get url(){return this[Iye]},get headers(){return this[SUo]||=hUo(this[Cye])},[yUo](){return this[x5](),this[v5]},[x5](){return this[v5]||=new AbortController,this[_Uo]||=EUo(this.method,this[Iye],this.headers,this[Cye],this[v5])}};["body","bodyUsed","cache","credentials","destination","integrity","mode","redirect","referrer","referrerPolicy","signal","keepalive"].forEach(e=>{Object.defineProperty(vye,e,{get(){return this[x5]()[e]}})});["arrayBuffer","blob","clone","formData","json","text"].forEach(e=>{Object.defineProperty(vye,e,{value:function(){return this[x5]()[e]()}})});Object.setPrototypeOf(vye,UW.prototype);var TUo=(e,t)=>{let r=Object.create(vye);r[Cye]=e;let n=e.url||"";if(n[0]!=="/"&&(n.startsWith("http://")||n.startsWith("https://"))){if(e instanceof QXe)throw new u2("Absolute URL for :path is not allowed in HTTP/2");try{let a=new URL(n);r[Iye]=a.href}catch(a){throw new u2("Invalid absolute URL",{cause:a})}return r}let o=(e instanceof QXe?e.authority:e.headers.host)||t;if(!o)throw new u2("Missing host header");let i;if(e instanceof QXe){if(i=e.scheme,!(i==="http"||i==="https"))throw new u2("Unsupported scheme")}else i=e.socket&&e.socket.encrypted?"https":"http";let s=new URL(`${i}://${o}${n}`);if(s.hostname.length!==o.length&&s.hostname!==o.replace(/:\d+$/,""))throw new u2("Invalid host header");return r[Iye]=s.href,r},fMr=Symbol("responseCache"),I5=Symbol("getResponseCache"),c2=Symbol("cache"),HXe=global.Response,HW=class mMr{#e;#t;[I5](){return delete this[c2],this[fMr]||=new HXe(this.#e,this.#t)}constructor(t,r){let n;if(this.#e=t,r instanceof mMr){let o=r[fMr];if(o){this.#t=o,this[I5]();return}else this.#t=r.#t,n=new Headers(r.#t.headers)}else this.#t=r;(typeof t=="string"||typeof t?.getReader<"u"||t instanceof Blob||t instanceof Uint8Array)&&(n||=r?.headers||{"content-type":"text/plain; charset=UTF-8"},this[c2]=[r?.status||200,t,n])}get headers(){let t=this[c2];return t?(t[2]instanceof Headers||(t[2]=new Headers(t[2])),t[2]):this[I5]().headers}get status(){return this[c2]?.[0]??this[I5]().status}get ok(){let t=this.status;return t>=200&&t<300}};["body","bodyUsed","redirected","statusText","trailers","type","url"].forEach(e=>{Object.defineProperty(HW.prototype,e,{get(){return this[I5]()[e]}})});["arrayBuffer","blob","clone","formData","json","text"].forEach(e=>{Object.defineProperty(HW.prototype,e,{value:function(){return this[I5]()[e]()}})});Object.setPrototypeOf(HW,HXe);Object.setPrototypeOf(HW.prototype,HXe.prototype);async function bUo(e){return Promise.race([e,Promise.resolve().then(()=>Promise.resolve(void 0))])}function AMr(e,t,r){let n=a=>{e.cancel(a).catch(()=>{})};return t.on("close",n),t.on("error",n),(r??e.read()).then(s,o),e.closed.finally(()=>{t.off("close",n),t.off("error",n)});function o(a){a&&t.destroy(a)}function i(){e.read().then(s,o)}function s({done:a,value:u}){try{if(a)t.end();else if(!t.write(u))t.once("drain",i);else return e.read().then(s,o)}catch(c){o(c)}}}function CUo(e,t){if(e.locked)throw new TypeError("ReadableStream is locked.");return t.destroyed?void 0:AMr(e.getReader(),t)}var gMr=e=>{let t={};e instanceof Headers||(e=new Headers(e??void 0));let r=[];for(let[n,o]of e)n==="set-cookie"?r.push(o):t[n]=o;return r.length>0&&(t["set-cookie"]=r),t["content-type"]??="text/plain; charset=UTF-8",t},IUo="x-hono-already-sent";typeof global.crypto>"u"&&(global.crypto=vUo);var GXe=Symbol("outgoingEnded"),xUo=()=>new Response(null,{status:400}),hMr=e=>new Response(null,{status:e instanceof Error&&(e.name==="TimeoutError"||e.constructor.name==="TimeoutError")?504:500}),UXe=(e,t)=>{let r=e instanceof Error?e:new Error("unknown error",{cause:e});r.code==="ERR_STREAM_PREMATURE_CLOSE"?console.info("The user aborted a request."):(console.error(e),t.headersSent||t.writeHead(500,{"Content-Type":"text/plain"}),t.end(`Error: ${r.message}`),t.destroy(r))},EMr=e=>{"flushHeaders"in e&&e.writable&&e.flushHeaders()},_Mr=async(e,t)=>{let[r,n,o]=e[c2];o instanceof Headers&&(o=gMr(o)),typeof n=="string"?o["Content-Length"]=Buffer.byteLength(n):n instanceof Uint8Array?o["Content-Length"]=n.byteLength:n instanceof Blob&&(o["Content-Length"]=n.size),t.writeHead(r,o),typeof n=="string"||n instanceof Uint8Array?t.end(n):n instanceof Blob?t.end(new Uint8Array(await n.arrayBuffer())):(EMr(t),await CUo(n,t)?.catch(i=>UXe(i,t))),t[GXe]?.()},DUo=e=>typeof e.then=="function",RUo=async(e,t,r={})=>{if(DUo(e))if(r.errorHandler)try{e=await e}catch(o){let i=await r.errorHandler(o);if(!i)return;e=i}else e=await e.catch(hMr);if(c2 in e)return _Mr(e,t);let n=gMr(e.headers);if(e.body){let o=e.body.getReader(),i=[],s=!1,a;if(n["transfer-encoding"]!=="chunked"){let u=2;for(let c=0;c<u;c++){a||=o.read();let l=await bUo(a).catch(d=>{console.error(d),s=!0});if(!l){if(c===1){await new Promise(d=>setTimeout(d)),u=3;continue}break}if(a=void 0,l.value&&i.push(l.value),l.done){s=!0;break}}s&&!("content-length"in n)&&(n["content-length"]=i.reduce((c,l)=>c+l.length,0))}t.writeHead(e.status,n),i.forEach(u=>{t.write(u)}),s?t.end():(i.length===0&&EMr(t),await AMr(o,t,a))}else n[IUo]||(t.writeHead(e.status,n),t.end());t[GXe]?.()},qXe=(e,t={})=>{let r=t.autoCleanupIncoming??!0;return t.overrideGlobalObjects!==!1&&global.Request!==UW&&(Object.defineProperty(global,"Request",{value:UW}),Object.defineProperty(global,"Response",{value:HW})),async(n,o)=>{let i,s;try{s=TUo(n,t.hostname);let a=!r||n.method==="GET"||n.method==="HEAD";if(a||(n[pMr]=!0,n.on("end",()=>{a=!0}),n instanceof mUo&&(o[GXe]=()=>{a||setTimeout(()=>{a||setTimeout(()=>{n.destroy(),o.destroy()})})})),o.on("close",()=>{s[v5]&&(n.errored?s[v5].abort(n.errored.toString()):o.writableFinished||s[v5].abort("Client connection prematurely closed.")),a||setTimeout(()=>{a||setTimeout(()=>{n.destroy()})})}),i=e(s,{incoming:n,outgoing:o}),c2 in i)return _Mr(i,o)}catch(a){if(i)return UXe(a,o);if(t.errorHandler){if(i=await t.errorHandler(s?a:AUo(a)),!i)return}else s?i=hMr(a):i=xUo()}try{return await RUo(i,o,t)}catch(a){return UXe(a,o)}}};$h();var xye=class{constructor(t={}){this._started=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this.sessionIdGenerator=t.sessionIdGenerator,this._enableJsonResponse=t.enableJsonResponse??!1,this._eventStore=t.eventStore,this._onsessioninitialized=t.onsessioninitialized,this._onsessionclosed=t.onsessionclosed,this._allowedHosts=t.allowedHosts,this._allowedOrigins=t.allowedOrigins,this._enableDnsRebindingProtection=t.enableDnsRebindingProtection??!1,this._retryInterval=t.retryInterval}async start(){if(this._started)throw new Error("Transport already started");this._started=!0}createJsonErrorResponse(t,r,n,o){let i={code:r,message:n};return o?.data!==void 0&&(i.data=o.data),new Response(JSON.stringify({jsonrpc:"2.0",error:i,id:null}),{status:t,headers:{"Content-Type":"application/json",...o?.headers}})}validateRequestHeaders(t){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let r=t.headers.get("host");if(!r||!this._allowedHosts.includes(r)){let n=`Invalid Host header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let r=t.headers.get("origin");if(r&&!this._allowedOrigins.includes(r)){let n=`Invalid Origin header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}}}async handleRequest(t,r){let n=this.validateRequestHeaders(t);if(n)return n;switch(t.method){case"POST":return this.handlePostRequest(t,r);case"GET":return this.handleGetRequest(t);case"DELETE":return this.handleDeleteRequest(t);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(t,r,n,o){if(!this._eventStore||o<"2025-11-25")return;let i=await this._eventStore.storeEvent(n,{}),s=`id: ${i}
|
|
3605
3605
|
data:
|
|
3606
3606
|
|
|
3607
3607
|
`;this._retryInterval!==void 0&&(s=`id: ${i}
|
package/hands.js
CHANGED
|
@@ -752,7 +752,7 @@ data: ${JSON.stringify($)}
|
|
|
752
752
|
[Search queries used: ${r.groundingMetadata.webSearchQueries.join(", ")}]`}));let i={id:`msg_${Math.random().toString(36).slice(2)}`,type:"message",role:"assistant",model:t.modelVersion||"gemini",content:n,stop_reason:r.finishReason?r.finishReason==="STOP"&&n.some(o=>o.type==="tool_use")?"tool_use":this.mapGeminiFinishReason(r.finishReason):"end_turn",stop_sequence:null,usage:{input_tokens:t.usageMetadata?.promptTokenCount||0,output_tokens:t.usageMetadata?.candidatesTokenCount||0}};return this.logger&&this.logger.debug({result:i},"Conversion complete, final Anthropic response"),i}catch{throw JMr(`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"}}},e0e=new XEe;var Clt=ie(Elt(),1);function fA(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function ylt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function dzr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function fzr(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function pzr(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 nU(e,t,r){pG(t,e),mG(t,pzr(e,r),r)}function mR(e){let t=[],r=e.getReader(),n,i=new Promise(u=>n=u),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(u){try{let{done:l,value:c}=await r.read();if(l){u.close(),s();return}t.push(c),u.enqueue(c)}catch(l){u.error(l),s()}},cancel(u){r.cancel(u).catch(()=>{}),s()}}),done:i}}function iU(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function xCe(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 blt=["/v1/messages"];function wCe(e){let t;try{typeof e=="string"?t=new IT(e):e instanceof IT?t=e:t=new IT(e.url)}catch{return""}let r=t.pathname;for(let n of blt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function vK(e,t){let r=typeof e=="string"?e:e instanceof IT?e.toString():e.url,n;try{n=new IT(r).pathname}catch{return!1}return blt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function mzr(e){return async(t,r)=>{if(!vK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await xV.transformRequestOut(n),o=wCe(t)+"/chat/completions",s=fA(r.headers),a=s.authorization??s.Authorization??"";dzr(i,ylt(s));let u=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i)});if(!u.ok){let _=await u.text();return le(`OpenAI Chat Completions API error: ${u.status}`,{url:o,errorResponse:_}),xCe("OpenAI Chat Completions API error","OPENROUTER",u.status,u.statusText,_)}let l=n.stream===!0,c=s["x-agent-id"],f={request:{url:o,method:r.method,headers:s,body:n},response:{status:u.status,statusText:u.statusText,headers:fA(u.headers)},openai:{request:{body:i},response:{}}};if(!l){let _=await u.text(),C=new Response(_,{status:u.status,statusText:u.statusText,headers:iU(u.headers)}),S=await xV.transformResponseIn(C,n),T=await S.text();try{nU({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(T)}},c)}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",x)}return new Response(T,{status:S.status,statusText:S.statusText,headers:S.headers})}let A=mR(u.body),m=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:iU(u.headers)}),g=await xV.transformResponseIn(m,n),E=mR(g.body);return Promise.all([A.done,E.done]).then(async([_,C])=>{try{nU({...f,openai:{...f.openai,response:{body:await YXe(_)}},response:{...f.response,body:await WL(C)}},c)}catch(S){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(E.stream,{status:g.status,statusText:g.statusText,headers:g.headers})}}function Azr(e){return async(t,r)=>{if(!vK(t,r))return e(t,r);let n=JSON.parse(r.body),i=await wV.transformRequestOut(n),o=fA(r.headers);fzr(i,ylt(o));let s=JSON.stringify(i),u=wCe(t)+"/responses",l=o.authorization??o.Authorization??"";if(!l)return new Response(JSON.stringify({type:"error",error:{type:"api_error",message:"Missing Authorization header",code:"RESPONSES_AUTH_MISSING"}}),{status:401,headers:{"Content-Type":"application/json"}});let c=await e(u,{method:"POST",headers:{"Content-Type":"application/json",Authorization:l,"x-api-key":l.replace(/^Bearer\s+/i,"").trim()},body:s});if(!c.ok){let S=await c.text();return le(`OpenAI Responses API error: ${c.status} ${c.statusText}`,{url:u,status:c.status,errorResponse:S}),xCe("OpenAI Responses API error","RESPONSES",c.status,c.statusText,S)}let f=n.stream===!0,A=o["x-agent-id"],m={request:{url:u,method:r.method,headers:o,body:n},response:{status:c.status,statusText:c.statusText,headers:fA(c.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await c.text(),T=new Response(S,{status:c.status,statusText:c.statusText,headers:iU(c.headers)}),x=await wV.transformResponseIn(T,n),O=await x.text();try{nU({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},A,"responses")}catch(q){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",q)}return new Response(O,{status:x.status,statusText:x.statusText,headers:x.headers})}let g=mR(c.body),E=new Response(g.stream,{status:c.status,statusText:c.statusText,headers:iU(c.headers)}),_=await wV.transformResponseIn(E,n),C=mR(_.body);return Promise.all([g.done,C.done]).then(async([S,T])=>{try{nU({...m,openai:{...m.openai,response:{body:await zXe(S)}},response:{...m.response,body:await WL(T)}},A,"responses")}catch(x){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+x?.stack)}}).catch(S=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(C.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function gzr(e){return async(t,r)=>{if(!vK(t,r))return e(t,r);let n=JSON.parse(r.body),i=fA(r.headers),o=await e0e.transformRequestOut(n),s=JSON.stringify(o),a=wCe(t)+`/models/${n.model}:streamGenerateContent?alt=sse`,u=i.authorization??i.Authorization??"",l;try{l=await e(a,{method:"POST",headers:{"Content-Type":"application/json","x-goog-api-key":String(u).replace(/^Bearer\s+/i,"").trim()},body:s})}catch(C){throw le("gemini request error:",C),C}if(!l.ok){let C=await l.text();return le(`Gemini API error response: ${l.status} ${l.statusText}`,{url:a,status:l.status,errorResponse:C}),xCe("Gemini API error","Gemini",l.status,l.statusText,C)}let c=n.stream===!0,f=i["x-agent-id"],A={request:{url:a,method:r.method,headers:fA(r.headers),body:n},response:{status:l.status,statusText:l.statusText,headers:fA(l.headers)},openai:{request:{body:o},response:{}}},m=mR(l.body),g=new Response(m.stream,{status:l.status,statusText:l.statusText,headers:iU(l.headers)}),E=await e0e.transformResponseIn(g),_=mR(E.body);return Promise.all([m.done,_.done]).then(async([C,S])=>{try{let T=c?jXe(C):JSON.parse(C),x=c?await WL(S):JSON.parse(S);nU({...A,openai:{...A.openai,response:{body:T}},response:{...A.response,body:x}},f)}catch(T){le("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+T?.stack)}}).catch(C=>le("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+C)),new Response(_.stream,{status:E.status,statusText:E.statusText,headers:E.headers})}}function hzr(e){return async(t,r)=>{if(!vK(t,r))return e(t,r);let n=r.body;if(r.body)try{let f=JSON.parse(r.body);n=JSON.stringify(f)}catch{}let i=fA(r.headers);["1","true"].includes(String(process.env.HAWA_CODE_X_API_KEY_DISABLED??"").toLowerCase())&&(delete i["x-api-key"],delete i["X-API-Key"]),["1","true"].includes(String(process.env.HAWA_CODE_AUTH_DISABLED??"").toLowerCase())&&(delete i.authorization,delete i.Authorization),delete i["content-length"];let a=await e(t,{method:r.method,headers:i,body:n});if(!a.ok){let f=await a.text();le(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof IT?t.toString():t.url,status:a.status,errorResponse:f});let A;try{let m=JSON.parse(f);A={type:"error",error:{type:"api_error",message:m.error?.message||m.message||`API error: ${a.statusText}`,code:m.error?.code||m.code||`API_${a.status}_ERROR`}},m.error?.details&&(A.error.details=m.error.details)}catch{A={type:"error",error:{type:"api_error",message:`API error: ${a.statusText}`,code:`API_${a.status}_ERROR`}}}return new Response(JSON.stringify(A),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"application/json"}})}let u=a.clone(),l=!(Object.hasOwn(JSON.parse(n),"stream")&&!JSON.parse(n).stream),c={request:{url:typeof t=="string"?t:t instanceof IT?t.toString():t.url,method:r.method,headers:fA(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:fA(a.headers)}};return(async()=>{if(l){let m=await a.text();c.response.body=await WL(m)}else c.response.body=await a.json();let A=fA(r.headers)["x-agent-id"];pG(A,c),mG(A,{request:c.request.body.messages,response:c.response.body.content})})().catch(f=>le(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
|
|
753
753
|
Stack trace: `+f.stack)),new Response(u.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var DCe=null,_lt=!1;function Ezr(){if(_lt)return DCe;_lt=!0;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(DCe=new Clt.ProxyAgent({uri:e}),qt(`[proxy] using proxy: ${e}`)),DCe}function _zr(){let e=Ezr();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function DK(e){let t=e||process.env.API_TYPE,r=_zr();switch(t){case"openai":return mzr(r);case"openai-responses":return Azr(r);case"gemini":return gzr(r);default:return hzr(r)}}var Szr=ie(Ce(),1);function Slt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=yzr(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function yzr(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||bzr(t)?0:Czr(t)?2:1}function bzr(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function Czr(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function pA(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function eC(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}He();_d();var S0={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0};function xK(e,t){S0.totalCost+=e,S0.totalAPIDuration+=t}function wK(e,t){S0.inputTokens+=e,S0.outputTokens+=t,Ci.emit("token:change",{inputTokens:S0.inputTokens,outputTokens:S0.outputTokens})}function Izr(){return Date.now()-S0.startTime}function Tzr(e){return`$${e>.5?vzr(e,100).toFixed(2):e.toFixed(4)}`}function Ilt(){return _r.grey(`Total cost: ${Tzr(S0.totalCost)}
|
|
754
754
|
Total duration (API): ${pA(S0.totalAPIDuration)}
|
|
755
|
-
Total duration (wall): ${pA(Izr())}`)}function vzr(e,t){return Math.round(e*t)/t}He();Ue();Ue();var NCe="1.37.
|
|
755
|
+
Total duration (wall): ${pA(Izr())}`)}function vzr(e,t){return Math.round(e*t)/t}He();Ue();Ue();var NCe="1.37.2";globalThis.MACRO={VERSION:NCe,PACKAGE_URL:`@dahawa/${Ao}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var BK=process.env.HAWA_CODE_USER_AGENT||`${Ao}/${NCe} (${process.env.USER_TYPE})`;import{randomUUID as sD}from"crypto";var Dzr=()=>[],xzr=()=>{};function NK(){return Dzr}function Tlt(){return xzr}He();ir();Br();He();Ue();import{existsSync as D0,readdirSync as KVr,statSync as JVr}from"fs";import{join as nC,relative as ZVr}from"path";import{homedir as Kdt}from"os";import{platform as XVr}from"process";import{readFile as iC}from"fs/promises";Br();I0();kr();import{join as Ozr,sep as kzr}from"path";function qp(){if(!Hp())return!1;try{let e=yr();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function Tf(){return(Ozr(Fe(),".hcode","team-memory")+kzr).normalize("NFC")}function OCe(e){let t=e.normalize("NFC"),r=Tf();return t.startsWith(r)}var Jdt=ie($K(),1);xi();var Ydt=ie($K(),1);Br();Ue();He();od();import{readFile as $dt}from"fs/promises";import{existsSync as KCe,readdirSync as YVr,statSync as jVr}from"fs";import{join as JCe,relative as jdt}from"path";import{homedir as VVr}from"os";function zdt(e){try{let t=(0,Ydt.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return we(t),{paths:[],content:e.trim()}}}function WVr(e,t){return t.length===0?!0:t.some(r=>{try{return Xu(e,r,{matchBase:!0,dot:!0})}catch(n){return we(n),!1}})}function ZCe(e){let t=[];try{if(!KCe(e))return t;let r=YVr(e);for(let n of r){let i=JCe(e,n),o=jVr(i);o.isDirectory()?t.push(...ZCe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){we(r)}return t}async function Vdt(){let e=[];try{let t=JCe(VVr(),dn,"rules");if(KCe(t)){let r=ZCe(t);for(let n of r)try{let i=await $dt(n,"utf-8"),{paths:o,content:s}=zdt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){we(i)}}}catch(t){we(t)}try{let t=JCe(Fe(),dn,"rules");if(KCe(t)){let r=ZCe(t);for(let n of r)try{let i=await $dt(n,"utf-8"),{paths:o,content:s}=zdt(i);o.length>0&&e.push({filePath:jdt(Fe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){we(i)}}}catch(t){we(t)}return e}function Wdt(e,t){e=cY(e);let r=cY(Fe()),n=e.startsWith(r)?jdt(r,e):e;return t.filter(i=>WVr(n,i.paths))}var eWr=`# hawaCodeMd
|
|
756
756
|
Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function tWr(e="default"){let r=ze.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(i=>{let o=i.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${i.filePath} (${o}):
|
|
757
757
|
|
|
758
758
|
${i.content}`}).join(`
|
|
@@ -1015,7 +1015,7 @@ try {
|
|
|
1015
1015
|
`],{encoding:"utf8",maxBuffer:DAt,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function KZr(){try{let e=$U("where",["pwsh.exe"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/)[0];if(e)return e}catch{}return"powershell.exe"}var JZr="[Image pasted]";function NAt(e){return function(t){return(new Map(e).get(t)??(()=>{}))(t)}}function OAt({value:e,onChange:t,onSubmit:r,onExit:n,onExitMessage:i,onMessage:o,onHistoryUp:s,onHistoryDown:a,onHistoryReset:u,mask:l="",multiline:c=!1,cursorChar:f,invert:A,columns:m,onImagePaste:g,disableCursorMovementForUpDownKeys:E=!1,externalOffset:_,onOffsetChange:C}){let S=_,T=C,x=GU.fromText(e,m,S),[O,q]=(0,RAt.useState)(null);function $(){O&&(clearTimeout(O),q(null),o?.(!1))}let H=GT(ce=>{$(),i?.(ce,"Ctrl-C")},()=>n?.(),()=>{e&&(t(""),u?.())}),L=GT(ce=>{$(),o?.(!!e&&ce,"Press Escape again to clear")},()=>{e&&t("")});function Y(){return GU.fromText("",m,0)}let z=GT(ce=>i?.(ce,"Ctrl-D"),()=>n?.());function fe(){return $(),x.text===""?(z(),x):x.del()}function me(){if(l)return x;let ce=BAt();return ce===null?(wAt()&&(o?.(!0,xAt),$(),q(setTimeout(()=>{o?.(!1)},4e3))),x):(g?.(ce),x.insert(JZr))}let M=NAt([["a",()=>x.startOfLine()],["b",()=>x.left()],["c",H],["d",fe],["e",()=>x.endOfLine()],["f",()=>x.right()],["h",()=>($(),x.backspace())],["k",()=>x.deleteToLineEnd()],["l",()=>Y()],["n",()=>ee()],["p",()=>ae()],["u",()=>x.deleteToLineStart()],["v",me],["w",()=>x.deleteWordBefore()],["o",me]]),ue=NAt([["b",()=>x.prevWord()],["f",()=>x.nextWord()],["d",()=>x.deleteWordAfter()]]);function Ae(ce){if(c&&x.offset>0&&x.text[x.offset-1]==="\\")return x.backspace().insert(`
|
|
1016
1016
|
`);if(ce.meta)return x.insert(`
|
|
1017
1017
|
`);r?.(e)}function ae(){if(E)return s?.(),x;let ce=x.up();return ce.equals(x)&&s?.(),ce}function ee(){if(E)return a?.(),x;let ce=x.down();return ce.equals(x)&&a?.(),ce}function ve(ce,Ge){if(Ge.tab)return;if(Ge.backspace||Ge.delete||ce==="\b"||ce==="\x7F"||ce==="\b"){let K=x.backspace();x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}if(!Ge.ctrl&&!Ge.meta&&ce.length>1){let K=x.insert(ce);x.equals(K)||(T(K.offset),x.text!==K.text&&t(K.text));return}let Ee=Se(Ge)(ce);Ee&&(x.equals(Ee)||(T(Ee.offset),x.text!==Ee.text&&t(Ee.text)))}function Se(ce){if(ce.backspace||ce.delete)return $(),()=>x.backspace();switch(!0){case ce.escape:return L;case(ce.leftArrow&&(ce.ctrl||ce.meta||"fn"in ce&&ce.fn)):return()=>x.prevWord();case(ce.rightArrow&&(ce.ctrl||ce.meta||"fn"in ce&&ce.fn)):return()=>x.nextWord();case ce.ctrl:return M;case("home"in ce&&ce.home):return()=>x.startOfLine();case("end"in ce&&ce.end):return()=>x.endOfLine();case ce.pageDown:return()=>x.endOfLine();case ce.pageUp:return()=>x.startOfLine();case ce.meta:return ue;case ce.return:return()=>Ae(ce);case ce.upArrow:return ae;case ce.downArrow:return ee;case ce.leftArrow:return()=>x.left();case ce.rightArrow:return()=>x.right()}return function(Ge){switch(!0){case(Ge=="\x1B[H"||Ge=="\x1B[1~"):return x.startOfLine();case(Ge=="\x1B[F"||Ge=="\x1B[4~"):return x.endOfLine();case(Ge==="\b"||Ge==="\x7F"||Ge==="\b"):return $(),x.backspace();default:return x.insert(Ge.replace(/\r/g,`
|
|
1018
|
-
`))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function zU({value:e,placeholder:t="",focus:r=!0,mask:n,multiline:i=!1,highlightPastedText:o=!1,showCursor:s=!0,onChange:a,onSubmit:u,onExit:l,onHistoryUp:c,onHistoryDown:f,onExitMessage:A,onMessage:m,onHistoryReset:g,columns:E,onImagePaste:_,onPaste:C,isDimmed:S=!1,disableCursorMovementForUpDownKeys:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=OAt({value:e,onChange:a,onSubmit:u,onExit:l,onExitMessage:A,onMessage:m,onHistoryReset:g,onHistoryUp:c,onHistoryDown:f,focus:r,mask:n,multiline:i,cursorChar:s?" ":"",highlightPastedText:o,invert:ue=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(_e().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=uSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(_e().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(_e().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return uSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var lSe=ie(Ce(),1),YU=ie(Ce(),1);AU();_d();xi();HT();kr();var kAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function VT(){let e=[...kAt,...[...kAt].reverse()],[t,r]=(0,YU.useState)(0);return(0,YU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),lSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},lSe.createElement(v,{color:_e().claude},e[t]))}xi();function lC(){return ze.getSessionContext().window_size?{...ze.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Ue();import{homedir as t3}from"os";import{join as JR}from"path";import{existsSync as r3,mkdirSync as Sht,appendFileSync as Cht,readFileSync as Iht,constants as Vtn,writeFileSync as Wtn,unlinkSync as Tht,statSync as Ktn}from"fs";import{platform as vht}from"process";He();import{accessSync as Jtn}from"fs";He();var pyi=ie(BSe(),1);var jtn="1.37.
|
|
1018
|
+
`))}}}return{onInput:ve,renderedValue:x.render(f,l,A),offset:S,setOffset:T}}function zU({value:e,placeholder:t="",focus:r=!0,mask:n,multiline:i=!1,highlightPastedText:o=!1,showCursor:s=!0,onChange:a,onSubmit:u,onExit:l,onHistoryUp:c,onHistoryDown:f,onExitMessage:A,onMessage:m,onHistoryReset:g,columns:E,onImagePaste:_,onPaste:C,isDimmed:S=!1,disableCursorMovementForUpDownKeys:T=!1,cursorOffset:x,onChangeCursorOffset:O}){let{onInput:q,renderedValue:$}=OAt({value:e,onChange:a,onSubmit:u,onExit:l,onExitMessage:A,onMessage:m,onHistoryReset:g,onHistoryUp:c,onHistoryDown:f,focus:r,mask:n,multiline:i,cursorChar:s?" ":"",highlightPastedText:o,invert:ue=>_r.bgHex("#ffffff").hex("#000000")(ue),themeText:ue=>_r.hex(_e().text)(ue),columns:E,onImagePaste:_,disableCursorMovementForUpDownKeys:T,externalOffset:x,onOffsetChange:O}),[H,L]=uSe.default.useState({chunks:[],timeoutId:null}),Y=ue=>(ue&&clearTimeout(ue),setTimeout(()=>{L(({chunks:Ae})=>{let ae=Ae.join("");return Promise.resolve().then(()=>C(ae)),{chunks:[],timeoutId:null}})},100));dr((ue,Ae)=>{if(C&&(ue.length>10||H.timeoutId)){L(({chunks:ae,timeoutId:ee})=>({chunks:[...ae,ue],timeoutId:Y(ee)}));return}q(ue,Ae)},{isActive:r});let fe=t?_r.hex(_e().secondaryText)(t):void 0,me=ue=>_r.bgHex("#ffffff").hex("#000000")(ue);s&&r&&(fe=t.length>0?me(t[0])+_r.hex(_e().secondaryText)(t.slice(1)):me(" "));let M=e.length==0&&t;return uSe.default.createElement(v,{wrap:"truncate-end",dimColor:S},M?fe:$)}var lSe=ie(Ce(),1),YU=ie(Ce(),1);AU();_d();xi();HT();kr();var kAt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function VT(){let e=[...kAt,...[...kAt].reverse()],[t,r]=(0,YU.useState)(0);return(0,YU.useEffect)(()=>{let n=setInterval(()=>{r(i=>(i+1)%e.length)},120);return()=>clearInterval(n)},[e.length]),lSe.createElement(N,{flexWrap:"nowrap",height:1,width:2},lSe.createElement(v,{color:_e().claude},e[t]))}xi();function lC(){return ze.getSessionContext().window_size?{...ze.getSessionContext().window_size}:{columns:process.stdout.columns||80,rows:process.stdout.rows||24}}Ue();import{homedir as t3}from"os";import{join as JR}from"path";import{existsSync as r3,mkdirSync as Sht,appendFileSync as Cht,readFileSync as Iht,constants as Vtn,writeFileSync as Wtn,unlinkSync as Tht,statSync as Ktn}from"fs";import{platform as vht}from"process";He();import{accessSync as Jtn}from"fs";He();var pyi=ie(BSe(),1);var jtn="1.37.2",e3={VERSION:jtn,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"};Ue();var KT=JR(DI,".update.lock"),Ztn=300*1e3;function Dht(){try{if(r3(DI)||Sht(DI,{recursive:!0}),r3(KT)){let e=Ktn(KT);if(Date.now()-e.mtimeMs<Ztn)return!1;try{Tht(KT)}catch(r){return we(`Failed to remove stale lock file: ${r}`),!1}}return Wtn(KT,`${process.pid}`,"utf8"),!0}catch(e){return we(`Failed to acquire lock: ${e}`),!1}}function xht(){try{r3(KT)&&Iht(KT,"utf8")===`${process.pid}`&&Tht(KT)}catch(e){we(`Failed to release lock: ${e}`)}}async function NSe(){try{let e=await Wn("npm -g config get prefix");if(e.code!==0)return we("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{Jtn(t,Vtn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(we("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return we(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function wht(e){if(!Dht())throw dt("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:e3.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{r3(e)||Sht(e,{recursive:!0});let t=await Wn(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
|
|
1019
1019
|
# npm global path
|
|
1020
1020
|
export PATH="${e}/bin:$PATH"
|
|
1021
1021
|
`;if(vht==="win32"){let n=await Wn(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[JR(t3(),".bashrc"),JR(t3(),".bash_profile"),JR(t3(),".zshrc"),JR(t3(),".config","fish","config.fish")];for(let i of n)if(r3(i))try{if(!Iht(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
|