@mk-co/neox-cli 2.0.61 → 2.0.63
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/dist/cli/main.js +63 -63
- package/package.json +1 -1
package/dist/cli/main.js
CHANGED
|
@@ -3,7 +3,7 @@ import*as Ct from'fs';import Ct__default,{readFileSync,realpathSync,existsSync,m
|
|
|
3
3
|
`)}function QI(s){return s.replace(/'/g,"'\\''")}function xp(s,e,t){if(process.env.CLI_DEBUG!=="1")return;let n=vr(s,e,t);p.info("CURL","=== LLM Request CURL Command ==="),p.info("CURL",n),p.info("CURL","=== End CURL Command ==="),process.env.CLI_DEBUG_CONSOLE==="1"&&(console.log(`
|
|
4
4
|
[CURL] === LLM Request CURL Command ===`),console.log(n),console.log(`[CURL] === End CURL Command ===
|
|
5
5
|
`));}function de(s,e,t){if(process.env.CLI_DEBUG==="1"&&(p.debug(s,e,t),process.env.CLI_DEBUG_CONSOLE==="1")){let n=s?`[${s}]`:"";t!==void 0?console.log(n,e,t):console.log(n,e);}}function Sp(){process.on("uncaughtException",s=>{p.error("CRASH","Uncaught Exception",{name:s.name,message:s.message,stack:s.stack}),setTimeout(()=>process.exit(1),100);}),process.on("unhandledRejection",s=>{p.error("CRASH","Unhandled Rejection",{reason:s instanceof Error?{name:s.name,message:s.message,stack:s.stack}:s});});try{process.on("SIGTTIN","ignore"),process.on("SIGTTOU","ignore"),p.info("SIGNAL","TTY control signals (SIGTTIN/SIGTTOU) initialized in crashHandler");}catch{}process.on("exit",()=>{p.close();});}var wp,p,YI,Tp,hn,te=R(()=>{wp=class{logDir;enabled=true;initialized=false;writeStream=null;currentLogFile=null;backpressured=false;constructor(){this.logDir=Ie__default.join(ho__default.homedir(),".neox","logs");}init(){if(!this.initialized)try{Ct__default.existsSync(this.logDir)||Ct__default.mkdirSync(this.logDir,{recursive:!0}),this.initialized=!0;}catch{this.enabled=false;}}getLogFilePath(){let e=new Date().toISOString().split("T")[0];return Ie__default.join(this.logDir,`cli-${e}.log`)}ensureStream(){if(!this.enabled||(this.init(),!this.initialized))return null;let e=this.getLogFilePath();return this.currentLogFile!==e&&(this.writeStream&&this.writeStream.end(),this.writeStream=Ct__default.createWriteStream(e,{flags:"a"}),this.writeStream.on("error",()=>{this.enabled=false,this.currentLogFile=null;let t=this.writeStream;this.writeStream=null;try{t?.destroy();}catch{}}),this.currentLogFile=e),this.writeStream}formatLocalTime(){let e=new Date,t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),o=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0"),a=String(e.getSeconds()).padStart(2,"0"),l=String(e.getMilliseconds()).padStart(3,"0");return `${t}-${n}-${r} ${o}:${i}:${a}.${l}`}formatMessage(e,t,n,r){let o=this.formatLocalTime(),i=e.toUpperCase().padEnd(5),a=t?`[${t}]`:"",l=`${o} ${i} ${a} ${n}`;if(r!==void 0)try{let c=this.safeStringify(r);l+=` ${c}`;}catch{l+=" [Serialization Error]";}return l+`
|
|
6
|
-
`}safeStringify(e){let t=new WeakSet;return JSON.stringify(e,(n,r)=>{if(typeof r=="object"&&r!==null){if(t.has(r))return "[Circular]";t.add(r);}return n==="parser"||n==="socket"||n==="_httpMessage"||n==="req"||n==="res"?"[Omitted]":r&&r.type==="Buffer"&&Array.isArray(r.data)?"[Buffer]":typeof r=="function"?"[Function]":r instanceof Error?{name:r.name,message:r.message,stack:r.stack}:r})}write(e,t,n,r){if(!this.enabled||this.backpressured&&e==="debug")return;let o=this.formatMessage(e,t,n,r);if(process.env.CLI_DEBUG_CONSOLE==="1")try{process.stderr.write(o);}catch{}let i=this.ensureStream();if(!i)return;!i.write(o)&&!this.backpressured&&(this.backpressured=true,i.once("drain",()=>{this.backpressured=false;}));}debug(e,t,n){this.write("debug",e,t,n);}info(e,t,n){this.write("info",e,t,n);}warn(e,t,n){this.write("warn",e,t,n);}error(e,t,n){this.write("error",e,t,n);}log(e,...t){let n=t.map(r=>{if(typeof r=="string")return r;try{return this.safeStringify(r)}catch{return String(r)}}).join(" ");this.write("info",e,n);}setEnabled(e){this.enabled=e;}getLogDir(){return this.logDir}getCurrentLogFile(){return this.currentLogFile}close(){this.writeStream&&(this.writeStream.end(),this.writeStream=null,this.currentLogFile=null);}},p=new wp,YI=new Set(["api_key","apikey","authorization","token","access_token","refresh_token","password","secret"]);Tp=class{intervalId=null;lastHeartbeat=Date.now();heartbeatCount=0;stdinPausedCount=0;enabled=false;pid=process.pid;start(e=5e3){if(!(this.intervalId||process.env.CLI_DEBUG!=="1")){if(!process.stdin.isTTY){p.debug("HEALTH",`Skipping health monitor in non-TTY process (pid=${this.pid})`);return}this.enabled=true,this.lastHeartbeat=Date.now(),this.heartbeatCount=0,this.stdinPausedCount=0,p.info("HEALTH",`Health monitor started (interval: ${e}ms, pid=${this.pid})`),this.intervalId=setInterval(()=>{this.checkHealth();},e),this.intervalId.unref();}}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null,this.enabled=false,p.info("HEALTH","Health monitor stopped"));}stdinDestroyedCount=0;checkHealth(){let e=Date.now(),t=e-this.lastHeartbeat;this.lastHeartbeat=e,this.heartbeatCount++;let n=this.getStdinState();if(n.isPaused?this.stdinPausedCount++:this.stdinPausedCount=0,n.destroyed){if(this.stdinDestroyedCount++,this.stdinDestroyedCount>=3){p.warn("HEALTH",`[pid=${this.pid}] stdin destroyed for ${this.stdinDestroyedCount} checks, exiting to avoid zombie process`),this.stop(),setTimeout(()=>{process.exit(0);},100);return}}else this.stdinDestroyedCount=0;p.debug("HEALTH",`[pid=${this.pid}] Heartbeat #${this.heartbeatCount}`,{elapsed:`${t}ms`,stdin:n,stdinPausedCount:this.stdinPausedCount}),this.stdinPausedCount>=3&&p.warn("HEALTH",`[pid=${this.pid}] \u26A0\uFE0F stdin has been paused for ${this.stdinPausedCount} consecutive checks!`,{stdin:n}),t>1e4&&p.warn("HEALTH",`[pid=${this.pid}] \u26A0\uFE0F Event loop delay detected: ${t}ms (expected ~5000ms)`);}getStdinState(){let e=process.stdin;return {isPaused:typeof e.isPaused=="function"?e.isPaused():false,isTTY:!!e.isTTY,isRaw:!!e.isRaw,readable:e.readable,destroyed:e.destroyed}}logStdinState(e){if(process.env.CLI_DEBUG!=="1")return;let t=this.getStdinState();p.debug("STDIN",`[${e}] stdin state`,t);}logInkState(e,t){process.env.CLI_DEBUG==="1"&&p.debug("INK",`[${e}]`,t);}},hn=new Tp;});var Tb={};jr(Tb,{default:()=>yE});var yE,xb=R(()=>{yE={};});var Ab=kl((dG,TE)=>{TE.exports={single:{topLeft:"\u250C",top:"\u2500",topRight:"\u2510",right:"\u2502",bottomRight:"\u2518",bottom:"\u2500",bottomLeft:"\u2514",left:"\u2502"},double:{topLeft:"\u2554",top:"\u2550",topRight:"\u2557",right:"\u2551",bottomRight:"\u255D",bottom:"\u2550",bottomLeft:"\u255A",left:"\u2551"},round:{topLeft:"\u256D",top:"\u2500",topRight:"\u256E",right:"\u2502",bottomRight:"\u256F",bottom:"\u2500",bottomLeft:"\u2570",left:"\u2502"},bold:{topLeft:"\u250F",top:"\u2501",topRight:"\u2513",right:"\u2503",bottomRight:"\u251B",bottom:"\u2501",bottomLeft:"\u2517",left:"\u2503"},singleDouble:{topLeft:"\u2553",top:"\u2500",topRight:"\u2556",right:"\u2551",bottomRight:"\u255C",bottom:"\u2500",bottomLeft:"\u2559",left:"\u2551"},doubleSingle:{topLeft:"\u2552",top:"\u2550",topRight:"\u2555",right:"\u2502",bottomRight:"\u255B",bottom:"\u2550",bottomLeft:"\u2558",left:"\u2502"},classic:{topLeft:"+",top:"-",topRight:"+",right:"|",bottomRight:"+",bottom:"-",bottomLeft:"+",left:"|"},arrow:{topLeft:"\u2198",top:"\u2193",topRight:"\u2199",right:"\u2190",bottomRight:"\u2196",bottom:"\u2191",bottomLeft:"\u2197",left:"\u2192"}};});var Mb=kl((pG,Op)=>{var Pb=Ab();Op.exports=Pb;Op.exports.default=Pb;});var rv={};jr(rv,{_resetCache:()=>uA,getPlatformInfo:()=>cA,getWSLVersion:()=>Zb,getWindowsCommand:()=>aA,getWindowsHomeFromWSL:()=>tv,isLinux:()=>oA,isLinuxLike:()=>iA,isMac:()=>ev,isWSL:()=>ht,isWindows:()=>Hl,isWindowsInteropEnabled:()=>lA,windowsToWslPath:()=>nv,wslToWindowsPath:()=>
|
|
6
|
+
`}safeStringify(e){let t=new WeakSet;return JSON.stringify(e,(n,r)=>{if(typeof r=="object"&&r!==null){if(t.has(r))return "[Circular]";t.add(r);}return n==="parser"||n==="socket"||n==="_httpMessage"||n==="req"||n==="res"?"[Omitted]":r&&r.type==="Buffer"&&Array.isArray(r.data)?"[Buffer]":typeof r=="function"?"[Function]":r instanceof Error?{name:r.name,message:r.message,stack:r.stack}:r})}write(e,t,n,r){if(!this.enabled||this.backpressured&&e==="debug")return;let o=this.formatMessage(e,t,n,r);if(process.env.CLI_DEBUG_CONSOLE==="1")try{process.stderr.write(o);}catch{}let i=this.ensureStream();if(!i)return;!i.write(o)&&!this.backpressured&&(this.backpressured=true,i.once("drain",()=>{this.backpressured=false;}));}debug(e,t,n){this.write("debug",e,t,n);}info(e,t,n){this.write("info",e,t,n);}warn(e,t,n){this.write("warn",e,t,n);}error(e,t,n){this.write("error",e,t,n);}log(e,...t){let n=t.map(r=>{if(typeof r=="string")return r;try{return this.safeStringify(r)}catch{return String(r)}}).join(" ");this.write("info",e,n);}setEnabled(e){this.enabled=e;}getLogDir(){return this.logDir}getCurrentLogFile(){return this.currentLogFile}close(){this.writeStream&&(this.writeStream.end(),this.writeStream=null,this.currentLogFile=null);}},p=new wp,YI=new Set(["api_key","apikey","authorization","token","access_token","refresh_token","password","secret"]);Tp=class{intervalId=null;lastHeartbeat=Date.now();heartbeatCount=0;stdinPausedCount=0;enabled=false;pid=process.pid;start(e=5e3){if(!(this.intervalId||process.env.CLI_DEBUG!=="1")){if(!process.stdin.isTTY){p.debug("HEALTH",`Skipping health monitor in non-TTY process (pid=${this.pid})`);return}this.enabled=true,this.lastHeartbeat=Date.now(),this.heartbeatCount=0,this.stdinPausedCount=0,p.info("HEALTH",`Health monitor started (interval: ${e}ms, pid=${this.pid})`),this.intervalId=setInterval(()=>{this.checkHealth();},e),this.intervalId.unref();}}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null,this.enabled=false,p.info("HEALTH","Health monitor stopped"));}stdinDestroyedCount=0;checkHealth(){let e=Date.now(),t=e-this.lastHeartbeat;this.lastHeartbeat=e,this.heartbeatCount++;let n=this.getStdinState();if(n.isPaused?this.stdinPausedCount++:this.stdinPausedCount=0,n.destroyed){if(this.stdinDestroyedCount++,this.stdinDestroyedCount>=3){p.warn("HEALTH",`[pid=${this.pid}] stdin destroyed for ${this.stdinDestroyedCount} checks, exiting to avoid zombie process`),this.stop(),setTimeout(()=>{process.exit(0);},100);return}}else this.stdinDestroyedCount=0;p.debug("HEALTH",`[pid=${this.pid}] Heartbeat #${this.heartbeatCount}`,{elapsed:`${t}ms`,stdin:n,stdinPausedCount:this.stdinPausedCount}),this.stdinPausedCount>=3&&p.warn("HEALTH",`[pid=${this.pid}] \u26A0\uFE0F stdin has been paused for ${this.stdinPausedCount} consecutive checks!`,{stdin:n}),t>1e4&&p.warn("HEALTH",`[pid=${this.pid}] \u26A0\uFE0F Event loop delay detected: ${t}ms (expected ~5000ms)`);}getStdinState(){let e=process.stdin;return {isPaused:typeof e.isPaused=="function"?e.isPaused():false,isTTY:!!e.isTTY,isRaw:!!e.isRaw,readable:e.readable,destroyed:e.destroyed}}logStdinState(e){if(process.env.CLI_DEBUG!=="1")return;let t=this.getStdinState();p.debug("STDIN",`[${e}] stdin state`,t);}logInkState(e,t){process.env.CLI_DEBUG==="1"&&p.debug("INK",`[${e}]`,t);}},hn=new Tp;});var Tb={};jr(Tb,{default:()=>yE});var yE,xb=R(()=>{yE={};});var Ab=kl((dG,TE)=>{TE.exports={single:{topLeft:"\u250C",top:"\u2500",topRight:"\u2510",right:"\u2502",bottomRight:"\u2518",bottom:"\u2500",bottomLeft:"\u2514",left:"\u2502"},double:{topLeft:"\u2554",top:"\u2550",topRight:"\u2557",right:"\u2551",bottomRight:"\u255D",bottom:"\u2550",bottomLeft:"\u255A",left:"\u2551"},round:{topLeft:"\u256D",top:"\u2500",topRight:"\u256E",right:"\u2502",bottomRight:"\u256F",bottom:"\u2500",bottomLeft:"\u2570",left:"\u2502"},bold:{topLeft:"\u250F",top:"\u2501",topRight:"\u2513",right:"\u2503",bottomRight:"\u251B",bottom:"\u2501",bottomLeft:"\u2517",left:"\u2503"},singleDouble:{topLeft:"\u2553",top:"\u2500",topRight:"\u2556",right:"\u2551",bottomRight:"\u255C",bottom:"\u2500",bottomLeft:"\u2559",left:"\u2551"},doubleSingle:{topLeft:"\u2552",top:"\u2550",topRight:"\u2555",right:"\u2502",bottomRight:"\u255B",bottom:"\u2550",bottomLeft:"\u2558",left:"\u2502"},classic:{topLeft:"+",top:"-",topRight:"+",right:"|",bottomRight:"+",bottom:"-",bottomLeft:"+",left:"|"},arrow:{topLeft:"\u2198",top:"\u2193",topRight:"\u2199",right:"\u2190",bottomRight:"\u2196",bottom:"\u2191",bottomLeft:"\u2197",left:"\u2192"}};});var Mb=kl((pG,Op)=>{var Pb=Ab();Op.exports=Pb;Op.exports.default=Pb;});var rv={};jr(rv,{_resetCache:()=>uA,getPlatformInfo:()=>cA,getWSLVersion:()=>Zb,getWindowsCommand:()=>aA,getWindowsHomeFromWSL:()=>tv,isLinux:()=>oA,isLinuxLike:()=>iA,isMac:()=>ev,isWSL:()=>ht,isWindows:()=>Hl,isWindowsInteropEnabled:()=>lA,windowsToWslPath:()=>nv,wslToWindowsPath:()=>Ss});function ht(){if(Hr!==null)return Hr;if(process.platform!=="linux")return Hr=false,false;if(process.env.WSL_DISTRO_NAME||process.env.WSLENV||process.env.WSL_INTEROP)return Hr=true,true;try{let s=Ct__default.readFileSync("/proc/version","utf-8").toLowerCase();if(s.includes("microsoft")||s.includes("wsl"))return Hr=!0,!0}catch{}try{if(Ct__default.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop"))return Hr=!0,!0}catch{}return Hr=false,false}function Zb(){if(!ht())return null;if(xs!==null)return xs;try{let s=Ct__default.readFileSync("/proc/version","utf-8").toLowerCase();s.includes("wsl2")||s.includes("microsoft-standard")?xs=2:xs=1;}catch{xs=1;}return xs}function Hl(){return process.platform==="win32"}function ev(){return process.platform==="darwin"}function oA(){return process.platform==="linux"&&!ht()}function iA(){return process.platform==="linux"}function tv(){if(!ht())return null;if(process.env.USERPROFILE)return nv(process.env.USERPROFILE);let s=process.env.WSL_USER||process.env.USER;if(s){let e=[`/mnt/c/Users/${s}`,`/mnt/d/Users/${s}`];for(let t of e)try{if(Ct__default.existsSync(t))return t}catch{continue}}return null}function nv(s){if(!s||s.startsWith("/"))return s;let e=s.match(/^([a-zA-Z]):[\\\/](.*)$/);if(e){let t=e[1].toLowerCase(),n=e[2].replace(/\\/g,"/");return `/mnt/${t}/${n}`}return s.startsWith("\\\\"),s}function Ss(s){if(!s)return s;let e=s.match(/^\/mnt\/([a-zA-Z])\/(.*)$/);if(e){let r=e[1].toUpperCase(),o=e[2].replace(/\//g,"\\");return `${r}:\\${o}`}let t=process.env.WSL_DISTRO_NAME||"Ubuntu",n=s.replace(/\//g,"\\");return `\\\\wsl$\\${t}${n}`}function aA(s){return ht()&&{powershell:"powershell.exe",cmd:"cmd.exe",explorer:"explorer.exe",clip:"clip.exe",notepad:"notepad.exe",code:"code.exe"}[s]||s}function lA(){if(!ht())return false;try{return Ct__default.existsSync("/mnt/c/Windows/System32/cmd.exe")}catch{return false}}function cA(){let s=ht(),e;return s?e="wsl":Hl()?e="windows":ev()?e="mac":e="linux",{platform:process.platform,arch:process.arch,isWSL:s,wslVersion:Zb(),effectivePlatform:e,homeDir:ho__default.homedir(),windowsHomeDir:tv()}}function uA(){Hr=null,xs=null;}var Hr,xs,qr=R(()=>{Hr=null,xs=null;});var lv={};jr(lv,{hasClipboardImage:()=>ov,imageFileToBase64:()=>wA,imageFileToBase64Data:()=>Vp,pasteImageAsBase64:()=>Yp,saveClipboardImage:()=>iv,tryPasteClipboardImage:()=>av});function dA(){if(process.platform!=="darwin")return null;if(sv)return Kp;sv=true;let s=Ie.join(ho.tmpdir(),"neox-clipboard-tool");if(Ct.existsSync(s))return Kp=s,s;let e=`
|
|
7
7
|
import Cocoa
|
|
8
8
|
let pb = NSPasteboard.general
|
|
9
9
|
if let image = pb.readObjects(forClasses: [NSImage.self], options: nil)?.first as? NSImage {
|
|
@@ -30,7 +30,7 @@ if ($img) {
|
|
|
30
30
|
$img.Save("${e.replace(/\\/g,"\\\\")}")
|
|
31
31
|
Write-Host "OK"
|
|
32
32
|
}
|
|
33
|
-
`;if(execSync(`powershell -command "${t}"`,{encoding:"utf-8",timeout:5e3}).includes("OK")&&Ct.existsSync(e))return p.info("CLIPBOARD",`\u2713 Saved clipboard image to ${e}`),e}catch(t){p.debug("CLIPBOARD","Failed to save clipboard image",{error:t});}return null}function yA(){try{return execSync("xclip -selection clipboard -t TARGETS -o 2>/dev/null | grep -i png",{encoding:"utf-8",timeout:2e3}),!0}catch{return false}}async function bA(){let s=ho.tmpdir(),e=Ie.join(s,`neox-clipboard-${Date.now()}.png`);try{if(execSync(`xclip -selection clipboard -t image/png -o > "${e}"`,{timeout:5e3,shell:"/bin/bash"}),Ct.existsSync(e)&&Ct.statSync(e).size>0)return p.info("CLIPBOARD",`\u2713 Saved clipboard image to ${e}`),e}catch(t){p.debug("CLIPBOARD","Failed to save clipboard image",{error:t});}return null}function vA(){try{return execSync('powershell.exe -NoProfile -Command "Get-Clipboard -Format Image"',{encoding:"utf-8",timeout:3e3}).trim().length>0}catch{return p.debug("CLIPBOARD","WSL: Failed to check Windows clipboard"),false}}async function CA(){let s=ho.tmpdir(),e=Ie.join(s,`neox-clipboard-${Date.now()}.png`),t=
|
|
33
|
+
`;if(execSync(`powershell -command "${t}"`,{encoding:"utf-8",timeout:5e3}).includes("OK")&&Ct.existsSync(e))return p.info("CLIPBOARD",`\u2713 Saved clipboard image to ${e}`),e}catch(t){p.debug("CLIPBOARD","Failed to save clipboard image",{error:t});}return null}function yA(){try{return execSync("xclip -selection clipboard -t TARGETS -o 2>/dev/null | grep -i png",{encoding:"utf-8",timeout:2e3}),!0}catch{return false}}async function bA(){let s=ho.tmpdir(),e=Ie.join(s,`neox-clipboard-${Date.now()}.png`);try{if(execSync(`xclip -selection clipboard -t image/png -o > "${e}"`,{timeout:5e3,shell:"/bin/bash"}),Ct.existsSync(e)&&Ct.statSync(e).size>0)return p.info("CLIPBOARD",`\u2713 Saved clipboard image to ${e}`),e}catch(t){p.debug("CLIPBOARD","Failed to save clipboard image",{error:t});}return null}function vA(){try{return execSync('powershell.exe -NoProfile -Command "Get-Clipboard -Format Image"',{encoding:"utf-8",timeout:3e3}).trim().length>0}catch{return p.debug("CLIPBOARD","WSL: Failed to check Windows clipboard"),false}}async function CA(){let s=ho.tmpdir(),e=Ie.join(s,`neox-clipboard-${Date.now()}.png`),t=Ss(e);try{let n=`
|
|
34
34
|
$img = Get-Clipboard -Format Image
|
|
35
35
|
if ($img) {
|
|
36
36
|
$img.Save('${t.replace(/'/g,"''")}')
|
|
@@ -38,7 +38,7 @@ if ($img) {
|
|
|
38
38
|
}
|
|
39
39
|
`;if(execSync(`powershell.exe -NoProfile -Command "${n.replace(/"/g,'\\"')}"`,{encoding:"utf-8",timeout:5e3}).includes("OK")&&Ct.existsSync(e)){let o=Ct.statSync(e);if(o.size>0)return p.info("CLIPBOARD",`\u2713 WSL: Saved clipboard image (${Math.round(o.size/1024)}KB)`),e}}catch(n){p.debug("CLIPBOARD","WSL: Failed to save clipboard image",{error:n});}return null}async function av(){return ov()?iv():null}function wA(s){try{let e=Ct.readFileSync(s),t=Ie.extname(s).toLowerCase(),n="image/png";t===".jpg"||t===".jpeg"?n="image/jpeg":t===".gif"?n="image/gif":t===".webp"?n="image/webp":t===".bmp"&&(n="image/bmp");let r=e.toString("base64");return `data:${n};base64,${r}`}catch(e){return p.error("CLIPBOARD","Failed to convert image to base64",{error:e,imagePath:s}),null}}function Vp(s){try{let e=Ct.readFileSync(s),t=Ie.extname(s).toLowerCase(),n="image/png";t===".jpg"||t===".jpeg"?n="image/jpeg":t===".gif"?n="image/gif":t===".webp"?n="image/webp":t===".bmp"&&(n="image/bmp");let r=e.toString("base64");return {mediaType:n,data:r}}catch(e){return p.error("CLIPBOARD","Failed to convert image to base64",{error:e,imagePath:s}),null}}async function Yp(){let s=pA();if(s){p.info("CLIPBOARD",`\u{1F4CE} Using image file from clipboard: ${s}`);let r=Vp(s);if(r)return {...r,name:Ie.basename(s)}}let e=await av();if(!e)return null;let t=Vp(e);if(!t)return null;let n=Ie.basename(e);try{Ct.unlinkSync(e);}catch{}return {...t,name:n}}var Kp,sv,Xp=R(()=>{te();qr();Kp=null,sv=false;});function Yl(s){return {output_info:s,behavior:{type:"allow"}}}function vv(s,e){return {output_info:e,behavior:{type:"reject_content",message:s}}}var nm=R(()=>{});function Co(){let s=new Date,e=s.toISOString().slice(0,10).replace(/-/g,""),t=s.toISOString().slice(11,19).replace(/:/g,""),n=Math.random().toString(36).slice(2,6);return `session_${e}_${t}_${n}`}var _s=R(()=>{});function nP(s){let e=s.match(/Error\s+(?:code\s+)?(\d{3})/i);if(e)return e[1];let t=s.match(/(\d{3}):\s*([^<\n]+)/);return t?t[1]:null}function rP(s){let e=s.match(/<title>[^|]*\|\s*\d{3}:\s*([^<]+)<\/title>/i);if(e)return e[1].trim();let t=s.match(/<h1[^>]*>(?:<[^>]+>)*([^<]+?(?:\s+\d{3})?)<\/(?:[^>]+>)*<\/h1>/i);if(t)return t[1].replace(/Error code\s+\d{3}/i,"").trim();let n=s.match(/Error\s+code\s+(\d{3})/i);if(n){let o=n[1];return {502:"Bad gateway",503:"Service unavailable",504:"Gateway timeout",520:"Unknown error",521:"Web server is down",522:"Connection timed out",523:"Origin is unreachable",524:"A timeout occurred"}[o]||"Server error"}let r=s.match(/<span[^>]*class="inline-block"[^>]*>([^<]+)<\/span>/i);return r?r[1].trim():null}function sP(s){let e=s.match(/truncate[^>]*>([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})<\/span>/);if(e)return e[1];let t=s.match(/<title>([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/);return t?t[1]:null}function Ui(s){return s.trim().startsWith("<!DOCTYPE html")||s.trim().startsWith("<html")||/<html[^>]*>/i.test(s)}function oP(s){let e=s.match(/^data:\s*(\{.*\})/m);return e?e[1]:null}function Is(s,e){let t=oP(s);if(t)try{let i=JSON.parse(t);if(i.error){let a=i.error,l=a.type||a.code||(e?`HTTP_${e}`:"API_ERROR"),c=a.message||"API error",u;if(a.type==="usage_limit_reached"){let d=a.resets_at?new Date(a.resets_at*1e3).toLocaleString():void 0,m=a.resets_in_seconds;if(m){let g=Math.floor(m/3600),h=Math.floor(m%3600/60);u=`Usage limit reached (${a.plan_type||"unknown"} plan). Resets in ${g}h ${h}m.`;}else d&&(u=`Usage limit reached (${a.plan_type||"unknown"} plan). Resets at ${d}.`);}return {code:l,message:c,detail:u}}}catch{}if(s.trim().startsWith("{"))try{let i=JSON.parse(s);if(i.error){let a=i.error;return {code:a.type||a.code||(e?`HTTP_${e}`:"API_ERROR"),message:a.message||"API error"}}}catch{}if(Ui(s)){let i=nP(s)||String(e||"UNKNOWN"),a=rP(s)||"Server error",l=sP(s),c;return l&&(l.includes("cloudflare")?c=`The server (${l}) is protected by Cloudflare but is not responding.`:c=`The API server (${l}) is not responding. This may be a temporary issue with your API provider.`),{code:`HTTP_${i}`,message:a,detail:c}}let n=s.match(/OpenAI.*error:\s*(\d+)\s*-\s*(.*)/i);if(n){let i=n[1],a=n[2];if(Ui(a)){let l=Is(a,parseInt(i,10));return {code:l.code,message:l.message,detail:l.detail}}return a=a.trim(),a.length>200&&(a=a.slice(0,200)+"..."),{code:`HTTP_${i}`,message:a}}let r=s.match(/Anthropic.*error:\s*(\d+)\s*-\s*(.*)/i);if(r){let i=r[1],a=r[2].trim();return a.length>200&&(a=a.slice(0,200)+"..."),{code:`HTTP_${i}`,message:a}}if(s.includes("ECONNREFUSED"))return {code:"NETWORK_ERROR",message:"Connection refused",detail:"Unable to connect to the API server. Please check your network connection."};if(s.includes("ETIMEDOUT")||s.includes("timeout"))return {code:"TIMEOUT",message:"Connection timeout",detail:"The request took too long to complete. Please try again."};if(s.includes("ENOTFOUND"))return {code:"DNS_ERROR",message:"Server not found",detail:"Could not resolve the API server address. Please check your API base URL."};if(/context.*window.*exceeded/i.test(s)||/maximum.*context.*length/i.test(s))return {code:"CONTEXT_EXCEEDED",message:"Context window exceeded",detail:"The conversation is too long. Please start a new session or use /compact."};if(/rate.*limit/i.test(s)||s.includes("429"))return {code:"RATE_LIMIT",message:"Rate limit exceeded",detail:"Too many requests. Please wait a moment before trying again."};if(s.includes("401")||/unauthorized/i.test(s))return {code:"AUTH_ERROR",message:"Authentication failed",detail:"Please check your API key in settings."};if(s.includes("403")||/forbidden/i.test(s))return {code:"FORBIDDEN",message:"Access denied",detail:"Your API key does not have permission for this operation."};let o=s;return o=o.replace(/^Error:\s*/i,""),o=o.replace(/^Request failed with status code\s+\d+:\s*/i,""),o.length>300&&(o=o.slice(0,300)+"..."),{code:e?`HTTP_${e}`:"UNKNOWN",message:o}}var rm=R(()=>{});function wr(s){if(!s)return;if(typeof s!="string")return typeof s=="number"&&s>0?Math.ceil(s*1e3):void 0;let e=s.trim(),t=e.match(/^(\d+(?:\.\d+)?)\s*ms$/i);if(t){let o=parseFloat(t[1]);return o>0?Math.ceil(o):void 0}let n=parseFloat(e);if(!isNaN(n)&&n>0)return Math.ceil(n*1e3);let r=new Date(e);if(!isNaN(r.getTime())){let o=r.getTime()-Date.now();return o>0?Math.ceil(o):void 0}}function iP(s){switch(s){case 502:return 3e3;case 503:return 5e3;case 504:return 2e3;default:return 2e3}}function Xl(s){if(!s)return;let e=s["retry-after"]||s["Retry-After"];if(e){let o=wr(e);if(o)return o}let t=s["retry-after-ms"]||s["Retry-After-Ms"];if(t){let o=parseFloat(t);if(!isNaN(o)&&o>0)return Math.ceil(o)}let n=s["x-ratelimit-reset-requests"];if(n){let o=wr(n);if(o)return o}let r=s["anthropic-ratelimit-requests-reset"];if(r){let o=new Date(r);if(!isNaN(o.getTime())){let i=o.getTime()-Date.now();return i>0?Math.ceil(i):void 0}}}function sm(s){return typeof s=="object"&&s!==null&&"message"in s&&typeof s.message=="string"}function Cv(s){return [/context.*window.*exceeded/i,/context.*length.*exceeded/i,/maximum.*context.*length/i,/token.*limit.*exceeded/i,/input.*too.*long/i].some(t=>t.test(s))}function aP(s){return [/quota.*exceeded/i,/usage.*limit/i,/rate.*limit/i,/insufficient.*quota/i,/billing/i].some(t=>t.test(s))}function lP(s){if(s){if(typeof s=="string")return s;if(typeof s=="object"){if(typeof s.error=="string")return s.error;if(s.error?.message)return s.error.message;if(s.message)return s.message}}}function An(s){if(s instanceof Ye)return s;let e=s instanceof Error?s.message:String(s),t=s instanceof Error?s:void 0,n=sm(s)?s:void 0,o=(n?lP(n.response?.data):void 0)||e;if(n?.response?.status){let i=n.response.status,a=Xl(n.response.headers),l=n.response.headers?.["x-request-id"]||n.response.headers?.["cf-ray"];if(i===429){let c=n.response.data,u=c?.error?.type;return u==="usage_limit_reached"||u==="usage_not_included"?new Ye({category:"fatal_limit",code:"USAGE_LIMIT_REACHED",message:c?.error?.message||"Usage limit reached",retryable:false,context:{httpStatus:i,requestId:l},originalError:t}):new Ye({category:"retryable_http",code:`HTTP_${i}`,message:o,retryable:true,retryAfter:a,context:{httpStatus:i,requestId:l},originalError:t})}if(i===502||i===503||i===504){let c=o;if(Ui(o)){let d=Is(o,i);c=d.message,d.detail&&(c+=`
|
|
40
40
|
`+d.detail);}let u=a||iP(i);return new Ye({category:"retryable_rate_limit",code:`PROXY_${i}`,message:c||`API \u4EE3\u7406\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528 (${i})`,retryable:true,retryAfter:u,context:{httpStatus:i,requestId:l,rawMessage:o},originalError:t})}if(i>=500){let c=o;if(Ui(o)){let u=Is(o,i);c=u.message,u.detail&&(c+=`
|
|
41
|
-
`+u.detail);}return new Ye({category:"retryable_http",code:`HTTP_${i}`,message:c,retryable:true,retryAfter:a,context:{httpStatus:i,requestId:l,rawMessage:o},originalError:t})}if(i===401)return new Ye({category:"fatal_auth",code:"UNAUTHORIZED",message:o||"Authentication failed. Please check your API key.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i===403)return new Ye({category:"fatal_auth",code:"FORBIDDEN",message:o||"Access denied. Please check your API permissions.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i===400)return Cv(e)?new Ye({category:"fatal_context",code:"CONTEXT_WINDOW_EXCEEDED",message:"Context window exceeded. Please start a new conversation or clear history.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t}):o.includes("Upstream request failed")||o.includes("upstream")||o.includes("gateway")?new Ye({category:"retryable_http",code:"PROXY_UPSTREAM_FAILED",message:o||"Proxy upstream request failed",retryable:true,context:{httpStatus:i,requestId:l},originalError:t}):new Ye({category:"fatal_invalid",code:"INVALID_REQUEST",message:o,retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i>=400&&i<500)return new Ye({category:"fatal_invalid",code:`HTTP_${i}`,message:o,retryable:false,context:{httpStatus:i,requestId:l},originalError:t})}if(sm(s)){let i=s.code,a=s.name;if(i==="ERR_CANCELED"||a==="CanceledError"||a==="AbortError")return new Ye({category:"canceled",code:"CANCELED",message:"Request was canceled",retryable:false,originalError:t});if(i==="ECONNREFUSED"||i==="ENOTFOUND"||i==="ECONNRESET")return new Ye({category:"retryable_network",code:i,message:`Network error: ${e}`,retryable:true,originalError:t});if(i==="ETIMEDOUT"||i==="ESOCKETTIMEDOUT")return new Ye({category:"retryable_network",code:"TIMEOUT",message:`Connection timeout: ${e}`,retryable:true,originalError:t})}return s instanceof Error&&s.name==="AbortError"?new Ye({category:"canceled",code:"CANCELED",message:"Request was canceled",retryable:false,originalError:s}):sm(s)&&s.code==="STREAM_INCOMPLETE"?new Ye({category:"retryable_stream",code:"STREAM_INCOMPLETE",message:`\u7F51\u7EDC\u4E2D\u65AD: ${e}`,retryable:true,context:{toolName:s.toolName,rawMessage:e},originalError:t}):s?.code==="STREAM_TIMEOUT"?new Ye({category:"retryable_stream",code:"STREAM_TIMEOUT",message:`API \u4EE3\u7406\u54CD\u5E94\u8D85\u65F6: ${e}`,retryable:true,context:{rawMessage:e},originalError:t}):e.includes("stream")||e.includes("Stream")||e.includes("SSE")||e.includes("disconnected")||e.includes("incomplete")||e.includes("message_stop")?new Ye({category:"retryable_stream",code:"STREAM_ERROR",message:`\u7F51\u7EDC\u4E2D\u65AD: ${e}`,retryable:true,originalError:t}):Cv(e)?new Ye({category:"fatal_context",code:"CONTEXT_WINDOW_EXCEEDED",message:"Context window exceeded. Please start a new conversation or clear history.",retryable:false,originalError:t}):aP(e)?new Ye({category:"fatal_limit",code:"QUOTA_EXCEEDED",message:e,retryable:false,originalError:t}):new Ye({category:"internal",code:"UNKNOWN",message:e,retryable:false,originalError:t})}function wv(s,e,t){let n=e||"";return n.trim().endsWith("}")?(s==="write_file"||s==="edit_file")&&!n.includes('"content"')?new Ye({category:"tool_truncated",code:"TOOL_MISSING_CONTENT",message:"The content field is missing (likely truncated)",retryable:false,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t}):t.message.includes("JSON")||t.message.includes("Unexpected")||t.message.includes("parse")?new Ye({category:"tool_json_invalid",code:"JSON_PARSE_ERROR",message:`Invalid JSON in tool arguments: ${t.message}`,retryable:true,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t}):new Ye({category:"tool_json_invalid",code:"TOOL_ERROR",message:t.message,retryable:true,context:{toolName:s},originalError:t}):new Ye({category:"tool_truncated",code:"TOOL_ARGS_TRUNCATED",message:"Tool arguments were truncated during streaming",retryable:false,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t})}function Ql(s){switch(s.category){case "retryable_rate_limit":return `API \u4EE3\u7406\u901F\u7387\u9650\u5236\uFF0C${s.retryAfter?Math.ceil(s.retryAfter/1e3):3} \u79D2\u540E\u81EA\u52A8\u91CD\u8BD5...`;case "retryable_http":return "The request will be automatically retried.";case "retryable_stream":return "\u7F51\u7EDC\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u6B63\u5728\u81EA\u52A8\u91CD\u8FDE...";case "retryable_network":return "\u7F51\u7EDC\u8FDE\u63A5\u5F02\u5E38\uFF0C\u6B63\u5728\u81EA\u52A8\u91CD\u8BD5...";case "fatal_auth":return "Please check your API key and ensure it has the necessary permissions.";case "fatal_limit":return "You have reached your usage limit. Please check your billing settings or wait for the limit to reset.";case "fatal_context":return "The conversation is too long. Please start a new conversation or use /compact to summarize history.";case "fatal_invalid":return "Please check your request parameters and try again.";case "tool_truncated":return "The tool call was truncated. Please use edit_file with smaller, targeted changes instead of rewriting entire files.";case "tool_json_invalid":return "The tool arguments were invalid. The LLM will retry with corrected parameters.";case "tool_timeout":return "The tool execution timed out. Please try again with a smaller operation.";case "tool_denied":return "The tool call was denied. You can manually approve or adjust permissions.";default:return "An unexpected error occurred. Please try again."}}var Ye,Qn=R(()=>{rm();Ye=class s extends Error{category;code;retryable;retryAfter;context;originalError;constructor(e){super(e.message),this.name="NeoxError",this.category=e.category,this.code=e.code,this.retryable=e.retryable,this.retryAfter=e.retryAfter,this.context=e.context,this.originalError=e.originalError,Error.captureStackTrace&&Error.captureStackTrace(this,s);}withContext(e){return new s({...this,context:{...this.context,...e}})}toJSON(){return {name:this.name,category:this.category,code:this.code,message:this.message,retryable:this.retryable,retryAfter:this.retryAfter,context:this.context,stack:this.stack}}};});function Yr(s,e){return {...Tr,...s,...e?.requestMaxRetries!==void 0&&{requestMaxRetries:e.requestMaxRetries},...e?.streamMaxRetries!==void 0&&{streamMaxRetries:e.streamMaxRetries},...e?.streamIdleTimeoutMs!==void 0&&{streamIdleTimeoutMs:e.streamIdleTimeoutMs}}}function wo(s,e){let t=s.toLowerCase();if(t.includes("yunwu"))return Vr.yunwu;if(t.includes("azure"))return Vr.azure;if(e){let n=e.toLowerCase();if(n.includes("yunwu"))return Vr.yunwu;if(n.includes("azure"))return Vr.azure;if(!(n.includes("api.anthropic.com")||n.includes("api.openai.com")))return Vr.proxy}return t.includes("anthropic")?Vr.anthropic:t.includes("gemini")?Vr.gemini:Vr.openai}var Tr,Vr,xr=R(()=>{Tr={requestMaxRetries:10,streamMaxRetries:5,toolMaxRetries:2,initialDelayMs:1e3,backoffFactor:2,maxDelayMs:3e4,jitterRange:.2,streamIdleTimeoutMs:3e5};Vr={openai:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5},anthropic:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5},yunwu:{requestMaxRetries:3,streamMaxRetries:10,streamIdleTimeoutMs:9e4},azure:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:6e5},proxy:{requestMaxRetries:10,streamMaxRetries:10,streamIdleTimeoutMs:18e4},gemini:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5}};});var Tv=R(()=>{});var xv,Sv,kv,_v=R(()=>{nm();_s();Qn();xr();Tv();xv=100,Sv=200,kv=0;});var ji,To,xo,Pn,om=R(()=>{ji=class extends Error{constructor(e){super(e),this.name="GuardrailTripwireTriggered";}},To=class extends ji{guardrail_result;constructor(e){let t=`Input guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Safety check failed"}`;super(t),this.name="InputGuardrailTripwireTriggered",this.guardrail_result=e;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info}}},xo=class extends ji{guardrail_result;blocked_output;constructor(e){let t=`Output guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Output safety check failed"}`;super(t),this.name="OutputGuardrailTripwireTriggered",this.guardrail_result=e,this.blocked_output=e.agent_output;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info,blocked_output:this.blocked_output}}},Pn=class extends ji{guardrail_result;constructor(e){let t=`Tool guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Tool safety check failed"}`;super(t),this.name="ToolGuardrailTripwireTriggered",this.guardrail_result=e;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info,behavior:this.guardrail_result.output.behavior}}};});var Es,Iv=R(()=>{om();Es=class{static async runInputGuardrails(e,t,n,r){if(e.length===0)return [];let o=e.map(async i=>{let a=Date.now();try{let l=await i.guardrail_function(t,n,r),c={guardrail:i,output:l,execution_time_ms:Date.now()-a};if(l.tripwire_triggered)throw new To(c);return c}catch(l){if(l instanceof To)throw l;let c={guardrail:i,output:{tripwire_triggered:true,output_info:{error:l instanceof Error?l.message:String(l),reason:"Guardrail execution failed"}},execution_time_ms:Date.now()-a};throw new To(c)}});return await Promise.all(o)}static async runOutputGuardrails(e,t,n,r){if(e.length===0)return [];let o=e.map(async i=>{let a=Date.now();try{let l=await i.guardrail_function(t,n,r),c={guardrail:i,agent_output:r,output:l,execution_time_ms:Date.now()-a};if(l.tripwire_triggered)throw new xo(c);return c}catch(l){if(l instanceof xo)throw l;let c={guardrail:i,agent_output:r,output:{tripwire_triggered:true,output_info:{error:l instanceof Error?l.message:String(l),reason:"Guardrail execution failed"}},execution_time_ms:Date.now()-a};throw new xo(c)}});return await Promise.all(o)}static async runToolInputGuardrails(e,t){let n=[];for(let r of e){let o=Date.now();try{let i=await r.guardrail_function(t),a={guardrail:r,output:i,execution_time_ms:Date.now()-o};if(n.push(a),i.behavior.type==="raise_exception")throw new Pn(a);if(i.behavior.type==="reject_content")return {results:n,should_execute:!1,rejection_message:i.behavior.message}}catch(i){if(i instanceof Pn)throw i;let a={guardrail:r,output:{output_info:{error:i instanceof Error?i.message:String(i)},behavior:{type:"raise_exception"}},execution_time_ms:Date.now()-o};throw new Pn(a)}}return {results:n,should_execute:true}}static async runToolOutputGuardrails(e,t){let n=[];for(let r of e){let o=Date.now();try{let i=await r.guardrail_function(t),a={guardrail:r,output:i,execution_time_ms:Date.now()-o};if(n.push(a),i.behavior.type==="raise_exception")throw new Pn(a);if(i.behavior.type==="reject_content")return {results:n,should_use_output:!1,replacement_message:i.behavior.message}}catch(i){if(i instanceof Pn)throw i;let a={guardrail:r,output:{output_info:{error:i instanceof Error?i.message:String(i)},behavior:{type:"raise_exception"}},execution_time_ms:Date.now()-o};throw new Pn(a)}}return {results:n,should_use_output:true}}};});function Gi(){if(!Av&&(Av=true,typeof process<"u"&&process.env&&!process.env.NEOX_UI_MODE))try{Promise.resolve().then(()=>(te(),gb)).then(s=>{Ev=s.cliLogger;}).catch(()=>{});}catch{}return Ev}function Mv(){return {writtenFiles:new Map,editedFiles:new Map,editDetails:new Map,fileReadCache:new Map,toolCallHistory:[],createdAt:Date.now()}}function Rv(s){if(s){let e=Pv.get(s);return e?process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",`Retrieved EXISTING SessionState for context: ${Object.keys(s).join(",")}, history: ${e.toolCallHistory.length}`):(e=Mv(),Pv.set(s,e),process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",`Created NEW SessionState for context: ${Object.keys(s).join(",")}`)),e}return im||(im=Mv()),im}function am(s,e,t,n){let r=Rv(s);if(process.env.CLI_DEBUG==="1"){let o=Gi();o?.debug("SESSION","recordToolCall called:"),o?.debug("SESSION",` - tool: ${e}`),o?.debug("SESSION",` - success: ${n}`),o?.debug("SESSION",` - context exists: ${!!s}`),o?.debug("SESSION",` - context identity: ${s?Object.keys(s).join(","):"none"}`),o?.debug("SESSION",` - history length before: ${r.toolCallHistory.length}`);}r.toolCallHistory.push({name:e,args:t,timestamp:Date.now(),success:n}),process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",` - history length after: ${r.toolCallHistory.length}`),r.toolCallHistory.length>100&&r.toolCallHistory.shift();}function Dv(s,e=10){let t=Rv(s);if(process.env.CLI_DEBUG==="1"){let n=Gi();n?.debug("SESSION","getRecentToolCalls called:"),n?.debug("SESSION",` - context exists: ${!!s}`),n?.debug("SESSION",` - context identity: ${s?Object.keys(s).join(","):"none"}`),n?.debug("SESSION",` - total history length: ${t.toolCallHistory.length}`),n?.debug("SESSION",` - limit: ${e}`),n?.debug("SESSION",` - returning ${Math.min(t.toolCallHistory.length,e)} calls`);}return t.toolCallHistory.slice(-e)}var Ev,Av,Pv,im,lm=R(()=>{Ev=null,Av=false;Pv=new WeakMap,im=null;});var pP,um,dm,je,Wi=R(()=>{pP=fileURLToPath(import.meta.url),um=dirname(pP),dm=class{logDir;enabled;consoleEnabled;constructor(){this.logDir=this.getLogDirectory(),this.enabled=process.env.MARKOR_TRACING==="1",this.consoleEnabled=process.env.CLI_DEBUG_CONSOLE==="1";try{this.initLogDir(),this.consoleEnabled&&console.log("[Logger] Initialized at:",this.logDir);}catch(e){console.error("[Logger] Failed to initialize:",e.message),this.enabled=false;}}setEnabled(e){this.enabled=e;}getLogDirectory(){if(um.includes(".asar")||um.includes("app.asar")){try{if(typeof process<"u"&&process.type==="browser"){let e=process.env.ELECTRON_USER_DATA;if(e)return Ie__default.join(e,"logs")}}catch{}return Ie__default.join(ho__default.tmpdir(),"neox-logs")}return Ie__default.join(um,"../../logs")}initLogDir(){try{Ct__default.existsSync(this.logDir)||Ct__default.mkdirSync(this.logDir,{recursive:!0});}catch(e){let t=e;t.code==="EACCES"||t.code==="EPERM"?this.enabled=false:(console.warn(`[Logger] Warning: Cannot create log directory: ${t.message}`),this.enabled=false);}}getLogFile(e){let t=new Date().toISOString().split("T")[0];return Ie__default.join(this.logDir,`${e}-${t}.log`)}write(e,t){if(!this.enabled)return;let n=new Date().toISOString(),r=typeof t=="string"?{message:t}:t||{},o=this.safeStringify({timestamp:n,...r})+`
|
|
41
|
+
`+u.detail);}return new Ye({category:"retryable_http",code:`HTTP_${i}`,message:c,retryable:true,retryAfter:a,context:{httpStatus:i,requestId:l,rawMessage:o},originalError:t})}if(i===401)return new Ye({category:"fatal_auth",code:"UNAUTHORIZED",message:o||"Authentication failed. Please check your API key.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i===403)return new Ye({category:"fatal_auth",code:"FORBIDDEN",message:o||"Access denied. Please check your API permissions.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i===400)return Cv(e)?new Ye({category:"fatal_context",code:"CONTEXT_WINDOW_EXCEEDED",message:"Context window exceeded. Please start a new conversation or clear history.",retryable:false,context:{httpStatus:i,requestId:l},originalError:t}):o.includes("Upstream request failed")||o.includes("upstream")||o.includes("gateway")?new Ye({category:"retryable_http",code:"PROXY_UPSTREAM_FAILED",message:o||"Proxy upstream request failed",retryable:true,context:{httpStatus:i,requestId:l},originalError:t}):new Ye({category:"fatal_invalid",code:"INVALID_REQUEST",message:o,retryable:false,context:{httpStatus:i,requestId:l},originalError:t});if(i>=400&&i<500)return new Ye({category:"fatal_invalid",code:`HTTP_${i}`,message:o,retryable:false,context:{httpStatus:i,requestId:l},originalError:t})}if(sm(s)){let i=s.code,a=s.name;if(i==="ERR_CANCELED"||a==="CanceledError"||a==="AbortError")return new Ye({category:"canceled",code:"CANCELED",message:"Request was canceled",retryable:false,originalError:t});if(i==="ECONNREFUSED"||i==="ENOTFOUND"||i==="ECONNRESET")return new Ye({category:"retryable_network",code:i,message:`Network error: ${e}`,retryable:true,originalError:t});if(i==="ETIMEDOUT"||i==="ESOCKETTIMEDOUT")return new Ye({category:"retryable_network",code:"TIMEOUT",message:`Connection timeout: ${e}`,retryable:true,originalError:t})}return s instanceof Error&&s.name==="AbortError"?new Ye({category:"canceled",code:"CANCELED",message:"Request was canceled",retryable:false,originalError:s}):sm(s)&&s.code==="STREAM_INCOMPLETE"?new Ye({category:"retryable_stream",code:"STREAM_INCOMPLETE",message:`\u7F51\u7EDC\u4E2D\u65AD: ${e}`,retryable:true,context:{toolName:s.toolName,rawMessage:e},originalError:t}):s?.code==="STREAM_TIMEOUT"?new Ye({category:"retryable_stream",code:"STREAM_TIMEOUT",message:`API \u4EE3\u7406\u54CD\u5E94\u8D85\u65F6: ${e}`,retryable:true,context:{rawMessage:e},originalError:t}):e.includes("stream")||e.includes("Stream")||e.includes("SSE")||e.includes("disconnected")||e.includes("incomplete")||e.includes("message_stop")?new Ye({category:"retryable_stream",code:"STREAM_ERROR",message:`\u7F51\u7EDC\u4E2D\u65AD: ${e}`,retryable:true,originalError:t}):Cv(e)?new Ye({category:"fatal_context",code:"CONTEXT_WINDOW_EXCEEDED",message:"Context window exceeded. Please start a new conversation or clear history.",retryable:false,originalError:t}):aP(e)?new Ye({category:"fatal_limit",code:"QUOTA_EXCEEDED",message:e,retryable:false,originalError:t}):new Ye({category:"internal",code:"UNKNOWN",message:e,retryable:false,originalError:t})}function wv(s,e,t){let n=e||"";return n.trim().endsWith("}")?(s==="write_file"||s==="edit_file")&&!n.includes('"content"')?new Ye({category:"tool_truncated",code:"TOOL_MISSING_CONTENT",message:"The content field is missing (likely truncated)",retryable:false,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t}):t.message.includes("JSON")||t.message.includes("Unexpected")||t.message.includes("parse")?new Ye({category:"tool_json_invalid",code:"JSON_PARSE_ERROR",message:`Invalid JSON in tool arguments: ${t.message}`,retryable:true,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t}):new Ye({category:"tool_json_invalid",code:"TOOL_ERROR",message:t.message,retryable:true,context:{toolName:s},originalError:t}):new Ye({category:"tool_truncated",code:"TOOL_ARGS_TRUNCATED",message:"Tool arguments were truncated during streaming",retryable:false,context:{toolName:s,receivedLength:n.length,rawMessage:t.message},originalError:t})}function Ql(s){switch(s.category){case "retryable_rate_limit":return `API \u4EE3\u7406\u901F\u7387\u9650\u5236\uFF0C${s.retryAfter?Math.ceil(s.retryAfter/1e3):3} \u79D2\u540E\u81EA\u52A8\u91CD\u8BD5...`;case "retryable_http":return "The request will be automatically retried.";case "retryable_stream":return "\u7F51\u7EDC\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u6B63\u5728\u81EA\u52A8\u91CD\u8FDE...";case "retryable_network":return "\u7F51\u7EDC\u8FDE\u63A5\u5F02\u5E38\uFF0C\u6B63\u5728\u81EA\u52A8\u91CD\u8BD5...";case "fatal_auth":return "Please check your API key and ensure it has the necessary permissions.";case "fatal_limit":return "You have reached your usage limit. Please check your billing settings or wait for the limit to reset.";case "fatal_context":return "The conversation is too long. Please start a new conversation or use /compact to summarize history.";case "fatal_invalid":return "Please check your request parameters and try again.";case "tool_truncated":return "The tool call was truncated. Please use edit_file with smaller, targeted changes instead of rewriting entire files.";case "tool_json_invalid":return "The tool arguments were invalid. The LLM will retry with corrected parameters.";case "tool_timeout":return "The tool execution timed out. Please try again with a smaller operation.";case "tool_denied":return "The tool call was denied. You can manually approve or adjust permissions.";default:return "An unexpected error occurred. Please try again."}}var Ye,Qn=R(()=>{rm();Ye=class s extends Error{category;code;retryable;retryAfter;context;originalError;constructor(e){super(e.message),this.name="NeoxError",this.category=e.category,this.code=e.code,this.retryable=e.retryable,this.retryAfter=e.retryAfter,this.context=e.context,this.originalError=e.originalError,Error.captureStackTrace&&Error.captureStackTrace(this,s);}withContext(e){return new s({...this,context:{...this.context,...e}})}toJSON(){return {name:this.name,category:this.category,code:this.code,message:this.message,retryable:this.retryable,retryAfter:this.retryAfter,context:this.context,stack:this.stack}}};});function Vr(s,e){return {...Tr,...s,...e?.requestMaxRetries!==void 0&&{requestMaxRetries:e.requestMaxRetries},...e?.streamMaxRetries!==void 0&&{streamMaxRetries:e.streamMaxRetries},...e?.streamIdleTimeoutMs!==void 0&&{streamIdleTimeoutMs:e.streamIdleTimeoutMs}}}function wo(s,e){let t=s.toLowerCase();if(t.includes("yunwu"))return Jr.yunwu;if(t.includes("azure"))return Jr.azure;if(e){let n=e.toLowerCase();if(n.includes("yunwu"))return Jr.yunwu;if(n.includes("azure"))return Jr.azure;if(!(n.includes("api.anthropic.com")||n.includes("api.openai.com")))return Jr.proxy}return t.includes("anthropic")?Jr.anthropic:t.includes("gemini")?Jr.gemini:Jr.openai}var Tr,Jr,xr=R(()=>{Tr={requestMaxRetries:10,streamMaxRetries:5,toolMaxRetries:2,initialDelayMs:1e3,backoffFactor:2,maxDelayMs:3e4,jitterRange:.2,streamIdleTimeoutMs:3e5};Jr={openai:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5},anthropic:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5},yunwu:{requestMaxRetries:3,streamMaxRetries:10,streamIdleTimeoutMs:9e4},azure:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:6e5},proxy:{requestMaxRetries:10,streamMaxRetries:10,streamIdleTimeoutMs:18e4},gemini:{requestMaxRetries:4,streamMaxRetries:5,streamIdleTimeoutMs:3e5}};});var Tv=R(()=>{});var xv,Sv,kv,_v=R(()=>{nm();_s();Qn();xr();Tv();xv=100,Sv=200,kv=0;});var ji,To,xo,Pn,om=R(()=>{ji=class extends Error{constructor(e){super(e),this.name="GuardrailTripwireTriggered";}},To=class extends ji{guardrail_result;constructor(e){let t=`Input guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Safety check failed"}`;super(t),this.name="InputGuardrailTripwireTriggered",this.guardrail_result=e;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info}}},xo=class extends ji{guardrail_result;blocked_output;constructor(e){let t=`Output guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Output safety check failed"}`;super(t),this.name="OutputGuardrailTripwireTriggered",this.guardrail_result=e,this.blocked_output=e.agent_output;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info,blocked_output:this.blocked_output}}},Pn=class extends ji{guardrail_result;constructor(e){let t=`Tool guardrail "${e.guardrail.name}" triggered: ${e.output.output_info?.reason||"Tool safety check failed"}`;super(t),this.name="ToolGuardrailTripwireTriggered",this.guardrail_result=e;}getDetails(){return {guardrail_name:this.guardrail_result.guardrail.name,execution_time_ms:this.guardrail_result.execution_time_ms,output_info:this.guardrail_result.output.output_info,behavior:this.guardrail_result.output.behavior}}};});var Es,Iv=R(()=>{om();Es=class{static async runInputGuardrails(e,t,n,r){if(e.length===0)return [];let o=e.map(async i=>{let a=Date.now();try{let l=await i.guardrail_function(t,n,r),c={guardrail:i,output:l,execution_time_ms:Date.now()-a};if(l.tripwire_triggered)throw new To(c);return c}catch(l){if(l instanceof To)throw l;let c={guardrail:i,output:{tripwire_triggered:true,output_info:{error:l instanceof Error?l.message:String(l),reason:"Guardrail execution failed"}},execution_time_ms:Date.now()-a};throw new To(c)}});return await Promise.all(o)}static async runOutputGuardrails(e,t,n,r){if(e.length===0)return [];let o=e.map(async i=>{let a=Date.now();try{let l=await i.guardrail_function(t,n,r),c={guardrail:i,agent_output:r,output:l,execution_time_ms:Date.now()-a};if(l.tripwire_triggered)throw new xo(c);return c}catch(l){if(l instanceof xo)throw l;let c={guardrail:i,agent_output:r,output:{tripwire_triggered:true,output_info:{error:l instanceof Error?l.message:String(l),reason:"Guardrail execution failed"}},execution_time_ms:Date.now()-a};throw new xo(c)}});return await Promise.all(o)}static async runToolInputGuardrails(e,t){let n=[];for(let r of e){let o=Date.now();try{let i=await r.guardrail_function(t),a={guardrail:r,output:i,execution_time_ms:Date.now()-o};if(n.push(a),i.behavior.type==="raise_exception")throw new Pn(a);if(i.behavior.type==="reject_content")return {results:n,should_execute:!1,rejection_message:i.behavior.message}}catch(i){if(i instanceof Pn)throw i;let a={guardrail:r,output:{output_info:{error:i instanceof Error?i.message:String(i)},behavior:{type:"raise_exception"}},execution_time_ms:Date.now()-o};throw new Pn(a)}}return {results:n,should_execute:true}}static async runToolOutputGuardrails(e,t){let n=[];for(let r of e){let o=Date.now();try{let i=await r.guardrail_function(t),a={guardrail:r,output:i,execution_time_ms:Date.now()-o};if(n.push(a),i.behavior.type==="raise_exception")throw new Pn(a);if(i.behavior.type==="reject_content")return {results:n,should_use_output:!1,replacement_message:i.behavior.message}}catch(i){if(i instanceof Pn)throw i;let a={guardrail:r,output:{output_info:{error:i instanceof Error?i.message:String(i)},behavior:{type:"raise_exception"}},execution_time_ms:Date.now()-o};throw new Pn(a)}}return {results:n,should_use_output:true}}};});function Gi(){if(!Av&&(Av=true,typeof process<"u"&&process.env&&!process.env.NEOX_UI_MODE))try{Promise.resolve().then(()=>(te(),gb)).then(s=>{Ev=s.cliLogger;}).catch(()=>{});}catch{}return Ev}function Mv(){return {writtenFiles:new Map,editedFiles:new Map,editDetails:new Map,fileReadCache:new Map,toolCallHistory:[],createdAt:Date.now()}}function Rv(s){if(s){let e=Pv.get(s);return e?process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",`Retrieved EXISTING SessionState for context: ${Object.keys(s).join(",")}, history: ${e.toolCallHistory.length}`):(e=Mv(),Pv.set(s,e),process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",`Created NEW SessionState for context: ${Object.keys(s).join(",")}`)),e}return im||(im=Mv()),im}function am(s,e,t,n){let r=Rv(s);if(process.env.CLI_DEBUG==="1"){let o=Gi();o?.debug("SESSION","recordToolCall called:"),o?.debug("SESSION",` - tool: ${e}`),o?.debug("SESSION",` - success: ${n}`),o?.debug("SESSION",` - context exists: ${!!s}`),o?.debug("SESSION",` - context identity: ${s?Object.keys(s).join(","):"none"}`),o?.debug("SESSION",` - history length before: ${r.toolCallHistory.length}`);}r.toolCallHistory.push({name:e,args:t,timestamp:Date.now(),success:n}),process.env.CLI_DEBUG==="1"&&Gi()?.debug("SESSION",` - history length after: ${r.toolCallHistory.length}`),r.toolCallHistory.length>100&&r.toolCallHistory.shift();}function Dv(s,e=10){let t=Rv(s);if(process.env.CLI_DEBUG==="1"){let n=Gi();n?.debug("SESSION","getRecentToolCalls called:"),n?.debug("SESSION",` - context exists: ${!!s}`),n?.debug("SESSION",` - context identity: ${s?Object.keys(s).join(","):"none"}`),n?.debug("SESSION",` - total history length: ${t.toolCallHistory.length}`),n?.debug("SESSION",` - limit: ${e}`),n?.debug("SESSION",` - returning ${Math.min(t.toolCallHistory.length,e)} calls`);}return t.toolCallHistory.slice(-e)}var Ev,Av,Pv,im,lm=R(()=>{Ev=null,Av=false;Pv=new WeakMap,im=null;});var pP,um,dm,je,Wi=R(()=>{pP=fileURLToPath(import.meta.url),um=dirname(pP),dm=class{logDir;enabled;consoleEnabled;constructor(){this.logDir=this.getLogDirectory(),this.enabled=process.env.MARKOR_TRACING==="1",this.consoleEnabled=process.env.CLI_DEBUG_CONSOLE==="1";try{this.initLogDir(),this.consoleEnabled&&console.log("[Logger] Initialized at:",this.logDir);}catch(e){console.error("[Logger] Failed to initialize:",e.message),this.enabled=false;}}setEnabled(e){this.enabled=e;}getLogDirectory(){if(um.includes(".asar")||um.includes("app.asar")){try{if(typeof process<"u"&&process.type==="browser"){let e=process.env.ELECTRON_USER_DATA;if(e)return Ie__default.join(e,"logs")}}catch{}return Ie__default.join(ho__default.tmpdir(),"neox-logs")}return Ie__default.join(um,"../../logs")}initLogDir(){try{Ct__default.existsSync(this.logDir)||Ct__default.mkdirSync(this.logDir,{recursive:!0});}catch(e){let t=e;t.code==="EACCES"||t.code==="EPERM"?this.enabled=false:(console.warn(`[Logger] Warning: Cannot create log directory: ${t.message}`),this.enabled=false);}}getLogFile(e){let t=new Date().toISOString().split("T")[0];return Ie__default.join(this.logDir,`${e}-${t}.log`)}write(e,t){if(!this.enabled)return;let n=new Date().toISOString(),r=typeof t=="string"?{message:t}:t||{},o=this.safeStringify({timestamp:n,...r})+`
|
|
42
42
|
`;if(this.enabled)try{let i=this.getLogFile(e);Ct__default.appendFileSync(i,o,"utf-8");}catch(i){(i.code==="EACCES"||i.code==="EPERM")&&(this.enabled=false);}}safeStringify(e){let t=new WeakSet;return JSON.stringify(e,(n,r)=>{if(typeof r=="object"&&r!==null){if(t.has(r))return "[Circular]";t.add(r);}return n==="parser"||n==="socket"||n==="_httpMessage"||n==="req"||n==="res"?"[Omitted]":r&&r.type==="Buffer"&&Array.isArray(r.data)?"[Buffer]":typeof r=="function"?"[Function]":r})}llmRequest(e,t,n,r,o){let i=n.tools?.map(a=>({name:a.name,description:a.description,parameters:a.parameters}));this.write("llm",{type:"REQUEST",provider:e,model:t,url:r,headers:o,messagesCount:n.messages?.length||0,messages:n.messages,toolsCount:n.tools?.length||0,tools:i,temperature:n.temperature});}llmResponse(e,t,n,r){this.write("llm",{type:"RESPONSE",provider:e,duration:`${t}ms`,usage:n,finishReason:r.finish_reason,content:r.content,contentLength:r.content?.length||0,toolCallsCount:r.tool_calls?.length||0,toolCalls:r.tool_calls});}llmError(e,t){let n={type:"ERROR",provider:e,error:t.message,status:t.response?.status};if(t.response?.data)try{let r=t.response.data;typeof r=="string"?n.data=r:typeof r=="object"&&(n.data={error:r.error,message:r.message,type:r.type,code:r.code});}catch{n.data="[Could not serialize response data]";}this.write("llm",n);}agentStart(e){this.write("agent",{type:"START",task:e});}agentIteration(e,t){this.write("agent",{type:"ITERATION",iteration:e,action:t});}agentComplete(e,t,n){this.write("agent",{type:"COMPLETE",iterations:e,toolCalls:t,usage:n});}agentError(e){this.write("agent",{type:"ERROR",error:e});}toolCall(e,t){this.write("tool",{type:"CALL",tool:e,args:t});}toolResult(e,t,n,r){this.write("tool",{type:"RESULT",tool:e,success:t,resultLength:n,duration:`${r}ms`});}toolError(e,t){this.write("tool",{type:"ERROR",tool:e,error:t});}},je=new dm;});function Lv(s,e){let t=s||"Unknown error",n=t.toLowerCase(),r=e?.providerName?.trim()||"LLM";if(n.includes("timeout")){let o=Math.round((e?.timeoutMs??12e4)/1e3);return [`\u23F1\uFE0F ${r} \u8BF7\u6C42\u8D85\u65F6 (${o}s)\u3002${r} \u63A5\u53E3\u5F53\u524D\u53EF\u80FD\u4E0D\u7A33\u5B9A\uFF0C\u53EF\u4EE5\u7A0D\u540E\u91CD\u8BD5\u6216\u5207\u6362\u5176\u4ED6\u6A21\u578B\u3002`,"\u5982\u679C\u591A\u6B21\u8D85\u65F6\u8BF7\u544A\u8BC9\u6211\u4EEC\uFF0C\u65B9\u4FBF\u6392\u67E5\u3002",`\u539F\u59CB\u9519\u8BEF\uFF1A${t}`].join(`
|
|
43
43
|
`)}return t}var Nv=R(()=>{});function hP(s){let e=(s||"").trim();if(e.startsWith("```")){let t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(t&&t[1])return t[1].trim()}return e}function fP(s){return !s||s.length===0?[]:s.map(e=>{let t=e.instancePath||e.schemaPath||"";return e.keyword==="additionalProperties"&&typeof e.params?.additionalProperty=="string"?`${t} should not contain property "${e.params.additionalProperty}"`:`${t} ${e.message||""}`.trim()})}var gP,ec,$v=R(()=>{gP=new mP({allErrors:true,strict:false});ec=class{constructor(e){this.definition=e;this.validateFn=gP.compile(e.schema);}validateFn;get responseFormatPayload(){return {type:"json_schema",json_schema:{name:this.definition.name,schema:this.definition.schema,strict:this.definition.strict??true}}}buildSystemPrompt(){let e=JSON.stringify(this.definition.schema,null,2);return [`You must respond with valid JSON that exactly matches the schema "${this.definition.name}".`,"Do not include explanations, markdown code fences, or additional commentary.","Schema:",e].join(`
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ if ($img) {
|
|
|
46
46
|
- `+e.errors.join(`
|
|
47
47
|
- `)):e.message&&t.push(`Validation issue: ${e.message}`),t.push("Return ONLY valid minified JSON (no code fences, no commentary) that matches the schema below:",JSON.stringify(this.definition.schema,null,2)),t.join(`
|
|
48
48
|
|
|
49
|
-
`)}};});function mm(s,e={}){let{initialDelayMs:t=Tr.initialDelayMs,backoffFactor:n=Tr.backoffFactor,maxDelayMs:r=Tr.maxDelayMs,jitterRange:o=Tr.jitterRange}=e,i=Math.max(0,s-1),a=t*Math.pow(n,i),l=1+(Math.random()*2-1)*o,c=a*l,u=Math.min(c,r);return Math.floor(u)}function
|
|
49
|
+
`)}};});function mm(s,e={}){let{initialDelayMs:t=Tr.initialDelayMs,backoffFactor:n=Tr.backoffFactor,maxDelayMs:r=Tr.maxDelayMs,jitterRange:o=Tr.jitterRange}=e,i=Math.max(0,s-1),a=t*Math.pow(n,i),l=1+(Math.random()*2-1)*o,c=a*l,u=Math.min(c,r);return Math.floor(u)}function Yr(s,e,t){return s!==void 0&&s>0?s:mm(e,t)}function So(s){return new Promise(e=>setTimeout(e,s))}function As(s,e){return new Promise((t,n)=>{if(e?.aborted){n(new DOMException("Aborted","AbortError"));return}let r=setTimeout(t,s),o=()=>{clearTimeout(r),n(new DOMException("Aborted","AbortError"));};e?.addEventListener("abort",o,{once:true});let i=()=>{e?.removeEventListener("abort",o);};setTimeout(()=>{i(),t();},s);})}function ln(s){if(s<1e3)return `${s}ms`;let e=s/1e3;return e<60?`${e.toFixed(1)}s`:`${(e/60).toFixed(1)}m`}function vP(s,e){if(e!==void 0&&e>0){let t=1+Math.random()*.2;return Math.floor(e*t)}return mm(s,yP)}function zi(s,e,t){return s==="retryable_rate_limit"?vP(e,t):s==="retryable_stream"||s==="retryable_network"?mm(e,bP):Yr(t,e)}var yP,bP,ko=R(()=>{xr();Qn();xr();yP={initialDelayMs:3e3,backoffFactor:2.5,maxDelayMs:6e4,jitterRange:.3},bP={initialDelayMs:1e3,backoffFactor:1.5,maxDelayMs:1e4,jitterRange:.2};});function Fe(s){return s===null?"":typeof s=="string"?s:s.filter(e=>e.type==="text").map(e=>e.text).join("")}var Zn=R(()=>{});function tc(s){if(!s)return 0;let e=s.trim();return e.length?Math.ceil(e.length/4):0}function er(s){let e=Fe(s.content),t=tc(e),n=s.tool_calls?.length?tc(JSON.stringify(s.tool_calls)):0;return t+n}function cn(s){return s.reduce((e,t)=>e+er(t),0)}function Sr(s){let e={systemTokens:0,userTokens:0,assistantTokens:0,toolCallTokens:0,toolResultTokens:0,totalTokens:0};for(let t of s){let n=Fe(t.content),r=tc(n),o=t.tool_calls?.length?tc(JSON.stringify(t.tool_calls)):0;switch(t.role){case "system":e.systemTokens+=r;break;case "user":e.userTokens+=r;break;case "assistant":e.assistantTokens+=r,e.toolCallTokens+=o;break;case "tool":e.toolResultTokens+=r;break;default:e.userTokens+=r+o;}}return e.totalTokens=e.systemTokens+e.userTokens+e.assistantTokens+e.toolCallTokens+e.toolResultTokens,e}function wP(s,e,t){return !s.contextWindow&&!s.autoCompactLimit?"unknown":s.autoCompactLimit&&e>=s.autoCompactLimit?"limit":t===void 0||s.contextWindow===void 0?"unknown":t>=s.warnThresholds.hard?"limit":t>=s.warnThresholds.soft?"soft_limit":t>=s.warnThresholds.warn?"warn":"normal"}var CP,_o,Ps=R(()=>{Zn();CP={unknown:0,normal:1,warn:2,soft_limit:3,limit:4};_o=class{profile;promptTokensActual=0;completionTokensActual=0;promptTokensEstimate=0;completionTokensEstimate=0;constructor(e){this.profile=e;}updateProfile(e){this.profile=e,this.reset();}reset(){this.promptTokensActual=0,this.completionTokensActual=0,this.promptTokensEstimate=0,this.completionTokensEstimate=0;}setPromptEstimateFromMessages(e){return this.promptTokensActual>0?(this.completionTokensEstimate=0,this.getSnapshot()):(this.promptTokensEstimate=cn(e),this.promptTokensActual=0,this.completionTokensActual=0,this.completionTokensEstimate=0,this.getSnapshot())}addEstimatedOutputTokens(e){return this.completionTokensEstimate=Math.max(0,this.completionTokensEstimate+e),this.getSnapshot()}recordActualUsage(e,t,n){return this.promptTokensActual=e,this.completionTokensActual=t,this.promptTokensEstimate=0,this.completionTokensEstimate=0,this.getSnapshot(n)}getSnapshot(e){let t=this.promptTokensActual||this.promptTokensEstimate,n=this.completionTokensActual+this.completionTokensEstimate,r=t+n,o=this.profile.contextWindow?r/this.profile.contextWindow:void 0,i=wP(this.profile,r,o);return {profile:this.profile,tokensUsed:r,promptTokens:t,completionTokens:n,messageCount:e,pressure:o,state:i,timestamp:Date.now()}}getStateRank(e){return CP[e]}estimateMessagesForDisplay(e){return cn(e)}recordCalibration(e,t,n){if(process.env.CLI_DEBUG){let r=t+n,o=e>0?r/e:0;console.log(`[MemoryPressure] \u6821\u51C6: \u4F30\u7B97=${e}, \u5B9E\u9645=${r}, \u6BD4\u7387=${o.toFixed(3)}`);}}};});var nc=R(()=>{});var TP,Ov,xP,Xr,rc=R(()=>{Zn();te();nc();TP=2e3,Ov={Read:"file_read",Write:"file_write",Edit:"file_edit",Glob:"file_search",Grep:"file_search",NotebookEdit:"file_edit",Bash:"bash",BashOutput:"bash",WebFetch:"web_fetch",WebSearch:"web_search",Task:"task"},xP={file_read:{system:`\u4F60\u662F\u4E00\u4E2A\u4EE3\u7801\u5206\u6790\u52A9\u624B\u3002\u8BF7\u5C06\u6587\u4EF6\u5185\u5BB9\u538B\u7F29\u4E3A\u7B80\u6D01\u6458\u8981\uFF0C\u4FDD\u7559\uFF1A
|
|
50
50
|
1. \u6587\u4EF6\u7C7B\u578B\u548C\u4E3B\u8981\u529F\u80FD
|
|
51
51
|
2. \u5173\u952E\u7684\u51FD\u6570/\u7C7B/\u63A5\u53E3\u5B9A\u4E49\uFF08\u53EA\u4FDD\u7559\u7B7E\u540D\uFF09
|
|
52
52
|
3. \u91CD\u8981\u7684\u914D\u7F6E\u9879\u6216\u5E38\u91CF
|
|
@@ -111,7 +111,7 @@ ${s}
|
|
|
111
111
|
\u683C\u5F0F\uFF1A[\u4EFB\u52A1\u7C7B\u578B] \u7ED3\u8BBA: \u6458\u8981`,user:s=>`\u4EFB\u52A1\u7ED3\u679C:
|
|
112
112
|
${s}
|
|
113
113
|
|
|
114
|
-
\u8BF7\u538B\u7F29\u8FD9\u4E2A\u4EFB\u52A1\u7ED3\u679C\u3002`}},
|
|
114
|
+
\u8BF7\u538B\u7F29\u8FD9\u4E2A\u4EFB\u52A1\u7ED3\u679C\u3002`}},Xr=class{supportedTools=Object.keys(Ov);debug;llmProvider;model;constructor(e){this.debug=e?.debug??process.env.CLI_DEBUG==="1",this.llmProvider=e?.llmProvider,this.model=e?.model;}getToolType(e){return e.startsWith("mcp__")?"mcp":Ov[e]||"other"}needsLLMCompression(e,t,n){let r=this.getToolType(e);if(["web_fetch","web_search","task"].includes(r))return true;let i=128e3,a=2e5,l=n||i,c=Math.max(.3,Math.min(2,l/a)),d={file_read:2e4,file_write:8e3,file_edit:5e3,file_search:1e4,bash:15e3,web_fetch:0,web_search:0,image_analysis:3e3,mcp:1e4,task:0,other:15e3}[r]??15e3,m=Math.floor(d*c);return this.debug&&p.debug("ToolCompressor",`[${e}] contextWindow=${l}${n?"":"(default)"}, scaleFactor=${c.toFixed(2)}, threshold=${m}`),t.length>m}async compress(e,t,n){let r=this.getToolType(e),o=t.length,i=this.extractMetadata(r,t,e),a=this.needsLLMCompression(e,t,n.contextWindow),l=n.llmProvider||this.llmProvider,c,u=false;if(a&&l&&n.enableLLMCompression!==false){let d=await this.compressWithLLM(r,t,l,n.model||this.model,i);d?(c=d,u=true):c=this.compressWithRules(r,t,i);}else c=this.compressWithRules(r,t,i);if(this.debug){let d=((1-c.length/o)*100).toFixed(1);p.debug("ToolCompressor",`[${e}] ${o} \u2192 ${c.length} chars (${d}% saved, LLM: ${u})`);}return {content:c,originalLength:o,compressedLength:c.length,strategy:r,usedLLM:u,metadata:i}}extractMetadata(e,t,n){let r={};switch(e){case "file_read":case "file_write":case "file_edit":let o=t.match(/(?:file|path)[:\s]+([^\n]+)/i);o&&(r.filePath=o[1].trim());break;case "bash":let i=t.match(/(?:command|cmd)[:\s]+([^\n]+)/i);i&&(r.command=i[1].trim()),/error|failed|exit code [1-9]/i.test(t)&&(r.exitCode=1);break;case "web_fetch":case "web_search":let a=t.match(/https?:\/\/[^\s\)]+/g);a&&(r.urls=[...new Set(a)].slice(0,10));break}return r}async compressWithLLM(e,t,n,r,o){let i=xP[e];if(!i)return null;try{let l=t.length>8e3?t.slice(0,8e3)+`
|
|
115
115
|
|
|
116
116
|
...[\u5185\u5BB9\u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD]...`:t,c=await n.chat([{role:"system",content:i.system},{role:"user",content:i.user(l,o?.filePath)}],{model:r,temperature:.2});return Fe(c.choices[0]?.message?.content)?.trim()||null}catch(a){return p.warn("ToolCompressor",`LLM compression failed: ${a.message}`),null}}compressWithRules(e,t,n){let r=TP;switch(e){case "file_read":return this.compressFileRead(t,n?.filePath,r);case "file_edit":return this.compressFileEdit(t,r);case "bash":return this.compressBash(t,n?.command,r);case "web_fetch":case "web_search":return this.compressWebContent(t,n?.urls,r);case "file_search":return this.compressSearchResult(t,r);default:return this.truncateWithContext(t,r)}}compressFileRead(e,t,n=2e3){let r=e.split(`
|
|
117
117
|
`),o=t?`\u{1F4C4} ${t}
|
|
@@ -143,7 +143,7 @@ ${t.slice(0,5).map(i=>`- ${i}`).join(`
|
|
|
143
143
|
|
|
144
144
|
... [\u7701\u7565 ${a} \u5B57\u7B26] ...
|
|
145
145
|
|
|
146
|
-
${i}`}truncate(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}},new
|
|
146
|
+
${i}`}truncate(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}},new Xr;});var SP,kP,Hi,Io,gm=R(()=>{Zn();Ps();te();rc();nc();SP=15,kP=[/error/i,/错误/,/failed/i,/失败/,/exception/i,/异常/,/❌/,/warning/i,/警告/],Hi={system:`\u4F60\u662F\u4E00\u4E2A\u5BF9\u8BDD\u5386\u53F2\u538B\u7F29\u52A9\u624B\u3002\u8BF7\u5C06\u5BF9\u8BDD\u538B\u7F29\u4E3A\u7B80\u6D01\u6458\u8981\uFF0C\u4FDD\u7559\uFF1A
|
|
147
147
|
1. \u7528\u6237\u7684\u6838\u5FC3\u9700\u6C42\u548C\u76EE\u6807
|
|
148
148
|
2. \u5173\u952E\u51B3\u7B56\u548C\u5176\u7406\u7531
|
|
149
149
|
3. \u91CD\u8981\u7684\u4EE3\u7801\u53D8\u66F4\uFF08\u6587\u4EF6\u8DEF\u5F84\u3001\u51FD\u6570\u540D\uFF09
|
|
@@ -168,35 +168,35 @@ ${i}`}truncate(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}},new Qr;});var SP
|
|
|
168
168
|
- \u4FDD\u7559\u6280\u672F\u7EC6\u8282\uFF08\u6587\u4EF6\u540D\u3001\u51FD\u6570\u540D\u3001\u9519\u8BEF\u4FE1\u606F\uFF09
|
|
169
169
|
- \u603B\u957F\u5EA6\u63A7\u5236\u5728 800 \u5B57\u4EE5\u5185`,user:s=>`\u8BF7\u538B\u7F29\u4EE5\u4E0B\u5BF9\u8BDD\u5386\u53F2:
|
|
170
170
|
|
|
171
|
-
${s}`},Io=class{debug;toolCompressor;minRecentMessages;constructor(e){this.debug=e?.debug??process.env.CLI_DEBUG==="1",this.toolCompressor=e?.toolCompressor??new
|
|
171
|
+
${s}`},Io=class{debug;toolCompressor;minRecentMessages;constructor(e){this.debug=e?.debug??process.env.CLI_DEBUG==="1",this.toolCompressor=e?.toolCompressor??new Xr({debug:this.debug}),this.minRecentMessages=e?.minRecentMessages??SP;}async compressMessage(e,t){let n=er(e),r=this.getMessageType(e);if(r==="system")return {message:e,originalTokens:n,compressedTokens:n,compressionRatio:1,usedLLM:false,strategy:"preserve_system"};if(r==="tool_result"&&e.role==="tool"){let i=e.name||"unknown",a=Fe(e.content),l=await this.toolCompressor.compress(i,a,t),c={...e,content:l.content},u=er(c);return {message:c,originalTokens:n,compressedTokens:u,compressionRatio:u/n,usedLLM:l.usedLLM,strategy:`tool_${l.strategy}`}}let o=Fe(e.content);if(o.length>3e3&&t.llmProvider&&t.enableLLMCompression!==false){let i=await this.compressLongContent(o,t);if(i){let a={...e,content:i},l=er(a);return {message:a,originalTokens:n,compressedTokens:l,compressionRatio:l/n,usedLLM:true,strategy:"llm_content_compression"}}}return {message:e,originalTokens:n,compressedTokens:n,compressionRatio:1,usedLLM:false,strategy:"preserve"}}async compressMessages(e,t){let n=[],r=cn(e),o=t.tokenBudget||r;return this.debug&&(n.push(`[MessageCompressor] \u5F00\u59CB\u538B\u7F29: ${e.length} \u6761\u6D88\u606F, ${r} tokens`),n.push(`[MessageCompressor] Token \u9884\u7B97: ${o}`)),r<=o?this.compressLargeMessages(e,t,n):this.compressWithPriority(e,o,t,n)}async compressLargeMessages(e,t,n){let r=cn(e),o=[],i=0,a=0;for(let c of e)if(er(c)>2e3&&c.role!=="system"){let d=await this.compressMessage(c,t);o.push(d.message),d.usedLLM?i++:d.compressionRatio<1&&a++;}else o.push(c);let l=cn(o);return this.debug&&n.push(`[MessageCompressor] \u5927\u6D88\u606F\u538B\u7F29\u5B8C\u6210: LLM=${i}, \u622A\u65AD=${a}`),{messages:o,originalCount:e.length,compressedCount:o.length,originalTokens:r,compressedTokens:l,savedTokens:r-l,stats:{droppedMessages:0,llmCompressedMessages:i,truncatedMessages:a,preservedMessages:e.length-i-a},debugInfo:this.debug?n:void 0}}async compressWithPriority(e,t,n,r){let o=cn(e),i=this.prioritizeMessages(e);if(this.debug){let T=this.countPriorities(i);r.push(`[MessageCompressor] \u4F18\u5148\u7EA7\u5206\u5E03: CRITICAL=${T.critical}, HIGH=${T.high}, MEDIUM=${T.medium}, LOW=${T.low}`);}let a=[],l=0;for(let T of i)T.priority===0&&(a.push(T),l+=T.tokens);this.debug&&r.push(`[MessageCompressor] CRITICAL \u4FDD\u7559\u540E: ${a.length} \u6761, ${l} tokens`);let c=i.filter(T=>T.priority===1&&!a.includes(T));for(let T of c){let S=await this.compressMessage(T.message,n),E=S.compressedTokens;l+E<=t&&(a.push({...T,message:S.message,tokens:E}),l+=E);}this.debug&&r.push(`[MessageCompressor] HIGH \u4FDD\u7559\u540E: ${a.length} \u6761, ${l} tokens`);let u=t-l,d=i.filter(T=>(T.priority===2||T.priority===3)&&!a.includes(T));if(d.reduce((T,S)=>T+S.tokens,0)<=u)for(let T of d){let S=await this.compressMessage(T.message,n);a.push({...T,message:S.message,tokens:S.compressedTokens}),l+=S.compressedTokens;}else {if(n.llmProvider&&n.enableLLMCompression!==false&&d.length>=5){let T=await this.compressBatchWithLLM(d.map(S=>S.message),n);if(T){let S={role:"user",content:`[\u538B\u7F29\u7684\u5386\u53F2\u8BB0\u5F55]
|
|
172
172
|
${T}`,name:"CompressedHistory"},E=er(S);l+E<=t&&(a.push({message:S,priority:2,tokens:E,index:-1,type:"user",reason:"LLM batch compressed"}),l+=E,this.debug&&r.push(`[MessageCompressor] LLM \u6279\u91CF\u538B\u7F29: ${d.length} \u6761 \u2192 1 \u6761\u6458\u8981`));}}if(!a.find(T=>T.reason==="LLM batch compressed")){let T=[...d].sort((S,E)=>E.index-S.index);for(let S of T){let E=await this.compressMessage(S.message,n);l+E.compressedTokens<=t&&(a.push({...S,message:E.message,tokens:E.compressedTokens}),l+=E.compressedTokens);}}}let h=[...a].sort((T,S)=>T.index===-1||S.index===-1?0:T.index-S.index).map(T=>T.message),y=cn(h),b=e.length-a.length,C=a.filter(T=>T.reason.includes("LLM")).length;return this.debug&&(r.push(`[MessageCompressor] \u6700\u7EC8: ${h.length} \u6761, ${y} tokens`),r.push(`[MessageCompressor] \u8282\u7701: ${o-y} tokens`)),{messages:h,originalCount:e.length,compressedCount:h.length,originalTokens:o,compressedTokens:y,savedTokens:o-y,stats:{droppedMessages:b,llmCompressedMessages:C,truncatedMessages:0,preservedMessages:a.length-C},debugInfo:this.debug?r:void 0}}getMessageType(e){return e.role==="system"?"system":e.role==="user"?"user":e.role==="tool"?"tool_result":e.role==="assistant"?e.tool_calls&&e.tool_calls.length>0?"tool_call":"assistant":"user"}prioritizeMessages(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],o=er(r),i=this.getMessageType(r),a=e.length-n,l,c;i==="system"?(l=0,c="system message"):a<=this.minRecentMessages?(l=0,c=`recent message (${a} from end)`):this.containsError(r)?(l=1,c="contains error"):i==="tool_call"?(l=1,c="tool calls"):i==="tool_result"?(l=1,c="tool result"):i==="user"?(l=2,c="user message"):i==="assistant"?(l=2,c="assistant message"):(l=3,c="default"),t.push({message:r,priority:l,tokens:o,index:n,type:i,reason:c});}return t}containsError(e){let t=Fe(e.content);return kP.some(n=>n.test(t))}countPriorities(e){return {critical:e.filter(t=>t.priority===0).length,high:e.filter(t=>t.priority===1).length,medium:e.filter(t=>t.priority===2).length,low:e.filter(t=>t.priority===3).length}}async compressLongContent(e,t){if(!t.llmProvider)return null;try{let r=/[\u4e00-\u9fa5]/.test(e)?Hi.systemZh:Hi.system,o=6e3,i=e.length>o?e.slice(0,o)+`
|
|
173
173
|
|
|
174
174
|
...[\u5185\u5BB9\u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD]...`:e,a=await t.llmProvider.chat([{role:"system",content:r},{role:"user",content:`\u8BF7\u538B\u7F29\u4EE5\u4E0B\u5185\u5BB9:
|
|
175
175
|
|
|
176
176
|
${i}`}],{model:t.model,temperature:.2});return Fe(a.choices[0]?.message?.content)||null}catch(n){return p.warn("MessageCompressor",`LLM compression failed: ${n.message}`),null}}async compressBatchWithLLM(e,t){if(!t.llmProvider)return null;try{let n=e.map(a=>{let l=a.role==="assistant"?"Assistant":a.role==="user"?"User":a.role==="tool"?"Tool":a.role,c=Fe(a.content),u=c.length>800?c.slice(0,800)+"...":c;return `[${l}] ${u}`}).join(`
|
|
177
177
|
|
|
178
|
-
`),o=/[\u4e00-\u9fa5]/.test(n)?Hi.systemZh:Hi.system,i=await t.llmProvider.chat([{role:"system",content:o},{role:"user",content:Hi.user(n)}],{model:t.model,temperature:.3});return Fe(i.choices[0]?.message?.content)||null}catch(n){return p.warn("MessageCompressor",`Batch LLM compression failed: ${n.message}`),null}}},new Io;});var _P,sc,Bv=R(()=>{Ps();te();rc();gm();rc();gm();nc();_P={debug:false,minRecentMessages:15,defaultTokenBudget:1e5,enableLLMCompression:true,llmTimeout:3e4},sc=class{config;toolCompressor;messageCompressor;llmProvider;model;contextWindow;constructor(e){this.config={..._P,...e},this.config.debug=this.config.debug||process.env.CLI_DEBUG==="1",this.toolCompressor=new
|
|
178
|
+
`),o=/[\u4e00-\u9fa5]/.test(n)?Hi.systemZh:Hi.system,i=await t.llmProvider.chat([{role:"system",content:o},{role:"user",content:Hi.user(n)}],{model:t.model,temperature:.3});return Fe(i.choices[0]?.message?.content)||null}catch(n){return p.warn("MessageCompressor",`Batch LLM compression failed: ${n.message}`),null}}},new Io;});var _P,sc,Bv=R(()=>{Ps();te();rc();gm();rc();gm();nc();_P={debug:false,minRecentMessages:15,defaultTokenBudget:1e5,enableLLMCompression:true,llmTimeout:3e4},sc=class{config;toolCompressor;messageCompressor;llmProvider;model;contextWindow;constructor(e){this.config={..._P,...e},this.config.debug=this.config.debug||process.env.CLI_DEBUG==="1",this.toolCompressor=new Xr({debug:this.config.debug}),this.messageCompressor=new Io({debug:this.config.debug,toolCompressor:this.toolCompressor,minRecentMessages:this.config.minRecentMessages});}setLLMProvider(e,t){this.llmProvider=e,this.model=t;}setContextWindow(e){this.contextWindow=e,this.config.debug&&p.info("UnifiedCompressor",`Context window set to: ${e}`);}registerToolCompressor(e){p.info("UnifiedCompressor","Custom tool compressor registered");}setMessageCompressor(e){this.messageCompressor=e,p.info("UnifiedCompressor","Custom message compressor set");}async compressHistory(e,t,n){let r=Date.now(),o=cn(e),i={llmProvider:n?.llmProvider||this.llmProvider,model:n?.model||this.model,tokenBudget:t,contextWindow:n?.contextWindow||this.contextWindow,iteration:n?.iteration,enableLLMCompression:n?.enableLLMCompression??this.config.enableLLMCompression,timeout:n?.timeout??this.config.llmTimeout,signal:n?.signal,debug:this.config.debug};if(this.config.debug&&p.debug("UnifiedCompressor",`\u5F00\u59CB\u538B\u7F29: ${e.length} \u6761\u6D88\u606F, ${o} tokens \u2192 \u9884\u7B97 ${t} tokens`),o<=t){let c=await this.compressLargeMessagesOnly(e,i);return this.config.debug&&p.debug("UnifiedCompressor",`\u5728\u9884\u7B97\u5185\uFF0C\u4EC5\u538B\u7F29\u5927\u6D88\u606F: ${c.savedTokens} tokens \u8282\u7701`),c}let a=await this.messageCompressor.compressMessages(e,i),l=Date.now()-r;return this.config.debug&&p.debug("UnifiedCompressor",`\u538B\u7F29\u5B8C\u6210 (${l}ms): ${a.originalCount} \u2192 ${a.compressedCount} \u6761, ${a.originalTokens} \u2192 ${a.compressedTokens} tokens (\u8282\u7701 ${a.savedTokens} tokens, ${(a.savedTokens/a.originalTokens*100).toFixed(1)}%)`),a}async compressLargeMessagesOnly(e,t){let n=cn(e),r=[],o=0,i=0;for(let l of e)if(er(l)>2e3&&l.role!=="system"){let u=await this.messageCompressor.compressMessage(l,t);r.push(u.message),u.usedLLM?o++:u.compressionRatio<1&&i++;}else r.push(l);let a=cn(r);return {messages:r,originalCount:e.length,compressedCount:r.length,originalTokens:n,compressedTokens:a,savedTokens:n-a,stats:{droppedMessages:0,llmCompressedMessages:o,truncatedMessages:i,preservedMessages:e.length-o-i}}}async compressToolResult(e,t,n){let r={llmProvider:n?.llmProvider||this.llmProvider,model:n?.model||this.model,enableLLMCompression:n?.enableLLMCompression??this.config.enableLLMCompression,timeout:n?.timeout??this.config.llmTimeout,debug:this.config.debug};return (await this.toolCompressor.compress(e,t,r)).content}getStats(){return {config:this.config,hasLLMProvider:!!this.llmProvider}}};});var Fv,qi,oc,Ki,Eo,Ji=R(()=>{Fv={enabled:false,autoPrompt:true,languages:["typescript","javascript","python","java","go","rust"],include:["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py","**/*.java","**/*.go","**/*.rs"],exclude:["**/node_modules/**","**/.git/**","**/dist/**","**/build/**","**/__pycache__/**","**/target/**","**/vendor/**"],cacheDir:".neox/index",maxFileSize:5},qi=200,oc=10,Ki=4e3,Eo=700;});function Uv(s){return createHash("md5").update(s).digest("hex")}async function jv(s){try{return await Le.access(s),!0}catch{return false}}async function Vi(s){try{await Le.mkdir(s,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e}}async function hm(s,e,t){let r=(await Le.readFile(s,"utf-8")).split(`
|
|
179
179
|
`),o=r.length,i=Math.max(0,e-1),a=Math.min(r.length,t);return {lines:r.slice(i,a),totalLines:o}}function qt(s,e){return s.map((t,n)=>`${String(e+n).padStart(6)} \u2502 ${t}`).join(`
|
|
180
|
-
`)}function Mo(s,e){let n=Ie.relative(e,s).split(Ie.sep),r=n.findIndex(o=>["src","lib","app","core","packages","modules"].includes(o));return r>=0&&r+1<n.length?n[r+1]:n[0]||"root"}function fm(s){let e=Ie.extname(s).toLowerCase();return {".ts":"typescript",".tsx":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".java":"java",".go":"go",".rs":"rust",".c":"c",".cpp":"cpp",".cc":"cpp",".h":"c",".hpp":"cpp",".cs":"csharp",".rb":"ruby",".php":"php",".swift":"swift",".kt":"kotlin",".scala":"scala",".vue":"vue",".svelte":"svelte"}[e]||null}function
|
|
180
|
+
`)}function Mo(s,e){let n=Ie.relative(e,s).split(Ie.sep),r=n.findIndex(o=>["src","lib","app","core","packages","modules"].includes(o));return r>=0&&r+1<n.length?n[r+1]:n[0]||"root"}function fm(s){let e=Ie.extname(s).toLowerCase();return {".ts":"typescript",".tsx":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".java":"java",".go":"go",".rs":"rust",".c":"c",".cpp":"cpp",".cc":"cpp",".h":"c",".hpp":"cpp",".cs":"csharp",".rb":"ruby",".php":"php",".swift":"swift",".kt":"kotlin",".scala":"scala",".vue":"vue",".svelte":"svelte"}[e]||null}function Qr(s,e,t="{([",n="})]"){let r=[],o=false;for(let i=e;i<s.length;i++){let a=s[i];for(let l of a){let c=t.indexOf(l),u=n.indexOf(l);c!==-1?(r.push(n[c]),o=true):u!==-1&&r.length>0&&r[r.length-1]===l&&r.pop();}if(o&&r.length===0)return i+1}return Math.min(e+500,s.length)}function Gv(s,e,t=["^\\s*(export\\s+)?(async\\s+)?function\\s+","^\\s*(export\\s+)?class\\s+","^\\s*(export\\s+)?(const|let|var)\\s+\\w+\\s*=\\s*(async\\s+)?\\(","^\\s*(export\\s+)?(const|let|var)\\s+\\w+\\s*=\\s*(async\\s+)?function","^\\s*(public|private|protected|static|async)*\\s*\\w+\\s*\\(","^\\s*def\\s+","^\\s*class\\s+","^\\s*func\\s+","^\\s*fn\\s+"]){let n=t.map(r=>new RegExp(r));for(let r=e;r>=0;r--){let o=s[r];for(let i of n)if(i.test(o))return r;if(r<e&&o.trim()===""){let i=s.slice(0,r).reverse().findIndex(a=>a.trim()!=="");if(i>=0){let a=s[r-1-i];if(!a.trim().startsWith("@")&&!a.trim().startsWith("#")&&!a.trim().startsWith("//")&&!a.trim().startsWith("/*"))break}}}return Math.max(0,e-5)}function ym(s,e){let t=s.length>e.length?s:e,n=s.length>e.length?e:s;if(t.length===0)return 1;let r=EP(t,n);return (t.length-r)/t.length}function EP(s,e){let t=s.length,n=e.length,r=Array(t+1).fill(null).map(()=>Array(n+1).fill(0));for(let o=0;o<=t;o++)r[o][0]=o;for(let o=0;o<=n;o++)r[0][o]=o;for(let o=1;o<=t;o++)for(let i=1;i<=n;i++)s[o-1]===e[i-1]?r[o][i]=r[o-1][i-1]:r[o][i]=Math.min(r[o-1][i]+1,r[o][i-1]+1,r[o-1][i-1]+1);return r[t][n]}function Ro(s){return s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")}var Ms=R(()=>{});function bm(s){return new ic(s)}var ic,vm=R(()=>{Ji();Ms();ic=class{workspacePath;indexManager=null;constructor(e){this.workspacePath=e;}setIndexManager(e){this.indexManager=e;}async read(e){let{path:t,locator:n,mode:r="smart",autoFullThreshold:o,chunkSize:i=qi,expandContext:a=oc,maxLines:l=Ki,useIndex:c=true}=e;try{let u=this.resolvePath(t);if((await Le.stat(u)).isDirectory())return this.errorResult(t,"\u8FD9\u662F\u4E00\u4E2A\u76EE\u5F55\uFF0C\u4E0D\u662F\u6587\u4EF6");switch(r){case "full":return this.readFull(u,t,l);case "chunk":return !n||n.type!=="line"?this.readChunk(u,t,1,i):this.readChunk(u,t,n.start,n.end?n.end-n.start+1:i);default:return this.smartRead(u,t,n,{autoFullThreshold:o,chunkSize:i,expandContext:a,maxLines:l,useIndex:c})}}catch(u){return u.code==="ENOENT"?this.errorResult(t,"\u6587\u4EF6\u4E0D\u5B58\u5728"):this.errorResult(t,u.message)}}async smartRead(e,t,n,r){let{autoFullThreshold:o,chunkSize:i,expandContext:a,maxLines:l,useIndex:c}=r;if(!n){if(typeof o=="number"&&o>0){let u=await Le.readFile(e,"utf-8"),d=Ro(u).split(`
|
|
181
181
|
`),m=d.length;if(m<=o){let y=Math.min(m,l),b=d.slice(0,y);return {success:true,path:t,totalLines:m,startLine:1,endLine:y,content:qt(b,1),truncated:y<m,strategy:"full"}}let g=Math.min(i,m),h=d.slice(0,g);return {success:true,path:t,totalLines:m,startLine:1,endLine:g,content:qt(h,1),truncated:g<m,strategy:"chunk"}}return this.readChunk(e,t,1,i)}switch(n.type){case "line":return this.readByLine(e,t,n.start,n.end,i);case "pattern":return this.readByPattern(e,t,n.regex,{matchIndex:n.matchIndex||1,context:n.context||a,chunkSize:i});case "symbol":return this.readBySymbol(e,t,n.name,{kind:n.kind,fuzzy:n.fuzzy,chunkSize:i,useIndex:c});case "function":return this.readBySymbol(e,t,n.name,{kind:"function",className:n.className,chunkSize:i,useIndex:c});case "class":return this.readBySymbol(e,t,n.name,{kind:"class",chunkSize:i,useIndex:c});case "range":return this.readByRange(e,t,n.startPattern,n.endPattern,i);default:return this.readChunk(e,t,1,i)}}async readByLine(e,t,n,r,o){let i=r||n+o-1,{lines:a,totalLines:l}=await hm(e,n,i);return {success:true,path:t,totalLines:l,startLine:n,endLine:Math.min(i,l),content:qt(a,n),truncated:i<l,strategy:"chunk"}}async readByPattern(e,t,n,r){let{matchIndex:o,context:i,chunkSize:a}=r,c=(await Le.readFile(e,"utf-8")).split(`
|
|
182
182
|
`),u=c.length,d;try{d=new RegExp(n,"gi");}catch(C){return this.errorResult(t,`\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F: ${C.message}`)}let m=[];if(c.forEach((C,T)=>{d.test(C)&&m.push(T+1),d.lastIndex=0;}),m.length===0)return {success:true,path:t,totalLines:u,startLine:1,endLine:Math.min(a,u),content:`\u672A\u627E\u5230\u5339\u914D: "${n}"
|
|
183
183
|
|
|
184
184
|
`+qt(c.slice(0,Math.min(50,u)),1),truncated:false,strategy:"grep",metadata:{module:Mo(e,this.workspacePath)}};let g=m[Math.min(o-1,m.length-1)],h=Math.max(1,g-i),y=Math.min(u,g+a-i),b=c.slice(h-1,y);return {success:true,path:t,totalLines:u,startLine:h,endLine:y,content:qt(b,h),truncated:y<u,strategy:"grep",metadata:{matchedLine:g,module:Mo(e,this.workspacePath)}}}async readBySymbol(e,t,n,r){let{kind:o,className:i,fuzzy:a,chunkSize:l,useIndex:c}=r;if(c&&this.indexManager){let d=await this.readBySymbolFromIndex(e,t,n,o,i);if(d)return d}let u=this.buildSymbolPattern(n,o,i);return this.readSymbolBlock(e,t,u,n,l)}async readBySymbolFromIndex(e,t,n,r,o){if(!this.indexManager)return null;try{let i=await this.indexManager.getFileIndex(e);if(!i)return null;let a;if(o){let u=i.symbols.find(d=>d.kind==="class"&&d.name===o);u?.children&&(a=u.children.find(d=>d.name===n));}else a=i.symbols.find(u=>r&&u.kind!==r?!1:u.name===n);if(!a)return null;let{lines:l,totalLines:c}=await hm(e,a.startLine,a.endLine);return {success:!0,path:t,totalLines:c,startLine:a.startLine,endLine:a.endLine,content:qt(l,a.startLine),truncated:!1,strategy:"index",metadata:{symbol:a,module:Mo(e,this.workspacePath)}}}catch{return null}}async readSymbolBlock(e,t,n,r,o){let a=(await Le.readFile(e,"utf-8")).split(`
|
|
185
185
|
`),l=a.length,c;try{c=new RegExp(n,"i");}catch{c=new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i");}let u=-1;for(let y=0;y<a.length;y++)if(c.test(a[y])){u=y;break}if(u===-1)return {success:true,path:t,totalLines:l,startLine:1,endLine:Math.min(o,l),content:`\u672A\u627E\u5230\u7B26\u53F7: "${r}"
|
|
186
186
|
|
|
187
|
-
`+qt(a.slice(0,Math.min(50,l)),1),truncated:false,strategy:"grep"};let d=Gv(a,u),m=
|
|
187
|
+
`+qt(a.slice(0,Math.min(50,l)),1),truncated:false,strategy:"grep"};let d=Gv(a,u),m=Qr(a,d),g=Math.min(m,d+o),h=a.slice(d,g);return {success:true,path:t,totalLines:l,startLine:d+1,endLine:g,content:qt(h,d+1),truncated:g<m,strategy:"grep",metadata:{matchedLine:u+1,module:Mo(e,this.workspacePath)}}}async readByRange(e,t,n,r,o){let a=(await Le.readFile(e,"utf-8")).split(`
|
|
188
188
|
`),l=a.length,c,u;try{c=new RegExp(n,"i"),u=new RegExp(r,"i");}catch(y){return this.errorResult(t,`\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F: ${y.message}`)}let d=-1,m=-1;for(let y=0;y<a.length;y++)if(d===-1&&c.test(a[y])&&(d=y),d!==-1&&u.test(a[y])){m=y;break}if(d===-1)return {success:true,path:t,totalLines:l,startLine:1,endLine:Math.min(o,l),content:`\u672A\u627E\u5230\u8D77\u59CB\u6A21\u5F0F: "${n}"
|
|
189
189
|
|
|
190
190
|
`+qt(a.slice(0,Math.min(50,l)),1),truncated:false,strategy:"grep"};m===-1&&(m=Math.min(d+o-1,l-1));let g=Math.min(m+1,d+o),h=a.slice(d,g);return {success:true,path:t,totalLines:l,startLine:d+1,endLine:g,content:qt(h,d+1),truncated:g<m+1,strategy:"grep",metadata:{module:Mo(e,this.workspacePath)}}}async readChunk(e,t,n,r){let o=await Le.readFile(e,"utf-8"),i=Ro(o).split(`
|
|
191
191
|
`),a=i.length,l=Math.max(1,n),c=Math.min(l+r-1,a),u=i.slice(l-1,c);return {success:true,path:t,totalLines:a,startLine:l,endLine:c,content:qt(u,l),truncated:c<a,strategy:"chunk"}}async readFull(e,t,n){let r=await Le.readFile(e,"utf-8"),o=Ro(r).split(`
|
|
192
|
-
`),i=o.length,a=Math.min(i,n),l=o.slice(0,a);return {success:true,path:t,totalLines:i,startLine:1,endLine:a,content:qt(l,1),truncated:a<i,strategy:"full"}}buildSymbolPattern(e,t,n){let r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o={function:`(function|async\\s+function|const|let|var)\\s+${r}\\s*[=(<]`,class:`class\\s+${r}(\\s+extends|\\s+implements|\\s*\\{|\\s*$)`,interface:`interface\\s+${r}(\\s+extends|\\s*\\{|\\s*$)`,method:n?`(${r}|${n}\\.${r})\\s*\\(`:`${r}\\s*\\(`,variable:`(const|let|var)\\s+${r}\\s*[=:]`,type:`type\\s+${r}\\s*[=<]`,enum:`enum\\s+${r}\\s*\\{`,constant:`(const|final|static\\s+final)\\s+[A-Z_]+\\s*${r}`};return t&&o[t]?o[t]:`(function|class|interface|type|enum|const|let|var|def|fn|func)\\s+${r}|${r}\\s*(=|\\()`}resolvePath(e){return Ie.isAbsolute(e)?e:Ie.resolve(this.workspacePath,e)}errorResult(e,t){return {success:false,path:e,totalLines:0,startLine:0,endLine:0,content:"",truncated:false,strategy:"chunk",error:t}}};});var Kv=kl((fK,qv)=>{qv.exports=zv;function zv(s,e,t){s instanceof RegExp&&(s=Wv(s,t)),e instanceof RegExp&&(e=Wv(e,t));var n=Hv(s,e,t);return n&&{start:n[0],end:n[1],pre:t.slice(0,n[0]),body:t.slice(n[0]+s.length,n[1]),post:t.slice(n[1]+e.length)}}function Wv(s,e){var t=e.match(s);return t?t[0]:null}zv.range=Hv;function Hv(s,e,t){var n,r,o,i,a,l=t.indexOf(s),c=t.indexOf(e,l+1),u=l;if(l>=0&&c>0){if(s===e)return [l,c];for(n=[],o=t.length;u>=0&&!a;)u==l?(n.push(u),l=t.indexOf(s,u+1)):n.length==1?a=[n.pop(),c]:(r=n.pop(),r<o&&(o=r,i=c),c=t.indexOf(e,u+1)),u=l<c&&l>=0?l:c;n.length&&(a=[o,i]);}return a}});var tC=kl((yK,eC)=>{var Jv=Kv();eC.exports=MP;var Vv="\0SLASH"+Math.random()+"\0",Yv="\0OPEN"+Math.random()+"\0",wm="\0CLOSE"+Math.random()+"\0",Xv="\0COMMA"+Math.random()+"\0",Qv="\0PERIOD"+Math.random()+"\0";function Cm(s){return parseInt(s,10)==s?parseInt(s,10):s.charCodeAt(0)}function AP(s){return s.split("\\\\").join(Vv).split("\\{").join(Yv).split("\\}").join(wm).split("\\,").join(Xv).split("\\.").join(Qv)}function PP(s){return s.split(Vv).join("\\").split(Yv).join("{").split(wm).join("}").split(Xv).join(",").split(Qv).join(".")}function Zv(s){if(!s)return [""];var e=[],t=Jv("{","}",s);if(!t)return s.split(",");var n=t.pre,r=t.body,o=t.post,i=n.split(",");i[i.length-1]+="{"+r+"}";var a=Zv(o);return o.length&&(i[i.length-1]+=a.shift(),i.push.apply(i,a)),e.push.apply(e,i),e}function MP(s){return s?(s.substr(0,2)==="{}"&&(s="\\{\\}"+s.substr(2)),Yi(AP(s),true).map(PP)):[]}function RP(s){return "{"+s+"}"}function DP(s){return /^-?0\d/.test(s)}function LP(s,e){return s<=e}function NP(s,e){return s>=e}function Yi(s,e){var t=[],n=Jv("{","}",s);if(!n)return [s];var r=n.pre,o=n.post.length?Yi(n.post,false):[""];if(/\$$/.test(n.pre))for(var i=0;i<o.length;i++){var a=r+"{"+n.body+"}"+o[i];t.push(a);}else {var l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),u=l||c,d=n.body.indexOf(",")>=0;if(!u&&!d)return n.post.match(/,(?!,).*\}/)?(s=n.pre+"{"+n.body+wm+n.post,Yi(s)):[s];var m;if(u)m=n.body.split(/\.\./);else if(m=Zv(n.body),m.length===1&&(m=Yi(m[0],false).map(RP),m.length===1))return o.map(function(M){return n.pre+m[0]+M});var g;if(u){var h=Cm(m[0]),y=Cm(m[1]),b=Math.max(m[0].length,m[1].length),C=m.length==3?Math.abs(Cm(m[2])):1,T=LP,S=y<h;S&&(C*=-1,T=NP);var E=m.some(DP);g=[];for(var v=h;T(v,y);v+=C){var I;if(c)I=String.fromCharCode(v),I==="\\"&&(I="");else if(I=String(v),E){var D=b-I.length;if(D>0){var O=new Array(D+1).join("0");v<0?I="-"+O+I.slice(1):I=O+I;}}g.push(I);}}else {g=[];for(var k=0;k<m.length;k++)g.push.apply(g,Yi(m[k],false));}for(var k=0;k<g.length;k++)for(var i=0;i<o.length;i++){var a=r+g[k]+o[i];(!e||u||a)&&t.push(a);}}return t}});var Xi,nC=R(()=>{Xi=s=>{if(typeof s!="string")throw new TypeError("invalid pattern");if(s.length>65536)throw new TypeError("pattern is too long")};});var $P,Qi,OP,rC,sC,oC=R(()=>{$P={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",true],"[:alpha:]":["\\p{L}\\p{Nl}",true],"[:ascii:]":["\\x00-\\x7f",false],"[:blank:]":["\\p{Zs}\\t",true],"[:cntrl:]":["\\p{Cc}",true],"[:digit:]":["\\p{Nd}",true],"[:graph:]":["\\p{Z}\\p{C}",true,true],"[:lower:]":["\\p{Ll}",true],"[:print:]":["\\p{C}",true],"[:punct:]":["\\p{P}",true],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",true],"[:upper:]":["\\p{Lu}",true],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",true],"[:xdigit:]":["A-Fa-f0-9",false]},Qi=s=>s.replace(/[[\]\\-]/g,"\\$&"),OP=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rC=s=>s.join(""),sC=(s,e)=>{let t=e;if(s.charAt(t)!=="[")throw new Error("not in a brace expression");let n=[],r=[],o=t+1,i=false,a=false,l=false,c=false,u=t,d="";e:for(;o<s.length;){let y=s.charAt(o);if((y==="!"||y==="^")&&o===t+1){c=true,o++;continue}if(y==="]"&&i&&!l){u=o+1;break}if(i=true,y==="\\"&&!l){l=true,o++;continue}if(y==="["&&!l){for(let[b,[C,T,S]]of Object.entries($P))if(s.startsWith(b,o)){if(d)return ["$.",false,s.length-t,true];o+=b.length,S?r.push(C):n.push(C),a=a||T;continue e}}if(l=false,d){y>d?n.push(Qi(d)+"-"+Qi(y)):y===d&&n.push(Qi(y)),d="",o++;continue}if(s.startsWith("-]",o+1)){n.push(Qi(y+"-")),o+=2;continue}if(s.startsWith("-",o+1)){d=y,o+=2;continue}n.push(Qi(y)),o++;}if(u<o)return ["",false,0,false];if(!n.length&&!r.length)return ["$.",false,s.length-t,true];if(r.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!c){let y=n[0].length===2?n[0].slice(-1):n[0];return [OP(y),false,u-t,false]}let m="["+(c?"^":"")+rC(n)+"]",g="["+(c?"":"^")+rC(r)+"]";return [n.length&&r.length?"("+m+"|"+g+")":n.length?m:g,a,u-t,true]};});var On,lc=R(()=>{On=(s,{windowsPathsNoEscape:e=false}={})=>e?s.replace(/\[([^\/\\])\]/g,"$1"):s.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");});var BP,iC,FP,cc,UP,jP,GP,WP,Tm,aC,lC,Do,xm=R(()=>{oC();lc();BP=new Set(["!","?","+","*","@"]),iC=s=>BP.has(s),FP="(?!(?:^|/)\\.\\.?(?:$|/))",cc="(?!\\.)",UP=new Set(["[","."]),jP=new Set(["..","."]),GP=new Set("().*{}+?[]^$\\!"),WP=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Tm="[^/]",aC=Tm+"*?",lC=Tm+"+?",Do=class s{type;#e;#t;#o=false;#r=[];#i;#C;#c;#d=false;#a;#l;#s=false;constructor(e,t,n={}){this.type=e,e&&(this.#t=true),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?n:this.#e.#a,this.#c=this.#e===this?[]:this.#e.#c,e==="!"&&!this.#e.#d&&this.#c.push(this),this.#C=this.#i?this.#i.#r.length:0;}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let e of this.#r)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#t=true;return this.#t}toString(){return this.#l!==void 0?this.#l:this.type?this.#l=this.type+"("+this.#r.map(e=>String(e)).join("|")+")":this.#l=this.#r.map(e=>String(e)).join("")}#f(){if(this!==this.#e)throw new Error("should only call on root");if(this.#d)return this;this.toString(),this.#d=true;let e;for(;e=this.#c.pop();){if(e.type!=="!")continue;let t=e,n=t.#i;for(;n;){for(let r=t.#C+1;!n.type&&r<n.#r.length;r++)for(let o of e.#r){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(n.#r[r]);}t=n,n=t.#i;}}return this}push(...e){for(let t of e)if(t!==""){if(typeof t!="string"&&!(t instanceof s&&t.#i===this))throw new Error("invalid part: "+t);this.#r.push(t);}}toJSON(){let e=this.type===null?this.#r.slice().map(t=>typeof t=="string"?t:t.toJSON()):[this.type,...this.#r.map(t=>t.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#d&&this.#i?.type==="!")&&e.push({}),e}isStart(){if(this.#e===this)return true;if(!this.#i?.isStart())return false;if(this.#C===0)return true;let e=this.#i;for(let t=0;t<this.#C;t++){let n=e.#r[t];if(!(n instanceof s&&n.type==="!"))return false}return true}isEnd(){if(this.#e===this||this.#i?.type==="!")return true;if(!this.#i?.isEnd())return false;if(!this.type)return this.#i?.isEnd();let e=this.#i?this.#i.#r.length:0;return this.#C===e-1}copyIn(e){typeof e=="string"?this.push(e):this.push(e.clone(this));}clone(e){let t=new s(this.type,e);for(let n of this.#r)t.copyIn(n);return t}static#y(e,t,n,r){let o=false,i=false,a=-1,l=false;if(t.type===null){let g=n,h="";for(;g<e.length;){let y=e.charAt(g++);if(o||y==="\\"){o=!o,h+=y;continue}if(i){g===a+1?(y==="^"||y==="!")&&(l=true):y==="]"&&!(g===a+2&&l)&&(i=false),h+=y;continue}else if(y==="["){i=true,a=g,l=false,h+=y;continue}if(!r.noext&&iC(y)&&e.charAt(g)==="("){t.push(h),h="";let b=new s(y,t);g=s.#y(e,b,g,r),t.push(b);continue}h+=y;}return t.push(h),g}let c=n+1,u=new s(null,t),d=[],m="";for(;c<e.length;){let g=e.charAt(c++);if(o||g==="\\"){o=!o,m+=g;continue}if(i){c===a+1?(g==="^"||g==="!")&&(l=true):g==="]"&&!(c===a+2&&l)&&(i=false),m+=g;continue}else if(g==="["){i=true,a=c,l=false,m+=g;continue}if(iC(g)&&e.charAt(c)==="("){u.push(m),m="";let h=new s(g,u);u.push(h),c=s.#y(e,h,c,r);continue}if(g==="|"){u.push(m),m="",d.push(u),u=new s(null,t);continue}if(g===")")return m===""&&t.#r.length===0&&(t.#s=true),u.push(m),m="",t.push(...d,u),c;m+=g;}return t.type=null,t.#t=void 0,t.#r=[e.substring(n-1)],c}static fromGlob(e,t={}){let n=new s(null,void 0,t);return s.#y(e,n,0,t),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let e=this.toString(),[t,n,r,o]=this.toRegExpSource();if(!(r||this.#t||this.#a.nocase&&!this.#a.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;let a=(this.#a.nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#a}toRegExpSource(e){let t=e??!!this.#a.dot;if(this.#e===this&&this.#f(),!this.type){let l=this.isStart()&&this.isEnd(),c=this.#r.map(g=>{let[h,y,b,C]=typeof g=="string"?s.#p(g,this.#t,l):g.toRegExpSource(e);return this.#t=this.#t||b,this.#o=this.#o||C,h}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&jP.has(this.#r[0]))){let h=UP,y=t&&h.has(c.charAt(0))||c.startsWith("\\.")&&h.has(c.charAt(2))||c.startsWith("\\.\\.")&&h.has(c.charAt(4)),b=!t&&!e&&h.has(c.charAt(0));u=y?FP:b?cc:"";}let d="";return this.isEnd()&&this.#e.#d&&this.#i?.type==="!"&&(d="(?:$|\\/)"),[u+c+d,On(c),this.#t=!!this.#t,this.#o]}let n=this.type==="*"||this.type==="+",r=this.type==="!"?"(?:(?!(?:":"(?:",o=this.#m(t);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let l=this.toString();return this.#r=[l],this.type=null,this.#t=void 0,[l,On(this.toString()),false,false]}let i=!n||e||t||!cc?"":this.#m(true);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let a="";if(this.type==="!"&&this.#s)a=(this.isStart()&&!t?cc:"")+lC;else {let l=this.type==="!"?"))"+(this.isStart()&&!t&&!e?cc:"")+aC+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&i?")":this.type==="*"&&i?")?":`)${this.type}`;a=r+o+l;}return [a,On(o),this.#t=!!this.#t,this.#o]}#m(e){return this.#r.map(t=>{if(typeof t=="string")throw new Error("string type in extglob ast??");let[n,r,o,i]=t.toRegExpSource(e);return this.#o=this.#o||i,n}).filter(t=>!(this.isStart()&&this.isEnd())||!!t).join("|")}static#p(e,t,n=false){let r=false,o="",i=false;for(let a=0;a<e.length;a++){let l=e.charAt(a);if(r){r=false,o+=(GP.has(l)?"\\":"")+l;continue}if(l==="\\"){a===e.length-1?o+="\\\\":r=true;continue}if(l==="["){let[c,u,d,m]=sC(e,a);if(d){o+=c,i=i||u,a+=d-1,t=t||m;continue}}if(l==="*"){n&&e==="*"?o+=lC:o+=aC,t=true;continue}if(l==="?"){o+=Tm,t=true;continue}o+=WP(l);}return [o,On(e),!!t,i]}};});var Lo,Sm=R(()=>{Lo=(s,{windowsPathsNoEscape:e=false}={})=>e?s.replace(/[?*()[\]]/g,"[$&]"):s.replace(/[?*()[\]\\]/g,"\\$&");});var dC,Zt,zP,HP,qP,KP,JP,VP,YP,XP,QP,ZP,eM,tM,nM,rM,sM,oM,iM,aM,pC,mC,gC,cC,lM,Ot,cM,uM,dM,pM,mM,Mn,gM,hC,hM,fM,uC,yM,yn,es=R(()=>{dC=pb(tC());nC();xm();Sm();lc();xm();Sm();lc();Zt=(s,e,t={})=>(Xi(e),!t.nocomment&&e.charAt(0)==="#"?false:new yn(e,t).match(s)),zP=/^\*+([^+@!?\*\[\(]*)$/,HP=s=>e=>!e.startsWith(".")&&e.endsWith(s),qP=s=>e=>e.endsWith(s),KP=s=>(s=s.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(s)),JP=s=>(s=s.toLowerCase(),e=>e.toLowerCase().endsWith(s)),VP=/^\*+\.\*+$/,YP=s=>!s.startsWith(".")&&s.includes("."),XP=s=>s!=="."&&s!==".."&&s.includes("."),QP=/^\.\*+$/,ZP=s=>s!=="."&&s!==".."&&s.startsWith("."),eM=/^\*+$/,tM=s=>s.length!==0&&!s.startsWith("."),nM=s=>s.length!==0&&s!=="."&&s!=="..",rM=/^\?+([^+@!?\*\[\(]*)?$/,sM=([s,e=""])=>{let t=pC([s]);return e?(e=e.toLowerCase(),n=>t(n)&&n.toLowerCase().endsWith(e)):t},oM=([s,e=""])=>{let t=mC([s]);return e?(e=e.toLowerCase(),n=>t(n)&&n.toLowerCase().endsWith(e)):t},iM=([s,e=""])=>{let t=mC([s]);return e?n=>t(n)&&n.endsWith(e):t},aM=([s,e=""])=>{let t=pC([s]);return e?n=>t(n)&&n.endsWith(e):t},pC=([s])=>{let e=s.length;return t=>t.length===e&&!t.startsWith(".")},mC=([s])=>{let e=s.length;return t=>t.length===e&&t!=="."&&t!==".."},gC=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",cC={win32:{sep:"\\"},posix:{sep:"/"}},lM=gC==="win32"?cC.win32.sep:cC.posix.sep;Zt.sep=lM;Ot=Symbol("globstar **");Zt.GLOBSTAR=Ot;cM="[^/]",uM=cM+"*?",dM="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",pM="(?:(?!(?:\\/|^)\\.).)*?",mM=(s,e={})=>t=>Zt(t,s,e);Zt.filter=mM;Mn=(s,e={})=>Object.assign({},s,e),gM=s=>{if(!s||typeof s!="object"||!Object.keys(s).length)return Zt;let e=Zt;return Object.assign((n,r,o={})=>e(n,r,Mn(s,o)),{Minimatch:class extends e.Minimatch{constructor(r,o={}){super(r,Mn(s,o));}static defaults(r){return e.defaults(Mn(s,r)).Minimatch}},AST:class extends e.AST{constructor(r,o,i={}){super(r,o,Mn(s,i));}static fromGlob(r,o={}){return e.AST.fromGlob(r,Mn(s,o))}},unescape:(n,r={})=>e.unescape(n,Mn(s,r)),escape:(n,r={})=>e.escape(n,Mn(s,r)),filter:(n,r={})=>e.filter(n,Mn(s,r)),defaults:n=>e.defaults(Mn(s,n)),makeRe:(n,r={})=>e.makeRe(n,Mn(s,r)),braceExpand:(n,r={})=>e.braceExpand(n,Mn(s,r)),match:(n,r,o={})=>e.match(n,r,Mn(s,o)),sep:e.sep,GLOBSTAR:Ot})};Zt.defaults=gM;hC=(s,e={})=>(Xi(s),e.nobrace||!/\{(?:(?!\{).)*\}/.test(s)?[s]:(0, dC.default)(s));Zt.braceExpand=hC;hM=(s,e={})=>new yn(s,e).makeRe();Zt.makeRe=hM;fM=(s,e,t={})=>{let n=new yn(e,t);return s=s.filter(r=>n.match(r)),n.options.nonull&&!s.length&&s.push(e),s};Zt.match=fM;uC=/[?*]|[+@!]\(.*?\)|\[|\]/,yM=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),yn=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,t={}){Xi(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||gC,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===false,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=false,this.nonegate=!!t.nonegate,this.comment=false,this.empty=false,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make();}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return true;for(let e of this.set)for(let t of e)if(typeof t!="string")return true;return false}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=true;return}if(!e){this.empty=true;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((o,i,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let l=o[0]===""&&o[1]===""&&(o[2]==="?"||!uC.test(o[2]))&&!uC.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(l)return [...o.slice(0,4),...o.slice(4).map(u=>this.parse(u))];if(c)return [o[0],...o.slice(1).map(u=>this.parse(u))]}return o.map(l=>this.parse(l))});if(this.debug(this.pattern,r),this.set=r.filter(o=>o.indexOf(false)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let i=this.set[o];i[0]===""&&i[1]===""&&this.globParts[o][2]==="?"&&typeof i[3]=="string"&&/^[a-z]:$/i.test(i[3])&&(i[2]="?");}this.debug(this.pattern,this.set);}preprocess(e){if(this.options.noglobstar)for(let n=0;n<e.length;n++)for(let r=0;r<e[n].length;r++)e[n][r]==="**"&&(e[n][r]="*");let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):t>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let n=-1;for(;(n=t.indexOf("**",n+1))!==-1;){let r=n;for(;t[r+1]==="**";)r++;r!==n&&t.splice(n,r-n);}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((n,r)=>{let o=n[n.length-1];return r==="**"&&o==="**"?n:r===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(n.pop(),n):(n.push(r),n)},[]),t.length===0?[""]:t))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=false;do{if(t=false,!this.preserveMultipleSlashes){for(let r=1;r<e.length-1;r++){let o=e[r];r===1&&o===""&&e[0]===""||(o==="."||o==="")&&(t=true,e.splice(r,1),r--);}e[0]==="."&&e.length===2&&(e[1]==="."||e[1]==="")&&(t=true,e.pop());}let n=0;for(;(n=e.indexOf("..",n+1))!==-1;){let r=e[n-1];r&&r!=="."&&r!==".."&&r!=="**"&&(t=true,e.splice(n-1,2),n-=2);}}while(t);return e.length===0?[""]:e}firstPhasePreProcess(e){let t=false;do{t=false;for(let n of e){let r=-1;for(;(r=n.indexOf("**",r+1))!==-1;){let i=r;for(;n[i+1]==="**";)i++;i>r&&n.splice(r+1,i-r);let a=n[r+1],l=n[r+2],c=n[r+3];if(a!==".."||!l||l==="."||l===".."||!c||c==="."||c==="..")continue;t=true,n.splice(r,1);let u=n.slice(0);u[r]="**",e.push(u),r--;}if(!this.preserveMultipleSlashes){for(let i=1;i<n.length-1;i++){let a=n[i];i===1&&a===""&&n[0]===""||(a==="."||a==="")&&(t=true,n.splice(i,1),i--);}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(t=true,n.pop());}let o=0;for(;(o=n.indexOf("..",o+1))!==-1;){let i=n[o-1];if(i&&i!=="."&&i!==".."&&i!=="**"){t=true;let l=o===1&&n[o+1]==="**"?["."]:[];n.splice(o-1,2,...l),n.length===0&&n.push(""),o-=2;}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let n=t+1;n<e.length;n++){let r=this.partsMatch(e[t],e[n],!this.preserveMultipleSlashes);if(r){e[t]=[],e[n]=r;break}}return e.filter(t=>t.length)}partsMatch(e,t,n=false){let r=0,o=0,i=[],a="";for(;r<e.length&&o<t.length;)if(e[r]===t[o])i.push(a==="b"?t[o]:e[r]),r++,o++;else if(n&&e[r]==="**"&&t[o]===e[r+1])i.push(e[r]),r++;else if(n&&t[o]==="**"&&e[r]===t[o+1])i.push(t[o]),o++;else if(e[r]==="*"&&t[o]&&(this.options.dot||!t[o].startsWith("."))&&t[o]!=="**"){if(a==="b")return false;a="a",i.push(e[r]),r++,o++;}else if(t[o]==="*"&&e[r]&&(this.options.dot||!e[r].startsWith("."))&&e[r]!=="**"){if(a==="a")return false;a="b",i.push(t[o]),r++,o++;}else return false;return e.length===t.length&&i}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=false,n=0;for(let r=0;r<e.length&&e.charAt(r)==="!";r++)t=!t,n++;n&&(this.pattern=e.slice(n)),this.negate=t;}matchOne(e,t,n=false){let r=this.options;if(this.isWindows){let y=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),b=!y&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),C=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),T=!C&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3]),S=b?3:y?0:void 0,E=T?3:C?0:void 0;if(typeof S=="number"&&typeof E=="number"){let[v,I]=[e[S],t[E]];v.toLowerCase()===I.toLowerCase()&&(t[E]=v,E>S?t=t.slice(E):S>E&&(e=e.slice(S)));}}let{optimizationLevel:o=1}=this.options;o>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var i=0,a=0,l=e.length,c=t.length;i<l&&a<c;i++,a++){this.debug("matchOne loop");var u=t[a],d=e[i];if(this.debug(t,u,d),u===false)return false;if(u===Ot){this.debug("GLOBSTAR",[t,u,d]);var m=i,g=a+1;if(g===c){for(this.debug("** at the end");i<l;i++)if(e[i]==="."||e[i]===".."||!r.dot&&e[i].charAt(0)===".")return false;return true}for(;m<l;){var h=e[m];if(this.debug(`
|
|
192
|
+
`),i=o.length,a=Math.min(i,n),l=o.slice(0,a);return {success:true,path:t,totalLines:i,startLine:1,endLine:a,content:qt(l,1),truncated:a<i,strategy:"full"}}buildSymbolPattern(e,t,n){let r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o={function:`(function|async\\s+function|const|let|var)\\s+${r}\\s*[=(<]`,class:`class\\s+${r}(\\s+extends|\\s+implements|\\s*\\{|\\s*$)`,interface:`interface\\s+${r}(\\s+extends|\\s*\\{|\\s*$)`,method:n?`(${r}|${n}\\.${r})\\s*\\(`:`${r}\\s*\\(`,variable:`(const|let|var)\\s+${r}\\s*[=:]`,type:`type\\s+${r}\\s*[=<]`,enum:`enum\\s+${r}\\s*\\{`,constant:`(const|final|static\\s+final)\\s+[A-Z_]+\\s*${r}`};return t&&o[t]?o[t]:`(function|class|interface|type|enum|const|let|var|def|fn|func)\\s+${r}|${r}\\s*(=|\\()`}resolvePath(e){return Ie.isAbsolute(e)?e:Ie.resolve(this.workspacePath,e)}errorResult(e,t){return {success:false,path:e,totalLines:0,startLine:0,endLine:0,content:"",truncated:false,strategy:"chunk",error:t}}};});var Kv=kl((fK,qv)=>{qv.exports=zv;function zv(s,e,t){s instanceof RegExp&&(s=Wv(s,t)),e instanceof RegExp&&(e=Wv(e,t));var n=Hv(s,e,t);return n&&{start:n[0],end:n[1],pre:t.slice(0,n[0]),body:t.slice(n[0]+s.length,n[1]),post:t.slice(n[1]+e.length)}}function Wv(s,e){var t=e.match(s);return t?t[0]:null}zv.range=Hv;function Hv(s,e,t){var n,r,o,i,a,l=t.indexOf(s),c=t.indexOf(e,l+1),u=l;if(l>=0&&c>0){if(s===e)return [l,c];for(n=[],o=t.length;u>=0&&!a;)u==l?(n.push(u),l=t.indexOf(s,u+1)):n.length==1?a=[n.pop(),c]:(r=n.pop(),r<o&&(o=r,i=c),c=t.indexOf(e,u+1)),u=l<c&&l>=0?l:c;n.length&&(a=[o,i]);}return a}});var tC=kl((yK,eC)=>{var Jv=Kv();eC.exports=MP;var Vv="\0SLASH"+Math.random()+"\0",Yv="\0OPEN"+Math.random()+"\0",wm="\0CLOSE"+Math.random()+"\0",Xv="\0COMMA"+Math.random()+"\0",Qv="\0PERIOD"+Math.random()+"\0";function Cm(s){return parseInt(s,10)==s?parseInt(s,10):s.charCodeAt(0)}function AP(s){return s.split("\\\\").join(Vv).split("\\{").join(Yv).split("\\}").join(wm).split("\\,").join(Xv).split("\\.").join(Qv)}function PP(s){return s.split(Vv).join("\\").split(Yv).join("{").split(wm).join("}").split(Xv).join(",").split(Qv).join(".")}function Zv(s){if(!s)return [""];var e=[],t=Jv("{","}",s);if(!t)return s.split(",");var n=t.pre,r=t.body,o=t.post,i=n.split(",");i[i.length-1]+="{"+r+"}";var a=Zv(o);return o.length&&(i[i.length-1]+=a.shift(),i.push.apply(i,a)),e.push.apply(e,i),e}function MP(s){return s?(s.substr(0,2)==="{}"&&(s="\\{\\}"+s.substr(2)),Yi(AP(s),true).map(PP)):[]}function RP(s){return "{"+s+"}"}function DP(s){return /^-?0\d/.test(s)}function LP(s,e){return s<=e}function NP(s,e){return s>=e}function Yi(s,e){var t=[],n=Jv("{","}",s);if(!n)return [s];var r=n.pre,o=n.post.length?Yi(n.post,false):[""];if(/\$$/.test(n.pre))for(var i=0;i<o.length;i++){var a=r+"{"+n.body+"}"+o[i];t.push(a);}else {var l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),u=l||c,d=n.body.indexOf(",")>=0;if(!u&&!d)return n.post.match(/,(?!,).*\}/)?(s=n.pre+"{"+n.body+wm+n.post,Yi(s)):[s];var m;if(u)m=n.body.split(/\.\./);else if(m=Zv(n.body),m.length===1&&(m=Yi(m[0],false).map(RP),m.length===1))return o.map(function(M){return n.pre+m[0]+M});var g;if(u){var h=Cm(m[0]),y=Cm(m[1]),b=Math.max(m[0].length,m[1].length),C=m.length==3?Math.abs(Cm(m[2])):1,T=LP,S=y<h;S&&(C*=-1,T=NP);var E=m.some(DP);g=[];for(var v=h;T(v,y);v+=C){var I;if(c)I=String.fromCharCode(v),I==="\\"&&(I="");else if(I=String(v),E){var D=b-I.length;if(D>0){var O=new Array(D+1).join("0");v<0?I="-"+O+I.slice(1):I=O+I;}}g.push(I);}}else {g=[];for(var k=0;k<m.length;k++)g.push.apply(g,Yi(m[k],false));}for(var k=0;k<g.length;k++)for(var i=0;i<o.length;i++){var a=r+g[k]+o[i];(!e||u||a)&&t.push(a);}}return t}});var Xi,nC=R(()=>{Xi=s=>{if(typeof s!="string")throw new TypeError("invalid pattern");if(s.length>65536)throw new TypeError("pattern is too long")};});var $P,Qi,OP,rC,sC,oC=R(()=>{$P={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",true],"[:alpha:]":["\\p{L}\\p{Nl}",true],"[:ascii:]":["\\x00-\\x7f",false],"[:blank:]":["\\p{Zs}\\t",true],"[:cntrl:]":["\\p{Cc}",true],"[:digit:]":["\\p{Nd}",true],"[:graph:]":["\\p{Z}\\p{C}",true,true],"[:lower:]":["\\p{Ll}",true],"[:print:]":["\\p{C}",true],"[:punct:]":["\\p{P}",true],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",true],"[:upper:]":["\\p{Lu}",true],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",true],"[:xdigit:]":["A-Fa-f0-9",false]},Qi=s=>s.replace(/[[\]\\-]/g,"\\$&"),OP=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rC=s=>s.join(""),sC=(s,e)=>{let t=e;if(s.charAt(t)!=="[")throw new Error("not in a brace expression");let n=[],r=[],o=t+1,i=false,a=false,l=false,c=false,u=t,d="";e:for(;o<s.length;){let y=s.charAt(o);if((y==="!"||y==="^")&&o===t+1){c=true,o++;continue}if(y==="]"&&i&&!l){u=o+1;break}if(i=true,y==="\\"&&!l){l=true,o++;continue}if(y==="["&&!l){for(let[b,[C,T,S]]of Object.entries($P))if(s.startsWith(b,o)){if(d)return ["$.",false,s.length-t,true];o+=b.length,S?r.push(C):n.push(C),a=a||T;continue e}}if(l=false,d){y>d?n.push(Qi(d)+"-"+Qi(y)):y===d&&n.push(Qi(y)),d="",o++;continue}if(s.startsWith("-]",o+1)){n.push(Qi(y+"-")),o+=2;continue}if(s.startsWith("-",o+1)){d=y,o+=2;continue}n.push(Qi(y)),o++;}if(u<o)return ["",false,0,false];if(!n.length&&!r.length)return ["$.",false,s.length-t,true];if(r.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!c){let y=n[0].length===2?n[0].slice(-1):n[0];return [OP(y),false,u-t,false]}let m="["+(c?"^":"")+rC(n)+"]",g="["+(c?"":"^")+rC(r)+"]";return [n.length&&r.length?"("+m+"|"+g+")":n.length?m:g,a,u-t,true]};});var On,lc=R(()=>{On=(s,{windowsPathsNoEscape:e=false}={})=>e?s.replace(/\[([^\/\\])\]/g,"$1"):s.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");});var BP,iC,FP,cc,UP,jP,GP,WP,Tm,aC,lC,Do,xm=R(()=>{oC();lc();BP=new Set(["!","?","+","*","@"]),iC=s=>BP.has(s),FP="(?!(?:^|/)\\.\\.?(?:$|/))",cc="(?!\\.)",UP=new Set(["[","."]),jP=new Set(["..","."]),GP=new Set("().*{}+?[]^$\\!"),WP=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Tm="[^/]",aC=Tm+"*?",lC=Tm+"+?",Do=class s{type;#e;#t;#o=false;#r=[];#i;#C;#c;#d=false;#a;#l;#s=false;constructor(e,t,n={}){this.type=e,e&&(this.#t=true),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?n:this.#e.#a,this.#c=this.#e===this?[]:this.#e.#c,e==="!"&&!this.#e.#d&&this.#c.push(this),this.#C=this.#i?this.#i.#r.length:0;}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let e of this.#r)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#t=true;return this.#t}toString(){return this.#l!==void 0?this.#l:this.type?this.#l=this.type+"("+this.#r.map(e=>String(e)).join("|")+")":this.#l=this.#r.map(e=>String(e)).join("")}#f(){if(this!==this.#e)throw new Error("should only call on root");if(this.#d)return this;this.toString(),this.#d=true;let e;for(;e=this.#c.pop();){if(e.type!=="!")continue;let t=e,n=t.#i;for(;n;){for(let r=t.#C+1;!n.type&&r<n.#r.length;r++)for(let o of e.#r){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(n.#r[r]);}t=n,n=t.#i;}}return this}push(...e){for(let t of e)if(t!==""){if(typeof t!="string"&&!(t instanceof s&&t.#i===this))throw new Error("invalid part: "+t);this.#r.push(t);}}toJSON(){let e=this.type===null?this.#r.slice().map(t=>typeof t=="string"?t:t.toJSON()):[this.type,...this.#r.map(t=>t.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#d&&this.#i?.type==="!")&&e.push({}),e}isStart(){if(this.#e===this)return true;if(!this.#i?.isStart())return false;if(this.#C===0)return true;let e=this.#i;for(let t=0;t<this.#C;t++){let n=e.#r[t];if(!(n instanceof s&&n.type==="!"))return false}return true}isEnd(){if(this.#e===this||this.#i?.type==="!")return true;if(!this.#i?.isEnd())return false;if(!this.type)return this.#i?.isEnd();let e=this.#i?this.#i.#r.length:0;return this.#C===e-1}copyIn(e){typeof e=="string"?this.push(e):this.push(e.clone(this));}clone(e){let t=new s(this.type,e);for(let n of this.#r)t.copyIn(n);return t}static#y(e,t,n,r){let o=false,i=false,a=-1,l=false;if(t.type===null){let g=n,h="";for(;g<e.length;){let y=e.charAt(g++);if(o||y==="\\"){o=!o,h+=y;continue}if(i){g===a+1?(y==="^"||y==="!")&&(l=true):y==="]"&&!(g===a+2&&l)&&(i=false),h+=y;continue}else if(y==="["){i=true,a=g,l=false,h+=y;continue}if(!r.noext&&iC(y)&&e.charAt(g)==="("){t.push(h),h="";let b=new s(y,t);g=s.#y(e,b,g,r),t.push(b);continue}h+=y;}return t.push(h),g}let c=n+1,u=new s(null,t),d=[],m="";for(;c<e.length;){let g=e.charAt(c++);if(o||g==="\\"){o=!o,m+=g;continue}if(i){c===a+1?(g==="^"||g==="!")&&(l=true):g==="]"&&!(c===a+2&&l)&&(i=false),m+=g;continue}else if(g==="["){i=true,a=c,l=false,m+=g;continue}if(iC(g)&&e.charAt(c)==="("){u.push(m),m="";let h=new s(g,u);u.push(h),c=s.#y(e,h,c,r);continue}if(g==="|"){u.push(m),m="",d.push(u),u=new s(null,t);continue}if(g===")")return m===""&&t.#r.length===0&&(t.#s=true),u.push(m),m="",t.push(...d,u),c;m+=g;}return t.type=null,t.#t=void 0,t.#r=[e.substring(n-1)],c}static fromGlob(e,t={}){let n=new s(null,void 0,t);return s.#y(e,n,0,t),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let e=this.toString(),[t,n,r,o]=this.toRegExpSource();if(!(r||this.#t||this.#a.nocase&&!this.#a.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;let a=(this.#a.nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#a}toRegExpSource(e){let t=e??!!this.#a.dot;if(this.#e===this&&this.#f(),!this.type){let l=this.isStart()&&this.isEnd(),c=this.#r.map(g=>{let[h,y,b,C]=typeof g=="string"?s.#p(g,this.#t,l):g.toRegExpSource(e);return this.#t=this.#t||b,this.#o=this.#o||C,h}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&jP.has(this.#r[0]))){let h=UP,y=t&&h.has(c.charAt(0))||c.startsWith("\\.")&&h.has(c.charAt(2))||c.startsWith("\\.\\.")&&h.has(c.charAt(4)),b=!t&&!e&&h.has(c.charAt(0));u=y?FP:b?cc:"";}let d="";return this.isEnd()&&this.#e.#d&&this.#i?.type==="!"&&(d="(?:$|\\/)"),[u+c+d,On(c),this.#t=!!this.#t,this.#o]}let n=this.type==="*"||this.type==="+",r=this.type==="!"?"(?:(?!(?:":"(?:",o=this.#m(t);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let l=this.toString();return this.#r=[l],this.type=null,this.#t=void 0,[l,On(this.toString()),false,false]}let i=!n||e||t||!cc?"":this.#m(true);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let a="";if(this.type==="!"&&this.#s)a=(this.isStart()&&!t?cc:"")+lC;else {let l=this.type==="!"?"))"+(this.isStart()&&!t&&!e?cc:"")+aC+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&i?")":this.type==="*"&&i?")?":`)${this.type}`;a=r+o+l;}return [a,On(o),this.#t=!!this.#t,this.#o]}#m(e){return this.#r.map(t=>{if(typeof t=="string")throw new Error("string type in extglob ast??");let[n,r,o,i]=t.toRegExpSource(e);return this.#o=this.#o||i,n}).filter(t=>!(this.isStart()&&this.isEnd())||!!t).join("|")}static#p(e,t,n=false){let r=false,o="",i=false;for(let a=0;a<e.length;a++){let l=e.charAt(a);if(r){r=false,o+=(GP.has(l)?"\\":"")+l;continue}if(l==="\\"){a===e.length-1?o+="\\\\":r=true;continue}if(l==="["){let[c,u,d,m]=sC(e,a);if(d){o+=c,i=i||u,a+=d-1,t=t||m;continue}}if(l==="*"){n&&e==="*"?o+=lC:o+=aC,t=true;continue}if(l==="?"){o+=Tm,t=true;continue}o+=WP(l);}return [o,On(e),!!t,i]}};});var Lo,Sm=R(()=>{Lo=(s,{windowsPathsNoEscape:e=false}={})=>e?s.replace(/[?*()[\]]/g,"[$&]"):s.replace(/[?*()[\]\\]/g,"\\$&");});var dC,Zt,zP,HP,qP,KP,JP,VP,YP,XP,QP,ZP,eM,tM,nM,rM,sM,oM,iM,aM,pC,mC,gC,cC,lM,Ot,cM,uM,dM,pM,mM,Mn,gM,hC,hM,fM,uC,yM,yn,Zr=R(()=>{dC=pb(tC());nC();xm();Sm();lc();xm();Sm();lc();Zt=(s,e,t={})=>(Xi(e),!t.nocomment&&e.charAt(0)==="#"?false:new yn(e,t).match(s)),zP=/^\*+([^+@!?\*\[\(]*)$/,HP=s=>e=>!e.startsWith(".")&&e.endsWith(s),qP=s=>e=>e.endsWith(s),KP=s=>(s=s.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(s)),JP=s=>(s=s.toLowerCase(),e=>e.toLowerCase().endsWith(s)),VP=/^\*+\.\*+$/,YP=s=>!s.startsWith(".")&&s.includes("."),XP=s=>s!=="."&&s!==".."&&s.includes("."),QP=/^\.\*+$/,ZP=s=>s!=="."&&s!==".."&&s.startsWith("."),eM=/^\*+$/,tM=s=>s.length!==0&&!s.startsWith("."),nM=s=>s.length!==0&&s!=="."&&s!=="..",rM=/^\?+([^+@!?\*\[\(]*)?$/,sM=([s,e=""])=>{let t=pC([s]);return e?(e=e.toLowerCase(),n=>t(n)&&n.toLowerCase().endsWith(e)):t},oM=([s,e=""])=>{let t=mC([s]);return e?(e=e.toLowerCase(),n=>t(n)&&n.toLowerCase().endsWith(e)):t},iM=([s,e=""])=>{let t=mC([s]);return e?n=>t(n)&&n.endsWith(e):t},aM=([s,e=""])=>{let t=pC([s]);return e?n=>t(n)&&n.endsWith(e):t},pC=([s])=>{let e=s.length;return t=>t.length===e&&!t.startsWith(".")},mC=([s])=>{let e=s.length;return t=>t.length===e&&t!=="."&&t!==".."},gC=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",cC={win32:{sep:"\\"},posix:{sep:"/"}},lM=gC==="win32"?cC.win32.sep:cC.posix.sep;Zt.sep=lM;Ot=Symbol("globstar **");Zt.GLOBSTAR=Ot;cM="[^/]",uM=cM+"*?",dM="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",pM="(?:(?!(?:\\/|^)\\.).)*?",mM=(s,e={})=>t=>Zt(t,s,e);Zt.filter=mM;Mn=(s,e={})=>Object.assign({},s,e),gM=s=>{if(!s||typeof s!="object"||!Object.keys(s).length)return Zt;let e=Zt;return Object.assign((n,r,o={})=>e(n,r,Mn(s,o)),{Minimatch:class extends e.Minimatch{constructor(r,o={}){super(r,Mn(s,o));}static defaults(r){return e.defaults(Mn(s,r)).Minimatch}},AST:class extends e.AST{constructor(r,o,i={}){super(r,o,Mn(s,i));}static fromGlob(r,o={}){return e.AST.fromGlob(r,Mn(s,o))}},unescape:(n,r={})=>e.unescape(n,Mn(s,r)),escape:(n,r={})=>e.escape(n,Mn(s,r)),filter:(n,r={})=>e.filter(n,Mn(s,r)),defaults:n=>e.defaults(Mn(s,n)),makeRe:(n,r={})=>e.makeRe(n,Mn(s,r)),braceExpand:(n,r={})=>e.braceExpand(n,Mn(s,r)),match:(n,r,o={})=>e.match(n,r,Mn(s,o)),sep:e.sep,GLOBSTAR:Ot})};Zt.defaults=gM;hC=(s,e={})=>(Xi(s),e.nobrace||!/\{(?:(?!\{).)*\}/.test(s)?[s]:(0, dC.default)(s));Zt.braceExpand=hC;hM=(s,e={})=>new yn(s,e).makeRe();Zt.makeRe=hM;fM=(s,e,t={})=>{let n=new yn(e,t);return s=s.filter(r=>n.match(r)),n.options.nonull&&!s.length&&s.push(e),s};Zt.match=fM;uC=/[?*]|[+@!]\(.*?\)|\[|\]/,yM=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),yn=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,t={}){Xi(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||gC,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===false,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=false,this.nonegate=!!t.nonegate,this.comment=false,this.empty=false,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make();}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return true;for(let e of this.set)for(let t of e)if(typeof t!="string")return true;return false}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=true;return}if(!e){this.empty=true;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((o,i,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let l=o[0]===""&&o[1]===""&&(o[2]==="?"||!uC.test(o[2]))&&!uC.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(l)return [...o.slice(0,4),...o.slice(4).map(u=>this.parse(u))];if(c)return [o[0],...o.slice(1).map(u=>this.parse(u))]}return o.map(l=>this.parse(l))});if(this.debug(this.pattern,r),this.set=r.filter(o=>o.indexOf(false)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let i=this.set[o];i[0]===""&&i[1]===""&&this.globParts[o][2]==="?"&&typeof i[3]=="string"&&/^[a-z]:$/i.test(i[3])&&(i[2]="?");}this.debug(this.pattern,this.set);}preprocess(e){if(this.options.noglobstar)for(let n=0;n<e.length;n++)for(let r=0;r<e[n].length;r++)e[n][r]==="**"&&(e[n][r]="*");let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):t>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let n=-1;for(;(n=t.indexOf("**",n+1))!==-1;){let r=n;for(;t[r+1]==="**";)r++;r!==n&&t.splice(n,r-n);}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((n,r)=>{let o=n[n.length-1];return r==="**"&&o==="**"?n:r===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(n.pop(),n):(n.push(r),n)},[]),t.length===0?[""]:t))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=false;do{if(t=false,!this.preserveMultipleSlashes){for(let r=1;r<e.length-1;r++){let o=e[r];r===1&&o===""&&e[0]===""||(o==="."||o==="")&&(t=true,e.splice(r,1),r--);}e[0]==="."&&e.length===2&&(e[1]==="."||e[1]==="")&&(t=true,e.pop());}let n=0;for(;(n=e.indexOf("..",n+1))!==-1;){let r=e[n-1];r&&r!=="."&&r!==".."&&r!=="**"&&(t=true,e.splice(n-1,2),n-=2);}}while(t);return e.length===0?[""]:e}firstPhasePreProcess(e){let t=false;do{t=false;for(let n of e){let r=-1;for(;(r=n.indexOf("**",r+1))!==-1;){let i=r;for(;n[i+1]==="**";)i++;i>r&&n.splice(r+1,i-r);let a=n[r+1],l=n[r+2],c=n[r+3];if(a!==".."||!l||l==="."||l===".."||!c||c==="."||c==="..")continue;t=true,n.splice(r,1);let u=n.slice(0);u[r]="**",e.push(u),r--;}if(!this.preserveMultipleSlashes){for(let i=1;i<n.length-1;i++){let a=n[i];i===1&&a===""&&n[0]===""||(a==="."||a==="")&&(t=true,n.splice(i,1),i--);}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(t=true,n.pop());}let o=0;for(;(o=n.indexOf("..",o+1))!==-1;){let i=n[o-1];if(i&&i!=="."&&i!==".."&&i!=="**"){t=true;let l=o===1&&n[o+1]==="**"?["."]:[];n.splice(o-1,2,...l),n.length===0&&n.push(""),o-=2;}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let n=t+1;n<e.length;n++){let r=this.partsMatch(e[t],e[n],!this.preserveMultipleSlashes);if(r){e[t]=[],e[n]=r;break}}return e.filter(t=>t.length)}partsMatch(e,t,n=false){let r=0,o=0,i=[],a="";for(;r<e.length&&o<t.length;)if(e[r]===t[o])i.push(a==="b"?t[o]:e[r]),r++,o++;else if(n&&e[r]==="**"&&t[o]===e[r+1])i.push(e[r]),r++;else if(n&&t[o]==="**"&&e[r]===t[o+1])i.push(t[o]),o++;else if(e[r]==="*"&&t[o]&&(this.options.dot||!t[o].startsWith("."))&&t[o]!=="**"){if(a==="b")return false;a="a",i.push(e[r]),r++,o++;}else if(t[o]==="*"&&e[r]&&(this.options.dot||!e[r].startsWith("."))&&e[r]!=="**"){if(a==="a")return false;a="b",i.push(t[o]),r++,o++;}else return false;return e.length===t.length&&i}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=false,n=0;for(let r=0;r<e.length&&e.charAt(r)==="!";r++)t=!t,n++;n&&(this.pattern=e.slice(n)),this.negate=t;}matchOne(e,t,n=false){let r=this.options;if(this.isWindows){let y=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),b=!y&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),C=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),T=!C&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3]),S=b?3:y?0:void 0,E=T?3:C?0:void 0;if(typeof S=="number"&&typeof E=="number"){let[v,I]=[e[S],t[E]];v.toLowerCase()===I.toLowerCase()&&(t[E]=v,E>S?t=t.slice(E):S>E&&(e=e.slice(S)));}}let{optimizationLevel:o=1}=this.options;o>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var i=0,a=0,l=e.length,c=t.length;i<l&&a<c;i++,a++){this.debug("matchOne loop");var u=t[a],d=e[i];if(this.debug(t,u,d),u===false)return false;if(u===Ot){this.debug("GLOBSTAR",[t,u,d]);var m=i,g=a+1;if(g===c){for(this.debug("** at the end");i<l;i++)if(e[i]==="."||e[i]===".."||!r.dot&&e[i].charAt(0)===".")return false;return true}for(;m<l;){var h=e[m];if(this.debug(`
|
|
193
193
|
globstar while`,e,m,t,g,h),this.matchOne(e.slice(m),t.slice(g),n))return this.debug("globstar found match!",m,l,h),true;if(h==="."||h===".."||!r.dot&&h.charAt(0)==="."){this.debug("dot detected!",e,m,t,g);break}this.debug("globstar swallow a segment, and continue"),m++;}return !!(n&&(this.debug(`
|
|
194
|
-
>>> no match, partial?`,e,m,t,g),m===l))}let y;if(typeof u=="string"?(y=d===u,this.debug("string match",u,d,y)):(y=u.test(d),this.debug("pattern match",u,d,y)),!y)return false}if(i===l&&a===c)return true;if(i===l)return n;if(a===c)return i===l-1&&e[i]==="";throw new Error("wtf?")}braceExpand(){return hC(this.pattern,this.options)}parse(e){Xi(e);let t=this.options;if(e==="**")return Ot;if(e==="")return "";let n,r=null;(n=e.match(eM))?r=t.dot?nM:tM:(n=e.match(zP))?r=(t.nocase?t.dot?JP:KP:t.dot?qP:HP)(n[1]):(n=e.match(rM))?r=(t.nocase?t.dot?oM:sM:t.dot?iM:aM)(n):(n=e.match(VP))?r=t.dot?XP:YP:(n=e.match(QP))&&(r=ZP);let o=Do.fromGlob(e,this.options).toMMPattern();return r&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:r}),o}makeRe(){if(this.regexp||this.regexp===false)return this.regexp;let e=this.set;if(!e.length)return this.regexp=false,this.regexp;let t=this.options,n=t.noglobstar?uM:t.dot?dM:pM,r=new Set(t.nocase?["i"]:[]),o=e.map(l=>{let c=l.map(u=>{if(u instanceof RegExp)for(let d of u.flags.split(""))r.add(d);return typeof u=="string"?yM(u):u===Ot?Ot:u._src});return c.forEach((u,d)=>{let m=c[d+1],g=c[d-1];u!==Ot||g===Ot||(g===void 0?m!==void 0&&m!==Ot?c[d+1]="(?:\\/|"+n+"\\/)?"+m:c[d]=n:m===void 0?c[d-1]=g+"(?:\\/|"+n+")?":m!==Ot&&(c[d-1]=g+"(?:\\/|\\/"+n+"\\/)"+m,c[d+1]=Ot));}),c.filter(u=>u!==Ot).join("/")}).join("|"),[i,a]=e.length>1?["(?:",")"]:["",""];o="^"+i+o+a+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...r].join(""));}catch{this.regexp=false;}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return false;if(this.empty)return e==="";if(e==="/"&&t)return true;let n=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let o=this.set;this.debug(this.pattern,"set",o);let i=r[r.length-1];if(!i)for(let a=r.length-2;!i&&a>=0;a--)i=r[a];for(let a=0;a<o.length;a++){let l=o[a],c=r;if(n.matchBase&&l.length===1&&(c=[i]),this.matchOne(c,l,t))return n.flipNegate?true:!this.negate}return n.flipNegate?false:this.negate}static defaults(e){return Zt.defaults(e).Minimatch}};Zt.AST=Do;Zt.Minimatch=yn;Zt.escape=Lo;Zt.unescape=On;});var No,yC,km,bC,uc,fC,bM,ts,vC,$o,_m,Zi,CC=R(()=>{No=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,yC=new Set,km=typeof process=="object"&&process?process:{},bC=(s,e,t,n)=>{typeof km.emitWarning=="function"?km.emitWarning(s,e,t,n):console.error(`[${t}] ${e}: ${s}`);},uc=globalThis.AbortController,fC=globalThis.AbortSignal;if(typeof uc>"u"){fC=class{onabort;_onabort=[];reason;aborted=false;addEventListener(n,r){this._onabort.push(r);}},uc=class{constructor(){e();}signal=new fC;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=true;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n);}}};let s=km.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{s&&(s=false,bC("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e));};}bM=s=>!yC.has(s),ts=s=>s&&s===Math.floor(s)&&s>0&&isFinite(s),vC=s=>ts(s)?s<=Math.pow(2,8)?Uint8Array:s<=Math.pow(2,16)?Uint16Array:s<=Math.pow(2,32)?Uint32Array:s<=Number.MAX_SAFE_INTEGER?$o:null:null,$o=class extends Array{constructor(e){super(e),this.fill(0);}},_m=class s{heap;length;static#e=false;static create(e){let t=vC(e);if(!t)return [];s.#e=true;let n=new s(e,t);return s.#e=false,n}constructor(e,t){if(!s.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0;}push(e){this.heap[this.length++]=e;}pop(){return this.heap[--this.length]}},Zi=class s{#e;#t;#o;#r;#i;#C;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#c;#d;#a;#l;#s;#f;#y;#m;#p;#x;#h;#S;#k;#v;#w;#T;#g;static unsafeExposeInternals(e){return {starts:e.#k,ttls:e.#v,sizes:e.#S,keyMap:e.#a,keyList:e.#l,valList:e.#s,next:e.#f,prev:e.#y,get head(){return e.#m},get tail(){return e.#p},free:e.#x,isBackgroundFetch:t=>e.#u(t),backgroundFetch:(t,n,r,o)=>e.#B(t,n,r,o),moveToTail:t=>e.#U(t),indexes:t=>e.#I(t),rindexes:t=>e.#E(t),isStale:t=>e.#b(t)}}get max(){return this.#e}get maxSize(){return this.#t}get calculatedSize(){return this.#d}get size(){return this.#c}get fetchMethod(){return this.#i}get memoMethod(){return this.#C}get dispose(){return this.#o}get disposeAfter(){return this.#r}constructor(e){let{max:t=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:i,updateAgeOnHas:a,allowStale:l,dispose:c,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:m,maxSize:g=0,maxEntrySize:h=0,sizeCalculation:y,fetchMethod:b,memoMethod:C,noDeleteOnFetchRejection:T,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:E,allowStaleOnFetchAbort:v,ignoreFetchAbort:I}=e;if(t!==0&&!ts(t))throw new TypeError("max option must be a nonnegative integer");let D=t?vC(t):Array;if(!D)throw new Error("invalid max value: "+t);if(this.#e=t,this.#t=g,this.maxEntrySize=h||this.#t,this.sizeCalculation=y,this.sizeCalculation){if(!this.#t&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(C!==void 0&&typeof C!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#C=C,b!==void 0&&typeof b!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#i=b,this.#T=!!b,this.#a=new Map,this.#l=new Array(t).fill(void 0),this.#s=new Array(t).fill(void 0),this.#f=new D(t),this.#y=new D(t),this.#m=0,this.#p=0,this.#x=_m.create(t),this.#c=0,this.#d=0,typeof c=="function"&&(this.#o=c),typeof u=="function"?(this.#r=u,this.#h=[]):(this.#r=void 0,this.#h=void 0),this.#w=!!this.#o,this.#g=!!this.#r,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!T,this.allowStaleOnFetchRejection=!!E,this.allowStaleOnFetchAbort=!!v,this.ignoreFetchAbort=!!I,this.maxEntrySize!==0){if(this.#t!==0&&!ts(this.#t))throw new TypeError("maxSize must be a positive integer if specified");if(!ts(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#P();}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!a,this.ttlResolution=ts(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!ts(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#A();}if(this.#e===0&&this.ttl===0&&this.#t===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#t){let O="LRU_CACHE_UNBOUNDED";bM(O)&&(yC.add(O),bC("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",O,s));}}getRemainingTTL(e){return this.#a.has(e)?1/0:0}#A(){let e=new $o(this.#e),t=new $o(this.#e);this.#v=e,this.#k=t,this.#R=(o,i,a=No.now())=>{if(t[o]=i!==0?a:0,e[o]=i,i!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#b(o)&&this.#M(this.#l[o],"expire");},i+1);l.unref&&l.unref();}},this.#_=o=>{t[o]=e[o]!==0?No.now():0;},this.#n=(o,i)=>{if(e[i]){let a=e[i],l=t[i];if(!a||!l)return;o.ttl=a,o.start=l,o.now=n||r();let c=o.now-l;o.remainingTTL=a-c;}};let n=0,r=()=>{let o=No.now();if(this.ttlResolution>0){n=o;let i=setTimeout(()=>n=0,this.ttlResolution);i.unref&&i.unref();}return o};this.getRemainingTTL=o=>{let i=this.#a.get(o);if(i===void 0)return 0;let a=e[i],l=t[i];if(!a||!l)return 1/0;let c=(n||r())-l;return a-c},this.#b=o=>{let i=t[o],a=e[o];return !!a&&!!i&&(n||r())-i>a};}#_=()=>{};#n=()=>{};#R=()=>{};#b=()=>false;#P(){let e=new $o(this.#e);this.#d=0,this.#S=e,this.#D=t=>{this.#d-=e[t],e[t]=0;},this.#N=(t,n,r,o)=>{if(this.#u(n))return 0;if(!ts(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,t),!ts(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#L=(t,n,r)=>{if(e[t]=n,this.#t){let o=this.#t-e[t];for(;this.#d>o;)this.#O(true);}this.#d+=e[t],r&&(r.entrySize=n,r.totalCalculatedSize=this.#d);};}#D=e=>{};#L=(e,t,n)=>{};#N=(e,t,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:e=this.allowStale}={}){if(this.#c)for(let t=this.#p;!(!this.#$(t)||((e||!this.#b(t))&&(yield t),t===this.#m));)t=this.#y[t];}*#E({allowStale:e=this.allowStale}={}){if(this.#c)for(let t=this.#m;!(!this.#$(t)||((e||!this.#b(t))&&(yield t),t===this.#p));)t=this.#f[t];}#$(e){return e!==void 0&&this.#a.get(this.#l[e])===e}*entries(){for(let e of this.#I())this.#s[e]!==void 0&&this.#l[e]!==void 0&&!this.#u(this.#s[e])&&(yield [this.#l[e],this.#s[e]]);}*rentries(){for(let e of this.#E())this.#s[e]!==void 0&&this.#l[e]!==void 0&&!this.#u(this.#s[e])&&(yield [this.#l[e],this.#s[e]]);}*keys(){for(let e of this.#I()){let t=this.#l[e];t!==void 0&&!this.#u(this.#s[e])&&(yield t);}}*rkeys(){for(let e of this.#E()){let t=this.#l[e];t!==void 0&&!this.#u(this.#s[e])&&(yield t);}}*values(){for(let e of this.#I())this.#s[e]!==void 0&&!this.#u(this.#s[e])&&(yield this.#s[e]);}*rvalues(){for(let e of this.#E())this.#s[e]!==void 0&&!this.#u(this.#s[e])&&(yield this.#s[e]);}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let n of this.#I()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#l[n],this))return this.get(this.#l[n],t)}}forEach(e,t=this){for(let n of this.#I()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(t,o,this.#l[n],this);}}rforEach(e,t=this){for(let n of this.#E()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(t,o,this.#l[n],this);}}purgeStale(){let e=false;for(let t of this.#E({allowStale:true}))this.#b(t)&&(this.#M(this.#l[t],"expire"),e=true);return e}info(e){let t=this.#a.get(e);if(t===void 0)return;let n=this.#s[t],r=this.#u(n)?n.__staleWhileFetching:n;if(r===void 0)return;let o={value:r};if(this.#v&&this.#k){let i=this.#v[t],a=this.#k[t];if(i&&a){let l=i-(No.now()-a);o.ttl=l,o.start=Date.now();}}return this.#S&&(o.size=this.#S[t]),o}dump(){let e=[];for(let t of this.#I({allowStale:true})){let n=this.#l[t],r=this.#s[t],o=this.#u(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let i={value:o};if(this.#v&&this.#k){i.ttl=this.#v[t];let a=No.now()-this.#k[t];i.start=Math.floor(Date.now()-a);}this.#S&&(i.size=this.#S[t]),e.unshift([n,i]);}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let r=Date.now()-n.start;n.start=No.now()-r;}this.set(t,n.value,n);}}set(e,t,n={}){if(t===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:c=this.noUpdateTTL}=n,u=this.#N(e,t,n.size||0,a);if(this.maxEntrySize&&u>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=true),this.#M(e,"set"),this;let d=this.#c===0?void 0:this.#a.get(e);if(d===void 0)d=this.#c===0?this.#p:this.#x.length!==0?this.#x.pop():this.#c===this.#e?this.#O(false):this.#c,this.#l[d]=e,this.#s[d]=t,this.#a.set(e,d),this.#f[this.#p]=d,this.#y[d]=this.#p,this.#p=d,this.#c++,this.#L(d,u,l),l&&(l.set="add"),c=false;else {this.#U(d);let m=this.#s[d];if(t!==m){if(this.#T&&this.#u(m)){m.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=m;g!==void 0&&!i&&(this.#w&&this.#o?.(g,e,"set"),this.#g&&this.#h?.push([g,e,"set"]));}else i||(this.#w&&this.#o?.(m,e,"set"),this.#g&&this.#h?.push([m,e,"set"]));if(this.#D(d),this.#L(d,u,l),this.#s[d]=t,l){l.set="replace";let g=m&&this.#u(m)?m.__staleWhileFetching:m;g!==void 0&&(l.oldValue=g);}}else l&&(l.set="update");}if(r!==0&&!this.#v&&this.#A(),this.#v&&(c||this.#R(d,r,o),l&&this.#n(l,d)),!i&&this.#g&&this.#h){let m=this.#h,g;for(;g=m?.shift();)this.#r?.(...g);}return this}pop(){try{for(;this.#c;){let e=this.#s[this.#m];if(this.#O(!0),this.#u(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#g&&this.#h){let e=this.#h,t;for(;t=e?.shift();)this.#r?.(...t);}}}#O(e){let t=this.#m,n=this.#l[t],r=this.#s[t];return this.#T&&this.#u(r)?r.__abortController.abort(new Error("evicted")):(this.#w||this.#g)&&(this.#w&&this.#o?.(r,n,"evict"),this.#g&&this.#h?.push([r,n,"evict"])),this.#D(t),e&&(this.#l[t]=void 0,this.#s[t]=void 0,this.#x.push(t)),this.#c===1?(this.#m=this.#p=0,this.#x.length=0):this.#m=this.#f[t],this.#a.delete(n),this.#c--,t}has(e,t={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=t,o=this.#a.get(e);if(o!==void 0){let i=this.#s[o];if(this.#u(i)&&i.__staleWhileFetching===void 0)return false;if(this.#b(o))r&&(r.has="stale",this.#n(r,o));else return n&&this.#_(o),r&&(r.has="hit",this.#n(r,o)),true}else r&&(r.has="miss");return false}peek(e,t={}){let{allowStale:n=this.allowStale}=t,r=this.#a.get(e);if(r===void 0||!n&&this.#b(r))return;let o=this.#s[r];return this.#u(o)?o.__staleWhileFetching:o}#B(e,t,n,r){let o=t===void 0?void 0:this.#s[t];if(this.#u(o))return o;let i=new uc,{signal:a}=n;a?.addEventListener("abort",()=>i.abort(a.reason),{signal:i.signal});let l={signal:i.signal,options:n,context:r},c=(y,b=false)=>{let{aborted:C}=i.signal,T=n.ignoreFetchAbort&&y!==void 0;if(n.status&&(C&&!b?(n.status.fetchAborted=true,n.status.fetchError=i.signal.reason,T&&(n.status.fetchAbortIgnored=true)):n.status.fetchResolved=true),C&&!T&&!b)return d(i.signal.reason);let S=g;return this.#s[t]===g&&(y===void 0?S.__staleWhileFetching?this.#s[t]=S.__staleWhileFetching:this.#M(e,"fetch"):(n.status&&(n.status.fetchUpdated=true),this.set(e,y,l.options))),y},u=y=>(n.status&&(n.status.fetchRejected=true,n.status.fetchError=y),d(y)),d=y=>{let{aborted:b}=i.signal,C=b&&n.allowStaleOnFetchAbort,T=C||n.allowStaleOnFetchRejection,S=T||n.noDeleteOnFetchRejection,E=g;if(this.#s[t]===g&&(!S||E.__staleWhileFetching===void 0?this.#M(e,"fetch"):C||(this.#s[t]=E.__staleWhileFetching)),T)return n.status&&E.__staleWhileFetching!==void 0&&(n.status.returnedStale=true),E.__staleWhileFetching;if(E.__returned===E)throw y},m=(y,b)=>{let C=this.#i?.(e,o,l);C&&C instanceof Promise&&C.then(T=>y(T===void 0?void 0:T),b),i.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(y(void 0),n.allowStaleOnFetchAbort&&(y=T=>c(T,true)));});};n.status&&(n.status.fetchDispatched=true);let g=new Promise(m).then(c,u),h=Object.assign(g,{__abortController:i,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,h,{...l.options,status:void 0}),t=this.#a.get(e)):this.#s[t]=h,h}#u(e){if(!this.#T)return false;let t=e;return !!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof uc}async fetch(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:d=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:m=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:y,forceRefresh:b=false,status:C,signal:T}=t;if(!this.#T)return C&&(C.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:C});let S={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:i,noDisposeOnSet:a,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:d,allowStaleOnFetchRejection:m,allowStaleOnFetchAbort:h,ignoreFetchAbort:g,status:C,signal:T},E=this.#a.get(e);if(E===void 0){C&&(C.fetch="miss");let v=this.#B(e,E,S,y);return v.__returned=v}else {let v=this.#s[E];if(this.#u(v)){let M=n&&v.__staleWhileFetching!==void 0;return C&&(C.fetch="inflight",M&&(C.returnedStale=true)),M?v.__staleWhileFetching:v.__returned=v}let I=this.#b(E);if(!b&&!I)return C&&(C.fetch="hit"),this.#U(E),r&&this.#_(E),C&&this.#n(C,E),v;let D=this.#B(e,E,S,y),k=D.__staleWhileFetching!==void 0&&n;return C&&(C.fetch=I?"stale":"refresh",k&&I&&(C.returnedStale=true)),k?D.__staleWhileFetching:D.__returned=D}}async forceFetch(e,t={}){let n=await this.fetch(e,t);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,t={}){let n=this.#C;if(!n)throw new Error("no memoMethod provided to constructor");let{context:r,forceRefresh:o,...i}=t,a=this.get(e,i);if(!o&&a!==void 0)return a;let l=n(e,a,{options:i,context:r});return this.set(e,l,i),l}get(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:i}=t,a=this.#a.get(e);if(a!==void 0){let l=this.#s[a],c=this.#u(l);return i&&this.#n(i,a),this.#b(a)?(i&&(i.get="stale"),c?(i&&n&&l.__staleWhileFetching!==void 0&&(i.returnedStale=true),n?l.__staleWhileFetching:void 0):(o||this.#M(e,"expire"),i&&n&&(i.returnedStale=true),n?l:void 0)):(i&&(i.get="hit"),c?l.__staleWhileFetching:(this.#U(a),r&&this.#_(a),l))}else i&&(i.get="miss");}#F(e,t){this.#y[t]=e,this.#f[e]=t;}#U(e){e!==this.#p&&(e===this.#m?this.#m=this.#f[e]:this.#F(this.#y[e],this.#f[e]),this.#F(this.#p,e),this.#p=e);}delete(e){return this.#M(e,"delete")}#M(e,t){let n=false;if(this.#c!==0){let r=this.#a.get(e);if(r!==void 0)if(n=true,this.#c===1)this.#j(t);else {this.#D(r);let o=this.#s[r];if(this.#u(o)?o.__abortController.abort(new Error("deleted")):(this.#w||this.#g)&&(this.#w&&this.#o?.(o,e,t),this.#g&&this.#h?.push([o,e,t])),this.#a.delete(e),this.#l[r]=void 0,this.#s[r]=void 0,r===this.#p)this.#p=this.#y[r];else if(r===this.#m)this.#m=this.#f[r];else {let i=this.#y[r];this.#f[i]=this.#f[r];let a=this.#f[r];this.#y[a]=this.#y[r];}this.#c--,this.#x.push(r);}}if(this.#g&&this.#h?.length){let r=this.#h,o;for(;o=r?.shift();)this.#r?.(...o);}return n}clear(){return this.#j("delete")}#j(e){for(let t of this.#E({allowStale:true})){let n=this.#s[t];if(this.#u(n))n.__abortController.abort(new Error("deleted"));else {let r=this.#l[t];this.#w&&this.#o?.(n,r,e),this.#g&&this.#h?.push([n,r,e]);}}if(this.#a.clear(),this.#s.fill(void 0),this.#l.fill(void 0),this.#v&&this.#k&&(this.#v.fill(0),this.#k.fill(0)),this.#S&&this.#S.fill(0),this.#m=0,this.#p=0,this.#x.length=0,this.#d=0,this.#c=0,this.#g&&this.#h){let t=this.#h,n;for(;n=t?.shift();)this.#r?.(...n);}}};});var wC,CM,wM,TM,_r,Ir,ns,dc,ea,pc,TC,mc,xC,Bn,Oo,Et,ta,Bo,At,en,Pt,Im,gc,Kt,yt,Em,Am,SC,Pm,tr,Mm,hc,na,Rs,bn,ra,xM,SM,kM,_M,fc,Rm,IM,EM,rs,Lm=R(()=>{wC=typeof process=="object"&&process?process:{stdout:null,stderr:null},CM=s=>!!s&&typeof s=="object"&&(s instanceof rs||s instanceof kC||wM(s)||TM(s)),wM=s=>!!s&&typeof s=="object"&&s instanceof EventEmitter&&typeof s.pipe=="function"&&s.pipe!==kC.Writable.prototype.pipe,TM=s=>!!s&&typeof s=="object"&&s instanceof EventEmitter&&typeof s.write=="function"&&typeof s.end=="function",_r=Symbol("EOF"),Ir=Symbol("maybeEmitEnd"),ns=Symbol("emittedEnd"),dc=Symbol("emittingEnd"),ea=Symbol("emittedError"),pc=Symbol("closed"),TC=Symbol("read"),mc=Symbol("flush"),xC=Symbol("flushChunk"),Bn=Symbol("encoding"),Oo=Symbol("decoder"),Et=Symbol("flowing"),ta=Symbol("paused"),Bo=Symbol("resume"),At=Symbol("buffer"),en=Symbol("pipes"),Pt=Symbol("bufferLength"),Im=Symbol("bufferPush"),gc=Symbol("bufferShift"),Kt=Symbol("objectMode"),yt=Symbol("destroyed"),Em=Symbol("error"),Am=Symbol("emitData"),SC=Symbol("emitEnd"),Pm=Symbol("emitEnd2"),tr=Symbol("async"),Mm=Symbol("abort"),hc=Symbol("aborted"),na=Symbol("signal"),Rs=Symbol("dataListeners"),bn=Symbol("discarded"),ra=s=>Promise.resolve().then(s),xM=s=>s(),SM=s=>s==="end"||s==="finish"||s==="prefinish",kM=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,_M=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),fc=class{src;dest;opts;ondrain;constructor(e,t,n){this.src=e,this.dest=t,this.opts=n,this.ondrain=()=>e[Bo](),this.dest.on("drain",this.ondrain);}unpipe(){this.dest.removeListener("drain",this.ondrain);}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end();}},Rm=class extends fc{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe();}constructor(e,t,n){super(e,t,n),this.proxyErrors=r=>t.emit("error",r),e.on("error",this.proxyErrors);}},IM=s=>!!s.objectMode,EM=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",rs=class extends EventEmitter{[Et]=false;[ta]=false;[en]=[];[At]=[];[Kt];[Bn];[tr];[Oo];[_r]=false;[ns]=false;[dc]=false;[pc]=false;[ea]=null;[Pt]=0;[yt]=false;[na];[hc]=false;[Rs]=0;[bn]=false;writable=true;readable=true;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");IM(t)?(this[Kt]=true,this[Bn]=null):EM(t)?(this[Bn]=t.encoding,this[Kt]=false):(this[Kt]=false,this[Bn]=null),this[tr]=!!t.async,this[Oo]=this[Bn]?new StringDecoder(this[Bn]):null,t&&t.debugExposeBuffer===true&&Object.defineProperty(this,"buffer",{get:()=>this[At]}),t&&t.debugExposePipes===true&&Object.defineProperty(this,"pipes",{get:()=>this[en]});let{signal:n}=t;n&&(this[na]=n,n.aborted?this[Mm]():n.addEventListener("abort",()=>this[Mm]()));}get bufferLength(){return this[Pt]}get encoding(){return this[Bn]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[Kt]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[tr]}set async(e){this[tr]=this[tr]||!!e;}[Mm](){this[hc]=true,this.emit("abort",this[na]?.reason),this.destroy(this[na]?.reason);}get aborted(){return this[hc]}set aborted(e){}write(e,t,n){if(this[hc])return false;if(this[_r])throw new Error("write after end");if(this[yt])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),true;typeof t=="function"&&(n=t,t="utf8"),t||(t="utf8");let r=this[tr]?ra:xM;if(!this[Kt]&&!Buffer.isBuffer(e)){if(_M(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(kM(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[Kt]?(this[Et]&&this[Pt]!==0&&this[mc](true),this[Et]?this.emit("data",e):this[Im](e),this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et]):e.length?(typeof e=="string"&&!(t===this[Bn]&&!this[Oo]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Oo].write(e)),this[Et]&&this[Pt]!==0&&this[mc](true),this[Et]?this.emit("data",e):this[Im](e),this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et]):(this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et])}read(e){if(this[yt])return null;if(this[bn]=false,this[Pt]===0||e===0||e&&e>this[Pt])return this[Ir](),null;this[Kt]&&(e=null),this[At].length>1&&!this[Kt]&&(this[At]=[this[Bn]?this[At].join(""):Buffer.concat(this[At],this[Pt])]);let t=this[TC](e||null,this[At][0]);return this[Ir](),t}[TC](e,t){if(this[Kt])this[gc]();else {let n=t;e===n.length||e===null?this[gc]():typeof n=="string"?(this[At][0]=n.slice(e),t=n.slice(0,e),this[Pt]-=e):(this[At][0]=n.subarray(e),t=n.subarray(0,e),this[Pt]-=e);}return this.emit("data",t),!this[At].length&&!this[_r]&&this.emit("drain"),t}end(e,t,n){return typeof e=="function"&&(n=e,e=void 0),typeof t=="function"&&(n=t,t="utf8"),e!==void 0&&this.write(e,t),n&&this.once("end",n),this[_r]=true,this.writable=false,(this[Et]||!this[ta])&&this[Ir](),this}[Bo](){this[yt]||(!this[Rs]&&!this[en].length&&(this[bn]=true),this[ta]=false,this[Et]=true,this.emit("resume"),this[At].length?this[mc]():this[_r]?this[Ir]():this.emit("drain"));}resume(){return this[Bo]()}pause(){this[Et]=false,this[ta]=true,this[bn]=false;}get destroyed(){return this[yt]}get flowing(){return this[Et]}get paused(){return this[ta]}[Im](e){this[Kt]?this[Pt]+=1:this[Pt]+=e.length,this[At].push(e);}[gc](){return this[Kt]?this[Pt]-=1:this[Pt]-=this[At][0].length,this[At].shift()}[mc](e=false){do;while(this[xC](this[gc]())&&this[At].length);!e&&!this[At].length&&!this[_r]&&this.emit("drain");}[xC](e){return this.emit("data",e),this[Et]}pipe(e,t){if(this[yt])return e;this[bn]=false;let n=this[ns];return t=t||{},e===wC.stdout||e===wC.stderr?t.end=false:t.end=t.end!==false,t.proxyErrors=!!t.proxyErrors,n?t.end&&e.end():(this[en].push(t.proxyErrors?new Rm(this,e,t):new fc(this,e,t)),this[tr]?ra(()=>this[Bo]()):this[Bo]()),e}unpipe(e){let t=this[en].find(n=>n.dest===e);t&&(this[en].length===1?(this[Et]&&this[Rs]===0&&(this[Et]=false),this[en]=[]):this[en].splice(this[en].indexOf(t),1),t.unpipe());}addListener(e,t){return this.on(e,t)}on(e,t){let n=super.on(e,t);if(e==="data")this[bn]=false,this[Rs]++,!this[en].length&&!this[Et]&&this[Bo]();else if(e==="readable"&&this[Pt]!==0)super.emit("readable");else if(SM(e)&&this[ns])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ea]){let r=t;this[tr]?ra(()=>r.call(this,this[ea])):r.call(this,this[ea]);}return n}removeListener(e,t){return this.off(e,t)}off(e,t){let n=super.off(e,t);return e==="data"&&(this[Rs]=this.listeners("data").length,this[Rs]===0&&!this[bn]&&!this[en].length&&(this[Et]=false)),n}removeAllListeners(e){let t=super.removeAllListeners(e);return (e==="data"||e===void 0)&&(this[Rs]=0,!this[bn]&&!this[en].length&&(this[Et]=false)),t}get emittedEnd(){return this[ns]}[Ir](){!this[dc]&&!this[ns]&&!this[yt]&&this[At].length===0&&this[_r]&&(this[dc]=true,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[pc]&&this.emit("close"),this[dc]=false);}emit(e,...t){let n=t[0];if(e!=="error"&&e!=="close"&&e!==yt&&this[yt])return false;if(e==="data")return !this[Kt]&&!n?false:this[tr]?(ra(()=>this[Am](n)),true):this[Am](n);if(e==="end")return this[SC]();if(e==="close"){if(this[pc]=true,!this[ns]&&!this[yt])return false;let o=super.emit("close");return this.removeAllListeners("close"),o}else if(e==="error"){this[ea]=n,super.emit(Em,n);let o=!this[na]||this.listeners("error").length?super.emit("error",n):false;return this[Ir](),o}else if(e==="resume"){let o=super.emit("resume");return this[Ir](),o}else if(e==="finish"||e==="prefinish"){let o=super.emit(e);return this.removeAllListeners(e),o}let r=super.emit(e,...t);return this[Ir](),r}[Am](e){for(let n of this[en])n.dest.write(e)===false&&this.pause();let t=this[bn]?false:super.emit("data",e);return this[Ir](),t}[SC](){return this[ns]?false:(this[ns]=true,this.readable=false,this[tr]?(ra(()=>this[Pm]()),true):this[Pm]())}[Pm](){if(this[Oo]){let t=this[Oo].end();if(t){for(let n of this[en])n.dest.write(t);this[bn]||super.emit("data",t);}}for(let t of this[en])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[Kt]||(e.dataLength=0);let t=this.promise();return this.on("data",n=>{e.push(n),this[Kt]||(e.dataLength+=n.length);}),await t,e}async concat(){if(this[Kt])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[Bn]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(yt,()=>t(new Error("stream destroyed"))),this.on("error",n=>t(n)),this.on("end",()=>e());})}[Symbol.asyncIterator](){this[bn]=false;let e=false,t=async()=>(this.pause(),e=true,{value:void 0,done:true});return {next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:false,value:r});if(this[_r])return t();let o,i,a=d=>{this.off("data",l),this.off("end",c),this.off(yt,u),t(),i(d);},l=d=>{this.off("error",a),this.off("end",c),this.off(yt,u),this.pause(),o({value:d,done:!!this[_r]});},c=()=>{this.off("error",a),this.off("data",l),this.off(yt,u),t(),o({done:true,value:void 0});},u=()=>a(new Error("stream destroyed"));return new Promise((d,m)=>{i=m,o=d,this.once(yt,u),this.once("error",a),this.once("end",c),this.once("data",l);})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[bn]=false;let e=false,t=()=>(this.pause(),this.off(Em,t),this.off(yt,t),this.off("end",t),e=true,{done:true,value:void 0}),n=()=>{if(e)return t();let r=this.read();return r===null?t():{done:false,value:r}};return this.once("end",t),this.once(Em,t),this.once(yt,t),{next:n,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[yt])return e?this.emit("error",e):this.emit(yt),this;this[yt]=true,this[bn]=true,this[At].length=0,this[Pt]=0;let t=this;return typeof t.close=="function"&&!this[pc]&&t.close(),e?this.emit("error",e):this.emit(yt),this}static get isStream(){return CM}};});var OM,oa,PC,MC,GM,WM,Dn,RC,DC,nr,LC,NC,Ds,$C,Rn,sa,Nm,_C,ia,Fn,yc,vc,IC,zM,$m,EC,aa,AC,bc,Cc,Bm,OC,Jt,wc,Tc,xc,Fo,Uo,la,BC,FC=R(()=>{CC();Lm();OM=realpathSync.native,oa={lstatSync:lstatSync,readdir:readdir$1,readdirSync:readdirSync,readlinkSync:readlinkSync,realpathSync:OM,promises:{lstat:lstat,readdir:readdir,readlink:readlink,realpath:realpath}},PC=s=>!s||s===oa||s===Ct?oa:{...oa,...s,promises:{...oa.promises,...s.promises||{}}},MC=/^\\\\\?\\([a-z]:)\\?$/i,GM=s=>s.replace(/\//g,"\\").replace(MC,"$1\\"),WM=/[\\\/]/,Dn=0,RC=1,DC=2,nr=4,LC=6,NC=8,Ds=10,$C=12,Rn=15,sa=~Rn,Nm=16,_C=32,ia=64,Fn=128,yc=256,vc=512,IC=ia|Fn|vc,zM=1023,$m=s=>s.isFile()?NC:s.isDirectory()?nr:s.isSymbolicLink()?Ds:s.isCharacterDevice()?DC:s.isBlockDevice()?LC:s.isSocket()?$C:s.isFIFO()?RC:Dn,EC=new Map,aa=s=>{let e=EC.get(s);if(e)return e;let t=s.normalize("NFKD");return EC.set(s,t),t},AC=new Map,bc=s=>{let e=AC.get(s);if(e)return e;let t=aa(s.toLowerCase());return AC.set(s,t),t},Cc=class extends Zi{constructor(){super({max:256});}},Bm=class extends Zi{constructor(e=16*1024){super({maxSize:e,sizeCalculation:t=>t.length+1});}},OC=Symbol("PathScurry setAsCwd"),Jt=class{name;root;roots;parent;nocase;isCWD=false;#e;#t;get dev(){return this.#t}#o;get mode(){return this.#o}#r;get nlink(){return this.#r}#i;get uid(){return this.#i}#C;get gid(){return this.#C}#c;get rdev(){return this.#c}#d;get blksize(){return this.#d}#a;get ino(){return this.#a}#l;get size(){return this.#l}#s;get blocks(){return this.#s}#f;get atimeMs(){return this.#f}#y;get mtimeMs(){return this.#y}#m;get ctimeMs(){return this.#m}#p;get birthtimeMs(){return this.#p}#x;get atime(){return this.#x}#h;get mtime(){return this.#h}#S;get ctime(){return this.#S}#k;get birthtime(){return this.#k}#v;#w;#T;#g;#A;#_;#n;#R;#b;#P;get parentPath(){return (this.parent||this).fullpath()}get path(){return this.parentPath}constructor(e,t=Dn,n,r,o,i,a){this.name=e,this.#v=o?bc(e):aa(e),this.#n=t&zM,this.nocase=o,this.roots=r,this.root=n||this,this.#R=i,this.#T=a.fullpath,this.#A=a.relative,this.#_=a.relativePosix,this.parent=a.parent,this.parent?this.#e=this.parent.#e:this.#e=PC(a.fs);}depth(){return this.#w!==void 0?this.#w:this.parent?this.#w=this.parent.depth()+1:this.#w=0}childrenCache(){return this.#R}resolve(e){if(!e)return this;let t=this.getRootString(e),r=e.substring(t.length).split(this.splitSep);return t?this.getRoot(t).#D(r):this.#D(r)}#D(e){let t=this;for(let n of e)t=t.child(n);return t}children(){let e=this.#R.get(this);if(e)return e;let t=Object.assign([],{provisional:0});return this.#R.set(this,t),this.#n&=~Nm,t}child(e,t){if(e===""||e===".")return this;if(e==="..")return this.parent||this;let n=this.children(),r=this.nocase?bc(e):aa(e);for(let l of n)if(l.#v===r)return l;let o=this.parent?this.sep:"",i=this.#T?this.#T+o+e:void 0,a=this.newChild(e,Dn,{...t,parent:this,fullpath:i});return this.canReaddir()||(a.#n|=Fn),n.push(a),a}relative(){if(this.isCWD)return "";if(this.#A!==void 0)return this.#A;let e=this.name,t=this.parent;if(!t)return this.#A=this.name;let n=t.relative();return n+(!n||!t.parent?"":this.sep)+e}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return "";if(this.#_!==void 0)return this.#_;let e=this.name,t=this.parent;if(!t)return this.#_=this.fullpathPosix();let n=t.relativePosix();return n+(!n||!t.parent?"":"/")+e}fullpath(){if(this.#T!==void 0)return this.#T;let e=this.name,t=this.parent;if(!t)return this.#T=this.name;let r=t.fullpath()+(t.parent?this.sep:"")+e;return this.#T=r}fullpathPosix(){if(this.#g!==void 0)return this.#g;if(this.sep==="/")return this.#g=this.fullpath();if(!this.parent){let r=this.fullpath().replace(/\\/g,"/");return /^[a-z]:\//i.test(r)?this.#g=`//?/${r}`:this.#g=r}let e=this.parent,t=e.fullpathPosix(),n=t+(!t||!e.parent?"":"/")+this.name;return this.#g=n}isUnknown(){return (this.#n&Rn)===Dn}isType(e){return this[`is${e}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return (this.#n&Rn)===NC}isDirectory(){return (this.#n&Rn)===nr}isCharacterDevice(){return (this.#n&Rn)===DC}isBlockDevice(){return (this.#n&Rn)===LC}isFIFO(){return (this.#n&Rn)===RC}isSocket(){return (this.#n&Rn)===$C}isSymbolicLink(){return (this.#n&Ds)===Ds}lstatCached(){return this.#n&_C?this:void 0}readlinkCached(){return this.#b}realpathCached(){return this.#P}readdirCached(){let e=this.children();return e.slice(0,e.provisional)}canReadlink(){if(this.#b)return true;if(!this.parent)return false;let e=this.#n&Rn;return !(e!==Dn&&e!==Ds||this.#n&yc||this.#n&Fn)}calledReaddir(){return !!(this.#n&Nm)}isENOENT(){return !!(this.#n&Fn)}isNamed(e){return this.nocase?this.#v===bc(e):this.#v===aa(e)}async readlink(){let e=this.#b;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=await this.#e.promises.readlink(this.fullpath()),n=(await this.parent.realpath())?.resolve(t);if(n)return this.#b=n}catch(t){this.#u(t.code);return}}readlinkSync(){let e=this.#b;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=this.#e.readlinkSync(this.fullpath()),n=this.parent.realpathSync()?.resolve(t);if(n)return this.#b=n}catch(t){this.#u(t.code);return}}#L(e){this.#n|=Nm;for(let t=e.provisional;t<e.length;t++){let n=e[t];n&&n.#N();}}#N(){this.#n&Fn||(this.#n=(this.#n|Fn)&sa,this.#I());}#I(){let e=this.children();e.provisional=0;for(let t of e)t.#N();}#E(){this.#n|=vc,this.#$();}#$(){if(this.#n&ia)return;let e=this.#n;(e&Rn)===nr&&(e&=sa),this.#n=e|ia,this.#I();}#O(e=""){e==="ENOTDIR"||e==="EPERM"?this.#$():e==="ENOENT"?this.#N():this.children().provisional=0;}#B(e=""){e==="ENOTDIR"?this.parent.#$():e==="ENOENT"&&this.#N();}#u(e=""){let t=this.#n;t|=yc,e==="ENOENT"&&(t|=Fn),(e==="EINVAL"||e==="UNKNOWN")&&(t&=sa),this.#n=t,e==="ENOTDIR"&&this.parent&&this.parent.#$();}#F(e,t){return this.#M(e,t)||this.#U(e,t)}#U(e,t){let n=$m(e),r=this.newChild(e.name,n,{parent:this}),o=r.#n&Rn;return o!==nr&&o!==Ds&&o!==Dn&&(r.#n|=ia),t.unshift(r),t.provisional++,r}#M(e,t){for(let n=t.provisional;n<t.length;n++){let r=t[n];if((this.nocase?bc(e.name):aa(e.name))===r.#v)return this.#j(e,r,n,t)}}#j(e,t,n,r){let o=t.name;return t.#n=t.#n&sa|$m(e),o!==e.name&&(t.name=e.name),n!==r.provisional&&(n===r.length-1?r.pop():r.splice(n,1),r.unshift(t)),r.provisional++,t}async lstat(){if((this.#n&Fn)===0)try{return this.#H(await this.#e.promises.lstat(this.fullpath())),this}catch(e){this.#B(e.code);}}lstatSync(){if((this.#n&Fn)===0)try{return this.#H(this.#e.lstatSync(this.fullpath())),this}catch(e){this.#B(e.code);}}#H(e){let{atime:t,atimeMs:n,birthtime:r,birthtimeMs:o,blksize:i,blocks:a,ctime:l,ctimeMs:c,dev:u,gid:d,ino:m,mode:g,mtime:h,mtimeMs:y,nlink:b,rdev:C,size:T,uid:S}=e;this.#x=t,this.#f=n,this.#k=r,this.#p=o,this.#d=i,this.#s=a,this.#S=l,this.#m=c,this.#t=u,this.#C=d,this.#a=m,this.#o=g,this.#h=h,this.#y=y,this.#r=b,this.#c=C,this.#l=T,this.#i=S;let E=$m(e);this.#n=this.#n&sa|E|_C,E!==Dn&&E!==nr&&E!==Ds&&(this.#n|=ia);}#W=[];#z=false;#q(e){this.#z=false;let t=this.#W.slice();this.#W.length=0,t.forEach(n=>n(null,e));}readdirCB(e,t=false){if(!this.canReaddir()){t?e(null,[]):queueMicrotask(()=>e(null,[]));return}let n=this.children();if(this.calledReaddir()){let o=n.slice(0,n.provisional);t?e(null,o):queueMicrotask(()=>e(null,o));return}if(this.#W.push(e),this.#z)return;this.#z=true;let r=this.fullpath();this.#e.readdir(r,{withFileTypes:true},(o,i)=>{if(o)this.#O(o.code),n.provisional=0;else {for(let a of i)this.#F(a,n);this.#L(n);}this.#q(n.slice(0,n.provisional));});}#G;async readdir(){if(!this.canReaddir())return [];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();if(this.#G)await this.#G;else {let n=()=>{};this.#G=new Promise(r=>n=r);try{for(let r of await this.#e.promises.readdir(t,{withFileTypes:!0}))this.#F(r,e);this.#L(e);}catch(r){this.#O(r.code),e.provisional=0;}this.#G=void 0,n();}return e.slice(0,e.provisional)}readdirSync(){if(!this.canReaddir())return [];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();try{for(let n of this.#e.readdirSync(t,{withFileTypes:!0}))this.#F(n,e);this.#L(e);}catch(n){this.#O(n.code),e.provisional=0;}return e.slice(0,e.provisional)}canReaddir(){if(this.#n&IC)return false;let e=Rn&this.#n;return e===Dn||e===nr||e===Ds}shouldWalk(e,t){return (this.#n&nr)===nr&&!(this.#n&IC)&&!e.has(this)&&(!t||t(this))}async realpath(){if(this.#P)return this.#P;if(!((vc|yc|Fn)&this.#n))try{let e=await this.#e.promises.realpath(this.fullpath());return this.#P=this.resolve(e)}catch{this.#E();}}realpathSync(){if(this.#P)return this.#P;if(!((vc|yc|Fn)&this.#n))try{let e=this.#e.realpathSync(this.fullpath());return this.#P=this.resolve(e)}catch{this.#E();}}[OC](e){if(e===this)return;e.isCWD=false,this.isCWD=true;let t=new Set([]),n=[],r=this;for(;r&&r.parent;)t.add(r),r.#A=n.join(this.sep),r.#_=n.join("/"),r=r.parent,n.push("..");for(r=e;r&&r.parent&&!t.has(r);)r.#A=void 0,r.#_=void 0,r=r.parent;}},wc=class s extends Jt{sep="\\";splitSep=WM;constructor(e,t=Dn,n,r,o,i,a){super(e,t,n,r,o,i,a);}newChild(e,t=Dn,n={}){return new s(e,t,this.root,this.roots,this.nocase,this.childrenCache(),n)}getRootString(e){return win32.parse(e).root}getRoot(e){if(e=GM(e.toUpperCase()),e===this.root.name)return this.root;for(let[t,n]of Object.entries(this.roots))if(this.sameRoot(e,t))return this.roots[e]=n;return this.roots[e]=new Fo(e,this).root}sameRoot(e,t=this.root.name){return e=e.toUpperCase().replace(/\//g,"\\").replace(MC,"$1\\"),e===t}},Tc=class s extends Jt{splitSep="/";sep="/";constructor(e,t=Dn,n,r,o,i,a){super(e,t,n,r,o,i,a);}getRootString(e){return e.startsWith("/")?"/":""}getRoot(e){return this.root}newChild(e,t=Dn,n={}){return new s(e,t,this.root,this.roots,this.nocase,this.childrenCache(),n)}},xc=class{root;rootPath;roots;cwd;#e;#t;#o;nocase;#r;constructor(e=process.cwd(),t,n,{nocase:r,childrenCacheSize:o=16*1024,fs:i=oa}={}){this.#r=PC(i),(e instanceof URL||e.startsWith("file://"))&&(e=fileURLToPath(e));let a=t.resolve(e);this.roots=Object.create(null),this.rootPath=this.parseRootPath(a),this.#e=new Cc,this.#t=new Cc,this.#o=new Bm(o);let l=a.substring(this.rootPath.length).split(n);if(l.length===1&&!l[0]&&l.pop(),r===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=r,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let c=this.root,u=l.length-1,d=t.sep,m=this.rootPath,g=false;for(let h of l){let y=u--;c=c.child(h,{relative:new Array(y).fill("..").join(d),relativePosix:new Array(y).fill("..").join("/"),fullpath:m+=(g?"":d)+h}),g=true;}this.cwd=c;}depth(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.depth()}childrenCache(){return this.#o}resolve(...e){let t="";for(let o=e.length-1;o>=0;o--){let i=e[o];if(!(!i||i===".")&&(t=t?`${i}/${t}`:i,this.isAbsolute(i)))break}let n=this.#e.get(t);if(n!==void 0)return n;let r=this.cwd.resolve(t).fullpath();return this.#e.set(t,r),r}resolvePosix(...e){let t="";for(let o=e.length-1;o>=0;o--){let i=e[o];if(!(!i||i===".")&&(t=t?`${i}/${t}`:i,this.isAbsolute(i)))break}let n=this.#t.get(t);if(n!==void 0)return n;let r=this.cwd.resolve(t).fullpathPosix();return this.#t.set(t,r),r}relative(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relative()}relativePosix(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relativePosix()}basename(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.name}dirname(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),(e.parent||e).fullpath()}async readdir(e=this.cwd,t={withFileTypes:true}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n}=t;if(e.canReaddir()){let r=await e.readdir();return n?r:r.map(o=>o.name)}else return []}readdirSync(e=this.cwd,t={withFileTypes:true}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true}=t;return e.canReaddir()?n?e.readdirSync():e.readdirSync().map(r=>r.name):[]}async lstat(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstat()}lstatSync(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstatSync()}async readlink(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=await e.readlink();return t?n:n?.fullpath()}readlinkSync(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=e.readlinkSync();return t?n:n?.fullpath()}async realpath(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=await e.realpath();return t?n:n?.fullpath()}realpathSync(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=e.realpathSync();return t?n:n?.fullpath()}async walk(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=[];(!o||o(e))&&a.push(n?e:e.fullpath());let l=new Set,c=(d,m)=>{l.add(d),d.readdirCB((g,h)=>{if(g)return m(g);let y=h.length;if(!y)return m();let b=()=>{--y===0&&m();};for(let C of h)(!o||o(C))&&a.push(n?C:C.fullpath()),r&&C.isSymbolicLink()?C.realpath().then(T=>T?.isUnknown()?T.lstat():T).then(T=>T?.shouldWalk(l,i)?c(T,b):b()):C.shouldWalk(l,i)?c(C,b):b();},true);},u=e;return new Promise((d,m)=>{c(u,g=>{if(g)return m(g);d(a);});})}walkSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=[];(!o||o(e))&&a.push(n?e:e.fullpath());let l=new Set([e]);for(let c of l){let u=c.readdirSync();for(let d of u){(!o||o(d))&&a.push(n?d:d.fullpath());let m=d;if(d.isSymbolicLink()){if(!(r&&(m=d.realpathSync())))continue;m.isUnknown()&&m.lstatSync();}m.shouldWalk(l,i)&&l.add(m);}}return a}[Symbol.asyncIterator](){return this.iterate()}iterate(e=this.cwd,t={}){return typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd),this.stream(e,t)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t;(!o||o(e))&&(yield n?e:e.fullpath());let a=new Set([e]);for(let l of a){let c=l.readdirSync();for(let u of c){(!o||o(u))&&(yield n?u:u.fullpath());let d=u;if(u.isSymbolicLink()){if(!(r&&(d=u.realpathSync())))continue;d.isUnknown()&&d.lstatSync();}d.shouldWalk(a,i)&&a.add(d);}}}stream(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=new rs({objectMode:true});(!o||o(e))&&a.write(n?e:e.fullpath());let l=new Set,c=[e],u=0,d=()=>{let m=false;for(;!m;){let g=c.shift();if(!g){u===0&&a.end();return}u++,l.add(g);let h=(b,C,T=false)=>{if(b)return a.emit("error",b);if(r&&!T){let S=[];for(let E of C)E.isSymbolicLink()&&S.push(E.realpath().then(v=>v?.isUnknown()?v.lstat():v));if(S.length){Promise.all(S).then(()=>h(null,C,true));return}}for(let S of C)S&&(!o||o(S))&&(a.write(n?S:S.fullpath())||(m=true));u--;for(let S of C){let E=S.realpathCached()||S;E.shouldWalk(l,i)&&c.push(E);}m&&!a.flowing?a.once("drain",d):y||d();},y=true;g.readdirCB(h,true),y=false;}};return d(),a}streamSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=new rs({objectMode:true}),l=new Set;(!o||o(e))&&a.write(n?e:e.fullpath());let c=[e],u=0,d=()=>{let m=false;for(;!m;){let g=c.shift();if(!g){u===0&&a.end();return}u++,l.add(g);let h=g.readdirSync();for(let y of h)(!o||o(y))&&(a.write(n?y:y.fullpath())||(m=true));u--;for(let y of h){let b=y;if(y.isSymbolicLink()){if(!(r&&(b=y.realpathSync())))continue;b.isUnknown()&&b.lstatSync();}b.shouldWalk(l,i)&&c.push(b);}}m&&!a.flowing&&a.once("drain",d);};return d(),a}chdir(e=this.cwd){let t=this.cwd;this.cwd=typeof e=="string"?this.cwd.resolve(e):e,this.cwd[OC](t);}},Fo=class extends xc{sep="\\";constructor(e=process.cwd(),t={}){let{nocase:n=true}=t;super(e,win32,"\\",{...t,nocase:n}),this.nocase=n;for(let r=this.cwd;r;r=r.parent)r.nocase=this.nocase;}parseRootPath(e){return win32.parse(e).root.toUpperCase()}newRoot(e){return new wc(this.rootPath,nr,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},Uo=class extends xc{sep="/";constructor(e=process.cwd(),t={}){let{nocase:n=false}=t;super(e,posix,"/",{...t,nocase:n}),this.nocase=n;}parseRootPath(e){return "/"}newRoot(e){return new Tc(this.rootPath,nr,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},la=class extends Uo{constructor(e=process.cwd(),t={}){let{nocase:n=true}=t;super(e,{...t,nocase:n});}},process.platform==="win32"?wc:Tc,BC=process.platform==="win32"?Fo:process.platform==="darwin"?la:Uo;});var HM,qM,jo,Fm=R(()=>{es();HM=s=>s.length>=1,qM=s=>s.length>=1,jo=class s{#e;#t;#o;length;#r;#i;#C;#c;#d;#a;#l=true;constructor(e,t,n,r){if(!HM(e))throw new TypeError("empty pattern list");if(!qM(t))throw new TypeError("empty glob list");if(t.length!==e.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=e.length,n<0||n>=this.length)throw new TypeError("index out of range");if(this.#e=e,this.#t=t,this.#o=n,this.#r=r,this.#o===0){if(this.isUNC()){let[o,i,a,l,...c]=this.#e,[u,d,m,g,...h]=this.#t;c[0]===""&&(c.shift(),h.shift());let y=[o,i,a,l,""].join("/"),b=[u,d,m,g,""].join("/");this.#e=[y,...c],this.#t=[b,...h],this.length=this.#e.length;}else if(this.isDrive()||this.isAbsolute()){let[o,...i]=this.#e,[a,...l]=this.#t;i[0]===""&&(i.shift(),l.shift());let c=o+"/",u=a+"/";this.#e=[c,...i],this.#t=[u,...l],this.length=this.#e.length;}}}pattern(){return this.#e[this.#o]}isString(){return typeof this.#e[this.#o]=="string"}isGlobstar(){return this.#e[this.#o]===Ot}isRegExp(){return this.#e[this.#o]instanceof RegExp}globString(){return this.#C=this.#C||(this.#o===0?this.isAbsolute()?this.#t[0]+this.#t.slice(1).join("/"):this.#t.join("/"):this.#t.slice(this.#o).join("/"))}hasMore(){return this.length>this.#o+1}rest(){return this.#i!==void 0?this.#i:this.hasMore()?(this.#i=new s(this.#e,this.#t,this.#o+1,this.#r),this.#i.#a=this.#a,this.#i.#d=this.#d,this.#i.#c=this.#c,this.#i):this.#i=null}isUNC(){let e=this.#e;return this.#d!==void 0?this.#d:this.#d=this.#r==="win32"&&this.#o===0&&e[0]===""&&e[1]===""&&typeof e[2]=="string"&&!!e[2]&&typeof e[3]=="string"&&!!e[3]}isDrive(){let e=this.#e;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#o===0&&this.length>1&&typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0])}isAbsolute(){let e=this.#e;return this.#a!==void 0?this.#a:this.#a=e[0]===""&&e.length>1||this.isDrive()||this.isUNC()}root(){let e=this.#e[0];return typeof e=="string"&&this.isAbsolute()&&this.#o===0?e:""}checkFollowGlobstar(){return !(this.#o===0||!this.isGlobstar()||!this.#l)}markFollowGlobstar(){return this.#o===0||!this.isGlobstar()||!this.#l?false:(this.#l=false,true)}};});var KM,Go,Um=R(()=>{es();Fm();KM=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Go=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(e,{nobrace:t,nocase:n,noext:r,noglobstar:o,platform:i=KM}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=i,this.mmopts={dot:true,nobrace:t,nocase:n,noext:r,noglobstar:o,optimizationLevel:2,platform:i,nocomment:true,nonegate:true};for(let a of e)this.add(a);}add(e){let t=new yn(e,this.mmopts);for(let n=0;n<t.set.length;n++){let r=t.set[n],o=t.globParts[n];if(!r||!o)throw new Error("invalid pattern object");for(;r[0]==="."&&o[0]===".";)r.shift(),o.shift();let i=new jo(r,o,0,this.platform),a=new yn(i.globString(),this.mmopts),l=o[o.length-1]==="**",c=i.isAbsolute();c?this.absolute.push(a):this.relative.push(a),l&&(c?this.absoluteChildren.push(a):this.relativeChildren.push(a));}}ignored(e){let t=e.fullpath(),n=`${t}/`,r=e.relative()||".",o=`${r}/`;for(let i of this.relative)if(i.match(r)||i.match(o))return true;for(let i of this.absolute)if(i.match(t)||i.match(n))return true;return false}childrenIgnored(e){let t=e.fullpath()+"/",n=(e.relative()||".")+"/";for(let r of this.relativeChildren)if(r.match(n))return true;for(let r of this.absoluteChildren)if(r.match(t))return true;return false}};});var jm,Gm,Wm,ca,UC=R(()=>{es();jm=class s{store;constructor(e=new Map){this.store=e;}copy(){return new s(new Map(this.store))}hasWalked(e,t){return this.store.get(e.fullpath())?.has(t.globString())}storeWalked(e,t){let n=e.fullpath(),r=this.store.get(n);r?r.add(t.globString()):this.store.set(n,new Set([t.globString()]));}},Gm=class{store=new Map;add(e,t,n){let r=(t?2:0)|(n?1:0),o=this.store.get(e);this.store.set(e,o===void 0?r:r&o);}entries(){return [...this.store.entries()].map(([e,t])=>[e,!!(t&2),!!(t&1)])}},Wm=class{store=new Map;add(e,t){if(!e.canReaddir())return;let n=this.store.get(e);n?n.find(r=>r.globString()===t.globString())||n.push(t):this.store.set(e,[t]);}get(e){let t=this.store.get(e);if(!t)throw new Error("attempting to walk unknown path");return t}entries(){return this.keys().map(e=>[e,this.store.get(e)])}keys(){return [...this.store.keys()].filter(e=>e.canReaddir())}},ca=class s{hasWalkedCache;matches=new Gm;subwalks=new Wm;patterns;follow;dot;opts;constructor(e,t){this.opts=e,this.follow=!!e.follow,this.dot=!!e.dot,this.hasWalkedCache=t?t.copy():new jm;}processPatterns(e,t){this.patterns=t;let n=t.map(r=>[e,r]);for(let[r,o]of n){this.hasWalkedCache.storeWalked(r,o);let i=o.root(),a=o.isAbsolute()&&this.opts.absolute!==false;if(i){r=r.resolve(i==="/"&&this.opts.root!==void 0?this.opts.root:i);let d=o.rest();if(d)o=d;else {this.matches.add(r,true,false);continue}}if(r.isENOENT())continue;let l,c,u=false;for(;typeof(l=o.pattern())=="string"&&(c=o.rest());)r=r.resolve(l),o=c,u=true;if(l=o.pattern(),c=o.rest(),u){if(this.hasWalkedCache.hasWalked(r,o))continue;this.hasWalkedCache.storeWalked(r,o);}if(typeof l=="string"){let d=l===".."||l===""||l===".";this.matches.add(r.resolve(l),a,d);continue}else if(l===Ot){(!r.isSymbolicLink()||this.follow||o.checkFollowGlobstar())&&this.subwalks.add(r,o);let d=c?.pattern(),m=c?.rest();if(!c||(d===""||d===".")&&!m)this.matches.add(r,a,d===""||d===".");else if(d===".."){let g=r.parent||r;m?this.hasWalkedCache.hasWalked(g,m)||this.subwalks.add(g,m):this.matches.add(g,a,true);}}else l instanceof RegExp&&this.subwalks.add(r,o);}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new s(this.opts,this.hasWalkedCache)}filterEntries(e,t){let n=this.subwalks.get(e),r=this.child();for(let o of t)for(let i of n){let a=i.isAbsolute(),l=i.pattern(),c=i.rest();l===Ot?r.testGlobstar(o,i,c,a):l instanceof RegExp?r.testRegExp(o,l,c,a):r.testString(o,l,c,a);}return r}testGlobstar(e,t,n,r){if((this.dot||!e.name.startsWith("."))&&(t.hasMore()||this.matches.add(e,r,false),e.canReaddir()&&(this.follow||!e.isSymbolicLink()?this.subwalks.add(e,t):e.isSymbolicLink()&&(n&&t.checkFollowGlobstar()?this.subwalks.add(e,n):t.markFollowGlobstar()&&this.subwalks.add(e,t)))),n){let o=n.pattern();if(typeof o=="string"&&o!==".."&&o!==""&&o!==".")this.testString(e,o,n.rest(),r);else if(o===".."){let i=e.parent||e;this.subwalks.add(i,n);}else o instanceof RegExp&&this.testRegExp(e,o,n.rest(),r);}}testRegExp(e,t,n,r){t.test(e.name)&&(n?this.subwalks.add(e,n):this.matches.add(e,r,false));}testString(e,t,n,r){e.isNamed(t)&&(n?this.subwalks.add(e,n):this.matches.add(e,r,false));}};});var JM,Sc,ua,da,jC=R(()=>{Lm();Um();UC();JM=(s,e)=>typeof s=="string"?new Go([s],e):Array.isArray(s)?new Go(s,e):s,Sc=class{path;patterns;opts;seen=new Set;paused=false;aborted=false;#e=[];#t;#o;signal;maxDepth;includeChildMatches;constructor(e,t,n){if(this.patterns=e,this.path=t,this.opts=n,this.#o=!n.posix&&n.platform==="win32"?"\\":"/",this.includeChildMatches=n.includeChildMatches!==false,(n.ignore||!this.includeChildMatches)&&(this.#t=JM(n.ignore??[],n),!this.includeChildMatches&&typeof this.#t.add!="function")){let r="cannot ignore child matches, ignore lacks add() method.";throw new Error(r)}this.maxDepth=n.maxDepth||1/0,n.signal&&(this.signal=n.signal,this.signal.addEventListener("abort",()=>{this.#e.length=0;}));}#r(e){return this.seen.has(e)||!!this.#t?.ignored?.(e)}#i(e){return !!this.#t?.childrenIgnored?.(e)}pause(){this.paused=true;}resume(){if(this.signal?.aborted)return;this.paused=false;let e;for(;!this.paused&&(e=this.#e.shift());)e();}onResume(e){this.signal?.aborted||(this.paused?this.#e.push(e):e());}async matchCheck(e,t){if(t&&this.opts.nodir)return;let n;if(this.opts.realpath){if(n=e.realpathCached()||await e.realpath(),!n)return;e=n;}let o=e.isUnknown()||this.opts.stat?await e.lstat():e;if(this.opts.follow&&this.opts.nodir&&o?.isSymbolicLink()){let i=await o.realpath();i&&(i.isUnknown()||this.opts.stat)&&await i.lstat();}return this.matchCheckTest(o,t)}matchCheckTest(e,t){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!t||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!e.isSymbolicLink()||!e.realpathCached()?.isDirectory())&&!this.#r(e)?e:void 0}matchCheckSync(e,t){if(t&&this.opts.nodir)return;let n;if(this.opts.realpath){if(n=e.realpathCached()||e.realpathSync(),!n)return;e=n;}let o=e.isUnknown()||this.opts.stat?e.lstatSync():e;if(this.opts.follow&&this.opts.nodir&&o?.isSymbolicLink()){let i=o.realpathSync();i&&(i?.isUnknown()||this.opts.stat)&&i.lstatSync();}return this.matchCheckTest(o,t)}matchFinish(e,t){if(this.#r(e))return;if(!this.includeChildMatches&&this.#t?.add){let o=`${e.relativePosix()}/**`;this.#t.add(o);}let n=this.opts.absolute===void 0?t:this.opts.absolute;this.seen.add(e);let r=this.opts.mark&&e.isDirectory()?this.#o:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(n){let o=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(o+r);}else {let o=this.opts.posix?e.relativePosix():e.relative(),i=this.opts.dotRelative&&!o.startsWith(".."+this.#o)?"."+this.#o:"";this.matchEmit(o?i+o+r:"."+r);}}async match(e,t,n){let r=await this.matchCheck(e,n);r&&this.matchFinish(r,t);}matchSync(e,t,n){let r=this.matchCheckSync(e,n);r&&this.matchFinish(r,t);}walkCB(e,t,n){this.signal?.aborted&&n(),this.walkCB2(e,t,new ca(this.opts),n);}walkCB2(e,t,n,r){if(this.#i(e))return r();if(this.signal?.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2(e,t,n,r));return}n.processPatterns(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||(o++,this.match(a,l,c).then(()=>i()));for(let a of n.subwalkTargets()){if(this.maxDepth!==1/0&&a.depth()>=this.maxDepth)continue;o++;let l=a.readdirCached();a.calledReaddir()?this.walkCB3(a,l,n,i):a.readdirCB((c,u)=>this.walkCB3(a,u,n,i),true);}i();}walkCB3(e,t,n,r){n=n.filterEntries(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||(o++,this.match(a,l,c).then(()=>i()));for(let[a,l]of n.subwalks.entries())o++,this.walkCB2(a,l,n.child(),i);i();}walkCBSync(e,t,n){this.signal?.aborted&&n(),this.walkCB2Sync(e,t,new ca(this.opts),n);}walkCB2Sync(e,t,n,r){if(this.#i(e))return r();if(this.signal?.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2Sync(e,t,n,r));return}n.processPatterns(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||this.matchSync(a,l,c);for(let a of n.subwalkTargets()){if(this.maxDepth!==1/0&&a.depth()>=this.maxDepth)continue;o++;let l=a.readdirSync();this.walkCB3Sync(a,l,n,i);}i();}walkCB3Sync(e,t,n,r){n=n.filterEntries(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||this.matchSync(a,l,c);for(let[a,l]of n.subwalks.entries())o++,this.walkCB2Sync(a,l,n.child(),i);i();}},ua=class extends Sc{matches=new Set;constructor(e,t,n){super(e,t,n);}matchEmit(e){this.matches.add(e);}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((e,t)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?t(this.signal.reason):e(this.matches);});}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},da=class extends Sc{results;constructor(e,t,n){super(e,t,n),this.results=new rs({signal:this.signal,objectMode:true}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume());}matchEmit(e){this.results.write(e),this.results.flowing||this.pause();}stream(){let e=this.path;return e.isUnknown()?e.lstat().then(()=>{this.walkCB(e,this.patterns,()=>this.results.end());}):this.walkCB(e,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};});var YM,Un,zm=R(()=>{es();FC();Fm();jC();YM=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Un=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(e,t){if(!t)throw new TypeError("glob options required");if(this.withFileTypes=!!t.withFileTypes,this.signal=t.signal,this.follow=!!t.follow,this.dot=!!t.dot,this.dotRelative=!!t.dotRelative,this.nodir=!!t.nodir,this.mark=!!t.mark,t.cwd?(t.cwd instanceof URL||t.cwd.startsWith("file://"))&&(t.cwd=fileURLToPath(t.cwd)):this.cwd="",this.cwd=t.cwd||"",this.root=t.root,this.magicalBraces=!!t.magicalBraces,this.nobrace=!!t.nobrace,this.noext=!!t.noext,this.realpath=!!t.realpath,this.absolute=t.absolute,this.includeChildMatches=t.includeChildMatches!==false,this.noglobstar=!!t.noglobstar,this.matchBase=!!t.matchBase,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:1/0,this.stat=!!t.stat,this.ignore=t.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof e=="string"&&(e=[e]),this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===false,this.windowsPathsNoEscape&&(e=e.map(l=>l.replace(/\\/g,"/"))),this.matchBase){if(t.noglobstar)throw new TypeError("base matching requires globstar");e=e.map(l=>l.includes("/")?l:`./**/${l}`);}if(this.pattern=e,this.platform=t.platform||YM,this.opts={...t,platform:this.platform},t.scurry){if(this.scurry=t.scurry,t.nocase!==void 0&&t.nocase!==t.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else {let l=t.platform==="win32"?Fo:t.platform==="darwin"?la:t.platform?Uo:BC;this.scurry=new l(this.cwd,{nocase:t.nocase,fs:t.fs});}this.nocase=this.scurry.nocase;let n=this.platform==="darwin"||this.platform==="win32",r={...t,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:n,nocomment:true,noext:this.noext,nonegate:true,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},o=this.pattern.map(l=>new yn(l,r)),[i,a]=o.reduce((l,c)=>(l[0].push(...c.set),l[1].push(...c.globParts),l),[[],[]]);this.patterns=i.map((l,c)=>{let u=a[c];if(!u)throw new Error("invalid pattern object");return new jo(l,u,0,this.platform)});}async walk(){return [...await new ua(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return [...new ua(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new da(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new da(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};});var Hm,qm=R(()=>{es();Hm=(s,e={})=>{Array.isArray(s)||(s=[s]);for(let t of s)if(new yn(t,e).hasMagic())return true;return false};});function kc(s,e={}){return new Un(s,e).streamSync()}function WC(s,e={}){return new Un(s,e).stream()}function zC(s,e={}){return new Un(s,e).walkSync()}async function GC(s,e={}){return new Un(s,e).walk()}function _c(s,e={}){return new Un(s,e).iterateSync()}function HC(s,e={}){return new Un(s,e).iterate()}var XM,QM,ZM,eR,tR,Wo,Km=R(()=>{es();zm();qm();es();zm();qm();Um();XM=kc,QM=Object.assign(WC,{sync:kc}),ZM=_c,eR=Object.assign(HC,{sync:_c}),tR=Object.assign(zC,{stream:kc,iterate:_c}),Wo=Object.assign(GC,{glob:GC,globSync:zC,sync:tR,globStream:WC,stream:QM,globStreamSync:kc,streamSync:XM,globIterate:HC,iterate:eR,globIterateSync:_c,iterateSync:ZM,Glob:Un,hasMagic:Hm,escape:Lo,unescape:On});Wo.glob=Wo;});var pa,Jm=R(()=>{Ms();pa=class{languageId="typescript";extensions=[".ts",".tsx",".js",".jsx",".mjs",".cjs"];async parse(e,t){let n=e.split(`
|
|
195
|
-
`),r=[],o={class:/^(\s*)(export\s+)?(abstract\s+)?class\s+(\w+)(\s+extends\s+\w+)?(\s+implements\s+[\w,\s]+)?/,interface:/^(\s*)(export\s+)?interface\s+(\w+)(\s+extends\s+[\w,\s]+)?/,type:/^(\s*)(export\s+)?type\s+(\w+)\s*[=<]/,enum:/^(\s*)(export\s+)?enum\s+(\w+)/,function:/^(\s*)(export\s+)?(async\s+)?function\s+(\w+)\s*[<(]/,constFunction:/^(\s*)(export\s+)?(const|let|var)\s+(\w+)\s*[=:]\s*(async\s+)?(\([^)]*\)|[a-zA-Z_]\w*)\s*(=>|:.*=>)/,variable:/^(\s*)(export\s+)?(const|let|var)\s+(\w+)\s*[=:]/,method:/^(\s+)(public\s+|private\s+|protected\s+)?(static\s+)?(async\s+)?(\w+)\s*[<(]/,property:/^(\s+)(public\s+|private\s+|protected\s+)?(static\s+)?(readonly\s+)?(\w+)\s*[=:?]/},i=null,a=0;for(let l=0;l<n.length;l++){let c=n[l],u=l+1;if(i){let y=c.match(/^(\s*)/)?.[1].length||0;c.trim()&&y<=a&&!c.match(/^\s*[})\]]/)&&(i.endLine=l,r.push(i),i=null);}if(c.trim().startsWith("//")||c.trim().startsWith("/*")||!c.trim())continue;let d=c.match(o.class);if(d){if(i&&(i.endLine=l,r.push(i)),a=d[1].length,i={name:d[4],kind:"class",startLine:u,endLine:this.findSymbolEnd(n,l),children:[]},l>0){let y=n[l-1].trim();y.startsWith("/**")||y.startsWith("/*")?i.docstring=this.extractDocstring(n,l-1):y.startsWith("//")&&(i.docstring=y.replace(/^\/\/\s*/,""));}continue}let m=c.match(o.interface);if(m){r.push({name:m[3],kind:"interface",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let g=c.match(o.type);if(g){r.push({name:g[3],kind:"type",startLine:u,endLine:this.findTypeEnd(n,l)});continue}let h=c.match(o.enum);if(h){r.push({name:h[3],kind:"enum",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}if(!i){let y=c.match(o.function);if(y){r.push({name:y[4],kind:"function",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let b=c.match(o.constFunction);if(b){r.push({name:b[4],kind:"function",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let C=c.match(o.variable);if(C&&!o.constFunction.test(c)){r.push({name:C[4],kind:"variable",startLine:u,endLine:u});continue}}if(i){let y=c.match(o.method);if(y&&!["if","for","while","switch","catch","constructor"].includes(y[5])){let C={name:y[5],kind:(y[5]==="constructor","method"),startLine:u,endLine:this.findSymbolEnd(n,l),parent:i.name};i.children.push(C);continue}let b=c.match(o.property);if(b&&!["if","for","while","switch","catch","return","const","let","var"].includes(b[5])){let C={name:b[5],kind:"variable",startLine:u,endLine:u,parent:i.name};i.children.push(C);}}}return i&&(i.endLine=n.length,r.push(i)),r}findSymbolEnd(e,t){return
|
|
194
|
+
>>> no match, partial?`,e,m,t,g),m===l))}let y;if(typeof u=="string"?(y=d===u,this.debug("string match",u,d,y)):(y=u.test(d),this.debug("pattern match",u,d,y)),!y)return false}if(i===l&&a===c)return true;if(i===l)return n;if(a===c)return i===l-1&&e[i]==="";throw new Error("wtf?")}braceExpand(){return hC(this.pattern,this.options)}parse(e){Xi(e);let t=this.options;if(e==="**")return Ot;if(e==="")return "";let n,r=null;(n=e.match(eM))?r=t.dot?nM:tM:(n=e.match(zP))?r=(t.nocase?t.dot?JP:KP:t.dot?qP:HP)(n[1]):(n=e.match(rM))?r=(t.nocase?t.dot?oM:sM:t.dot?iM:aM)(n):(n=e.match(VP))?r=t.dot?XP:YP:(n=e.match(QP))&&(r=ZP);let o=Do.fromGlob(e,this.options).toMMPattern();return r&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:r}),o}makeRe(){if(this.regexp||this.regexp===false)return this.regexp;let e=this.set;if(!e.length)return this.regexp=false,this.regexp;let t=this.options,n=t.noglobstar?uM:t.dot?dM:pM,r=new Set(t.nocase?["i"]:[]),o=e.map(l=>{let c=l.map(u=>{if(u instanceof RegExp)for(let d of u.flags.split(""))r.add(d);return typeof u=="string"?yM(u):u===Ot?Ot:u._src});return c.forEach((u,d)=>{let m=c[d+1],g=c[d-1];u!==Ot||g===Ot||(g===void 0?m!==void 0&&m!==Ot?c[d+1]="(?:\\/|"+n+"\\/)?"+m:c[d]=n:m===void 0?c[d-1]=g+"(?:\\/|"+n+")?":m!==Ot&&(c[d-1]=g+"(?:\\/|\\/"+n+"\\/)"+m,c[d+1]=Ot));}),c.filter(u=>u!==Ot).join("/")}).join("|"),[i,a]=e.length>1?["(?:",")"]:["",""];o="^"+i+o+a+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...r].join(""));}catch{this.regexp=false;}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return false;if(this.empty)return e==="";if(e==="/"&&t)return true;let n=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let o=this.set;this.debug(this.pattern,"set",o);let i=r[r.length-1];if(!i)for(let a=r.length-2;!i&&a>=0;a--)i=r[a];for(let a=0;a<o.length;a++){let l=o[a],c=r;if(n.matchBase&&l.length===1&&(c=[i]),this.matchOne(c,l,t))return n.flipNegate?true:!this.negate}return n.flipNegate?false:this.negate}static defaults(e){return Zt.defaults(e).Minimatch}};Zt.AST=Do;Zt.Minimatch=yn;Zt.escape=Lo;Zt.unescape=On;});var No,yC,km,bC,uc,fC,bM,es,vC,$o,_m,Zi,CC=R(()=>{No=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,yC=new Set,km=typeof process=="object"&&process?process:{},bC=(s,e,t,n)=>{typeof km.emitWarning=="function"?km.emitWarning(s,e,t,n):console.error(`[${t}] ${e}: ${s}`);},uc=globalThis.AbortController,fC=globalThis.AbortSignal;if(typeof uc>"u"){fC=class{onabort;_onabort=[];reason;aborted=false;addEventListener(n,r){this._onabort.push(r);}},uc=class{constructor(){e();}signal=new fC;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=true;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n);}}};let s=km.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{s&&(s=false,bC("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e));};}bM=s=>!yC.has(s),es=s=>s&&s===Math.floor(s)&&s>0&&isFinite(s),vC=s=>es(s)?s<=Math.pow(2,8)?Uint8Array:s<=Math.pow(2,16)?Uint16Array:s<=Math.pow(2,32)?Uint32Array:s<=Number.MAX_SAFE_INTEGER?$o:null:null,$o=class extends Array{constructor(e){super(e),this.fill(0);}},_m=class s{heap;length;static#e=false;static create(e){let t=vC(e);if(!t)return [];s.#e=true;let n=new s(e,t);return s.#e=false,n}constructor(e,t){if(!s.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0;}push(e){this.heap[this.length++]=e;}pop(){return this.heap[--this.length]}},Zi=class s{#e;#t;#o;#r;#i;#C;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#c;#d;#a;#l;#s;#f;#y;#m;#p;#x;#h;#S;#k;#v;#w;#T;#g;static unsafeExposeInternals(e){return {starts:e.#k,ttls:e.#v,sizes:e.#S,keyMap:e.#a,keyList:e.#l,valList:e.#s,next:e.#f,prev:e.#y,get head(){return e.#m},get tail(){return e.#p},free:e.#x,isBackgroundFetch:t=>e.#u(t),backgroundFetch:(t,n,r,o)=>e.#B(t,n,r,o),moveToTail:t=>e.#U(t),indexes:t=>e.#I(t),rindexes:t=>e.#E(t),isStale:t=>e.#b(t)}}get max(){return this.#e}get maxSize(){return this.#t}get calculatedSize(){return this.#d}get size(){return this.#c}get fetchMethod(){return this.#i}get memoMethod(){return this.#C}get dispose(){return this.#o}get disposeAfter(){return this.#r}constructor(e){let{max:t=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:i,updateAgeOnHas:a,allowStale:l,dispose:c,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:m,maxSize:g=0,maxEntrySize:h=0,sizeCalculation:y,fetchMethod:b,memoMethod:C,noDeleteOnFetchRejection:T,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:E,allowStaleOnFetchAbort:v,ignoreFetchAbort:I}=e;if(t!==0&&!es(t))throw new TypeError("max option must be a nonnegative integer");let D=t?vC(t):Array;if(!D)throw new Error("invalid max value: "+t);if(this.#e=t,this.#t=g,this.maxEntrySize=h||this.#t,this.sizeCalculation=y,this.sizeCalculation){if(!this.#t&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(C!==void 0&&typeof C!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#C=C,b!==void 0&&typeof b!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#i=b,this.#T=!!b,this.#a=new Map,this.#l=new Array(t).fill(void 0),this.#s=new Array(t).fill(void 0),this.#f=new D(t),this.#y=new D(t),this.#m=0,this.#p=0,this.#x=_m.create(t),this.#c=0,this.#d=0,typeof c=="function"&&(this.#o=c),typeof u=="function"?(this.#r=u,this.#h=[]):(this.#r=void 0,this.#h=void 0),this.#w=!!this.#o,this.#g=!!this.#r,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!T,this.allowStaleOnFetchRejection=!!E,this.allowStaleOnFetchAbort=!!v,this.ignoreFetchAbort=!!I,this.maxEntrySize!==0){if(this.#t!==0&&!es(this.#t))throw new TypeError("maxSize must be a positive integer if specified");if(!es(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#P();}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!a,this.ttlResolution=es(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!es(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#A();}if(this.#e===0&&this.ttl===0&&this.#t===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#t){let O="LRU_CACHE_UNBOUNDED";bM(O)&&(yC.add(O),bC("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",O,s));}}getRemainingTTL(e){return this.#a.has(e)?1/0:0}#A(){let e=new $o(this.#e),t=new $o(this.#e);this.#v=e,this.#k=t,this.#R=(o,i,a=No.now())=>{if(t[o]=i!==0?a:0,e[o]=i,i!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#b(o)&&this.#M(this.#l[o],"expire");},i+1);l.unref&&l.unref();}},this.#_=o=>{t[o]=e[o]!==0?No.now():0;},this.#n=(o,i)=>{if(e[i]){let a=e[i],l=t[i];if(!a||!l)return;o.ttl=a,o.start=l,o.now=n||r();let c=o.now-l;o.remainingTTL=a-c;}};let n=0,r=()=>{let o=No.now();if(this.ttlResolution>0){n=o;let i=setTimeout(()=>n=0,this.ttlResolution);i.unref&&i.unref();}return o};this.getRemainingTTL=o=>{let i=this.#a.get(o);if(i===void 0)return 0;let a=e[i],l=t[i];if(!a||!l)return 1/0;let c=(n||r())-l;return a-c},this.#b=o=>{let i=t[o],a=e[o];return !!a&&!!i&&(n||r())-i>a};}#_=()=>{};#n=()=>{};#R=()=>{};#b=()=>false;#P(){let e=new $o(this.#e);this.#d=0,this.#S=e,this.#D=t=>{this.#d-=e[t],e[t]=0;},this.#N=(t,n,r,o)=>{if(this.#u(n))return 0;if(!es(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,t),!es(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#L=(t,n,r)=>{if(e[t]=n,this.#t){let o=this.#t-e[t];for(;this.#d>o;)this.#O(true);}this.#d+=e[t],r&&(r.entrySize=n,r.totalCalculatedSize=this.#d);};}#D=e=>{};#L=(e,t,n)=>{};#N=(e,t,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:e=this.allowStale}={}){if(this.#c)for(let t=this.#p;!(!this.#$(t)||((e||!this.#b(t))&&(yield t),t===this.#m));)t=this.#y[t];}*#E({allowStale:e=this.allowStale}={}){if(this.#c)for(let t=this.#m;!(!this.#$(t)||((e||!this.#b(t))&&(yield t),t===this.#p));)t=this.#f[t];}#$(e){return e!==void 0&&this.#a.get(this.#l[e])===e}*entries(){for(let e of this.#I())this.#s[e]!==void 0&&this.#l[e]!==void 0&&!this.#u(this.#s[e])&&(yield [this.#l[e],this.#s[e]]);}*rentries(){for(let e of this.#E())this.#s[e]!==void 0&&this.#l[e]!==void 0&&!this.#u(this.#s[e])&&(yield [this.#l[e],this.#s[e]]);}*keys(){for(let e of this.#I()){let t=this.#l[e];t!==void 0&&!this.#u(this.#s[e])&&(yield t);}}*rkeys(){for(let e of this.#E()){let t=this.#l[e];t!==void 0&&!this.#u(this.#s[e])&&(yield t);}}*values(){for(let e of this.#I())this.#s[e]!==void 0&&!this.#u(this.#s[e])&&(yield this.#s[e]);}*rvalues(){for(let e of this.#E())this.#s[e]!==void 0&&!this.#u(this.#s[e])&&(yield this.#s[e]);}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let n of this.#I()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#l[n],this))return this.get(this.#l[n],t)}}forEach(e,t=this){for(let n of this.#I()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(t,o,this.#l[n],this);}}rforEach(e,t=this){for(let n of this.#E()){let r=this.#s[n],o=this.#u(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(t,o,this.#l[n],this);}}purgeStale(){let e=false;for(let t of this.#E({allowStale:true}))this.#b(t)&&(this.#M(this.#l[t],"expire"),e=true);return e}info(e){let t=this.#a.get(e);if(t===void 0)return;let n=this.#s[t],r=this.#u(n)?n.__staleWhileFetching:n;if(r===void 0)return;let o={value:r};if(this.#v&&this.#k){let i=this.#v[t],a=this.#k[t];if(i&&a){let l=i-(No.now()-a);o.ttl=l,o.start=Date.now();}}return this.#S&&(o.size=this.#S[t]),o}dump(){let e=[];for(let t of this.#I({allowStale:true})){let n=this.#l[t],r=this.#s[t],o=this.#u(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let i={value:o};if(this.#v&&this.#k){i.ttl=this.#v[t];let a=No.now()-this.#k[t];i.start=Math.floor(Date.now()-a);}this.#S&&(i.size=this.#S[t]),e.unshift([n,i]);}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let r=Date.now()-n.start;n.start=No.now()-r;}this.set(t,n.value,n);}}set(e,t,n={}){if(t===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:c=this.noUpdateTTL}=n,u=this.#N(e,t,n.size||0,a);if(this.maxEntrySize&&u>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=true),this.#M(e,"set"),this;let d=this.#c===0?void 0:this.#a.get(e);if(d===void 0)d=this.#c===0?this.#p:this.#x.length!==0?this.#x.pop():this.#c===this.#e?this.#O(false):this.#c,this.#l[d]=e,this.#s[d]=t,this.#a.set(e,d),this.#f[this.#p]=d,this.#y[d]=this.#p,this.#p=d,this.#c++,this.#L(d,u,l),l&&(l.set="add"),c=false;else {this.#U(d);let m=this.#s[d];if(t!==m){if(this.#T&&this.#u(m)){m.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=m;g!==void 0&&!i&&(this.#w&&this.#o?.(g,e,"set"),this.#g&&this.#h?.push([g,e,"set"]));}else i||(this.#w&&this.#o?.(m,e,"set"),this.#g&&this.#h?.push([m,e,"set"]));if(this.#D(d),this.#L(d,u,l),this.#s[d]=t,l){l.set="replace";let g=m&&this.#u(m)?m.__staleWhileFetching:m;g!==void 0&&(l.oldValue=g);}}else l&&(l.set="update");}if(r!==0&&!this.#v&&this.#A(),this.#v&&(c||this.#R(d,r,o),l&&this.#n(l,d)),!i&&this.#g&&this.#h){let m=this.#h,g;for(;g=m?.shift();)this.#r?.(...g);}return this}pop(){try{for(;this.#c;){let e=this.#s[this.#m];if(this.#O(!0),this.#u(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#g&&this.#h){let e=this.#h,t;for(;t=e?.shift();)this.#r?.(...t);}}}#O(e){let t=this.#m,n=this.#l[t],r=this.#s[t];return this.#T&&this.#u(r)?r.__abortController.abort(new Error("evicted")):(this.#w||this.#g)&&(this.#w&&this.#o?.(r,n,"evict"),this.#g&&this.#h?.push([r,n,"evict"])),this.#D(t),e&&(this.#l[t]=void 0,this.#s[t]=void 0,this.#x.push(t)),this.#c===1?(this.#m=this.#p=0,this.#x.length=0):this.#m=this.#f[t],this.#a.delete(n),this.#c--,t}has(e,t={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=t,o=this.#a.get(e);if(o!==void 0){let i=this.#s[o];if(this.#u(i)&&i.__staleWhileFetching===void 0)return false;if(this.#b(o))r&&(r.has="stale",this.#n(r,o));else return n&&this.#_(o),r&&(r.has="hit",this.#n(r,o)),true}else r&&(r.has="miss");return false}peek(e,t={}){let{allowStale:n=this.allowStale}=t,r=this.#a.get(e);if(r===void 0||!n&&this.#b(r))return;let o=this.#s[r];return this.#u(o)?o.__staleWhileFetching:o}#B(e,t,n,r){let o=t===void 0?void 0:this.#s[t];if(this.#u(o))return o;let i=new uc,{signal:a}=n;a?.addEventListener("abort",()=>i.abort(a.reason),{signal:i.signal});let l={signal:i.signal,options:n,context:r},c=(y,b=false)=>{let{aborted:C}=i.signal,T=n.ignoreFetchAbort&&y!==void 0;if(n.status&&(C&&!b?(n.status.fetchAborted=true,n.status.fetchError=i.signal.reason,T&&(n.status.fetchAbortIgnored=true)):n.status.fetchResolved=true),C&&!T&&!b)return d(i.signal.reason);let S=g;return this.#s[t]===g&&(y===void 0?S.__staleWhileFetching?this.#s[t]=S.__staleWhileFetching:this.#M(e,"fetch"):(n.status&&(n.status.fetchUpdated=true),this.set(e,y,l.options))),y},u=y=>(n.status&&(n.status.fetchRejected=true,n.status.fetchError=y),d(y)),d=y=>{let{aborted:b}=i.signal,C=b&&n.allowStaleOnFetchAbort,T=C||n.allowStaleOnFetchRejection,S=T||n.noDeleteOnFetchRejection,E=g;if(this.#s[t]===g&&(!S||E.__staleWhileFetching===void 0?this.#M(e,"fetch"):C||(this.#s[t]=E.__staleWhileFetching)),T)return n.status&&E.__staleWhileFetching!==void 0&&(n.status.returnedStale=true),E.__staleWhileFetching;if(E.__returned===E)throw y},m=(y,b)=>{let C=this.#i?.(e,o,l);C&&C instanceof Promise&&C.then(T=>y(T===void 0?void 0:T),b),i.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(y(void 0),n.allowStaleOnFetchAbort&&(y=T=>c(T,true)));});};n.status&&(n.status.fetchDispatched=true);let g=new Promise(m).then(c,u),h=Object.assign(g,{__abortController:i,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,h,{...l.options,status:void 0}),t=this.#a.get(e)):this.#s[t]=h,h}#u(e){if(!this.#T)return false;let t=e;return !!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof uc}async fetch(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:d=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:m=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:y,forceRefresh:b=false,status:C,signal:T}=t;if(!this.#T)return C&&(C.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:C});let S={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:i,noDisposeOnSet:a,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:d,allowStaleOnFetchRejection:m,allowStaleOnFetchAbort:h,ignoreFetchAbort:g,status:C,signal:T},E=this.#a.get(e);if(E===void 0){C&&(C.fetch="miss");let v=this.#B(e,E,S,y);return v.__returned=v}else {let v=this.#s[E];if(this.#u(v)){let M=n&&v.__staleWhileFetching!==void 0;return C&&(C.fetch="inflight",M&&(C.returnedStale=true)),M?v.__staleWhileFetching:v.__returned=v}let I=this.#b(E);if(!b&&!I)return C&&(C.fetch="hit"),this.#U(E),r&&this.#_(E),C&&this.#n(C,E),v;let D=this.#B(e,E,S,y),k=D.__staleWhileFetching!==void 0&&n;return C&&(C.fetch=I?"stale":"refresh",k&&I&&(C.returnedStale=true)),k?D.__staleWhileFetching:D.__returned=D}}async forceFetch(e,t={}){let n=await this.fetch(e,t);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,t={}){let n=this.#C;if(!n)throw new Error("no memoMethod provided to constructor");let{context:r,forceRefresh:o,...i}=t,a=this.get(e,i);if(!o&&a!==void 0)return a;let l=n(e,a,{options:i,context:r});return this.set(e,l,i),l}get(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:i}=t,a=this.#a.get(e);if(a!==void 0){let l=this.#s[a],c=this.#u(l);return i&&this.#n(i,a),this.#b(a)?(i&&(i.get="stale"),c?(i&&n&&l.__staleWhileFetching!==void 0&&(i.returnedStale=true),n?l.__staleWhileFetching:void 0):(o||this.#M(e,"expire"),i&&n&&(i.returnedStale=true),n?l:void 0)):(i&&(i.get="hit"),c?l.__staleWhileFetching:(this.#U(a),r&&this.#_(a),l))}else i&&(i.get="miss");}#F(e,t){this.#y[t]=e,this.#f[e]=t;}#U(e){e!==this.#p&&(e===this.#m?this.#m=this.#f[e]:this.#F(this.#y[e],this.#f[e]),this.#F(this.#p,e),this.#p=e);}delete(e){return this.#M(e,"delete")}#M(e,t){let n=false;if(this.#c!==0){let r=this.#a.get(e);if(r!==void 0)if(n=true,this.#c===1)this.#j(t);else {this.#D(r);let o=this.#s[r];if(this.#u(o)?o.__abortController.abort(new Error("deleted")):(this.#w||this.#g)&&(this.#w&&this.#o?.(o,e,t),this.#g&&this.#h?.push([o,e,t])),this.#a.delete(e),this.#l[r]=void 0,this.#s[r]=void 0,r===this.#p)this.#p=this.#y[r];else if(r===this.#m)this.#m=this.#f[r];else {let i=this.#y[r];this.#f[i]=this.#f[r];let a=this.#f[r];this.#y[a]=this.#y[r];}this.#c--,this.#x.push(r);}}if(this.#g&&this.#h?.length){let r=this.#h,o;for(;o=r?.shift();)this.#r?.(...o);}return n}clear(){return this.#j("delete")}#j(e){for(let t of this.#E({allowStale:true})){let n=this.#s[t];if(this.#u(n))n.__abortController.abort(new Error("deleted"));else {let r=this.#l[t];this.#w&&this.#o?.(n,r,e),this.#g&&this.#h?.push([n,r,e]);}}if(this.#a.clear(),this.#s.fill(void 0),this.#l.fill(void 0),this.#v&&this.#k&&(this.#v.fill(0),this.#k.fill(0)),this.#S&&this.#S.fill(0),this.#m=0,this.#p=0,this.#x.length=0,this.#d=0,this.#c=0,this.#g&&this.#h){let t=this.#h,n;for(;n=t?.shift();)this.#r?.(...n);}}};});var wC,CM,wM,TM,_r,Ir,ts,dc,ea,pc,TC,mc,xC,Bn,Oo,Et,ta,Bo,At,en,Pt,Im,gc,Kt,yt,Em,Am,SC,Pm,tr,Mm,hc,na,Rs,bn,ra,xM,SM,kM,_M,fc,Rm,IM,EM,ns,Lm=R(()=>{wC=typeof process=="object"&&process?process:{stdout:null,stderr:null},CM=s=>!!s&&typeof s=="object"&&(s instanceof ns||s instanceof kC||wM(s)||TM(s)),wM=s=>!!s&&typeof s=="object"&&s instanceof EventEmitter&&typeof s.pipe=="function"&&s.pipe!==kC.Writable.prototype.pipe,TM=s=>!!s&&typeof s=="object"&&s instanceof EventEmitter&&typeof s.write=="function"&&typeof s.end=="function",_r=Symbol("EOF"),Ir=Symbol("maybeEmitEnd"),ts=Symbol("emittedEnd"),dc=Symbol("emittingEnd"),ea=Symbol("emittedError"),pc=Symbol("closed"),TC=Symbol("read"),mc=Symbol("flush"),xC=Symbol("flushChunk"),Bn=Symbol("encoding"),Oo=Symbol("decoder"),Et=Symbol("flowing"),ta=Symbol("paused"),Bo=Symbol("resume"),At=Symbol("buffer"),en=Symbol("pipes"),Pt=Symbol("bufferLength"),Im=Symbol("bufferPush"),gc=Symbol("bufferShift"),Kt=Symbol("objectMode"),yt=Symbol("destroyed"),Em=Symbol("error"),Am=Symbol("emitData"),SC=Symbol("emitEnd"),Pm=Symbol("emitEnd2"),tr=Symbol("async"),Mm=Symbol("abort"),hc=Symbol("aborted"),na=Symbol("signal"),Rs=Symbol("dataListeners"),bn=Symbol("discarded"),ra=s=>Promise.resolve().then(s),xM=s=>s(),SM=s=>s==="end"||s==="finish"||s==="prefinish",kM=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,_M=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),fc=class{src;dest;opts;ondrain;constructor(e,t,n){this.src=e,this.dest=t,this.opts=n,this.ondrain=()=>e[Bo](),this.dest.on("drain",this.ondrain);}unpipe(){this.dest.removeListener("drain",this.ondrain);}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end();}},Rm=class extends fc{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe();}constructor(e,t,n){super(e,t,n),this.proxyErrors=r=>t.emit("error",r),e.on("error",this.proxyErrors);}},IM=s=>!!s.objectMode,EM=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",ns=class extends EventEmitter{[Et]=false;[ta]=false;[en]=[];[At]=[];[Kt];[Bn];[tr];[Oo];[_r]=false;[ts]=false;[dc]=false;[pc]=false;[ea]=null;[Pt]=0;[yt]=false;[na];[hc]=false;[Rs]=0;[bn]=false;writable=true;readable=true;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");IM(t)?(this[Kt]=true,this[Bn]=null):EM(t)?(this[Bn]=t.encoding,this[Kt]=false):(this[Kt]=false,this[Bn]=null),this[tr]=!!t.async,this[Oo]=this[Bn]?new StringDecoder(this[Bn]):null,t&&t.debugExposeBuffer===true&&Object.defineProperty(this,"buffer",{get:()=>this[At]}),t&&t.debugExposePipes===true&&Object.defineProperty(this,"pipes",{get:()=>this[en]});let{signal:n}=t;n&&(this[na]=n,n.aborted?this[Mm]():n.addEventListener("abort",()=>this[Mm]()));}get bufferLength(){return this[Pt]}get encoding(){return this[Bn]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[Kt]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[tr]}set async(e){this[tr]=this[tr]||!!e;}[Mm](){this[hc]=true,this.emit("abort",this[na]?.reason),this.destroy(this[na]?.reason);}get aborted(){return this[hc]}set aborted(e){}write(e,t,n){if(this[hc])return false;if(this[_r])throw new Error("write after end");if(this[yt])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),true;typeof t=="function"&&(n=t,t="utf8"),t||(t="utf8");let r=this[tr]?ra:xM;if(!this[Kt]&&!Buffer.isBuffer(e)){if(_M(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(kM(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[Kt]?(this[Et]&&this[Pt]!==0&&this[mc](true),this[Et]?this.emit("data",e):this[Im](e),this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et]):e.length?(typeof e=="string"&&!(t===this[Bn]&&!this[Oo]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Oo].write(e)),this[Et]&&this[Pt]!==0&&this[mc](true),this[Et]?this.emit("data",e):this[Im](e),this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et]):(this[Pt]!==0&&this.emit("readable"),n&&r(n),this[Et])}read(e){if(this[yt])return null;if(this[bn]=false,this[Pt]===0||e===0||e&&e>this[Pt])return this[Ir](),null;this[Kt]&&(e=null),this[At].length>1&&!this[Kt]&&(this[At]=[this[Bn]?this[At].join(""):Buffer.concat(this[At],this[Pt])]);let t=this[TC](e||null,this[At][0]);return this[Ir](),t}[TC](e,t){if(this[Kt])this[gc]();else {let n=t;e===n.length||e===null?this[gc]():typeof n=="string"?(this[At][0]=n.slice(e),t=n.slice(0,e),this[Pt]-=e):(this[At][0]=n.subarray(e),t=n.subarray(0,e),this[Pt]-=e);}return this.emit("data",t),!this[At].length&&!this[_r]&&this.emit("drain"),t}end(e,t,n){return typeof e=="function"&&(n=e,e=void 0),typeof t=="function"&&(n=t,t="utf8"),e!==void 0&&this.write(e,t),n&&this.once("end",n),this[_r]=true,this.writable=false,(this[Et]||!this[ta])&&this[Ir](),this}[Bo](){this[yt]||(!this[Rs]&&!this[en].length&&(this[bn]=true),this[ta]=false,this[Et]=true,this.emit("resume"),this[At].length?this[mc]():this[_r]?this[Ir]():this.emit("drain"));}resume(){return this[Bo]()}pause(){this[Et]=false,this[ta]=true,this[bn]=false;}get destroyed(){return this[yt]}get flowing(){return this[Et]}get paused(){return this[ta]}[Im](e){this[Kt]?this[Pt]+=1:this[Pt]+=e.length,this[At].push(e);}[gc](){return this[Kt]?this[Pt]-=1:this[Pt]-=this[At][0].length,this[At].shift()}[mc](e=false){do;while(this[xC](this[gc]())&&this[At].length);!e&&!this[At].length&&!this[_r]&&this.emit("drain");}[xC](e){return this.emit("data",e),this[Et]}pipe(e,t){if(this[yt])return e;this[bn]=false;let n=this[ts];return t=t||{},e===wC.stdout||e===wC.stderr?t.end=false:t.end=t.end!==false,t.proxyErrors=!!t.proxyErrors,n?t.end&&e.end():(this[en].push(t.proxyErrors?new Rm(this,e,t):new fc(this,e,t)),this[tr]?ra(()=>this[Bo]()):this[Bo]()),e}unpipe(e){let t=this[en].find(n=>n.dest===e);t&&(this[en].length===1?(this[Et]&&this[Rs]===0&&(this[Et]=false),this[en]=[]):this[en].splice(this[en].indexOf(t),1),t.unpipe());}addListener(e,t){return this.on(e,t)}on(e,t){let n=super.on(e,t);if(e==="data")this[bn]=false,this[Rs]++,!this[en].length&&!this[Et]&&this[Bo]();else if(e==="readable"&&this[Pt]!==0)super.emit("readable");else if(SM(e)&&this[ts])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ea]){let r=t;this[tr]?ra(()=>r.call(this,this[ea])):r.call(this,this[ea]);}return n}removeListener(e,t){return this.off(e,t)}off(e,t){let n=super.off(e,t);return e==="data"&&(this[Rs]=this.listeners("data").length,this[Rs]===0&&!this[bn]&&!this[en].length&&(this[Et]=false)),n}removeAllListeners(e){let t=super.removeAllListeners(e);return (e==="data"||e===void 0)&&(this[Rs]=0,!this[bn]&&!this[en].length&&(this[Et]=false)),t}get emittedEnd(){return this[ts]}[Ir](){!this[dc]&&!this[ts]&&!this[yt]&&this[At].length===0&&this[_r]&&(this[dc]=true,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[pc]&&this.emit("close"),this[dc]=false);}emit(e,...t){let n=t[0];if(e!=="error"&&e!=="close"&&e!==yt&&this[yt])return false;if(e==="data")return !this[Kt]&&!n?false:this[tr]?(ra(()=>this[Am](n)),true):this[Am](n);if(e==="end")return this[SC]();if(e==="close"){if(this[pc]=true,!this[ts]&&!this[yt])return false;let o=super.emit("close");return this.removeAllListeners("close"),o}else if(e==="error"){this[ea]=n,super.emit(Em,n);let o=!this[na]||this.listeners("error").length?super.emit("error",n):false;return this[Ir](),o}else if(e==="resume"){let o=super.emit("resume");return this[Ir](),o}else if(e==="finish"||e==="prefinish"){let o=super.emit(e);return this.removeAllListeners(e),o}let r=super.emit(e,...t);return this[Ir](),r}[Am](e){for(let n of this[en])n.dest.write(e)===false&&this.pause();let t=this[bn]?false:super.emit("data",e);return this[Ir](),t}[SC](){return this[ts]?false:(this[ts]=true,this.readable=false,this[tr]?(ra(()=>this[Pm]()),true):this[Pm]())}[Pm](){if(this[Oo]){let t=this[Oo].end();if(t){for(let n of this[en])n.dest.write(t);this[bn]||super.emit("data",t);}}for(let t of this[en])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[Kt]||(e.dataLength=0);let t=this.promise();return this.on("data",n=>{e.push(n),this[Kt]||(e.dataLength+=n.length);}),await t,e}async concat(){if(this[Kt])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[Bn]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(yt,()=>t(new Error("stream destroyed"))),this.on("error",n=>t(n)),this.on("end",()=>e());})}[Symbol.asyncIterator](){this[bn]=false;let e=false,t=async()=>(this.pause(),e=true,{value:void 0,done:true});return {next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:false,value:r});if(this[_r])return t();let o,i,a=d=>{this.off("data",l),this.off("end",c),this.off(yt,u),t(),i(d);},l=d=>{this.off("error",a),this.off("end",c),this.off(yt,u),this.pause(),o({value:d,done:!!this[_r]});},c=()=>{this.off("error",a),this.off("data",l),this.off(yt,u),t(),o({done:true,value:void 0});},u=()=>a(new Error("stream destroyed"));return new Promise((d,m)=>{i=m,o=d,this.once(yt,u),this.once("error",a),this.once("end",c),this.once("data",l);})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[bn]=false;let e=false,t=()=>(this.pause(),this.off(Em,t),this.off(yt,t),this.off("end",t),e=true,{done:true,value:void 0}),n=()=>{if(e)return t();let r=this.read();return r===null?t():{done:false,value:r}};return this.once("end",t),this.once(Em,t),this.once(yt,t),{next:n,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[yt])return e?this.emit("error",e):this.emit(yt),this;this[yt]=true,this[bn]=true,this[At].length=0,this[Pt]=0;let t=this;return typeof t.close=="function"&&!this[pc]&&t.close(),e?this.emit("error",e):this.emit(yt),this}static get isStream(){return CM}};});var OM,oa,PC,MC,GM,WM,Dn,RC,DC,nr,LC,NC,Ds,$C,Rn,sa,Nm,_C,ia,Fn,yc,vc,IC,zM,$m,EC,aa,AC,bc,Cc,Bm,OC,Jt,wc,Tc,xc,Fo,Uo,la,BC,FC=R(()=>{CC();Lm();OM=realpathSync.native,oa={lstatSync:lstatSync,readdir:readdir$1,readdirSync:readdirSync,readlinkSync:readlinkSync,realpathSync:OM,promises:{lstat:lstat,readdir:readdir,readlink:readlink,realpath:realpath}},PC=s=>!s||s===oa||s===Ct?oa:{...oa,...s,promises:{...oa.promises,...s.promises||{}}},MC=/^\\\\\?\\([a-z]:)\\?$/i,GM=s=>s.replace(/\//g,"\\").replace(MC,"$1\\"),WM=/[\\\/]/,Dn=0,RC=1,DC=2,nr=4,LC=6,NC=8,Ds=10,$C=12,Rn=15,sa=~Rn,Nm=16,_C=32,ia=64,Fn=128,yc=256,vc=512,IC=ia|Fn|vc,zM=1023,$m=s=>s.isFile()?NC:s.isDirectory()?nr:s.isSymbolicLink()?Ds:s.isCharacterDevice()?DC:s.isBlockDevice()?LC:s.isSocket()?$C:s.isFIFO()?RC:Dn,EC=new Map,aa=s=>{let e=EC.get(s);if(e)return e;let t=s.normalize("NFKD");return EC.set(s,t),t},AC=new Map,bc=s=>{let e=AC.get(s);if(e)return e;let t=aa(s.toLowerCase());return AC.set(s,t),t},Cc=class extends Zi{constructor(){super({max:256});}},Bm=class extends Zi{constructor(e=16*1024){super({maxSize:e,sizeCalculation:t=>t.length+1});}},OC=Symbol("PathScurry setAsCwd"),Jt=class{name;root;roots;parent;nocase;isCWD=false;#e;#t;get dev(){return this.#t}#o;get mode(){return this.#o}#r;get nlink(){return this.#r}#i;get uid(){return this.#i}#C;get gid(){return this.#C}#c;get rdev(){return this.#c}#d;get blksize(){return this.#d}#a;get ino(){return this.#a}#l;get size(){return this.#l}#s;get blocks(){return this.#s}#f;get atimeMs(){return this.#f}#y;get mtimeMs(){return this.#y}#m;get ctimeMs(){return this.#m}#p;get birthtimeMs(){return this.#p}#x;get atime(){return this.#x}#h;get mtime(){return this.#h}#S;get ctime(){return this.#S}#k;get birthtime(){return this.#k}#v;#w;#T;#g;#A;#_;#n;#R;#b;#P;get parentPath(){return (this.parent||this).fullpath()}get path(){return this.parentPath}constructor(e,t=Dn,n,r,o,i,a){this.name=e,this.#v=o?bc(e):aa(e),this.#n=t&zM,this.nocase=o,this.roots=r,this.root=n||this,this.#R=i,this.#T=a.fullpath,this.#A=a.relative,this.#_=a.relativePosix,this.parent=a.parent,this.parent?this.#e=this.parent.#e:this.#e=PC(a.fs);}depth(){return this.#w!==void 0?this.#w:this.parent?this.#w=this.parent.depth()+1:this.#w=0}childrenCache(){return this.#R}resolve(e){if(!e)return this;let t=this.getRootString(e),r=e.substring(t.length).split(this.splitSep);return t?this.getRoot(t).#D(r):this.#D(r)}#D(e){let t=this;for(let n of e)t=t.child(n);return t}children(){let e=this.#R.get(this);if(e)return e;let t=Object.assign([],{provisional:0});return this.#R.set(this,t),this.#n&=~Nm,t}child(e,t){if(e===""||e===".")return this;if(e==="..")return this.parent||this;let n=this.children(),r=this.nocase?bc(e):aa(e);for(let l of n)if(l.#v===r)return l;let o=this.parent?this.sep:"",i=this.#T?this.#T+o+e:void 0,a=this.newChild(e,Dn,{...t,parent:this,fullpath:i});return this.canReaddir()||(a.#n|=Fn),n.push(a),a}relative(){if(this.isCWD)return "";if(this.#A!==void 0)return this.#A;let e=this.name,t=this.parent;if(!t)return this.#A=this.name;let n=t.relative();return n+(!n||!t.parent?"":this.sep)+e}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return "";if(this.#_!==void 0)return this.#_;let e=this.name,t=this.parent;if(!t)return this.#_=this.fullpathPosix();let n=t.relativePosix();return n+(!n||!t.parent?"":"/")+e}fullpath(){if(this.#T!==void 0)return this.#T;let e=this.name,t=this.parent;if(!t)return this.#T=this.name;let r=t.fullpath()+(t.parent?this.sep:"")+e;return this.#T=r}fullpathPosix(){if(this.#g!==void 0)return this.#g;if(this.sep==="/")return this.#g=this.fullpath();if(!this.parent){let r=this.fullpath().replace(/\\/g,"/");return /^[a-z]:\//i.test(r)?this.#g=`//?/${r}`:this.#g=r}let e=this.parent,t=e.fullpathPosix(),n=t+(!t||!e.parent?"":"/")+this.name;return this.#g=n}isUnknown(){return (this.#n&Rn)===Dn}isType(e){return this[`is${e}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return (this.#n&Rn)===NC}isDirectory(){return (this.#n&Rn)===nr}isCharacterDevice(){return (this.#n&Rn)===DC}isBlockDevice(){return (this.#n&Rn)===LC}isFIFO(){return (this.#n&Rn)===RC}isSocket(){return (this.#n&Rn)===$C}isSymbolicLink(){return (this.#n&Ds)===Ds}lstatCached(){return this.#n&_C?this:void 0}readlinkCached(){return this.#b}realpathCached(){return this.#P}readdirCached(){let e=this.children();return e.slice(0,e.provisional)}canReadlink(){if(this.#b)return true;if(!this.parent)return false;let e=this.#n&Rn;return !(e!==Dn&&e!==Ds||this.#n&yc||this.#n&Fn)}calledReaddir(){return !!(this.#n&Nm)}isENOENT(){return !!(this.#n&Fn)}isNamed(e){return this.nocase?this.#v===bc(e):this.#v===aa(e)}async readlink(){let e=this.#b;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=await this.#e.promises.readlink(this.fullpath()),n=(await this.parent.realpath())?.resolve(t);if(n)return this.#b=n}catch(t){this.#u(t.code);return}}readlinkSync(){let e=this.#b;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=this.#e.readlinkSync(this.fullpath()),n=this.parent.realpathSync()?.resolve(t);if(n)return this.#b=n}catch(t){this.#u(t.code);return}}#L(e){this.#n|=Nm;for(let t=e.provisional;t<e.length;t++){let n=e[t];n&&n.#N();}}#N(){this.#n&Fn||(this.#n=(this.#n|Fn)&sa,this.#I());}#I(){let e=this.children();e.provisional=0;for(let t of e)t.#N();}#E(){this.#n|=vc,this.#$();}#$(){if(this.#n&ia)return;let e=this.#n;(e&Rn)===nr&&(e&=sa),this.#n=e|ia,this.#I();}#O(e=""){e==="ENOTDIR"||e==="EPERM"?this.#$():e==="ENOENT"?this.#N():this.children().provisional=0;}#B(e=""){e==="ENOTDIR"?this.parent.#$():e==="ENOENT"&&this.#N();}#u(e=""){let t=this.#n;t|=yc,e==="ENOENT"&&(t|=Fn),(e==="EINVAL"||e==="UNKNOWN")&&(t&=sa),this.#n=t,e==="ENOTDIR"&&this.parent&&this.parent.#$();}#F(e,t){return this.#M(e,t)||this.#U(e,t)}#U(e,t){let n=$m(e),r=this.newChild(e.name,n,{parent:this}),o=r.#n&Rn;return o!==nr&&o!==Ds&&o!==Dn&&(r.#n|=ia),t.unshift(r),t.provisional++,r}#M(e,t){for(let n=t.provisional;n<t.length;n++){let r=t[n];if((this.nocase?bc(e.name):aa(e.name))===r.#v)return this.#j(e,r,n,t)}}#j(e,t,n,r){let o=t.name;return t.#n=t.#n&sa|$m(e),o!==e.name&&(t.name=e.name),n!==r.provisional&&(n===r.length-1?r.pop():r.splice(n,1),r.unshift(t)),r.provisional++,t}async lstat(){if((this.#n&Fn)===0)try{return this.#H(await this.#e.promises.lstat(this.fullpath())),this}catch(e){this.#B(e.code);}}lstatSync(){if((this.#n&Fn)===0)try{return this.#H(this.#e.lstatSync(this.fullpath())),this}catch(e){this.#B(e.code);}}#H(e){let{atime:t,atimeMs:n,birthtime:r,birthtimeMs:o,blksize:i,blocks:a,ctime:l,ctimeMs:c,dev:u,gid:d,ino:m,mode:g,mtime:h,mtimeMs:y,nlink:b,rdev:C,size:T,uid:S}=e;this.#x=t,this.#f=n,this.#k=r,this.#p=o,this.#d=i,this.#s=a,this.#S=l,this.#m=c,this.#t=u,this.#C=d,this.#a=m,this.#o=g,this.#h=h,this.#y=y,this.#r=b,this.#c=C,this.#l=T,this.#i=S;let E=$m(e);this.#n=this.#n&sa|E|_C,E!==Dn&&E!==nr&&E!==Ds&&(this.#n|=ia);}#W=[];#z=false;#q(e){this.#z=false;let t=this.#W.slice();this.#W.length=0,t.forEach(n=>n(null,e));}readdirCB(e,t=false){if(!this.canReaddir()){t?e(null,[]):queueMicrotask(()=>e(null,[]));return}let n=this.children();if(this.calledReaddir()){let o=n.slice(0,n.provisional);t?e(null,o):queueMicrotask(()=>e(null,o));return}if(this.#W.push(e),this.#z)return;this.#z=true;let r=this.fullpath();this.#e.readdir(r,{withFileTypes:true},(o,i)=>{if(o)this.#O(o.code),n.provisional=0;else {for(let a of i)this.#F(a,n);this.#L(n);}this.#q(n.slice(0,n.provisional));});}#G;async readdir(){if(!this.canReaddir())return [];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();if(this.#G)await this.#G;else {let n=()=>{};this.#G=new Promise(r=>n=r);try{for(let r of await this.#e.promises.readdir(t,{withFileTypes:!0}))this.#F(r,e);this.#L(e);}catch(r){this.#O(r.code),e.provisional=0;}this.#G=void 0,n();}return e.slice(0,e.provisional)}readdirSync(){if(!this.canReaddir())return [];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();try{for(let n of this.#e.readdirSync(t,{withFileTypes:!0}))this.#F(n,e);this.#L(e);}catch(n){this.#O(n.code),e.provisional=0;}return e.slice(0,e.provisional)}canReaddir(){if(this.#n&IC)return false;let e=Rn&this.#n;return e===Dn||e===nr||e===Ds}shouldWalk(e,t){return (this.#n&nr)===nr&&!(this.#n&IC)&&!e.has(this)&&(!t||t(this))}async realpath(){if(this.#P)return this.#P;if(!((vc|yc|Fn)&this.#n))try{let e=await this.#e.promises.realpath(this.fullpath());return this.#P=this.resolve(e)}catch{this.#E();}}realpathSync(){if(this.#P)return this.#P;if(!((vc|yc|Fn)&this.#n))try{let e=this.#e.realpathSync(this.fullpath());return this.#P=this.resolve(e)}catch{this.#E();}}[OC](e){if(e===this)return;e.isCWD=false,this.isCWD=true;let t=new Set([]),n=[],r=this;for(;r&&r.parent;)t.add(r),r.#A=n.join(this.sep),r.#_=n.join("/"),r=r.parent,n.push("..");for(r=e;r&&r.parent&&!t.has(r);)r.#A=void 0,r.#_=void 0,r=r.parent;}},wc=class s extends Jt{sep="\\";splitSep=WM;constructor(e,t=Dn,n,r,o,i,a){super(e,t,n,r,o,i,a);}newChild(e,t=Dn,n={}){return new s(e,t,this.root,this.roots,this.nocase,this.childrenCache(),n)}getRootString(e){return win32.parse(e).root}getRoot(e){if(e=GM(e.toUpperCase()),e===this.root.name)return this.root;for(let[t,n]of Object.entries(this.roots))if(this.sameRoot(e,t))return this.roots[e]=n;return this.roots[e]=new Fo(e,this).root}sameRoot(e,t=this.root.name){return e=e.toUpperCase().replace(/\//g,"\\").replace(MC,"$1\\"),e===t}},Tc=class s extends Jt{splitSep="/";sep="/";constructor(e,t=Dn,n,r,o,i,a){super(e,t,n,r,o,i,a);}getRootString(e){return e.startsWith("/")?"/":""}getRoot(e){return this.root}newChild(e,t=Dn,n={}){return new s(e,t,this.root,this.roots,this.nocase,this.childrenCache(),n)}},xc=class{root;rootPath;roots;cwd;#e;#t;#o;nocase;#r;constructor(e=process.cwd(),t,n,{nocase:r,childrenCacheSize:o=16*1024,fs:i=oa}={}){this.#r=PC(i),(e instanceof URL||e.startsWith("file://"))&&(e=fileURLToPath(e));let a=t.resolve(e);this.roots=Object.create(null),this.rootPath=this.parseRootPath(a),this.#e=new Cc,this.#t=new Cc,this.#o=new Bm(o);let l=a.substring(this.rootPath.length).split(n);if(l.length===1&&!l[0]&&l.pop(),r===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=r,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let c=this.root,u=l.length-1,d=t.sep,m=this.rootPath,g=false;for(let h of l){let y=u--;c=c.child(h,{relative:new Array(y).fill("..").join(d),relativePosix:new Array(y).fill("..").join("/"),fullpath:m+=(g?"":d)+h}),g=true;}this.cwd=c;}depth(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.depth()}childrenCache(){return this.#o}resolve(...e){let t="";for(let o=e.length-1;o>=0;o--){let i=e[o];if(!(!i||i===".")&&(t=t?`${i}/${t}`:i,this.isAbsolute(i)))break}let n=this.#e.get(t);if(n!==void 0)return n;let r=this.cwd.resolve(t).fullpath();return this.#e.set(t,r),r}resolvePosix(...e){let t="";for(let o=e.length-1;o>=0;o--){let i=e[o];if(!(!i||i===".")&&(t=t?`${i}/${t}`:i,this.isAbsolute(i)))break}let n=this.#t.get(t);if(n!==void 0)return n;let r=this.cwd.resolve(t).fullpathPosix();return this.#t.set(t,r),r}relative(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relative()}relativePosix(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relativePosix()}basename(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.name}dirname(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),(e.parent||e).fullpath()}async readdir(e=this.cwd,t={withFileTypes:true}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n}=t;if(e.canReaddir()){let r=await e.readdir();return n?r:r.map(o=>o.name)}else return []}readdirSync(e=this.cwd,t={withFileTypes:true}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true}=t;return e.canReaddir()?n?e.readdirSync():e.readdirSync().map(r=>r.name):[]}async lstat(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstat()}lstatSync(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstatSync()}async readlink(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=await e.readlink();return t?n:n?.fullpath()}readlinkSync(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=e.readlinkSync();return t?n:n?.fullpath()}async realpath(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=await e.realpath();return t?n:n?.fullpath()}realpathSync(e=this.cwd,{withFileTypes:t}={withFileTypes:false}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e.withFileTypes,e=this.cwd);let n=e.realpathSync();return t?n:n?.fullpath()}async walk(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=[];(!o||o(e))&&a.push(n?e:e.fullpath());let l=new Set,c=(d,m)=>{l.add(d),d.readdirCB((g,h)=>{if(g)return m(g);let y=h.length;if(!y)return m();let b=()=>{--y===0&&m();};for(let C of h)(!o||o(C))&&a.push(n?C:C.fullpath()),r&&C.isSymbolicLink()?C.realpath().then(T=>T?.isUnknown()?T.lstat():T).then(T=>T?.shouldWalk(l,i)?c(T,b):b()):C.shouldWalk(l,i)?c(C,b):b();},true);},u=e;return new Promise((d,m)=>{c(u,g=>{if(g)return m(g);d(a);});})}walkSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=[];(!o||o(e))&&a.push(n?e:e.fullpath());let l=new Set([e]);for(let c of l){let u=c.readdirSync();for(let d of u){(!o||o(d))&&a.push(n?d:d.fullpath());let m=d;if(d.isSymbolicLink()){if(!(r&&(m=d.realpathSync())))continue;m.isUnknown()&&m.lstatSync();}m.shouldWalk(l,i)&&l.add(m);}}return a}[Symbol.asyncIterator](){return this.iterate()}iterate(e=this.cwd,t={}){return typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd),this.stream(e,t)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t;(!o||o(e))&&(yield n?e:e.fullpath());let a=new Set([e]);for(let l of a){let c=l.readdirSync();for(let u of c){(!o||o(u))&&(yield n?u:u.fullpath());let d=u;if(u.isSymbolicLink()){if(!(r&&(d=u.realpathSync())))continue;d.isUnknown()&&d.lstatSync();}d.shouldWalk(a,i)&&a.add(d);}}}stream(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=new ns({objectMode:true});(!o||o(e))&&a.write(n?e:e.fullpath());let l=new Set,c=[e],u=0,d=()=>{let m=false;for(;!m;){let g=c.shift();if(!g){u===0&&a.end();return}u++,l.add(g);let h=(b,C,T=false)=>{if(b)return a.emit("error",b);if(r&&!T){let S=[];for(let E of C)E.isSymbolicLink()&&S.push(E.realpath().then(v=>v?.isUnknown()?v.lstat():v));if(S.length){Promise.all(S).then(()=>h(null,C,true));return}}for(let S of C)S&&(!o||o(S))&&(a.write(n?S:S.fullpath())||(m=true));u--;for(let S of C){let E=S.realpathCached()||S;E.shouldWalk(l,i)&&c.push(E);}m&&!a.flowing?a.once("drain",d):y||d();},y=true;g.readdirCB(h,true),y=false;}};return d(),a}streamSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Jt||(t=e,e=this.cwd);let{withFileTypes:n=true,follow:r=false,filter:o,walkFilter:i}=t,a=new ns({objectMode:true}),l=new Set;(!o||o(e))&&a.write(n?e:e.fullpath());let c=[e],u=0,d=()=>{let m=false;for(;!m;){let g=c.shift();if(!g){u===0&&a.end();return}u++,l.add(g);let h=g.readdirSync();for(let y of h)(!o||o(y))&&(a.write(n?y:y.fullpath())||(m=true));u--;for(let y of h){let b=y;if(y.isSymbolicLink()){if(!(r&&(b=y.realpathSync())))continue;b.isUnknown()&&b.lstatSync();}b.shouldWalk(l,i)&&c.push(b);}}m&&!a.flowing&&a.once("drain",d);};return d(),a}chdir(e=this.cwd){let t=this.cwd;this.cwd=typeof e=="string"?this.cwd.resolve(e):e,this.cwd[OC](t);}},Fo=class extends xc{sep="\\";constructor(e=process.cwd(),t={}){let{nocase:n=true}=t;super(e,win32,"\\",{...t,nocase:n}),this.nocase=n;for(let r=this.cwd;r;r=r.parent)r.nocase=this.nocase;}parseRootPath(e){return win32.parse(e).root.toUpperCase()}newRoot(e){return new wc(this.rootPath,nr,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},Uo=class extends xc{sep="/";constructor(e=process.cwd(),t={}){let{nocase:n=false}=t;super(e,posix,"/",{...t,nocase:n}),this.nocase=n;}parseRootPath(e){return "/"}newRoot(e){return new Tc(this.rootPath,nr,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},la=class extends Uo{constructor(e=process.cwd(),t={}){let{nocase:n=true}=t;super(e,{...t,nocase:n});}},process.platform==="win32"?wc:Tc,BC=process.platform==="win32"?Fo:process.platform==="darwin"?la:Uo;});var HM,qM,jo,Fm=R(()=>{Zr();HM=s=>s.length>=1,qM=s=>s.length>=1,jo=class s{#e;#t;#o;length;#r;#i;#C;#c;#d;#a;#l=true;constructor(e,t,n,r){if(!HM(e))throw new TypeError("empty pattern list");if(!qM(t))throw new TypeError("empty glob list");if(t.length!==e.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=e.length,n<0||n>=this.length)throw new TypeError("index out of range");if(this.#e=e,this.#t=t,this.#o=n,this.#r=r,this.#o===0){if(this.isUNC()){let[o,i,a,l,...c]=this.#e,[u,d,m,g,...h]=this.#t;c[0]===""&&(c.shift(),h.shift());let y=[o,i,a,l,""].join("/"),b=[u,d,m,g,""].join("/");this.#e=[y,...c],this.#t=[b,...h],this.length=this.#e.length;}else if(this.isDrive()||this.isAbsolute()){let[o,...i]=this.#e,[a,...l]=this.#t;i[0]===""&&(i.shift(),l.shift());let c=o+"/",u=a+"/";this.#e=[c,...i],this.#t=[u,...l],this.length=this.#e.length;}}}pattern(){return this.#e[this.#o]}isString(){return typeof this.#e[this.#o]=="string"}isGlobstar(){return this.#e[this.#o]===Ot}isRegExp(){return this.#e[this.#o]instanceof RegExp}globString(){return this.#C=this.#C||(this.#o===0?this.isAbsolute()?this.#t[0]+this.#t.slice(1).join("/"):this.#t.join("/"):this.#t.slice(this.#o).join("/"))}hasMore(){return this.length>this.#o+1}rest(){return this.#i!==void 0?this.#i:this.hasMore()?(this.#i=new s(this.#e,this.#t,this.#o+1,this.#r),this.#i.#a=this.#a,this.#i.#d=this.#d,this.#i.#c=this.#c,this.#i):this.#i=null}isUNC(){let e=this.#e;return this.#d!==void 0?this.#d:this.#d=this.#r==="win32"&&this.#o===0&&e[0]===""&&e[1]===""&&typeof e[2]=="string"&&!!e[2]&&typeof e[3]=="string"&&!!e[3]}isDrive(){let e=this.#e;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#o===0&&this.length>1&&typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0])}isAbsolute(){let e=this.#e;return this.#a!==void 0?this.#a:this.#a=e[0]===""&&e.length>1||this.isDrive()||this.isUNC()}root(){let e=this.#e[0];return typeof e=="string"&&this.isAbsolute()&&this.#o===0?e:""}checkFollowGlobstar(){return !(this.#o===0||!this.isGlobstar()||!this.#l)}markFollowGlobstar(){return this.#o===0||!this.isGlobstar()||!this.#l?false:(this.#l=false,true)}};});var KM,Go,Um=R(()=>{Zr();Fm();KM=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Go=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(e,{nobrace:t,nocase:n,noext:r,noglobstar:o,platform:i=KM}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=i,this.mmopts={dot:true,nobrace:t,nocase:n,noext:r,noglobstar:o,optimizationLevel:2,platform:i,nocomment:true,nonegate:true};for(let a of e)this.add(a);}add(e){let t=new yn(e,this.mmopts);for(let n=0;n<t.set.length;n++){let r=t.set[n],o=t.globParts[n];if(!r||!o)throw new Error("invalid pattern object");for(;r[0]==="."&&o[0]===".";)r.shift(),o.shift();let i=new jo(r,o,0,this.platform),a=new yn(i.globString(),this.mmopts),l=o[o.length-1]==="**",c=i.isAbsolute();c?this.absolute.push(a):this.relative.push(a),l&&(c?this.absoluteChildren.push(a):this.relativeChildren.push(a));}}ignored(e){let t=e.fullpath(),n=`${t}/`,r=e.relative()||".",o=`${r}/`;for(let i of this.relative)if(i.match(r)||i.match(o))return true;for(let i of this.absolute)if(i.match(t)||i.match(n))return true;return false}childrenIgnored(e){let t=e.fullpath()+"/",n=(e.relative()||".")+"/";for(let r of this.relativeChildren)if(r.match(n))return true;for(let r of this.absoluteChildren)if(r.match(t))return true;return false}};});var jm,Gm,Wm,ca,UC=R(()=>{Zr();jm=class s{store;constructor(e=new Map){this.store=e;}copy(){return new s(new Map(this.store))}hasWalked(e,t){return this.store.get(e.fullpath())?.has(t.globString())}storeWalked(e,t){let n=e.fullpath(),r=this.store.get(n);r?r.add(t.globString()):this.store.set(n,new Set([t.globString()]));}},Gm=class{store=new Map;add(e,t,n){let r=(t?2:0)|(n?1:0),o=this.store.get(e);this.store.set(e,o===void 0?r:r&o);}entries(){return [...this.store.entries()].map(([e,t])=>[e,!!(t&2),!!(t&1)])}},Wm=class{store=new Map;add(e,t){if(!e.canReaddir())return;let n=this.store.get(e);n?n.find(r=>r.globString()===t.globString())||n.push(t):this.store.set(e,[t]);}get(e){let t=this.store.get(e);if(!t)throw new Error("attempting to walk unknown path");return t}entries(){return this.keys().map(e=>[e,this.store.get(e)])}keys(){return [...this.store.keys()].filter(e=>e.canReaddir())}},ca=class s{hasWalkedCache;matches=new Gm;subwalks=new Wm;patterns;follow;dot;opts;constructor(e,t){this.opts=e,this.follow=!!e.follow,this.dot=!!e.dot,this.hasWalkedCache=t?t.copy():new jm;}processPatterns(e,t){this.patterns=t;let n=t.map(r=>[e,r]);for(let[r,o]of n){this.hasWalkedCache.storeWalked(r,o);let i=o.root(),a=o.isAbsolute()&&this.opts.absolute!==false;if(i){r=r.resolve(i==="/"&&this.opts.root!==void 0?this.opts.root:i);let d=o.rest();if(d)o=d;else {this.matches.add(r,true,false);continue}}if(r.isENOENT())continue;let l,c,u=false;for(;typeof(l=o.pattern())=="string"&&(c=o.rest());)r=r.resolve(l),o=c,u=true;if(l=o.pattern(),c=o.rest(),u){if(this.hasWalkedCache.hasWalked(r,o))continue;this.hasWalkedCache.storeWalked(r,o);}if(typeof l=="string"){let d=l===".."||l===""||l===".";this.matches.add(r.resolve(l),a,d);continue}else if(l===Ot){(!r.isSymbolicLink()||this.follow||o.checkFollowGlobstar())&&this.subwalks.add(r,o);let d=c?.pattern(),m=c?.rest();if(!c||(d===""||d===".")&&!m)this.matches.add(r,a,d===""||d===".");else if(d===".."){let g=r.parent||r;m?this.hasWalkedCache.hasWalked(g,m)||this.subwalks.add(g,m):this.matches.add(g,a,true);}}else l instanceof RegExp&&this.subwalks.add(r,o);}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new s(this.opts,this.hasWalkedCache)}filterEntries(e,t){let n=this.subwalks.get(e),r=this.child();for(let o of t)for(let i of n){let a=i.isAbsolute(),l=i.pattern(),c=i.rest();l===Ot?r.testGlobstar(o,i,c,a):l instanceof RegExp?r.testRegExp(o,l,c,a):r.testString(o,l,c,a);}return r}testGlobstar(e,t,n,r){if((this.dot||!e.name.startsWith("."))&&(t.hasMore()||this.matches.add(e,r,false),e.canReaddir()&&(this.follow||!e.isSymbolicLink()?this.subwalks.add(e,t):e.isSymbolicLink()&&(n&&t.checkFollowGlobstar()?this.subwalks.add(e,n):t.markFollowGlobstar()&&this.subwalks.add(e,t)))),n){let o=n.pattern();if(typeof o=="string"&&o!==".."&&o!==""&&o!==".")this.testString(e,o,n.rest(),r);else if(o===".."){let i=e.parent||e;this.subwalks.add(i,n);}else o instanceof RegExp&&this.testRegExp(e,o,n.rest(),r);}}testRegExp(e,t,n,r){t.test(e.name)&&(n?this.subwalks.add(e,n):this.matches.add(e,r,false));}testString(e,t,n,r){e.isNamed(t)&&(n?this.subwalks.add(e,n):this.matches.add(e,r,false));}};});var JM,Sc,ua,da,jC=R(()=>{Lm();Um();UC();JM=(s,e)=>typeof s=="string"?new Go([s],e):Array.isArray(s)?new Go(s,e):s,Sc=class{path;patterns;opts;seen=new Set;paused=false;aborted=false;#e=[];#t;#o;signal;maxDepth;includeChildMatches;constructor(e,t,n){if(this.patterns=e,this.path=t,this.opts=n,this.#o=!n.posix&&n.platform==="win32"?"\\":"/",this.includeChildMatches=n.includeChildMatches!==false,(n.ignore||!this.includeChildMatches)&&(this.#t=JM(n.ignore??[],n),!this.includeChildMatches&&typeof this.#t.add!="function")){let r="cannot ignore child matches, ignore lacks add() method.";throw new Error(r)}this.maxDepth=n.maxDepth||1/0,n.signal&&(this.signal=n.signal,this.signal.addEventListener("abort",()=>{this.#e.length=0;}));}#r(e){return this.seen.has(e)||!!this.#t?.ignored?.(e)}#i(e){return !!this.#t?.childrenIgnored?.(e)}pause(){this.paused=true;}resume(){if(this.signal?.aborted)return;this.paused=false;let e;for(;!this.paused&&(e=this.#e.shift());)e();}onResume(e){this.signal?.aborted||(this.paused?this.#e.push(e):e());}async matchCheck(e,t){if(t&&this.opts.nodir)return;let n;if(this.opts.realpath){if(n=e.realpathCached()||await e.realpath(),!n)return;e=n;}let o=e.isUnknown()||this.opts.stat?await e.lstat():e;if(this.opts.follow&&this.opts.nodir&&o?.isSymbolicLink()){let i=await o.realpath();i&&(i.isUnknown()||this.opts.stat)&&await i.lstat();}return this.matchCheckTest(o,t)}matchCheckTest(e,t){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!t||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!e.isSymbolicLink()||!e.realpathCached()?.isDirectory())&&!this.#r(e)?e:void 0}matchCheckSync(e,t){if(t&&this.opts.nodir)return;let n;if(this.opts.realpath){if(n=e.realpathCached()||e.realpathSync(),!n)return;e=n;}let o=e.isUnknown()||this.opts.stat?e.lstatSync():e;if(this.opts.follow&&this.opts.nodir&&o?.isSymbolicLink()){let i=o.realpathSync();i&&(i?.isUnknown()||this.opts.stat)&&i.lstatSync();}return this.matchCheckTest(o,t)}matchFinish(e,t){if(this.#r(e))return;if(!this.includeChildMatches&&this.#t?.add){let o=`${e.relativePosix()}/**`;this.#t.add(o);}let n=this.opts.absolute===void 0?t:this.opts.absolute;this.seen.add(e);let r=this.opts.mark&&e.isDirectory()?this.#o:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(n){let o=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(o+r);}else {let o=this.opts.posix?e.relativePosix():e.relative(),i=this.opts.dotRelative&&!o.startsWith(".."+this.#o)?"."+this.#o:"";this.matchEmit(o?i+o+r:"."+r);}}async match(e,t,n){let r=await this.matchCheck(e,n);r&&this.matchFinish(r,t);}matchSync(e,t,n){let r=this.matchCheckSync(e,n);r&&this.matchFinish(r,t);}walkCB(e,t,n){this.signal?.aborted&&n(),this.walkCB2(e,t,new ca(this.opts),n);}walkCB2(e,t,n,r){if(this.#i(e))return r();if(this.signal?.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2(e,t,n,r));return}n.processPatterns(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||(o++,this.match(a,l,c).then(()=>i()));for(let a of n.subwalkTargets()){if(this.maxDepth!==1/0&&a.depth()>=this.maxDepth)continue;o++;let l=a.readdirCached();a.calledReaddir()?this.walkCB3(a,l,n,i):a.readdirCB((c,u)=>this.walkCB3(a,u,n,i),true);}i();}walkCB3(e,t,n,r){n=n.filterEntries(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||(o++,this.match(a,l,c).then(()=>i()));for(let[a,l]of n.subwalks.entries())o++,this.walkCB2(a,l,n.child(),i);i();}walkCBSync(e,t,n){this.signal?.aborted&&n(),this.walkCB2Sync(e,t,new ca(this.opts),n);}walkCB2Sync(e,t,n,r){if(this.#i(e))return r();if(this.signal?.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2Sync(e,t,n,r));return}n.processPatterns(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||this.matchSync(a,l,c);for(let a of n.subwalkTargets()){if(this.maxDepth!==1/0&&a.depth()>=this.maxDepth)continue;o++;let l=a.readdirSync();this.walkCB3Sync(a,l,n,i);}i();}walkCB3Sync(e,t,n,r){n=n.filterEntries(e,t);let o=1,i=()=>{--o===0&&r();};for(let[a,l,c]of n.matches.entries())this.#r(a)||this.matchSync(a,l,c);for(let[a,l]of n.subwalks.entries())o++,this.walkCB2Sync(a,l,n.child(),i);i();}},ua=class extends Sc{matches=new Set;constructor(e,t,n){super(e,t,n);}matchEmit(e){this.matches.add(e);}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((e,t)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?t(this.signal.reason):e(this.matches);});}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},da=class extends Sc{results;constructor(e,t,n){super(e,t,n),this.results=new ns({signal:this.signal,objectMode:true}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume());}matchEmit(e){this.results.write(e),this.results.flowing||this.pause();}stream(){let e=this.path;return e.isUnknown()?e.lstat().then(()=>{this.walkCB(e,this.patterns,()=>this.results.end());}):this.walkCB(e,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};});var YM,Un,zm=R(()=>{Zr();FC();Fm();jC();YM=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Un=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(e,t){if(!t)throw new TypeError("glob options required");if(this.withFileTypes=!!t.withFileTypes,this.signal=t.signal,this.follow=!!t.follow,this.dot=!!t.dot,this.dotRelative=!!t.dotRelative,this.nodir=!!t.nodir,this.mark=!!t.mark,t.cwd?(t.cwd instanceof URL||t.cwd.startsWith("file://"))&&(t.cwd=fileURLToPath(t.cwd)):this.cwd="",this.cwd=t.cwd||"",this.root=t.root,this.magicalBraces=!!t.magicalBraces,this.nobrace=!!t.nobrace,this.noext=!!t.noext,this.realpath=!!t.realpath,this.absolute=t.absolute,this.includeChildMatches=t.includeChildMatches!==false,this.noglobstar=!!t.noglobstar,this.matchBase=!!t.matchBase,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:1/0,this.stat=!!t.stat,this.ignore=t.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof e=="string"&&(e=[e]),this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===false,this.windowsPathsNoEscape&&(e=e.map(l=>l.replace(/\\/g,"/"))),this.matchBase){if(t.noglobstar)throw new TypeError("base matching requires globstar");e=e.map(l=>l.includes("/")?l:`./**/${l}`);}if(this.pattern=e,this.platform=t.platform||YM,this.opts={...t,platform:this.platform},t.scurry){if(this.scurry=t.scurry,t.nocase!==void 0&&t.nocase!==t.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else {let l=t.platform==="win32"?Fo:t.platform==="darwin"?la:t.platform?Uo:BC;this.scurry=new l(this.cwd,{nocase:t.nocase,fs:t.fs});}this.nocase=this.scurry.nocase;let n=this.platform==="darwin"||this.platform==="win32",r={...t,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:n,nocomment:true,noext:this.noext,nonegate:true,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},o=this.pattern.map(l=>new yn(l,r)),[i,a]=o.reduce((l,c)=>(l[0].push(...c.set),l[1].push(...c.globParts),l),[[],[]]);this.patterns=i.map((l,c)=>{let u=a[c];if(!u)throw new Error("invalid pattern object");return new jo(l,u,0,this.platform)});}async walk(){return [...await new ua(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return [...new ua(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new da(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new da(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};});var Hm,qm=R(()=>{Zr();Hm=(s,e={})=>{Array.isArray(s)||(s=[s]);for(let t of s)if(new yn(t,e).hasMagic())return true;return false};});function kc(s,e={}){return new Un(s,e).streamSync()}function WC(s,e={}){return new Un(s,e).stream()}function zC(s,e={}){return new Un(s,e).walkSync()}async function GC(s,e={}){return new Un(s,e).walk()}function _c(s,e={}){return new Un(s,e).iterateSync()}function HC(s,e={}){return new Un(s,e).iterate()}var XM,QM,ZM,eR,tR,Wo,Km=R(()=>{Zr();zm();qm();Zr();zm();qm();Um();XM=kc,QM=Object.assign(WC,{sync:kc}),ZM=_c,eR=Object.assign(HC,{sync:_c}),tR=Object.assign(zC,{stream:kc,iterate:_c}),Wo=Object.assign(GC,{glob:GC,globSync:zC,sync:tR,globStream:WC,stream:QM,globStreamSync:kc,streamSync:XM,globIterate:HC,iterate:eR,globIterateSync:_c,iterateSync:ZM,Glob:Un,hasMagic:Hm,escape:Lo,unescape:On});Wo.glob=Wo;});var pa,Jm=R(()=>{Ms();pa=class{languageId="typescript";extensions=[".ts",".tsx",".js",".jsx",".mjs",".cjs"];async parse(e,t){let n=e.split(`
|
|
195
|
+
`),r=[],o={class:/^(\s*)(export\s+)?(abstract\s+)?class\s+(\w+)(\s+extends\s+\w+)?(\s+implements\s+[\w,\s]+)?/,interface:/^(\s*)(export\s+)?interface\s+(\w+)(\s+extends\s+[\w,\s]+)?/,type:/^(\s*)(export\s+)?type\s+(\w+)\s*[=<]/,enum:/^(\s*)(export\s+)?enum\s+(\w+)/,function:/^(\s*)(export\s+)?(async\s+)?function\s+(\w+)\s*[<(]/,constFunction:/^(\s*)(export\s+)?(const|let|var)\s+(\w+)\s*[=:]\s*(async\s+)?(\([^)]*\)|[a-zA-Z_]\w*)\s*(=>|:.*=>)/,variable:/^(\s*)(export\s+)?(const|let|var)\s+(\w+)\s*[=:]/,method:/^(\s+)(public\s+|private\s+|protected\s+)?(static\s+)?(async\s+)?(\w+)\s*[<(]/,property:/^(\s+)(public\s+|private\s+|protected\s+)?(static\s+)?(readonly\s+)?(\w+)\s*[=:?]/},i=null,a=0;for(let l=0;l<n.length;l++){let c=n[l],u=l+1;if(i){let y=c.match(/^(\s*)/)?.[1].length||0;c.trim()&&y<=a&&!c.match(/^\s*[})\]]/)&&(i.endLine=l,r.push(i),i=null);}if(c.trim().startsWith("//")||c.trim().startsWith("/*")||!c.trim())continue;let d=c.match(o.class);if(d){if(i&&(i.endLine=l,r.push(i)),a=d[1].length,i={name:d[4],kind:"class",startLine:u,endLine:this.findSymbolEnd(n,l),children:[]},l>0){let y=n[l-1].trim();y.startsWith("/**")||y.startsWith("/*")?i.docstring=this.extractDocstring(n,l-1):y.startsWith("//")&&(i.docstring=y.replace(/^\/\/\s*/,""));}continue}let m=c.match(o.interface);if(m){r.push({name:m[3],kind:"interface",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let g=c.match(o.type);if(g){r.push({name:g[3],kind:"type",startLine:u,endLine:this.findTypeEnd(n,l)});continue}let h=c.match(o.enum);if(h){r.push({name:h[3],kind:"enum",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}if(!i){let y=c.match(o.function);if(y){r.push({name:y[4],kind:"function",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let b=c.match(o.constFunction);if(b){r.push({name:b[4],kind:"function",startLine:u,endLine:this.findSymbolEnd(n,l)});continue}let C=c.match(o.variable);if(C&&!o.constFunction.test(c)){r.push({name:C[4],kind:"variable",startLine:u,endLine:u});continue}}if(i){let y=c.match(o.method);if(y&&!["if","for","while","switch","catch","constructor"].includes(y[5])){let C={name:y[5],kind:(y[5]==="constructor","method"),startLine:u,endLine:this.findSymbolEnd(n,l),parent:i.name};i.children.push(C);continue}let b=c.match(o.property);if(b&&!["if","for","while","switch","catch","return","const","let","var"].includes(b[5])){let C={name:b[5],kind:"variable",startLine:u,endLine:u,parent:i.name};i.children.push(C);}}}return i&&(i.endLine=n.length,r.push(i)),r}findSymbolEnd(e,t){return Qr(e,t)}findTypeEnd(e,t){for(let n=t;n<e.length;n++){let r=e[n];if(r.includes(";")||n>t&&/^(export|type|interface|class|function|const|let|var)/.test(r.trim()))return n+1}return t+1}extractDocstring(e,t){let n=[],r=t;for(;r>=0;){let o=e[r].trim();if(o.startsWith("/**")||o.startsWith("/*"))break;r--;}for(let o=r;o<=t;o++){let i=e[o].trim();i=i.replace(/^\/\*\*?\s*/,"").replace(/\*\/\s*$/,"").replace(/^\*\s?/,""),i&&n.push(i);}return n.join(`
|
|
196
196
|
`)}buildSymbolPattern(e,t){let n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");switch(t){case "function":return `(function|async\\s+function|const|let|var)\\s+${n}\\s*[=(<]`;case "class":return `class\\s+${n}(\\s+extends|\\s+implements|\\s*\\{)`;case "interface":return `interface\\s+${n}(\\s+extends|\\s*\\{)`;case "type":return `type\\s+${n}\\s*[=<]`;case "enum":return `enum\\s+${n}\\s*\\{`;case "method":return `(async\\s+)?${n}\\s*\\(`;case "variable":return `(const|let|var)\\s+${n}\\s*[=:]`;default:return `(function|class|interface|type|enum|const|let|var)\\s+${n}|${n}\\s*(=|\\()`}}};});var ma,Vm=R(()=>{ma=class{languageId="python";extensions=[".py",".pyw"];async parse(e,t){let n=e.split(`
|
|
197
197
|
`),r=[],o={class:/^(\s*)class\s+(\w+)(\s*\([^)]*\))?\s*:/,function:/^(\s*)(async\s+)?def\s+(\w+)\s*\(/,variable:/^([A-Z][A-Z0-9_]*)\s*[=:]/},i=null,a=-1;for(let l=0;l<n.length;l++){let c=n[l],u=l+1,d=c.match(/^(\s*)/)?.[1].length||0;if(i&&c.trim()&&d<=a&&(i.endLine=l,r.push(i),i=null,a=-1),c.trim().startsWith("#")||!c.trim())continue;let m=c.match(o.class);if(m){i&&(i.endLine=l,r.push(i)),a=m[1].length,i={name:m[2],kind:"class",startLine:u,endLine:this.findClassEnd(n,l,a),children:[],docstring:this.extractDocstring(n,l+1)};continue}let g=c.match(o.function);if(g){let h=g[1].length,y=g[3],b=i&&h>a,C={name:y,kind:b?"method":"function",startLine:u,endLine:this.findFunctionEnd(n,l,h),docstring:this.extractDocstring(n,l+1)};b&&i?(C.parent=i.name,i.children.push(C)):r.push(C);continue}if(!i&&c.match(o.variable)){let h=c.match(o.variable);h&&r.push({name:h[1],kind:"constant",startLine:u,endLine:u});}}return i&&(i.endLine=n.length,r.push(i)),r}findClassEnd(e,t,n){for(let r=t+1;r<e.length;r++){let o=e[r];if(!o.trim())continue;if((o.match(/^(\s*)/)?.[1].length||0)<=n)return r}return e.length}findFunctionEnd(e,t,n){let r=false;for(let o=t+1;o<e.length;o++){let i=e[o];if(!i.trim())continue;let a=i.match(/^(\s*)/)?.[1].length||0;if(a>n){r=true;continue}if(r&&a<=n)return o}return e.length}extractDocstring(e,t){if(t>=e.length)return;let n=e[t].trim();if(n.startsWith('"""')||n.startsWith("'''")){let r=n.startsWith('"""')?'"""':"'''";if(n.endsWith(r)&&n.length>6)return n.slice(3,-3);let o=[n.slice(3)];for(let i=t+1;i<e.length;i++){let a=e[i].trim();if(a.endsWith(r)){o.push(a.slice(0,-3));break}o.push(a);}return o.join(`
|
|
198
198
|
`).trim()}}buildSymbolPattern(e,t){let n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");switch(t){case "function":case "method":return `(async\\s+)?def\\s+${n}\\s*\\(`;case "class":return `class\\s+${n}(\\s*\\(|\\s*:)`;case "variable":case "constant":return `^${n}\\s*[=:]`;default:return `(def|class)\\s+${n}|^${n}\\s*[=:]`}}};});var ga,Ym=R(()=>{Ms();ga=class{languageId="generic";extensions=["*"];async parse(e,t){let n=e.split(`
|
|
199
|
-
`),r=[],o={function:[/^(\s*)(export\s+)?(public\s+|private\s+|protected\s+)?(static\s+)?(async\s+)?(function\s+)?(\w+)\s*\([^)]*\)\s*[:{]/,/^(\s*)func\s+(\w+)\s*\(/,/^(\s*)(pub\s+)?fn\s+(\w+)\s*[<(]/,/^(\s*)(async\s+)?def\s+(\w+)\s*\(/,/^(\s*)def\s+(\w+)/],class:[/^(\s*)(export\s+)?(public\s+|abstract\s+)?(class|struct)\s+(\w+)/,/^(\s*)type\s+(\w+)\s+struct/,/^(\s*)(pub\s+)?struct\s+(\w+)/,/^(\s*)impl\s+(\w+)/],interface:[/^(\s*)(export\s+)?interface\s+(\w+)/,/^(\s*)type\s+(\w+)\s+interface/,/^(\s*)(pub\s+)?trait\s+(\w+)/],constant:[/^(\s*)(export\s+)?(const|final|static\s+final)\s+([A-Z_][A-Z0-9_]*)\s*[=:]/]};for(let i=0;i<n.length;i++){let a=n[i],l=i+1;if(!this.isComment(a)){for(let c of o.function){let u=a.match(c);if(u){let d=this.extractName(u);d&&!this.isKeyword(d)&&r.push({name:d,kind:"function",startLine:l,endLine:
|
|
199
|
+
`),r=[],o={function:[/^(\s*)(export\s+)?(public\s+|private\s+|protected\s+)?(static\s+)?(async\s+)?(function\s+)?(\w+)\s*\([^)]*\)\s*[:{]/,/^(\s*)func\s+(\w+)\s*\(/,/^(\s*)(pub\s+)?fn\s+(\w+)\s*[<(]/,/^(\s*)(async\s+)?def\s+(\w+)\s*\(/,/^(\s*)def\s+(\w+)/],class:[/^(\s*)(export\s+)?(public\s+|abstract\s+)?(class|struct)\s+(\w+)/,/^(\s*)type\s+(\w+)\s+struct/,/^(\s*)(pub\s+)?struct\s+(\w+)/,/^(\s*)impl\s+(\w+)/],interface:[/^(\s*)(export\s+)?interface\s+(\w+)/,/^(\s*)type\s+(\w+)\s+interface/,/^(\s*)(pub\s+)?trait\s+(\w+)/],constant:[/^(\s*)(export\s+)?(const|final|static\s+final)\s+([A-Z_][A-Z0-9_]*)\s*[=:]/]};for(let i=0;i<n.length;i++){let a=n[i],l=i+1;if(!this.isComment(a)){for(let c of o.function){let u=a.match(c);if(u){let d=this.extractName(u);d&&!this.isKeyword(d)&&r.push({name:d,kind:"function",startLine:l,endLine:Qr(n,i)});break}}for(let c of o.class){let u=a.match(c);if(u){let d=this.extractName(u);d&&r.push({name:d,kind:"class",startLine:l,endLine:Qr(n,i)});break}}for(let c of o.interface){let u=a.match(c);if(u){let d=this.extractName(u);d&&r.push({name:d,kind:"interface",startLine:l,endLine:Qr(n,i)});break}}for(let c of o.constant){let u=a.match(c);if(u){let d=this.extractName(u);d&&r.push({name:d,kind:"constant",startLine:l,endLine:l});break}}}}return r}extractName(e){for(let t=e.length-1;t>0;t--){let n=e[t];if(n&&/^\w+$/.test(n)&&!this.isModifier(n))return n}return null}isModifier(e){return ["public","private","protected","static","final","abstract","async","export","const","let","var","function","class","interface","type","enum","struct","impl","fn","func","def","pub","trait"].includes(e.toLowerCase())}isKeyword(e){return ["if","else","for","while","do","switch","case","break","continue","return","try","catch","finally","throw","new","this","super","null","undefined","true","false","import","from","as","default","with","in","of","get","set","constructor"].includes(e)}isComment(e){let t=e.trim();return t.startsWith("//")||t.startsWith("#")||t.startsWith("/*")||t.startsWith("*")||t.startsWith("--")}buildSymbolPattern(e,t){let n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");switch(t){case "function":return `(function|func|fn|def)\\s+${n}|${n}\\s*\\(`;case "class":return `(class|struct|type)\\s+${n}`;case "interface":return `(interface|trait)\\s+${n}`;default:return `(function|class|interface|struct|type|func|fn|def)\\s+${n}|${n}\\s*[=(]`}}};});var ha,Xm=R(()=>{Jm();Vm();Ym();ha=class{parsers=new Map;constructor(){this.register(new pa),this.register(new ma),this.register(new ga);}register(e){this.parsers.set(e.languageId,e);for(let t of e.extensions){let n=this.getLanguageFromExtension(t);n&&this.parsers.has(n);}}getParser(e){return this.parsers.has(e)?this.parsers.get(e):e==="javascript"?this.parsers.get("typescript")||null:this.parsers.get("generic")||null}getLanguageFromExtension(e){return {".ts":"typescript",".tsx":"typescript",".js":"javascript",".jsx":"javascript",".py":"python",".java":"java",".go":"go",".rs":"rust"}[e]||null}getSupportedLanguages(){return Array.from(this.parsers.keys()).filter(e=>e!=="generic")}};});function fa(s,e){return new Ic(s,e)}var nR,Ic,Qm=R(()=>{Km();Ji();Ms();Xm();nR="1.0.0",Ic=class{workspacePath;config;metadata=null;fileIndexCache=new Map;parserRegistry;constructor(e,t={}){this.workspacePath=e,this.config={...Fv,...t},this.parserRegistry=new ha;}get indexDir(){return Ie.join(this.workspacePath,this.config.cacheDir)}async hasIndex(){let e=Ie.join(this.indexDir,"meta.json");return jv(e)}async loadMetadata(){if(this.metadata)return this.metadata;let e=Ie.join(this.indexDir,"meta.json");try{let t=await Le.readFile(e,"utf-8");return this.metadata=JSON.parse(t),this.metadata}catch{return null}}async saveMetadata(){if(!this.metadata)return;await Vi(this.indexDir);let e=Ie.join(this.indexDir,"meta.json");await Le.writeFile(e,JSON.stringify(this.metadata,null,2));}async buildIndex(e={}){let t=Date.now(),n=[],{paths:r=this.config.include,languages:o=this.config.languages,force:i=false,onProgress:a}=e;await Vi(this.indexDir),await Vi(Ie.join(this.indexDir,"files"));let l=[];for(let d of r){let m=await Wo(d,{cwd:this.workspacePath,absolute:true,ignore:this.config.exclude});for(let g of m){let h=fm(g);h&&o.includes(h)&&l.push(g);}}let c=0,u=0;for(let d=0;d<l.length;d++){let m=l[d];a?.(d+1,l.length,m);try{if(!i){let h=await this.getFileIndex(m);if(h){let y=await Le.stat(m);if(h.mtime>=y.mtimeMs){u+=h.symbols.length,c++;continue}}}let g=await this.indexFile(m);g&&(await this.saveFileIndex(g),this.fileIndexCache.set(m,g),u+=g.symbols.length,c++);}catch(g){n.push({file:m,error:g.message});}}return this.metadata={version:nR,createdAt:this.metadata?.createdAt||Date.now(),updatedAt:Date.now(),fileCount:c,symbolCount:u,languages:o,indexDir:this.config.cacheDir},await this.saveMetadata(),{success:n.length===0,filesIndexed:c,symbolsFound:u,timeMs:Date.now()-t,errors:n}}async indexFile(e){let t=fm(e);if(!t)return null;let n=this.parserRegistry.getParser(t);if(!n)return null;try{let r=await Le.readFile(e,"utf-8"),o=await Le.stat(e),i=await n.parse(r,e),a=this.extractImports(r,t),l=this.extractExports(r,t);return {path:e,hash:Uv(r),mtime:o.mtimeMs,totalLines:r.split(`
|
|
200
200
|
`).length,symbols:i,imports:a,exports:l}}catch{return null}}extractImports(e,t){let n=[],r=e.split(`
|
|
201
201
|
`);if(["typescript","javascript"].includes(t)){let o=/^import\s+(?:(?:\{([^}]+)\}|(\w+))\s+from\s+)?['"]([^'"]+)['"]/;r.forEach((i,a)=>{let l=i.match(o);if(l){let c=l[1]?.split(",").map(u=>u.trim())||(l[2]?[l[2]]:[]);n.push({module:l[3],line:a+1,names:c.filter(Boolean)});}});}if(t==="python"){let o=/^(?:from\s+(\S+)\s+import\s+(.+)|import\s+(\S+))/;r.forEach((i,a)=>{let l=i.match(o);if(l){let c=l[1]||l[3],u=l[2]?.split(",").map(d=>d.trim())||[];n.push({module:c,line:a+1,names:u});}});}return n}extractExports(e,t){let n=[],r=e.split(`
|
|
202
202
|
`);if(["typescript","javascript"].includes(t)){let o=/^export\s+(?:(default)\s+)?(?:(class|function|const|let|var|interface|type|enum)\s+)?(\w+)?/;r.forEach((i,a)=>{let l=i.match(o);if(l){let c=l[2],u=l[3]||(l[1]?"default":"");u&&n.push({name:u,line:a+1,kind:c});}});}return n}async getFileIndex(e){if(this.fileIndexCache.has(e))return this.fileIndexCache.get(e);let t=this.getFileIndexPath(e);try{let n=await Le.readFile(t,"utf-8"),r=JSON.parse(n);return this.fileIndexCache.set(e,r),r}catch{return null}}async saveFileIndex(e){let t=this.getFileIndexPath(e.path);await Vi(Ie.dirname(t)),await Le.writeFile(t,JSON.stringify(e,null,2));}getFileIndexPath(e){let n=Ie.relative(this.workspacePath,e).replace(/[/\\]/g,"_").replace(/\./g,"_");return Ie.join(this.indexDir,"files",`${n}.json`)}async searchSymbol(e){let{query:t,kind:n,fuzzy:r=false,limit:o=20}=e,i=[],a=Ie.join(this.indexDir,"files");try{let l=await Le.readdir(a);for(let c of l)if(c.endsWith(".json"))try{let u=await Le.readFile(Ie.join(a,c),"utf-8"),d=JSON.parse(u);for(let m of d.symbols){if(n&&m.kind!==n)continue;let g=0;if(r){if(g=ym(t.toLowerCase(),m.name.toLowerCase()),g<.5)continue}else {if(!m.name.toLowerCase().includes(t.toLowerCase()))continue;g=m.name.toLowerCase()===t.toLowerCase()?1:.8;}if(i.push({symbol:m,file:d.path,score:g}),m.children)for(let h of m.children){if(n&&h.kind!==n)continue;let y=0;if(r){if(y=ym(t.toLowerCase(),h.name.toLowerCase()),y<.5)continue}else {if(!h.name.toLowerCase().includes(t.toLowerCase()))continue;y=h.name.toLowerCase()===t.toLowerCase()?1:.8;}i.push({symbol:{...h,parent:m.name},file:d.path,score:y});}}}catch{continue}}catch{}return i.sort((l,c)=>c.score-l.score).slice(0,o)}async invalidate(e){this.fileIndexCache.delete(e);let t=this.getFileIndexPath(e);try{await Le.unlink(t);}catch{}}async clear(){this.fileIndexCache.clear(),this.metadata=null;try{await Le.rm(this.indexDir,{recursive:!0,force:!0});}catch{}}async getStats(){let e=await this.loadMetadata();if(!e)return {hasIndex:false,fileCount:0,symbolCount:0,lastUpdated:null,size:0};let t=0;try{let n=Ie.join(this.indexDir,"files"),r=await Le.readdir(n);for(let o of r){let i=await Le.stat(Ie.join(n,o));t+=i.size;}}catch{}return {hasIndex:true,fileCount:e.fileCount,symbolCount:e.symbolCount,lastUpdated:new Date(e.updatedAt),size:t}}};});var qC=R(()=>{Xm();Jm();Vm();Ym();});var un=R(()=>{});function iR(s){return (!zo||Ac!==s)&&(zo=bm(s),Ac=s,Ho&&zo.setIndexManager(Ho)),zo}function ya(s){return (!Ho||Ac!==s)&&(Ho=fa(s),Ac=s,zo&&zo.setIndexManager(Ho)),Ho}function aR(s){return process.cwd()}function rr(s){let e=aR();return Ie.relative(e,s)||s}function JC(s,e){let t=Ie.relative(s,e);return t===""?true:!t.startsWith("..")&&!Ie.isAbsolute(t)}function lR(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}async function eg(s){let e=s||process.cwd(),n=await ya(e).getStats();return {hasIndex:n.hasIndex,fileCount:n.fileCount,symbolCount:n.symbolCount,lastUpdated:n.lastUpdated}}async function VC(s){let e=await eg(s);return e.hasIndex?`
|
|
@@ -627,7 +627,7 @@ Please:
|
|
|
627
627
|
- Check if the file/path exists
|
|
628
628
|
- Verify your approach
|
|
629
629
|
- Try a different method
|
|
630
|
-
`.trim()};default:return {level:0,shouldTerminate:false,message:""}}}getVerifyCommand(e,t){return e==="readfile"?t?"Use search to locate specific content, or list_directory to check if file exists":"":e==="write_file"||e==="Write"||e==="edit_file"||e==="Edit"?t?`Use readfile "${t}" to verify the changes`:"":e==="search"||e==="search_files"||e==="Glob"?"Try a different search pattern or read the file directly":e==="execute_shell"||e==="execute_bash"||e==="Bash"?"Check the command output from previous calls":""}getAlternativeAction(e,t){return e==="readfile"?"The file content should already be in your context from previous reads - use it directly":e==="write_file"||e==="Write"?"The file was already written - verify with readfile if needed":e==="edit_file"||e==="Edit"?"The edit may have already been applied - use readfile to check current content":e==="search"||e==="search_files"||e==="Glob"?"Search results should already be available - try a different pattern if not found":"Review the output from previous calls before retrying"}getCallCount(e,t){let n=this.hashArgs(e,t);return this.history.filter(r=>r.hash===n).length}reset(){this.history=[],this.interventionCount=0;}getHistory(){return [...this.history]}getRecentDuplicates(){let e=new Map;for(let t of this.history){let n=`${t.toolName}:${t.hash}`;e.set(n,(e.get(n)||0)+1);}return e}};});function Te(s,e,t,n){return {type:"ephemeral",status:e,tool:s,summary:t,final:e==="success"||e==="already_done",...n}}function Xe(s,e,t,n,r){return {type:"contextual",status:e,tool:s,summary:t,content:n,...r}}function
|
|
630
|
+
`.trim()};default:return {level:0,shouldTerminate:false,message:""}}}getVerifyCommand(e,t){return e==="readfile"?t?"Use search to locate specific content, or list_directory to check if file exists":"":e==="write_file"||e==="Write"||e==="edit_file"||e==="Edit"?t?`Use readfile "${t}" to verify the changes`:"":e==="search"||e==="search_files"||e==="Glob"?"Try a different search pattern or read the file directly":e==="execute_shell"||e==="execute_bash"||e==="Bash"?"Check the command output from previous calls":""}getAlternativeAction(e,t){return e==="readfile"?"The file content should already be in your context from previous reads - use it directly":e==="write_file"||e==="Write"?"The file was already written - verify with readfile if needed":e==="edit_file"||e==="Edit"?"The edit may have already been applied - use readfile to check current content":e==="search"||e==="search_files"||e==="Glob"?"Search results should already be available - try a different pattern if not found":"Review the output from previous calls before retrying"}getCallCount(e,t){let n=this.hashArgs(e,t);return this.history.filter(r=>r.hash===n).length}reset(){this.history=[],this.interventionCount=0;}getHistory(){return [...this.history]}getRecentDuplicates(){let e=new Map;for(let t of this.history){let n=`${t.toolName}:${t.hash}`;e.set(n,(e.get(n)||0)+1);}return e}};});function Te(s,e,t,n){return {type:"ephemeral",status:e,tool:s,summary:t,final:e==="success"||e==="already_done",...n}}function Xe(s,e,t,n,r){return {type:"contextual",status:e,tool:s,summary:t,content:n,...r}}function rs(s,e,t,n){return {type:"summarized",status:e,tool:s,summary:t,...n}}function lw(s){p.info("TOOL_RESULT",`\u{1F504} getResultForLLM input: ${s.tool}`,{type:s.type,status:s.status,tool:s.tool,hasContent:!!s.content,contentLength:s.content?.length||0,summary:s.summary?.substring(0,100)});let e;if(s.type==="ephemeral")if(s.status==="error")s.tool==="edit_file"?e=JSON.stringify({status:s.status,tool:s.tool,summary:s.summary,error:s.error,verify_hint:s.verify_hint,file_path:s.file_path,actual_content:s.actual_content,expected_start_line:s.expected_start_line,similar_matches:s.metadata?.similar_matches,suggestions:s.metadata?.suggestions}):e=JSON.stringify({status:s.status,tool:s.tool,summary:s.summary,error:s.error,verify_hint:s.verify_hint,file_path:s.file_path,similar_matches:s.metadata?.similar_matches,suggestions:s.metadata?.suggestions});else {let t=s.metadata?.edit_info;if(s.tool==="edit_file"&&t){let n=t.old_string?t.old_string.length>1e3?t.old_string.substring(0,1e3)+"...":t.old_string:void 0,r=t.new_string?t.new_string.length>1e3?t.new_string.substring(0,1e3)+"...":t.new_string:void 0;e=JSON.stringify({status:s.status,tool:s.tool,summary:s.summary,final:s.final,file_path:s.file_path,old_string_preview:n,new_string_preview:r,start_line:t.start_line});}else e=JSON.stringify({status:s.status,tool:s.tool,summary:s.summary,final:s.final,file_path:s.file_path});}else s.type==="summarized"?e=JSON.stringify({status:s.status,tool:s.tool,summary:s.summary,error:s.error}):e=JSON.stringify(s);return p.info("TOOL_RESULT",`\u2705 getResultForLLM output: ${s.tool}`,{type:s.type,tool:s.tool,llmResultLength:e.length,llmResultPreview:e.substring(0,500)}),e}var Nc=R(()=>{te();});function dg(s){if(s.startsWith("mcp__"))return "summarized";if(s in ug)return ug[s];let e=s.toLowerCase();for(let[t,n]of Object.entries(ug))if(t.toLowerCase()===e)return n;return "contextual"}function cw(s){return dg(s)==="contextual"}var ug,pg=R(()=>{Nc();ug={write_file:"ephemeral",Write:"ephemeral",edit_file:"ephemeral",Edit:"ephemeral",create_directory:"ephemeral",mkdir:"ephemeral",delete_file:"ephemeral",rename_file:"ephemeral",apply_patch:"ephemeral",move_file:"ephemeral",copy_file:"ephemeral",git_commit:"ephemeral",git_add:"ephemeral",git_push:"ephemeral",git_checkout:"ephemeral",git_branch:"ephemeral",git_merge:"ephemeral",git_stash:"ephemeral",npm_install:"ephemeral",npm_uninstall:"ephemeral",pip_install:"ephemeral",readfile:"contextual",search:"contextual",grep:"contextual",Grep:"contextual",glob:"contextual",Glob:"contextual",search_files:"contextual",ripgrep:"contextual",ls:"contextual",list_directory:"contextual",show_tree:"contextual",git_diff:"contextual",git_status:"contextual",git_blame:"contextual",git_branch_list:"contextual",git_log:"contextual",git_show:"contextual",web_search:"contextual",WebSearch:"contextual",web_fetch:"contextual",WebFetch:"contextual",analyze_code:"contextual",search_symbol:"contextual",get_definitions:"contextual",get_references:"contextual",execute_shell:"summarized",Bash:"summarized",bash:"summarized",shell:"summarized",run_tests:"summarized",run_lint:"summarized",run_format:"summarized",test:"summarized",pytest:"summarized",jest:"summarized",build:"summarized",compile:"summarized",npm_build:"summarized",code_interpreter:"summarized",python_exec:"summarized",browser_debug:"summarized"};});var ss,uw=R(()=>{un();ss=class{config;toolPermissions=new Map;permissionMemory=new Map;constructor(e={}){this.config=e;}setToolPermission(e){this.toolPermissions.set(e.toolName,e);}setToolPermissions(e){e.forEach(t=>this.setToolPermission(t));}async checkPermission(e,t){let n=e.name,r=this.getToolCategory(e),o=this.getToolPermission(e);if(o==="deny")return {allowed:false,source:"config",reason:this.toolPermissions.get(n)?.reason||`Tool "${n}" is denied`};if(o==="allow")return {allowed:true,source:"config"};let i=this.checkMemory(n);if(i)return {allowed:i.decision,source:"remembered",reason:i.decision?void 0:"User previously denied this tool"};if(!this.config.approvalHandler)return {allowed:true,source:"config",reason:"No approval handler configured - auto-approved"};try{let a=this.toolPermissions.get(n),l=await this.config.approvalHandler({toolName:n,toolCategory:r,args:t,reason:a?.reason,allowRemember:a?.allowRemember??!0});return l.remember&&this.saveMemory(n,l.approved),{allowed:l.approved,source:"user",reason:l.approved?void 0:"User denied approval",remember:l.remember}}catch(a){return {allowed:false,source:"config",reason:`Approval handler failed: ${a instanceof Error?a.message:String(a)}`}}}getToolPermission(e){let t=this.toolPermissions.get(e.name);return t?t.permission:e.permission?.defaultPermission?e.permission.defaultPermission:this.config.defaultPermission??"ask"}getToolCategory(e){return e.permission?.category?e.permission.category:this.inferToolCategory(e.name)}inferToolCategory(e){let t=e.toLowerCase();return t.includes("read")||t.includes("grep")||t.includes("glob")||t.includes("search")||t.includes("list")||t.includes("show")?"read":t.includes("write")||t.includes("edit")||t.includes("create")||t.includes("delete")||t.includes("update")?"write":t.includes("bash")||t.includes("exec")||t.includes("run")||t.includes("command")?"execute":t.includes("fetch")||t.includes("request")||t.includes("api")||t.includes("http")||t.includes("download")?"network":"system"}checkMemory(e){let t=this.permissionMemory.get(e);return t?t.expiresAt&&Date.now()>t.expiresAt?(this.permissionMemory.delete(e),null):t:null}saveMemory(e,t){let n=this.config.memoryExpirationMs?Date.now()+this.config.memoryExpirationMs:void 0;this.permissionMemory.set(e,{toolName:e,decision:t,timestamp:Date.now(),expiresAt:n});}clearMemory(e){e?this.permissionMemory.delete(e):this.permissionMemory.clear();}setApprovalHandler(e){this.config.approvalHandler=e;}};});var dw=R(()=>{un();});var Oc=R(()=>{uw();dw();});var os,mg=R(()=>{os=class{static strategies=new Map;static register(e){this.strategies.set(e.mode,e);}static getStrategy(e){let t=this.strategies.get(e);if(!t)throw new Error(`No strategy registered for mode: ${e}`);return t}static getAllModes(){return Array.from(this.strategies.keys())}};});var wa,gg=R(()=>{un();wa=class{mode="ask";filterTools(e){return e.filter(t=>this.isReadOnlyTool(t))}getSystemPrompt(){return `You are in ASK mode (read-only). You can:
|
|
631
631
|
- Read files and search code
|
|
632
632
|
- Analyze and understand the codebase
|
|
633
633
|
- Answer questions about the project
|
|
@@ -660,12 +660,12 @@ All operations will execute automatically without user confirmation. You should:
|
|
|
660
660
|
|
|
661
661
|
\u26A0\uFE0F Important: Since there's no approval step, double-check your actions before executing.
|
|
662
662
|
|
|
663
|
-
Available operations: All tools (auto-approved).`}shouldAutoApprove(){return true}getDescription(){return "Automatic mode - All operations execute without approval (use with caution)"}getIcon(){return "\u26A1"}};});function yg(s){return
|
|
663
|
+
Available operations: All tools (auto-approved).`}shouldAutoApprove(){return true}getDescription(){return "Automatic mode - All operations execute without approval (use with caution)"}getIcon(){return "\u26A1"}};});function yg(s){return os.getStrategy(s)}var pw=R(()=>{mg();gg();hg();fg();mg();gg();hg();fg();os.register(new wa);os.register(new Ta);os.register(new xa);});function yw(s,e){let t=process.env[s];if(!t)return e;let n=Number(t);return !Number.isFinite(n)||n<=0?e:Math.floor(n)}function gw(s,e){let t=s??e;return t===0||t===1/0?null:!Number.isFinite(t)||t<0?e:Math.floor(t)}function Bc(){let s=new Error("Request aborted");return s.name="AbortError",s.code="ERR_CANCELED",s.category="canceled",s}async function hw(s,e){if(s?.aborted)throw Bc();return e()}function TR(s,e){let t=Math.round(e/1e3),n=new Error(s==="first_chunk"?`Stream timeout: no response for ${t}s`:`Stream timeout: no data for ${t}s`);return n.code="STREAM_TIMEOUT",n.category="retryable_network",n.isNetworkInterrupt=true,n.streamTimeoutPhase=s,n.timeoutMs=e,n}function fw(s,e=wR){if(!s||s.length<=e)return s;let t=s.split(`
|
|
664
664
|
`).length,n=s.length,r=Math.floor(e*.4),o=Math.floor(e*.4),i=r,a=s.length-o;for(;i>0&&(s.charCodeAt(i)&192)===128;)i--;for(;a<s.length&&(s.charCodeAt(a)&192)===128;)a++;let l=s.slice(0,i),c=s.slice(a),d=`
|
|
665
665
|
|
|
666
666
|
\u2026[${n-l.length-c.length} chars truncated, total ${t} lines]\u2026
|
|
667
667
|
|
|
668
|
-
`;return l+d+c}var mw,wR,xR,SR,kR,Fc,sr=R(()=>{_v();Iv();om();lm();Wi();Nv();$v();Qn();xr();ko();Bv();Pc();Ps();ZC();Ca();te();aw();pg();sg();Oc();pw();un();Oc();un();mw=2e4,wR=15e3;xR=yw("NEOX_STREAM_FIRST_CHUNK_TIMEOUT_MS",6e4),SR=yw("NEOX_STREAM_CHUNK_TIMEOUT_MS",18e4),kR=process.env.NEOX_STREAM_WATCHDOG_DISABLED==="1";Fc=class{llmProvider;providerName;model;tools;memory;config;agentName;agentDescription;instructions;contextInjection;userData;plannerMode;inputGuardrails=[];outputGuardrails=[];toolInputGuardrails=[];toolOutputGuardrails=[];structuredOutput;structuredValidator;maxInputTokensOverride;maxInputTokens;minHistoryMessages;parallelExecutor;unifiedCompressor;compressionMode;toolMetricsHistory=[];workspacePath;disableSystemPrompt;enableFGTS;runContext;permissionManager;modeStrategy;currentMode;loopDetector;enablePlanMode;constructor(e){if(this.llmProvider=e.llmProvider,this.providerName=e.providerName,this.model=e.model,this.tools=e.tools,this.memory=e.memory,this.config=e.config,this.agentName=e.agentName||"DefaultAgent",this.agentDescription=e.agentDescription||"",this.instructions=e.instructions,this.contextInjection=e.contextInjection,this.userData=e.userData,this.plannerMode=e.plannerMode??false,this.structuredOutput=e.structuredOutput,this.maxInputTokensOverride=e.maxInputTokensOverride,this.maxInputTokens=this.computeMaxInputTokens(e.contextWindow,e.tailTokenBudget,this.maxInputTokensOverride),this.minHistoryMessages=Math.max(1,e.minHistoryMessages??6),e.structuredOutput&&(this.structuredValidator=new ec(e.structuredOutput)),this.inputGuardrails=e.inputGuardrails||[],this.outputGuardrails=e.outputGuardrails||[],this.toolInputGuardrails=e.toolInputGuardrails||[],this.toolOutputGuardrails=e.toolOutputGuardrails||[],this.parallelExecutor=new Rc,this.compressionMode=e.compressionMode??"sync",this.workspacePath=e.workspacePath,this.unifiedCompressor=new sc({debug:process.env.CLI_DEBUG==="1",minRecentMessages:this.minHistoryMessages,enableLLMCompression:true}),this.disableSystemPrompt=e.disableSystemPrompt??false,this.enableFGTS=e.enableFGTS??false,this.unifiedCompressor.setLLMProvider(this.llmProvider,this.model),e.contextWindow&&this.unifiedCompressor.setContextWindow(e.contextWindow),this.currentMode=e.config.mode??"agent",this.modeStrategy=yg(this.currentMode),this.permissionManager=e.permissionManager??new os({defaultPermission:"ask"}),this.loopDetector=iw(),this.enablePlanMode=e.enablePlanMode??true,e.approvalHandler){let t=e.approvalHandler;this.permissionManager.setApprovalHandler(async n=>({approved:await t({id:"",name:n.toolName,args:n.args}),remember:false}));}}setApprovalHandler(e){if(!e){this.permissionManager.setApprovalHandler(void 0);return}this.permissionManager.setApprovalHandler(async t=>({approved:await e({id:"",name:t.toolName,args:t.args}),remember:false}));}setMode(e){this.currentMode=e,this.modeStrategy=yg(e),p.info("Runner",`Mode switched to: ${e}`);}getMode(){return this.currentMode}getPermissionManager(){return this.permissionManager}computeMaxInputTokens(e,t,n){if(n&&n>0)return n;let o=e&&e>0?e:19e4,i=.7,a=Math.floor(o*i),l=Math.min(t??mw,Math.floor(o*.1)),c=Math.max(2e3,a-l);if(process.env.CLI_DEBUG==="1"||process.env.CLI_DEBUG_CONSOLE==="1"){let u=`[Context] maxInputTokens=${c} (contextWindow=${o}, override=${n}, tailBudget=${t??mw}, safety=${i})`;console.log(u);}return c}async*withStreamWatchdog(e,t){if(kR){for await(let i of e)yield i;return}let n=e[Symbol.asyncIterator](),r=t?new Promise((i,a)=>{t.aborted?a(Bc()):t.addEventListener("abort",()=>a(Bc()),{once:true});}):null,o=false;for(;;){if(t?.aborted){if(n.return)try{await n.return();}catch{}throw Bc()}let i=o?SR:xR,a=null,l=new Promise((c,u)=>{a=setTimeout(()=>{u(TR(o?"idle":"first_chunk",i));},i);});try{let c=await Promise.race(r?[n.next(),l,r]:[n.next(),l]);if(a&&clearTimeout(a),c.done)return;o=!0,yield c.value;}catch(c){if(a&&clearTimeout(a),n.return)try{await n.return();}catch{}throw c?.code==="STREAM_TIMEOUT"&&p.warn("RUNNER",`[watchdog] ${c.message}`),c}}}async applyContextWindow(e=0){if(!this.maxInputTokens)return null;let t=this.memory.getMessagesForLLM(),n=await this.unifiedCompressor.compressHistory(t,this.maxInputTokens,{iteration:e,enableLLMCompression:true});if(n.stats.droppedMessages>0||n.stats.llmCompressedMessages>0){this.memory.setMessages(n.messages);let r=this.compressionMode==="async"?"Async":"Sync",o=(n.originalTokens/1e3).toFixed(1),i=(n.compressedTokens/1e3).toFixed(1),a=(n.savedTokens/1e3).toFixed(1),l=n.originalCount,c=n.compressedCount;p.info("Context",`[${r}] \u538B\u7F29\u5B8C\u6210: ${l}\u6761/${o}K \u2192 ${c}\u6761/${i}K (\u8282\u7701 ${a}K, \u4E22\u5F03${n.stats.droppedMessages}\u6761, LLM\u538B\u7F29${n.stats.llmCompressedMessages}\u6761)`),n.debugInfo&&n.debugInfo.forEach(u=>p.debug("Context",u));}return n}setCompressionMode(e){this.compressionMode=e,p.info("Context",`Compression mode set to: ${e}`);}getCompressionMode(){return this.compressionMode}async getInstructions(e){if(typeof this.instructions=="string")return this.instructions;let t={name:this.agentName,description:this.agentDescription};return await this.instructions(e,t)}async getContextInjection(e){if(!this.contextInjection)return null;let n=(typeof this.contextInjection=="string"?this.contextInjection:await this.contextInjection(e,{name:this.agentName,description:this.agentDescription}))?.trim();return n||null}shouldIncludeLastRun(e){let t=e.trim().toLowerCase();return t?/上次|之前|前面|上一步|上轮|继续|回顾|resume|continue|previous|last time/.test(t):false}createRunContext(e,t=0){return {task:e,timestamp:Date.now(),currentTime:new Date,iteration:t,userData:this.userData,systemStatus:void 0}}setUserData(e){this.userData={...this.userData,...e};}async*run(e,t,n){this.runContext={task:e,timestamp:Date.now(),currentTime:new Date,iteration:0,userData:this.userData},this.loopDetector.reset(),process.env.CLI_DEBUG==="1"&&(p.debug("MK",` hasSignal: ${!!n}`),p.debug("RUNNER","========================================"),p.debug("RUNNER","=== runner.run ENTRY ==="),p.debug("RUNNER",` task: "${e?.substring(0,50)}..."`),p.debug("RUNNER",` hasImages: ${!!t&&t.length>0}`),p.debug("RUNNER",` hasSignal: ${!!n}`)),je.agentStart(e),yield {type:"agent_updated_stream_event",new_agent:{name:this.agentName}};let r=this.createRunContext(e,0),o=this.memory.hasConversationMessages?.()??this.memory.getMessagesForLLM().some(W=>W.role==="user"||W.role==="assistant"),i=!o||this.shouldIncludeLastRun(e);r.userData={...r.userData??{},hasConversation:o,includeLastRun:i},this.inputGuardrails.length>0&&(yield {type:"raw_response_event",data:{type:"input_guardrails.check_start",count:this.inputGuardrails.length},event_type:"input_guardrails.check_start"},await Es.runInputGuardrails(this.inputGuardrails,r,this.agentName,e),yield {type:"raw_response_event",data:{type:"input_guardrails.check_passed"},event_type:"input_guardrails.check_passed"});let a=await this.getInstructions(r),l=await this.getContextInjection(r);process.env.CLI_DEBUG==="1"&&(console.log("[RUNNER] dynamicInstructions length:",a?.length||0),console.log("[RUNNER] dynamicInstructions START:",a?.substring(0,200)),console.log("[RUNNER] dynamicInstructions END:",a?.substring(a.length-500)),console.log("[RUNNER] contains \u534F\u4F5C\u6A21\u5F0F:",a?.includes("\u534F\u4F5C\u6A21\u5F0F")),console.log("[RUNNER] contains delegate_task:",a?.includes("delegate_task")));let c=this.memory.getMessagesForLLM(),u=c.some(W=>W.role==="system");if(process.env.CLI_DEBUG==="1"&&(console.log("[RUNNER] hasSystemPrompt:",u,"existingMessages count:",c.length),console.log("[RUNNER] disableSystemPrompt:",this.disableSystemPrompt)),this.disableSystemPrompt)u&&this.memory.clear(),a&&this.memory.add({role:"system",content:a});else if(!u){let W=this.modeStrategy.getSystemPrompt();this.memory.add({role:"system",content:W}),this.memory.add({role:"system",content:a}),this.structuredValidator&&this.memory.add({role:"system",content:this.structuredValidator.buildSystemPrompt()});try{let U=await tg(this.workspacePath);U&&this.memory.add({role:"system",content:U});}catch{}}if(l?this.memory.upsertSystemTagged?this.memory.upsertSystemTagged("context_injection",l):u||this.memory.add({role:"system",content:l}):this.memory.removeSystemTagged?.("context_injection"),t&&t.length>0){let W=[{type:"text",text:e},...t.map(U=>({type:"image_url",image_url:{url:U,detail:"auto"}}))];this.memory.add({role:"user",content:W});}else this.memory.add({role:"user",content:e});let d=Date.now(),m=0,g="",h=0,y={totalTokens:0,promptTokens:0,completionTokens:0},b=false,C=0,T=null,S=new Map,E=0,v=0,I=[],D=this.isExecutionOrientedTask(e),O=0,k=Tr.streamMaxRetries,M=false,N=Number.isFinite(this.config.maxIterations)?this.config.maxIterations:xv,x=N===0||N===1/0,B=gw(this.config.maxToolCalls,Sv),H=gw(this.config.maxRuntimeMs,kv);for(;x||m<N;){if(n?.aborted){T="interrupted",b=true,yield {type:"error",error:"Task interrupted by user."};break}if(H!==null&&Date.now()-d>=H){T="runtime_limit",b=true,yield {type:"error",error:`Reached max runtime (${ln(H)}). Please summarize progress and ask whether to continue.`};break}if(B!==null&&h>=B){T="tool_call_limit",b=true,yield {type:"error",error:`Reached max tool calls (${B}). Please summarize progress and ask whether to continue.`};break}m++;let W=null;if(this.maxInputTokens){let z=cn(this.memory.getMessagesForLLM()),q=this.maxInputTokens*.97;z>q&&(W=await this.applyContextWindow(m));}W&&(W.stats.droppedMessages>0||W.stats.llmCompressedMessages>0)&&(yield {type:"context_compaction",status:"completed",originalMessages:W.originalCount,keptMessages:W.messages.length,droppedMessages:W.stats.droppedMessages,compressedMessages:W.stats.llmCompressedMessages,originalTokens:W.originalTokens,finalTokens:W.compressedTokens,budgetTokens:this.maxInputTokens||0,useLLM:W.stats.llmCompressedMessages>0,timestamp:Date.now()});let U=this.memory.checkContextHealth();if((U.warnings.length>0||U.shouldCleanup)&&(yield {type:"raw_response_event",data:{type:"context_health",totalTokens:U.totalTokens,toolResultTokens:U.toolResultTokens,toolResultRatio:U.toolResultRatio,messageCount:U.messageCount,toolMessageCount:U.toolMessageCount,warnings:U.warnings,shouldCompress:U.shouldCompress,shouldCleanup:U.shouldCleanup,byType:U.byType},event_type:"context_health"},U.shouldCleanup&&U.byType.ephemeral.count>5)){let z=this.memory.cleanupEphemeral();z>0&&p.info("Runner",`Cleaned ${z} ephemeral messages`);}p.debug("Runner",this.memory.getTokenSummary()),je.agentIteration(m,"thinking"),yield {type:"iteration_start",iteration:m};try{yield {type:"raw_response_event",data:{type:"response.created",response:{id:`resp_${Date.now()}`,model:this.model}},event_type:"response.created"};let z=this.memory.getMessagesForLLM();if(p.info("LLM",`Request: model=${this.model}, messages=${z.length}, tools=${this.tools.length}`),p.debug("LLM","Request messages",{messageCount:z.length,lastMessage:z[z.length-1]?.content?.toString().substring(0,200)}),process.env.CLI_DEBUG==="1"){let oe=z.filter(X=>X.role==="system");console.log("[RUNNER] System messages count:",oe.length);for(let X=0;X<oe.length;X++){let ne=oe[X].content,Y=typeof ne=="string"?ne:JSON.stringify(ne);console.log(`[RUNNER] System[${X}] length:`,Y?.length||0),console.log(`[RUNNER] System[${X}] contains \u534F\u4F5C\u6A21\u5F0F:`,Y?.includes("\u534F\u4F5C\u6A21\u5F0F")||!1),console.log(`[RUNNER] System[${X}] contains delegate_task:`,Y?.includes("delegate_task")||!1),console.log(`[RUNNER] System[${X}] preview:`,Y?.substring(0,300)||"");}}let q=this.modeStrategy.filterTools(this.tools);process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`Mode: ${this.currentMode}, Available tools: ${q.length}/${this.tools.length}`);let P=this.llmProvider.chatStreamed(this.memory.getMessagesForLLM(),{model:this.model,tools:q,temperature:this.config.temperature,structuredOutput:this.structuredOutput,maxInputTokens:this.maxInputTokens,disableSystemPrompt:this.disableSystemPrompt,enableFGTS:this.enableFGTS,signal:n}),$="",F="",V=[],Z=[],ae="",be={prompt_tokens:0,completion_tokens:0,total_tokens:0};for await(let oe of this.withStreamWatchdog(P,n)){if(oe.type==="stream_retry"){M=!0,yield oe;continue}if(oe.type==="stream_recovered"){yield {type:"stream_recovered",attempt:oe.attempt,maxRetries:oe.maxRetries};continue}yield {type:"raw_response_event",data:oe,event_type:oe.choices?.[0]?.delta?"response.delta":"response.chunk"};let X=oe.choices?.[0]?.delta;if(oe.usage){be={prompt_tokens:oe.usage.prompt_tokens||be.prompt_tokens,completion_tokens:oe.usage.completion_tokens||be.completion_tokens,total_tokens:oe.usage.total_tokens||be.total_tokens,cached_tokens:oe.usage.cached_tokens,cache_read_input_tokens:oe.usage.cache_read_input_tokens,cache_creation_input_tokens:oe.usage.cache_creation_input_tokens,prompt_tokens_details:oe.usage.prompt_tokens_details},y={promptTokens:be.prompt_tokens,completionTokens:be.completion_tokens,totalTokens:be.total_tokens};let ne=!!oe.choices?.[0]?.finish_reason;yield {type:"token_usage",usage:be,is_final:ne};}if(X){if(X.reasoning_content&&(F+=X.reasoning_content,yield {type:"reasoning_delta",delta:X.reasoning_content}),X.reasoning_complete&&(yield {type:"reasoning_complete"}),X.content&&($+=X.content,g=$,yield {type:"text_delta",delta:X.content}),X.tool_calls)for(let ne of X.tool_calls){let Y=ne.index;Z[Y]||(Z[Y]={id:ne.id||`call_${Math.floor(Date.now())}_${Y}`,type:"function",function:{name:"",arguments:""}}),ne.id&&(Z[Y].id=ne.id),ne.function?.name&&(Z[Y].function.name=ne.function.name),ne.function?.arguments&&(Z[Y].function.arguments+=ne.function.arguments,yield {type:"tool_call_delta",id:Z[Y].id,name:Z[Y].function.name,arguments_delta:ne.function.arguments}),ne.thoughtSignature&&(Z[Y].thoughtSignature=ne.thoughtSignature);}oe.choices?.[0]?.finish_reason&&(ae=oe.choices[0].finish_reason),oe.thinking_blocks&&Array.isArray(oe.thinking_blocks)&&(V=oe.thinking_blocks.map(ne=>({type:ne.type,thinking:ne.thinking,signature:ne.signature,data:ne.data})));}}$&&(yield {type:"text_done"}),process.env.CLI_DEBUG_CONSOLE==="1"&&process.env.NEOX_UI_MODE==="1"&&console.log("[Runner] \u{1F3AF} Emitting response.completed event (after LLM response)"),yield {type:"raw_response_event",data:{type:"response.completed"},event_type:"response.completed"};let Pe={role:"assistant",content:($||"").trimEnd()};if(F&&(Pe.reasoning_content=F),V.length>0&&(Pe.thinking_blocks=V),Z.length>0&&(Pe.tool_calls=Z.map(oe=>({...oe,function:{...oe.function,arguments:oe.function.arguments}}))),this.memory.add(Pe),process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Stream ended. toolCalls.length=${Z.length}, fullContent.length=${$.length}`),Z.length>0){let oe=/\[omitted\s+\w+:\s*\d+\s*lines?,\s*\d+\s*chars?\]/i;for(let L of Z){let ee=L.function.arguments||"";if(oe.test(ee)){console.error("[Runner] \u{1F6A8} Placeholder string detected in tool arguments!"),console.error(`[Runner] Tool: ${L.function.name}`),console.error(`[Runner] Arguments preview: ${ee.substring(0,500)}`),yield {type:"raw_response_event",data:{type:"error.placeholder_detected",message:"Model generated placeholder string instead of actual content. This usually happens when the model sees truncated data in conversation history.",tool:L.function.name},event_type:"error.placeholder_detected"},yield {type:"error",error:'Error: Model attempted to write placeholder text ("[omitted ...]") instead of actual content. This happens when conversation history contains truncated data. Please start a new conversation.'},b=!0;break}}if(b)break;if(B!==null&&h+Z.length>B){T="tool_call_limit",b=!0,yield {type:"error",error:`Tool call budget exceeded (max ${B}, requested ${Z.length}). Please summarize progress and ask whether to continue.`};break}if(Z.length>1){let L=Z.map(me=>me.function.name),ee=[...new Set(L)];ee.length===1&&L.length>1?p.info("RUNNER",`\u{1F504} Parallel calls: ${L.length}x ${ee[0]} (different parameters)`):p.info("RUNNER",`\u{1F504} Parallel calls: ${L.join(", ")}`);}let X=new Map;for(let L of Z)X.set(L.id,qo(L.function.arguments));for(let L of Z){h++,yield {type:"run_item_stream_event",name:"tool_called",item:{type:"tool_call_item",id:L.id,name:L.function.name,arguments:L.function.arguments,timestamp:Date.now()}},yield {type:"tool_call_start",id:L.id,name:L.function.name};let me=X.get(L.id),le=me?.ok??!1;le?me?.repaired&&p.warn("RUNNER","Tool arguments repaired from non-standard JSON",{tool:L.function.name,callId:L.id}):je.toolError(L.function.name,`Invalid JSON arguments (${me?.reason||"parse failed"}): ${L.function.arguments.substring(0,200)}...`),yield {type:"tool_call_done",id:L.id,name:L.function.name,arguments:L.function.arguments,success:le},yield {type:"raw_response_event",data:{type:"response.function_call_arguments.done",call_id:L.id,name:L.function.name,arguments:L.function.arguments},event_type:"response.function_call_arguments.done"};}let ne=new Set,Y=null,Ae=Z.length>1;process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`Processing ${Z.length} tool call(s)`,{isParallel:Ae,tools:Z.map(L=>L.function.name)});for(let L of Z){let ee=X.get(L.id);if(!ee?.ok){let Ne=`Invalid JSON arguments for tool "${L.function.name}": ${ee?.reason||"parse failed"}. Return strict JSON object arguments.`;yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:Ne,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:Ne,success:!1},this.memory.addToolResult(L.id,L.function.name,Ne),this.loopDetector.updateLastStatus("error"),ne.add(L.id);continue}let me=ee.args,le=this.loopDetector.detect(L.function.name,me);if(this.loopDetector.record(L.function.name,me),le===0)continue;let we=this.loopDetector.generateIntervention(le,L.function.name,me);if(this.memory.add({role:"system",content:we.message}),le===2&&cw(L.function.name))continue;if(yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:we.message,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:we.message,success:!1},this.memory.addToolResult(L.id,L.function.name,we.message),this.loopDetector.updateLastStatus("error"),ne.add(L.id),we.shouldTerminate){Y=we;break}}if(Y&&(yield {type:"error",error:Y.message},b=!0),b)break;let ge=ne.size>0?Z.filter(L=>!ne.has(L.id)):Z,_e=new Set(this.modeStrategy.filterTools(this.tools).map(L=>L.name)),fe=L=>L.replace(/["\s/>]+$/g,"").trim(),Se=[];for(let L of ge){let ee=fe(L.function.name);if(_e.has(ee)||_e.has(L.function.name)){Se.push(L);continue}let me=`Tool "${L.function.name}" is not allowed in ${this.currentMode} mode`;je.toolError(L.function.name,me),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:me,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:me,success:!1},this.memory.addToolResult(L.id,L.function.name,me),p.info("PERMISSION",`Tool blocked by mode: ${L.function.name} - ${me}`);}if(Se.length===0)continue;let pe=Se.map(L=>({id:L.id,type:"function",function:{name:L.function.name,arguments:(()=>{let ee=X.get(L.id);return ee?.ok?JSON.stringify(ee.args):L.function.arguments})()}})),J=!1;if(process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Before permission check. shouldAutoApprove=${this.modeStrategy.shouldAutoApprove()}, parallelToolCalls=${pe.length}`),!this.modeStrategy.shouldAutoApprove()){let L=new Set;try{for(let ee of Se)try{let me=X.get(ee.id);if(!me?.ok)continue;let le=me.args,we=this.tools.find(ye=>ye.name===ee.function.name);if(!we){p.warn("RUNNER",`Tool not found: ${ee.function.name}`);continue}let We=await hw(n,async()=>this.permissionManager.checkPermission(we,le));if(!We.allowed){L.add(ee.id);let ye=We.reason||`Tool "${ee.function.name}" was denied`;je.toolError(ee.function.name,ye),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:ee.id,name:ee.function.name,output:ye,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:ee.id,name:ee.function.name,output:ye,success:!1};let ot=JSON.stringify({type:"ephemeral",status:"error",tool:ee.function.name,summary:"Tool execution denied by user",error:ye,final:!0});this.memory.addToolResult(ee.id,ee.function.name,ot),p.info("PERMISSION",`Tool denied: ${ee.function.name} - ${ye}`),J=!0;}}catch(me){if(me?.name==="AbortError"||me?.code==="ERR_CANCELED")throw me;je.toolError(ee.function.name,me?.message||"permission check failed");}}catch(ee){if(ee?.name==="AbortError"||ee?.code==="ERR_CANCELED"){p.info("RUNNER","Interrupt detected during permission check"),b=!0;break}throw ee}if(Se=Se.filter(ee=>!L.has(ee.id)),pe=pe.filter(ee=>!L.has(ee.id)),J){p.info("RUNNER","User denied tool - terminating current turn");break}if(pe.length===0)continue}if(process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} After permission check. parallelToolCalls=${pe.length}, userDeniedTool=${J}`),this.toolInputGuardrails.length>0){let L=new Set;try{for(let ee of Se)try{let me=X.get(ee.id);if(!me?.ok)continue;let le=me.args,we={tool_name:ee.function.name,tool_input:le,tool_call_id:ee.id},We=this.tools.find(Ne=>Ne.name===ee.function.name);if(!We)continue;this.runContext.iteration=m;let ye=await hw(n,async()=>Es.runToolInputGuardrails(this.toolInputGuardrails,{context:this.runContext,tool_context:we,agent_name:this.agentName,tool:We}));if(!ye.should_execute){L.add(ee.id);let Ne=ye.rejection_message||`Tool ${ee.function.name} was blocked by guardrail`;je.toolError(ee.function.name,`Blocked by guardrail: ${Ne}`),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:ee.id,name:ee.function.name,output:Ne,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:ee.id,name:ee.function.name,output:Ne,success:!1},this.memory.addToolResult(ee.id,ee.function.name,Ne),am(this.runContext,ee.function.name,le,!1);}}catch(me){if(me?.name==="AbortError"||me?.code==="ERR_CANCELED")throw me;if(me instanceof Pn){je.toolError(ee.function.name,`Guardrail tripwire triggered: ${me.message}`),yield {type:"error",error:`Guardrail tripwire triggered for ${ee.function.name}: ${me.message}`},b=!0;break}je.toolError(ee.function.name,`Guardrail check failed: ${me?.message}`);}}catch(ee){if(ee?.name==="AbortError"||ee?.code==="ERR_CANCELED"){p.info("RUNNER","Interrupt detected during guardrails check"),b=!0;break}throw ee}if(b)break;if(Se=Se.filter(ee=>!L.has(ee.id)),pe=pe.filter(ee=>!L.has(ee.id)),pe.length===0)continue}process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Before tool execution. parallelToolCalls=${pe.length}`);let he=await this.parallelExecutor.execute(pe,this.tools,L=>{if(je.toolCall(L.name,{}),L.success){let me=typeof L.output=="string"?L.output.length:JSON.stringify(L.output).length;je.toolResult(L.name,!0,me,L.executionTime||0);}else je.toolError(L.name,L.output);let ee={type:"tool_call_output_item",id:L.id,name:L.name,output:L.output,success:L.success,timestamp:Date.now()};},n),K=0,re=0,se=0,ve=!1;for(let L of he.results){if(this.toolMetricsHistory.push({name:L.name,duration:L.executionTime||0,success:L.success}),this.toolMetricsHistory.length>50&&this.toolMetricsHistory.shift(),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.name,output:L.output,success:L.success,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.name,output:L.output,success:L.success},(L.name==="update_plan"||L.name==="call_tool")&&L.success)try{p.info("PLAN_UPDATE","\u{1F525} Detected plan-related tool call",{resultId:L.id,toolName:L.name,toolCallsCount:Z.length});let ye=Z.find(Ne=>Ne.id===L.id);if(ye){p.info("PLAN_UPDATE","\u{1F525} Found original call",{callId:ye.id,argsLength:ye.function.arguments?.length});let Ne=qo(ye.function.arguments||"{}");if(!Ne.ok)throw new Error(Ne.reason||"Invalid update_plan arguments");let ot=Ne.args,Ht=null;if(L.name==="update_plan"?Ht=ot:L.name==="call_tool"&&ot?.name==="update_plan"&&(Ht=ot.args),!Ht||!Array.isArray(Ht.plan))p.debug("PLAN_UPDATE","Skip non-update_plan call_tool",{resultId:L.id,toolName:L.name,callToolName:ot?.name});else {let Fr=!0;if(typeof L.output=="string")try{let br=JSON.parse(L.output);br&&typeof br=="object"&&"success"in br&&(Fr=br.success!==!1);}catch{}Fr?(p.info("PLAN_UPDATE","\u{1F525} Parsed plan args",{hasExplanation:!!Ht.explanation,planSteps:Ht.plan?.length}),yield {type:"plan_update",explanation:Ht.explanation,plan:Ht.plan,timestamp:Date.now()},p.info("PLAN_UPDATE","\u2705 Emitted plan_update event")):p.warn("PLAN_UPDATE","Skip failed update_plan output",{resultId:L.id});}}else p.warn("PLAN_UPDATE","\u274C Could not find original tool call",{resultId:L.id,availableIds:Z.map(Ne=>Ne.id)});}catch(ye){p.error("PLAN_UPDATE","\u274C Failed to parse plan",{error:ye});}let me=typeof L.output=="string"?fw(L.output):fw(JSON.stringify(L.output));me=this.enrichToolResult(me,L.name,L.executionTime||0);let le=Z.find(ye=>ye.id===L.id),we={};if(le){let ye=qo(le.function.arguments||"{}");ye.ok&&(we=ye.args);}if(this.toolOutputGuardrails.length>0)try{let ye=this.tools.find(Ne=>Ne.name===L.name);if(ye){let Ne={tool_name:L.name,tool_input:we,tool_call_id:L.id},ot=await Es.runToolOutputGuardrails(this.toolOutputGuardrails,{context:this.runContext,tool_context:Ne,agent_name:this.agentName,tool:ye,output:L.output});ot.should_use_output||(me=ot.replacement_message||"[Output blocked by guardrail]",je.toolError(L.name,"Output blocked by guardrail"));}}catch(ye){ye instanceof Pn&&je.toolError(L.name,`Output guardrail tripwire triggered: ${ye.message}`);}if(!L.success&&typeof L.output=="string"){let ye=L.output.toLowerCase();if(ye.includes("operation cancelled")||ye.includes("command interrupted")||ye.includes("request aborted")){process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Detected cancellation in tool output, breaking loop"),p.info("RUNNER","\u68C0\u6D4B\u5230\u5DE5\u5177\u4E2D\u65AD\u4FE1\u53F7\uFF0C\u7EC8\u6B62\u6267\u884C\u5FAA\u73AF"),b=!0;break}}am(this.runContext,L.name,we,L.success),p.info("TOOL_RESULT",`\u{1F4E6} Tool raw output: ${L.name}`,{toolName:L.name,success:L.success,rawLength:typeof L.output=="string"?L.output.length:JSON.stringify(L.output).length,truncatedLength:me.length,outputPreview:me.substring(0,500)}),this.memory.addToolResult(L.id,L.name,me);let We=L.success?"success":"error";try{let ye=typeof L.output=="string"?L.output:JSON.stringify(L.output),Ne=JSON.parse(ye);Ne.status==="already_done"?We="already_done":Ne.status==="success"?We="success":Ne.status==="error"&&(We="error");}catch{}if(this.loopDetector.updateLastStatus(We),I.push({iteration:m,name:L.name,status:We,executionTime:L.executionTime||0}),I.length>24&&I.shift(),We==="error"?re++:We==="already_done"?(se++,this.isVerificationTool(L.name)&&(ve=!0)):(K++,this.isVerificationTool(L.name)&&(ve=!0)),We==="error"){let ye=(S.get(L.name)||0)+1;if(S.set(L.name,ye),L.name==="edit_file"&&(ye===2||ye===3)){let Ne=typeof L.output=="string"?L.output:JSON.stringify(L.output),ot=L.name,Ht=ow(ot,Ne);this.memory.add({role:"system",content:Ht});}}else S.set(L.name,0);}if(m>0&&m%5===0){let L=this.buildPerformanceHint();L&&(this.memory.add({role:"system",content:L}),process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Performance hint injected:",L));}let Be=K+se>0;if(E=re>0&&!Be?E+1:0,process.env.CLI_DEBUG==="1"&&p.debug("LOOP_GATE","Iteration quality",{iteration:m,executionTask:D,success:K,alreadyDone:se,error:re,lowProgressStreak:E,verificationSuccess:ve}),D&&E>=2&&(this.memory.add({role:"system",content:this.buildLowProgressReplanPrompt(E)}),v++,E=0,yield {type:"raw_response_event",data:{type:"loop.progress_gate",iteration:m,reason:"low_progress",nudgeCount:v},event_type:"loop.progress_gate"}),process.env.CLI_DEBUG_CONSOLE==="1"&&he.stats&&(yield {type:"raw_response_event",data:{type:"parallel_execution.stats",stats:he.stats},event_type:"parallel_execution.stats"}),n?.aborted){b=!0;break}continue}else {if(this.plannerMode&&C<2&&this.shouldAutoContinuePlan($)){C++;let X=this.buildPlanFollowupPrompt();yield {type:"raw_response_event",data:{type:"plan.auto_continue",plan_text:$,followup_prompt:X,count:C},event_type:"plan.auto_continue"},this.memory.add({role:"user",content:X});continue}if($&&(yield {type:"run_item_stream_event",name:"message_output_created",item:{type:"message_output_item",content:$,role:"assistant",timestamp:Date.now()}}),process.env.CLI_DEBUG==="1"&&(p.info("RUNNER","=== Loop Exit: No Tool Calls ==="),p.info("RUNNER",`Finish Reason: ${ae}`),p.info("RUNNER",`Content Length: ${$.length}`),p.info("RUNNER",`Content Preview: ${$.slice(0,300)}`),p.info("RUNNER",`Tool Calls Count: ${Z.length}`),p.info("RUNNER",`Iteration: ${m}`)),this.structuredValidator){let X=this.structuredValidator.validate($);if(X.ok)g=X.normalized||$,yield {type:"raw_response_event",data:{type:"structured_output.accepted",schema:this.structuredOutput?.name,normalized_text:g,parsed:X.parsed},event_type:"structured_output.accepted"};else {yield {type:"raw_response_event",data:{type:"structured_output.retry",schema:this.structuredOutput?.name,reason:X.reason,message:X.message,errors:X.errors},event_type:"structured_output.retry"},this.memory.add({role:"system",content:this.structuredValidator.buildRetryPrompt(X)}),g="";continue}}else g=$;this.outputGuardrails.length>0&&g&&(yield {type:"raw_response_event",data:{type:"output_guardrails.check_start",count:this.outputGuardrails.length},event_type:"output_guardrails.check_start"},await Es.runOutputGuardrails(this.outputGuardrails,r,this.agentName,g),yield {type:"raw_response_event",data:{type:"output_guardrails.check_passed"},event_type:"output_guardrails.check_passed"});let oe=this.evaluateCompletionEvidence(D,h,I);if(!oe.ok){v++,this.memory.add({role:"system",content:this.buildEvidenceRequiredPrompt(oe.reason)}),process.env.CLI_DEBUG==="1"&&p.debug("LOOP_GATE","Completion blocked: missing evidence",{iteration:m,reason:oe.reason,nudgeCount:v}),yield {type:"raw_response_event",data:{type:"loop.completion_gate",iteration:m,reason:oe.reason,nudgeCount:v},event_type:"loop.completion_gate"};continue}break}}catch(z){if(z?.type==="stream_retry"){M=true,yield z;continue}let q=z instanceof Ye?z:An(z);if(process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Error classified:",{category:q.category,code:q.code,retryable:q.retryable,message:q.message}),q.category==="canceled"){T="interrupted",b=true,yield {type:"error",error:"Task interrupted by user."};break}if(q.retryable&&O<k&&!M){O++;let V=zi(q.category,O,q.retryAfter),Z=q.category==="retryable_rate_limit",ae=q.code==="STREAM_TIMEOUT",be=q.category==="retryable_network"||q.category==="retryable_stream";p.warn("RUNNER",`Retrying after ${ln(V)} (attempt ${O}/${k}): ${q.message}`),yield {type:"raw_response_event",data:{type:"runner.stream_retry",error:q.message,errorCode:q.code,attempt:O,maxRetries:k,delayMs:V,isRateLimit:Z,isStreamTimeout:ae,isNetworkError:be},event_type:"runner.stream_retry"},await So(V),m--;continue}let P=Ql(q),$=q.message;P&&!$.includes(P)&&($=`${$}
|
|
668
|
+
`;return l+d+c}var mw,wR,xR,SR,kR,Fc,sr=R(()=>{_v();Iv();om();lm();Wi();Nv();$v();Qn();xr();ko();Bv();Pc();Ps();ZC();Ca();te();aw();pg();sg();Oc();pw();un();Oc();un();mw=2e4,wR=15e3;xR=yw("NEOX_STREAM_FIRST_CHUNK_TIMEOUT_MS",6e4),SR=yw("NEOX_STREAM_CHUNK_TIMEOUT_MS",18e4),kR=process.env.NEOX_STREAM_WATCHDOG_DISABLED==="1";Fc=class{llmProvider;providerName;model;tools;memory;config;agentName;agentDescription;instructions;contextInjection;userData;plannerMode;inputGuardrails=[];outputGuardrails=[];toolInputGuardrails=[];toolOutputGuardrails=[];structuredOutput;structuredValidator;maxInputTokensOverride;maxInputTokens;minHistoryMessages;parallelExecutor;unifiedCompressor;compressionMode;toolMetricsHistory=[];workspacePath;disableSystemPrompt;enableFGTS;runContext;permissionManager;modeStrategy;currentMode;loopDetector;enablePlanMode;constructor(e){if(this.llmProvider=e.llmProvider,this.providerName=e.providerName,this.model=e.model,this.tools=e.tools,this.memory=e.memory,this.config=e.config,this.agentName=e.agentName||"DefaultAgent",this.agentDescription=e.agentDescription||"",this.instructions=e.instructions,this.contextInjection=e.contextInjection,this.userData=e.userData,this.plannerMode=e.plannerMode??false,this.structuredOutput=e.structuredOutput,this.maxInputTokensOverride=e.maxInputTokensOverride,this.maxInputTokens=this.computeMaxInputTokens(e.contextWindow,e.tailTokenBudget,this.maxInputTokensOverride),this.minHistoryMessages=Math.max(1,e.minHistoryMessages??6),e.structuredOutput&&(this.structuredValidator=new ec(e.structuredOutput)),this.inputGuardrails=e.inputGuardrails||[],this.outputGuardrails=e.outputGuardrails||[],this.toolInputGuardrails=e.toolInputGuardrails||[],this.toolOutputGuardrails=e.toolOutputGuardrails||[],this.parallelExecutor=new Rc,this.compressionMode=e.compressionMode??"sync",this.workspacePath=e.workspacePath,this.unifiedCompressor=new sc({debug:process.env.CLI_DEBUG==="1",minRecentMessages:this.minHistoryMessages,enableLLMCompression:true}),this.disableSystemPrompt=e.disableSystemPrompt??false,this.enableFGTS=e.enableFGTS??false,this.unifiedCompressor.setLLMProvider(this.llmProvider,this.model),e.contextWindow&&this.unifiedCompressor.setContextWindow(e.contextWindow),this.currentMode=e.config.mode??"agent",this.modeStrategy=yg(this.currentMode),this.permissionManager=e.permissionManager??new ss({defaultPermission:"ask"}),this.loopDetector=iw(),this.enablePlanMode=e.enablePlanMode??true,e.approvalHandler){let t=e.approvalHandler;this.permissionManager.setApprovalHandler(async n=>({approved:await t({id:"",name:n.toolName,args:n.args}),remember:false}));}}setApprovalHandler(e){if(!e){this.permissionManager.setApprovalHandler(void 0);return}this.permissionManager.setApprovalHandler(async t=>({approved:await e({id:"",name:t.toolName,args:t.args}),remember:false}));}setMode(e){this.currentMode=e,this.modeStrategy=yg(e),p.info("Runner",`Mode switched to: ${e}`);}getMode(){return this.currentMode}getPermissionManager(){return this.permissionManager}computeMaxInputTokens(e,t,n){if(n&&n>0)return n;let o=e&&e>0?e:19e4,i=.7,a=Math.floor(o*i),l=Math.min(t??mw,Math.floor(o*.1)),c=Math.max(2e3,a-l);if(process.env.CLI_DEBUG==="1"||process.env.CLI_DEBUG_CONSOLE==="1"){let u=`[Context] maxInputTokens=${c} (contextWindow=${o}, override=${n}, tailBudget=${t??mw}, safety=${i})`;console.log(u);}return c}async*withStreamWatchdog(e,t){if(kR){for await(let i of e)yield i;return}let n=e[Symbol.asyncIterator](),r=t?new Promise((i,a)=>{t.aborted?a(Bc()):t.addEventListener("abort",()=>a(Bc()),{once:true});}):null,o=false;for(;;){if(t?.aborted){if(n.return)try{await n.return();}catch{}throw Bc()}let i=o?SR:xR,a=null,l=new Promise((c,u)=>{a=setTimeout(()=>{u(TR(o?"idle":"first_chunk",i));},i);});try{let c=await Promise.race(r?[n.next(),l,r]:[n.next(),l]);if(a&&clearTimeout(a),c.done)return;o=!0,yield c.value;}catch(c){if(a&&clearTimeout(a),n.return)try{await n.return();}catch{}throw c?.code==="STREAM_TIMEOUT"&&p.warn("RUNNER",`[watchdog] ${c.message}`),c}}}async applyContextWindow(e=0){if(!this.maxInputTokens)return null;let t=this.memory.getMessagesForLLM(),n=await this.unifiedCompressor.compressHistory(t,this.maxInputTokens,{iteration:e,enableLLMCompression:true});if(n.stats.droppedMessages>0||n.stats.llmCompressedMessages>0){this.memory.setMessages(n.messages);let r=this.compressionMode==="async"?"Async":"Sync",o=(n.originalTokens/1e3).toFixed(1),i=(n.compressedTokens/1e3).toFixed(1),a=(n.savedTokens/1e3).toFixed(1),l=n.originalCount,c=n.compressedCount;p.info("Context",`[${r}] \u538B\u7F29\u5B8C\u6210: ${l}\u6761/${o}K \u2192 ${c}\u6761/${i}K (\u8282\u7701 ${a}K, \u4E22\u5F03${n.stats.droppedMessages}\u6761, LLM\u538B\u7F29${n.stats.llmCompressedMessages}\u6761)`),n.debugInfo&&n.debugInfo.forEach(u=>p.debug("Context",u));}return n}setCompressionMode(e){this.compressionMode=e,p.info("Context",`Compression mode set to: ${e}`);}getCompressionMode(){return this.compressionMode}async getInstructions(e){if(typeof this.instructions=="string")return this.instructions;let t={name:this.agentName,description:this.agentDescription};return await this.instructions(e,t)}async getContextInjection(e){if(!this.contextInjection)return null;let n=(typeof this.contextInjection=="string"?this.contextInjection:await this.contextInjection(e,{name:this.agentName,description:this.agentDescription}))?.trim();return n||null}shouldIncludeLastRun(e){let t=e.trim().toLowerCase();return t?/上次|之前|前面|上一步|上轮|继续|回顾|resume|continue|previous|last time/.test(t):false}createRunContext(e,t=0){return {task:e,timestamp:Date.now(),currentTime:new Date,iteration:t,userData:this.userData,systemStatus:void 0}}setUserData(e){this.userData={...this.userData,...e};}async*run(e,t,n){this.runContext={task:e,timestamp:Date.now(),currentTime:new Date,iteration:0,userData:this.userData},this.loopDetector.reset(),process.env.CLI_DEBUG==="1"&&(p.debug("MK",` hasSignal: ${!!n}`),p.debug("RUNNER","========================================"),p.debug("RUNNER","=== runner.run ENTRY ==="),p.debug("RUNNER",` task: "${e?.substring(0,50)}..."`),p.debug("RUNNER",` hasImages: ${!!t&&t.length>0}`),p.debug("RUNNER",` hasSignal: ${!!n}`)),je.agentStart(e),yield {type:"agent_updated_stream_event",new_agent:{name:this.agentName}};let r=this.createRunContext(e,0),o=this.memory.hasConversationMessages?.()??this.memory.getMessagesForLLM().some(W=>W.role==="user"||W.role==="assistant"),i=!o||this.shouldIncludeLastRun(e);r.userData={...r.userData??{},hasConversation:o,includeLastRun:i},this.inputGuardrails.length>0&&(yield {type:"raw_response_event",data:{type:"input_guardrails.check_start",count:this.inputGuardrails.length},event_type:"input_guardrails.check_start"},await Es.runInputGuardrails(this.inputGuardrails,r,this.agentName,e),yield {type:"raw_response_event",data:{type:"input_guardrails.check_passed"},event_type:"input_guardrails.check_passed"});let a=await this.getInstructions(r),l=await this.getContextInjection(r);process.env.CLI_DEBUG==="1"&&(console.log("[RUNNER] dynamicInstructions length:",a?.length||0),console.log("[RUNNER] dynamicInstructions START:",a?.substring(0,200)),console.log("[RUNNER] dynamicInstructions END:",a?.substring(a.length-500)),console.log("[RUNNER] contains \u534F\u4F5C\u6A21\u5F0F:",a?.includes("\u534F\u4F5C\u6A21\u5F0F")),console.log("[RUNNER] contains delegate_task:",a?.includes("delegate_task")));let c=this.memory.getMessagesForLLM(),u=c.some(W=>W.role==="system");if(process.env.CLI_DEBUG==="1"&&(console.log("[RUNNER] hasSystemPrompt:",u,"existingMessages count:",c.length),console.log("[RUNNER] disableSystemPrompt:",this.disableSystemPrompt)),this.disableSystemPrompt)u&&this.memory.clear(),a&&this.memory.add({role:"system",content:a});else if(!u){let W=this.modeStrategy.getSystemPrompt();this.memory.add({role:"system",content:W}),this.memory.add({role:"system",content:a}),this.structuredValidator&&this.memory.add({role:"system",content:this.structuredValidator.buildSystemPrompt()});try{let U=await tg(this.workspacePath);U&&this.memory.add({role:"system",content:U});}catch{}}if(l?this.memory.upsertSystemTagged?this.memory.upsertSystemTagged("context_injection",l):u||this.memory.add({role:"system",content:l}):this.memory.removeSystemTagged?.("context_injection"),t&&t.length>0){let W=[{type:"text",text:e},...t.map(U=>({type:"image_url",image_url:{url:U,detail:"auto"}}))];this.memory.add({role:"user",content:W});}else this.memory.add({role:"user",content:e});let d=Date.now(),m=0,g="",h=0,y={totalTokens:0,promptTokens:0,completionTokens:0},b=false,C=0,T=null,S=new Map,E=0,v=0,I=[],D=this.isExecutionOrientedTask(e),O=0,k=Tr.streamMaxRetries,M=false,N=Number.isFinite(this.config.maxIterations)?this.config.maxIterations:xv,x=N===0||N===1/0,B=gw(this.config.maxToolCalls,Sv),H=gw(this.config.maxRuntimeMs,kv);for(;x||m<N;){if(n?.aborted){T="interrupted",b=true,yield {type:"error",error:"Task interrupted by user."};break}if(H!==null&&Date.now()-d>=H){T="runtime_limit",b=true,yield {type:"error",error:`Reached max runtime (${ln(H)}). Please summarize progress and ask whether to continue.`};break}if(B!==null&&h>=B){T="tool_call_limit",b=true,yield {type:"error",error:`Reached max tool calls (${B}). Please summarize progress and ask whether to continue.`};break}m++;let W=null;if(this.maxInputTokens){let z=cn(this.memory.getMessagesForLLM()),q=this.maxInputTokens*.97;z>q&&(W=await this.applyContextWindow(m));}W&&(W.stats.droppedMessages>0||W.stats.llmCompressedMessages>0)&&(yield {type:"context_compaction",status:"completed",originalMessages:W.originalCount,keptMessages:W.messages.length,droppedMessages:W.stats.droppedMessages,compressedMessages:W.stats.llmCompressedMessages,originalTokens:W.originalTokens,finalTokens:W.compressedTokens,budgetTokens:this.maxInputTokens||0,useLLM:W.stats.llmCompressedMessages>0,timestamp:Date.now()});let U=this.memory.checkContextHealth();if((U.warnings.length>0||U.shouldCleanup)&&(yield {type:"raw_response_event",data:{type:"context_health",totalTokens:U.totalTokens,toolResultTokens:U.toolResultTokens,toolResultRatio:U.toolResultRatio,messageCount:U.messageCount,toolMessageCount:U.toolMessageCount,warnings:U.warnings,shouldCompress:U.shouldCompress,shouldCleanup:U.shouldCleanup,byType:U.byType},event_type:"context_health"},U.shouldCleanup&&U.byType.ephemeral.count>5)){let z=this.memory.cleanupEphemeral();z>0&&p.info("Runner",`Cleaned ${z} ephemeral messages`);}p.debug("Runner",this.memory.getTokenSummary()),je.agentIteration(m,"thinking"),yield {type:"iteration_start",iteration:m};try{yield {type:"raw_response_event",data:{type:"response.created",response:{id:`resp_${Date.now()}`,model:this.model}},event_type:"response.created"};let z=this.memory.getMessagesForLLM();if(p.info("LLM",`Request: model=${this.model}, messages=${z.length}, tools=${this.tools.length}`),p.debug("LLM","Request messages",{messageCount:z.length,lastMessage:z[z.length-1]?.content?.toString().substring(0,200)}),process.env.CLI_DEBUG==="1"){let oe=z.filter(X=>X.role==="system");console.log("[RUNNER] System messages count:",oe.length);for(let X=0;X<oe.length;X++){let ne=oe[X].content,Y=typeof ne=="string"?ne:JSON.stringify(ne);console.log(`[RUNNER] System[${X}] length:`,Y?.length||0),console.log(`[RUNNER] System[${X}] contains \u534F\u4F5C\u6A21\u5F0F:`,Y?.includes("\u534F\u4F5C\u6A21\u5F0F")||!1),console.log(`[RUNNER] System[${X}] contains delegate_task:`,Y?.includes("delegate_task")||!1),console.log(`[RUNNER] System[${X}] preview:`,Y?.substring(0,300)||"");}}let q=this.modeStrategy.filterTools(this.tools);process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`Mode: ${this.currentMode}, Available tools: ${q.length}/${this.tools.length}`);let P=this.llmProvider.chatStreamed(this.memory.getMessagesForLLM(),{model:this.model,tools:q,temperature:this.config.temperature,structuredOutput:this.structuredOutput,maxInputTokens:this.maxInputTokens,disableSystemPrompt:this.disableSystemPrompt,enableFGTS:this.enableFGTS,signal:n}),$="",F="",V=[],Z=[],ae="",be={prompt_tokens:0,completion_tokens:0,total_tokens:0};for await(let oe of this.withStreamWatchdog(P,n)){if(oe.type==="stream_retry"){M=!0,yield oe;continue}if(oe.type==="stream_recovered"){yield {type:"stream_recovered",attempt:oe.attempt,maxRetries:oe.maxRetries};continue}yield {type:"raw_response_event",data:oe,event_type:oe.choices?.[0]?.delta?"response.delta":"response.chunk"};let X=oe.choices?.[0]?.delta;if(oe.usage){be={prompt_tokens:oe.usage.prompt_tokens||be.prompt_tokens,completion_tokens:oe.usage.completion_tokens||be.completion_tokens,total_tokens:oe.usage.total_tokens||be.total_tokens,cached_tokens:oe.usage.cached_tokens,cache_read_input_tokens:oe.usage.cache_read_input_tokens,cache_creation_input_tokens:oe.usage.cache_creation_input_tokens,prompt_tokens_details:oe.usage.prompt_tokens_details},y={promptTokens:be.prompt_tokens,completionTokens:be.completion_tokens,totalTokens:be.total_tokens};let ne=!!oe.choices?.[0]?.finish_reason;yield {type:"token_usage",usage:be,is_final:ne};}if(X){if(X.reasoning_content&&(F+=X.reasoning_content,yield {type:"reasoning_delta",delta:X.reasoning_content}),X.reasoning_complete&&(yield {type:"reasoning_complete"}),X.content&&($+=X.content,g=$,yield {type:"text_delta",delta:X.content}),X.tool_calls)for(let ne of X.tool_calls){let Y=ne.index;Z[Y]||(Z[Y]={id:ne.id||`call_${Math.floor(Date.now())}_${Y}`,type:"function",function:{name:"",arguments:""}}),ne.id&&(Z[Y].id=ne.id),ne.function?.name&&(Z[Y].function.name=ne.function.name),ne.function?.arguments&&(Z[Y].function.arguments+=ne.function.arguments,yield {type:"tool_call_delta",id:Z[Y].id,name:Z[Y].function.name,arguments_delta:ne.function.arguments}),ne.thoughtSignature&&(Z[Y].thoughtSignature=ne.thoughtSignature);}oe.choices?.[0]?.finish_reason&&(ae=oe.choices[0].finish_reason),oe.thinking_blocks&&Array.isArray(oe.thinking_blocks)&&(V=oe.thinking_blocks.map(ne=>({type:ne.type,thinking:ne.thinking,signature:ne.signature,data:ne.data})));}}$&&(yield {type:"text_done"}),process.env.CLI_DEBUG_CONSOLE==="1"&&process.env.NEOX_UI_MODE==="1"&&console.log("[Runner] \u{1F3AF} Emitting response.completed event (after LLM response)"),yield {type:"raw_response_event",data:{type:"response.completed"},event_type:"response.completed"};let Pe={role:"assistant",content:($||"").trimEnd()};if(F&&(Pe.reasoning_content=F),V.length>0&&(Pe.thinking_blocks=V),Z.length>0&&(Pe.tool_calls=Z.map(oe=>({...oe,function:{...oe.function,arguments:oe.function.arguments}}))),this.memory.add(Pe),process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Stream ended. toolCalls.length=${Z.length}, fullContent.length=${$.length}`),Z.length>0){let oe=/\[omitted\s+\w+:\s*\d+\s*lines?,\s*\d+\s*chars?\]/i;for(let L of Z){let ee=L.function.arguments||"";if(oe.test(ee)){console.error("[Runner] \u{1F6A8} Placeholder string detected in tool arguments!"),console.error(`[Runner] Tool: ${L.function.name}`),console.error(`[Runner] Arguments preview: ${ee.substring(0,500)}`),yield {type:"raw_response_event",data:{type:"error.placeholder_detected",message:"Model generated placeholder string instead of actual content. This usually happens when the model sees truncated data in conversation history.",tool:L.function.name},event_type:"error.placeholder_detected"},yield {type:"error",error:'Error: Model attempted to write placeholder text ("[omitted ...]") instead of actual content. This happens when conversation history contains truncated data. Please start a new conversation.'},b=!0;break}}if(b)break;if(B!==null&&h+Z.length>B){T="tool_call_limit",b=!0,yield {type:"error",error:`Tool call budget exceeded (max ${B}, requested ${Z.length}). Please summarize progress and ask whether to continue.`};break}if(Z.length>1){let L=Z.map(me=>me.function.name),ee=[...new Set(L)];ee.length===1&&L.length>1?p.info("RUNNER",`\u{1F504} Parallel calls: ${L.length}x ${ee[0]} (different parameters)`):p.info("RUNNER",`\u{1F504} Parallel calls: ${L.join(", ")}`);}let X=new Map;for(let L of Z)X.set(L.id,qo(L.function.arguments));for(let L of Z){h++,yield {type:"run_item_stream_event",name:"tool_called",item:{type:"tool_call_item",id:L.id,name:L.function.name,arguments:L.function.arguments,timestamp:Date.now()}},yield {type:"tool_call_start",id:L.id,name:L.function.name};let me=X.get(L.id),le=me?.ok??!1;le?me?.repaired&&p.warn("RUNNER","Tool arguments repaired from non-standard JSON",{tool:L.function.name,callId:L.id}):je.toolError(L.function.name,`Invalid JSON arguments (${me?.reason||"parse failed"}): ${L.function.arguments.substring(0,200)}...`),yield {type:"tool_call_done",id:L.id,name:L.function.name,arguments:L.function.arguments,success:le},yield {type:"raw_response_event",data:{type:"response.function_call_arguments.done",call_id:L.id,name:L.function.name,arguments:L.function.arguments},event_type:"response.function_call_arguments.done"};}let ne=new Set,Y=null,Ae=Z.length>1;process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`Processing ${Z.length} tool call(s)`,{isParallel:Ae,tools:Z.map(L=>L.function.name)});for(let L of Z){let ee=X.get(L.id);if(!ee?.ok){let Ne=`Invalid JSON arguments for tool "${L.function.name}": ${ee?.reason||"parse failed"}. Return strict JSON object arguments.`;yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:Ne,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:Ne,success:!1},this.memory.addToolResult(L.id,L.function.name,Ne),this.loopDetector.updateLastStatus("error"),ne.add(L.id);continue}let me=ee.args,le=this.loopDetector.detect(L.function.name,me);if(this.loopDetector.record(L.function.name,me),le===0)continue;let we=this.loopDetector.generateIntervention(le,L.function.name,me);if(this.memory.add({role:"system",content:we.message}),le===2&&cw(L.function.name))continue;if(yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:we.message,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:we.message,success:!1},this.memory.addToolResult(L.id,L.function.name,we.message),this.loopDetector.updateLastStatus("error"),ne.add(L.id),we.shouldTerminate){Y=we;break}}if(Y&&(yield {type:"error",error:Y.message},b=!0),b)break;let ge=ne.size>0?Z.filter(L=>!ne.has(L.id)):Z,_e=new Set(this.modeStrategy.filterTools(this.tools).map(L=>L.name)),fe=L=>L.replace(/["\s/>]+$/g,"").trim(),Se=[];for(let L of ge){let ee=fe(L.function.name);if(_e.has(ee)||_e.has(L.function.name)){Se.push(L);continue}let me=`Tool "${L.function.name}" is not allowed in ${this.currentMode} mode`;je.toolError(L.function.name,me),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.function.name,output:me,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.function.name,output:me,success:!1},this.memory.addToolResult(L.id,L.function.name,me),p.info("PERMISSION",`Tool blocked by mode: ${L.function.name} - ${me}`);}if(Se.length===0)continue;let pe=Se.map(L=>({id:L.id,type:"function",function:{name:L.function.name,arguments:(()=>{let ee=X.get(L.id);return ee?.ok?JSON.stringify(ee.args):L.function.arguments})()}})),J=!1;if(process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Before permission check. shouldAutoApprove=${this.modeStrategy.shouldAutoApprove()}, parallelToolCalls=${pe.length}`),!this.modeStrategy.shouldAutoApprove()){let L=new Set;try{for(let ee of Se)try{let me=X.get(ee.id);if(!me?.ok)continue;let le=me.args,we=this.tools.find(ye=>ye.name===ee.function.name);if(!we){p.warn("RUNNER",`Tool not found: ${ee.function.name}`);continue}let We=await hw(n,async()=>this.permissionManager.checkPermission(we,le));if(!We.allowed){L.add(ee.id);let ye=We.reason||`Tool "${ee.function.name}" was denied`;je.toolError(ee.function.name,ye),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:ee.id,name:ee.function.name,output:ye,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:ee.id,name:ee.function.name,output:ye,success:!1};let ot=JSON.stringify({type:"ephemeral",status:"error",tool:ee.function.name,summary:"Tool execution denied by user",error:ye,final:!0});this.memory.addToolResult(ee.id,ee.function.name,ot),p.info("PERMISSION",`Tool denied: ${ee.function.name} - ${ye}`),J=!0;}}catch(me){if(me?.name==="AbortError"||me?.code==="ERR_CANCELED")throw me;je.toolError(ee.function.name,me?.message||"permission check failed");}}catch(ee){if(ee?.name==="AbortError"||ee?.code==="ERR_CANCELED"){p.info("RUNNER","Interrupt detected during permission check"),b=!0;break}throw ee}if(Se=Se.filter(ee=>!L.has(ee.id)),pe=pe.filter(ee=>!L.has(ee.id)),J){p.info("RUNNER","User denied tool - terminating current turn");break}if(pe.length===0)continue}if(process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} After permission check. parallelToolCalls=${pe.length}, userDeniedTool=${J}`),this.toolInputGuardrails.length>0){let L=new Set;try{for(let ee of Se)try{let me=X.get(ee.id);if(!me?.ok)continue;let le=me.args,we={tool_name:ee.function.name,tool_input:le,tool_call_id:ee.id},We=this.tools.find(Ne=>Ne.name===ee.function.name);if(!We)continue;this.runContext.iteration=m;let ye=await hw(n,async()=>Es.runToolInputGuardrails(this.toolInputGuardrails,{context:this.runContext,tool_context:we,agent_name:this.agentName,tool:We}));if(!ye.should_execute){L.add(ee.id);let Ne=ye.rejection_message||`Tool ${ee.function.name} was blocked by guardrail`;je.toolError(ee.function.name,`Blocked by guardrail: ${Ne}`),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:ee.id,name:ee.function.name,output:Ne,success:!1,timestamp:Date.now()}},yield {type:"tool_output",id:ee.id,name:ee.function.name,output:Ne,success:!1},this.memory.addToolResult(ee.id,ee.function.name,Ne),am(this.runContext,ee.function.name,le,!1);}}catch(me){if(me?.name==="AbortError"||me?.code==="ERR_CANCELED")throw me;if(me instanceof Pn){je.toolError(ee.function.name,`Guardrail tripwire triggered: ${me.message}`),yield {type:"error",error:`Guardrail tripwire triggered for ${ee.function.name}: ${me.message}`},b=!0;break}je.toolError(ee.function.name,`Guardrail check failed: ${me?.message}`);}}catch(ee){if(ee?.name==="AbortError"||ee?.code==="ERR_CANCELED"){p.info("RUNNER","Interrupt detected during guardrails check"),b=!0;break}throw ee}if(b)break;if(Se=Se.filter(ee=>!L.has(ee.id)),pe=pe.filter(ee=>!L.has(ee.id)),pe.length===0)continue}process.env.CLI_DEBUG==="1"&&p.debug("RUNNER",`\u{1F525} Before tool execution. parallelToolCalls=${pe.length}`);let he=await this.parallelExecutor.execute(pe,this.tools,L=>{if(je.toolCall(L.name,{}),L.success){let me=typeof L.output=="string"?L.output.length:JSON.stringify(L.output).length;je.toolResult(L.name,!0,me,L.executionTime||0);}else je.toolError(L.name,L.output);let ee={type:"tool_call_output_item",id:L.id,name:L.name,output:L.output,success:L.success,timestamp:Date.now()};},n),K=0,re=0,se=0,ve=!1;for(let L of he.results){if(this.toolMetricsHistory.push({name:L.name,duration:L.executionTime||0,success:L.success}),this.toolMetricsHistory.length>50&&this.toolMetricsHistory.shift(),yield {type:"run_item_stream_event",name:"tool_output",item:{type:"tool_call_output_item",id:L.id,name:L.name,output:L.output,success:L.success,timestamp:Date.now()}},yield {type:"tool_output",id:L.id,name:L.name,output:L.output,success:L.success},(L.name==="update_plan"||L.name==="call_tool")&&L.success)try{p.info("PLAN_UPDATE","\u{1F525} Detected plan-related tool call",{resultId:L.id,toolName:L.name,toolCallsCount:Z.length});let ye=Z.find(Ne=>Ne.id===L.id);if(ye){p.info("PLAN_UPDATE","\u{1F525} Found original call",{callId:ye.id,argsLength:ye.function.arguments?.length});let Ne=qo(ye.function.arguments||"{}");if(!Ne.ok)throw new Error(Ne.reason||"Invalid update_plan arguments");let ot=Ne.args,Ht=null;if(L.name==="update_plan"?Ht=ot:L.name==="call_tool"&&ot?.name==="update_plan"&&(Ht=ot.args),!Ht||!Array.isArray(Ht.plan))p.debug("PLAN_UPDATE","Skip non-update_plan call_tool",{resultId:L.id,toolName:L.name,callToolName:ot?.name});else {let Fr=!0;if(typeof L.output=="string")try{let br=JSON.parse(L.output);br&&typeof br=="object"&&"success"in br&&(Fr=br.success!==!1);}catch{}Fr?(p.info("PLAN_UPDATE","\u{1F525} Parsed plan args",{hasExplanation:!!Ht.explanation,planSteps:Ht.plan?.length}),yield {type:"plan_update",explanation:Ht.explanation,plan:Ht.plan,timestamp:Date.now()},p.info("PLAN_UPDATE","\u2705 Emitted plan_update event")):p.warn("PLAN_UPDATE","Skip failed update_plan output",{resultId:L.id});}}else p.warn("PLAN_UPDATE","\u274C Could not find original tool call",{resultId:L.id,availableIds:Z.map(Ne=>Ne.id)});}catch(ye){p.error("PLAN_UPDATE","\u274C Failed to parse plan",{error:ye});}let me=typeof L.output=="string"?fw(L.output):fw(JSON.stringify(L.output));me=this.enrichToolResult(me,L.name,L.executionTime||0);let le=Z.find(ye=>ye.id===L.id),we={};if(le){let ye=qo(le.function.arguments||"{}");ye.ok&&(we=ye.args);}if(this.toolOutputGuardrails.length>0)try{let ye=this.tools.find(Ne=>Ne.name===L.name);if(ye){let Ne={tool_name:L.name,tool_input:we,tool_call_id:L.id},ot=await Es.runToolOutputGuardrails(this.toolOutputGuardrails,{context:this.runContext,tool_context:Ne,agent_name:this.agentName,tool:ye,output:L.output});ot.should_use_output||(me=ot.replacement_message||"[Output blocked by guardrail]",je.toolError(L.name,"Output blocked by guardrail"));}}catch(ye){ye instanceof Pn&&je.toolError(L.name,`Output guardrail tripwire triggered: ${ye.message}`);}if(!L.success&&typeof L.output=="string"){let ye=L.output.toLowerCase();if(ye.includes("operation cancelled")||ye.includes("command interrupted")||ye.includes("request aborted")){process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Detected cancellation in tool output, breaking loop"),p.info("RUNNER","\u68C0\u6D4B\u5230\u5DE5\u5177\u4E2D\u65AD\u4FE1\u53F7\uFF0C\u7EC8\u6B62\u6267\u884C\u5FAA\u73AF"),b=!0;break}}am(this.runContext,L.name,we,L.success),p.info("TOOL_RESULT",`\u{1F4E6} Tool raw output: ${L.name}`,{toolName:L.name,success:L.success,rawLength:typeof L.output=="string"?L.output.length:JSON.stringify(L.output).length,truncatedLength:me.length,outputPreview:me.substring(0,500)}),this.memory.addToolResult(L.id,L.name,me);let We=L.success?"success":"error";try{let ye=typeof L.output=="string"?L.output:JSON.stringify(L.output),Ne=JSON.parse(ye);Ne.status==="already_done"?We="already_done":Ne.status==="success"?We="success":Ne.status==="error"&&(We="error");}catch{}if(this.loopDetector.updateLastStatus(We),I.push({iteration:m,name:L.name,status:We,executionTime:L.executionTime||0}),I.length>24&&I.shift(),We==="error"?re++:We==="already_done"?(se++,this.isVerificationTool(L.name)&&(ve=!0)):(K++,this.isVerificationTool(L.name)&&(ve=!0)),We==="error"){let ye=(S.get(L.name)||0)+1;if(S.set(L.name,ye),L.name==="edit_file"&&(ye===2||ye===3)){let Ne=typeof L.output=="string"?L.output:JSON.stringify(L.output),ot=L.name,Ht=ow(ot,Ne);this.memory.add({role:"system",content:Ht});}}else S.set(L.name,0);}if(m>0&&m%5===0){let L=this.buildPerformanceHint();L&&(this.memory.add({role:"system",content:L}),process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Performance hint injected:",L));}let Be=K+se>0;if(E=re>0&&!Be?E+1:0,process.env.CLI_DEBUG==="1"&&p.debug("LOOP_GATE","Iteration quality",{iteration:m,executionTask:D,success:K,alreadyDone:se,error:re,lowProgressStreak:E,verificationSuccess:ve}),D&&E>=2&&(this.memory.add({role:"system",content:this.buildLowProgressReplanPrompt(E)}),v++,E=0,yield {type:"raw_response_event",data:{type:"loop.progress_gate",iteration:m,reason:"low_progress",nudgeCount:v},event_type:"loop.progress_gate"}),process.env.CLI_DEBUG_CONSOLE==="1"&&he.stats&&(yield {type:"raw_response_event",data:{type:"parallel_execution.stats",stats:he.stats},event_type:"parallel_execution.stats"}),n?.aborted){b=!0;break}continue}else {if(this.plannerMode&&C<2&&this.shouldAutoContinuePlan($)){C++;let X=this.buildPlanFollowupPrompt();yield {type:"raw_response_event",data:{type:"plan.auto_continue",plan_text:$,followup_prompt:X,count:C},event_type:"plan.auto_continue"},this.memory.add({role:"user",content:X});continue}if($&&(yield {type:"run_item_stream_event",name:"message_output_created",item:{type:"message_output_item",content:$,role:"assistant",timestamp:Date.now()}}),process.env.CLI_DEBUG==="1"&&(p.info("RUNNER","=== Loop Exit: No Tool Calls ==="),p.info("RUNNER",`Finish Reason: ${ae}`),p.info("RUNNER",`Content Length: ${$.length}`),p.info("RUNNER",`Content Preview: ${$.slice(0,300)}`),p.info("RUNNER",`Tool Calls Count: ${Z.length}`),p.info("RUNNER",`Iteration: ${m}`)),this.structuredValidator){let X=this.structuredValidator.validate($);if(X.ok)g=X.normalized||$,yield {type:"raw_response_event",data:{type:"structured_output.accepted",schema:this.structuredOutput?.name,normalized_text:g,parsed:X.parsed},event_type:"structured_output.accepted"};else {yield {type:"raw_response_event",data:{type:"structured_output.retry",schema:this.structuredOutput?.name,reason:X.reason,message:X.message,errors:X.errors},event_type:"structured_output.retry"},this.memory.add({role:"system",content:this.structuredValidator.buildRetryPrompt(X)}),g="";continue}}else g=$;this.outputGuardrails.length>0&&g&&(yield {type:"raw_response_event",data:{type:"output_guardrails.check_start",count:this.outputGuardrails.length},event_type:"output_guardrails.check_start"},await Es.runOutputGuardrails(this.outputGuardrails,r,this.agentName,g),yield {type:"raw_response_event",data:{type:"output_guardrails.check_passed"},event_type:"output_guardrails.check_passed"});let oe=this.evaluateCompletionEvidence(D,h,I);if(!oe.ok){v++,this.memory.add({role:"system",content:this.buildEvidenceRequiredPrompt(oe.reason)}),process.env.CLI_DEBUG==="1"&&p.debug("LOOP_GATE","Completion blocked: missing evidence",{iteration:m,reason:oe.reason,nudgeCount:v}),yield {type:"raw_response_event",data:{type:"loop.completion_gate",iteration:m,reason:oe.reason,nudgeCount:v},event_type:"loop.completion_gate"};continue}break}}catch(z){if(z?.type==="stream_retry"){M=true,yield z;continue}let q=z instanceof Ye?z:An(z);if(process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Runner] Error classified:",{category:q.category,code:q.code,retryable:q.retryable,message:q.message}),q.category==="canceled"){T="interrupted",b=true,yield {type:"error",error:"Task interrupted by user."};break}if(q.retryable&&O<k&&!M){O++;let V=zi(q.category,O,q.retryAfter),Z=q.category==="retryable_rate_limit",ae=q.code==="STREAM_TIMEOUT",be=q.category==="retryable_network"||q.category==="retryable_stream";p.warn("RUNNER",`Retrying after ${ln(V)} (attempt ${O}/${k}): ${q.message}`),yield {type:"raw_response_event",data:{type:"runner.stream_retry",error:q.message,errorCode:q.code,attempt:O,maxRetries:k,delayMs:V,isRateLimit:Z,isStreamTimeout:ae,isNetworkError:be},event_type:"runner.stream_retry"},await So(V),m--;continue}let P=Ql(q),$=q.message;P&&!$.includes(P)&&($=`${$}
|
|
669
669
|
|
|
670
670
|
\u{1F4A1} Suggestion: ${P}`),b=true;let F=Lv($,{providerName:this.providerName});je.agentError(F),yield {type:"raw_response_event",data:{type:"error.classified",category:q.category,code:q.code,message:q.message,retryable:q.retryable,suggestion:P,context:q.context},event_type:"error.classified"},yield {type:"error",error:F};break}}!b&&!x&&m>=N&&!g&&(T=T||"iteration_limit",b=true,yield {type:"error",error:`Reached max iterations (${N}). Please summarize progress and ask whether to continue.`}),b||(je.agentComplete(m,h,y),p.info("LLM",`Complete: iterations=${m}, toolCalls=${h}, tokens=${y.totalTokens} (prompt=${y.promptTokens}, completion=${y.completionTokens})`)),process.env.CLI_DEBUG==="1"&&(p.debug("RUNNER","=== runner.run COMPLETING ==="),p.debug("RUNNER",` iterations: ${m}`),p.debug("RUNNER",` toolCalls: ${h}`),p.debug("RUNNER",` encounteredError: ${b}`),T&&p.debug("RUNNER",` stoppedBy: ${T}`)),yield {type:"run_done"},process.env.CLI_DEBUG==="1"&&p.debug("RUNNER","=== runner.run END (run_done yielded) ===");}shouldAutoContinuePlan(e){if(!this.plannerMode)return false;let t=(e||"").trim();if(t.length<40)return false;let n=t.toLowerCase();return ["planned steps","plan:","execution plan","\u884C\u52A8\u8BA1\u5212","\u8BA1\u5212\uFF1A","\u8BA1\u5212\u5982\u4E0B","\u65B9\u6848\uFF1A","\u6B65\u9AA4\u8BA1\u5212"].some(a=>n.includes(a))?(t.match(/(^|\n)\s*[-*•]\s+/g)||[]).length+(t.match(/(^|\n)\s*\d+\.\s+/g)||[]).length>=2:false}buildPlanFollowupPrompt(){return "Plan approved. Continue executing the plan step by step and start working immediately."}isExecutionOrientedTask(e){let t=(e||"").toLowerCase();return t.trim()?/(修复|修改|实现|编写|重构|新增|删除|运行|测试|构建|验证|fix|implement|write|edit|refactor|run|test|build|validate|debug)/i.test(t):false}isVerificationTool(e){let t=(e||"").toLowerCase();return t.includes("read")||t.includes("search")||t.includes("grep")||t.includes("test")||t.includes("lint")||t.includes("build")||t.includes("check")||t.includes("execute_shell")||t==="bash"}isMutationTool(e){let t=(e||"").toLowerCase();return t.includes("write")||t.includes("edit")||t.includes("create")||t.includes("delete")||t.includes("rename")}evaluateCompletionEvidence(e,t,n){if(this.currentMode==="auto")return {ok:true,reason:"assistant_mode"};if(!e)return {ok:true,reason:"non_execution_task"};if(t===0)return {ok:false,reason:"no_tool_execution"};let o=n.slice(-10).filter(l=>l.status==="success"||l.status==="already_done");return o.length===0?{ok:false,reason:"no_successful_tool_result"}:o.some(l=>this.isVerificationTool(l.name))?{ok:true,reason:"verified"}:o.some(l=>this.isMutationTool(l.name))?{ok:false,reason:"missing_validation_after_mutation"}:{ok:true,reason:"sufficient_success"}}buildLowProgressReplanPrompt(e){return ["[LOOP OPTIMIZER NOTICE]",`You had ${e} low-progress iterations (mostly failed tool calls).`,"Pause and re-plan before next tool call.","Required:","1) Briefly state root cause of previous failures.","2) Choose a different tool/argument strategy.","3) Run one verification step to confirm progress."].join(`
|
|
671
671
|
`)}buildEvidenceRequiredPrompt(e){return ["[COMPLETION GATE]",`Cannot conclude task yet: ${e}.`,"Before final answer, provide concrete execution evidence:","- If code/files changed, verify via read/test/build/lint/check command.","- If command already ran, quote key output signals.","Then continue and finish only after evidence is present."].join(`
|
|
@@ -1283,10 +1283,10 @@ Rules:
|
|
|
1283
1283
|
- Keep step descriptions short (5-7 words)
|
|
1284
1284
|
- Only ONE step should be "in_progress" at any time
|
|
1285
1285
|
- Mark completed steps as "completed"
|
|
1286
|
-
- Update the plan whenever you complete a step or start a new one`,parameters:{type:"object",properties:{explanation:{type:"string",description:"Optional explanation for the plan update"},plan:{type:"array",description:"The list of steps",items:{type:"object",properties:{step:{type:"string",description:"Step description (5-7 words)"},status:{type:"string",enum:["pending","in_progress","completed"],description:"Step status: pending, in_progress, or completed"}},required:["step","status"]}}},required:["plan"]}};});function vT(s){oh=s;}function CT(s,e){let t=s||
|
|
1286
|
+
- Update the plan whenever you complete a step or start a new one`,parameters:{type:"object",properties:{explanation:{type:"string",description:"Optional explanation for the plan update"},plan:{type:"array",description:"The list of steps",items:{type:"object",properties:{step:{type:"string",description:"Step description (5-7 words)"},status:{type:"string",enum:["pending","in_progress","completed"],description:"Step status: pending, in_progress, or completed"}},required:["step","status"]}}},required:["plan"]}};});function vT(s){oh=s;}function CT(s,e){let t=s||is;if(!t)return;let n=js.get(t);if(!n)return;let r=TL(n.questions,e);n.resolve(r),js.delete(t),is===t&&(is=null);}function TL(s,e){let t=[];for(let n of s){let r=e[n.question]||"(\u672A\u56DE\u7B54)";t.push(`Q: ${n.question}
|
|
1287
1287
|
A: ${r}`);}return t.join(`
|
|
1288
1288
|
|
|
1289
|
-
`)}var js,
|
|
1289
|
+
`)}var js,is,oh,wL,wT,ih=R(()=>{js=new Map,is=null,oh=null;wL=0,wT={name:"ask_user",description:`\u5411\u7528\u6237\u63D0\u95EE\u5E76\u7B49\u5F85\u56DE\u7B54\u3002\u7528\u4E8E\u9700\u8981\u7528\u6237\u786E\u8BA4\u3001\u9009\u62E9\u65B9\u6848\u6216\u63D0\u4F9B\u504F\u597D\u65F6\u3002
|
|
1290
1290
|
|
|
1291
1291
|
\u4F55\u65F6\u4F7F\u7528\uFF1A
|
|
1292
1292
|
- \u9700\u8981\u7528\u6237\u5728\u591A\u4E2A\u65B9\u6848\u4E2D\u9009\u62E9
|
|
@@ -1295,7 +1295,7 @@ A: ${r}`);}return t.join(`
|
|
|
1295
1295
|
|
|
1296
1296
|
\u53C2\u6570\uFF1A
|
|
1297
1297
|
- questions: \u95EE\u9898\u6570\u7EC4\uFF081-4 \u4E2A\uFF09\uFF0C\u6BCF\u4E2A\u5305\u542B question \u6587\u672C\u548C options \u9009\u9879\u5217\u8868
|
|
1298
|
-
- \u7528\u6237\u53EF\u4EE5\u9009\u62E9\u9884\u8BBE\u9009\u9879\uFF0C\u4E5F\u53EF\u4EE5\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54`,parameters:{type:"object",properties:{questions:{type:"array",items:{type:"object",properties:{question:{type:"string",description:"\u95EE\u9898\u6587\u672C"},options:{type:"array",items:{type:"object",properties:{label:{type:"string",description:"\u9009\u9879\u6807\u7B7E"},description:{type:"string",description:"\u9009\u9879\u8BF4\u660E"}},required:["label"]},description:"\u53EF\u9009\u9879\u5217\u8868\uFF082-4 \u4E2A\uFF09"},multiSelect:{type:"boolean",description:"\u662F\u5426\u5141\u8BB8\u591A\u9009"}},required:["question","options"]},description:"\u95EE\u9898\u5217\u8868\uFF081-4 \u4E2A\uFF09"}},required:["questions"]},async function(s,e){let t=s.questions||[];if(t.length===0)return "[ERROR] \u9700\u8981\u81F3\u5C11\u4E00\u4E2A\u95EE\u9898";let n=`ask_user_${++wL}_${Date.now()}`;return new Promise(r=>{js.set(n,{resolve:r,questions:t}),
|
|
1298
|
+
- \u7528\u6237\u53EF\u4EE5\u9009\u62E9\u9884\u8BBE\u9009\u9879\uFF0C\u4E5F\u53EF\u4EE5\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54`,parameters:{type:"object",properties:{questions:{type:"array",items:{type:"object",properties:{question:{type:"string",description:"\u95EE\u9898\u6587\u672C"},options:{type:"array",items:{type:"object",properties:{label:{type:"string",description:"\u9009\u9879\u6807\u7B7E"},description:{type:"string",description:"\u9009\u9879\u8BF4\u660E"}},required:["label"]},description:"\u53EF\u9009\u9879\u5217\u8868\uFF082-4 \u4E2A\uFF09"},multiSelect:{type:"boolean",description:"\u662F\u5426\u5141\u8BB8\u591A\u9009"}},required:["question","options"]},description:"\u95EE\u9898\u5217\u8868\uFF081-4 \u4E2A\uFF09"}},required:["questions"]},async function(s,e){let t=s.questions||[];if(t.length===0)return "[ERROR] \u9700\u8981\u81F3\u5C11\u4E00\u4E2A\u95EE\u9898";let n=`ask_user_${++wL}_${Date.now()}`;return new Promise(r=>{js.set(n,{resolve:r,questions:t}),is=n,oh&&oh(n,t),e?.signal&&e.signal.addEventListener("abort",()=>{js.has(n)&&(r("[\u7528\u6237\u4E2D\u65AD]"),js.delete(n),is===n&&(is=null));},{once:true}),setTimeout(()=>{js.has(n)&&(r("[\u8D85\u65F6] \u7528\u6237\u672A\u5728 5 \u5206\u949F\u5185\u56DE\u7B54"),js.delete(n),is===n&&(is=null));},300*1e3);})}};});function xL(s){let e={named:{},positional:[],raw:s};if(!s.trim())return e;let t=[],n="",r=false,o="";for(let i of s)(i==='"'||i==="'")&&!r?(r=true,o=i):i===o&&r?(r=false,o=""):i===" "&&!r?(n.trim()&&t.push(n.trim()),n=""):n+=i;n.trim()&&t.push(n.trim());for(let i=0;i<t.length;i++){let a=t[i];if(a.startsWith("--")){let l=a.indexOf("=");if(l>0){let c=a.slice(2,l),u=a.slice(l+1);e.named[c]=u;}else {let c=a.slice(2),u=t[i+1];u&&!u.startsWith("-")?(e.named[c]=u,i++):e.named[c]="true";}}else if(a.startsWith("-")&&a.length===2){let l=a.slice(1),c=t[i+1];c&&!c.startsWith("-")?(e.named[l]=c,i++):e.named[l]="true";}else e.positional.push(a);}return e}var Gs,lu=R(()=>{Gs=class{constructor(e){this.registry=e;}async execute(e,t,n){let r=this.registry.find(e);if(!r)return {success:false,error:`Skill not found: ${e}`};try{let o=xL(t);return {success:!0,output:this.buildPrompt(r,o,n)}}catch(o){return {success:false,error:o instanceof Error?o.message:String(o)}}}buildPrompt(e,t,n){let r=[];if(r.push(`# Skill: ${e.metadata.name}`),r.push(""),t.raw&&(r.push("## User Arguments"),r.push(`Raw: ${t.raw}`),Object.keys(t.named).length>0&&r.push(`Named: ${JSON.stringify(t.named)}`),t.positional.length>0&&r.push(`Positional: ${t.positional.join(", ")}`),r.push("")),r.push("## Context"),r.push(`Working Directory: ${n.workDir}`),r.push(""),r.push(e.content),e.supportFiles&&e.supportFiles.size>0){r.push(""),r.push("## Support Files");for(let[o,i]of Array.from(e.supportFiles.entries()))r.push(`### ${o}`),r.push("```"),r.push(i),r.push("```");}return r.join(`
|
|
1299
1299
|
`)}getAllowedTools(e){return e.metadata.neox?.allowedTools}getRequiredTools(e){return e.metadata.neox?.requiredTools}getDangerLevel(e){return e.metadata.neox?.dangerLevel??"safe"}};});function PL(s){Ft=s,Qe=s.logger;}function LT(s){Ws=s;}function RL(s,e){return e?s.filter(t=>!t.capabilities||t.capabilities.length===0?true:t.capabilities.every(n=>e[n]===true)):s}async function NT(s){await(s??Ft).shellEnv.preloadShellEnv();}function DL(){let s=process.env.NEOX_WORKER_ENTRY;if(s&&Ct__default.existsSync(s))return s;try{let n=fileURLToPath(import.meta.url),r=Ie__default.resolve(Ie__default.dirname(n),".."),o=Ie__default.join(r,"cli","main.js");if(Ct__default.existsSync(o))return o}catch{}let e=process.argv[1];if(e&&e.endsWith(".js")&&Ct__default.existsSync(e)&&e.includes("cli")&&e.includes("main"))return e;let t=Ie__default.resolve(process.cwd(),"dist","cli","main.js");return Ct__default.existsSync(t)?t:null}async function LL(s,e,t,n){if(process.env.NEOX_SHELL_WORKER_DISABLED==="1")return null;let r=DL();return r?new Promise(o=>{let i=fork(r,[],{env:{...process.env,[EL]:"execute_shell"},stdio:["ignore","ignore","ignore","ipc"]}),a=false,l=Number(process.env.NEOX_SHELL_WORKER_WATCHDOG_MS)||6e4,c=setTimeout(()=>{Qe.warn("SHELL_WORKER",`execute_shell running > ${l}ms`,{command:s});},l),u=()=>{clearTimeout(c),n&&n.removeEventListener("abort",m),i.removeAllListeners();},d=g=>{a||(a=true,u(),o(g));},m=()=>{i.connected&&i.send({type:"abort"}),setTimeout(()=>{if(!a){try{i.kill("SIGTERM");}catch{}d({success:true,output:`\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
1300
1300
|
\u25B8 \u5DE5\u4F5C\u76EE\u5F55: ${t}
|
|
1301
1301
|
\u25B8 \u6267\u884C\u547D\u4EE4: ${s}
|
|
@@ -1306,9 +1306,9 @@ A: ${r}`);}return t.join(`
|
|
|
1306
1306
|
... (truncated)`,truncated:true}}async function jt(s,e,t,n){let r=Date.now();return new Promise((o,i)=>{let a=spawn(s,e,{cwd:t,env:{...Ft.shellEnv.getShellEnv(),TERM:"dumb"},stdio:["ignore","pipe","pipe"],detached:false}),l="",c="",u=false;a.stdout?.on("data",g=>{l+=g.toString();}),a.stderr?.on("data",g=>{c+=g.toString();});let d=null;n?.timeoutMs&&(d=setTimeout(()=>{u=true,a.kill("SIGTERM"),setTimeout(()=>{a.killed||a.kill("SIGKILL");},1e3);},n.timeoutMs));let m=()=>{u=true,a.kill("SIGTERM"),setTimeout(()=>{a.killed||a.kill("SIGKILL");},1e3);};n?.signal&&(n.signal.aborted?m():n.signal.addEventListener("abort",m,{once:true})),a.on("close",g=>{d&&clearTimeout(d),n?.signal&&n.signal.removeEventListener("abort",m),o({stdout:l,stderr:c,exitCode:u?-1:g??0,durationMs:Date.now()-r});}),a.on("error",g=>{d&&clearTimeout(d),n?.signal&&n.signal.removeEventListener("abort",m),o({stdout:l,stderr:c,exitCode:-1,durationMs:Date.now()-r});});})}async function zs(s,e){try{let t=await jt("git",["rev-parse","--show-toplevel"],s,{signal:e,timeoutMs:8e3});return t.exitCode!==0||!t.stdout.trim()?{error:"Not a git repository"}:{repoRoot:t.stdout.trim()}}catch(t){return {error:t?.message||"Not a git repository"}}}function OL(s){let e=s.trim().split(/\s+/).filter(Boolean);return {command:e[0]||"",args:e.slice(1)}}function FL(s){let e=s.includes(`\r
|
|
1307
1307
|
`)?`\r
|
|
1308
1308
|
`:`
|
|
1309
|
-
`,t=s.endsWith(e),n=s.split(/\r?\n/);return t&&n[n.length-1]===""&&n.pop(),{lines:n,lineEnding:e,hasTrailingNewline:t}}function ET(s){let e=s.trim(),t="";for(let n of e)switch(n){case "\u2010":case "\u2011":case "\u2012":case "\u2013":case "\u2014":case "\u2015":case "\u2212":t+="-";break;case "\u2018":case "\u2019":case "\u201A":case "\u201B":t+="'";break;case "\u201C":case "\u201D":case "\u201E":case "\u201F":t+='"';break;case "\xA0":case "\u2002":case "\u2003":case "\u2004":case "\u2005":case "\u2006":case "\u2007":case "\u2008":case "\u2009":case "\u200A":case "\u202F":case "\u205F":case "\u3000":t+=" ";break;default:t+=n;break}return t}function lh(s,e,t){if(e.length===0)return t;if(e.length>s.length)return null;let n=s.length-e.length;for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i]!==e[i]){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i].trimEnd()!==e[i].trimEnd()){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i].trim()!==e[i].trim()){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(ET(s[r+i])!==ET(e[i])){o=false;break}if(o)return r}return null}function jL(s,e){let t=s.length,n=e.length;if(t*n>UL)return [...s.map(c=>({type:"delete",line:c})),...e.map(c=>({type:"insert",line:c}))];let o=Array.from({length:t+1},()=>new Array(n+1).fill(0));for(let c=t-1;c>=0;c-=1)for(let u=n-1;u>=0;u-=1)o[c][u]=s[c]===e[u]?o[c+1][u+1]+1:Math.max(o[c+1][u],o[c][u+1]);let i=[],a=0,l=0;for(;a<t&&l<n;){if(s[a]===e[l]){i.push({type:"equal",line:s[a]}),a+=1,l+=1;continue}o[a+1][l]>=o[a][l+1]?(i.push({type:"delete",line:s[a]}),a+=1):(i.push({type:"insert",line:e[l]}),l+=1);}for(;a<t;)i.push({type:"delete",line:s[a]}),a+=1;for(;l<n;)i.push({type:"insert",line:e[l]}),l+=1;return i}function GL(s,e){if(s.length===0&&e.length===0)return [];let t=jL(s,e),n=[],r=0,o=0,i=0;for(;i<t.length;){if(t[i].type==="equal"){r+=1,o+=1,i+=1;continue}let a=r,l=[],c=[];for(;i<t.length&&t[i].type!=="equal";){let u=t[i];u.type==="delete"?(l.push(u.line),r+=1):(c.push(u.line),o+=1),i+=1;}n.push({oldStart:a,oldLines:l,newLines:c});}return n}function ni(s){dh=s;}function ph(){return dh}async function sN(s){let e=Le__default.stat(Ie__default.join(s,"package.json")).then(()=>true).catch(()=>false),t=Le__default.stat(Ie__default.join(s,"pnpm-lock.yaml")).then(()=>true).catch(()=>false),n=Le__default.stat(Ie__default.join(s,"yarn.lock")).then(()=>true).catch(()=>false),r=Le__default.stat(Ie__default.join(s,"bun.lockb")).then(()=>true).catch(()=>false),o=Le__default.stat(Ie__default.join(s,"pyproject.toml")).then(()=>true).catch(()=>false),i=Le__default.stat(Ie__default.join(s,"pytest.ini")).then(()=>true).catch(()=>false),a=Le__default.stat(Ie__default.join(s,"go.mod")).then(()=>true).catch(()=>false),l=Le__default.stat(Ie__default.join(s,"Cargo.toml")).then(()=>true).catch(()=>false),c=Le__default.stat(Ie__default.join(s,"Makefile")).then(()=>true).catch(()=>false);return Promise.all([e,t,n,r,o,i,a,l,c]).then(([u,d,m,g,h,y,b,C,T])=>u?d?"pnpm":m?"yarn":g?"bun":"npm":h||y?"pytest":b?"go":C?"cargo":T?"make":null)}function oN(s,e,t){switch(s){case "npm":case "pnpm":case "yarn":case "bun":return {command:s,args:["run",e==="test"?"test":e==="lint"?"lint":"format",...t]};case "pytest":return {command:"pytest",args:t};case "go":return e==="test"?{command:"go",args:["test","./...",...t]}:e==="lint"?{command:"golangci-lint",args:["run",...t]}:{command:"gofmt",args:["-w",...t]};case "cargo":return e==="test"?{command:"cargo",args:["test",...t]}:e==="lint"?{command:"cargo",args:["clippy","--",...t]}:{command:"cargo",args:["fmt",...t]};case "make":return {command:"make",args:[e,...t]};default:return {command:"npm",args:["run",e,...t]}}}async function mh(s,e,t){let n=Ut(t.cwd||".");if(!Rr(n))return JSON.stringify(
|
|
1310
|
-
`),g=cu(m,kT),h=d.exitCode===0?`${s} succeeded (${d.durationMs}ms)`:`${s} failed with exit code ${d.exitCode}`;return JSON.stringify(
|
|
1311
|
-
`),d=cu(u,kT),m=c.exitCode===0?`${s} succeeded (${c.durationMs}ms)`:`${s} failed with exit code ${c.exitCode}`;return JSON.stringify(
|
|
1309
|
+
`,t=s.endsWith(e),n=s.split(/\r?\n/);return t&&n[n.length-1]===""&&n.pop(),{lines:n,lineEnding:e,hasTrailingNewline:t}}function ET(s){let e=s.trim(),t="";for(let n of e)switch(n){case "\u2010":case "\u2011":case "\u2012":case "\u2013":case "\u2014":case "\u2015":case "\u2212":t+="-";break;case "\u2018":case "\u2019":case "\u201A":case "\u201B":t+="'";break;case "\u201C":case "\u201D":case "\u201E":case "\u201F":t+='"';break;case "\xA0":case "\u2002":case "\u2003":case "\u2004":case "\u2005":case "\u2006":case "\u2007":case "\u2008":case "\u2009":case "\u200A":case "\u202F":case "\u205F":case "\u3000":t+=" ";break;default:t+=n;break}return t}function lh(s,e,t){if(e.length===0)return t;if(e.length>s.length)return null;let n=s.length-e.length;for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i]!==e[i]){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i].trimEnd()!==e[i].trimEnd()){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(s[r+i].trim()!==e[i].trim()){o=false;break}if(o)return r}for(let r=t;r<=n;r+=1){let o=true;for(let i=0;i<e.length;i+=1)if(ET(s[r+i])!==ET(e[i])){o=false;break}if(o)return r}return null}function jL(s,e){let t=s.length,n=e.length;if(t*n>UL)return [...s.map(c=>({type:"delete",line:c})),...e.map(c=>({type:"insert",line:c}))];let o=Array.from({length:t+1},()=>new Array(n+1).fill(0));for(let c=t-1;c>=0;c-=1)for(let u=n-1;u>=0;u-=1)o[c][u]=s[c]===e[u]?o[c+1][u+1]+1:Math.max(o[c+1][u],o[c][u+1]);let i=[],a=0,l=0;for(;a<t&&l<n;){if(s[a]===e[l]){i.push({type:"equal",line:s[a]}),a+=1,l+=1;continue}o[a+1][l]>=o[a][l+1]?(i.push({type:"delete",line:s[a]}),a+=1):(i.push({type:"insert",line:e[l]}),l+=1);}for(;a<t;)i.push({type:"delete",line:s[a]}),a+=1;for(;l<n;)i.push({type:"insert",line:e[l]}),l+=1;return i}function GL(s,e){if(s.length===0&&e.length===0)return [];let t=jL(s,e),n=[],r=0,o=0,i=0;for(;i<t.length;){if(t[i].type==="equal"){r+=1,o+=1,i+=1;continue}let a=r,l=[],c=[];for(;i<t.length&&t[i].type!=="equal";){let u=t[i];u.type==="delete"?(l.push(u.line),r+=1):(c.push(u.line),o+=1),i+=1;}n.push({oldStart:a,oldLines:l,newLines:c});}return n}function ni(s){dh=s;}function ph(){return dh}async function sN(s){let e=Le__default.stat(Ie__default.join(s,"package.json")).then(()=>true).catch(()=>false),t=Le__default.stat(Ie__default.join(s,"pnpm-lock.yaml")).then(()=>true).catch(()=>false),n=Le__default.stat(Ie__default.join(s,"yarn.lock")).then(()=>true).catch(()=>false),r=Le__default.stat(Ie__default.join(s,"bun.lockb")).then(()=>true).catch(()=>false),o=Le__default.stat(Ie__default.join(s,"pyproject.toml")).then(()=>true).catch(()=>false),i=Le__default.stat(Ie__default.join(s,"pytest.ini")).then(()=>true).catch(()=>false),a=Le__default.stat(Ie__default.join(s,"go.mod")).then(()=>true).catch(()=>false),l=Le__default.stat(Ie__default.join(s,"Cargo.toml")).then(()=>true).catch(()=>false),c=Le__default.stat(Ie__default.join(s,"Makefile")).then(()=>true).catch(()=>false);return Promise.all([e,t,n,r,o,i,a,l,c]).then(([u,d,m,g,h,y,b,C,T])=>u?d?"pnpm":m?"yarn":g?"bun":"npm":h||y?"pytest":b?"go":C?"cargo":T?"make":null)}function oN(s,e,t){switch(s){case "npm":case "pnpm":case "yarn":case "bun":return {command:s,args:["run",e==="test"?"test":e==="lint"?"lint":"format",...t]};case "pytest":return {command:"pytest",args:t};case "go":return e==="test"?{command:"go",args:["test","./...",...t]}:e==="lint"?{command:"golangci-lint",args:["run",...t]}:{command:"gofmt",args:["-w",...t]};case "cargo":return e==="test"?{command:"cargo",args:["test",...t]}:e==="lint"?{command:"cargo",args:["clippy","--",...t]}:{command:"cargo",args:["fmt",...t]};case "make":return {command:"make",args:[e,...t]};default:return {command:"npm",args:["run",e,...t]}}}async function mh(s,e,t){let n=Ut(t.cwd||".");if(!Rr(n))return JSON.stringify(rs(s,"error","Command rejected: path outside workspace",{error:"cwd is outside workspace"}));if(t.extra_args!==void 0&&!Array.isArray(t.extra_args))return JSON.stringify(rs(s,"error","Invalid extra_args: expected an array of strings",{error:"extra_args must be an array"}));let r=Array.isArray(t.extra_args)?t.extra_args.map(l=>String(l)):[],o=t.preset||await sN(n),i=t.command,a=[];if(i){let l=OL(i);if(!l.command)return JSON.stringify(rs(s,"error","Invalid command",{error:"Command is empty"}));let c=new Set(["npm","pnpm","yarn","bun","pytest","go","cargo","make"]);if(!c.has(l.command))return JSON.stringify(rs(s,"error","Command not allowed",{error:`Allowed commands: ${Array.from(c).join(", ")}`}));let u=l.args.concat(r),d=await jt(l.command,u,n,{timeoutMs:t.timeout_ms||3e5}),m=[d.stdout,d.stderr].filter(Boolean).join(`
|
|
1310
|
+
`),g=cu(m,kT),h=d.exitCode===0?`${s} succeeded (${d.durationMs}ms)`:`${s} failed with exit code ${d.exitCode}`;return JSON.stringify(rs(s,d.exitCode===0?"success":"error",h,{error:d.exitCode===0?void 0:cu(m,_T).text,metadata:{command:[l.command,...u].join(" "),exit_code:d.exitCode,duration_ms:d.durationMs,output_truncated:g.truncated}}))}if(o){let l=oN(o,e,r);a=l.args;let c=await jt(l.command,a,n,{timeoutMs:t.timeout_ms||3e5}),u=[c.stdout,c.stderr].filter(Boolean).join(`
|
|
1311
|
+
`),d=cu(u,kT),m=c.exitCode===0?`${s} succeeded (${c.durationMs}ms)`:`${s} failed with exit code ${c.exitCode}`;return JSON.stringify(rs(s,c.exitCode===0?"success":"error",m,{error:c.exitCode===0?void 0:cu(u,_T).text,metadata:{command:[l.command,...a].join(" "),exit_code:c.exitCode,duration_ms:c.durationMs,output_truncated:d.truncated}}))}return JSON.stringify(rs(s,"error","Unable to detect project type for command",{error:"No preset detected. Provide preset."}))}async function AT(s,e){try{if(s!=="rg"){if(!s||!Ct__default.existsSync(s))return !1;Ct__default.accessSync(s,Ct__default.constants.X_OK);}return (await jt(s,["--version"],e,{timeoutMs:2e3})).exitCode===0}catch{return false}}function uN(s,e){if(s===-1)return true;let t=(e||"").toLowerCase();return t.includes("ebadf")||t.includes("enoent")||t.includes("eacces")||t.includes("spawn")||t.includes("not found")||t.includes("permission denied")}async function uh(){if(as!==null)return as;let s=dn();try{let{rgPath:t}=await import('@vscode/ripgrep');if(await AT(t,s))return as=t,Qe.info("SEARCH",`Using bundled ripgrep: ${t}`),as;Qe.warn("SEARCH",`Bundled ripgrep path is invalid or not executable: ${t}`);}catch(t){Qe.warn("SEARCH",`Bundled ripgrep not available: ${t.message}`);}return await AT("rg",s)?(as="rg",Qe.info("SEARCH","Using system ripgrep"),as):(as=null,null)}async function dN(){return Pa!==null||(Pa=await uh()!==null,Pa?Qe.info("SEARCH","ripgrep available"):Qe.warn("SEARCH","ripgrep not available, using fallback")),Pa}function pN(s){let e=s.case_insensitive??true,t=[],n=(r,o,i)=>{if(!r.pattern||!r.pattern.trim())return;let a=(r.op||o).toLowerCase(),l=r.regex??i,c=r.case_insensitive??e;t.push({id:`q${t.length+1}`,pattern:r.pattern,op:a==="and"||a==="or"||a==="not"?a:o,regex:l,caseInsensitive:c});};if((s.pattern||s.query)&&n({pattern:s.pattern||s.query||"",op:s.op},"or",true),Array.isArray(s.keywords))for(let r of s.keywords)n({pattern:r},"or",false);if(Array.isArray(s.queries))for(let r of s.queries)n(r,"or",r.regex??true);return t}async function zn(s,e){e&&PL(e);let t=e?.capabilities??Ft.capabilities,n=He(),r=[...$T];if(s&&r.push(rT(s)),n.webSearch?.enabled&&r.push(zg),n.javaDebug?.enabled)try{let c=await Xg(n.javaDebug?.jarPath);r.push(...c),Qe.info("TOOLS",`Java Debug \u5DE5\u5177\u5DF2\u542F\u7528 (${c.length} \u4E2A\u5DE5\u5177)`);}catch(c){Qe.error("TOOLS",`Java Debug \u5DE5\u5177\u52A0\u8F7D\u5931\u8D25: ${c.message}`),Qe.error("TOOLS","\u63D0\u793A: \u8FD0\u884C npm run setup-java-debug \u81EA\u52A8\u4E0B\u8F7D JAR \u6587\u4EF6");}if(n.smartRead?.enabled!==false)try{let c=ng(s);r.push(...c),Qe.info("TOOLS",`readfile \u5DE5\u5177\u5DF2\u542F\u7528 (${c.length} \u4E2A\u5DE5\u5177)`);}catch(c){Qe.error("TOOLS",`readfile \u5DE5\u5177\u52A0\u8F7D\u5931\u8D25: ${c.message}`);}let o=typeof process<"u"&&process.type==="renderer";t?.terminal&&o&&r.push(...Vc()),t?.editor&&o&&r.push(...Yc());let i=RL(r,t),a=n.enabledTools||{},l=i.filter(c=>a[c.name]!==false);return QC(l)}var RT,xT,DT,EL,AL,Ft,Qe,Ws,ah,ML,NL,kT,_T,IT,BL,UL,WL,zL,HL,qL,KL,JL,VL,dh,YL,XL,QL,ZL,eN,tN,nN,rN,iN,aN,lN,cN,ch,Pa,as,mN,gN,hN,$T,uu=R(()=>{un();jw();Kw();nT();wt();sT();Og();Ng();uT();Pc();iu();Nc();bT();ih();Jo();lu();og();RT=process.platform==="win32",xT=RT?"powershell.exe":true,DT="NEOX_WORKDIR",EL="NEOX_WORKER",AL=ti(),Ft=AL,Qe=Ft.logger;Ws=null;ah=new Map,ML=300*1e3;NL=null;kT=12e3,_T=4e3,IT=1e6;BL={name:"write_file",description:"Write content to a file (create or overwrite)",parameters:{type:"object",properties:{file_path:{type:"string",description:"Path to the file to write"},content:{type:"string",description:"Content to write to the file"},mode:{type:"string",description:"Write mode: overwrite or append",enum:["overwrite","append"]}},required:["file_path","content"]},async function({file_path:s,content:e,mode:t="overwrite"}){if(!s)return JSON.stringify(Te("write_file","error","Missing required parameter: file_path",{error:"file_path is required",verify_hint:"Please provide the file_path parameter."}));if(e==null)return JSON.stringify(Te("write_file","error","Missing required parameter: content",{error:"content is required",verify_hint:"Please provide the content parameter with the text to write."}));let n=typeof e=="string"?e:String(e);if(n.trim()==="")return JSON.stringify(Te("write_file","error","Content is empty - this is likely an error",{error:"Empty content provided",verify_hint:"Please provide non-empty content to write."}));let r=Ut(s),o=createHash("sha256").update(n).digest("hex").substring(0,16),i=ah.get(r),a=Date.now();if(i&&i.checksum===o&&i.success&&a-i.timestamp<ML){let l=n.split(`
|
|
1312
1312
|
`).length;return JSON.stringify(Te("write_file","already_done",`File already written with identical content (${l} lines, ${n.length} bytes)`,{file_path:r,checksum:o,verify_hint:`Use "readfile ${s}" to verify the content if needed.`,metadata:{lines:l,bytes:n.length}}))}try{let l=!1;try{await Le__default.access(r),l=!0;}catch{}await Le__default.mkdir(Ie__default.dirname(r),{recursive:!0}),t==="append"?await Le__default.appendFile(r,n,"utf-8"):await Le__default.writeFile(r,n,"utf-8"),ah.set(r,{checksum:o,timestamp:a,success:!0});let c=n.split(`
|
|
1313
1313
|
`).length,u=l?"updated":"created";return JSON.stringify(Te("write_file","success",`File ${u}: ${Ie__default.basename(r)} (${c} lines, ${n.length} bytes)`,{file_path:r,checksum:o,verify_hint:`Use "readfile ${s}" to verify the content.`,metadata:{action:u,lines:c,bytes:n.length}}))}catch(l){return ah.set(r,{checksum:o,timestamp:a,success:false}),JSON.stringify(Te("write_file","error",`Failed to write file: ${l.message}`,{file_path:r,error:l.message,verify_hint:"Check file permissions and path validity."}))}}};UL=2e5;WL={name:"edit_file",description:`Edit file by replacing a target block with a new block.
|
|
1314
1314
|
Edits apply line-level hunks (only changed lines are replaced).
|
|
@@ -1496,7 +1496,7 @@ ${u.stderr}
|
|
|
1496
1496
|
\u5BFC\u5165 (${l.length} \u4E2A):`),l.slice(0,5).forEach(m=>d.push(` - ${m.trim()}`)),l.length>5&&d.push(` ... \u8FD8\u6709 ${l.length-5} \u4E2A\u5BFC\u5165`)),u.length>0&&(d.push(`
|
|
1497
1497
|
\u7C7B\u5B9A\u4E49 (${u.length} \u4E2A):`),u.forEach(m=>d.push(` - ${m.trim()}`))),c.length>0&&(d.push(`
|
|
1498
1498
|
\u51FD\u6570\u5B9A\u4E49 (${c.length} \u4E2A):`),c.slice(0,10).forEach(m=>d.push(` - ${m.trim()}`)),c.length>10&&d.push(` ... \u8FD8\u6709 ${c.length-10} \u4E2A\u51FD\u6570`)),d.join(`
|
|
1499
|
-
`)}catch(e){return `\u2717 \u5206\u6790\u5931\u8D25: ${e.message}`}}},ch=["!**/node_modules/**","!**/.git/**","!**/dist/**","!**/build/**","!**/out/**","!**/.next/**","!**/coverage/**","!**/__pycache__/**","!**/target/**","!**/vendor/**"],Pa=null,
|
|
1499
|
+
`)}catch(e){return `\u2717 \u5206\u6790\u5931\u8D25: ${e.message}`}}},ch=["!**/node_modules/**","!**/.git/**","!**/dist/**","!**/build/**","!**/out/**","!**/.next/**","!**/coverage/**","!**/__pycache__/**","!**/target/**","!**/vendor/**"],Pa=null,as=null;mN={name:"search",description:`\u3010\u5168\u5C40\u641C\u7D22\u3011\u652F\u6301\u591A\u5173\u952E\u8BCD\u3001\u591A\u67E5\u8BE2\u3001\u8DE8\u76EE\u5F55\u81EA\u52A8\u5B9A\u4F4D\u3002
|
|
1500
1500
|
|
|
1501
1501
|
\u{1F525} \u6781\u7B80\u7528\u6CD5\uFF1A
|
|
1502
1502
|
search(pattern="\u767B\u5F55") \u2192 \u5168\u5C40\u5185\u5BB9\u641C\u7D22
|
|
@@ -1515,11 +1515,11 @@ search(mode="files", pattern="*.ts") \u2192 \u6587\u4EF6\u540D\u641C\u7D22
|
|
|
1515
1515
|
- \u63D0\u4F9B readfile \u6279\u91CF\u8BFB\u53D6\u63D0\u793A`,parameters:{type:"object",properties:{pattern:{type:"string",description:'\u641C\u7D22\u6A21\u5F0F (\u9ED8\u8BA4\u6B63\u5219)\u3002\u793A\u4F8B: "error", "\u767B\u5F55", "function\\s+\\w+"'},query:{type:"string",description:"pattern \u7684\u522B\u540D"},keywords:{type:"array",items:{type:"string"},description:"\u591A\u5173\u952E\u8BCD OR \u641C\u7D22 (\u5B57\u9762\u91CF\u5339\u914D)"},queries:{type:"array",items:{type:"object",properties:{pattern:{type:"string"},op:{type:"string",enum:["and","or","not"]},regex:{type:"boolean"},case_insensitive:{type:"boolean"}},required:["pattern"]},description:"\u9AD8\u7EA7\u591A\u67E5\u8BE2 (\u652F\u6301 and/or/not)"},op:{type:"string",enum:["and","or","not"],description:"pattern \u7684\u903B\u8F91\u64CD\u4F5C (\u9ED8\u8BA4 or)"},mode:{type:"string",enum:["content","files"],description:"\u641C\u7D22\u6A21\u5F0F: \u5185\u5BB9\u641C\u7D22\u6216\u6587\u4EF6\u540D\u641C\u7D22 (\u9ED8\u8BA4: content)"},path:{type:"string",description:"\u641C\u7D22\u8DEF\u5F84 (\u53EF\u9009\uFF0C\u9ED8\u8BA4: \u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55)"},recursive:{type:"boolean",description:"\u9012\u5F52\u5B50\u76EE\u5F55 (\u53EF\u9009\uFF0C\u76EE\u5F55\u9ED8\u8BA4 true\uFF0C\u6587\u4EF6\u9ED8\u8BA4 false)"},file_pattern:{type:"string",description:'\u6587\u4EF6\u7C7B\u578B\u8FC7\u6EE4 (e.g., "*.ts", "*.{js,jsx,ts,tsx}")'},include_hidden:{type:"boolean",description:"\u5305\u542B\u9690\u85CF\u6587\u4EF6 (\u9ED8\u8BA4: false)"},case_insensitive:{type:"boolean",description:"\u5FFD\u7565\u5927\u5C0F\u5199 (\u9ED8\u8BA4: true)"},context_lines:{type:"number",description:"\u4E0A\u4E0B\u6587\u884C\u6570 (\u9ED8\u8BA4: 2)"},max_matches:{type:"number",description:"\u6700\u5927\u5339\u914D\u6570 (\u9ED8\u8BA4: 200)"},count_only:{type:"boolean",description:"\u4EC5\u8FD4\u56DE\u8BA1\u6570 (\u5FEB\u901F\u4E86\u89E3\u5339\u914D\u5206\u5E03)"}}},async function({pattern:s,query:e,keywords:t,queries:n,op:r,mode:o="content",path:i,recursive:a,file_pattern:l,include_hidden:c=false,case_insensitive:u=true,context_lines:d=2,max_matches:m=200,count_only:g=false},h){try{let y=Date.now();Qe.debug("SEARCH",`>>> searchTool.execute START, pattern=${s||e||t?.join(",")}`);let b=h?.signal,C=()=>{if(b?.aborted){let K=new Error("Operation cancelled");throw K.name="AbortError",K}},T=200,S=async()=>{await new Promise(K=>setImmediate(K));},v=Ut(i||"."),I="workspace",D=dn();if(i&&Ie__default.isAbsolute(i))I="absolute";else if(i&&!Ct__default.existsSync(v)){let K=D,re=null;for(;;){let se=Ie__default.resolve(K,i);if(Ct__default.existsSync(se)){re=se;break}let ve=Ie__default.dirname(K);if(ve===K)break;K=ve;}re&&(v=re,I="ancestor");}let O=_t(v);C();let k;try{k=await Le__default.stat(v);}catch(K){return JSON.stringify(Xe("search","error",`search failed: ${K.message}`,void 0,{error:K.message}))}let M=k.isDirectory(),N=a!==void 0?a:M,x=pN({pattern:s,query:e,keywords:t,queries:n,op:r,case_insensitive:u});if(C(),x.length===0)return JSON.stringify(Xe("search","error","search failed: no query provided",void 0,{error:"Provide pattern/keywords/queries"}));let B=x.filter(K=>K.op!=="not"),H=x.filter(K=>K.op==="and"),W=x.filter(K=>K.op==="or"),U=x.filter(K=>K.op==="not");if(B.length===0)return JSON.stringify(Xe("search","error","search failed: only NOT queries provided",void 0,{error:"At least one non-NOT query is required"}));let z=x.filter(K=>K.regex).map(K=>{try{return new RegExp(K.pattern),null}catch(re){return `${K.pattern}: ${re.message}`}}).filter(K=>!!K);if(z.length>0)return JSON.stringify(Xe("search","error",`search failed: invalid regex (${z[0]})`,void 0,{error:`Invalid regex: ${z.join("; ")}`}));let q=[];W.length>0&&q.push(W.map(K=>K.pattern).join(" OR ")),H.length>0&&q.push(`AND ${H.map(K=>K.pattern).join(" + ")}`),U.length>0&&q.push(`NOT ${U.map(K=>K.pattern).join(" + ")}`);let P=q.join(" ");Qe.debug("SEARCH",`>>> Before isRipgrepAvailable, elapsed=${Date.now()-y}ms`);let $=await dN();Qe.debug("SEARCH",`<<< After isRipgrepAvailable, elapsed=${Date.now()-y}ms`);let F=Math.min(200,Math.max(80,d*4+40));if(Qe.info("SEARCH",`Strategy: ${$?"ripgrep":"fallback"}`),!$)return JSON.stringify(Xe("search","error","search failed: ripgrep not available",`Ripgrep is required for search. This is unexpected since ripgrep should be bundled.
|
|
1516
1516
|
Please report this issue.`,{error:"ripgrep not available"}));if(C(),o==="files"){let K=await(async()=>{if(!M)return [_t(v)];if($){let le=await uh();if(!le)throw new Error("ripgrep not available (this should not happen)");let we=["--files"];c&&we.push("--hidden"),!N&&M&&we.push("--max-depth","1"),l&&we.push("-g",l),ch.forEach(Ne=>we.push("-g",Ne)),we.push("--",v);let We=await jt(le,we,dn(),{signal:b});if(We.exitCode!==0&&We.exitCode!==1)throw new Error(We.stderr||"rg files search failed");return We.stdout.split(`
|
|
1517
1517
|
`).filter(Boolean).map(Ne=>{let ot=Ie__default.isAbsolute(Ne)?Ie__default.resolve(Ne):Ie__default.resolve(dn(),Ne);return _t(ot)})}let L=l||"**/*",ee=N?L:L.replace("**/","");return (await MT(ee,{cwd:v,absolute:!0,dot:c,onlyFiles:!0,ignore:ch.map(le=>le.replace("!",""))})).map(le=>_t(le))})();C();let re=x.map(L=>{let ee=L.regex?L.pattern:ST(L.pattern),me=L.caseInsensitive?"i":"";return {query:L,regex:new RegExp(ee,me)}}),se=[],ve=0;for(let L of K){C();let ee=L,me=re.map(ye=>({op:ye.query.op,hit:ye.regex.test(ee)})),le=me.some(ye=>ye.op==="or"&&ye.hit),we=me.filter(ye=>ye.op==="and").every(ye=>ye.hit);!me.some(ye=>ye.op==="not"&&ye.hit)&&(H.length===0||we)&&(W.length===0||le)&&se.push(L),ve++,ve%T===0&&await S();}let Be=[`\u2713 \u6587\u4EF6\u641C\u7D22: ${P}`,`\u25B8 \u8DEF\u5F84: ${O}${N?" (\u9012\u5F52)":""}${I==="ancestor"?" (auto-resolved)":""}`,l?`\u25B8 \u6587\u4EF6\u8FC7\u6EE4: ${l}`:"",c?"\u25B8 \u5305\u542B\u9690\u85CF\u6587\u4EF6":"","",`\u627E\u5230 ${se.length} \u4E2A\u6587\u4EF6`,""].filter(L=>L!==""),ce=50;return se.slice(0,ce).forEach(L=>Be.push(` ${L}`)),se.length>ce&&Be.push(` ... \u8FD8\u6709 ${se.length-ce} \u4E2A\u6587\u4EF6`),JSON.stringify(Xe("search","success",se.length>0?`search files "${P}" (${se.length} files)`:`search files "${P}" (no matches)`,Be.join(`
|
|
1518
|
-
`),{metadata:{mode:"files",strategy:$?"rg":"glob",regex:x.some(L=>L.regex),case_insensitive:u,path:O,resolved_from:I,files:se,queries:x}}))}let V=new Map,Z=new Map,ae=0,be=U.map(K=>{let re=K.regex?K.pattern:ST(K.pattern),se=K.caseInsensitive?"i":"";return new RegExp(re,se)}),Pe=[];if($){let K=await uh();if(!K)throw new Error("ripgrep not available (this should not happen)");for(let re of B){C();let se=["--json","--with-filename","--line-number","--column","-a"];se.push("-C",String(d)),re.caseInsensitive&&se.push("-i"),re.regex||se.push("-F"),c&&se.push("--hidden"),!N&&M&&se.push("--max-depth","1"),l&&se.push("-g",l),ch.forEach(le=>se.push("-g",le)),se.push("--",re.pattern,v);let ve=K,Be="",ce=0,L="",ee=async le=>{let we=`${le} ${se.join(" ")}`;return Pe.push(we),jt(le,se,dn(),{signal:b})};try{let le=await ee(ve);Be=le.stdout,L=le.stderr||"",ce=le.exitCode;}catch(le){if(le?.name==="AbortError"||b?.aborted)throw le;L=le?.message||le?.stderr||String(le),ce=le?.exitCode||2;}if(ce!==0&&ce!==1&&ve!=="rg"&&uN(ce,L)){Qe.warn("SEARCH","Bundled ripgrep failed, retrying with system rg",{exitCode:ce,error:L,bundledPath:ve});try{let le=await ee("rg");Be=le.stdout,L=le.stderr||"",ce=le.exitCode,ve="rg",(ce===0||ce===1)&&(
|
|
1518
|
+
`),{metadata:{mode:"files",strategy:$?"rg":"glob",regex:x.some(L=>L.regex),case_insensitive:u,path:O,resolved_from:I,files:se,queries:x}}))}let V=new Map,Z=new Map,ae=0,be=U.map(K=>{let re=K.regex?K.pattern:ST(K.pattern),se=K.caseInsensitive?"i":"";return new RegExp(re,se)}),Pe=[];if($){let K=await uh();if(!K)throw new Error("ripgrep not available (this should not happen)");for(let re of B){C();let se=["--json","--with-filename","--line-number","--column","-a"];se.push("-C",String(d)),re.caseInsensitive&&se.push("-i"),re.regex||se.push("-F"),c&&se.push("--hidden"),!N&&M&&se.push("--max-depth","1"),l&&se.push("-g",l),ch.forEach(le=>se.push("-g",le)),se.push("--",re.pattern,v);let ve=K,Be="",ce=0,L="",ee=async le=>{let we=`${le} ${se.join(" ")}`;return Pe.push(we),jt(le,se,dn(),{signal:b})};try{let le=await ee(ve);Be=le.stdout,L=le.stderr||"",ce=le.exitCode;}catch(le){if(le?.name==="AbortError"||b?.aborted)throw le;L=le?.message||le?.stderr||String(le),ce=le?.exitCode||2;}if(ce!==0&&ce!==1&&ve!=="rg"&&uN(ce,L)){Qe.warn("SEARCH","Bundled ripgrep failed, retrying with system rg",{exitCode:ce,error:L,bundledPath:ve});try{let le=await ee("rg");Be=le.stdout,L=le.stderr||"",ce=le.exitCode,ve="rg",(ce===0||ce===1)&&(as="rg");}catch(le){if(le?.name==="AbortError"||b?.aborted)throw le;let we=le?.message||le?.stderr||String(le);L=`${L}
|
|
1519
1519
|
Fallback rg failed: ${we}`.trim(),ce=le?.exitCode||2;}}if(ce!==0&&ce!==1){let le=L?`
|
|
1520
1520
|
Error: ${L}`:"",we=`
|
|
1521
1521
|
Command: ${ve} ${se.join(" ")}`;throw new Error(`ripgrep failed (exit code ${ce})${le}${we}`)}let me=0;for(let le of Be.split(`
|
|
1522
|
-
`)){if(C(),me++,me%T===0&&await S(),!le.trim())continue;let we;try{we=JSON.parse(le);}catch{continue}if(we.type==="summary"){let Ur=we.data?.stats;Ur&&typeof Ur.searches=="number"&&(ae=Math.max(ae,Ur.searches));continue}let We=we.type==="match",ye=we.type==="context";if(!We&&!ye)continue;let Ne=we.data,ot=Ne?.path?.text,Ht=Ne?.line_number,Fr=Ne?.lines?.text,br=Array.isArray(Ne?.submatches)?Ne.submatches[0]:void 0;if(!ot||!Ht||typeof Fr!="string")continue;let Sl=Fr.replace(/\n$/,""),Ai=V.get(ot)||new Map,
|
|
1522
|
+
`)){if(C(),me++,me%T===0&&await S(),!le.trim())continue;let we;try{we=JSON.parse(le);}catch{continue}if(we.type==="summary"){let Ur=we.data?.stats;Ur&&typeof Ur.searches=="number"&&(ae=Math.max(ae,Ur.searches));continue}let We=we.type==="match",ye=we.type==="context";if(!We&&!ye)continue;let Ne=we.data,ot=Ne?.path?.text,Ht=Ne?.line_number,Fr=Ne?.lines?.text,br=Array.isArray(Ne?.submatches)?Ne.submatches[0]:void 0;if(!ot||!Ht||typeof Fr!="string")continue;let Sl=Fr.replace(/\n$/,""),Ai=V.get(ot)||new Map,Cs=Ai.get(Ht)||{line:Sl,queryIds:new Set};if(Cs.line=Sl,We){Cs.queryIds.add(re.id),Cs.column===void 0&&br?.start!==void 0&&(Cs.column=br.start+1);let Ur=Z.get(ot)||new Set;Ur.add(re.id),Z.set(ot,Ur);}Ai.set(Ht,Cs),V.set(ot,Ai);}}}let oe=new Set(H.map(K=>K.id)),X=[],ne=0,Y=0,Ae=0,ge=[],_e=[],fe=0;for(let[K,re]of V.entries()){if(C(),ne>=m&&!g)break;fe++,fe%T===0&&await S();let se=Z.get(K)||new Set,ve=!0;if(oe.forEach(le=>{se.has(le)||(ve=!1);}),!ve)continue;let ce=Array.from(re.keys()).sort((le,we)=>le-we).filter(le=>{let we=re.get(le);return we?!be.some(We=>We.test(we.line)):!1});if(ce.length===0)continue;Y++,ne+=ce.length;let L=_t(K);if(ge.push({file:L,anchor_lines:ce.slice(0,20),num_lines:F}),g){X.push({file:K,matches:[],matchCount:ce.length});continue}C();let ee=[];Array.from(re.keys()).sort((le,we)=>le-we).forEach(le=>{let we=re.get(le);if(!we)return;let We=ce.includes(le);if(ee.push({lineNum:le,line:we.line,isMatch:We}),We&&_e.length<m){for(let ye of we.queryIds)if(_e.push({file:L,line:le,column:we.column,preview:we.line,queryId:ye}),_e.length>=m)break}}),X.push({file:K,matches:ee,matchCount:ce.length});}X.sort((K,re)=>_t(K.file).localeCompare(_t(re.file)));let Se=K=>{let se=_t(K).split(Ie__default.sep),ve=se.findIndex(Be=>["src","lib","app","core","packages"].includes(Be));return ve>=0&&ve+1<se.length?se[ve+1]:se[0]||"root"},pe=[`\u2713 \u641C\u7D22: ${P}`,`\u25B8 \u8DEF\u5F84: ${O}${N?" (\u9012\u5F52)":""}${I==="ancestor"?" (auto-resolved)":""}`,l?`\u25B8 \u6587\u4EF6\u8FC7\u6EE4: ${l}`:"",u?"\u25B8 \u6A21\u5F0F: \u5FFD\u7565\u5927\u5C0F\u5199":"",$?"\u25B8 \u7B56\u7565: ripgrep":"\u25B8 \u7B56\u7565: fallback","","\u2501\u2501\u2501\u2501 \u7ED3\u679C\u6458\u8981 \u2501\u2501\u2501\u2501",ae>0?`\u6587\u4EF6: ${ae} \u5DF2\u641C\u7D22, ${Y} \u6709\u5339\u914D`:`\u6587\u4EF6: ${Y} \u6709\u5339\u914D`,`\u5339\u914D: ${ne}${ne>=m?" (\u5DF2\u8FBE\u4E0A\u9650)":""}`].filter(K=>K!==""),J=new Map,he=0;for(let K of X){he++,he%T===0&&await S();let re=Se(K.file);J.set(re,(J.get(re)||0)+K.matchCount);}if(J.size>1){pe.push(""),pe.push("\u{1F4E6} \u6A21\u5757\u5206\u5E03:");let K=Array.from(J.entries()).sort((re,se)=>se[1]-re[1]);for(let[re,se]of K.slice(0,5))pe.push(` ${re}: ${se}`);K.length>5&&pe.push(` ... \u8FD8\u6709 ${K.length-5} \u4E2A\u6A21\u5757`);}if(pe.push(""),g){pe.push("\u{1F4CB} \u6587\u4EF6\u5217\u8868:");let K=0;for(let re of X){K++,K%T===0&&await S();let se=_t(re.file),ve=Se(re.file);pe.push(` [${ve}] ${se}: ${re.matchCount}`);}}else {let K=0,re=100;for(let se of X){if(C(),Ae>=m){pe.push(`
|
|
1523
1523
|
... \u8FD8\u6709\u66F4\u591A\u5339\u914D (\u5DF2\u8FBE ${m} \u4E0A\u9650)`);break}let ve=_t(se.file),Be=Se(se.file);pe.push(`
|
|
1524
1524
|
\u25B8 [${Be}] ${ve} (${se.matchCount} \u5904)`),pe.push("\u2500".repeat(50));let ce=-10;for(let L of se.matches){if(Ae>=m)break;K++,K%re===0&&await S(),L.lineNum>ce+1&&ce>0&&pe.push(" \u2504\u2504\u2504");let ee=L.isMatch?"\u25B6":" ";pe.push(`${ee}${String(L.lineNum).padStart(5)} \u2502 ${L.line}`),ce=L.lineNum,L.isMatch&&Ae++;}}}return X.length===0?(pe.push("\u672A\u627E\u5230\u5339\u914D\u5185\u5BB9"),pe.push(""),pe.push("\u{1F4A1} \u5EFA\u8BAE:"),pe.push(" - \u5C1D\u8BD5 case_insensitive: true"),pe.push(" - \u5C1D\u8BD5 recursive: true \u641C\u7D22\u5B50\u76EE\u5F55"),pe.push(" - \u4F7F\u7528 keywords \u6216 queries \u7EC4\u5408\u641C\u7D22"),pe.push(' - \u67E5\u6587\u4EF6\u540D\u8BF7\u7528 mode="files"')):ge.length>0&&(pe.push(""),pe.push("\u{1F4A1} \u6279\u91CF\u8BFB\u53D6:"),ge.slice(0,3).forEach(K=>{pe.push(` readfile(path="${K.file}", anchor_lines=[${K.anchor_lines.join(",")}], num_lines=${K.num_lines})`);})),JSON.stringify(Xe("search","success",X.length>0?`search "${P}" (${ne} matches)`:`search "${P}" (no matches)`,pe.join(`
|
|
1525
1525
|
`),{metadata:{mode:"content",strategy:$?"rg":"fallback",regex:x.some(K=>K.regex),case_insensitive:u,path:O,resolved_from:I,queries:x,matches:_e,read_hints:ge,files_with_matches:Y,command:Pe.length>0?Pe[0]:void 0}}))}catch(y){return JSON.stringify(Xe("search","error",`search failed: ${y.message}`,void 0,{error:y.message}))}}},gN={name:au.name,description:au.description,parameters:au.parameters,permission:{category:"read",allowInAskMode:true},async function(s){return yT(s)}},hN={name:"use_skill",description:`Execute a registered skill to get specialized instructions for a task.
|
|
@@ -1542,7 +1542,7 @@ ${i.output}
|
|
|
1542
1542
|
|
|
1543
1543
|
---
|
|
1544
1544
|
\u26A0\uFE0F IMPORTANT: Now execute the above instructions step by step. Do not ask for confirmation unless the instructions explicitly require it.`:`\u274C Skill execution failed: ${i.error}`}},$T=[BL,WL,KL,JL,VL,zL,HL,qL,QL,ZL,eN,tN,nN,rN,iN,aN,lN,YL,XL,zw,cN,mN,Cg,wg,Tg,tT,gN,wT,hN];[...$T,zg];});function Q(s){process.stdout.write(s+`
|
|
1545
|
-
`);}var Tn=R(()=>{});function y$(){if(ii)return ii;try{let s=[join(Rh,"../package.json"),join(Rh,"../../package.json"),join(Rh,"../../../package.json")];for(let e of s)try{let t=JSON.parse(readFileSync(e,"utf-8"));if(t.version)return ii=t.version,ii}catch{continue}throw new Error("package.json not found")}catch{ii="2.0.9";}return ii}var f$,Rh,ii,ai,Cu=R(()=>{f$=fileURLToPath(import.meta.url),Rh=dirname(f$),ii=null;ai=y$();});function li(s,e,t=true){xu[e]||(xu[e]=0);let n=xu[e]%s.length,r=s[n];return t&&(xu[e]=(n+1)%s.length),r}function Su(s,e){if(e){let n=JSON.stringify(e);for(let r of k$)if(r.pattern.test(n))return r.status}let t=Lh[s]||Lh.default;return li(t,s)}function Px(s){let e=s.toLowerCase();for(let t of _$)if(t.pattern.test(e))return t.status;return null}function ku(){let s=Lh.default;return li(s,"default")}function Mx(s,e){return s&&e!==void 0?`Streaming: ${s} (${e} chars)`:li(I$,"streaming")}function Nh(s="default"){let e=Ex[s]||Ex.default;return li(e,`retry_${s}`)}function Rx(){return li(E$,"complete")}function Dx(s,e,t){let n=Ax[s]||Ax.default,r=e?n.success:n.error,o=li(r,`result_${s}_${e}`);if(e&&t!==void 0&&t>0){let i=t>=1024?`${(t/1024).toFixed(1)}KB`:`${t}B`;return `${o} (${i})`}return o}var Lh,k$,_$,xu,I$,Ex,E$,Ax,ja=R(()=>{Lh={Grep:["Searching...","Scanning code...","Finding matches...","Hunting patterns..."],Glob:["Finding files...","Scanning directories...","Locating files..."],WebSearch:["Searching web...","Looking online...","Browsing..."],Read:["Reading files...","Loading content...","Reviewing code...","Examining..."],WebFetch:["Fetching page...","Loading URL...","Downloading..."],Edit:["Editing code...","Making changes...","Updating file...","Modifying..."],Write:["Writing file...","Creating file...","Generating..."],NotebookEdit:["Editing notebook...","Updating cells..."],Bash:["Running command...","Executing...","Processing...","Working..."],BashOutput:["Reading output...","Checking results..."],KillShell:["Stopping process...","Terminating..."],Task:["Spawning agent...","Delegating task...","Working in parallel..."],TodoWrite:["Updating tasks...","Planning...","Organizing..."],TodoRead:["Checking tasks...","Reviewing plan..."],AskUserQuestion:["Waiting for input...","Asking question..."],default:["Thinking...","Processing...","Analyzing...","Pondering...","Contemplating..."]},k$=[{pattern:/test|spec|__test__|\.test\.|\.spec\./i,status:"Reviewing tests..."},{pattern:/\.md$|readme|doc/i,status:"Reading docs..."},{pattern:/package\.json|tsconfig|config/i,status:"Checking config..."},{pattern:/\.css$|\.scss$|\.less$|style/i,status:"Reviewing styles..."},{pattern:/error|exception|bug|issue/i,status:"Hunting bugs..."},{pattern:/TODO|FIXME|HACK/i,status:"Finding TODOs..."},{pattern:/import|require|from\s+['"]/i,status:"Tracing imports..."},{pattern:/function|class|interface|type\s+\w+/i,status:"Analyzing code..."},{pattern:/npm install|yarn add|pnpm add/i,status:"Installing deps..."},{pattern:/npm run|yarn run|pnpm run/i,status:"Running script..."},{pattern:/npm test|jest|vitest|mocha/i,status:"Running tests..."},{pattern:/npm run build|yarn build|tsc/i,status:"Building..."},{pattern:/git\s+(status|log|diff)/i,status:"Checking git..."},{pattern:/git\s+(add|commit|push)/i,status:"Git operation..."},{pattern:/git\s+clone/i,status:"Cloning repo..."},{pattern:/docker/i,status:"Docker operation..."},{pattern:/curl|wget|fetch/i,status:"Fetching data..."}],_$=[{pattern:/fix|bug|error|issue|problem/i,status:"Debugging..."},{pattern:/refactor|clean|improve|optimize/i,status:"Refactoring..."},{pattern:/search|find|look for|where/i,status:"Searching..."},{pattern:/read|check|review|examine/i,status:"Reviewing..."},{pattern:/write|create|add|implement|build/i,status:"Implementing..."},{pattern:/test|verify|validate/i,status:"Testing..."},{pattern:/plan|design|architect/i,status:"Planning..."},{pattern:/understand|analyze|figure out/i,status:"Analyzing..."},{pattern:/delete|remove|clean up/i,status:"Cleaning up..."},{pattern:/rename|move|reorganize/i,status:"Reorganizing..."}],xu={};I$=["Streaming...","Receiving data...","Downloading...","Fetching..."],Ex={rateLimit:["Rate limited, waiting...","Cooling down...","Pausing..."],timeout:["Timed out, retrying...","Reconnecting...","Trying again..."],network:["Network issue, reconnecting...","Connection lost, retrying..."],default:["Retrying...","Trying again...","Recovering..."]},E$=["Complete!","Done!","Finished!","All done!"],Ax={Grep:{success:["Found matches!","Search complete","Results ready"],error:["No matches found","Search failed"]},Read:{success:["File loaded","Content ready","Read complete"],error:["Failed to read","File not found"]},Edit:{success:["Changes saved","File updated","Edit complete"],error:["Edit failed","Could not save"]},Write:{success:["File created","Write complete","Saved!"],error:["Write failed","Could not create"]},Bash:{success:["Command done","Executed!","Process complete"],error:["Command failed","Exit with error"]},Task:{success:["Agent complete","Task done","Subtask finished"],error:["Agent failed","Task error"]},default:{success:["Done","Complete","Finished"],error:["Failed","Error"]}};});var R$,D$,L$,N$,$$,O$,B$,$h,on,us=R(()=>{R$={"gpt-5.2":{id:"gpt-5.2",displayName:"GPT-5.2",provider:"openai",maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:96,reasoning:98,vision:92,creativity:94,speed:75,cost:25},releaseDate:"2025-12-11",notes:'400K \u4E0A\u4E0B\u6587\u7A97\u53E3,128K \u8F93\u51FA\u9650\u5236,\u4EE3\u53F7"Garlic"'},"gpt-5.2-codex":{id:"gpt-5.2-codex",displayName:"GPT-5.2 Codex",provider:"openai",aliases:["gpt-5.2-codex"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:98,reasoning:97,vision:90,creativity:92,speed:70,cost:20},releaseDate:"2025-12-10",notes:"GPT-5.2 \u7684 Codex \u9ED8\u8BA4\u7248\u672C,\u4E13\u4E3A\u7F16\u7A0B\u4EFB\u52A1\u4F18\u5316"},"gpt-5.2-codex-high":{id:"gpt-5.2-codex-high",displayName:"GPT-5.2 Codex High",provider:"openai",aliases:["gpt-5.2-codex-h"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:99,reasoning:98,vision:90,creativity:93,speed:60,cost:15},releaseDate:"2025-12-10",notes:"GPT-5.2 Codex \u9AD8\u6027\u80FD\u6A21\u5F0F,\u6700\u5F3A\u7F16\u7A0B\u80FD\u529B,\u66F4\u6162\u66F4\u8D35"},"gpt-5.2-codex-medium":{id:"gpt-5.2-codex-medium",displayName:"GPT-5.2 Codex Medium",provider:"openai",aliases:["gpt-5.2-codex-m"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:94,vision:88,creativity:90,speed:80,cost:40},releaseDate:"2025-12-10",notes:"GPT-5.2 Codex \u5E73\u8861\u6A21\u5F0F,\u6027\u4EF7\u6BD4\u4F18\u9009"},"gpt-5.1":{id:"gpt-5.1",displayName:"GPT-5.1",provider:"openai",maxInputTokens:272e3,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:94,reasoning:96,vision:90,creativity:92,speed:80,cost:30},notes:"272K \u4E0A\u4E0B\u6587,128K \u8F93\u51FA,\u9002\u5408\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1"},"gpt-5.1-codex":{id:"gpt-5.1-codex",displayName:"GPT-5.1 Codex",provider:"openai",aliases:["gpt-5-codex","gpt-5.1-codex-max"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:97,reasoning:95,vision:88,creativity:90,speed:75,cost:25},notes:"Codex \u4F18\u5316\u7248,400K \u4E0A\u4E0B\u6587,\u4E13\u4E3A agentic \u7F16\u7A0B\u5DE5\u4F5C\u6D41\u8BBE\u8BA1"},"gpt-5.1-codex-mini":{id:"gpt-5.1-codex-mini",displayName:"GPT-5.1 Codex Mini",provider:"openai",aliases:["gpt-5-codex-mini"],maxInputTokens:272e3,maxOutputTokens:128e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:0,creativity:85,speed:92,cost:85},notes:"\u66F4\u5FEB\u66F4\u4FBF\u5B9C\u7684 Codex \u7248\u672C"},"gpt-5":{id:"gpt-5",displayName:"GPT-5",provider:"openai",maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:94,vision:90,creativity:94,speed:80,cost:35},deprecated:true,replacedBy:"gpt-5.1",notes:"\u5DF2\u88AB GPT-5.1 \u66FF\u4EE3"},"gpt-4.1":{id:"gpt-4.1",displayName:"GPT-4.1",provider:"openai",aliases:["gpt-4.1-2025-04-14"],maxInputTokens:1e6,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:92,vision:88,creativity:90,speed:65,cost:15},releaseDate:"2025-04-14",notes:"\u8D85\u5927 1M+ \u4E0A\u4E0B\u6587\u7A97\u53E3,\u9002\u5408\u5904\u7406\u5927\u578B\u4EE3\u7801\u5E93"},"gpt-4o":{id:"gpt-4o",displayName:"GPT-4o",provider:"openai",aliases:["gpt-4o-2024-11-20","gpt-4o-2024-08-06"],maxInputTokens:128e3,maxOutputTokens:16384,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:85,vision:88,creativity:88,speed:75,cost:50}},"gpt-4o-mini":{id:"gpt-4o-mini",displayName:"GPT-4o Mini",provider:"openai",aliases:["gpt-4o-mini-2024-07-18"],maxInputTokens:128e3,maxOutputTokens:16384,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:72,vision:80,creativity:75,speed:92,cost:90}},o3:{id:"o3",displayName:"o3",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:92,reasoning:99,vision:0,creativity:78,speed:40,cost:15},notes:"\u65B0\u4E00\u4EE3\u63A8\u7406\u6A21\u578B,\u63A8\u7406\u80FD\u529B\u6700\u5F3A"},"o3-mini":{id:"o3-mini",displayName:"o3 Mini",provider:"openai",aliases:["o3-mini-2025-01-31"],maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:95,vision:0,creativity:75,speed:65,cost:60}},"o4-mini":{id:"o4-mini",displayName:"o4 Mini",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:90,reasoning:96,vision:0,creativity:76,speed:70,cost:55}},o1:{id:"o1",displayName:"o1",provider:"openai",aliases:["o1-2024-12-17"],maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:95,vision:0,creativity:75,speed:45,cost:25}},"o1-mini":{id:"o1-mini",displayName:"o1 Mini",provider:"openai",aliases:["o1-mini-2024-09-12"],maxInputTokens:128e3,maxOutputTokens:65536,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:82,reasoning:88,vision:0,creativity:70,speed:70,cost:70}},"codex-mini-latest":{id:"codex-mini-latest",displayName:"Codex Mini (Latest)",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:82,vision:0,creativity:75,speed:88,cost:80}},"gpt-4-turbo":{id:"gpt-4-turbo",displayName:"GPT-4 Turbo",provider:"openai",aliases:["gpt-4-turbo-2024-04-09"],maxInputTokens:128e3,maxOutputTokens:4096,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:87,vision:85,creativity:90,speed:70,cost:40}},"gpt-3.5-turbo":{id:"gpt-3.5-turbo",displayName:"GPT-3.5 Turbo",provider:"openai",maxInputTokens:16385,maxOutputTokens:4096,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:65,reasoning:60,vision:0,creativity:70,speed:95,cost:98}}},D$={"claude-opus-4-6":{id:"claude-opus-4-6",displayName:"Claude Opus 4.6",provider:"anthropic",aliases:["claude-opus-4.6"],maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:99,reasoning:98,vision:91,creativity:96,speed:66,cost:18},notes:"Claude Opus 4.6 (latest alias)"},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",displayName:"Claude Opus 4.5",provider:"anthropic",aliases:["claude-opus-4.5"],maxInputTokens:2e5,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:98,reasoning:97,vision:90,creativity:95,speed:65,cost:20},releaseDate:"2025-11-24",notes:"\u6700\u5F3A Claude \u6A21\u578B,\u652F\u6301 Extended Thinking,\u4F01\u4E1A\u7248\u53EF\u6269\u5C55\u81F3 1M \u4E0A\u4E0B\u6587"},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",displayName:"Claude Sonnet 4.5",provider:"anthropic",aliases:["claude-sonnet-4.5","claude-sonnet-4-5-20250929-thinking"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:88,creativity:90,speed:80,cost:50},releaseDate:"2025-09-29",notes:"\u5E73\u8861\u6027\u80FD\u4E0E\u6210\u672C,beta \u7248\u672C\u652F\u6301 1M \u4E0A\u4E0B\u6587"},"claude-sonnet-4-20250514":{id:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",provider:"anthropic",aliases:["claude-sonnet-4"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:88,speed:82,cost:55},notes:"2025-08-12 \u5347\u7EA7\u652F\u6301 1M beta \u4E0A\u4E0B\u6587"},"claude-opus-4-20250514":{id:"claude-opus-4-20250514",displayName:"Claude Opus 4",provider:"anthropic",aliases:["claude-opus-4"],maxInputTokens:2e5,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:96,reasoning:95,vision:88,creativity:94,speed:70,cost:25}},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",displayName:"Claude Haiku 4.5",provider:"anthropic",aliases:["claude-haiku-4.5"],maxInputTokens:2e5,maxOutputTokens:8e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:78,reasoning:75,vision:80,creativity:75,speed:95,cost:95},notes:"\u6700\u5FEB\u6700\u4FBF\u5B9C\u7684 Claude 4.5 \u6A21\u578B"},"claude-3-5-sonnet-20241022":{id:"claude-3-5-sonnet-20241022",displayName:"Claude 3.5 Sonnet (New)",provider:"anthropic",aliases:["claude-3.5-sonnet-new","claude-3-5-sonnet-latest"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:87,speed:85,cost:55},releaseDate:"2024-10-22",notes:"Claude 3.5 Sonnet \u5347\u7EA7\u7248"},"claude-3-5-haiku-20241022":{id:"claude-3-5-haiku-20241022",displayName:"Claude 3.5 Haiku",provider:"anthropic",aliases:["claude-3.5-haiku"],maxInputTokens:2e5,maxOutputTokens:8e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:72,vision:78,creativity:73,speed:98,cost:98},releaseDate:"2024-10-22",notes:"\u6700\u5FEB\u6700\u4FBF\u5B9C\u7684 Claude 3.5 \u6A21\u578B"}},L$={"gemini-3-pro-preview":{id:"gemini-3-pro-preview",displayName:"Gemini 3 Pro Preview",provider:"gemini",aliases:["gemini-3-pro","gemini-3.0-pro-preview"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:94,reasoning:95,vision:96,creativity:94,speed:72,cost:35},releaseDate:"2026-01",notes:"Gemini 3 \u9884\u89C8\u7248,UI/\u89C6\u89C9\u8BBE\u8BA1\u4E13\u957F,1M \u4E0A\u4E0B\u6587"},"gemini-3.0-pro":{id:"gemini-3.0-pro",displayName:"Gemini 3.0 Pro",provider:"gemini",aliases:["gemini-3.0-pro-latest"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:96,vision:94,creativity:92,speed:70,cost:30},releaseDate:"2025-12",notes:"Flagship multimodal model with 1M context, high-precision reasoning"},"gemini-2.5-flash":{id:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",provider:"gemini",aliases:["gemini-2.5-flash-latest"],maxInputTokens:1048576,maxOutputTokens:65535,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:90,creativity:87,speed:92,cost:85},releaseDate:"2025-03",notes:"Fast and cost-efficient, ~1500 pages or 30K lines of code"},"gemini-2.5-pro":{id:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",provider:"gemini",aliases:["gemini-2.5-pro-latest"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:93,reasoning:92,vision:92,creativity:90,speed:75,cost:40},releaseDate:"2025-03",notes:"Balanced performance with 1M context window"},"gemini-2.0-flash-thinking":{id:"gemini-2.0-flash-thinking",displayName:"Gemini 2.0 Flash Thinking",provider:"gemini",aliases:["gemini-2.0-flash-thinking-exp","gemini-2.0-flash-thinking-experimental"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:92,reasoning:94,vision:90,creativity:88,speed:85,cost:50},releaseDate:"2024-12-19",notes:"Shows model thought process, 1M context window"},"gemini-2.0-flash":{id:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",provider:"gemini",aliases:["gemini-2.0-flash-exp","gemini-2.0-flash-experimental"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:89,vision:90,creativity:87,speed:95,cost:75},releaseDate:"2024-12-11",notes:"Twice as fast as Gemini 1.5 Pro, multimodal with native image generation"},"gemini-1.5-pro":{id:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",provider:"gemini",aliases:["gemini-1.5-pro-latest","gemini-pro"],maxInputTokens:2e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:87,vision:88,creativity:85,speed:70,cost:50},releaseDate:"2024-05",notes:"2M context window - largest available, supports context caching"},"gemini-1.5-flash":{id:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",provider:"gemini",aliases:["gemini-1.5-flash-latest","gemini-flash"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:83,vision:85,creativity:82,speed:90,cost:85},releaseDate:"2024-05",notes:"Fast and efficient with 1M context, supports code execution"},"gemini-1.5-flash-8b":{id:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",provider:"gemini",aliases:["gemini-flash-8b"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:80,reasoning:78,vision:82,creativity:77,speed:98,cost:95},releaseDate:"2024-10",notes:"Smaller 8B model, extremely fast and cost-effective"},"gemini-1.0-pro":{id:"gemini-1.0-pro",displayName:"Gemini 1.0 Pro",provider:"gemini",aliases:["gemini-pro-1.0"],maxInputTokens:32768,maxOutputTokens:8192,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:73,vision:0,creativity:75,speed:85,cost:90},releaseDate:"2023-12",notes:"Original Gemini Pro, text-only"},"gemini-1.0-pro-vision":{id:"gemini-1.0-pro-vision",displayName:"Gemini 1.0 Pro Vision",provider:"gemini",aliases:["gemini-pro-vision"],maxInputTokens:16384,maxOutputTokens:2048,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:70,reasoning:68,vision:80,creativity:72,speed:80,cost:88},releaseDate:"2023-12",notes:"Original multimodal Gemini with vision support"}},N$={"kimi-k2-0905-preview":{id:"kimi-k2-0905-preview",displayName:"Kimi K2 (0905 Preview)",provider:"kimi",aliases:["kimi-k2","kimi-k2-preview"],maxInputTokens:256e3,maxOutputTokens:8192,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:0,creativity:80,speed:85,cost:70},releaseDate:"2025-09",notes:"MoE \u67B6\u6784 K2 \u9884\u89C8\u7248\uFF0C256K \u4E0A\u4E0B\u6587"}},$$={"deepseek-v3.2":{id:"deepseek-v3.2",displayName:"DeepSeek V3.2",provider:"deepseek",aliases:["deepseek-v3.2-exp"],maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:0,creativity:80,speed:85,cost:95},releaseDate:"2025-09-29",notes:"\u5B9E\u9A8C\u7248\u672C,\u6027\u80FD\u663E\u8457\u63D0\u5347"},"deepseek-v3.1":{id:"deepseek-v3.1",displayName:"DeepSeek V3.1",provider:"deepseek",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:0,creativity:78,speed:88,cost:96},releaseDate:"2025-08",notes:"\u6DF7\u5408\u67B6\u6784\u6A21\u578B"},"deepseek-chat":{id:"deepseek-chat",displayName:"DeepSeek Chat",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:82,vision:0,creativity:75,speed:85,cost:95},notes:"\u901A\u7528\u5BF9\u8BDD\u6A21\u578B,\u6210\u672C\u6781\u4F4E"},"deepseek-coder":{id:"deepseek-coder",displayName:"DeepSeek Coder",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:85,vision:0,creativity:70,speed:88,cost:96},notes:"\u4E13\u4E3A\u7F16\u7A0B\u4F18\u5316,\u4EE3\u7801\u80FD\u529B\u7A81\u51FA"},"deepseek-reasoner":{id:"deepseek-reasoner",displayName:"DeepSeek Reasoner",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:64e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:96,vision:0,creativity:75,speed:60,cost:90},notes:"\u63A8\u7406\u4E13\u7528\u6A21\u578B,\u652F\u6301\u957F\u8F93\u51FA"}},O$={"minimax-text-01":{id:"minimax-text-01",displayName:"MiniMax Text-01",provider:"minimax",maxInputTokens:4e6,maxOutputTokens:1e6,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:90,vision:0,creativity:85,speed:55,cost:70},notes:"4M \u4E0A\u4E0B\u6587\u7A97\u53E3,Lightning Attention + MoE \u67B6\u6784,\u5F00\u6E90\u53EF\u7528"},"minimax-m1-80k":{id:"minimax-m1-80k",displayName:"MiniMax M1-80K",provider:"minimax",maxInputTokens:1e6,maxOutputTokens:8e4,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:90,reasoning:92,vision:0,creativity:82,speed:65,cost:75},notes:"1M \u4E0A\u4E0B\u6587 + 80K \u601D\u8003\u9884\u7B97"},"minimax-m2.1":{id:"minimax-m2.1",displayName:"MiniMax M2.1",provider:"minimax",maxInputTokens:2e5,maxOutputTokens:64e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:93,reasoning:88,vision:0,creativity:80,speed:82,cost:85},releaseDate:"2025-12",notes:"\u7F16\u7A0B\u548C Agentic \u5DE5\u4F5C\u6D41\u4F18\u5316,\u652F\u6301\u591A\u8BED\u8A00"},"minimax-vl-01":{id:"minimax-vl-01",displayName:"MiniMax VL-01",provider:"minimax",maxInputTokens:4e6,maxOutputTokens:1e6,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:88,vision:92,creativity:88,speed:60,cost:65},notes:"\u591A\u6A21\u6001\u6A21\u578B,\u652F\u6301\u6587\u672C\u548C\u56FE\u50CF"}},B$={"glm-4.7":{id:"glm-4.7",displayName:"GLM-4.7",provider:"glm",maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:87,speed:80,cost:70},releaseDate:"2025-12-22",notes:"\u6700\u65B0\u7248\u672C,200K \u4E0A\u4E0B\u6587,128K \u8F93\u51FA"},"glm-4.6":{id:"glm-4.6",displayName:"GLM-4.6",provider:"glm",maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:86,vision:83,creativity:85,speed:82,cost:75},releaseDate:"2025-09-10",notes:"\u4ECE 128K \u6269\u5C55\u81F3 200K \u4E0A\u4E0B\u6587"},"glm-4.5":{id:"glm-4.5",displayName:"GLM-4.5",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:86,reasoning:84,vision:80,creativity:83,speed:85,cost:80},releaseDate:"2025-07"},"glm-4-flash":{id:"glm-4-flash",displayName:"GLM-4 Flash",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:82,reasoning:80,vision:78,creativity:80,speed:95,cost:92},notes:"\u5FEB\u901F\u6A21\u578B,\u76F8\u5F53\u4E8E 300 \u9875\u4E66\u7684\u4E0A\u4E0B\u6587"},"glm-4-plus":{id:"glm-4-plus",displayName:"GLM-4 Plus",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:86,vision:82,creativity:85,speed:78,cost:65}},"glm-4-air":{id:"glm-4-air",displayName:"GLM-4 Air",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:80,reasoning:78,vision:0,creativity:78,speed:90,cost:88}},"glm-4-long":{id:"glm-4-long",displayName:"GLM-4 Long",provider:"glm",maxInputTokens:1e6,maxOutputTokens:128e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:88,vision:0,creativity:80,speed:50,cost:60},notes:"\u8D85\u957F\u4E0A\u4E0B\u6587\u4E13\u7528,1M tokens"},"glm-4-airx":{id:"glm-4-airx",displayName:"GLM-4 AirX",provider:"glm",maxInputTokens:8e3,maxOutputTokens:4096,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:70,reasoning:68,vision:0,creativity:70,speed:98,cost:98},notes:"\u8D85\u8F7B\u91CF\u7EA7\u6A21\u578B,\u6781\u5FEB\u901F\u5EA6"}},$h=class{models=new Map;constructor(){this.registerModels(R$),this.registerModels(D$),this.registerModels(L$),this.registerModels(N$),this.registerModels($$),this.registerModels(O$),this.registerModels(B$);}registerModels(e){for(let[t,n]of Object.entries(e))if(this.models.set(t,n),n.aliases)for(let r of n.aliases)this.models.set(r,n);}getModel(e){return this.models.get(e)}getAllModels(){let e=new Map;for(let t of this.models.values())e.set(t.id,t);return Array.from(e.values())}getModelsByProvider(e){return this.getAllModels().filter(t=>t.provider===e)}hasModel(e){return this.models.has(e)}toModelCapability(e){let t=this.getModel(e);if(t)return {modelAlias:t.id,strengths:this.inferStrengths(t),scores:{coding:t.scores?.coding??50,reasoning:t.scores?.reasoning??50,vision:t.scores?.vision??0,creativity:t.scores?.creativity??50,speed:t.scores?.speed??50,cost:t.scores?.cost??50},features:{supportsVision:t.supportsVision??false,supportsTools:t.supportsTools??false,supportsFunctionCalling:t.supportsFunctionCalling??false,supportsStreaming:t.supportsStreaming??false,maxContextTokens:t.maxInputTokens,maxOutputTokens:t.maxOutputTokens}}}inferStrengths(e){let t=[],n=e.scores??{};return (n.coding??0)>=85&&t.push("coding"),(n.reasoning??0)>=85&&t.push("reasoning"),(n.vision??0)>=85&&t.push("image_analysis"),(n.creativity??0)>=85&&t.push("creative_writing"),t}},on=new $h;});function Fh(s,e){return `mcp__${s}__${e}`}function Uh(s){if(!s.startsWith("mcp__"))return null;let e=s.split("__");if(e.length<3)return null;let t=e[1],n=e.slice(2).join("__");return !t||!n?null:{serverId:t,toolName:n}}var Du=R(()=>{});var jh,nt,cr=R(()=>{wt();jh={openai:"https://api.openai.com/v1","openai-responses":"https://api.openai.com/v1",anthropic:"https://api.anthropic.com","anthropic-openai":"https://api.anthropic.com/v1",doubao:"https://ark.cn-beijing.volces.com/api/v3",gemini:"https://generativelanguage.googleapis.com",kimi:"https://api.moonshot.cn/v1"},nt=class{config;constructor(e){this.config=e??He(),this.config.providers||(this.config.providers={});}sanitizeId(e){return e.toLowerCase().trim().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").substring(0,48)}ensureValidId(e){let t=this.sanitizeId(e);if(!t)throw new Error("Provider ID must contain letters or numbers (allowed: lowercase letters, numbers, hyphen).");if(!/^[a-z0-9][a-z0-9-]*$/.test(t))throw new Error("Provider ID can only include lowercase letters, numbers, and hyphen.");return t}slugifyName(e){return this.sanitizeId(e)||"provider"}ensureProviderId(e,t){let n=e||this.slugifyName(t||"provider");if(this.config.providers||(this.config.providers={}),!this.config.providers[n])return n;let r=2,o=`${n}-${r}`;for(;this.config.providers[o];)r+=1,o=`${n}-${r}`;return o}persist(){Me(this.config);}getProviderCount(){return Object.keys(this.config.providers||{}).length}getProviders(){return Object.values(this.config.providers||{}).sort((e,t)=>e.name.localeCompare(t.name))}getProvider(e){if(e)return this.config.providers?.[e]}getDefaultProvider(){if(this.config.defaultProviderId){let t=this.getProvider(this.config.defaultProviderId);if(t)return t}let[e]=this.getProviders();return e&&(this.config.defaultProviderId=e.id,this.persist()),e}setDefaultProvider(e){let t=this.getProvider(e);if(!t)throw new Error(`Provider "${e}" does not exist.`);return this.config.defaultProviderId=e,this.persist(),t}addProvider(e){if(!e.name.trim())throw new Error("Provider name is required.");if(!e.apiKey.trim())throw new Error("Provider API key/token is required.");let t=this.ensureProviderId(e.id,e.name),n=new Date().toISOString(),r=e.baseUrl?.trim()||jh[e.protocol],o=(e.models||[]).map(a=>typeof a=="string"?{name:a,createdAt:n}:{...a,createdAt:a.createdAt||n}),i={id:t,name:e.name.trim(),protocol:e.protocol,apiKey:e.apiKey.trim(),baseUrl:r,urlSuffix:e.urlSuffix,maxTokens:e.maxTokens,maxInputTokens:e.maxInputTokens,models:o,defaultModel:e.defaultModel||o[0]?.name,lastSelectedModel:e.defaultModel||o[0]?.name,createdAt:n,updatedAt:n};if(!i.defaultModel)throw new Error("At least one model is required when creating a provider.");return this.config.providers||(this.config.providers={}),this.config.providers[t]=i,(!this.config.defaultProviderId||e.setAsDefault)&&(this.config.defaultProviderId=t),this.persist(),i}updateProvider(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);let r=new Date().toISOString(),o={...n,...t,baseUrl:t.baseUrl?.trim()||n.baseUrl||jh[n.protocol],urlSuffix:t.urlSuffix!==void 0?t.urlSuffix:n.urlSuffix,apiKey:t.apiKey?.trim()||n.apiKey,maxTokens:t.maxTokens!==void 0?t.maxTokens:n.maxTokens,maxInputTokens:t.maxInputTokens!==void 0?t.maxInputTokens:n.maxInputTokens,updatedAt:r};if(t.protocol&&t.protocol!==n.protocol&&(o.protocol=t.protocol,t.baseUrl||(o.baseUrl=jh[t.protocol])),t.defaultModel){if(!o.models.some(a=>a.name===t.defaultModel))throw new Error(`Model "${t.defaultModel}" does not exist for provider "${e}".`);o.defaultModel=t.defaultModel,o.lastSelectedModel=t.defaultModel;}return this.config.providers[e]=o,this.persist(),o}renameProvider(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);let r=this.ensureValidId(t);if(r===e)return n;if(this.config.providers?.[r])throw new Error(`Provider ID "${r}" already exists.`);delete this.config.providers[e];let o=new Date().toISOString(),i={...n,id:r,updatedAt:o};return this.config.providers[r]=i,this.config.defaultProviderId===e&&(this.config.defaultProviderId=r),this.persist(),i}deleteProvider(e){if(!this.config.providers?.[e])throw new Error(`Provider "${e}" does not exist.`);delete this.config.providers[e],this.config.defaultProviderId===e&&(this.config.defaultProviderId=void 0),this.persist();}addModel(e,t,n=false,r){let o=this.getProvider(e);if(!o)throw new Error(`Provider "${e}" does not exist.`);let i=t.trim();if(!i)throw new Error("Model name cannot be empty.");if(o.models.some(l=>l.name===i))throw new Error(`Model "${i}" already exists for provider "${e}".`);let a={...o,models:[...o.models,{name:i,createdAt:new Date().toISOString(),...r}],updatedAt:new Date().toISOString()};return (!o.defaultModel||n)&&(a.defaultModel=i,a.lastSelectedModel=i),this.config.providers[e]=a,this.persist(),a}removeModel(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);if(n.models.length<=1)throw new Error("A provider must have at least one model.");let r=n.models.filter(i=>i.name!==t);if(r.length===n.models.length)throw new Error(`Model "${t}" does not exist for provider "${e}".`);let o={...n,models:r,updatedAt:new Date().toISOString()};return n.defaultModel===t&&(o.defaultModel=r[0].name),n.lastSelectedModel===t&&(o.lastSelectedModel=o.defaultModel),this.config.providers[e]=o,this.persist(),o}updateModelConfig(e,t,n){let r=this.getProvider(e);if(!r)throw new Error(`Provider "${e}" does not exist.`);let o=r.models.findIndex(l=>l.name===t);if(o===-1)throw new Error(`Model "${t}" does not exist for provider "${e}".`);let i=[...r.models];i[o]={...i[o],...n};let a={...r,models:i,updatedAt:new Date().toISOString()};return this.config.providers[e]=a,this.persist(),a}setLastSelectedModel(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);if(!n.models.some(o=>o.name===t))throw new Error(`Model "${t}" does not exist for provider "${e}".`);return n.lastSelectedModel=t,n.updatedAt=new Date().toISOString(),this.config.providers[e]=n,this.persist(),n}resolveModel(e,t){let n=this.getProvider(e);if(n)return t&&n.models.some(o=>o.name===t)?t:n.lastSelectedModel||n.defaultModel||n.models[0]?.name}};});var Gh,ui,Dt,Vs=R(()=>{wt();cr();us();Gh={"claude-opus-4-5-20250514":["reasoning","creative","thorough","\u6DF1\u5EA6\u601D\u8003","\u590D\u6742\u63A8\u7406"],"claude-sonnet-4-5-20250514":["coding","fast","accurate","\u4EE3\u7801","\u5FEB\u901F"],"claude-haiku-4-5-20250514":["fast","cheap","simple","\u8F7B\u91CF","\u4F4E\u6210\u672C"],"claude-opus-4-20250514":["reasoning","creative","thorough","\u6DF1\u5EA6\u601D\u8003"],"claude-sonnet-4-20250514":["coding","fast","accurate","\u4EE3\u7801"],"gpt-5.2":["reasoning","coding","thorough","\u6DF1\u5EA6\u63A8\u7406","\u5168\u80FD"],"gpt-5.2-mini":["reasoning","fast","balanced","\u63A8\u7406","\u5FEB\u901F"],"gpt-5.2-codex":["coding","agent","autonomous","\u4EE3\u7801\u4E13\u5BB6","\u81EA\u4E3B\u7F16\u7A0B"],"gpt-5.2-codex-high":["coding","agent","thorough","\u4EE3\u7801","\u6DF1\u5EA6\u7F16\u7A0B","\u6700\u5F3A"],"gpt-5.2-codex-medium":["coding","agent","balanced","\u4EE3\u7801","\u6027\u4EF7\u6BD4"],"gpt-5.1":["reasoning","coding","balanced","\u903B\u8F91\u7F1C\u5BC6","\u901A\u7528"],"gpt-5.1-mini":["fast","cheap","coding","\u5FEB\u901F","\u4F4E\u6210\u672C"],"gpt-5.1-codex":["coding","agent","autonomous","\u4EE3\u7801","\u7F16\u7A0B"],"gpt-5.1-codex-max":["coding","agent","thorough","\u4EE3\u7801","\u6DF1\u5EA6\u7F16\u7A0B"],o3:["reasoning","math","science","\u6DF1\u5EA6\u63A8\u7406","\u6570\u5B66"],"o4-mini":["reasoning","fast","coding","\u63A8\u7406","\u5FEB\u901F"],"gemini-3-pro-preview":["ui","design","vision","creative","UI\u8BBE\u8BA1","\u754C\u9762","\u89C6\u89C9"],"gemini-3.0-pro":["ui","design","vision","creative","UI\u8BBE\u8BA1","\u754C\u9762"],"gemini-3.0-flash":["ui","fast","vision","UI","\u5FEB\u901F"],"gemini-2.5-pro":["reasoning","long-context","vision","\u63A8\u7406","\u957F\u4E0A\u4E0B\u6587"],"gemini-2.5-flash":["fast","vision","multimodal","\u5FEB\u901F","\u591A\u6A21\u6001"],"deepseek-v3":["coding","reasoning","cheap","\u4EE3\u7801","\u6027\u4EF7\u6BD4"],"deepseek-r1":["reasoning","math","thinking","\u6DF1\u5EA6\u63A8\u7406","\u6570\u5B66"],"qwen-max":["chinese","reasoning","coding","\u4E2D\u6587","\u63A8\u7406"],"qwen-turbo":["chinese","fast","cheap","\u4E2D\u6587","\u5FEB\u901F"]},ui=6,Dt=class{providerStore;scope;constructor(e,t="assistant"){this.providerStore=e??new nt,this.scope=t;}readLegacyScopedConfig(e){if(this.scope==="assistant"){let t=e.assistant;return {...t??{},workerPool:t?.workerPool??[]}}return {workerPool:[]}}readScopedRunModeConfig(e){return e.runConfig?.modes?.[this.scope]}getConfig(){let e=He(),t=this.readScopedRunModeConfig(e);return t?{mainAgent:t.mainAgent,workerPool:t.workerPool??[],maxConcurrent:t.maxConcurrent,ccbReviewMode:t.ccbReviewMode,createdAt:t.createdAt,updatedAt:t.updatedAt}:this.readLegacyScopedConfig(e)}saveConfig(e){let t=He(),n=new Date().toISOString(),r=t.runConfig?.modes?.[this.scope]??{},o={...r,mainAgent:e.mainAgent,workerPool:e.workerPool??[],maxConcurrent:e.maxConcurrent,ccbReviewMode:e.ccbReviewMode,updatedAt:n,createdAt:r.createdAt||n};t.runConfig={...t.runConfig??{},modes:{...t.runConfig?.modes??{},[this.scope]:o}},this.scope==="assistant"&&(t.assistant={...e,updatedAt:n,createdAt:t.assistant?.createdAt||n}),Me(t);}getNetworkRoles(){let e=He(),t=e.runConfig?.modes?.network?.networkRoles;if(Array.isArray(t))return t;let n=e.assistant?.networkRoles;return Array.isArray(n)?n:[]}setNetworkRoles(e){let t=He(),n=new Date().toISOString(),r=t.runConfig?.modes?.network??{};t.runConfig={...t.runConfig??{},modes:{...t.runConfig?.modes??{},network:{...r,networkRoles:e,updatedAt:n,createdAt:r.createdAt||n}}},Me(t);}getMainAgent(){let e=this.getConfig();if(e.mainAgent)return e.mainAgent;let t=this.providerStore.getDefaultProvider();if(t)return {providerId:t.id,model:t.lastSelectedModel||t.defaultModel||t.models[0]?.name}}setMainAgent(e){let t=this.getConfig();t.mainAgent=e,this.saveConfig(t);}getSupervisorAgent(){return this.getConfig().supervisorAgent}setSupervisorAgent(e){let t=this.getConfig();t.supervisorAgent=e,this.saveConfig(t);}getWorkerPool(){return this.getConfig().workerPool||[]}getMaxConcurrent(){let e=this.getConfig();return typeof e.maxConcurrent=="number"&&Number.isFinite(e.maxConcurrent)?e.maxConcurrent:void 0}setMaxConcurrent(e){let t=this.getConfig();typeof e=="number"&&Number.isFinite(e)&&e>0?t.maxConcurrent=Math.floor(e):delete t.maxConcurrent,this.saveConfig(t);}getCCBReviewMode(){let t=this.getConfig().ccbReviewMode;return t==="single"?"single-role":t==="multi"?"multi-model":t??"multi-role"}setCCBReviewMode(e){let t=this.getConfig();t.ccbReviewMode=e,this.saveConfig(t);}setWorkerPool(e){let t=this.getConfig();t.workerPool=e,this.saveConfig(t);}addWorkerModel(e,t,n=true){let r=this.getWorkerPool();if(r.some(a=>a.providerId===e&&a.model===t))return;let i=this.getModelTraits(t);r.push({providerId:e,model:t,enabled:n,traits:i}),this.setWorkerPool(r);}removeWorkerModel(e,t){let r=this.getWorkerPool().filter(o=>!(o.providerId===e&&o.model===t));this.setWorkerPool(r);}toggleWorkerModel(e,t){let n=this.getWorkerPool(),r=n.find(o=>o.providerId===e&&o.model===t);r&&(r.enabled=!r.enabled,this.setWorkerPool(n));}getEnabledWorkerModels(){return this.getWorkerPool().filter(e=>e.enabled)}getAvailableModels(){let e=this.providerStore.getProviders(),t=[];for(let n of e)for(let r of n.models){let o=this.getModelTraits(r.name);t.push({providerId:n.id,providerName:n.name,model:r.name,traits:o});}return t}selectWorkerByTraits(e){let t=this.getEnabledWorkerModels();if(t.length===0)return;let n=t.map(r=>{let o=r.traits||[],i=e.filter(a=>o.includes(a)).length;return {entry:r,score:i}});return n.sort((r,o)=>o.score-r.score),n[0]?.entry}getModelTraits(e){if(Gh[e])return [...Gh[e]];let t=e.toLowerCase();for(let[i,a]of Object.entries(Gh))if(t.includes(i.toLowerCase())||i.toLowerCase().includes(t))return [...a];let n=on.getModel(e);if(!n)return [];let r=[],o=n.scores||{};return (o.coding??0)>=85&&r.push("coding"),(o.reasoning??0)>=85&&r.push("reasoning"),(o.vision??0)>=80&&r.push("vision"),(o.creativity??0)>=85&&r.push("creative"),(o.speed??0)>=85&&r.push("fast"),(o.cost??0)>=85&&r.push("low-cost"),n.supportsThinking&&r.push("thinking"),n.supportsVision&&r.push("multimodal"),n.maxInputTokens>=5e5&&r.push("long-context"),r}updateWorkerTraits(e,t,n){let r=this.getWorkerPool(),o=r.find(i=>i.providerId===e&&i.model===t);o&&(o.traits=n,this.setWorkerPool(r));}addWorkerTraits(e,t,n){let r=this.getWorkerPool(),o=r.find(i=>i.providerId===e&&i.model===t);if(o){let i=o.traits||[],a=[...new Set([...i,...n])];o.traits=a,this.setWorkerPool(r);}}initializeDefaults(){if(this.getConfig().workerPool.length>0)return;let t=this.providerStore.getDefaultProvider();if(!t)return;let n=t.models.map((r,o)=>({providerId:t.id,model:r.name,enabled:o===0,traits:this.getModelTraits(r.name)}));this.setWorkerPool(n);}};});var Lu,Wx=R(()=>{te();Lu=class{hosts=new Map;hostConfigs=new Map;workspacePath=null;setWorkspace(e){this.workspacePath=e;for(let t of this.hosts.values())try{t.setWorkDir(e);}catch{}}getWorkspace(){return this.workspacePath}getHost(e){return this.hosts.get(e)}hasHost(e){return this.hosts.has(e)}getHostConfig(e){return this.hostConfigs.get(e)}clearHost(e){this.hosts.delete(e),this.hostConfigs.delete(e);}clearAll(){for(let e of this.hosts.values())try{e.interrupt();}catch{}this.hosts.clear(),this.hostConfigs.clear();}forEachHost(e){for(let[t,n]of this.hosts.entries())e(n,t);}async getOrCreateHost(e){let{sessionId:t,configKey:n,createHost:r}=e,o=this.hosts.get(t);if(o){let a=this.hostConfigs.get(t);if(a===n)return p.info("HOST_CONTROLLER",`\u{1F504} Reusing existing host for session=${t}, configKey=${n}`),o;p.info("HOST_CONTROLLER",`\u{1F5D1}\uFE0F Clearing old host: session=${t}, oldKey=${a}, newKey=${n}`),this.clearHost(t);}p.info("HOST_CONTROLLER",`\u2728 Creating NEW host: session=${t}, configKey=${n}`);let i=await r();return this.hosts.set(t,i),this.hostConfigs.set(t,n),this.workspacePath&&i.setWorkDir(this.workspacePath),i}};});var Ys,Nu=R(()=>{_s();Ys=class s{sessionId;filePath;directory;options;sequenceNumber=0;initialized=false;constructor(e){typeof e=="string"&&(e={sessionId:e}),this.sessionId=e.sessionId,this.options=e,this.directory=e.directory||Ie__default.join(ho__default.homedir(),".neox","sessions"),this.filePath=Ie__default.join(this.directory,`${this.sessionId}.jsonl`);}async ensureDirectory(){await Le__default.mkdir(this.directory,{recursive:true});}async ensureInitialized(){if(!this.initialized){await this.ensureDirectory();try{await Le__default.access(this.filePath);let e=await this.readAllItems();e.length>0&&(this.sequenceNumber=Math.max(...e.map(t=>t.seq))+1);}catch{if(this.options.autoCreateMeta!==false){let e={sessionId:this.sessionId,createdAt:new Date().toISOString(),agentName:this.options.agentName,model:this.options.model};await this.appendItem({type:"meta",data:e});}}this.initialized=true;}}async readAllItems(){let e=[];try{let t=Ct__default.createReadStream(this.filePath,{encoding:"utf-8"}),n=zh__default.createInterface({input:t,crlfDelay:1/0});for await(let r of n)if(r.trim())try{let o=JSON.parse(r);e.push(o);}catch{console.warn(`Invalid JSONL line: ${r.slice(0,50)}...`);}}catch(t){if(t.code!=="ENOENT")throw t}return e.sort((t,n)=>t.seq-n.seq),e}async appendItem(e){await this.ensureDirectory();let t={item:e,timestamp:Date.now(),seq:this.sequenceNumber++},n=JSON.stringify(t)+`
|
|
1545
|
+
`);}var Tn=R(()=>{});function y$(){if(ii)return ii;try{let s=[join(Rh,"../package.json"),join(Rh,"../../package.json"),join(Rh,"../../../package.json")];for(let e of s)try{let t=JSON.parse(readFileSync(e,"utf-8"));if(t.version)return ii=t.version,ii}catch{continue}throw new Error("package.json not found")}catch{ii="2.0.9";}return ii}var f$,Rh,ii,ai,Cu=R(()=>{f$=fileURLToPath(import.meta.url),Rh=dirname(f$),ii=null;ai=y$();});function li(s,e,t=true){xu[e]||(xu[e]=0);let n=xu[e]%s.length,r=s[n];return t&&(xu[e]=(n+1)%s.length),r}function Su(s,e){if(e){let n=JSON.stringify(e);for(let r of k$)if(r.pattern.test(n))return r.status}let t=Lh[s]||Lh.default;return li(t,s)}function Px(s){let e=s.toLowerCase();for(let t of _$)if(t.pattern.test(e))return t.status;return null}function ku(){let s=Lh.default;return li(s,"default")}function Mx(s,e){return s&&e!==void 0?`Streaming: ${s} (${e} chars)`:li(I$,"streaming")}function Nh(s="default"){let e=Ex[s]||Ex.default;return li(e,`retry_${s}`)}function Rx(){return li(E$,"complete")}function Dx(s,e,t){let n=Ax[s]||Ax.default,r=e?n.success:n.error,o=li(r,`result_${s}_${e}`);if(e&&t!==void 0&&t>0){let i=t>=1024?`${(t/1024).toFixed(1)}KB`:`${t}B`;return `${o} (${i})`}return o}var Lh,k$,_$,xu,I$,Ex,E$,Ax,ja=R(()=>{Lh={Grep:["Searching...","Scanning code...","Finding matches...","Hunting patterns..."],Glob:["Finding files...","Scanning directories...","Locating files..."],WebSearch:["Searching web...","Looking online...","Browsing..."],Read:["Reading files...","Loading content...","Reviewing code...","Examining..."],WebFetch:["Fetching page...","Loading URL...","Downloading..."],Edit:["Editing code...","Making changes...","Updating file...","Modifying..."],Write:["Writing file...","Creating file...","Generating..."],NotebookEdit:["Editing notebook...","Updating cells..."],Bash:["Running command...","Executing...","Processing...","Working..."],BashOutput:["Reading output...","Checking results..."],KillShell:["Stopping process...","Terminating..."],Task:["Spawning agent...","Delegating task...","Working in parallel..."],TodoWrite:["Updating tasks...","Planning...","Organizing..."],TodoRead:["Checking tasks...","Reviewing plan..."],AskUserQuestion:["Waiting for input...","Asking question..."],default:["Thinking...","Processing...","Analyzing...","Pondering...","Contemplating..."]},k$=[{pattern:/test|spec|__test__|\.test\.|\.spec\./i,status:"Reviewing tests..."},{pattern:/\.md$|readme|doc/i,status:"Reading docs..."},{pattern:/package\.json|tsconfig|config/i,status:"Checking config..."},{pattern:/\.css$|\.scss$|\.less$|style/i,status:"Reviewing styles..."},{pattern:/error|exception|bug|issue/i,status:"Hunting bugs..."},{pattern:/TODO|FIXME|HACK/i,status:"Finding TODOs..."},{pattern:/import|require|from\s+['"]/i,status:"Tracing imports..."},{pattern:/function|class|interface|type\s+\w+/i,status:"Analyzing code..."},{pattern:/npm install|yarn add|pnpm add/i,status:"Installing deps..."},{pattern:/npm run|yarn run|pnpm run/i,status:"Running script..."},{pattern:/npm test|jest|vitest|mocha/i,status:"Running tests..."},{pattern:/npm run build|yarn build|tsc/i,status:"Building..."},{pattern:/git\s+(status|log|diff)/i,status:"Checking git..."},{pattern:/git\s+(add|commit|push)/i,status:"Git operation..."},{pattern:/git\s+clone/i,status:"Cloning repo..."},{pattern:/docker/i,status:"Docker operation..."},{pattern:/curl|wget|fetch/i,status:"Fetching data..."}],_$=[{pattern:/fix|bug|error|issue|problem/i,status:"Debugging..."},{pattern:/refactor|clean|improve|optimize/i,status:"Refactoring..."},{pattern:/search|find|look for|where/i,status:"Searching..."},{pattern:/read|check|review|examine/i,status:"Reviewing..."},{pattern:/write|create|add|implement|build/i,status:"Implementing..."},{pattern:/test|verify|validate/i,status:"Testing..."},{pattern:/plan|design|architect/i,status:"Planning..."},{pattern:/understand|analyze|figure out/i,status:"Analyzing..."},{pattern:/delete|remove|clean up/i,status:"Cleaning up..."},{pattern:/rename|move|reorganize/i,status:"Reorganizing..."}],xu={};I$=["Streaming...","Receiving data...","Downloading...","Fetching..."],Ex={rateLimit:["Rate limited, waiting...","Cooling down...","Pausing..."],timeout:["Timed out, retrying...","Reconnecting...","Trying again..."],network:["Network issue, reconnecting...","Connection lost, retrying..."],default:["Retrying...","Trying again...","Recovering..."]},E$=["Complete!","Done!","Finished!","All done!"],Ax={Grep:{success:["Found matches!","Search complete","Results ready"],error:["No matches found","Search failed"]},Read:{success:["File loaded","Content ready","Read complete"],error:["Failed to read","File not found"]},Edit:{success:["Changes saved","File updated","Edit complete"],error:["Edit failed","Could not save"]},Write:{success:["File created","Write complete","Saved!"],error:["Write failed","Could not create"]},Bash:{success:["Command done","Executed!","Process complete"],error:["Command failed","Exit with error"]},Task:{success:["Agent complete","Task done","Subtask finished"],error:["Agent failed","Task error"]},default:{success:["Done","Complete","Finished"],error:["Failed","Error"]}};});var R$,D$,L$,N$,$$,O$,B$,$h,on,cs=R(()=>{R$={"gpt-5.2":{id:"gpt-5.2",displayName:"GPT-5.2",provider:"openai",maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:96,reasoning:98,vision:92,creativity:94,speed:75,cost:25},releaseDate:"2025-12-11",notes:'400K \u4E0A\u4E0B\u6587\u7A97\u53E3,128K \u8F93\u51FA\u9650\u5236,\u4EE3\u53F7"Garlic"'},"gpt-5.2-codex":{id:"gpt-5.2-codex",displayName:"GPT-5.2 Codex",provider:"openai",aliases:["gpt-5.2-codex"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:98,reasoning:97,vision:90,creativity:92,speed:70,cost:20},releaseDate:"2025-12-10",notes:"GPT-5.2 \u7684 Codex \u9ED8\u8BA4\u7248\u672C,\u4E13\u4E3A\u7F16\u7A0B\u4EFB\u52A1\u4F18\u5316"},"gpt-5.2-codex-high":{id:"gpt-5.2-codex-high",displayName:"GPT-5.2 Codex High",provider:"openai",aliases:["gpt-5.2-codex-h"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:99,reasoning:98,vision:90,creativity:93,speed:60,cost:15},releaseDate:"2025-12-10",notes:"GPT-5.2 Codex \u9AD8\u6027\u80FD\u6A21\u5F0F,\u6700\u5F3A\u7F16\u7A0B\u80FD\u529B,\u66F4\u6162\u66F4\u8D35"},"gpt-5.2-codex-medium":{id:"gpt-5.2-codex-medium",displayName:"GPT-5.2 Codex Medium",provider:"openai",aliases:["gpt-5.2-codex-m"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:94,vision:88,creativity:90,speed:80,cost:40},releaseDate:"2025-12-10",notes:"GPT-5.2 Codex \u5E73\u8861\u6A21\u5F0F,\u6027\u4EF7\u6BD4\u4F18\u9009"},"gpt-5.1":{id:"gpt-5.1",displayName:"GPT-5.1",provider:"openai",maxInputTokens:272e3,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:94,reasoning:96,vision:90,creativity:92,speed:80,cost:30},notes:"272K \u4E0A\u4E0B\u6587,128K \u8F93\u51FA,\u9002\u5408\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1"},"gpt-5.1-codex":{id:"gpt-5.1-codex",displayName:"GPT-5.1 Codex",provider:"openai",aliases:["gpt-5-codex","gpt-5.1-codex-max"],maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:97,reasoning:95,vision:88,creativity:90,speed:75,cost:25},notes:"Codex \u4F18\u5316\u7248,400K \u4E0A\u4E0B\u6587,\u4E13\u4E3A agentic \u7F16\u7A0B\u5DE5\u4F5C\u6D41\u8BBE\u8BA1"},"gpt-5.1-codex-mini":{id:"gpt-5.1-codex-mini",displayName:"GPT-5.1 Codex Mini",provider:"openai",aliases:["gpt-5-codex-mini"],maxInputTokens:272e3,maxOutputTokens:128e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:0,creativity:85,speed:92,cost:85},notes:"\u66F4\u5FEB\u66F4\u4FBF\u5B9C\u7684 Codex \u7248\u672C"},"gpt-5":{id:"gpt-5",displayName:"GPT-5",provider:"openai",maxInputTokens:4e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:94,vision:90,creativity:94,speed:80,cost:35},deprecated:true,replacedBy:"gpt-5.1",notes:"\u5DF2\u88AB GPT-5.1 \u66FF\u4EE3"},"gpt-4.1":{id:"gpt-4.1",displayName:"GPT-4.1",provider:"openai",aliases:["gpt-4.1-2025-04-14"],maxInputTokens:1e6,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:92,vision:88,creativity:90,speed:65,cost:15},releaseDate:"2025-04-14",notes:"\u8D85\u5927 1M+ \u4E0A\u4E0B\u6587\u7A97\u53E3,\u9002\u5408\u5904\u7406\u5927\u578B\u4EE3\u7801\u5E93"},"gpt-4o":{id:"gpt-4o",displayName:"GPT-4o",provider:"openai",aliases:["gpt-4o-2024-11-20","gpt-4o-2024-08-06"],maxInputTokens:128e3,maxOutputTokens:16384,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:85,vision:88,creativity:88,speed:75,cost:50}},"gpt-4o-mini":{id:"gpt-4o-mini",displayName:"GPT-4o Mini",provider:"openai",aliases:["gpt-4o-mini-2024-07-18"],maxInputTokens:128e3,maxOutputTokens:16384,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:72,vision:80,creativity:75,speed:92,cost:90}},o3:{id:"o3",displayName:"o3",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:92,reasoning:99,vision:0,creativity:78,speed:40,cost:15},notes:"\u65B0\u4E00\u4EE3\u63A8\u7406\u6A21\u578B,\u63A8\u7406\u80FD\u529B\u6700\u5F3A"},"o3-mini":{id:"o3-mini",displayName:"o3 Mini",provider:"openai",aliases:["o3-mini-2025-01-31"],maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:95,vision:0,creativity:75,speed:65,cost:60}},"o4-mini":{id:"o4-mini",displayName:"o4 Mini",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:90,reasoning:96,vision:0,creativity:76,speed:70,cost:55}},o1:{id:"o1",displayName:"o1",provider:"openai",aliases:["o1-2024-12-17"],maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:95,vision:0,creativity:75,speed:45,cost:25}},"o1-mini":{id:"o1-mini",displayName:"o1 Mini",provider:"openai",aliases:["o1-mini-2024-09-12"],maxInputTokens:128e3,maxOutputTokens:65536,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:82,reasoning:88,vision:0,creativity:70,speed:70,cost:70}},"codex-mini-latest":{id:"codex-mini-latest",displayName:"Codex Mini (Latest)",provider:"openai",maxInputTokens:2e5,maxOutputTokens:1e5,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:82,vision:0,creativity:75,speed:88,cost:80}},"gpt-4-turbo":{id:"gpt-4-turbo",displayName:"GPT-4 Turbo",provider:"openai",aliases:["gpt-4-turbo-2024-04-09"],maxInputTokens:128e3,maxOutputTokens:4096,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:87,vision:85,creativity:90,speed:70,cost:40}},"gpt-3.5-turbo":{id:"gpt-3.5-turbo",displayName:"GPT-3.5 Turbo",provider:"openai",maxInputTokens:16385,maxOutputTokens:4096,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:65,reasoning:60,vision:0,creativity:70,speed:95,cost:98}}},D$={"claude-opus-4-6":{id:"claude-opus-4-6",displayName:"Claude Opus 4.6",provider:"anthropic",aliases:["claude-opus-4.6"],maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:99,reasoning:98,vision:91,creativity:96,speed:66,cost:18},notes:"Claude Opus 4.6 (latest alias)"},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",displayName:"Claude Opus 4.5",provider:"anthropic",aliases:["claude-opus-4.5"],maxInputTokens:2e5,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:98,reasoning:97,vision:90,creativity:95,speed:65,cost:20},releaseDate:"2025-11-24",notes:"\u6700\u5F3A Claude \u6A21\u578B,\u652F\u6301 Extended Thinking,\u4F01\u4E1A\u7248\u53EF\u6269\u5C55\u81F3 1M \u4E0A\u4E0B\u6587"},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",displayName:"Claude Sonnet 4.5",provider:"anthropic",aliases:["claude-sonnet-4.5","claude-sonnet-4-5-20250929-thinking"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:88,creativity:90,speed:80,cost:50},releaseDate:"2025-09-29",notes:"\u5E73\u8861\u6027\u80FD\u4E0E\u6210\u672C,beta \u7248\u672C\u652F\u6301 1M \u4E0A\u4E0B\u6587"},"claude-sonnet-4-20250514":{id:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",provider:"anthropic",aliases:["claude-sonnet-4"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:88,speed:82,cost:55},notes:"2025-08-12 \u5347\u7EA7\u652F\u6301 1M beta \u4E0A\u4E0B\u6587"},"claude-opus-4-20250514":{id:"claude-opus-4-20250514",displayName:"Claude Opus 4",provider:"anthropic",aliases:["claude-opus-4"],maxInputTokens:2e5,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:96,reasoning:95,vision:88,creativity:94,speed:70,cost:25}},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",displayName:"Claude Haiku 4.5",provider:"anthropic",aliases:["claude-haiku-4.5"],maxInputTokens:2e5,maxOutputTokens:8e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:78,reasoning:75,vision:80,creativity:75,speed:95,cost:95},notes:"\u6700\u5FEB\u6700\u4FBF\u5B9C\u7684 Claude 4.5 \u6A21\u578B"},"claude-3-5-sonnet-20241022":{id:"claude-3-5-sonnet-20241022",displayName:"Claude 3.5 Sonnet (New)",provider:"anthropic",aliases:["claude-3.5-sonnet-new","claude-3-5-sonnet-latest"],maxInputTokens:2e5,maxOutputTokens:16e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:87,speed:85,cost:55},releaseDate:"2024-10-22",notes:"Claude 3.5 Sonnet \u5347\u7EA7\u7248"},"claude-3-5-haiku-20241022":{id:"claude-3-5-haiku-20241022",displayName:"Claude 3.5 Haiku",provider:"anthropic",aliases:["claude-3.5-haiku"],maxInputTokens:2e5,maxOutputTokens:8e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:72,vision:78,creativity:73,speed:98,cost:98},releaseDate:"2024-10-22",notes:"\u6700\u5FEB\u6700\u4FBF\u5B9C\u7684 Claude 3.5 \u6A21\u578B"}},L$={"gemini-3-pro-preview":{id:"gemini-3-pro-preview",displayName:"Gemini 3 Pro Preview",provider:"gemini",aliases:["gemini-3-pro","gemini-3.0-pro-preview"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:94,reasoning:95,vision:96,creativity:94,speed:72,cost:35},releaseDate:"2026-01",notes:"Gemini 3 \u9884\u89C8\u7248,UI/\u89C6\u89C9\u8BBE\u8BA1\u4E13\u957F,1M \u4E0A\u4E0B\u6587"},"gemini-3.0-pro":{id:"gemini-3.0-pro",displayName:"Gemini 3.0 Pro",provider:"gemini",aliases:["gemini-3.0-pro-latest"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:96,vision:94,creativity:92,speed:70,cost:30},releaseDate:"2025-12",notes:"Flagship multimodal model with 1M context, high-precision reasoning"},"gemini-2.5-flash":{id:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",provider:"gemini",aliases:["gemini-2.5-flash-latest"],maxInputTokens:1048576,maxOutputTokens:65535,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:90,creativity:87,speed:92,cost:85},releaseDate:"2025-03",notes:"Fast and cost-efficient, ~1500 pages or 30K lines of code"},"gemini-2.5-pro":{id:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",provider:"gemini",aliases:["gemini-2.5-pro-latest"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:93,reasoning:92,vision:92,creativity:90,speed:75,cost:40},releaseDate:"2025-03",notes:"Balanced performance with 1M context window"},"gemini-2.0-flash-thinking":{id:"gemini-2.0-flash-thinking",displayName:"Gemini 2.0 Flash Thinking",provider:"gemini",aliases:["gemini-2.0-flash-thinking-exp","gemini-2.0-flash-thinking-experimental"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:92,reasoning:94,vision:90,creativity:88,speed:85,cost:50},releaseDate:"2024-12-19",notes:"Shows model thought process, 1M context window"},"gemini-2.0-flash":{id:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",provider:"gemini",aliases:["gemini-2.0-flash-exp","gemini-2.0-flash-experimental"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:89,vision:90,creativity:87,speed:95,cost:75},releaseDate:"2024-12-11",notes:"Twice as fast as Gemini 1.5 Pro, multimodal with native image generation"},"gemini-1.5-pro":{id:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",provider:"gemini",aliases:["gemini-1.5-pro-latest","gemini-pro"],maxInputTokens:2e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:87,vision:88,creativity:85,speed:70,cost:50},releaseDate:"2024-05",notes:"2M context window - largest available, supports context caching"},"gemini-1.5-flash":{id:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",provider:"gemini",aliases:["gemini-1.5-flash-latest","gemini-flash"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:83,vision:85,creativity:82,speed:90,cost:85},releaseDate:"2024-05",notes:"Fast and efficient with 1M context, supports code execution"},"gemini-1.5-flash-8b":{id:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",provider:"gemini",aliases:["gemini-flash-8b"],maxInputTokens:1e6,maxOutputTokens:65536,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:80,reasoning:78,vision:82,creativity:77,speed:98,cost:95},releaseDate:"2024-10",notes:"Smaller 8B model, extremely fast and cost-effective"},"gemini-1.0-pro":{id:"gemini-1.0-pro",displayName:"Gemini 1.0 Pro",provider:"gemini",aliases:["gemini-pro-1.0"],maxInputTokens:32768,maxOutputTokens:8192,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:75,reasoning:73,vision:0,creativity:75,speed:85,cost:90},releaseDate:"2023-12",notes:"Original Gemini Pro, text-only"},"gemini-1.0-pro-vision":{id:"gemini-1.0-pro-vision",displayName:"Gemini 1.0 Pro Vision",provider:"gemini",aliases:["gemini-pro-vision"],maxInputTokens:16384,maxOutputTokens:2048,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:70,reasoning:68,vision:80,creativity:72,speed:80,cost:88},releaseDate:"2023-12",notes:"Original multimodal Gemini with vision support"}},N$={"kimi-k2-0905-preview":{id:"kimi-k2-0905-preview",displayName:"Kimi K2 (0905 Preview)",provider:"kimi",aliases:["kimi-k2","kimi-k2-preview"],maxInputTokens:256e3,maxOutputTokens:8192,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:0,creativity:80,speed:85,cost:70},releaseDate:"2025-09",notes:"MoE \u67B6\u6784 K2 \u9884\u89C8\u7248\uFF0C256K \u4E0A\u4E0B\u6587"}},$$={"deepseek-v3.2":{id:"deepseek-v3.2",displayName:"DeepSeek V3.2",provider:"deepseek",aliases:["deepseek-v3.2-exp"],maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:92,reasoning:90,vision:0,creativity:80,speed:85,cost:95},releaseDate:"2025-09-29",notes:"\u5B9E\u9A8C\u7248\u672C,\u6027\u80FD\u663E\u8457\u63D0\u5347"},"deepseek-v3.1":{id:"deepseek-v3.1",displayName:"DeepSeek V3.1",provider:"deepseek",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:0,creativity:78,speed:88,cost:96},releaseDate:"2025-08",notes:"\u6DF7\u5408\u67B6\u6784\u6A21\u578B"},"deepseek-chat":{id:"deepseek-chat",displayName:"DeepSeek Chat",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:82,vision:0,creativity:75,speed:85,cost:95},notes:"\u901A\u7528\u5BF9\u8BDD\u6A21\u578B,\u6210\u672C\u6781\u4F4E"},"deepseek-coder":{id:"deepseek-coder",displayName:"DeepSeek Coder",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:95,reasoning:85,vision:0,creativity:70,speed:88,cost:96},notes:"\u4E13\u4E3A\u7F16\u7A0B\u4F18\u5316,\u4EE3\u7801\u80FD\u529B\u7A81\u51FA"},"deepseek-reasoner":{id:"deepseek-reasoner",displayName:"DeepSeek Reasoner",provider:"deepseek",maxInputTokens:64e3,maxOutputTokens:64e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:88,reasoning:96,vision:0,creativity:75,speed:60,cost:90},notes:"\u63A8\u7406\u4E13\u7528\u6A21\u578B,\u652F\u6301\u957F\u8F93\u51FA"}},O$={"minimax-text-01":{id:"minimax-text-01",displayName:"MiniMax Text-01",provider:"minimax",maxInputTokens:4e6,maxOutputTokens:1e6,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:90,vision:0,creativity:85,speed:55,cost:70},notes:"4M \u4E0A\u4E0B\u6587\u7A97\u53E3,Lightning Attention + MoE \u67B6\u6784,\u5F00\u6E90\u53EF\u7528"},"minimax-m1-80k":{id:"minimax-m1-80k",displayName:"MiniMax M1-80K",provider:"minimax",maxInputTokens:1e6,maxOutputTokens:8e4,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,supportsThinking:true,scores:{coding:90,reasoning:92,vision:0,creativity:82,speed:65,cost:75},notes:"1M \u4E0A\u4E0B\u6587 + 80K \u601D\u8003\u9884\u7B97"},"minimax-m2.1":{id:"minimax-m2.1",displayName:"MiniMax M2.1",provider:"minimax",maxInputTokens:2e5,maxOutputTokens:64e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:93,reasoning:88,vision:0,creativity:80,speed:82,cost:85},releaseDate:"2025-12",notes:"\u7F16\u7A0B\u548C Agentic \u5DE5\u4F5C\u6D41\u4F18\u5316,\u652F\u6301\u591A\u8BED\u8A00"},"minimax-vl-01":{id:"minimax-vl-01",displayName:"MiniMax VL-01",provider:"minimax",maxInputTokens:4e6,maxOutputTokens:1e6,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:88,vision:92,creativity:88,speed:60,cost:65},notes:"\u591A\u6A21\u6001\u6A21\u578B,\u652F\u6301\u6587\u672C\u548C\u56FE\u50CF"}},B$={"glm-4.7":{id:"glm-4.7",displayName:"GLM-4.7",provider:"glm",maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:90,reasoning:88,vision:85,creativity:87,speed:80,cost:70},releaseDate:"2025-12-22",notes:"\u6700\u65B0\u7248\u672C,200K \u4E0A\u4E0B\u6587,128K \u8F93\u51FA"},"glm-4.6":{id:"glm-4.6",displayName:"GLM-4.6",provider:"glm",maxInputTokens:2e5,maxOutputTokens:128e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:86,vision:83,creativity:85,speed:82,cost:75},releaseDate:"2025-09-10",notes:"\u4ECE 128K \u6269\u5C55\u81F3 200K \u4E0A\u4E0B\u6587"},"glm-4.5":{id:"glm-4.5",displayName:"GLM-4.5",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:86,reasoning:84,vision:80,creativity:83,speed:85,cost:80},releaseDate:"2025-07"},"glm-4-flash":{id:"glm-4-flash",displayName:"GLM-4 Flash",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:82,reasoning:80,vision:78,creativity:80,speed:95,cost:92},notes:"\u5FEB\u901F\u6A21\u578B,\u76F8\u5F53\u4E8E 300 \u9875\u4E66\u7684\u4E0A\u4E0B\u6587"},"glm-4-plus":{id:"glm-4-plus",displayName:"GLM-4 Plus",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:true,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:88,reasoning:86,vision:82,creativity:85,speed:78,cost:65}},"glm-4-air":{id:"glm-4-air",displayName:"GLM-4 Air",provider:"glm",maxInputTokens:128e3,maxOutputTokens:32e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:80,reasoning:78,vision:0,creativity:78,speed:90,cost:88}},"glm-4-long":{id:"glm-4-long",displayName:"GLM-4 Long",provider:"glm",maxInputTokens:1e6,maxOutputTokens:128e3,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:85,reasoning:88,vision:0,creativity:80,speed:50,cost:60},notes:"\u8D85\u957F\u4E0A\u4E0B\u6587\u4E13\u7528,1M tokens"},"glm-4-airx":{id:"glm-4-airx",displayName:"GLM-4 AirX",provider:"glm",maxInputTokens:8e3,maxOutputTokens:4096,supportsVision:false,supportsTools:true,supportsFunctionCalling:true,supportsStreaming:true,scores:{coding:70,reasoning:68,vision:0,creativity:70,speed:98,cost:98},notes:"\u8D85\u8F7B\u91CF\u7EA7\u6A21\u578B,\u6781\u5FEB\u901F\u5EA6"}},$h=class{models=new Map;constructor(){this.registerModels(R$),this.registerModels(D$),this.registerModels(L$),this.registerModels(N$),this.registerModels($$),this.registerModels(O$),this.registerModels(B$);}registerModels(e){for(let[t,n]of Object.entries(e))if(this.models.set(t,n),n.aliases)for(let r of n.aliases)this.models.set(r,n);}getModel(e){return this.models.get(e)}getAllModels(){let e=new Map;for(let t of this.models.values())e.set(t.id,t);return Array.from(e.values())}getModelsByProvider(e){return this.getAllModels().filter(t=>t.provider===e)}hasModel(e){return this.models.has(e)}toModelCapability(e){let t=this.getModel(e);if(t)return {modelAlias:t.id,strengths:this.inferStrengths(t),scores:{coding:t.scores?.coding??50,reasoning:t.scores?.reasoning??50,vision:t.scores?.vision??0,creativity:t.scores?.creativity??50,speed:t.scores?.speed??50,cost:t.scores?.cost??50},features:{supportsVision:t.supportsVision??false,supportsTools:t.supportsTools??false,supportsFunctionCalling:t.supportsFunctionCalling??false,supportsStreaming:t.supportsStreaming??false,maxContextTokens:t.maxInputTokens,maxOutputTokens:t.maxOutputTokens}}}inferStrengths(e){let t=[],n=e.scores??{};return (n.coding??0)>=85&&t.push("coding"),(n.reasoning??0)>=85&&t.push("reasoning"),(n.vision??0)>=85&&t.push("image_analysis"),(n.creativity??0)>=85&&t.push("creative_writing"),t}},on=new $h;});function Fh(s,e){return `mcp__${s}__${e}`}function Uh(s){if(!s.startsWith("mcp__"))return null;let e=s.split("__");if(e.length<3)return null;let t=e[1],n=e.slice(2).join("__");return !t||!n?null:{serverId:t,toolName:n}}var Du=R(()=>{});var jh,nt,cr=R(()=>{wt();jh={openai:"https://api.openai.com/v1","openai-responses":"https://api.openai.com/v1",anthropic:"https://api.anthropic.com","anthropic-openai":"https://api.anthropic.com/v1",doubao:"https://ark.cn-beijing.volces.com/api/v3",gemini:"https://generativelanguage.googleapis.com",kimi:"https://api.moonshot.cn/v1"},nt=class{config;constructor(e){this.config=e??He(),this.config.providers||(this.config.providers={});}sanitizeId(e){return e.toLowerCase().trim().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").substring(0,48)}ensureValidId(e){let t=this.sanitizeId(e);if(!t)throw new Error("Provider ID must contain letters or numbers (allowed: lowercase letters, numbers, hyphen).");if(!/^[a-z0-9][a-z0-9-]*$/.test(t))throw new Error("Provider ID can only include lowercase letters, numbers, and hyphen.");return t}slugifyName(e){return this.sanitizeId(e)||"provider"}ensureProviderId(e,t){let n=e||this.slugifyName(t||"provider");if(this.config.providers||(this.config.providers={}),!this.config.providers[n])return n;let r=2,o=`${n}-${r}`;for(;this.config.providers[o];)r+=1,o=`${n}-${r}`;return o}persist(){Me(this.config);}getProviderCount(){return Object.keys(this.config.providers||{}).length}getProviders(){return Object.values(this.config.providers||{}).sort((e,t)=>e.name.localeCompare(t.name))}getProvider(e){if(e)return this.config.providers?.[e]}getDefaultProvider(){if(this.config.defaultProviderId){let t=this.getProvider(this.config.defaultProviderId);if(t)return t}let[e]=this.getProviders();return e&&(this.config.defaultProviderId=e.id,this.persist()),e}setDefaultProvider(e){let t=this.getProvider(e);if(!t)throw new Error(`Provider "${e}" does not exist.`);return this.config.defaultProviderId=e,this.persist(),t}addProvider(e){if(!e.name.trim())throw new Error("Provider name is required.");if(!e.apiKey.trim())throw new Error("Provider API key/token is required.");let t=this.ensureProviderId(e.id,e.name),n=new Date().toISOString(),r=e.baseUrl?.trim()||jh[e.protocol],o=(e.models||[]).map(a=>typeof a=="string"?{name:a,createdAt:n}:{...a,createdAt:a.createdAt||n}),i={id:t,name:e.name.trim(),protocol:e.protocol,apiKey:e.apiKey.trim(),baseUrl:r,urlSuffix:e.urlSuffix,maxTokens:e.maxTokens,maxInputTokens:e.maxInputTokens,models:o,defaultModel:e.defaultModel||o[0]?.name,lastSelectedModel:e.defaultModel||o[0]?.name,createdAt:n,updatedAt:n};if(!i.defaultModel)throw new Error("At least one model is required when creating a provider.");return this.config.providers||(this.config.providers={}),this.config.providers[t]=i,(!this.config.defaultProviderId||e.setAsDefault)&&(this.config.defaultProviderId=t),this.persist(),i}updateProvider(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);let r=new Date().toISOString(),o={...n,...t,baseUrl:t.baseUrl?.trim()||n.baseUrl||jh[n.protocol],urlSuffix:t.urlSuffix!==void 0?t.urlSuffix:n.urlSuffix,apiKey:t.apiKey?.trim()||n.apiKey,maxTokens:t.maxTokens!==void 0?t.maxTokens:n.maxTokens,maxInputTokens:t.maxInputTokens!==void 0?t.maxInputTokens:n.maxInputTokens,updatedAt:r};if(t.protocol&&t.protocol!==n.protocol&&(o.protocol=t.protocol,t.baseUrl||(o.baseUrl=jh[t.protocol])),t.defaultModel){if(!o.models.some(a=>a.name===t.defaultModel))throw new Error(`Model "${t.defaultModel}" does not exist for provider "${e}".`);o.defaultModel=t.defaultModel,o.lastSelectedModel=t.defaultModel;}return this.config.providers[e]=o,this.persist(),o}renameProvider(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);let r=this.ensureValidId(t);if(r===e)return n;if(this.config.providers?.[r])throw new Error(`Provider ID "${r}" already exists.`);delete this.config.providers[e];let o=new Date().toISOString(),i={...n,id:r,updatedAt:o};return this.config.providers[r]=i,this.config.defaultProviderId===e&&(this.config.defaultProviderId=r),this.persist(),i}deleteProvider(e){if(!this.config.providers?.[e])throw new Error(`Provider "${e}" does not exist.`);delete this.config.providers[e],this.config.defaultProviderId===e&&(this.config.defaultProviderId=void 0),this.persist();}addModel(e,t,n=false,r){let o=this.getProvider(e);if(!o)throw new Error(`Provider "${e}" does not exist.`);let i=t.trim();if(!i)throw new Error("Model name cannot be empty.");if(o.models.some(l=>l.name===i))throw new Error(`Model "${i}" already exists for provider "${e}".`);let a={...o,models:[...o.models,{name:i,createdAt:new Date().toISOString(),...r}],updatedAt:new Date().toISOString()};return (!o.defaultModel||n)&&(a.defaultModel=i,a.lastSelectedModel=i),this.config.providers[e]=a,this.persist(),a}removeModel(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);if(n.models.length<=1)throw new Error("A provider must have at least one model.");let r=n.models.filter(i=>i.name!==t);if(r.length===n.models.length)throw new Error(`Model "${t}" does not exist for provider "${e}".`);let o={...n,models:r,updatedAt:new Date().toISOString()};return n.defaultModel===t&&(o.defaultModel=r[0].name),n.lastSelectedModel===t&&(o.lastSelectedModel=o.defaultModel),this.config.providers[e]=o,this.persist(),o}updateModelConfig(e,t,n){let r=this.getProvider(e);if(!r)throw new Error(`Provider "${e}" does not exist.`);let o=r.models.findIndex(l=>l.name===t);if(o===-1)throw new Error(`Model "${t}" does not exist for provider "${e}".`);let i=[...r.models];i[o]={...i[o],...n};let a={...r,models:i,updatedAt:new Date().toISOString()};return this.config.providers[e]=a,this.persist(),a}setLastSelectedModel(e,t){let n=this.getProvider(e);if(!n)throw new Error(`Provider "${e}" does not exist.`);if(!n.models.some(o=>o.name===t))throw new Error(`Model "${t}" does not exist for provider "${e}".`);return n.lastSelectedModel=t,n.updatedAt=new Date().toISOString(),this.config.providers[e]=n,this.persist(),n}resolveModel(e,t){let n=this.getProvider(e);if(n)return t&&n.models.some(o=>o.name===t)?t:n.lastSelectedModel||n.defaultModel||n.models[0]?.name}};});var Gh,ui,Dt,Vs=R(()=>{wt();cr();cs();Gh={"claude-opus-4-5-20250514":["reasoning","creative","thorough","\u6DF1\u5EA6\u601D\u8003","\u590D\u6742\u63A8\u7406"],"claude-sonnet-4-5-20250514":["coding","fast","accurate","\u4EE3\u7801","\u5FEB\u901F"],"claude-haiku-4-5-20250514":["fast","cheap","simple","\u8F7B\u91CF","\u4F4E\u6210\u672C"],"claude-opus-4-20250514":["reasoning","creative","thorough","\u6DF1\u5EA6\u601D\u8003"],"claude-sonnet-4-20250514":["coding","fast","accurate","\u4EE3\u7801"],"gpt-5.2":["reasoning","coding","thorough","\u6DF1\u5EA6\u63A8\u7406","\u5168\u80FD"],"gpt-5.2-mini":["reasoning","fast","balanced","\u63A8\u7406","\u5FEB\u901F"],"gpt-5.2-codex":["coding","agent","autonomous","\u4EE3\u7801\u4E13\u5BB6","\u81EA\u4E3B\u7F16\u7A0B"],"gpt-5.2-codex-high":["coding","agent","thorough","\u4EE3\u7801","\u6DF1\u5EA6\u7F16\u7A0B","\u6700\u5F3A"],"gpt-5.2-codex-medium":["coding","agent","balanced","\u4EE3\u7801","\u6027\u4EF7\u6BD4"],"gpt-5.1":["reasoning","coding","balanced","\u903B\u8F91\u7F1C\u5BC6","\u901A\u7528"],"gpt-5.1-mini":["fast","cheap","coding","\u5FEB\u901F","\u4F4E\u6210\u672C"],"gpt-5.1-codex":["coding","agent","autonomous","\u4EE3\u7801","\u7F16\u7A0B"],"gpt-5.1-codex-max":["coding","agent","thorough","\u4EE3\u7801","\u6DF1\u5EA6\u7F16\u7A0B"],o3:["reasoning","math","science","\u6DF1\u5EA6\u63A8\u7406","\u6570\u5B66"],"o4-mini":["reasoning","fast","coding","\u63A8\u7406","\u5FEB\u901F"],"gemini-3-pro-preview":["ui","design","vision","creative","UI\u8BBE\u8BA1","\u754C\u9762","\u89C6\u89C9"],"gemini-3.0-pro":["ui","design","vision","creative","UI\u8BBE\u8BA1","\u754C\u9762"],"gemini-3.0-flash":["ui","fast","vision","UI","\u5FEB\u901F"],"gemini-2.5-pro":["reasoning","long-context","vision","\u63A8\u7406","\u957F\u4E0A\u4E0B\u6587"],"gemini-2.5-flash":["fast","vision","multimodal","\u5FEB\u901F","\u591A\u6A21\u6001"],"deepseek-v3":["coding","reasoning","cheap","\u4EE3\u7801","\u6027\u4EF7\u6BD4"],"deepseek-r1":["reasoning","math","thinking","\u6DF1\u5EA6\u63A8\u7406","\u6570\u5B66"],"qwen-max":["chinese","reasoning","coding","\u4E2D\u6587","\u63A8\u7406"],"qwen-turbo":["chinese","fast","cheap","\u4E2D\u6587","\u5FEB\u901F"]},ui=6,Dt=class{providerStore;scope;constructor(e,t="assistant"){this.providerStore=e??new nt,this.scope=t;}readLegacyScopedConfig(e){if(this.scope==="assistant"){let t=e.assistant;return {...t??{},workerPool:t?.workerPool??[]}}return {workerPool:[]}}readScopedRunModeConfig(e){return e.runConfig?.modes?.[this.scope]}getConfig(){let e=He(),t=this.readScopedRunModeConfig(e);return t?{mainAgent:t.mainAgent,workerPool:t.workerPool??[],maxConcurrent:t.maxConcurrent,ccbReviewMode:t.ccbReviewMode,createdAt:t.createdAt,updatedAt:t.updatedAt}:this.readLegacyScopedConfig(e)}saveConfig(e){let t=He(),n=new Date().toISOString(),r=t.runConfig?.modes?.[this.scope]??{},o={...r,mainAgent:e.mainAgent,workerPool:e.workerPool??[],maxConcurrent:e.maxConcurrent,ccbReviewMode:e.ccbReviewMode,updatedAt:n,createdAt:r.createdAt||n};t.runConfig={...t.runConfig??{},modes:{...t.runConfig?.modes??{},[this.scope]:o}},this.scope==="assistant"&&(t.assistant={...e,updatedAt:n,createdAt:t.assistant?.createdAt||n}),Me(t);}getNetworkRoles(){let e=He(),t=e.runConfig?.modes?.network?.networkRoles;if(Array.isArray(t))return t;let n=e.assistant?.networkRoles;return Array.isArray(n)?n:[]}setNetworkRoles(e){let t=He(),n=new Date().toISOString(),r=t.runConfig?.modes?.network??{};t.runConfig={...t.runConfig??{},modes:{...t.runConfig?.modes??{},network:{...r,networkRoles:e,updatedAt:n,createdAt:r.createdAt||n}}},Me(t);}getMainAgent(){let e=this.getConfig();if(e.mainAgent)return e.mainAgent;let t=this.providerStore.getDefaultProvider();if(t)return {providerId:t.id,model:t.lastSelectedModel||t.defaultModel||t.models[0]?.name}}setMainAgent(e){let t=this.getConfig();t.mainAgent=e,this.saveConfig(t);}getSupervisorAgent(){return this.getConfig().supervisorAgent}setSupervisorAgent(e){let t=this.getConfig();t.supervisorAgent=e,this.saveConfig(t);}getWorkerPool(){return this.getConfig().workerPool||[]}getMaxConcurrent(){let e=this.getConfig();return typeof e.maxConcurrent=="number"&&Number.isFinite(e.maxConcurrent)?e.maxConcurrent:void 0}setMaxConcurrent(e){let t=this.getConfig();typeof e=="number"&&Number.isFinite(e)&&e>0?t.maxConcurrent=Math.floor(e):delete t.maxConcurrent,this.saveConfig(t);}getCCBReviewMode(){let t=this.getConfig().ccbReviewMode;return t==="single"?"single-role":t==="multi"?"multi-model":t??"multi-role"}setCCBReviewMode(e){let t=this.getConfig();t.ccbReviewMode=e,this.saveConfig(t);}setWorkerPool(e){let t=this.getConfig();t.workerPool=e,this.saveConfig(t);}addWorkerModel(e,t,n=true){let r=this.getWorkerPool();if(r.some(a=>a.providerId===e&&a.model===t))return;let i=this.getModelTraits(t);r.push({providerId:e,model:t,enabled:n,traits:i}),this.setWorkerPool(r);}removeWorkerModel(e,t){let r=this.getWorkerPool().filter(o=>!(o.providerId===e&&o.model===t));this.setWorkerPool(r);}toggleWorkerModel(e,t){let n=this.getWorkerPool(),r=n.find(o=>o.providerId===e&&o.model===t);r&&(r.enabled=!r.enabled,this.setWorkerPool(n));}getEnabledWorkerModels(){return this.getWorkerPool().filter(e=>e.enabled)}getAvailableModels(){let e=this.providerStore.getProviders(),t=[];for(let n of e)for(let r of n.models){let o=this.getModelTraits(r.name);t.push({providerId:n.id,providerName:n.name,model:r.name,traits:o});}return t}selectWorkerByTraits(e){let t=this.getEnabledWorkerModels();if(t.length===0)return;let n=t.map(r=>{let o=r.traits||[],i=e.filter(a=>o.includes(a)).length;return {entry:r,score:i}});return n.sort((r,o)=>o.score-r.score),n[0]?.entry}getModelTraits(e){if(Gh[e])return [...Gh[e]];let t=e.toLowerCase();for(let[i,a]of Object.entries(Gh))if(t.includes(i.toLowerCase())||i.toLowerCase().includes(t))return [...a];let n=on.getModel(e);if(!n)return [];let r=[],o=n.scores||{};return (o.coding??0)>=85&&r.push("coding"),(o.reasoning??0)>=85&&r.push("reasoning"),(o.vision??0)>=80&&r.push("vision"),(o.creativity??0)>=85&&r.push("creative"),(o.speed??0)>=85&&r.push("fast"),(o.cost??0)>=85&&r.push("low-cost"),n.supportsThinking&&r.push("thinking"),n.supportsVision&&r.push("multimodal"),n.maxInputTokens>=5e5&&r.push("long-context"),r}updateWorkerTraits(e,t,n){let r=this.getWorkerPool(),o=r.find(i=>i.providerId===e&&i.model===t);o&&(o.traits=n,this.setWorkerPool(r));}addWorkerTraits(e,t,n){let r=this.getWorkerPool(),o=r.find(i=>i.providerId===e&&i.model===t);if(o){let i=o.traits||[],a=[...new Set([...i,...n])];o.traits=a,this.setWorkerPool(r);}}initializeDefaults(){if(this.getConfig().workerPool.length>0)return;let t=this.providerStore.getDefaultProvider();if(!t)return;let n=t.models.map((r,o)=>({providerId:t.id,model:r.name,enabled:o===0,traits:this.getModelTraits(r.name)}));this.setWorkerPool(n);}};});var Lu,Wx=R(()=>{te();Lu=class{hosts=new Map;hostConfigs=new Map;workspacePath=null;setWorkspace(e){this.workspacePath=e;for(let t of this.hosts.values())try{t.setWorkDir(e);}catch{}}getWorkspace(){return this.workspacePath}getHost(e){return this.hosts.get(e)}hasHost(e){return this.hosts.has(e)}getHostConfig(e){return this.hostConfigs.get(e)}clearHost(e){this.hosts.delete(e),this.hostConfigs.delete(e);}clearAll(){for(let e of this.hosts.values())try{e.interrupt();}catch{}this.hosts.clear(),this.hostConfigs.clear();}forEachHost(e){for(let[t,n]of this.hosts.entries())e(n,t);}async getOrCreateHost(e){let{sessionId:t,configKey:n,createHost:r}=e,o=this.hosts.get(t);if(o){let a=this.hostConfigs.get(t);if(a===n)return p.info("HOST_CONTROLLER",`\u{1F504} Reusing existing host for session=${t}, configKey=${n}`),o;p.info("HOST_CONTROLLER",`\u{1F5D1}\uFE0F Clearing old host: session=${t}, oldKey=${a}, newKey=${n}`),this.clearHost(t);}p.info("HOST_CONTROLLER",`\u2728 Creating NEW host: session=${t}, configKey=${n}`);let i=await r();return this.hosts.set(t,i),this.hostConfigs.set(t,n),this.workspacePath&&i.setWorkDir(this.workspacePath),i}};});var Ys,Nu=R(()=>{_s();Ys=class s{sessionId;filePath;directory;options;sequenceNumber=0;initialized=false;constructor(e){typeof e=="string"&&(e={sessionId:e}),this.sessionId=e.sessionId,this.options=e,this.directory=e.directory||Ie__default.join(ho__default.homedir(),".neox","sessions"),this.filePath=Ie__default.join(this.directory,`${this.sessionId}.jsonl`);}async ensureDirectory(){await Le__default.mkdir(this.directory,{recursive:true});}async ensureInitialized(){if(!this.initialized){await this.ensureDirectory();try{await Le__default.access(this.filePath);let e=await this.readAllItems();e.length>0&&(this.sequenceNumber=Math.max(...e.map(t=>t.seq))+1);}catch{if(this.options.autoCreateMeta!==false){let e={sessionId:this.sessionId,createdAt:new Date().toISOString(),agentName:this.options.agentName,model:this.options.model};await this.appendItem({type:"meta",data:e});}}this.initialized=true;}}async readAllItems(){let e=[];try{let t=Ct__default.createReadStream(this.filePath,{encoding:"utf-8"}),n=zh__default.createInterface({input:t,crlfDelay:1/0});for await(let r of n)if(r.trim())try{let o=JSON.parse(r);e.push(o);}catch{console.warn(`Invalid JSONL line: ${r.slice(0,50)}...`);}}catch(t){if(t.code!=="ENOENT")throw t}return e.sort((t,n)=>t.seq-n.seq),e}async appendItem(e){await this.ensureDirectory();let t={item:e,timestamp:Date.now(),seq:this.sequenceNumber++},n=JSON.stringify(t)+`
|
|
1546
1546
|
`;await Le__default.appendFile(this.filePath,n,"utf-8");}async writeAllItems(e){await this.ensureDirectory();let t=e.map(n=>JSON.stringify(n)).join(`
|
|
1547
1547
|
`);await Le__default.writeFile(this.filePath,t?t+`
|
|
1548
1548
|
`:"","utf-8"),e.length>0?this.sequenceNumber=Math.max(...e.map(n=>n.seq))+1:this.sequenceNumber=0;}async getItems(e){await this.ensureInitialized();let n=(await this.readAllItems()).map(r=>r.item);return e===void 0?n:n.slice(-e)}async addItems(e){if(e.length!==0){await this.ensureInitialized();for(let t of e)await this.appendItem(t);}}async popItem(){await this.ensureInitialized();let e=await this.readAllItems();if(e.length===0)return null;let t=e.pop();return await this.writeAllItems(e),t.item}async popItems(e){if(e<=0)return [];await this.ensureInitialized();let t=await this.readAllItems();if(t.length===0)return [];let n=Math.min(e,t.length),r=t.splice(-n);return await this.writeAllItems(t),r.map(o=>o.item)}async createCheckpoint(e,t){await this.ensureInitialized();let n=`cp_${Date.now()}_${Math.random().toString(36).slice(2,6)}`,r={type:"checkpoint",data:{id:n,name:e,description:t}};return await this.appendItem(r),n}async rollbackToCheckpoint(e){await this.ensureInitialized();let t=await this.readAllItems(),n=t.findIndex(i=>i.item.type==="checkpoint"&&i.item.data.id===e);if(n===-1)throw new Error(`Checkpoint not found: ${e}`);let r=t.slice(0,n+1),o=t.length-r.length;return await this.writeAllItems(r),o}async getCheckpoints(){await this.ensureInitialized();let e=await this.readAllItems(),t=[];for(let n of e)if(n.item.type==="checkpoint"){let r=n.item;t.push({id:r.data.id,name:r.data.name,timestamp:n.timestamp});}return t}async clearSession(){try{await Le__default.unlink(this.filePath);}catch(e){if(e.code!=="ENOENT")throw e}this.sequenceNumber=0,this.initialized=false;}async getMeta(){await this.ensureInitialized();let e=await this.readAllItems();for(let t of e)if(t.item.type==="meta")return t.item.data;return null}async getMessages(){await this.ensureInitialized();let e=await this.readAllItems(),t=[];for(let n of e)n.item.type==="message"&&t.push(n.item.data);return t}async getItemCount(){return (await this.readAllItems()).length}async getTimeline(){return await this.ensureInitialized(),await this.readAllItems()}async replaceTimeline(e){await this.ensureDirectory();let t=e.map((n,r)=>({item:n.item,timestamp:n.timestamp??Date.now(),seq:r}));await this.writeAllItems(t),this.initialized=true;}static async listSessions(e){let t=e||Ie__default.join(ho__default.homedir(),".neox","sessions");try{return (await Le__default.readdir(t)).filter(r=>r.endsWith(".jsonl")).map(r=>r.replace(".jsonl",""))}catch{return []}}static async getMostRecentId(e){let t=e||Ie__default.join(ho__default.homedir(),".neox","sessions");try{let r=(await Le__default.readdir(t)).filter(i=>i.endsWith(".jsonl"));if(r.length===0)return null;let o=await Promise.all(r.map(async i=>({name:i.replace(".jsonl",""),mtime:(await Le__default.stat(Ie__default.join(t,i))).mtime})));return o.sort((i,a)=>a.mtime.getTime()-i.mtime.getTime()),o[0].name}catch{return null}}static async deleteSession(e,t){let n=t||Ie__default.join(ho__default.homedir(),".neox","sessions"),r=Ie__default.join(n,`${e}.jsonl`);try{return await Le__default.unlink(r),!0}catch{return false}}static async getSessionInfo(e,t){let n=t||Ie__default.join(ho__default.homedir(),".neox","sessions"),r=Ie__default.join(n,`${e}.jsonl`);try{let o=await Le__default.stat(r);return {sessionId:e,filePath:r,size:o.size,createdAt:o.birthtime,updatedAt:o.mtime}}catch{return null}}static create(e){return new s({sessionId:Co(),...e})}};});var Wh=R(()=>{_s();});function za(s){if(!s)return 0;let e=0;for(let t of s){let n=t.codePointAt(0)||0;n>=19968&&n<=40959||n>=12288&&n<=12351||n>=65280&&n<=65519||n>=44032&&n<=55215?e+=.67:e+=.25;}return Math.ceil(e)}var _n,Xs=R(()=>{Nc();pg();te();_n=class{messages=[];maxMessages;constructor(e=500){this.maxMessages=e;}add(e){let t=typeof e.content=="string"?e.content:JSON.stringify(e.content),n=za(t),r={...e,_timestamp:Date.now(),_estimatedTokens:n};if(this.messages.push(r),e.role==="assistant"&&e.tool_calls&&e.tool_calls.length>0&&process.env.CLI_DEBUG==="1"&&p.debug("MEMORY","Assistant message with tool_calls added:",{toolCallCount:e.tool_calls.length,toolCallIds:e.tool_calls.map(o=>({id:o.id,name:o.function.name}))}),this.messages.length>this.maxMessages){let o=this.messages.filter(l=>l.role==="system"),a=this.messages.filter(l=>l.role!=="system").slice(-(this.maxMessages-o.length));this.messages=[...o,...a];}}addToolResult(e,t,n){let r=dg(t),o=null;try{let c=JSON.parse(n);c.type&&c.status&&c.summary&&(o=c);}catch{}let i,a=r;p.info("MEMORY","addToolResult: parsedResult\uFF1A"+o),p.info("MEMORY","addToolResult: effectiveResultType\uFF1A"+a),o?(a=o.type||r,i=lw(o),p.info("MEMORY","\u7CBE\u7B80\u7ED3\u679C: content \uFF1A"+i),p.info("MEMORY",`addToolResult: ${t} parsed as ToolResult`,{parsedResult:JSON.stringify(o).substring(0,500),contentAfter:i.substring(0,500),rawLength:n.length,contentLength:i.length})):(i=n,p.debug("MEMORY",`addToolResult: ${t} using raw output`,{rawOutput:n.substring(0,500),rawLength:n.length}));let l={role:"tool",tool_call_id:e,name:t,content:i,_resultType:a,_toolName:t,_timestamp:Date.now(),_estimatedTokens:za(i)};if(process.env.CLI_DEBUG==="1"&&p.debug("MEMORY","Tool result message added:",{toolName:t,toolCallId:e,contentLength:i.length,contentPreview:i.substring(0,200)}),this.messages.push(l),this.messages.length>this.maxMessages){let c=this.messages.filter(m=>m.role==="system"),d=this.messages.filter(m=>m.role!=="system").slice(-(this.maxMessages-c.length));this.messages=[...c,...d];}}stripMetadata(e){let{_resultType:t,_toolName:n,_timestamp:r,_estimatedTokens:o,_tag:i,...a}=e;return a}getAll(){return this.messages.map(e=>this.stripMetadata(e))}getRawMessages(){return this.messages}getMessagesForLLM(){let e=this.messages.map(t=>this.stripMetadata(t));if(process.env.CLI_DEBUG==="1"){let t=e.filter(o=>o.role==="assistant"),n=e.filter(o=>o.role==="tool");p.debug("MEMORY","Messages for LLM:",{totalMessages:e.length,assistantCount:t.length,toolCount:n.length,messageSequence:e.map(o=>o.role).join(" -> ")}),e.slice(-5).forEach((o,i)=>{o.role==="assistant"&&o.tool_calls?p.debug("MEMORY",`Message ${e.length-5+i} (assistant):`,{toolCalls:o.tool_calls.map(a=>({id:a.id,name:a.function.name}))}):o.role==="tool"&&p.debug("MEMORY",`Message ${e.length-5+i} (tool):`,{name:o.name,tool_call_id:o.tool_call_id,contentLength:typeof o.content=="string"?o.content.length:0});});}return e}hasConversationMessages(){return this.messages.some(e=>e.role==="user"||e.role==="assistant")}upsertSystemTagged(e,t){let n=t.trim();if(!n){this.removeSystemTagged(e);return}let r=this.messages.findIndex(a=>a.role==="system"&&a._tag===e);if(r>=0){let a=this.messages[r];if(a.content===n)return;this.messages[r]={...a,content:n,_timestamp:Date.now(),_estimatedTokens:za(n)};return}let o={role:"system",content:n,_tag:e,_timestamp:Date.now(),_estimatedTokens:za(n)},i=this.getSystemInsertIndex();this.messages=[...this.messages.slice(0,i),o,...this.messages.slice(i)];}removeSystemTagged(e){let t=this.messages.length;this.messages=this.messages.filter(n=>!(n.role==="system"&&n._tag===e)),t!==this.messages.length&&process.env.CLI_DEBUG==="1"&&p.debug("MEMORY",`Removed system tag: ${e}`);}getSystemInsertIndex(){let e=0;for(;e<this.messages.length&&this.messages[e].role==="system";)e+=1;return e}cleanupEphemeral(){let e=this.messages.length,t=new Set;for(let n of this.messages)if(n.role==="assistant"&&n.tool_calls)for(let r of n.tool_calls)r.id&&t.add(r.id);return this.messages=this.messages.filter(n=>n._resultType!=="ephemeral"||n.role!=="tool"||!n.tool_call_id?true:t.has(n.tool_call_id)),e-this.messages.length}getStats(){let e={total:this.messages.length,ephemeral:0,contextual:0,summarized:0,other:0};for(let t of this.messages)t._resultType==="ephemeral"?e.ephemeral++:t._resultType==="contextual"?e.contextual++:t._resultType==="summarized"?e.summarized++:e.other++;return e}checkContextHealth(){let e={ephemeral:{count:0,tokens:0},contextual:{count:0,tokens:0},summarized:{count:0,tokens:0},other:{count:0,tokens:0}},t=0,n=0,r=0;for(let a of this.messages){let l=a._estimatedTokens||za(typeof a.content=="string"?a.content:JSON.stringify(a.content));t+=l,a.role==="tool"?(r++,n+=l,a._resultType==="ephemeral"?(e.ephemeral.count++,e.ephemeral.tokens+=l):a._resultType==="contextual"?(e.contextual.count++,e.contextual.tokens+=l):a._resultType==="summarized"?(e.summarized.count++,e.summarized.tokens+=l):(e.other.count++,e.other.tokens+=l)):(e.other.count++,e.other.tokens+=l);}let o=t>0?n/t:0,i=[];return o>.5?i.push(`Tool results\u5360\u7528 ${(o*100).toFixed(1)}% \u7684\u4E0A\u4E0B\u6587\uFF08\u8D85\u8FC750%\u8B66\u6212\u7EBF\uFF09`):o>.4&&i.push(`Tool results\u5360\u7528 ${(o*100).toFixed(1)}% \u7684\u4E0A\u4E0B\u6587\uFF08\u63A5\u8FD1\u8B66\u6212\u7EBF\uFF09`),t>18e4?i.push(`\u4E0A\u4E0B\u6587\u5DF2\u8FBE ${t} tokens\uFF08\u8D85\u8FC7180k\uFF0C\u5EFA\u8BAE\u6E05\u7406\uFF09`):t>15e4&&i.push(`\u4E0A\u4E0B\u6587\u5DF2\u8FBE ${t} tokens\uFF08\u63A5\u8FD1180k\uFF09`),r>100?i.push(`\u5DE5\u5177\u8C03\u7528\u5386\u53F2\u8FC7\u957F\uFF08${r} \u6761\uFF09`):r>60&&i.push(`\u5DE5\u5177\u8C03\u7528\u5386\u53F2\u8F83\u957F\uFF08${r} \u6761\uFF09`),e.ephemeral.count>10&&i.push(`\u79EF\u7D2F\u4E86 ${e.ephemeral.count} \u6761 ephemeral \u6D88\u606F\uFF0C\u5EFA\u8BAE\u6E05\u7406`),{totalTokens:t,toolResultTokens:n,toolResultRatio:o,messageCount:this.messages.length,toolMessageCount:r,warnings:i,shouldCompress:o>.3||t>12e4,shouldCleanup:t>15e4||e.ephemeral.count>5,byType:e}}getTokenSummary(){let e=this.checkContextHealth(),t=[`Total: ${e.totalTokens} tokens`,`Tool: ${e.toolResultTokens} (${(e.toolResultRatio*100).toFixed(1)}%)`,`Messages: ${e.messageCount}`];return e.byType.ephemeral.count>0&&t.push(`Ephemeral: ${e.byType.ephemeral.count}`),t.join(" | ")}getMemoryFootprint(){let e=JSON.stringify(this.messages),t=new Blob([e]).size,n=Math.round(t/1024*10)/10,r=this.messages.length*150,o=t+r,i=Math.round(o/1024*10)/10;return {totalKB:i,messagesKB:n,messageCount:this.messages.length,averageKBPerMessage:this.messages.length>0?Math.round(i/this.messages.length*10)/10:0}}logMemoryStats(){let e=this.checkContextHealth(),t=this.getMemoryFootprint();p.info("MEMORY_STATS","ShortTermMemory snapshot",{memoryTotalKB:t.totalKB,memoryMessagesKB:t.messagesKB,avgKBPerMessage:t.averageKBPerMessage,totalTokens:e.totalTokens,toolResultTokens:e.toolResultTokens,toolResultRatio:`${(e.toolResultRatio*100).toFixed(1)}%`,messageCount:e.messageCount,toolMessageCount:e.toolMessageCount,maxMessages:this.maxMessages,byType:{ephemeral:`${e.byType.ephemeral.count} msgs, ${e.byType.ephemeral.tokens} tokens`,contextual:`${e.byType.contextual.count} msgs, ${e.byType.contextual.tokens} tokens`,summarized:`${e.byType.summarized.count} msgs, ${e.byType.summarized.tokens} tokens`,other:`${e.byType.other.count} msgs, ${e.byType.other.tokens} tokens`},warnings:e.warnings.length>0?e.warnings:["None"],shouldCompress:e.shouldCompress,shouldCleanup:e.shouldCleanup});}clear(){let e=this.messages.filter(t=>t.role==="system");this.messages=e;}setMessages(e){let t=Array.isArray(e)?e:[],n=t.filter(a=>a.role==="system"),r=t.filter(a=>a.role!=="system"),o=Math.max(0,this.maxMessages-n.length),i=o>0?r.slice(-o):[];this.messages=[...n,...i].map(a=>({...a,_timestamp:Date.now()}));}get length(){return this.messages.length}};});var dr,qh=R(()=>{Nu();_s();dr=class{directory;options;sessionCache=new Map;constructor(e){this.options=e||{},this.directory=e?.directory||Ie__default.join(ho__default.homedir(),".neox","sessions");}async getSession(e){if(this.sessionCache.has(e))return this.sessionCache.get(e);let t=new Ys({sessionId:e,directory:this.directory,agentName:this.options.defaultAgentName,model:this.options.defaultModel});return this.sessionCache.set(e,t),t}async listSessions(){let e=[];try{await Le__default.mkdir(this.directory,{recursive:!0});let t=await Le__default.readdir(this.directory);for(let n of t){if(!n.endsWith(".jsonl"))continue;let r=n.replace(".jsonl",""),o=Ie__default.join(this.directory,n);try{let i=await Le__default.stat(o),a=await this.readSessionMeta(o),l=await this.countItems(o);e.push({sessionId:r,createdAt:i.birthtime,updatedAt:i.mtime,itemCount:l,agentName:a?.agentName});}catch{}}}catch(t){if(t.code!=="ENOENT")throw t}return e.sort((t,n)=>n.updatedAt.getTime()-t.updatedAt.getTime()),e}async getMostRecent(){let e=await this.listSessions();return e.length===0?null:this.getSession(e[0].sessionId)}async deleteSession(e){this.sessionCache.delete(e);let t=Ie__default.join(this.directory,`${e}.jsonl`);try{return await Le__default.unlink(t),!0}catch{return false}}async searchSessions(e){let t=await this.listSessions(),n=e.toLowerCase(),r=[];for(let o of t){if(o.sessionId.toLowerCase().includes(n)){r.push(o);continue}if(o.agentName?.toLowerCase().includes(n)){r.push(o);continue}let i=Ie__default.join(this.directory,`${o.sessionId}.jsonl`);await this.searchInFile(i,n)&&r.push(o);}return r}async createSession(e){let t=e?.sessionId||Co(),n=new Ys({sessionId:t,directory:this.directory,agentName:e?.agentName||this.options.defaultAgentName,model:e?.model||this.options.defaultModel});return this.sessionCache.set(t,n),n}async getOrCreateSession(e){return e?this.getSession(e):this.createSession()}async continueOrCreate(){let e=await this.getMostRecent();return e||this.createSession()}async cleanupOldSessions(e=30){let t=await this.listSessions(),n=Date.now()-e*24*60*60*1e3,r=0;for(let o of t)o.updatedAt.getTime()<n&&await this.deleteSession(o.sessionId)&&r++;return r}getDirectory(){return this.directory}async getSessionCount(){return (await this.listSessions()).length}async exportSession(e){let t=await this.getSession(e),n=await t.getItems(),r=await t.getMeta();return JSON.stringify({sessionId:e,meta:r,items:n,exportedAt:new Date().toISOString()},null,2)}async readSessionMeta(e){try{let t=createReadStream(e,{encoding:"utf-8"}),n=zh__default.createInterface({input:t,crlfDelay:1/0});for await(let r of n)if(r.trim())try{let o=JSON.parse(r);if(o.item?.type==="meta")return n.close(),o.item.data}catch{}}catch{}return null}async countItems(e){let t=0;try{let n=createReadStream(e,{encoding:"utf-8"}),r=zh__default.createInterface({input:n,crlfDelay:1/0});for await(let o of r)o.trim()&&t++;}catch{}return t}async searchInFile(e,t){try{let n=createReadStream(e,{encoding:"utf-8"}),r=zh__default.createInterface({input:n,crlfDelay:1/0});for await(let o of r)if(o.toLowerCase().includes(t))return r.close(),!0}catch{}return false}};});var qx=R(()=>{Zn();_s();});var Bu=R(()=>{_s();Nu();Wh();Xs();qh();qx();Nu();Wh();qh();});var uO,Kx,Jx,Vx=R(()=>{nm();lm();te();uO={name:"require_read_before_edit",guardrail_function:async s=>{let{tool_name:e,tool_input:t}=s.tool_context;if(e!=="edit_file")return Yl();let n=t.file_path;if(!n)return Yl();let r=l=>Ie__default.resolve(l).replace(/\\/g,"/"),o=r(n),i=Dv(s.context,20);return process.env.CLI_DEBUG==="1"&&(p.debug("GUARDRAIL",`Checking edit for: ${n}`),p.debug("GUARDRAIL",`Normalized path: ${o}`),p.debug("GUARDRAIL",`Recent tool calls (${i.length}):`),i.forEach((l,c)=>{if(l.name==="readfile"){let u=l.args.path,d=u?r(u):"undefined";p.debug("GUARDRAIL",` [${c}] readfile: ${u} (normalized: ${d}) success=${l.success}`);}})),i.some(l=>{if(l.name!=="readfile"||!l.success)return false;let c=l.args.path;if(!c)return false;let d=r(c)===o||c===n;return process.env.CLI_DEBUG==="1"&&d&&p.debug("GUARDRAIL",` \u2713 Found matching readfile: ${c}`),d})?Yl():(p.warn("GUARDRAIL",`Edit without recent readfile: ${n} (abs: ${o})`),process.env.CLI_DEBUG==="1"&&p.debug("GUARDRAIL",`Available readfile calls: ${i.filter(l=>l.name==="readfile").length}`),vv(`\u26A0\uFE0F \u7F16\u8F91\u524D\u8BF7\u5148\u8BFB\u53D6\u6587\u4EF6
|
|
@@ -1552,9 +1552,9 @@ ${i.output}
|
|
|
1552
1552
|
\u{1F4A1} \u8BF7\u5148\u4F7F\u7528 readfile \u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9\uFF0C\u786E\u8BA4\u5F53\u524D\u72B6\u6001\u540E\u518D\u8FDB\u884C\u7F16\u8F91\u3002
|
|
1553
1553
|
\u8FD9\u53EF\u4EE5\u907F\u514D\u57FA\u4E8E\u8FC7\u65F6\u4FE1\u606F\u8FDB\u884C\u7F16\u8F91\u3002`,{file_path:n,suggestion:"use readfile first"}))}},Kx=[uO],Jx=[];});var pr,Ha=R(()=>{pr=class{prepareRequest(e,t){let{model:n,temperature:r,maxInputTokens:o,disableSystemPrompt:i,systemPromptOverride:a,...l}=t,c=this.constraints.validateParams({model:n,temperature:r,max_tokens:o,...l}),u=this.constraints.normalizeParams({model:n,temperature:r,max_tokens:o,...l}),d=i?null:a&&a.trim().length>0?a:this.promptBuilder.buildSystemPrompt({workDir:process.cwd(),language:this.detectLanguage(),modelName:n}),m=i||!d?e:this.injectSystemPrompt(e,d),g={...u,model:n,maxInputTokens:this.applyTokenLimits(n,o)};return {messages:m,options:g,validation:{valid:c.valid,errors:c.errors,warnings:c.warnings}}}injectSystemPrompt(e,t){if(e.some(r=>r.role==="system")){let r=e.filter(a=>a.role==="system").map(a=>this.normalizeSystemContent(a.content)).filter(a=>a.length>0),o=r.length>0?[t,...r].join(`
|
|
1554
1554
|
|
|
1555
|
-
`):t,i=e.filter(a=>a.role!=="system");return [{role:"system",content:o},...i]}return [{role:"system",content:t},...e]}normalizeSystemContent(e){return e?typeof e=="string"?e.trim():Array.isArray(e)?e.map(n=>!n||typeof n!="object"?"":n.type==="text"&&typeof n.text=="string"?n.text:"").join("").trim():String(e).trim():""}applyTokenLimits(e,t){if(!e)return t;let n=this.constraints.getTokenLimits(e);return Math.min(t||4096,n.maxOutput)}detectLanguage(){return process.env.NEOX_LANGUAGE==="en"?"en":"zh"}};});function Yt(s,e){return t=>{let n=Number(t);return isNaN(n)?"Must be a number":n<s||n>e?`Must be between ${s} and ${e}`:true}}function di(s){return e=>s.includes(e)?true:`Must be one of: ${s.join(", ")}`}function Yx(s){return e=>{let t=typeof e;return t!==s?`Expected ${s}, got ${t}`:true}}function Fu(...s){return (e,t)=>{for(let n of s){let r=n(e,t);if(r!==true)return r}return true}}var
|
|
1555
|
+
`):t,i=e.filter(a=>a.role!=="system");return [{role:"system",content:o},...i]}return [{role:"system",content:t},...e]}normalizeSystemContent(e){return e?typeof e=="string"?e.trim():Array.isArray(e)?e.map(n=>!n||typeof n!="object"?"":n.type==="text"&&typeof n.text=="string"?n.text:"").join("").trim():String(e).trim():""}applyTokenLimits(e,t){if(!e)return t;let n=this.constraints.getTokenLimits(e);return Math.min(t||4096,n.maxOutput)}detectLanguage(){return process.env.NEOX_LANGUAGE==="en"?"en":"zh"}};});function Yt(s,e){return t=>{let n=Number(t);return isNaN(n)?"Must be a number":n<s||n>e?`Must be between ${s} and ${e}`:true}}function di(s){return e=>s.includes(e)?true:`Must be one of: ${s.join(", ")}`}function Yx(s){return e=>{let t=typeof e;return t!==s?`Expected ${s}, got ${t}`:true}}function Fu(...s){return (e,t)=>{for(let n of s){let r=n(e,t);if(r!==true)return r}return true}}var us,qa=R(()=>{cs();us=class{validateParams(e){let t=this.getConstraints(),n=[],r=[];for(let o of Object.keys(e))t.supportedParams.has(o)||r.push(`Parameter '${o}' is not supported by this provider and will be ignored`);if(t.validators){for(let[o,i]of Object.entries(t.validators))if(e[o]!==void 0){let a=i(e[o],e);a===false?n.push(`Invalid value for parameter '${o}': ${e[o]}`):typeof a=="string"&&n.push(`Parameter '${o}': ${a}`);}}if(e.model&&e.max_tokens!==void 0){let o=this.getTokenLimits(e.model);o.found&&e.max_tokens>o.maxInput?n.push(`max_tokens (${e.max_tokens}) exceeds model context window (${o.maxInput}) for ${e.model}`):o.found&&e.max_tokens>o.maxOutput&&r.push(`max_tokens (${e.max_tokens}) exceeds recommended output limit (${o.maxOutput}) for ${e.model}, but is within context window`);}return {valid:n.length===0,errors:n,warnings:r.length>0?r:void 0}}getTokenLimits(e){let t=on.getModel(e);if(t)return {maxOutput:t.maxOutputTokens,maxInput:t.maxInputTokens,found:true,source:"model"};let n=this.getConstraints(),r=n.maxOutputTokens[e],o=n.maxInputTokens[e];if(r!==void 0&&o!==void 0)return {maxOutput:r,maxInput:o,found:true,source:"model"};for(let[i,a]of Object.entries(n.maxOutputTokens))if(this.matchPattern(e,i))return {maxOutput:a,maxInput:n.maxInputTokens[i]||128e3,found:true,source:"model"};return {maxOutput:4096,maxInput:128e3,found:false,source:"fallback"}}normalizeParams(e){let t=this.getConstraints(),n={};for(let[r,o]of Object.entries(e)){let i=t.paramAliases?.[r]||r;t.supportedParams.has(r)&&(n[i]=o);}if(t.defaults)for(let[r,o]of Object.entries(t.defaults))n[r]===void 0&&(n[r]=o);return n}matchPattern(e,t){return t.includes("*")?new RegExp("^"+t.replace(/\*/g,".*")+"$").test(e):e===t}isParamSupported(e){return this.getConstraints().supportedParams.has(e)}getParamAlias(e){return this.getConstraints().paramAliases?.[e]||e}};});var Qs,Kh=R(()=>{qa();Qs=class extends us{getConstraints(){return {maxOutputTokens:{"gpt-4o":16384,"gpt-4o-2024-11-20":16384,"gpt-4o-2024-08-06":16384,"gpt-4o-2024-05-13":4096,"gpt-4o-mini":16384,"gpt-4o-mini-2024-07-18":16384,"gpt-4-turbo":4096,"gpt-4-turbo-2024-04-09":4096,"gpt-4-turbo-preview":4096,"gpt-4-0125-preview":4096,"gpt-4-1106-preview":4096,"gpt-4":8192,"gpt-4-0613":8192,"gpt-4-0314":8192,"gpt-3.5-turbo":4096,"gpt-3.5-turbo-0125":4096,"gpt-3.5-turbo-1106":4096,o1:1e5,"o1-2024-12-17":1e5,"o1-preview":32768,"o1-preview-2024-09-12":32768,"o1-mini":65536,"o1-mini-2024-09-12":65536,o3:1e5,"o3-mini":1e5,"o3-mini-2025-01-31":1e5,"o4-mini":1e5,"gpt-5":1e5,"gpt-5.1":1e5,"gpt-5.1-codex":1e5,"gpt-5.1-codex-max":1e5,"gpt-5.1-codex-mini":1e5,"gpt-5.2":1e5,"gpt-5.2-codex":1e5,"gpt-5-codex":1e5,"gpt-5-codex-mini":1e5,"codex-mini-latest":1e5,"gpt-4.1":1e5,"gpt-4.1-2025-04-14":1e5,"gpt-4o*":16384,"gpt-4-turbo*":4096,"gpt-4.1*":1e5,"gpt-4*":8192,"gpt-3.5*":4096,"gpt-5*":1e5,"codex*":1e5,"o1*":1e5,"o3*":1e5,"o4*":1e5},maxInputTokens:{"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4-turbo-2024-04-09":128e3,"gpt-4.1":1047576,"gpt-4.1-2025-04-14":1047576,"gpt-4":8192,"gpt-4-32k":32768,"gpt-3.5-turbo":16385,"gpt-3.5-turbo-16k":16385,"gpt-5":272e3,"gpt-5.1":272e3,"gpt-5.1-codex":272e3,"gpt-5.1-codex-max":272e3,"gpt-5.1-codex-mini":272e3,"gpt-5-codex":272e3,"gpt-5-codex-mini":272e3,"gpt-5.2":4e5,"gpt-5.2-codex":4e5,"codex-mini-latest":2e5,o1:2e5,"o1-preview":128e3,"o1-mini":128e3,o3:2e5,"o3-mini":2e5,"o4-mini":2e5,"gpt-4o*":128e3,"gpt-4-turbo*":128e3,"gpt-4.1*":1047576,"gpt-5*":272e3,"gpt-5.2*":4e5,"codex*":272e3,"o1*":2e5,"o3*":2e5,"o4*":2e5},supportedParams:new Set(["model","messages","stream","stream_options","max_tokens","max_completion_tokens","temperature","top_p","top_k","frequency_penalty","presence_penalty","stop","n","seed","reasoning_effort","verbosity","tools","tool_choice","parallel_tool_calls","response_format","logprobs","top_logprobs","logit_bias","modalities","audio","user","safety_identifier","store","service_tier","prompt_cache_key","prompt_cache_retention","metadata","prediction","extra_body","search_parameters","web_search_options"]),validators:{temperature:Yt(0,2),top_p:Yt(0,1),frequency_penalty:Yt(-2,2),presence_penalty:Yt(-2,2),reasoning_effort:di(["low","medium","high"]),verbosity:di(["low","medium","high"]),tool_choice:e=>typeof e=="string"?["none","auto","required"].includes(e)||"Must be 'none', 'auto', or 'required'":typeof e=="object"&&e.type==="function"?true:"Invalid tool_choice format","response_format.type":di(["text","json_object","json_schema"]),stream:e=>typeof e=="boolean"||"Must be a boolean",n:Fu(e=>typeof e=="number"||"Must be a number",Yt(1,10)),max_tokens:(e,t)=>{let n=Number(e);if(isNaN(n))return "Must be a number";if(n<1)return "Must be at least 1";t?.model||"";return true}},defaults:{temperature:1,top_p:1,n:1,stream:false,max_tokens:4096}}}isResponsesAPIModel(e){return e.startsWith("o1")||e.startsWith("o3")}supportsReasoning(e){return this.isResponsesAPIModel(e)}supportsVision(e){return e.includes("gpt-4o")||e.includes("gpt-4-turbo")||e.includes("gpt-4-vision")}supportsTools(e){return e.startsWith("o1-preview")||e.startsWith("o1-mini")?false:e.includes("gpt-4")||e.includes("gpt-3.5-turbo")||e.startsWith("o3")}getRecommendedMaxTokens(e,t){let n=this.getTokenLimits(e);switch(t){case "short":return Math.min(1024,n.maxOutput);case "medium":return Math.min(4096,n.maxOutput);case "long":return n.maxOutput;default:return Math.min(4096,n.maxOutput)}}},new Qs;});function Zs(s){return s.replace(/\n{3,}/g,`
|
|
1556
1556
|
|
|
1557
|
-
`).trim()}var
|
|
1557
|
+
`).trim()}var ds,Uu=R(()=>{ds=class{combinePromptSections(e){return e.filter(n=>n.content.trim().length>0).sort((n,r)=>(n.order||0)-(r.order||0)).map(n=>n.title?`# ${n.title}
|
|
1558
1558
|
|
|
1559
1559
|
${n.content}`:n.content).join(`
|
|
1560
1560
|
|
|
@@ -1596,7 +1596,7 @@ When planning tasks, provide concrete implementation steps without time estimate
|
|
|
1596
1596
|
You have access to the TodoWrite tools to help you manage and plan tasks. Use these tools VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.
|
|
1597
1597
|
These tools are also EXTREMELY helpful for planning tasks, and for breaking down larger complex tasks into smaller steps. If you do not use this tool when planning, you may forget to do important tasks - and that is unacceptable.
|
|
1598
1598
|
|
|
1599
|
-
It is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.`.trim(),eo=class extends
|
|
1599
|
+
It is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.`.trim(),eo=class extends ds{buildSystemPrompt(e){let{workDir:t,language:n="zh",modelName:r,customInstructions:o}=e;return this.isResponsesAPIModel(r)?this.buildResponsesAPIPrompt(o):this.buildChatCompletionsPrompt(t,n,r,o)}buildResponsesAPIPrompt(e){let t=dO;return e&&e.trim()&&(t+=`
|
|
1600
1600
|
|
|
1601
1601
|
# Custom Instructions
|
|
1602
1602
|
|
|
@@ -1675,7 +1675,7 @@ Tool results are returned via messages with role "tool".`}getGeneralRules(e){ret
|
|
|
1675
1675
|
|
|
1676
1676
|
\u2026[${n-l.length-c.length} chars truncated, total ${t} lines]\u2026
|
|
1677
1677
|
|
|
1678
|
-
`;return l+d+c}function Qx(s,e={}){let t={...s};return !e.allowServiceTier&&"service_tier"in t&&delete t.service_tier,e.disableStore&&"store"in t&&delete t.store,!e.allowSafetyIdentifier&&"safety_identifier"in t&&delete t.safety_identifier,t}function Zx(s,e){if(!s)return null;if(e?.reasoning)return {effort:e.reasoning.effort||"low",verbosity:e.reasoning.verbosity||"low",summary:e.reasoning.summary||"auto"};let t=process.env.CD_REASONING_EFFORT||process.env.NEOX_REASONING_EFFORT,n=process.env.CD_REASONING_VERBOSITY||process.env.NEOX_REASONING_VERBOSITY,r=process.env.CD_REASONING_SUMMARY||process.env.NEOX_REASONING_SUMMARY;return t||n||r?{effort:t||"low",verbosity:n||"low",summary:r||"auto"}:null}var yO,Lr,ju=R(()=>{Zn();Wi();te();Ca();xr();Qn();ko();rm();yO=16e3;Lr=class{client;defaultModel;isProxy;useResponsesAPI;apiEndpoint;streamFormat;retryConfig;baseUrl;privacySettings;sessionId;doubaoThinking;apiKey;modelConfig;structuredOutputMode;constructor(e){this.baseUrl=e.baseUrl||"https://api.openai.com/v1",this.isProxy=e.baseUrl?!e.baseUrl.includes("api.openai.com"):false,this.useResponsesAPI=e.useResponsesAPI||false,this.apiEndpoint=e.apiEndpoint||"/chat/completions",this.streamFormat=e.streamFormat||"openai",this.apiKey=e.apiKey,this.sessionId=e.sessionId||`session-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,this.privacySettings=e.privacySettings||{},this.doubaoThinking=e.doubaoThinking,this.modelConfig=e.modelConfig,this.structuredOutputMode=e.structuredOutputMode||"json_schema",this.client=pO.create({baseURL:this.baseUrl,headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},timeout:12e4}),this.defaultModel=e.defaultModel||"gpt-4";let t=wo("openai",this.baseUrl);this.retryConfig=
|
|
1678
|
+
`;return l+d+c}function Qx(s,e={}){let t={...s};return !e.allowServiceTier&&"service_tier"in t&&delete t.service_tier,e.disableStore&&"store"in t&&delete t.store,!e.allowSafetyIdentifier&&"safety_identifier"in t&&delete t.safety_identifier,t}function Zx(s,e){if(!s)return null;if(e?.reasoning)return {effort:e.reasoning.effort||"low",verbosity:e.reasoning.verbosity||"low",summary:e.reasoning.summary||"auto"};let t=process.env.CD_REASONING_EFFORT||process.env.NEOX_REASONING_EFFORT,n=process.env.CD_REASONING_VERBOSITY||process.env.NEOX_REASONING_VERBOSITY,r=process.env.CD_REASONING_SUMMARY||process.env.NEOX_REASONING_SUMMARY;return t||n||r?{effort:t||"low",verbosity:n||"low",summary:r||"auto"}:null}var yO,Lr,ju=R(()=>{Zn();Wi();te();Ca();xr();Qn();ko();rm();yO=16e3;Lr=class{client;defaultModel;isProxy;useResponsesAPI;apiEndpoint;streamFormat;retryConfig;baseUrl;privacySettings;sessionId;doubaoThinking;apiKey;modelConfig;structuredOutputMode;constructor(e){this.baseUrl=e.baseUrl||"https://api.openai.com/v1",this.isProxy=e.baseUrl?!e.baseUrl.includes("api.openai.com"):false,this.useResponsesAPI=e.useResponsesAPI||false,this.apiEndpoint=e.apiEndpoint||"/chat/completions",this.streamFormat=e.streamFormat||"openai",this.apiKey=e.apiKey,this.sessionId=e.sessionId||`session-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,this.privacySettings=e.privacySettings||{},this.doubaoThinking=e.doubaoThinking,this.modelConfig=e.modelConfig,this.structuredOutputMode=e.structuredOutputMode||"json_schema",this.client=pO.create({baseURL:this.baseUrl,headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},timeout:12e4}),this.defaultModel=e.defaultModel||"gpt-4";let t=wo("openai",this.baseUrl);this.retryConfig=Vr(void 0,{...t,...e.retry}),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Initialized with:",{baseUrl:this.baseUrl,isProxy:this.isProxy,useResponsesAPI:this.useResponsesAPI,apiEndpoint:this.apiEndpoint,streamFormat:this.streamFormat});}async chat(e,t={}){let{model:n=this.defaultModel}=t;return this.shouldUseResponsesAPI(n)?this.chatWithResponsesAPI(e,t):this.chatWithChatCompletions(e,t)}async*chatStreamed(e,t={}){let{model:n=this.defaultModel}=t;this.shouldUseResponsesAPI(n)?yield*this.chatStreamedWithResponsesAPI(e,t):yield*this.chatStreamedWithChatCompletions(e,t);}async chatWithChatCompletions(e,t){let{model:n=this.defaultModel,tools:r,temperature:o=.7,maxInputTokens:i}=t,a=this.buildChatCompletionsPayload(e,{model:n,tools:r,temperature:o,structuredOutput:t.structuredOutput,maxInputTokens:i,stream:false}),l=`${this.client.defaults.baseURL}/chat/completions`;je.llmRequest("openai",n,a,l,{Authorization:"Bearer ***"}),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Chat Completions Request",{url:l,payload:a});let c=this.retryConfig.requestMaxRetries,u=null;for(let d=0;d<=c;d++)try{let m=Date.now(),g=await this.client.post("/chat/completions",a),h=Date.now()-m;return je.llmResponse("openai",h,g.data.usage,g.data.choices[0]),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Chat Completions Response",{duration:`${h}ms`,data:g.data}),g.data}catch(m){u=m;let g=An(m);if(p.error("OpenAI",`Request Error - URL: ${l}`),p.error("OpenAI",`Error: ${m.message}`),m.response?.data)try{let C=m.response.data;if(typeof C=="string")p.error("OpenAI",`Response: ${C.substring(0,500)}`);else if(C&&typeof C=="object"){let T={error:C.error,message:C.message,type:C.type,code:C.code};p.error("OpenAI",`Response: ${JSON.stringify(T).substring(0,500)}`);}}catch{p.error("OpenAI","Response: [Could not serialize error data]");}if(process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Chat Completions Error",{url:l,message:m.message,category:g.category,retryable:g.retryable,attempt:`${d+1}/${c+1}`}),je.llmError("openai",m),!g.retryable||d===c)throw g;let h=m.response?.headers?.["retry-after"],y=wr(h),b=Yr(y,d+1,this.retryConfig);p.info("OpenAI",`Request failed (${g.code}), retrying in ${ln(b)} (${d+1}/${c})...`),await So(b);}throw u||new Error("Unknown error during retry")}async*chatStreamedWithChatCompletions(e,t){let{model:n=this.defaultModel,tools:r,temperature:o=.7,maxInputTokens:i,signal:a}=t,l=this.buildChatCompletionsPayload(e,{model:n,tools:r,temperature:o,structuredOutput:t.structuredOutput,maxInputTokens:i,stream:true}),c=`${this.client.defaults.baseURL}${this.apiEndpoint}`;je.llmRequest("openai-stream",n,l,c,{Authorization:"Bearer ***"}),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Chat Completions Stream Request",{url:c,endpoint:this.apiEndpoint,payload:l});let u=this.retryConfig.streamMaxRetries,d=0;for(;;)try{if(a?.aborted){let y=new Error("Request aborted");throw y.name="AbortError",y}let m=Date.now(),g=await this.client.post(this.apiEndpoint,l,{responseType:"stream",signal:a});if(process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream Started",{status:g.status}),g.status!==200){let y="";for await(let b of g.data)y+=b.toString();throw new Error(`OpenAI API error: ${g.status} - ${y}`)}this.streamFormat==="anthropic"?yield*this.parseAnthropicStreamResponse(g.data):yield*this.parseOpenAIStreamResponse(g.data,a);let h=Date.now()-m;je.llmResponse("openai-stream",h,{},{}),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream Complete",{duration:`${h}ms`});return}catch(m){let g=An(m);if(p.error("OpenAI",`Stream Error - Request URL: ${c}`),p.error("OpenAI",`Error: ${m.message}`),m.response?.data)try{let h=m.response.data;if(typeof h=="string")p.error("OpenAI",`Response: ${h.substring(0,500)}`);else if(h&&typeof h=="object"){let y={error:h.error,message:h.message,type:h.type,code:h.code};p.error("OpenAI",`Response: ${JSON.stringify(y).substring(0,500)}`);}}catch{p.error("OpenAI","Response: [Could not serialize error data]");}if(process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream Error Details",{url:c,message:m.message,retryable:g.retryable,status:m.response?.status}),je.llmError("openai-stream",m),g.retryable&&d<u){d++;let h=m.response?.headers?.["retry-after"],y=wr(h),b=Yr(y,d,this.retryConfig);p.info("OpenAI",`Stream failed (${g.code}), reconnecting in ${ln(b)} (${d}/${u})...`),yield {choices:[],type:"stream_retry",error:g.message,errorCode:g.code,attempt:d,maxRetries:u,delayMs:b};try{await As(b,a);}catch(C){throw C?.name==="AbortError",C}continue}throw g}}buildChatCompletionsPayload(e,t){let{model:n,tools:r,temperature:o,structuredOutput:i,maxInputTokens:a,stream:l}=t,c=this.formatMessagesForChatCompletions(e);if(this.baseUrl.includes("ark.cn-beijing.volces.com")){let g={model:n,messages:c,stream:l};return this.doubaoThinking&&n.includes("doubao-seed")&&(g.thinking={type:this.doubaoThinking.type},process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Doubao thinking mode: ${this.doubaoThinking.type}`)),r&&r.length>0&&(g.tools=r.map(h=>({type:"function",function:{name:h.name,description:h.description,parameters:h.parameters}})),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Added ${g.tools.length} tools to Doubao payload`)),g}let d={model:n,messages:c,temperature:o,stream:l};l&&(d.stream_options={include_usage:true}),a!==void 0&&(d.max_tokens=a);let m=Zx(false);return m&&(d.reasoning_effort=m.effort,m.verbosity&&(d.verbosity=m.verbosity)),r&&r.length>0&&(d.tools=r.map(g=>({type:"function",function:{name:g.name,description:g.description,parameters:g.parameters}})),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Added ${d.tools.length} tools to Chat Completions payload`)),i&&(this.structuredOutputMode==="json_object"?d.response_format={type:"json_object"}:d.response_format={type:"json_schema",json_schema:{name:i.name,schema:i.schema,strict:i.strict??true}}),Qx(d,this.privacySettings)}formatMessagesForChatCompletions(e){return e.filter(t=>{let n=t.content&&(typeof t.content=="string"?t.content.trim().length>0:Array.isArray(t.content)&&t.content.length>0),r=t.tool_calls&&t.tool_calls.length>0;return n||r}).map(t=>{let n={role:t.role,content:null};if(t.role==="tool"){let r=typeof t.content=="string"?t.content:Fe(t.content);n.content=Xx(r);}else Array.isArray(t.content)?n.content=t.content:t.tool_calls&&t.tool_calls.length>0?n.content=t.content||"":n.content=t.content||null;return t.name&&(n.name=t.name),t.tool_call_id&&(n.tool_call_id=t.tool_call_id),t.tool_calls&&(n.tool_calls=t.tool_calls.map(r=>({id:r.id,type:"function",function:{name:r.function.name,arguments:r.function.arguments}}))),n})}async chatWithResponsesAPI(e,t){let n="",r=[],o;for await(let i of this.chatStreamedWithResponsesAPI(e,t)){let a=i.choices?.[0]?.delta;if(a&&(a.content&&(n+=a.content),a.tool_calls))for(let l of a.tool_calls){let c=r.find(u=>u.index===l.index);c?l.function?.arguments&&(c.function.arguments+=l.function.arguments):r.push({id:l.id||`call_${r.length}`,type:"function",function:{name:l.function?.name||"",arguments:l.function?.arguments||""},index:l.index});}i.usage&&(o=i.usage);}return {id:`chatcmpl-${Date.now()}`,choices:[{message:{role:"assistant",content:n||null,...r.length>0?{tool_calls:r}:{}},finish_reason:"stop"}],usage:o||{total_tokens:0,prompt_tokens:0,completion_tokens:0}}}async*chatStreamedWithResponsesAPI(e,t){let{model:n=this.defaultModel,tools:r,temperature:o=.7,structuredOutput:i,maxInputTokens:a,signal:l}=t,c=this.buildResponsesAPIPayload(e,{model:n,tools:r,temperature:o,structuredOutput:i,maxInputTokens:a}),u=`${this.client.defaults.baseURL}/responses`;if(je.llmRequest("openai-responses-stream",n,c,u,{Authorization:"Bearer ***"}),process.env.CLI_DEBUG==="1"){p.info("OpenAI","Responses API Stream Request",{url:u,toolsCount:c.tools?.length||0}),process.env.CLI_DEBUG_PAYLOAD==="1"&&p.debug("OpenAI","Full Payload",c);let d=['-H "Content-Type: application/json"','-H "Accept: text/event-stream"',`-H "Authorization: Bearer ${this.apiKey}"`,`-H "conversation_id: ${this.sessionId}"`,`-H "session_id: ${this.sessionId}"`,'-H "user-agent: neox-cli/1.0.0"'],m=[`curl -X POST "${u}"`,...d,`-d '${JSON.stringify(c)}'`,"--no-buffer"].join(` \\
|
|
1679
1679
|
`),g=[`curl -X POST "${u}"`,...d,`-d '${JSON.stringify(c)}'`,"--no-buffer"].join(" ");p.info("CURL","\u2550".repeat(80)),p.info("CURL","Multi-line CURL command:"),p.info("CURL",m),p.info("CURL","\u2550".repeat(80)),p.info("CURL","One-line CURL (copy-paste ready):"),p.info("CURL",g),p.info("CURL","\u2550".repeat(80));}try{if(l?.aborted){let y=new Error("Request aborted");throw y.name="AbortError",y}let d=Date.now(),m={Accept:"text/event-stream",conversation_id:this.sessionId,session_id:this.sessionId,originator:"codex_cli_rs","x-codex-beta-features":"shell_snapshot"},g=await this.client.post("/responses",c,{responseType:"stream",signal:l,headers:m});if(process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Responses API Stream Started",{status:g.status}),g.status!==200){let y="";for await(let C of g.data)y+=C.toString();let b=Is(y,g.status);throw new Error(`OpenAI Responses API error: ${g.status} - ${b.message}`)}yield*this.parseResponsesAPIStream(g.data,l);let h=Date.now()-d;je.llmResponse("openai-responses-stream",h,{},{}),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Responses API Stream Complete",{duration:`${h}ms`});}catch(d){let m,g=d.response?.status;if(d.response?.data){let y=d.response.data;try{if(y&&typeof y.on=="function"){let b="";try{for await(let C of y)b+=C.toString();m=b;}catch{m="[Could not read error stream]";}}else if(typeof y=="string")m=y;else if(y&&typeof y=="object"){let b={error:y.error,message:y.message,type:y.type,code:y.code};m=JSON.stringify(b);}}catch{m="[Could not parse error data]";}}process.env.CLI_DEBUG==="1"&&p.error("OpenAI","Responses API Stream Error",{status:g,errorData:m,message:d.message}),je.llmError("openai-responses-stream",d);let h;if(g&&m){let y=Is(m,g);h=`${y.message}${y.detail?`
|
|
1680
1680
|
`+y.detail:""}`;}else h=d.message||"Unknown error";throw new Error(h)}}buildResponsesAPIPayload(e,t){let{model:n,tools:r,temperature:o,structuredOutput:i,maxInputTokens:a}=t,l=this.convertToResponsesInput(e),c=this.buildResponsesInstructions(e);if(!c)throw new Error("[OpenAI Responses API] instructions field is required but no system message found");if(!l||l.length===0)throw new Error("[OpenAI Responses API] input array is empty - at least one user message is required");if(process.env.CLI_DEBUG==="1"){p.debug("OpenAI","Building Responses API payload",{instructionsLength:c.length,instructionsPreview:c.substring(0,300),inputItems:l.length,inputPreview:JSON.stringify(l.slice(0,2),null,2)}),p.debug("OpenAI","Full input array for Response API:",{totalMessages:e.length,messageRoles:e.map(b=>b.role),inputCount:l.length,fullInput:JSON.stringify(l,null,2)});let m=l.filter(b=>b.type==="function_call"),g=l.filter(b=>b.type==="function_call_output");p.debug("OpenAI","Function call ID matching check:",{callCount:m.length,outputCount:g.length,callIds:m.map(b=>({id:b.id||b.call_id,name:b.name})),outputIds:g.map(b=>({call_id:b.call_id}))});let h=new Set(m.map(b=>b.call_id||b.id)),y=g.filter(b=>!h.has(b.call_id));y.length>0&&p.warn("OpenAI",`\u26A0\uFE0F Found ${y.length} unmatched function_call_output!`,{unmatchedCallIds:y.map(b=>b.call_id)});}let u={model:n,instructions:c,input:l};r&&r.length>0&&(u.tools=r.map(m=>this.formatResponsesFunctionTool(m)),u.tool_choice="auto",u.parallel_tool_calls=true,process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Added ${u.tools.length} tools`));let d=Zx(true,this.modelConfig);return d&&(u.reasoning={effort:d.effort,summary:d.summary||"auto"}),u.store=false,u.stream=true,d&&(u.include=["reasoning.encrypted_content"]),u.prompt_cache_key=this.sessionId,Qx(u,this.privacySettings)}buildResponsesInstructions(e){let t=Os({workDir:process.cwd(),language:"zh",useCodexStyle:true});return process.env.CLI_DEBUG==="1"&&(p.debug("OpenAI","Using official Codex instructions for Responses API"),p.debug("OpenAI",`Instructions length: ${t.length} chars`),p.debug("OpenAI",`Instructions preview: ${t.substring(0,200)}...`)),t}convertToResponsesInput(e){let n=this.filterIncompleteToolCalls(e).filter(i=>i.role!=="system").flatMap(i=>this.convertMessageToResponsesItems(i)),r=this.extractMemoryContext(e);r&&n.unshift({type:"message",role:"user",status:"completed",content:[{type:"input_text",text:`<memory_context>
|
|
1681
1681
|
${r}
|
|
@@ -1685,7 +1685,7 @@ ${r}
|
|
|
1685
1685
|
${r}
|
|
1686
1686
|
</INSTRUCTIONS>`;return process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Loaded GPT Agent instructions:",{path:n,length:r.length,preview:r.substring(0,200)}),o}catch(e){return process.env.CLI_DEBUG==="1"&&p.warn("OpenAI","Failed to load GPT Agent instructions:",e),null}}formatResponsesFunctionTool(e){return {type:"function",name:e.name,description:e.description,parameters:e.parameters,strict:false}}makeSchemaNullable(e){if(!e||typeof e!="object")return e;let t={...e};return t.type&&(Array.isArray(t.type)?t.type.includes("null")||(t.type=[...t.type,"null"]):t.type!=="null"&&(t.type=[t.type,"null"])),Array.isArray(t.enum)&&!t.enum.includes(null)&&(t.enum=[...t.enum,null]),Array.isArray(t.anyOf)&&(t.anyOf=t.anyOf.map(n=>this.makeSchemaNullable(n))),Array.isArray(t.oneOf)&&(t.oneOf=t.oneOf.map(n=>this.makeSchemaNullable(n))),Array.isArray(t.allOf)&&(t.allOf=t.allOf.map(n=>this.makeSchemaNullable(n))),t}async*parseOpenAIStreamResponse(e,t){let n="",r=0,o=()=>new Promise(i=>setImmediate(i));for await(let i of e){if(t?.aborted)throw process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream aborted by signal"),new Error("Request aborted");r++%20===0&&await o(),n+=i.toString();let a=n.split(`
|
|
1687
1687
|
`);n=a.pop()||"";for(let l of a){let c=l.trim();if(!c||!c.startsWith("data: "))continue;let u=c.slice(6);if(u==="[DONE]"){process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream Received [DONE]");return}try{let d=JSON.parse(u);process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Stream Chunk",d),yield d;}catch{process.env.CLI_DEBUG==="1"&&p.warn("OpenAI","Stream Invalid JSON",{data:u});}}}}async*parseResponsesAPIStream(e,t){let n=new Map,r=0,o=null,i=null,a=false,l=false,c=2e5,u=1e5,d=h=>{let y={...h};return l||(y.role="assistant",l=true),{choices:[{index:0,delta:y}]}};for await(let h of this.parseOpenAIStreamResponse(e,t))if(!(!h||typeof h!="object"))switch(h.type){case "response.output_text.delta":{let y=typeof h.delta=="string"?h.delta:"";if(!y)break;a=true,yield d({content:y});break}case "response.output_item.added":{if(h.item?.type==="function_call"){let y=h.item.id||`item_${h.output_index}`,b={id:h.item.call_id||h.item.id||`call_${Date.now()}_${r}`,name:h.item.name,index:r++,arguments:"",completed:false};n.set(y,b),process.env.CLI_DEBUG==="1"&&p.debug("OpenAI","Function call added from stream:",{key:y,id:b.id,call_id:h.item.call_id,item_id:h.item.id,name:b.name,index:b.index}),a=true,yield d({tool_calls:[{index:b.index,id:b.id,type:"function",function:{name:b.name}}]});}break}case "response.function_call_arguments.delta":{let y=h.item_id?n.get(h.item_id):void 0;if(!y)break;let b=Buffer.byteLength(y.arguments,"utf8");if(b>=c){process.env.CLI_DEBUG==="1"&&p.warn("OpenAI",`Tool ${y.name} arguments exceeded maximum size (${b} bytes), truncating`);break}let C=typeof h.delta=="string"?h.delta:"";if(!C)break;b>5e4&&await new Promise(S=>setImmediate(S)),y.arguments+=C,a=true;let T=Buffer.byteLength(y.arguments,"utf8");T>u&&b<=u&&p.warn("OpenAI",`Tool ${y.name} arguments size exceeds ${u} bytes (${T} bytes)`),yield d({tool_calls:[{index:y.index,id:y.id,type:"function",function:{name:y.name,arguments:C}}]});break}case "response.output_item.done":{if(h.item?.type==="function_call"){let y=h.item.id||`item_${h.output_index}`,b=n.get(y);if(b&&(b.completed=true,process.env.CLI_DEBUG==="1")){let C=Buffer.byteLength(b.arguments,"utf8");p.debug("OpenAI",`Tool ${b.name} arguments complete (${C} bytes)`);}}break}case "response.completed":{o=h.response,i=h.response?.usage;break}case "response.error":case "response.failed":{let y=h.error?.message||h.error?.code||h.message||"Responses stream failed";throw new Error(y)}}let m=[];for(let[h,y]of n.entries())y.completed||m.push(`${y.name} (${Buffer.byteLength(y.arguments,"utf8")} bytes)`);if(m.length>0&&(p.error("OpenAI",`\u26A0\uFE0F Responses API stream ended with ${m.length} incomplete tool calls: ${m.join(", ")}`),p.error("OpenAI","This indicates a streaming issue with the API/proxy server. The tool calls received incomplete arguments and may fail execution.")),!a&&o){let h=Array.isArray(o.output)?o.output:[],y="";for(let b of h)if(b?.type==="message"&&Array.isArray(b.content))for(let C of b.content)C?.type==="output_text"&&typeof C.text=="string"&&(y+=C.text);y&&(yield {choices:[{index:0,delta:{role:"assistant",content:y}}]});}let g={choices:[{index:0,delta:{},finish_reason:"stop"}]};i&&(g.usage=this.normalizeUsage(i)),yield g;}async*parseAnthropicStreamResponse(e){let t="",n=[],r=0,o=false,i=null;for await(let l of e){t+=l.toString();let c=t.split(`
|
|
1688
|
-
`);t=c.pop()||"";for(let u of c){let d=u.trim();if(!d||!d.startsWith("data: "))continue;let m=d.slice(6);if(m!=="[DONE]")try{let g=JSON.parse(m);switch(g.type){case "message_start":g.message?.usage&&(i=g.message.usage);break;case "content_block_start":if(g.content_block?.type==="text")o||(o=!0,yield {choices:[{delta:{role:"assistant"},index:0}]});else if(g.content_block?.type==="tool_use"){let h=g.content_block;n.push({index:r,id:h.id,type:"function",function:{name:h.name,arguments:""}}),yield {choices:[{delta:{tool_calls:[{index:r,id:h.id,type:"function",function:{name:h.name}}]},index:0}]},r++;}break;case "content_block_delta":if(g.delta?.type==="text_delta")yield {choices:[{delta:{content:g.delta.text||""},index:0}]};else if(g.delta?.type==="input_json_delta"){let h=g.delta.partial_json||"";if(n.length>0){let y=n[n.length-1];y.function.arguments+=h,yield {choices:[{delta:{tool_calls:[{index:y.index,function:{arguments:h}}]},index:0}]};}}break;case "message_delta":g.usage&&(i=g.usage);break;case "error":throw new Error(g.error?.message||"Stream error")}}catch{}}}let a={choices:[{delta:{},finish_reason:n.length>0?"tool_calls":"stop",index:0}]};i&&(a.usage=this.normalizeUsage(i)),yield a;}normalizeUsage(e){let t={prompt_tokens:e.input_tokens??e.prompt_tokens??0,completion_tokens:e.output_tokens??e.completion_tokens??0,total_tokens:0};return t.total_tokens=t.prompt_tokens+t.completion_tokens,e.prompt_tokens_details?.cached_tokens!==void 0&&(t.prompt_tokens_details={cached_tokens:e.prompt_tokens_details.cached_tokens,text_tokens:e.prompt_tokens_details.text_tokens,audio_tokens:e.prompt_tokens_details.audio_tokens,image_tokens:e.prompt_tokens_details.image_tokens}),e.completion_tokens_details&&(t.completion_tokens_details={text_tokens:e.completion_tokens_details.text_tokens,audio_tokens:e.completion_tokens_details.audio_tokens,reasoning_tokens:e.completion_tokens_details.reasoning_tokens}),e.prompt_cache_hit_tokens!==void 0&&(t.prompt_cache_hit_tokens=e.prompt_cache_hit_tokens),e.cache_read_input_tokens!==void 0&&(t.cache_read_input_tokens=e.cache_read_input_tokens),e.cache_creation_input_tokens!==void 0&&(t.cache_creation_input_tokens=e.cache_creation_input_tokens),t}shouldUseResponsesAPI(e){return this.useResponsesAPI}setSessionId(e){this.sessionId=e,process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Session ID updated to: ${e}`);}getSessionId(){return this.sessionId}setDoubaoThinking(e){this.doubaoThinking=e,process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Doubao thinking updated to: ${e?.type||"undefined"}`);}getDoubaoThinking(){return this.doubaoThinking}};});var Gu,eS=R(()=>{Ha();Kh();Jh();ju();te();Gu=class extends pr{constraints;promptBuilder;provider;defaultModel;constructor(e){super(),this.constraints=new Qs,this.promptBuilder=new eo,this.defaultModel=e.defaultModel||"gpt-4o";let{apiKey:t,baseUrl:n,defaultModel:r,useResponsesAPI:o,maxTokens:i,maxInputTokens:a,...l}=e;this.provider=new Lr({apiKey:t,baseUrl:n,defaultModel:this.defaultModel,useResponsesAPI:o,maxTokens:i,maxInputTokens:a,...l});}prepareRequest(e,t){let n=t.model||this.defaultModel,r=this.constraints.isResponsesAPIModel(n),o=super.prepareRequest(e,{...t,model:n});return r&&o.options.temperature===void 0&&delete o.options.temperature,o}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("OpenAIAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("OpenAIAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,signal:t.signal});}getProvider(){return this.provider}getModelCapabilities(e){let t=e||this.defaultModel;return {supportsVision:this.constraints.supportsVision(t),supportsTools:this.constraints.supportsTools(t),supportsReasoning:this.constraints.supportsReasoning(t),isResponsesAPI:this.constraints.isResponsesAPIModel(t),tokenLimits:this.constraints.getTokenLimits(t)}}};});var Ka,tS=R(()=>{qa();Ka=class extends
|
|
1688
|
+
`);t=c.pop()||"";for(let u of c){let d=u.trim();if(!d||!d.startsWith("data: "))continue;let m=d.slice(6);if(m!=="[DONE]")try{let g=JSON.parse(m);switch(g.type){case "message_start":g.message?.usage&&(i=g.message.usage);break;case "content_block_start":if(g.content_block?.type==="text")o||(o=!0,yield {choices:[{delta:{role:"assistant"},index:0}]});else if(g.content_block?.type==="tool_use"){let h=g.content_block;n.push({index:r,id:h.id,type:"function",function:{name:h.name,arguments:""}}),yield {choices:[{delta:{tool_calls:[{index:r,id:h.id,type:"function",function:{name:h.name}}]},index:0}]},r++;}break;case "content_block_delta":if(g.delta?.type==="text_delta")yield {choices:[{delta:{content:g.delta.text||""},index:0}]};else if(g.delta?.type==="input_json_delta"){let h=g.delta.partial_json||"";if(n.length>0){let y=n[n.length-1];y.function.arguments+=h,yield {choices:[{delta:{tool_calls:[{index:y.index,function:{arguments:h}}]},index:0}]};}}break;case "message_delta":g.usage&&(i=g.usage);break;case "error":throw new Error(g.error?.message||"Stream error")}}catch{}}}let a={choices:[{delta:{},finish_reason:n.length>0?"tool_calls":"stop",index:0}]};i&&(a.usage=this.normalizeUsage(i)),yield a;}normalizeUsage(e){let t={prompt_tokens:e.input_tokens??e.prompt_tokens??0,completion_tokens:e.output_tokens??e.completion_tokens??0,total_tokens:0};return t.total_tokens=t.prompt_tokens+t.completion_tokens,e.prompt_tokens_details?.cached_tokens!==void 0&&(t.prompt_tokens_details={cached_tokens:e.prompt_tokens_details.cached_tokens,text_tokens:e.prompt_tokens_details.text_tokens,audio_tokens:e.prompt_tokens_details.audio_tokens,image_tokens:e.prompt_tokens_details.image_tokens}),e.completion_tokens_details&&(t.completion_tokens_details={text_tokens:e.completion_tokens_details.text_tokens,audio_tokens:e.completion_tokens_details.audio_tokens,reasoning_tokens:e.completion_tokens_details.reasoning_tokens}),e.prompt_cache_hit_tokens!==void 0&&(t.prompt_cache_hit_tokens=e.prompt_cache_hit_tokens),e.cache_read_input_tokens!==void 0&&(t.cache_read_input_tokens=e.cache_read_input_tokens),e.cache_creation_input_tokens!==void 0&&(t.cache_creation_input_tokens=e.cache_creation_input_tokens),t}shouldUseResponsesAPI(e){return this.useResponsesAPI}setSessionId(e){this.sessionId=e,process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Session ID updated to: ${e}`);}getSessionId(){return this.sessionId}setDoubaoThinking(e){this.doubaoThinking=e,process.env.CLI_DEBUG==="1"&&p.debug("OpenAI",`Doubao thinking updated to: ${e?.type||"undefined"}`);}getDoubaoThinking(){return this.doubaoThinking}};});var Gu,eS=R(()=>{Ha();Kh();Jh();ju();te();Gu=class extends pr{constraints;promptBuilder;provider;defaultModel;constructor(e){super(),this.constraints=new Qs,this.promptBuilder=new eo,this.defaultModel=e.defaultModel||"gpt-4o";let{apiKey:t,baseUrl:n,defaultModel:r,useResponsesAPI:o,maxTokens:i,maxInputTokens:a,...l}=e;this.provider=new Lr({apiKey:t,baseUrl:n,defaultModel:this.defaultModel,useResponsesAPI:o,maxTokens:i,maxInputTokens:a,...l});}prepareRequest(e,t){let n=t.model||this.defaultModel,r=this.constraints.isResponsesAPIModel(n),o=super.prepareRequest(e,{...t,model:n});return r&&o.options.temperature===void 0&&delete o.options.temperature,o}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("OpenAIAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("OpenAIAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,signal:t.signal});}getProvider(){return this.provider}getModelCapabilities(e){let t=e||this.defaultModel;return {supportsVision:this.constraints.supportsVision(t),supportsTools:this.constraints.supportsTools(t),supportsReasoning:this.constraints.supportsReasoning(t),isResponsesAPI:this.constraints.isResponsesAPIModel(t),tokenLimits:this.constraints.getTokenLimits(t)}}};});var Ka,tS=R(()=>{qa();Ka=class extends us{getConstraints(){return {maxOutputTokens:{"claude-3-5-sonnet-20241022":8192,"claude-3-5-sonnet-20240620":8192,"claude-3-5-haiku-20241022":8192,"claude-3-opus-20240229":4096,"claude-3-sonnet-20240229":4096,"claude-3-haiku-20240307":4096,"claude-2.1":4096,"claude-2.0":4096,"claude-instant-1.2":4096,"claude-3-5*":8192,"claude-3*":4096,"claude-2*":4096},maxInputTokens:{"claude-3-5-sonnet-20241022":2e5,"claude-3-5-sonnet-20240620":2e5,"claude-3-5-haiku-20241022":2e5,"claude-3-opus-20240229":2e5,"claude-3-sonnet-20240229":2e5,"claude-3-haiku-20240307":2e5,"claude-2.1":2e5,"claude-2.0":1e5,"claude-instant-1.2":1e5,"claude-3*":2e5,"claude-2*":2e5},supportedParams:new Set(["model","messages","system","stream","max_tokens","temperature","top_p","top_k","stop_sequences","tools","tool_choice","thinking","metadata"]),paramAliases:{max_completion_tokens:"max_tokens",stop:"stop_sequences"},validators:{temperature:Yt(0,1),top_p:Yt(0,1),top_k:Fu(e=>Number.isInteger(e)||"Must be an integer",Yt(1,500)),max_tokens:e=>{let t=Number(e);return isNaN(t)?"Must be a number":t<1?"Must be at least 1":true},"thinking.type":di(["enabled","disabled"]),"thinking.budget_tokens":e=>{let t=Number(e);return isNaN(t)?"Must be a number":t<1024?"Budget tokens must be at least 1024":t>1e4?"Budget tokens cannot exceed 10000":true},tool_choice:e=>typeof e=="string"?["auto","any","tool"].includes(e)||"Must be 'auto', 'any', or 'tool'":typeof e=="object"&&e.type==="tool"?e.name?true:'tool_choice.name is required when type is "tool"':"Invalid tool_choice format",stop_sequences:e=>Array.isArray(e)?e.length>4?"Maximum 4 stop sequences allowed":e.every(t=>typeof t=="string")?true:"All stop sequences must be strings":"Must be an array",stream:e=>typeof e=="boolean"||"Must be a boolean","metadata.user_id":e=>typeof e!="string"?"Must be a string":e.length>64?"Maximum 64 characters":e.includes("@")||/\d{10,}/.test(e)?"user_id should not contain PII (email, phone number, etc.)":true},defaults:{temperature:1,top_p:1,stream:false}}}supportsThinking(e){return e.includes("claude-3-5-sonnet")||e.includes("claude-3-opus")}supportsVision(e){return e.includes("claude-3")}supportsTools(e){return e.includes("claude-3")}supportsPromptCaching(e){return e.includes("claude-3-5")||e.includes("claude-3-opus")||e.includes("claude-3-sonnet")}getRecommendedMaxTokens(e,t){let n=this.getTokenLimits(e);switch(t){case "short":return Math.min(1024,n.maxOutput);case "medium":return Math.min(4096,n.maxOutput);case "long":return n.maxOutput;default:return Math.min(4096,n.maxOutput)}}validateSystemPrompt(e){if(typeof e=="string")return e.length===0?{valid:false,error:"System prompt cannot be empty"}:e.length>1e5?{valid:false,error:"System prompt too long (max 100K chars)"}:{valid:true};if(Array.isArray(e)){for(let t of e){if(t.type!=="text")return {valid:false,error:'System prompt blocks must be of type "text"'};if(!t.text||t.text.trim().length===0)return {valid:false,error:"System prompt text blocks cannot be empty"}}return {valid:true}}return {valid:false,error:"System prompt must be a string or array of text blocks"}}getCachingRecommendation(e,t){return this.supportsPromptCaching(e)?t<2e3?{shouldUseCache:false,cacheTTL:"5m",reason:"Prompt too short, caching overhead not worth it"}:t<1e4?{shouldUseCache:true,cacheTTL:"5m",reason:"Medium prompt, 5-minute cache recommended"}:{shouldUseCache:true,cacheTTL:"1h",reason:"Long prompt, 1-hour cache recommended for cost savings"}:{shouldUseCache:false,cacheTTL:"5m",reason:"Model does not support prompt caching"}}},new Ka;});var Ja,nS=R(()=>{Uu();lg();Ja=class extends ds{buildSystemPrompt(e){let{workDir:t,language:n="zh",customInstructions:r}=e,o=Lc({workDir:t,language:n});return r&&r.trim()&&(o+=`
|
|
1689
1689
|
|
|
1690
1690
|
# Custom Instructions
|
|
1691
1691
|
|
|
@@ -1745,7 +1745,7 @@ Tool results are returned via tool_result messages.`}supportsExtendedThinking(e)
|
|
|
1745
1745
|
\u2026[${n-l.length-c.length} chars truncated, total ${t} lines]\u2026
|
|
1746
1746
|
|
|
1747
1747
|
`;return l+d+c}function rS(s,e=2e3){let t=s&&typeof s.toJSON=="function"?s.toJSON():s,n="";try{n=JSON.stringify(t??{},null,2);}catch{n=String(t??"");}return n?n.length>e?`${n.slice(0,e)}
|
|
1748
|
-
...[truncated ${n.length-e} chars]`:n:"No headers"}var vO,Ya,CO,Vh,TO,zu,Hu,xO,sS,oS,iS,Yh,pi,Xh=R(()=>{Zn();Wi();te();xr();Qn();ko();vO=15e3,Ya=2*1024*1024,CO=1.5*1024*1024;Vh="You are Claude Code, Anthropic's official CLI for Claude.",TO=["claude-code-20250219","interleaved-thinking-2025-05-14"],zu="2023-06-01",Hu=64,xO=1024,sS=18e4,oS=6e4,iS={readfile:"Read",write_file:"Write",edit_file:"Edit",glob_search:"Glob",glob:"Glob",search:"Grep",execute_shell:"Bash",bash:"Bash",shell:"Bash",todo_write:"TodoWrite",task:"Task",web_fetch:"WebFetch",web_search:"WebSearch",notebook_edit:"NotebookEdit",ask_user:"AskUserQuestion"},Yh={Read:"readfile",Write:"write_file",Edit:"edit_file",Glob:"glob_search",Grep:"search",Bash:"execute_shell",TodoWrite:"todo_write",Task:"task",WebFetch:"web_fetch",WebSearch:"web_search",NotebookEdit:"notebook_edit",AskUserQuestion:"ask_user"},pi=class{client;defaultModel;maxTokens;retryConfig;baseUrl;authToken;isProxyMode;claudeCodeUserId;betaFeatures;systemPromptPrefix;sanitizeToolsForProxy;disableCaching;thinkingConfig=null;constructor(e){this.authToken=e.authToken,this.baseUrl=(e.baseUrl||"https://api.anthropic.com").replace(/\/+$/,"");let t=this.baseUrl.includes("api.anthropic.com");this.isProxyMode=e.forceClaudeCodeMode||!t;let n=typeof e.userId=="string"?e.userId.trim():"";this.claudeCodeUserId=n?this.sanitizeUserId(n):this.generateSafeUserId(),this.betaFeatures=e.betaFeatures||TO,this.systemPromptPrefix=e.systemPromptPrefix||(this.isProxyMode?Vh:null),this.sanitizeToolsForProxy=false,this.disableCaching=e.disableCaching||false,this.client=pO.create({baseURL:this.baseUrl,headers:this.buildHeaders(),timeout:3e5,validateStatus:()=>true}),this.defaultModel=e.defaultModel||"claude-sonnet-4-5-20250929",this.maxTokens=e.maxTokens||32e3;let r=wo("anthropic",this.baseUrl);this.retryConfig=
|
|
1748
|
+
...[truncated ${n.length-e} chars]`:n:"No headers"}var vO,Ya,CO,Vh,TO,zu,Hu,xO,sS,oS,iS,Yh,pi,Xh=R(()=>{Zn();Wi();te();xr();Qn();ko();vO=15e3,Ya=2*1024*1024,CO=1.5*1024*1024;Vh="You are Claude Code, Anthropic's official CLI for Claude.",TO=["claude-code-20250219","interleaved-thinking-2025-05-14"],zu="2023-06-01",Hu=64,xO=1024,sS=18e4,oS=6e4,iS={readfile:"Read",write_file:"Write",edit_file:"Edit",glob_search:"Glob",glob:"Glob",search:"Grep",execute_shell:"Bash",bash:"Bash",shell:"Bash",todo_write:"TodoWrite",task:"Task",web_fetch:"WebFetch",web_search:"WebSearch",notebook_edit:"NotebookEdit",ask_user:"AskUserQuestion"},Yh={Read:"readfile",Write:"write_file",Edit:"edit_file",Glob:"glob_search",Grep:"search",Bash:"execute_shell",TodoWrite:"todo_write",Task:"task",WebFetch:"web_fetch",WebSearch:"web_search",NotebookEdit:"notebook_edit",AskUserQuestion:"ask_user"},pi=class{client;defaultModel;maxTokens;retryConfig;baseUrl;authToken;isProxyMode;claudeCodeUserId;betaFeatures;systemPromptPrefix;sanitizeToolsForProxy;disableCaching;thinkingConfig=null;constructor(e){this.authToken=e.authToken,this.baseUrl=(e.baseUrl||"https://api.anthropic.com").replace(/\/+$/,"");let t=this.baseUrl.includes("api.anthropic.com");this.isProxyMode=e.forceClaudeCodeMode||!t;let n=typeof e.userId=="string"?e.userId.trim():"";this.claudeCodeUserId=n?this.sanitizeUserId(n):this.generateSafeUserId(),this.betaFeatures=e.betaFeatures||TO,this.systemPromptPrefix=e.systemPromptPrefix||(this.isProxyMode?Vh:null),this.sanitizeToolsForProxy=false,this.disableCaching=e.disableCaching||false,this.client=pO.create({baseURL:this.baseUrl,headers:this.buildHeaders(),timeout:3e5,validateStatus:()=>true}),this.defaultModel=e.defaultModel||"claude-sonnet-4-5-20250929",this.maxTokens=e.maxTokens||32e3;let r=wo("anthropic",this.baseUrl);this.retryConfig=Vr(void 0,{...r,...e.retry}),this.debugLog("Initialized",{baseUrl:this.baseUrl,isProxyMode:this.isProxyMode,defaultModel:this.defaultModel,betaFeatures:this.betaFeatures});}setThinking(e){this.thinkingConfig=e,this.debugLog("Thinking config updated",{config:e});}setUserId(e){let t=e?.trim?.()||"";t&&(this.claudeCodeUserId=this.sanitizeUserId(t));}isCacheControlError(e){let t="";try{let n=e.response?.data;if(typeof n=="string")t=n.toLowerCase();else if(n&&typeof n=="object"){let r={error:n.error,message:n.message,type:n.type,code:n.code};t=JSON.stringify(r).toLowerCase();}else t=String(e.message||"").toLowerCase();}catch{t=String(e.message||"").toLowerCase();}return t.includes("cache_control")||t.includes("ttl=")||t.includes("ephemeral")||t.includes("cache")&&t.includes("block")}async chat(e,t={}){let n={...t,disableCaching:t.disableCaching??this.disableCaching,thinking:t.thinking??this.thinkingConfig??void 0},r=this.retryConfig.requestMaxRetries,o=null,i=n.disableCaching||false;for(let a=0;a<=r;a++){let l={...n,...i?{disableCaching:true}:{}},c=this.buildPayload(e,l);a===0&&this.logRequest(t.model||this.defaultModel,c);try{let u=Date.now(),d=this.isProxyMode?"/v1/messages?beta=true":"/v1/messages",m=await this.client.post(d,c,{responseType:"stream",signal:t.signal});if(m.status!==200){let y="";for await(let S of m.data)y+=S.toString();let b=`${this.baseUrl}${d}`,C=vr(b,this.buildHeaders(),c,!1);p.error("CURL","=== [chat] API Error - Full Request CURL ==="),p.error("CURL",C),p.error("CURL",`=== Error Headers: ${rS(m.headers)} ===`),p.error("CURL",`=== Error Response: ${y.substring(0,1e3)} ===`);let T=new Error(`Anthropic API error: ${m.status}`);T.response={status:m.status,headers:m.headers,data:y};try{let S=JSON.parse(y);T.response.data=S,S.error?.message?T.message=`Anthropic API error: ${m.status} - ${S.error.message}`:S.message&&(T.message=`Anthropic API error: ${m.status} - ${S.message}`),this.debugLog("API Error Details",S);}catch{this.debugLog("API Error (non-JSON)",{status:m.status,dataLength:y.length});}throw T}let g=await this.collectStreamResponse(m.data),h=Date.now()-u;return je.llmResponse("anthropic",h,g.usage,g.choices[0]),this.debugLog("Response",{duration:`${h}ms`,usage:g.usage}),g}catch(u){await this.normalizeAxiosStreamError(u),o=u;let d=An(u);if(d.code==="PROXY_UPSTREAM_FAILED"){let b=JSON.stringify(c||{}).length,C=Array.isArray(e)?e.length:0,T=Array.isArray(e)?e.reduce((S,E)=>E?.content?typeof E.content=="string"?S+E.content.length:Array.isArray(E.content)?S+E.content.map(v=>typeof v.text=="string"?v.text.length:0).reduce((v,I)=>v+I,0):S:S,0):0;p.warn("Anthropic","Upstream request failed (PROXY_UPSTREAM_FAILED)",{attempt:`${a+1}/${r+1}`,payloadSize:b,msgCount:C,promptChars:T,status:u.response?.status});}if(this.debugLog("Error",{message:u.message,category:d.category,code:d.code,attempt:`${a+1}/${r+1}`}),je.llmError("anthropic",u),this.isCacheControlError(u)&&!i){i=true,this.disableCaching=true,this.debugLog("Cache control not supported, disabling caching for retry",{errorMessage:u.message,attempt:a+1}),p.warn("Anthropic","\u26A0\uFE0F Provider \u4E0D\u652F\u6301 cache_control\uFF0C\u5DF2\u81EA\u52A8\u7981\u7528\u7F13\u5B58\u91CD\u8BD5...");continue}if(!d.retryable||a===r)throw d;let m=Xl(u.response?.headers),g=zi(d.category,a+1,m||d.retryAfter),h=d.category==="retryable_rate_limit",y=h?`\u23F3 API \u4EE3\u7406\u901F\u7387\u9650\u5236\uFF0C${ln(g)} \u540E\u91CD\u8BD5...`:`Retrying in ${ln(g)}...`;this.debugLog("Retrying",{delay:ln(g),attempt:a+1,isRateLimit:h,serverDelay:m?ln(m):"none",retryMsg:y});try{await As(g,n.signal);}catch(b){throw b?.name==="AbortError"&&this.debugLog("Chat retry interrupted by user"),b}}}throw o||new Error("Unknown error during retry")}async collectStreamResponse(e){let t="",n="",r=[],o="",i=null,a="";for await(let c of e){let u=c.toString();t+=u;let d=t.split(`
|
|
1749
1749
|
`);t=d.pop()||"";for(let m of d){let g=m.trim();if(!g||!g.startsWith("data: "))continue;let h=g.slice(6);if(h!=="[DONE]")try{let y=JSON.parse(h);if(process.env.CLI_DEBUG==="1"){let b=JSON.stringify(y).substring(0,80);p.debug("SSE",`${y.type.padEnd(20)} ${b}${JSON.stringify(y).length>80?"...":""}`);}switch(y.type){case "message_start":a=y.message?.id||"",i=y.message?.usage;break;case "content_block_start":if(y.content_block?.type==="tool_use"){let b=y.content_block,C=this.isProxyMode?Yh[b.name]||this.fromClaudeCodeToolName(b.name):b.name;r.push({id:b.id,type:"function",function:{name:C,arguments:""}});}break;case "content_block_delta":y.delta?.type==="text_delta"?n+=y.delta.text||"":y.delta?.type==="input_json_delta"?r.length>0&&(r[r.length-1].function.arguments+=y.delta.partial_json||""):y.delta?.type==="thinking_delta"&&(o+=y.delta.thinking||"");break;case "message_delta":y.usage&&(i={...i,...y.usage});break}}catch(y){process.env.CLI_DEBUG==="1"&&p.warn("Anthropic",`Stream parse error: ${y}, data: ${h.substring(0,200)}`);}}}let l=this.buildUsageFromRaw(i);return {id:a,choices:[{message:{role:"assistant",content:n||"",tool_calls:r.length>0?r:void 0,...o?{reasoning_content:o}:{}},finish_reason:r.length>0?"tool_calls":"stop"}],usage:l}}async*chatStreamed(e,t={}){let n={...t,disableCaching:t.disableCaching??this.disableCaching,thinking:t.thinking??this.thinkingConfig??void 0},r=this.retryConfig.streamMaxRetries,o=0,i=n.disableCaching||false,a=true;for(;;){let l={...n,...i?{disableCaching:true}:{}},c=this.buildPayload(e,l);c.stream=true,a&&(this.logRequest(t.model||this.defaultModel,c,true),a=false);try{let u=Date.now(),d=this.isProxyMode?"/v1/messages?beta=true":"/v1/messages",m=await this.client.post(d,c,{responseType:"stream",signal:t.signal});if(this.debugLog("Stream started",{status:m.status}),m.status!==200){let x="";for await(let U of m.data)x+=U.toString();let B=`${this.baseUrl}${d}`,H=vr(B,this.buildHeaders(),c,!1);p.error("CURL","=== [chatStreamed] API Error - Full Request CURL ==="),p.error("CURL",H),p.error("CURL",`=== Error Headers: ${rS(m.headers)} ===`),p.error("CURL",`=== Error Response: ${x.substring(0,1e3)} ===`);let W=new Error(`Anthropic API error: ${m.status}`);W.response={status:m.status,headers:m.headers,data:x};try{let U=JSON.parse(x);W.response.data=U,U.error?.message?W.message=`Anthropic API error: ${m.status} - ${U.error.message}`:U.message&&(W.message=`Anthropic API error: ${m.status} - ${U.message}`),this.debugLog("API Error Details (stream)",U);}catch{this.debugLog("API Error (non-JSON, stream)",{status:m.status,dataLength:x.length});}throw W}let g="",h=[],y=0,b=!1,C=null,T=!1,S=Date.now(),E=0,v=0,I=null,D=null,O=[],k=null;for await(let x of this.createTimeoutStream(m.data,t.signal)){S=Date.now();let B=x.toString();g+=B;let H=g.split(/\n\n+/);g=H.pop()||"";for(let W of H){let U=W.split(`
|
|
1750
1750
|
`),z="";for(let q of U){let P=q.trim();if(P&&!P.startsWith("event:"))if(P.startsWith("data:")){let $=P.slice(5);$.startsWith(" ")&&($=$.slice(1)),z+=$;}else z+=P;}if(!(!z||z==="[DONE]"))try{let q=z.trim(),P=JSON.parse(q);if(process.env.CLI_DEBUG==="1"){let V=JSON.stringify(P).substring(0,80);p.debug("SSE",`${P.type.padEnd(20)} ${V}${JSON.stringify(P).length>80?"...":""}`);}let $=Date.now(),F=this.handleStreamEvent(P,h,y,b,C);if(process.env.CLI_DEBUG==="1"){let V=Date.now()-$;V>50&&p.warn("SSE",`\u26A0\uFE0F Slow event handling: ${P.type} took ${V}ms`);}if(F.yield){let V=Date.now();if(yield F.yield,process.env.CLI_DEBUG==="1"){let Z=Date.now()-V;Z>100&&p.warn("SSE",`\u26A0\uFE0F Slow yield consumer: ${P.type} yield took ${Z}ms`);}}if(F.roleSent!==void 0&&(b=F.roleSent),F.incrementToolIndex&&y++,F.usage&&(C=F.usage),F.error)throw new Error(F.error);F.contentBlockStart&&(v++,F.blockType&&(D=F.blockType)),F.contentBlockStop&&(E++,D==="thinking"&&(yield {choices:[{delta:{reasoning_complete:!0},index:0}]}),D=null),F.messageStop&&(T=!0),F.stopReason&&(I=F.stopReason),P.type==="content_block_start"?P.content_block?.type==="thinking"?k={type:"thinking",thinking:"",signature:""}:P.content_block?.type==="redacted_thinking"&&O.push({type:"redacted_thinking",data:P.content_block.data}):P.type==="content_block_delta"?k&&(P.delta?.type==="thinking_delta"?k.thinking+=P.delta.thinking||"":P.delta?.type==="signature_delta"&&(k.signature+=P.delta.signature||"")):P.type==="content_block_stop"&&k&&(O.push({type:k.type,thinking:k.thinking,signature:k.signature}),k=null);}catch{}}}let M=Date.now()-u;if(this.debugLog("Stream completion check",{messageStopReceived:T,stopReason:I,contentBlocksStarted:v,contentBlocksCompleted:E,toolCallsCount:h.length,duration:`${M}ms`}),!T&&!I){let x=new Error(`Stream incomplete: message_stop not received (blocks: ${v} started, ${E} completed)`);throw x.code="STREAM_INCOMPLETE",x.isNetworkInterrupt=!0,this.debugLog("Stream incomplete detected",{messageStopReceived:T,stopReason:I,contentBlocksStarted:v,contentBlocksCompleted:E,toolCallsCount:h.length,duration:`${M}ms`}),x}if(v!==E)if(I==="max_tokens")this.debugLog("Content blocks mismatch due to max_tokens (expected, not an error)",{contentBlocksStarted:v,contentBlocksCompleted:E,stopReason:I}),p.warn("Anthropic","\u26A0\uFE0F Response truncated due to max_tokens limit. Consider increasing max_tokens or breaking down the task.");else {let x=new Error(`Stream incomplete: content blocks mismatch (${v} started, ${E} completed)`);throw x.code="STREAM_INCOMPLETE",x.isNetworkInterrupt=!0,this.debugLog("Content blocks mismatch",{contentBlocksStarted:v,contentBlocksCompleted:E,stopReason:I}),x}if(h.length>0&&I!=="max_tokens")for(let x of h){let B=x.function?.arguments||"";if(B&&B.trim())try{JSON.parse(B);}catch{let H=new Error(`Stream incomplete: tool arguments truncated for ${x.function?.name}`);throw H.code="STREAM_INCOMPLETE",H.isNetworkInterrupt=!0,H.toolName=x.function?.name,this.debugLog("Tool arguments truncated",{toolName:x.function?.name,argsLength:B.length,argsPreview:B.substring(0,100)}),H}}else if(I==="max_tokens"&&h.length>0){let x=h[h.length-1],B=x?.function?.arguments||"";try{JSON.parse(B);}catch{this.debugLog("Tool arguments truncated due to max_tokens (expected)",{toolName:x?.function?.name,argsLength:B.length}),p.warn("Anthropic",`\u26A0\uFE0F Tool call ${x?.function?.name} arguments truncated due to max_tokens. The tool call will be incomplete.`);}}this.debugLog("finalUsage before build",C);let N=this.buildUsageFromRaw(C);this.debugLog("usage after build",N),!b&&h.length===0&&p.warn("Anthropic",`\u26A0\uFE0F Stream completed with no content! duration: ${M}ms, usage: ${JSON.stringify(C)}`),je.llmResponse("anthropic-stream",M,N||{},{}),this.debugLog("Stream complete",{duration:`${M}ms`}),yield {choices:[{delta:{},finish_reason:"stop",index:0}],...N?{usage:N}:{},...O.length>0?{thinking_blocks:O}:{}};return}catch(u){await this.normalizeAxiosStreamError(u);let d=An(u);this.debugLog("Stream error",{message:u.message,category:d.category,retryable:d.retryable});let m=this.isProxyMode?"/v1/messages?beta=true":"/v1/messages",g=`${this.baseUrl}${m}`,h=vr(g,this.buildHeaders(),c,false);if(p.error("CURL","=== [chatStreamed catch] Stream Error - Full Request CURL ==="),p.error("CURL",h),p.error("CURL",`=== Error: ${d.message} ===`),je.llmError("anthropic-stream",u),this.isCacheControlError(u)&&!i){i=true,this.disableCaching=true,this.debugLog("Cache control not supported, disabling caching for retry",{errorMessage:u.message,attempt:o+1}),p.warn("Anthropic","\u26A0\uFE0F Provider \u4E0D\u652F\u6301 cache_control\uFF0C\u5DF2\u81EA\u52A8\u7981\u7528\u7F13\u5B58\u91CD\u8BD5...");continue}if(d.retryable&&o<r){o++;let y=Xl(u.response?.headers),b=zi(d.category,o,y||d.retryAfter),C=d.category==="retryable_rate_limit",T=d.category==="retryable_stream";this.debugLog("Stream retrying",{delay:ln(b),attempt:`${o}/${r}`,isRateLimit:C,isStreamIncomplete:T}),yield {type:"stream_retry",error:d.message,errorCode:d.code,attempt:o,maxRetries:r,delayMs:b,isRateLimit:C,isNetworkError:T};try{await As(b,t.signal);}catch(S){throw S?.name==="AbortError"&&this.debugLog("Stream retry interrupted by user"),S}this.debugLog("Stream retry starting",{attempt:o}),yield {type:"stream_recovered",attempt:o,maxRetries:r};continue}throw d}}}buildPayload(e,t){let n=t.model||this.defaultModel,{system:r,anthropicMessages:o}=this.convertMessages(e,t),i=o,a=[];if(t.disableCaching?(a.push({type:"text",text:Vh}),r&&a.push({type:"text",text:`
|
|
1751
1751
|
`+r})):(a.push({type:"text",text:Vh,cache_control:{type:"ephemeral"}}),r&&a.push({type:"text",text:`
|
|
@@ -1753,7 +1753,7 @@ Tool results are returned via tool_result messages.`}supportsExtendedThinking(e)
|
|
|
1753
1753
|
${e}
|
|
1754
1754
|
</system_context>`};Array.isArray(o.content)?n[r]={...o,content:[i,...o.content]}:typeof o.content=="string"&&(n[r]={...o,content:[i,{type:"text",text:o.content}]});}return n}buildToolsPayload(e,t){return e.map(r=>{let o=this.transformToolDefinition(r);return t.enableFGTS&&(o.eager_input_streaming=true),o})}ensureLastToolCacheControl(e,t){if(e.length===0||t.disableCaching)return;let n=e[e.length-1];n.cache_control={type:"ephemeral"},this.debugLog("Added cache_control to last tool",{toolName:n.name});}buildWebSearchTool(e){let t={type:"web_search_20250305",name:"web_search"};return e.max_uses&&(t.max_uses=e.max_uses),e.user_location&&(t.user_location=e.user_location),t}buildThinkingPayload(e){let t=e.thinking?.budget_tokens||this.maxTokens-1;return {type:"enabled",budget_tokens:Math.max(t,xO)}}buildMetadata(e){let t={...e};return t.user_id?t.user_id=this.sanitizeUserId(t.user_id):t.user_id=this.claudeCodeUserId,t}shouldEnableThinking(e,t){return t.thinking?.type==="enabled"?true:t.thinking?.type==="disabled"?false:!!(e.endsWith("-thinking")||e.includes("opus-4-6")||e.includes("opus-4.6")||e.includes("opus-4-5")||e.includes("opus-4.5"))}normalizeModelName(e){return e.endsWith("-thinking")?e.replace(/-thinking$/,""):e}convertMessages(e,t){let n=this.normalizeMessages(e),r=[],o=[];for(let u of n){if(u.role==="system"){let m=Fe(u.content).trim();m&&r.push(m);continue}let d=this.convertSingleMessage(u);d&&o.push(d);}let i=this.mergeConsecutiveUserMessages(o),l=this.validateToolResultPairs(i);return l.length>0&&l[0].role!=="user"&&l.unshift({role:"user",content:[{type:"text",text:"..."}]}),l.length>0&&!t.disableCaching&&this.addMessageCacheControl(l),{system:r.length>0?r.join(`
|
|
1755
1755
|
|
|
1756
|
-
`):null,anthropicMessages:l}}addMessageCacheControl(e){let t=false;for(let n=e.length-1;n>=0;n--){let r=e[n];if(!(r.role!=="user"||!Array.isArray(r.content))){for(let o=r.content.length-1;o>=0;o--){let i=r.content[o];if(!t&&i.type==="tool_result"){i.cache_control={type:"ephemeral"},t=true,this.debugLog("Added cache_control to tool_result",{tool_use_id:i.tool_use_id});break}}if(t)break}}t||this.addTextBlockCacheControl(e);}addTextBlockCacheControl(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role==="user"&&Array.isArray(n.content)){for(let r=n.content.length-1;r>=0;r--)if(n.content[r].type==="text"){n.content[r].cache_control={type:"ephemeral"},this.debugLog("Added cache_control to user text block");return}}}}validateToolResultPairs(e){let t=new Set,n=new Set;for(let i of e)if(Array.isArray(i.content))for(let a of i.content)a.type==="tool_use"&&a.id&&t.add(a.id),a.type==="tool_result"&&a.tool_use_id&&n.add(a.tool_use_id);let r=new Set;for(let i of t)n.has(i)&&r.add(i);this.debugLog("Tool pairing analysis",{toolUseCount:t.size,toolResultCount:n.size,pairedCount:r.size,orphanToolUseIds:Array.from(t).filter(i=>!r.has(i)),orphanToolResultIds:Array.from(n).filter(i=>!r.has(i))});let o=[];for(let i of e){if(!Array.isArray(i.content)){o.push(i);continue}let a=i.content.filter(l=>{if(l.type==="tool_use"){let c=r.has(l.id);return c||this.debugLog("Removing orphan tool_use",{id:l.id}),c}if(l.type==="tool_result"){let c=r.has(l.tool_use_id);return c||this.debugLog("Removing orphan tool_result",{tool_use_id:l.tool_use_id}),c}return true});a.length>0?o.push({...i,content:a}):this.debugLog("Skipping empty message after tool pairing filter",{role:i.role});}return o}mergeConsecutiveUserMessages(e){if(e.length===0)return [];let t=[];for(let n of e){let r=t[t.length-1];if(r&&r.role==="user"&&n.role==="user"){let o=Array.isArray(r.content)?r.content:[{type:"text",text:r.content}],i=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];r.content=[...o,...i];}else t.push(n);}return t}convertSingleMessage(e){if(e.role==="tool"){let n=Fe(e.content),r=wO(n);return n.length!==r.length&&this.debugLog("Tool output truncated",{tool_call_id:e.tool_call_id,original:n.length,truncated:r.length}),{role:"user",content:[{type:"tool_result",tool_use_id:e.tool_call_id,content:r}]}}if(e.role==="assistant"){let n=[],r=false;if(e.thinking_blocks&&e.thinking_blocks.length>0){r=true;for(let i of e.thinking_blocks)if(i.type==="thinking"){let a={type:"thinking",thinking:i.thinking};i.signature!==void 0&&(a.signature=i.signature),n.push(a);}else if(i.type==="redacted_thinking"){let a={type:"redacted_thinking"};i.data!==void 0&&(a.data=i.data),n.push(a);}}let o=Fe(e.content);if(o){let i=o.trimEnd();n.push({type:"text",text:i||"."});}else r&&(n.push({type:"text",text:"."}),this.debugLog("Added placeholder text after thinking (no text content)"));if(e.tool_calls)for(let i of e.tool_calls){let a=(i.function.arguments||"").trim(),l={};if(a.length>0)try{l=JSON.parse(a);}catch{this.debugLog("Failed to parse tool arguments",{tool:i.function.name});}let c=this.isProxyMode?iS[i.function.name]||this.toClaudeCodeToolName(i.function.name):i.function.name;n.push({type:"tool_use",id:i.id,name:c,input:l});}if(n.length>0){let i=n[n.length-1];this.debugLog("Assistant message final check",{contentLength:n.length,lastBlockType:i.type,hasThinkingBlocks:r,blockTypes:n.map(a=>a.type),lastBlockTextPreview:i.type==="text"?(i.text||"").substring(0,50):void 0}),i.type==="thinking"||i.type==="redacted_thinking"?(n.push({type:"text",text:"."}),this.debugLog("Fixed: Added text block after thinking")):i.type==="text"&&(!i.text||!i.text.trim())&&n.some(l=>l.type==="thinking"||l.type==="redacted_thinking")&&(i.text=".",this.debugLog("Fixed: Ensured text block has content after thinking"));}return n.length>0?{role:"assistant",content:n}:null}if(Array.isArray(e.content)){let n=e.content.filter(i=>i.type==="text");if(!e.content.some(i=>i.type!=="text")&&n.length===1){let i=n[0].text;return i.trim()?{role:"user",content:i}:null}let o=this.convertMultimodalContent(e.content);return o.length>0?{role:"user",content:o}:null}let t=Fe(e.content);return t.trim()?{role:"user",content:t}:null}convertMultimodalContent(e){let t=[];for(let n of e)if(n.type==="text")t.push({type:"text",text:n.text});else if(n.type==="image_url"){let r=this.convertImageUrl(n.image_url.url);r&&t.push(r);}return t}convertImageUrl(e){if(e.startsWith("data:")){let t=e.match(/^data:([^;]+);base64,(.+)$/);if(t)return {type:"image",source:{type:"base64",media_type:t[1],data:t[2]}}}else return {type:"image",source:{type:"url",url:e}};return null}normalizeMessages(e){let t=e.filter(n=>{let r=n.role==="assistant"&&!!(n.tool_calls&&n.tool_calls.length>0),o=n.role==="assistant"&&!!(n.thinking_blocks&&n.thinking_blocks.length>0);return r||o?true:n.content?typeof n.content=="string"?n.content.trim().length>0:Array.isArray(n.content)?n.content.length>0:true:false});return t.length===0?[]:(this.validateMessageAlternation(t),t)}validateMessageAlternation(e){let t=e.filter(r=>r.role!=="system"),n=false;for(let r=1;r<t.length;r++)t[r].role===t[r-1].role&&(n=true,this.debugLog("Message alternation warning",{index:r,prevRole:t[r-1].role,currentRole:t[r].role}));!n&&t.length>1&&this.debugLog("Message alternation OK",{messageCount:t.length,roles:t.map(r=>r.role)});}convertResponse(e){this.debugLog("Raw response",e);let t=e.content||[],n="",r=[],o="";for(let a of t)if(a.type==="text")n+=a.text;else if(a.type==="tool_use"){let l=this.isProxyMode?Yh[a.name]||this.fromClaudeCodeToolName(a.name):a.name;r.push({id:a.id,type:"function",function:{name:l,arguments:JSON.stringify(a.input)}});}else a.type==="thinking"&&(o=a.thinking||"");let i=this.buildUsageFromRaw(e.usage);return {id:e.id,choices:[{message:{role:"assistant",content:n||"",tool_calls:r.length>0?r:void 0,...o?{reasoning_content:o}:{}},finish_reason:this.convertStopReason(e.stop_reason)}],usage:i}}buildUsageFromRaw(e){if(!e)return {prompt_tokens:0,completion_tokens:0,total_tokens:0};let t={prompt_tokens:e.input_tokens||0,completion_tokens:e.output_tokens||0,total_tokens:(e.input_tokens||0)+(e.output_tokens||0)};return e.cache_read_input_tokens&&(t.cache_read_input_tokens=e.cache_read_input_tokens),e.cache_creation_input_tokens&&(t.cache_creation_input_tokens=e.cache_creation_input_tokens),e.cache_creation&&(e.cache_creation.ephemeral_5m_input_tokens&&(t.cache_creation_5m_tokens=e.cache_creation.ephemeral_5m_input_tokens),e.cache_creation.ephemeral_1h_input_tokens&&(t.cache_creation_1h_tokens=e.cache_creation.ephemeral_1h_input_tokens)),t}convertStopReason(e){switch(e){case "end_turn":return "stop";case "max_tokens":return "length";case "tool_use":return "tool_calls";default:return "stop"}}handleStreamEvent(e,t,n,r,o){switch(e.type){case "message_start":return this.debugLog("message_start usage",e.message?.usage),process.env.CLI_DEBUG==="1"&&e.message&&p.debug("Anthropic",`message_start full: ${JSON.stringify(e.message,null,2)}`),{usage:e.message?.usage,yield:{type:"message_start",message:{id:e.message?.id,model:e.message?.model}}};case "content_block_start":return {...this.handleContentBlockStart(e,t,n,r),contentBlockStart:true};case "content_block_delta":return this.handleContentBlockDelta(e,t);case "content_block_stop":return this.validateToolArguments(t),{contentBlockStop:true};case "message_delta":this.debugLog("message_delta usage",{eventUsage:e.usage,currentUsage:o});let a=e.delta?.stop_reason||e.stop_reason;if(a&&this.debugLog("message_delta stop_reason",a),e.usage&&o){let u={...o,...e.usage};return this.debugLog("merged usage",u),{usage:u,stopReason:a}}return {usage:e.usage||o,stopReason:a};case "message_stop":return this.debugLog("Message stop received"),{messageStop:true};case "ping":return {};case "error":return {error:e.error?.message||"Stream error"};default:let l=e.type?.toLowerCase()||"";if(l==="done"||l==="stream_end"||l==="end")return this.debugLog("Alternative message stop received",{type:e.type}),{messageStop:true};let c=e.stop_reason||e.delta?.stop_reason;return c?(this.debugLog("stop_reason found in unknown event",{type:e.type,stopReason:c}),{stopReason:c}):(this.debugLog("Unknown event type",{type:e.type}),{})}}handleContentBlockStart(e,t,n,r){let o=e.content_block?.type;if(o==="text")return r?{blockType:o}:{yield:{choices:[{delta:{role:"assistant"},index:0}]},roleSent:true,blockType:o};if(o==="tool_use"){let i=e.content_block,a=this.isProxyMode?Yh[i.name]||this.fromClaudeCodeToolName(i.name):i.name,l="";return i.input&&typeof i.input=="object"&&Object.keys(i.input).length>0&&(l=JSON.stringify(i.input)),t.push({index:n,id:i.id,type:"function",function:{name:a,arguments:l}}),{yield:{choices:[{delta:{tool_calls:[{index:n,id:i.id,type:"function",function:{name:a}}]},index:0}]},incrementToolIndex:true,blockType:o}}else if(o==="thinking")return {blockType:o};return {blockType:o}}handleContentBlockDelta(e,t){if(e.delta?.type==="text_delta")return {yield:{choices:[{delta:{content:e.delta.text||""},index:0}]}};if(e.delta?.type==="input_json_delta"){let n=e.delta.partial_json||"";if(t.length>0){let r=t[t.length-1];return r.function.arguments+=n,{yield:{choices:[{delta:{tool_calls:[{index:r.index,function:{arguments:n}}]},index:0}]}}}}else {if(e.delta?.type==="thinking_delta")return {yield:{choices:[{delta:{reasoning_content:e.delta.thinking},index:0}]}};if(e.delta?.type==="signature_delta")return {}}return {}}validateToolArguments(e){if(e.length===0)return;let t=e[e.length-1];if(t.function.arguments)try{JSON.parse(t.function.arguments);}catch{let n=this.tryFixJson(t.function.arguments);n?(t.function.arguments=n,this.debugLog("Auto-fixed tool arguments",{tool:t.function.name})):this.debugLog("Invalid tool arguments JSON",{tool:t.function.name});}}tryFixJson(e){let t=e.trim();if(!t.endsWith("}")){t+="}";try{return JSON.parse(t),t}catch{}}t=e.replace(/,\s*$/,""),t.endsWith("}")||(t+="}");try{return JSON.parse(t),t}catch{}let n=0,r=0,o=false,i=false;for(let a of e){if(i){i=false;continue}if(a==="\\"){i=true;continue}if(a==='"'){o=!o;continue}o||(a==="{"?n++:a==="}"?n--:a==="["?r++:a==="]"&&r--);}for(t=e,o&&(t+='"');r>0;)t+="]",r--;for(;n>0;)t+="}",n--;try{return JSON.parse(t),t}catch{return null}}transformToolDefinition(e){let t=this.isProxyMode?iS[e.name]||this.toClaudeCodeToolName(e.name):e.name;if(this.isProxyMode){let o=this.stripSchemaPropertyDescriptions(e.parameters);return {name:t,description:e.description,input_schema:o}}if(!this.sanitizeToolsForProxy)return {name:t,description:e.description,input_schema:e.parameters};let n=this.truncateDescription(e.description||e.name),r=this.stripSchemaDescriptions(e.parameters);return {name:t,description:n,input_schema:r}}stripSchemaPropertyDescriptions(e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>this.stripSchemaPropertyDescriptions(n));let t={...e};if(t.properties&&typeof t.properties=="object"){let n={};for(let[r,o]of Object.entries(t.properties))if(o&&typeof o=="object"){let i={...o};delete i.description,i.properties&&(i.properties=this.stripSchemaPropertyDescriptions({properties:i.properties}).properties),i.items&&(i.items=this.stripSchemaPropertyDescriptions(i.items)),n[r]=i;}else n[r]=o;t.properties=n;}t.items&&(t.items=this.stripSchemaPropertyDescriptions(t.items));for(let n of ["oneOf","anyOf","allOf"])t[n]&&Array.isArray(t[n])&&(t[n]=t[n].map(r=>this.stripSchemaPropertyDescriptions(r)));return t}toClaudeCodeToolName(e){return e.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}fromClaudeCodeToolName(e){return e.replace(/["\s/>]+$/g,"").trim().replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}truncateDescription(e){if(!e)return "Utility tool";let t=e.replace(/\s+/g," ").trim();return t?t.length>120?`${t.slice(0,117)}...`:t:"Utility tool"}stripSchemaDescriptions(e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>this.stripSchemaDescriptions(n));let t={...e};if(delete t.description,t.properties&&typeof t.properties=="object"){let n={};for(let[r,o]of Object.entries(t.properties))n[r]=this.stripSchemaDescriptions(o);t.properties=n;}for(let n of ["items","oneOf","anyOf","allOf"])t[n]&&(t[n]=Array.isArray(t[n])?t[n].map(r=>this.stripSchemaDescriptions(r)):this.stripSchemaDescriptions(t[n]));return t}buildHeaders(){return this.isProxyMode?this.buildClaudeCodeHeaders():this.buildOfficialHeaders()}buildOfficialHeaders(){return {"anthropic-api-key":this.authToken,"anthropic-version":zu,"Content-Type":"application/json"}}buildClaudeCodeHeaders(){return {Accept:"application/json","X-Stainless-Retry-Count":"0","X-Stainless-Timeout":"600","X-Stainless-Lang":"js","X-Stainless-Package-Version":"0.70.0","X-Stainless-OS":"MacOS","X-Stainless-Arch":"arm64","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":process.version,"anthropic-dangerous-direct-browser-access":"true","anthropic-version":zu,"x-app":"cli","User-Agent":"claude-cli/2.0.55 (external, cli)",Authorization:`Bearer ${this.authToken}`,"Content-Type":"application/json","anthropic-beta":this.betaFeatures.join(","),"x-stainless-helper-method":"stream","accept-language":"*","sec-fetch-mode":"cors","accept-encoding":"br, gzip, deflate"}}generateSafeUserId(){if(this.isProxyMode){let n=randomBytes(32).toString("hex"),r=this.generateUUID();return `user_${n}_account__session_${r}`}let e=randomBytes(16).toString("hex"),t=randomBytes(4).toString("hex");return `user_${e}_session_${t}`}generateUUID(){let e=randomBytes(16);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=e.toString("hex");return `${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}sanitizeUserId(e){if(this.isProxyMode){if(/^[\w.+-]+@[\w.-]+\.\w+$/.test(e)){let t=createHash("sha256").update(e).digest("hex"),n=this.generateUUID();return `user_${t}_account__session_${n}`}if(/^\+?[\d\s-]{10,}$/.test(e)){let t=createHash("sha256").update(e).digest("hex"),n=this.generateUUID();return `user_${t}_account__session_${n}`}return e}return e.length>Hu?createHash("sha256").update(e).digest("hex").slice(0,Hu):/^[\w.+-]+@[\w.-]+\.\w+$/.test(e)?createHash("sha256").update(e).digest("hex").slice(0,Hu):/^\+?[\d\s-]{10,}$/.test(e)?createHash("sha256").update(e).digest("hex").slice(0,Hu):e}async normalizeAxiosStreamError(e){let t=e?.response?.data;if(!(!t||typeof t!="object"||!(typeof t.pipe=="function")))try{let r=await this.readStreamToString(t);try{e.response.data=JSON.parse(r);}catch{e.response.data=r;}}catch{}}readStreamToString(e){return new Promise((t,n)=>{let r=[];e.on("data",o=>{r.push(typeof o=="string"?Buffer.from(o):o);}),e.on("end",()=>t(Buffer.concat(r).toString("utf-8"))),e.on("error",n);})}async*createTimeoutStream(e,t){let n=false,r=Date.now(),o=0,i=e[Symbol.asyncIterator](),a=()=>new Promise(l=>setImmediate(l));for(process.env.CLI_DEBUG==="1"&&p.debug("STREAM","\u{1F30A} Stream processing started");;){if(t?.aborted)throw this.debugLog("Stream aborted by signal"),process.env.CLI_DEBUG==="1"&&p.debug("STREAM",`\u26D4 Stream aborted after ${o} chunks`),e.destroy?.(),new Error("Request aborted");await a();let l=n?sS:oS,c;try{let u=t?new Promise((g,h)=>{let y=()=>{h(new Error("Request aborted"));};t.aborted?y():t.addEventListener("abort",y,{once:!0});}):null,d=[i.next(),new Promise((g,h)=>{c=setTimeout(()=>{h(new Error(n?`Stream idle timeout: no data for ${sS/1e3}s`:`Stream first chunk timeout: no response for ${oS/1e3}s`));},l);})];u&&d.push(u);let m=await Promise.race(d);if(c&&clearTimeout(c),m.done){process.env.CLI_DEBUG==="1"&&p.debug("STREAM",`\u2705 Stream completed successfully (${o} chunks, ${Date.now()-r}ms)`);return}n=!0,r=Date.now(),o++,process.env.CLI_DEBUG==="1"&&o%100===0&&p.debug("STREAM",`\u{1F4E6} Processed ${o} chunks`),yield m.value;}catch(u){c&&clearTimeout(c);let d=u.message?.includes("aborted")||u.message==="Request aborted";throw this.debugLog("Stream timeout or abort",{error:u.message,isAbort:d,receivedFirstChunk:n,idleTime:`${(Date.now()-r)/1e3}s`}),e.destroy?.(),d?(u.name="AbortError",u.code="ERR_CANCELED",u.category="canceled",u):(u.code="STREAM_TIMEOUT",u.isNetworkInterrupt=true,u)}}}debugLog(e,t){process.env.CLI_DEBUG==="1"&&p.debug("Anthropic",t?`${e} ${JSON.stringify(t,null,2)}`:e);}logRequest(e,t,n=false){process.env.CLI_DEBUG_PAYLOAD==="1"&&this.debugLog("Full payload",JSON.stringify(t,null,2));let r=this.isProxyMode?"/v1/messages?beta=true":"/v1/messages",o=`${this.baseUrl}${r}`,i=this.buildHeaders();xp(o,i,t);let a=this.isProxyMode?{Authorization:"Bearer ***","anthropic-version":zu,"anthropic-beta":this.betaFeatures.join(","),"Content-Type":"application/json"}:{"anthropic-api-key":"***","anthropic-version":zu,"Content-Type":"application/json"};je.llmRequest(n?"anthropic-stream":"anthropic",e,t,o,a),this.debugLog(`${n?"Stream ":""}Request`,{url:o,model:e,isProxyMode:this.isProxyMode});}};});var qu,aS=R(()=>{Ha();tS();nS();Xh();te();qu=class extends pr{constraints;promptBuilder;provider;defaultModel;disableCaching;constructor(e){super(),this.constraints=new Ka,this.promptBuilder=new Ja,this.defaultModel=e.defaultModel||"claude-3-5-sonnet-20241022",this.disableCaching=e.disableCaching||false;let{authToken:t,baseUrl:n,defaultModel:r,maxTokens:o,disableCaching:i,userId:a,...l}=e;this.provider=new pi({authToken:t,baseUrl:n,defaultModel:this.defaultModel,maxTokens:o,disableCaching:this.disableCaching,userId:a,...l});}prepareRequest(e,t){let n=t.model||this.defaultModel,r=super.prepareRequest(e,{...t,model:n}),o={...r.options};if(o.maxInputTokens!==void 0&&(o.max_tokens=o.maxInputTokens,delete o.maxInputTokens),!o.max_tokens){let i=this.constraints.getTokenLimits(n);o.max_tokens=Math.min(4096,i.maxOutput);}if(!this.disableCaching&&this.constraints.supportsPromptCaching(n)){let i=r.messages[0]?.content?.length||0,a=this.promptBuilder.getCachingRecommendation(i);a.shouldUseCache&&(o.enableCaching=true,o.cacheTtl=a.cacheTTL);}return {...r,options:o}}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("AnthropicAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,maxInputTokens:n.options.max_tokens,enableCaching:n.options.enableCaching,cacheTtl:n.options.cacheTtl,signal:t.signal})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("AnthropicAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,maxInputTokens:n.options.max_tokens,enableCaching:n.options.enableCaching,cacheTtl:n.options.cacheTtl,signal:t.signal,enableFGTS:n.options.enableFGTS});}getProvider(){return this.provider}getModelCapabilities(e){let t=e||this.defaultModel;return {supportsVision:this.constraints.supportsVision(t),supportsTools:this.constraints.supportsTools(t),supportsThinking:this.constraints.supportsThinking?.(t)||false,supportsPromptCaching:this.constraints.supportsPromptCaching(t),tokenLimits:this.constraints.getTokenLimits(t)}}getCachingRecommendation(e){return this.promptBuilder.getCachingRecommendation(e)}};});var Ku,lS=R(()=>{Kh();qa();Ku=class extends Qs{getConstraints(){let e=super.getConstraints(),t={...e.validators??{}};t.temperature=Yt(0,1);let n=t.tool_choice;t.tool_choice=o=>o==="required"?"tool_choice=required is not supported by Kimi API":typeof n=="function"?n(o):true;let r=t.n;return t.n=(o,i)=>{let a=typeof r=="function"?r(o,i):true;if(a!==true)return a;let l=i?.temperature??1,c=typeof l=="number"?l:Number(l),u=typeof o=="number"?o:Number(o);return !Number.isNaN(c)&&c<=.001&&u>1?"temperature <= 0.001 requires n=1 for Kimi API":true},{...e,validators:t}}};});var Ju,cS=R(()=>{Ha();lS();Jh();ju();te();Ju=class extends pr{constraints;promptBuilder;provider;defaultModel;constructor(e){super(),this.constraints=new Ku,this.promptBuilder=new eo,this.defaultModel=e.defaultModel||"kimi-k2-0905-preview";let{apiKey:t,baseUrl:n,defaultModel:r,maxTokens:o,maxInputTokens:i,...a}=e;this.provider=new Lr({apiKey:t,baseUrl:n,defaultModel:this.defaultModel,maxTokens:o,maxInputTokens:i,...a,structuredOutputMode:"json_object"});}prepareRequest(e,t){let n=t.model||this.defaultModel;return super.prepareRequest(e,{...t,model:n})}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("KimiAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("KimiAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,signal:t.signal});}getProvider(){return this.provider}};});var Vu,uS=R(()=>{qa();Vu=class extends ds{getConstraints(){return {maxOutputTokens:{},maxInputTokens:{},supportedParams:new Set(["model","messages","stream","max_tokens","temperature","topP","topK","stopSequences","tools","structuredOutput","signal"]),validators:{temperature:Yt(0,2),topP:Yt(0,1),topK:Yt(1,128),max_tokens:e=>{let t=Number(e);return Number.isNaN(t)?"Must be a number":t<1?"Must be at least 1":true},stopSequences:e=>Array.isArray(e)?e.some(n=>typeof n!="string"||n.length===0)?"All stop sequences must be non-empty strings":true:"Must be an array of strings",stream:Yx("boolean")},defaults:{temperature:1}}}};});var Xa,dS=R(()=>{Uu();Xa=class extends ps{buildSystemPrompt(e){let{workDir:t,language:n="zh",modelName:r,customInstructions:o}=e,i=[];return i.push({content:this.getCoreInstructions(n,r),order:0}),i.push(this.getWorkingDirectorySection(t,n)),i.push({content:this.getCapabilitiesSection(n,r),order:20}),i.push({title:n==="zh"?"\u53C2\u6570\u7EA6\u675F":"Parameter Constraints",content:this.getConstraintInstructions(n),order:30}),i.push({title:n==="zh"?"\u5DE5\u5177\u8C03\u7528":"Tool Usage",content:this.getToolUseInstructions(n),order:40}),i.push({content:this.getGeneralRules(n),order:50}),o&&o.trim()&&i.push({title:n==="zh"?"\u81EA\u5B9A\u4E49\u6307\u4EE4":"Custom Instructions",content:o.trim(),order:60}),Zs(this.combinePromptSections(i))}getConstraintInstructions(e){return e==="zh"?`- temperature: 0.0 - 2.0
|
|
1756
|
+
`):null,anthropicMessages:l}}addMessageCacheControl(e){let t=false;for(let n=e.length-1;n>=0;n--){let r=e[n];if(!(r.role!=="user"||!Array.isArray(r.content))){for(let o=r.content.length-1;o>=0;o--){let i=r.content[o];if(!t&&i.type==="tool_result"){i.cache_control={type:"ephemeral"},t=true,this.debugLog("Added cache_control to tool_result",{tool_use_id:i.tool_use_id});break}}if(t)break}}t||this.addTextBlockCacheControl(e);}addTextBlockCacheControl(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role==="user"&&Array.isArray(n.content)){for(let r=n.content.length-1;r>=0;r--)if(n.content[r].type==="text"){n.content[r].cache_control={type:"ephemeral"},this.debugLog("Added cache_control to user text block");return}}}}validateToolResultPairs(e){let t=new Set,n=new Set;for(let i of e)if(Array.isArray(i.content))for(let a of i.content)a.type==="tool_use"&&a.id&&t.add(a.id),a.type==="tool_result"&&a.tool_use_id&&n.add(a.tool_use_id);let r=new Set;for(let i of t)n.has(i)&&r.add(i);this.debugLog("Tool pairing analysis",{toolUseCount:t.size,toolResultCount:n.size,pairedCount:r.size,orphanToolUseIds:Array.from(t).filter(i=>!r.has(i)),orphanToolResultIds:Array.from(n).filter(i=>!r.has(i))});let o=[];for(let i of e){if(!Array.isArray(i.content)){o.push(i);continue}let a=i.content.filter(l=>{if(l.type==="tool_use"){let c=r.has(l.id);return c||this.debugLog("Removing orphan tool_use",{id:l.id}),c}if(l.type==="tool_result"){let c=r.has(l.tool_use_id);return c||this.debugLog("Removing orphan tool_result",{tool_use_id:l.tool_use_id}),c}return true});a.length>0?o.push({...i,content:a}):this.debugLog("Skipping empty message after tool pairing filter",{role:i.role});}return o}mergeConsecutiveUserMessages(e){if(e.length===0)return [];let t=[];for(let n of e){let r=t[t.length-1];if(r&&r.role==="user"&&n.role==="user"){let o=Array.isArray(r.content)?r.content:[{type:"text",text:r.content}],i=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];r.content=[...o,...i];}else t.push(n);}return t}convertSingleMessage(e){if(e.role==="tool"){let n=Fe(e.content),r=wO(n);return n.length!==r.length&&this.debugLog("Tool output truncated",{tool_call_id:e.tool_call_id,original:n.length,truncated:r.length}),{role:"user",content:[{type:"tool_result",tool_use_id:e.tool_call_id,content:r}]}}if(e.role==="assistant"){let n=[],r=false;if(e.thinking_blocks&&e.thinking_blocks.length>0){r=true;for(let i of e.thinking_blocks)if(i.type==="thinking"){let a={type:"thinking",thinking:i.thinking};i.signature!==void 0&&(a.signature=i.signature),n.push(a);}else if(i.type==="redacted_thinking"){let a={type:"redacted_thinking"};i.data!==void 0&&(a.data=i.data),n.push(a);}}let o=Fe(e.content);if(o){let i=o.trimEnd();n.push({type:"text",text:i||"."});}else r&&(n.push({type:"text",text:"."}),this.debugLog("Added placeholder text after thinking (no text content)"));if(e.tool_calls)for(let i of e.tool_calls){let a=(i.function.arguments||"").trim(),l={};if(a.length>0)try{l=JSON.parse(a);}catch{this.debugLog("Failed to parse tool arguments",{tool:i.function.name});}let c=this.isProxyMode?iS[i.function.name]||this.toClaudeCodeToolName(i.function.name):i.function.name;n.push({type:"tool_use",id:i.id,name:c,input:l});}if(n.length>0){let i=n[n.length-1];this.debugLog("Assistant message final check",{contentLength:n.length,lastBlockType:i.type,hasThinkingBlocks:r,blockTypes:n.map(a=>a.type),lastBlockTextPreview:i.type==="text"?(i.text||"").substring(0,50):void 0}),i.type==="thinking"||i.type==="redacted_thinking"?(n.push({type:"text",text:"."}),this.debugLog("Fixed: Added text block after thinking")):i.type==="text"&&(!i.text||!i.text.trim())&&n.some(l=>l.type==="thinking"||l.type==="redacted_thinking")&&(i.text=".",this.debugLog("Fixed: Ensured text block has content after thinking"));}return n.length>0?{role:"assistant",content:n}:null}if(Array.isArray(e.content)){let n=e.content.filter(i=>i.type==="text");if(!e.content.some(i=>i.type!=="text")&&n.length===1){let i=n[0].text;return i.trim()?{role:"user",content:i}:null}let o=this.convertMultimodalContent(e.content);return o.length>0?{role:"user",content:o}:null}let t=Fe(e.content);return t.trim()?{role:"user",content:t}:null}convertMultimodalContent(e){let t=[];for(let n of e)if(n.type==="text")t.push({type:"text",text:n.text});else if(n.type==="image_url"){let r=this.convertImageUrl(n.image_url.url);r&&t.push(r);}return t}convertImageUrl(e){if(e.startsWith("data:")){let t=e.match(/^data:([^;]+);base64,(.+)$/);if(t)return {type:"image",source:{type:"base64",media_type:t[1],data:t[2]}}}else return {type:"image",source:{type:"url",url:e}};return null}normalizeMessages(e){let t=e.filter(n=>{let r=n.role==="assistant"&&!!(n.tool_calls&&n.tool_calls.length>0),o=n.role==="assistant"&&!!(n.thinking_blocks&&n.thinking_blocks.length>0);return r||o?true:n.content?typeof n.content=="string"?n.content.trim().length>0:Array.isArray(n.content)?n.content.length>0:true:false});return t.length===0?[]:(this.validateMessageAlternation(t),t)}validateMessageAlternation(e){let t=e.filter(r=>r.role!=="system"),n=false;for(let r=1;r<t.length;r++)t[r].role===t[r-1].role&&(n=true,this.debugLog("Message alternation warning",{index:r,prevRole:t[r-1].role,currentRole:t[r].role}));!n&&t.length>1&&this.debugLog("Message alternation OK",{messageCount:t.length,roles:t.map(r=>r.role)});}convertResponse(e){this.debugLog("Raw response",e);let t=e.content||[],n="",r=[],o="";for(let a of t)if(a.type==="text")n+=a.text;else if(a.type==="tool_use"){let l=this.isProxyMode?Yh[a.name]||this.fromClaudeCodeToolName(a.name):a.name;r.push({id:a.id,type:"function",function:{name:l,arguments:JSON.stringify(a.input)}});}else a.type==="thinking"&&(o=a.thinking||"");let i=this.buildUsageFromRaw(e.usage);return {id:e.id,choices:[{message:{role:"assistant",content:n||"",tool_calls:r.length>0?r:void 0,...o?{reasoning_content:o}:{}},finish_reason:this.convertStopReason(e.stop_reason)}],usage:i}}buildUsageFromRaw(e){if(!e)return {prompt_tokens:0,completion_tokens:0,total_tokens:0};let t={prompt_tokens:e.input_tokens||0,completion_tokens:e.output_tokens||0,total_tokens:(e.input_tokens||0)+(e.output_tokens||0)};return e.cache_read_input_tokens&&(t.cache_read_input_tokens=e.cache_read_input_tokens),e.cache_creation_input_tokens&&(t.cache_creation_input_tokens=e.cache_creation_input_tokens),e.cache_creation&&(e.cache_creation.ephemeral_5m_input_tokens&&(t.cache_creation_5m_tokens=e.cache_creation.ephemeral_5m_input_tokens),e.cache_creation.ephemeral_1h_input_tokens&&(t.cache_creation_1h_tokens=e.cache_creation.ephemeral_1h_input_tokens)),t}convertStopReason(e){switch(e){case "end_turn":return "stop";case "max_tokens":return "length";case "tool_use":return "tool_calls";default:return "stop"}}handleStreamEvent(e,t,n,r,o){switch(e.type){case "message_start":return this.debugLog("message_start usage",e.message?.usage),process.env.CLI_DEBUG==="1"&&e.message&&p.debug("Anthropic",`message_start full: ${JSON.stringify(e.message,null,2)}`),{usage:e.message?.usage,yield:{type:"message_start",message:{id:e.message?.id,model:e.message?.model}}};case "content_block_start":return {...this.handleContentBlockStart(e,t,n,r),contentBlockStart:true};case "content_block_delta":return this.handleContentBlockDelta(e,t);case "content_block_stop":return this.validateToolArguments(t),{contentBlockStop:true};case "message_delta":this.debugLog("message_delta usage",{eventUsage:e.usage,currentUsage:o});let a=e.delta?.stop_reason||e.stop_reason;if(a&&this.debugLog("message_delta stop_reason",a),e.usage&&o){let u={...o,...e.usage};return this.debugLog("merged usage",u),{usage:u,stopReason:a}}return {usage:e.usage||o,stopReason:a};case "message_stop":return this.debugLog("Message stop received"),{messageStop:true};case "ping":return {};case "error":return {error:e.error?.message||"Stream error"};default:let l=e.type?.toLowerCase()||"";if(l==="done"||l==="stream_end"||l==="end")return this.debugLog("Alternative message stop received",{type:e.type}),{messageStop:true};let c=e.stop_reason||e.delta?.stop_reason;return c?(this.debugLog("stop_reason found in unknown event",{type:e.type,stopReason:c}),{stopReason:c}):(this.debugLog("Unknown event type",{type:e.type}),{})}}handleContentBlockStart(e,t,n,r){let o=e.content_block?.type;if(o==="text")return r?{blockType:o}:{yield:{choices:[{delta:{role:"assistant"},index:0}]},roleSent:true,blockType:o};if(o==="tool_use"){let i=e.content_block,a=this.isProxyMode?Yh[i.name]||this.fromClaudeCodeToolName(i.name):i.name,l="";return i.input&&typeof i.input=="object"&&Object.keys(i.input).length>0&&(l=JSON.stringify(i.input)),t.push({index:n,id:i.id,type:"function",function:{name:a,arguments:l}}),{yield:{choices:[{delta:{tool_calls:[{index:n,id:i.id,type:"function",function:{name:a}}]},index:0}]},incrementToolIndex:true,blockType:o}}else if(o==="thinking")return {blockType:o};return {blockType:o}}handleContentBlockDelta(e,t){if(e.delta?.type==="text_delta")return {yield:{choices:[{delta:{content:e.delta.text||""},index:0}]}};if(e.delta?.type==="input_json_delta"){let n=e.delta.partial_json||"";if(t.length>0){let r=t[t.length-1];return r.function.arguments+=n,{yield:{choices:[{delta:{tool_calls:[{index:r.index,function:{arguments:n}}]},index:0}]}}}}else {if(e.delta?.type==="thinking_delta")return {yield:{choices:[{delta:{reasoning_content:e.delta.thinking},index:0}]}};if(e.delta?.type==="signature_delta")return {}}return {}}validateToolArguments(e){if(e.length===0)return;let t=e[e.length-1];if(t.function.arguments)try{JSON.parse(t.function.arguments);}catch{let n=this.tryFixJson(t.function.arguments);n?(t.function.arguments=n,this.debugLog("Auto-fixed tool arguments",{tool:t.function.name})):this.debugLog("Invalid tool arguments JSON",{tool:t.function.name});}}tryFixJson(e){let t=e.trim();if(!t.endsWith("}")){t+="}";try{return JSON.parse(t),t}catch{}}t=e.replace(/,\s*$/,""),t.endsWith("}")||(t+="}");try{return JSON.parse(t),t}catch{}let n=0,r=0,o=false,i=false;for(let a of e){if(i){i=false;continue}if(a==="\\"){i=true;continue}if(a==='"'){o=!o;continue}o||(a==="{"?n++:a==="}"?n--:a==="["?r++:a==="]"&&r--);}for(t=e,o&&(t+='"');r>0;)t+="]",r--;for(;n>0;)t+="}",n--;try{return JSON.parse(t),t}catch{return null}}transformToolDefinition(e){let t=this.isProxyMode?iS[e.name]||this.toClaudeCodeToolName(e.name):e.name;if(this.isProxyMode){let o=this.stripSchemaPropertyDescriptions(e.parameters);return {name:t,description:e.description,input_schema:o}}if(!this.sanitizeToolsForProxy)return {name:t,description:e.description,input_schema:e.parameters};let n=this.truncateDescription(e.description||e.name),r=this.stripSchemaDescriptions(e.parameters);return {name:t,description:n,input_schema:r}}stripSchemaPropertyDescriptions(e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>this.stripSchemaPropertyDescriptions(n));let t={...e};if(t.properties&&typeof t.properties=="object"){let n={};for(let[r,o]of Object.entries(t.properties))if(o&&typeof o=="object"){let i={...o};delete i.description,i.properties&&(i.properties=this.stripSchemaPropertyDescriptions({properties:i.properties}).properties),i.items&&(i.items=this.stripSchemaPropertyDescriptions(i.items)),n[r]=i;}else n[r]=o;t.properties=n;}t.items&&(t.items=this.stripSchemaPropertyDescriptions(t.items));for(let n of ["oneOf","anyOf","allOf"])t[n]&&Array.isArray(t[n])&&(t[n]=t[n].map(r=>this.stripSchemaPropertyDescriptions(r)));return t}toClaudeCodeToolName(e){return e.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}fromClaudeCodeToolName(e){return e.replace(/["\s/>]+$/g,"").trim().replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}truncateDescription(e){if(!e)return "Utility tool";let t=e.replace(/\s+/g," ").trim();return t?t.length>120?`${t.slice(0,117)}...`:t:"Utility tool"}stripSchemaDescriptions(e){if(!e||typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>this.stripSchemaDescriptions(n));let t={...e};if(delete t.description,t.properties&&typeof t.properties=="object"){let n={};for(let[r,o]of Object.entries(t.properties))n[r]=this.stripSchemaDescriptions(o);t.properties=n;}for(let n of ["items","oneOf","anyOf","allOf"])t[n]&&(t[n]=Array.isArray(t[n])?t[n].map(r=>this.stripSchemaDescriptions(r)):this.stripSchemaDescriptions(t[n]));return t}buildHeaders(){return this.isProxyMode?this.buildClaudeCodeHeaders():this.buildOfficialHeaders()}buildOfficialHeaders(){return {"anthropic-api-key":this.authToken,"anthropic-version":zu,"Content-Type":"application/json"}}buildClaudeCodeHeaders(){return {Accept:"application/json","X-Stainless-Retry-Count":"0","X-Stainless-Timeout":"600","X-Stainless-Lang":"js","X-Stainless-Package-Version":"0.70.0","X-Stainless-OS":"MacOS","X-Stainless-Arch":"arm64","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":process.version,"anthropic-dangerous-direct-browser-access":"true","anthropic-version":zu,"x-app":"cli","User-Agent":"claude-cli/2.0.55 (external, cli)",Authorization:`Bearer ${this.authToken}`,"Content-Type":"application/json","anthropic-beta":this.betaFeatures.join(","),"x-stainless-helper-method":"stream","accept-language":"*","sec-fetch-mode":"cors","accept-encoding":"br, gzip, deflate"}}generateSafeUserId(){if(this.isProxyMode){let n=randomBytes(32).toString("hex"),r=this.generateUUID();return `user_${n}_account__session_${r}`}let e=randomBytes(16).toString("hex"),t=randomBytes(4).toString("hex");return `user_${e}_session_${t}`}generateUUID(){let e=randomBytes(16);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=e.toString("hex");return `${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}sanitizeUserId(e){if(this.isProxyMode){if(/^[\w.+-]+@[\w.-]+\.\w+$/.test(e)){let t=createHash("sha256").update(e).digest("hex"),n=this.generateUUID();return `user_${t}_account__session_${n}`}if(/^\+?[\d\s-]{10,}$/.test(e)){let t=createHash("sha256").update(e).digest("hex"),n=this.generateUUID();return `user_${t}_account__session_${n}`}return e}return e.length>Hu?createHash("sha256").update(e).digest("hex").slice(0,Hu):/^[\w.+-]+@[\w.-]+\.\w+$/.test(e)?createHash("sha256").update(e).digest("hex").slice(0,Hu):/^\+?[\d\s-]{10,}$/.test(e)?createHash("sha256").update(e).digest("hex").slice(0,Hu):e}async normalizeAxiosStreamError(e){let t=e?.response?.data;if(!(!t||typeof t!="object"||!(typeof t.pipe=="function")))try{let r=await this.readStreamToString(t);try{e.response.data=JSON.parse(r);}catch{e.response.data=r;}}catch{}}readStreamToString(e){return new Promise((t,n)=>{let r=[];e.on("data",o=>{r.push(typeof o=="string"?Buffer.from(o):o);}),e.on("end",()=>t(Buffer.concat(r).toString("utf-8"))),e.on("error",n);})}async*createTimeoutStream(e,t){let n=false,r=Date.now(),o=0,i=e[Symbol.asyncIterator](),a=()=>new Promise(l=>setImmediate(l));for(process.env.CLI_DEBUG==="1"&&p.debug("STREAM","\u{1F30A} Stream processing started");;){if(t?.aborted)throw this.debugLog("Stream aborted by signal"),process.env.CLI_DEBUG==="1"&&p.debug("STREAM",`\u26D4 Stream aborted after ${o} chunks`),e.destroy?.(),new Error("Request aborted");await a();let l=n?sS:oS,c;try{let u=t?new Promise((g,h)=>{let y=()=>{h(new Error("Request aborted"));};t.aborted?y():t.addEventListener("abort",y,{once:!0});}):null,d=[i.next(),new Promise((g,h)=>{c=setTimeout(()=>{h(new Error(n?`Stream idle timeout: no data for ${sS/1e3}s`:`Stream first chunk timeout: no response for ${oS/1e3}s`));},l);})];u&&d.push(u);let m=await Promise.race(d);if(c&&clearTimeout(c),m.done){process.env.CLI_DEBUG==="1"&&p.debug("STREAM",`\u2705 Stream completed successfully (${o} chunks, ${Date.now()-r}ms)`);return}n=!0,r=Date.now(),o++,process.env.CLI_DEBUG==="1"&&o%100===0&&p.debug("STREAM",`\u{1F4E6} Processed ${o} chunks`),yield m.value;}catch(u){c&&clearTimeout(c);let d=u.message?.includes("aborted")||u.message==="Request aborted";throw this.debugLog("Stream timeout or abort",{error:u.message,isAbort:d,receivedFirstChunk:n,idleTime:`${(Date.now()-r)/1e3}s`}),e.destroy?.(),d?(u.name="AbortError",u.code="ERR_CANCELED",u.category="canceled",u):(u.code="STREAM_TIMEOUT",u.isNetworkInterrupt=true,u)}}}debugLog(e,t){process.env.CLI_DEBUG==="1"&&p.debug("Anthropic",t?`${e} ${JSON.stringify(t,null,2)}`:e);}logRequest(e,t,n=false){process.env.CLI_DEBUG_PAYLOAD==="1"&&this.debugLog("Full payload",JSON.stringify(t,null,2));let r=this.isProxyMode?"/v1/messages?beta=true":"/v1/messages",o=`${this.baseUrl}${r}`,i=this.buildHeaders();xp(o,i,t);let a=this.isProxyMode?{Authorization:"Bearer ***","anthropic-version":zu,"anthropic-beta":this.betaFeatures.join(","),"Content-Type":"application/json"}:{"anthropic-api-key":"***","anthropic-version":zu,"Content-Type":"application/json"};je.llmRequest(n?"anthropic-stream":"anthropic",e,t,o,a),this.debugLog(`${n?"Stream ":""}Request`,{url:o,model:e,isProxyMode:this.isProxyMode});}};});var qu,aS=R(()=>{Ha();tS();nS();Xh();te();qu=class extends pr{constraints;promptBuilder;provider;defaultModel;disableCaching;constructor(e){super(),this.constraints=new Ka,this.promptBuilder=new Ja,this.defaultModel=e.defaultModel||"claude-3-5-sonnet-20241022",this.disableCaching=e.disableCaching||false;let{authToken:t,baseUrl:n,defaultModel:r,maxTokens:o,disableCaching:i,userId:a,...l}=e;this.provider=new pi({authToken:t,baseUrl:n,defaultModel:this.defaultModel,maxTokens:o,disableCaching:this.disableCaching,userId:a,...l});}prepareRequest(e,t){let n=t.model||this.defaultModel,r=super.prepareRequest(e,{...t,model:n}),o={...r.options};if(o.maxInputTokens!==void 0&&(o.max_tokens=o.maxInputTokens,delete o.maxInputTokens),!o.max_tokens){let i=this.constraints.getTokenLimits(n);o.max_tokens=Math.min(4096,i.maxOutput);}if(!this.disableCaching&&this.constraints.supportsPromptCaching(n)){let i=r.messages[0]?.content?.length||0,a=this.promptBuilder.getCachingRecommendation(i);a.shouldUseCache&&(o.enableCaching=true,o.cacheTtl=a.cacheTTL);}return {...r,options:o}}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("AnthropicAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,maxInputTokens:n.options.max_tokens,enableCaching:n.options.enableCaching,cacheTtl:n.options.cacheTtl,signal:t.signal})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("AnthropicAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,maxInputTokens:n.options.max_tokens,enableCaching:n.options.enableCaching,cacheTtl:n.options.cacheTtl,signal:t.signal,enableFGTS:n.options.enableFGTS});}getProvider(){return this.provider}getModelCapabilities(e){let t=e||this.defaultModel;return {supportsVision:this.constraints.supportsVision(t),supportsTools:this.constraints.supportsTools(t),supportsThinking:this.constraints.supportsThinking?.(t)||false,supportsPromptCaching:this.constraints.supportsPromptCaching(t),tokenLimits:this.constraints.getTokenLimits(t)}}getCachingRecommendation(e){return this.promptBuilder.getCachingRecommendation(e)}};});var Ku,lS=R(()=>{Kh();qa();Ku=class extends Qs{getConstraints(){let e=super.getConstraints(),t={...e.validators??{}};t.temperature=Yt(0,1);let n=t.tool_choice;t.tool_choice=o=>o==="required"?"tool_choice=required is not supported by Kimi API":typeof n=="function"?n(o):true;let r=t.n;return t.n=(o,i)=>{let a=typeof r=="function"?r(o,i):true;if(a!==true)return a;let l=i?.temperature??1,c=typeof l=="number"?l:Number(l),u=typeof o=="number"?o:Number(o);return !Number.isNaN(c)&&c<=.001&&u>1?"temperature <= 0.001 requires n=1 for Kimi API":true},{...e,validators:t}}};});var Ju,cS=R(()=>{Ha();lS();Jh();ju();te();Ju=class extends pr{constraints;promptBuilder;provider;defaultModel;constructor(e){super(),this.constraints=new Ku,this.promptBuilder=new eo,this.defaultModel=e.defaultModel||"kimi-k2-0905-preview";let{apiKey:t,baseUrl:n,defaultModel:r,maxTokens:o,maxInputTokens:i,...a}=e;this.provider=new Lr({apiKey:t,baseUrl:n,defaultModel:this.defaultModel,maxTokens:o,maxInputTokens:i,...a,structuredOutputMode:"json_object"});}prepareRequest(e,t){let n=t.model||this.defaultModel;return super.prepareRequest(e,{...t,model:n})}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("KimiAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("KimiAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,signal:t.signal});}getProvider(){return this.provider}};});var Vu,uS=R(()=>{qa();Vu=class extends us{getConstraints(){return {maxOutputTokens:{},maxInputTokens:{},supportedParams:new Set(["model","messages","stream","max_tokens","temperature","topP","topK","stopSequences","tools","structuredOutput","signal"]),validators:{temperature:Yt(0,2),topP:Yt(0,1),topK:Yt(1,128),max_tokens:e=>{let t=Number(e);return Number.isNaN(t)?"Must be a number":t<1?"Must be at least 1":true},stopSequences:e=>Array.isArray(e)?e.some(n=>typeof n!="string"||n.length===0)?"All stop sequences must be non-empty strings":true:"Must be an array of strings",stream:Yx("boolean")},defaults:{temperature:1}}}};});var Xa,dS=R(()=>{Uu();Xa=class extends ds{buildSystemPrompt(e){let{workDir:t,language:n="zh",modelName:r,customInstructions:o}=e,i=[];return i.push({content:this.getCoreInstructions(n,r),order:0}),i.push(this.getWorkingDirectorySection(t,n)),i.push({content:this.getCapabilitiesSection(n,r),order:20}),i.push({title:n==="zh"?"\u53C2\u6570\u7EA6\u675F":"Parameter Constraints",content:this.getConstraintInstructions(n),order:30}),i.push({title:n==="zh"?"\u5DE5\u5177\u8C03\u7528":"Tool Usage",content:this.getToolUseInstructions(n),order:40}),i.push({content:this.getGeneralRules(n),order:50}),o&&o.trim()&&i.push({title:n==="zh"?"\u81EA\u5B9A\u4E49\u6307\u4EE4":"Custom Instructions",content:o.trim(),order:60}),Zs(this.combinePromptSections(i))}getConstraintInstructions(e){return e==="zh"?`- temperature: 0.0 - 2.0
|
|
1757
1757
|
- topP: 0.0 - 1.0
|
|
1758
1758
|
- topK: >= 1
|
|
1759
1759
|
- maxOutputTokens: \u63A7\u5236\u8F93\u51FA\u957F\u5EA6
|
|
@@ -1797,19 +1797,19 @@ Your primary responsibilities:
|
|
|
1797
1797
|
1. **Accuracy first**: ensure correctness
|
|
1798
1798
|
2. **Be concise**: avoid redundancy
|
|
1799
1799
|
3. **Safety first**: avoid destructive actions
|
|
1800
|
-
4. **Professional tone**: objective and technical`}getModelDisplayName(e){return e?e.includes("gemini-3")?"Gemini 3":e.includes("gemini-2.5")?"Gemini 2.5":e.includes("gemini-2.0")?"Gemini 2.0":e.includes("gemini-1.5")?"Gemini 1.5":e.includes("gemini-1.0")?"Gemini 1.0":e:"Gemini"}supportsVision(e){return e?e.includes("vision")?true:this.isModelType(e,"gemini-1.5*","gemini-2*","gemini-3*"):false}},new Xa;});function _O(s){let e="/v1beta/models";if(!s)return e;let t=s.trim();if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return n=n.replace(/\/+$/,""),n.includes("/models")||(n=`${n}/models`),n}function IO(s){try{let e=JSON.parse(s);return e&&typeof e=="object"?e:{value:e}}catch{return {}}}function mS(s){if(s==null)return "{}";if(typeof s=="string"){let e=s.trim();return e?e.startsWith("{")||e.startsWith("[")?e:JSON.stringify({value:e}):"{}"}try{return JSON.stringify(s)}catch{return "{}"}}function hS(s){return s.includes("gemini-3")||s.includes("preview")}function AO(s){let e=-1;for(let n=s.length-1;n>=0;n--){let r=s[n];if(r.role==="user"&&r.parts?.some(o=>o.text)){e=n;break}}if(e===-1)return s;let t=s.slice();for(let n=e;n<t.length;n++){let r=t[n];if(r.role==="model"&&r.parts){let o=r.parts.slice();for(let i=0;i<o.length;i++){let a=o[i];if(a.functionCall){a.thoughtSignature||(o[i]={...a,thoughtSignature:EO},t[n]={...r,parts:o});break}}}}return t}var EO,gS,mi,Qh=R(()=>{Zn();xr();Qn();ko();te();EO="skip_thought_signature_validator",gS=8192;mi=class{client;apiKey;baseURL;pathPrefix;userId;retryConfig;authMode;thinkingSettings=null;constructor(e,t="https://generativelanguage.googleapis.com",n,r){this.apiKey=e,this.baseURL=t.replace(/\/$/,""),this.pathPrefix=_O(r?.pathPrefix),this.userId=randomUUID(),this.authMode=this.resolveAuthMode(r?.authMode),this.retryConfig=Yr(wo("gemini"),n);let o={"Content-Type":"application/json","User-Agent":`GeminiCLI/v22.16.0 (${ho__default.platform()}; ${ho__default.arch()})`,"x-goog-api-client":"google-genai-sdk/1.30.0 gl-node/v22.16.0","x-gemini-api-privileged-user-id":this.userId};this.authMode==="header"?o["x-goog-api-key"]=this.apiKey:this.authMode==="bearer"&&(o.Authorization=`Bearer ${this.apiKey}`),this.client=pO.create({baseURL:this.baseURL,timeout:6e5,headers:o});}resolveAuthMode(e){if(e&&e!=="auto")return e;let t=this.baseURL.includes("generativelanguage.googleapis.com"),n=this.apiKey.startsWith("AIza");return t||n?"query":"bearer"}setThinking(e){this.thinkingSettings=e,process.env.CLI_DEBUG==="1"&&de("GEMINI","Thinking config updated",{config:e});}getThinking(){return this.thinkingSettings}convertMessages(e){let t=this.filterIncompleteToolCalls(e),n=[],r=[],o=[],i=()=>{o.length>0&&(r.push({parts:o,role:"user"}),o=[]);};for(let l of t)if(l.role==="system"){let c=Fe(l.content);c&&n.push(c);}else if(l.role==="user"){i();let c=[];if(typeof l.content=="string")c.push({text:l.content});else if(Array.isArray(l.content)){for(let u of l.content)if(u.type==="text")c.push({text:u.text});else if(u.type==="image_url"){let d=u.image_url.url;if(d.startsWith("data:")){let m=d.match(/^data:([^;]+);base64,(.+)$/);m&&c.push({inlineData:{mimeType:m[1],data:m[2]}});}}}r.push({parts:c,role:"user"});}else if(l.role==="assistant"){i();let c=[],u=Fe(l.content);if(u&&c.push({text:u}),l.tool_calls)for(let d of l.tool_calls){let m={functionCall:{name:d.function.name,args:IO(d.function.arguments),id:d.id}};d.thoughtSignature&&(m.thoughtSignature=d.thoughtSignature),c.push(m);}r.push({parts:c,role:"model"});}else if(l.role==="tool"){let c=Fe(l.content)||"",d={name:l.name||"unknown",response:{output:c}};l.tool_call_id&&(d.id=l.tool_call_id),o.push({functionResponse:d});}i();let a={contents:r};return n.length>0&&(a.systemInstruction={parts:n.map(l=>({text:l})),role:"user"}),a}filterIncompleteToolCalls(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.role==="system"){t.push(r),n++;continue}if(r.role==="assistant"&&r.tool_calls&&r.tool_calls.length>0){let o=r.tool_calls,i=o.length,a=o.every(h=>!!h.id),l=[],c=[],u=n+1;for(;u<e.length;){let h=e[u];if(h.role==="system"){l.push(h),u++;continue}if(h.role!=="tool")break;l.push(h),c.push(h),u++;}let d=c.length,m=c.every(h=>!!h.tool_call_id),g=d===i;if(g&&a&&m){let h=new Set(c.map(y=>y.tool_call_id).filter(y=>!!y));for(let y of o)if(!h.has(y.id)){g=false;break}}if(g){t.push(r);for(let h of l)t.push(h);}else {process.env.CLI_DEBUG==="1"&&p.debug("GEMINI","Filtering incomplete tool call turn",{toolCalls:o.map(h=>({id:h.id,name:h.function.name})),responseCount:d});for(let h of l)h.role==="system"&&t.push(h);}n=u;continue}if(r.role==="tool"){process.env.CLI_DEBUG==="1"&&p.debug("GEMINI","Dropping orphan tool message",{toolCallId:r.tool_call_id,toolName:r.name}),n++;continue}t.push(r),n++;}return t}convertTools(e){return !e||e.length===0?[]:[{functionDeclarations:e.map(n=>({name:n.name,description:n.description,parameters:{type:n.parameters.type,properties:n.parameters.properties,required:n.parameters.required,additionalProperties:n.parameters.additionalProperties},parametersJsonSchema:{type:n.parameters.type,properties:n.parameters.properties,required:n.parameters.required,additionalProperties:n.parameters.additionalProperties}}))}]}buildGenerationConfig(e){let t={temperature:e.temperature??1,topP:e.topP??.95,topK:e.topK??64};return e.maxOutputTokens!==void 0&&(t.maxOutputTokens=e.maxOutputTokens),e.stopSequences&&e.stopSequences.length>0&&(t.stopSequences=e.stopSequences),e.structuredOutput&&(t.responseMimeType="application/json",t.responseSchema=e.structuredOutput.schema),e.enableThinking&&(t.thinkingConfig={thinkingBudget:e.thinkingBudget??gS,includeThoughts:true}),t}parseSSELine(e){let t=e.trim();if(!t||(t.startsWith("data:")&&(t=t.slice(5).trim()),t==="[DONE]")||!t.startsWith("{"))return null;try{return JSON.parse(t)}catch{return null}}convertResponse(e,t){let n=e.candidates[0];if(!n)throw new Error("No candidate in Gemini response");let r=n.content?.parts||[],o=null,i=[];for(let c of r)c.text?o=(o||"")+c.text:c.functionCall&&i.push({id:c.functionCall.id||`call_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"function",function:{name:c.functionCall.name,arguments:mS(c.functionCall.args)}});let a=e.usageMetadata||{promptTokenCount:0,candidatesTokenCount:0,totalTokenCount:0},l=n.finishReason==="STOP"?i.length>0?"tool_calls":"stop":(n.finishReason||"stop").toLowerCase();return {id:t,choices:[{message:{role:"assistant",content:o,tool_calls:i.length>0?i:void 0},finish_reason:l}],usage:{prompt_tokens:a.promptTokenCount,completion_tokens:a.candidatesTokenCount,total_tokens:a.totalTokenCount,cached_tokens:a.cachedContentTokenCount}}}async makeRequest(e,t){let n,r=0;for(;r<=this.retryConfig.requestMaxRetries;)try{return await e()}catch(o){n=o,r++;let i=An(o),a=wr(o.response?.headers?.["retry-after"]);if(!i.retryable||r>this.retryConfig.requestMaxRetries)break;let l=Xr(a,r,this.retryConfig);await So(l);}throw n}async chat(e,t){let n=t.model||"gemini-2.5-flash",{contents:r,systemInstruction:o}=this.convertMessages(e),i=this.convertTools(t.tools||[]),a=this.buildGenerationConfig({temperature:t.temperature,structuredOutput:t.structuredOutput,topP:t.topP,topK:t.topK,stopSequences:t.stopSequences,maxOutputTokens:t.maxInputTokens}),l={contents:r,systemInstruction:o,generationConfig:a};i.length>0&&(l.tools=i);let c=`gemini-${Date.now()}`,u=`${this.pathPrefix}/${n}:generateContent`,d=this.authMode==="query"?{key:this.apiKey}:void 0;return this.makeRequest(async()=>{let m=await this.client.post(u,l,{params:d,signal:t.signal});return this.convertResponse(m.data,c)},"chat")}async*chatStreamed(e,t){let n=t.model||"gemini-2.5-flash",{contents:r,systemInstruction:o}=this.convertMessages(e),i=this.convertTools(t.tools||[]),a=hS(n),l=this.thinkingSettings?.type==="enabled",c=this.thinkingSettings?.type==="disabled",u=t.enableThinking!==void 0?t.enableThinking:l?true:c?false:a,d=t.thinkingBudget??this.thinkingSettings?.budget??gS,m=this.buildGenerationConfig({temperature:t.temperature,structuredOutput:t.structuredOutput,topP:t.topP,topK:t.topK,stopSequences:t.stopSequences,maxOutputTokens:t.maxInputTokens,enableThinking:u,thinkingBudget:d}),h={contents:hS(n)?AO(r):r,systemInstruction:o,generationConfig:m};i.length>0&&(h.tools=i);let y=`gemini-${Date.now()}`,b=`${this.pathPrefix}/${n}:streamGenerateContent`,C=`${this.baseURL}${b}`,T=this.authMode==="query"?{key:this.apiKey,alt:"sse"}:{alt:"sse"},S=new URL(C);for(let[D,O]of Object.entries(T))S.searchParams.append(D,O);let E={"Content-Type":"application/json",Accept:"*/*"};if(this.authMode==="header"?E["x-goog-api-key"]=this.apiKey:this.authMode==="bearer"&&(E.Authorization=`Bearer ${this.apiKey}`),process.env.CLI_DEBUG==="1"){p.info("GEMINI","=== Gemini Stream Request ==="),p.info("GEMINI",`URL: ${S.toString()}`),p.info("GEMINI",`Model: ${n}`),p.info("GEMINI",`AuthMode: ${this.authMode}`),p.info("GEMINI",`Tools: ${i.length>0?i[0].functionDeclarations.length:0}`),p.info("GEMINI",`Contents: ${r.length} messages`);let D=vr(S.toString(),E,h);p.info("GEMINI_CURL",D),p.debug("GEMINI","Request body:",{contentsCount:h.contents.length,hasSystemInstruction:!!h.systemInstruction,toolsCount:h.tools?.[0]?.functionDeclarations?.length||0,generationConfig:h.generationConfig});}if(process.env.CLI_DEBUG==="1"){de("GEMINI","[Gemini Stream Request]"),de("GEMINI",`URL: ${S.toString()}`),de("GEMINI",`Model: ${n}`),de("GEMINI",`Tools: ${i.length>0?i[0].functionDeclarations.length:0}`),de("GEMINI",`Contents: ${r.length} messages`);let D=vr(S.toString(),E,h);de("GEMINI_CURL",D);}let v=Date.now(),I=await this.makeRequest(async()=>{let D=this.authMode==="query"?{key:this.apiKey,alt:"sse"}:{alt:"sse"};return await this.client.post(b,h,{params:D,responseType:"stream",signal:t.signal,headers:{Accept:"*/*","Accept-Language":"*","sec-fetch-mode":"cors","Accept-Encoding":"br, gzip, deflate"}})},"chatStreamed");process.env.CLI_DEBUG==="1"&&(de("GEMINI","[Gemini Stream Started]"),de("GEMINI",`Status: ${I.status}`)),yield*this.streamGenerator(I.data,y,v);}async*streamGenerator(e,t,n){let r="",o=[],i="",a=[],l,c=u=>{let d=[],m=u.candidates?.[0];if(!m)return process.env.CLI_DEBUG==="1"&&de("GEMINI",`No candidate in response: ${JSON.stringify(u).slice(0,200)}`),d;u.usageMetadata&&(l=u.usageMetadata);let g=m.content?.parts;if(!g||g.length===0)process.env.CLI_DEBUG==="1"&&de("GEMINI",`No parts in candidate: ${JSON.stringify(m).slice(0,200)}`);else for(let h of g){if(h.thought&&!h.thoughtSignature&&h.text){process.env.CLI_DEBUG==="1"&&de("GEMINI",`Yielding reasoning: ${h.text.slice(0,50)}...`),d.push({choices:[{index:0,delta:{reasoning_content:h.text}}]});continue}if(h.text)h.thoughtSignature&&process.env.CLI_DEBUG==="1"?de("GEMINI",`Yielding final answer (with signature): ${h.text.slice(0,100)}...`):process.env.CLI_DEBUG==="1"&&de("GEMINI",`Yielding content: ${h.text.slice(0,100)}...`),i+=h.text,d.push({choices:[{index:0,delta:{content:h.text}}]});else if(h.functionCall){let y={id:h.functionCall.id||`call_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"function",function:{name:h.functionCall.name,arguments:mS(h.functionCall.args)},...h.thoughtSignature?{thoughtSignature:h.thoughtSignature}:{}};a.push(y),d.push({choices:[{index:0,delta:{tool_calls:[{index:a.length-1,id:y.id,type:"function",function:{name:y.function.name,arguments:y.function.arguments},...y.thoughtSignature?{thoughtSignature:y.thoughtSignature}:{}}]}}]});}}if(m.finishReason){let h=l||{promptTokenCount:0,candidatesTokenCount:0,totalTokenCount:0};if(process.env.CLI_DEBUG==="1"){let b=n?Date.now()-n:0;p.info("GEMINI","=== Gemini Stream Complete ==="),p.info("GEMINI",`Duration: ${b}ms`),p.info("GEMINI",`Finish Reason: ${m.finishReason}`),p.info("GEMINI",`Tool Calls: ${a.length}`),p.info("GEMINI",`Accumulated Content Length: ${i.length}`),p.info("GEMINI",`Usage: prompt=${h.promptTokenCount}, completion=${h.candidatesTokenCount}, total=${h.totalTokenCount}`),i&&p.info("GEMINI",`Content Preview: ${i.slice(0,500)}...`),a.length>0&&p.info("GEMINI","Tool Calls Detail:",a.map(C=>({id:C.id,name:C.function.name,argsLength:C.function.arguments.length})));}if(process.env.CLI_DEBUG==="1"){let b=n?Date.now()-n:0;de("GEMINI","[Gemini Stream Complete]"),de("GEMINI",`Duration: ${b}ms`),de("GEMINI",`Finish Reason: ${m.finishReason}`),de("GEMINI",`Tool Calls: ${a.length}`),de("GEMINI",`Accumulated Content Length: ${i.length}`),de("GEMINI",`Usage: prompt=${h.promptTokenCount}, completion=${h.candidatesTokenCount}, total=${h.totalTokenCount}`),i&&de("GEMINI",`Content Preview: ${i.slice(0,500)}`);}let y=m.finishReason==="STOP"?a.length>0?"tool_calls":"stop":m.finishReason.toLowerCase();d.push({id:t,choices:[{index:0,delta:{},finish_reason:y}],usage:{prompt_tokens:h.promptTokenCount,completion_tokens:h.candidatesTokenCount,total_tokens:h.totalTokenCount,cached_tokens:h.cachedContentTokenCount}});}return d};try{for await(let u of e){let d=u.toString();r+=d,process.env.CLI_DEBUG==="1"&&de("GEMINI",`Raw chunk (${d.length} bytes): ${d.slice(0,200)}...`);let m=r.split(/\r?\n/);r=m.pop()||"";for(let g of m){let h=g.trimEnd();if(!h){if(o.length===0)continue;let b=o.join(`
|
|
1800
|
+
4. **Professional tone**: objective and technical`}getModelDisplayName(e){return e?e.includes("gemini-3")?"Gemini 3":e.includes("gemini-2.5")?"Gemini 2.5":e.includes("gemini-2.0")?"Gemini 2.0":e.includes("gemini-1.5")?"Gemini 1.5":e.includes("gemini-1.0")?"Gemini 1.0":e:"Gemini"}supportsVision(e){return e?e.includes("vision")?true:this.isModelType(e,"gemini-1.5*","gemini-2*","gemini-3*"):false}},new Xa;});function _O(s){let e="/v1beta/models";if(!s)return e;let t=s.trim();if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return n=n.replace(/\/+$/,""),n.includes("/models")||(n=`${n}/models`),n}function IO(s){try{let e=JSON.parse(s);return e&&typeof e=="object"?e:{value:e}}catch{return {}}}function mS(s){if(s==null)return "{}";if(typeof s=="string"){let e=s.trim();return e?e.startsWith("{")||e.startsWith("[")?e:JSON.stringify({value:e}):"{}"}try{return JSON.stringify(s)}catch{return "{}"}}function hS(s){return s.includes("gemini-3")||s.includes("preview")}function AO(s){let e=-1;for(let n=s.length-1;n>=0;n--){let r=s[n];if(r.role==="user"&&r.parts?.some(o=>o.text)){e=n;break}}if(e===-1)return s;let t=s.slice();for(let n=e;n<t.length;n++){let r=t[n];if(r.role==="model"&&r.parts){let o=r.parts.slice();for(let i=0;i<o.length;i++){let a=o[i];if(a.functionCall){a.thoughtSignature||(o[i]={...a,thoughtSignature:EO},t[n]={...r,parts:o});break}}}}return t}var EO,gS,mi,Qh=R(()=>{Zn();xr();Qn();ko();te();EO="skip_thought_signature_validator",gS=8192;mi=class{client;apiKey;baseURL;pathPrefix;userId;retryConfig;authMode;thinkingSettings=null;constructor(e,t="https://generativelanguage.googleapis.com",n,r){this.apiKey=e,this.baseURL=t.replace(/\/$/,""),this.pathPrefix=_O(r?.pathPrefix),this.userId=randomUUID(),this.authMode=this.resolveAuthMode(r?.authMode),this.retryConfig=Vr(wo("gemini"),n);let o={"Content-Type":"application/json","User-Agent":`GeminiCLI/v22.16.0 (${ho__default.platform()}; ${ho__default.arch()})`,"x-goog-api-client":"google-genai-sdk/1.30.0 gl-node/v22.16.0","x-gemini-api-privileged-user-id":this.userId};this.authMode==="header"?o["x-goog-api-key"]=this.apiKey:this.authMode==="bearer"&&(o.Authorization=`Bearer ${this.apiKey}`),this.client=pO.create({baseURL:this.baseURL,timeout:6e5,headers:o});}resolveAuthMode(e){if(e&&e!=="auto")return e;let t=this.baseURL.includes("generativelanguage.googleapis.com"),n=this.apiKey.startsWith("AIza");return t||n?"query":"bearer"}setThinking(e){this.thinkingSettings=e,process.env.CLI_DEBUG==="1"&&de("GEMINI","Thinking config updated",{config:e});}getThinking(){return this.thinkingSettings}convertMessages(e){let t=this.filterIncompleteToolCalls(e),n=[],r=[],o=[],i=()=>{o.length>0&&(r.push({parts:o,role:"user"}),o=[]);};for(let l of t)if(l.role==="system"){let c=Fe(l.content);c&&n.push(c);}else if(l.role==="user"){i();let c=[];if(typeof l.content=="string")c.push({text:l.content});else if(Array.isArray(l.content)){for(let u of l.content)if(u.type==="text")c.push({text:u.text});else if(u.type==="image_url"){let d=u.image_url.url;if(d.startsWith("data:")){let m=d.match(/^data:([^;]+);base64,(.+)$/);m&&c.push({inlineData:{mimeType:m[1],data:m[2]}});}}}r.push({parts:c,role:"user"});}else if(l.role==="assistant"){i();let c=[],u=Fe(l.content);if(u&&c.push({text:u}),l.tool_calls)for(let d of l.tool_calls){let m={functionCall:{name:d.function.name,args:IO(d.function.arguments),id:d.id}};d.thoughtSignature&&(m.thoughtSignature=d.thoughtSignature),c.push(m);}r.push({parts:c,role:"model"});}else if(l.role==="tool"){let c=Fe(l.content)||"",d={name:l.name||"unknown",response:{output:c}};l.tool_call_id&&(d.id=l.tool_call_id),o.push({functionResponse:d});}i();let a={contents:r};return n.length>0&&(a.systemInstruction={parts:n.map(l=>({text:l})),role:"user"}),a}filterIncompleteToolCalls(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.role==="system"){t.push(r),n++;continue}if(r.role==="assistant"&&r.tool_calls&&r.tool_calls.length>0){let o=r.tool_calls,i=o.length,a=o.every(h=>!!h.id),l=[],c=[],u=n+1;for(;u<e.length;){let h=e[u];if(h.role==="system"){l.push(h),u++;continue}if(h.role!=="tool")break;l.push(h),c.push(h),u++;}let d=c.length,m=c.every(h=>!!h.tool_call_id),g=d===i;if(g&&a&&m){let h=new Set(c.map(y=>y.tool_call_id).filter(y=>!!y));for(let y of o)if(!h.has(y.id)){g=false;break}}if(g){t.push(r);for(let h of l)t.push(h);}else {process.env.CLI_DEBUG==="1"&&p.debug("GEMINI","Filtering incomplete tool call turn",{toolCalls:o.map(h=>({id:h.id,name:h.function.name})),responseCount:d});for(let h of l)h.role==="system"&&t.push(h);}n=u;continue}if(r.role==="tool"){process.env.CLI_DEBUG==="1"&&p.debug("GEMINI","Dropping orphan tool message",{toolCallId:r.tool_call_id,toolName:r.name}),n++;continue}t.push(r),n++;}return t}convertTools(e){return !e||e.length===0?[]:[{functionDeclarations:e.map(n=>({name:n.name,description:n.description,parameters:{type:n.parameters.type,properties:n.parameters.properties,required:n.parameters.required,additionalProperties:n.parameters.additionalProperties},parametersJsonSchema:{type:n.parameters.type,properties:n.parameters.properties,required:n.parameters.required,additionalProperties:n.parameters.additionalProperties}}))}]}buildGenerationConfig(e){let t={temperature:e.temperature??1,topP:e.topP??.95,topK:e.topK??64};return e.maxOutputTokens!==void 0&&(t.maxOutputTokens=e.maxOutputTokens),e.stopSequences&&e.stopSequences.length>0&&(t.stopSequences=e.stopSequences),e.structuredOutput&&(t.responseMimeType="application/json",t.responseSchema=e.structuredOutput.schema),e.enableThinking&&(t.thinkingConfig={thinkingBudget:e.thinkingBudget??gS,includeThoughts:true}),t}parseSSELine(e){let t=e.trim();if(!t||(t.startsWith("data:")&&(t=t.slice(5).trim()),t==="[DONE]")||!t.startsWith("{"))return null;try{return JSON.parse(t)}catch{return null}}convertResponse(e,t){let n=e.candidates[0];if(!n)throw new Error("No candidate in Gemini response");let r=n.content?.parts||[],o=null,i=[];for(let c of r)c.text?o=(o||"")+c.text:c.functionCall&&i.push({id:c.functionCall.id||`call_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"function",function:{name:c.functionCall.name,arguments:mS(c.functionCall.args)}});let a=e.usageMetadata||{promptTokenCount:0,candidatesTokenCount:0,totalTokenCount:0},l=n.finishReason==="STOP"?i.length>0?"tool_calls":"stop":(n.finishReason||"stop").toLowerCase();return {id:t,choices:[{message:{role:"assistant",content:o,tool_calls:i.length>0?i:void 0},finish_reason:l}],usage:{prompt_tokens:a.promptTokenCount,completion_tokens:a.candidatesTokenCount,total_tokens:a.totalTokenCount,cached_tokens:a.cachedContentTokenCount}}}async makeRequest(e,t){let n,r=0;for(;r<=this.retryConfig.requestMaxRetries;)try{return await e()}catch(o){n=o,r++;let i=An(o),a=wr(o.response?.headers?.["retry-after"]);if(!i.retryable||r>this.retryConfig.requestMaxRetries)break;let l=Yr(a,r,this.retryConfig);await So(l);}throw n}async chat(e,t){let n=t.model||"gemini-2.5-flash",{contents:r,systemInstruction:o}=this.convertMessages(e),i=this.convertTools(t.tools||[]),a=this.buildGenerationConfig({temperature:t.temperature,structuredOutput:t.structuredOutput,topP:t.topP,topK:t.topK,stopSequences:t.stopSequences,maxOutputTokens:t.maxInputTokens}),l={contents:r,systemInstruction:o,generationConfig:a};i.length>0&&(l.tools=i);let c=`gemini-${Date.now()}`,u=`${this.pathPrefix}/${n}:generateContent`,d=this.authMode==="query"?{key:this.apiKey}:void 0;return this.makeRequest(async()=>{let m=await this.client.post(u,l,{params:d,signal:t.signal});return this.convertResponse(m.data,c)},"chat")}async*chatStreamed(e,t){let n=t.model||"gemini-2.5-flash",{contents:r,systemInstruction:o}=this.convertMessages(e),i=this.convertTools(t.tools||[]),a=hS(n),l=this.thinkingSettings?.type==="enabled",c=this.thinkingSettings?.type==="disabled",u=t.enableThinking!==void 0?t.enableThinking:l?true:c?false:a,d=t.thinkingBudget??this.thinkingSettings?.budget??gS,m=this.buildGenerationConfig({temperature:t.temperature,structuredOutput:t.structuredOutput,topP:t.topP,topK:t.topK,stopSequences:t.stopSequences,maxOutputTokens:t.maxInputTokens,enableThinking:u,thinkingBudget:d}),h={contents:hS(n)?AO(r):r,systemInstruction:o,generationConfig:m};i.length>0&&(h.tools=i);let y=`gemini-${Date.now()}`,b=`${this.pathPrefix}/${n}:streamGenerateContent`,C=`${this.baseURL}${b}`,T=this.authMode==="query"?{key:this.apiKey,alt:"sse"}:{alt:"sse"},S=new URL(C);for(let[D,O]of Object.entries(T))S.searchParams.append(D,O);let E={"Content-Type":"application/json",Accept:"*/*"};if(this.authMode==="header"?E["x-goog-api-key"]=this.apiKey:this.authMode==="bearer"&&(E.Authorization=`Bearer ${this.apiKey}`),process.env.CLI_DEBUG==="1"){p.info("GEMINI","=== Gemini Stream Request ==="),p.info("GEMINI",`URL: ${S.toString()}`),p.info("GEMINI",`Model: ${n}`),p.info("GEMINI",`AuthMode: ${this.authMode}`),p.info("GEMINI",`Tools: ${i.length>0?i[0].functionDeclarations.length:0}`),p.info("GEMINI",`Contents: ${r.length} messages`);let D=vr(S.toString(),E,h);p.info("GEMINI_CURL",D),p.debug("GEMINI","Request body:",{contentsCount:h.contents.length,hasSystemInstruction:!!h.systemInstruction,toolsCount:h.tools?.[0]?.functionDeclarations?.length||0,generationConfig:h.generationConfig});}if(process.env.CLI_DEBUG==="1"){de("GEMINI","[Gemini Stream Request]"),de("GEMINI",`URL: ${S.toString()}`),de("GEMINI",`Model: ${n}`),de("GEMINI",`Tools: ${i.length>0?i[0].functionDeclarations.length:0}`),de("GEMINI",`Contents: ${r.length} messages`);let D=vr(S.toString(),E,h);de("GEMINI_CURL",D);}let v=Date.now(),I=await this.makeRequest(async()=>{let D=this.authMode==="query"?{key:this.apiKey,alt:"sse"}:{alt:"sse"};return await this.client.post(b,h,{params:D,responseType:"stream",signal:t.signal,headers:{Accept:"*/*","Accept-Language":"*","sec-fetch-mode":"cors","Accept-Encoding":"br, gzip, deflate"}})},"chatStreamed");process.env.CLI_DEBUG==="1"&&(de("GEMINI","[Gemini Stream Started]"),de("GEMINI",`Status: ${I.status}`)),yield*this.streamGenerator(I.data,y,v);}async*streamGenerator(e,t,n){let r="",o=[],i="",a=[],l,c=u=>{let d=[],m=u.candidates?.[0];if(!m)return process.env.CLI_DEBUG==="1"&&de("GEMINI",`No candidate in response: ${JSON.stringify(u).slice(0,200)}`),d;u.usageMetadata&&(l=u.usageMetadata);let g=m.content?.parts;if(!g||g.length===0)process.env.CLI_DEBUG==="1"&&de("GEMINI",`No parts in candidate: ${JSON.stringify(m).slice(0,200)}`);else for(let h of g){if(h.thought&&!h.thoughtSignature&&h.text){process.env.CLI_DEBUG==="1"&&de("GEMINI",`Yielding reasoning: ${h.text.slice(0,50)}...`),d.push({choices:[{index:0,delta:{reasoning_content:h.text}}]});continue}if(h.text)h.thoughtSignature&&process.env.CLI_DEBUG==="1"?de("GEMINI",`Yielding final answer (with signature): ${h.text.slice(0,100)}...`):process.env.CLI_DEBUG==="1"&&de("GEMINI",`Yielding content: ${h.text.slice(0,100)}...`),i+=h.text,d.push({choices:[{index:0,delta:{content:h.text}}]});else if(h.functionCall){let y={id:h.functionCall.id||`call_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:"function",function:{name:h.functionCall.name,arguments:mS(h.functionCall.args)},...h.thoughtSignature?{thoughtSignature:h.thoughtSignature}:{}};a.push(y),d.push({choices:[{index:0,delta:{tool_calls:[{index:a.length-1,id:y.id,type:"function",function:{name:y.function.name,arguments:y.function.arguments},...y.thoughtSignature?{thoughtSignature:y.thoughtSignature}:{}}]}}]});}}if(m.finishReason){let h=l||{promptTokenCount:0,candidatesTokenCount:0,totalTokenCount:0};if(process.env.CLI_DEBUG==="1"){let b=n?Date.now()-n:0;p.info("GEMINI","=== Gemini Stream Complete ==="),p.info("GEMINI",`Duration: ${b}ms`),p.info("GEMINI",`Finish Reason: ${m.finishReason}`),p.info("GEMINI",`Tool Calls: ${a.length}`),p.info("GEMINI",`Accumulated Content Length: ${i.length}`),p.info("GEMINI",`Usage: prompt=${h.promptTokenCount}, completion=${h.candidatesTokenCount}, total=${h.totalTokenCount}`),i&&p.info("GEMINI",`Content Preview: ${i.slice(0,500)}...`),a.length>0&&p.info("GEMINI","Tool Calls Detail:",a.map(C=>({id:C.id,name:C.function.name,argsLength:C.function.arguments.length})));}if(process.env.CLI_DEBUG==="1"){let b=n?Date.now()-n:0;de("GEMINI","[Gemini Stream Complete]"),de("GEMINI",`Duration: ${b}ms`),de("GEMINI",`Finish Reason: ${m.finishReason}`),de("GEMINI",`Tool Calls: ${a.length}`),de("GEMINI",`Accumulated Content Length: ${i.length}`),de("GEMINI",`Usage: prompt=${h.promptTokenCount}, completion=${h.candidatesTokenCount}, total=${h.totalTokenCount}`),i&&de("GEMINI",`Content Preview: ${i.slice(0,500)}`);}let y=m.finishReason==="STOP"?a.length>0?"tool_calls":"stop":m.finishReason.toLowerCase();d.push({id:t,choices:[{index:0,delta:{},finish_reason:y}],usage:{prompt_tokens:h.promptTokenCount,completion_tokens:h.candidatesTokenCount,total_tokens:h.totalTokenCount,cached_tokens:h.cachedContentTokenCount}});}return d};try{for await(let u of e){let d=u.toString();r+=d,process.env.CLI_DEBUG==="1"&&de("GEMINI",`Raw chunk (${d.length} bytes): ${d.slice(0,200)}...`);let m=r.split(/\r?\n/);r=m.pop()||"";for(let g of m){let h=g.trimEnd();if(!h){if(o.length===0)continue;let b=o.join(`
|
|
1801
1801
|
`);o=[];let C=this.parseSSELine(b);if(!C){process.env.CLI_DEBUG==="1"&&b.length>0&&de("GEMINI",`Failed to parse event: ${b.slice(0,100)}...`);continue}for(let T of c(C))yield T;continue}if(h.startsWith("data:")){o.push(h.slice(5).trimStart());continue}let y=this.parseSSELine(h);if(!y){process.env.CLI_DEBUG==="1"&&h.length>0&&de("GEMINI",`Failed to parse line: ${h.slice(0,100)}...`);continue}for(let b of c(y))yield b;}}if(o.length>0){let u=this.parseSSELine(o.join(`
|
|
1802
1802
|
`));if(u)for(let d of c(u))yield d;}}catch(u){if(process.env.CLI_DEBUG==="1"){let d=n?Date.now()-n:0;de("GEMINI","[Gemini Stream Error]"),de("GEMINI",`Duration: ${d}ms`),de("GEMINI",`Error: ${u.message||u}`),u.response?.data&&de("GEMINI",`Response: ${JSON.stringify(u.response.data)}`);}throw u}}};});var Yu,fS=R(()=>{Ha();uS();dS();Qh();te();Yu=class extends pr{constraints;promptBuilder;provider;defaultModel;constructor(e){super(),this.constraints=new Vu,this.promptBuilder=new Xa,this.defaultModel=e.defaultModel||"gemini-2.5-flash";let{apiKey:t,baseUrl:n,urlSuffix:r,retry:o}=e;this.provider=new mi(t,n,o,{pathPrefix:r});}prepareRequest(e,t){let n=t.model||this.defaultModel;return super.prepareRequest(e,{...t,model:n})}async chat(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}return n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("GeminiAdapter","Warnings",n.validation.warnings),this.provider.chat(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,topP:n.options.topP,topK:n.options.topK,stopSequences:n.options.stopSequences})}async*chatStreamed(e,t){let n=this.prepareRequest(e,t);if(!n.validation?.valid){let r=n.validation?.errors||[];throw new Error(`Invalid parameters: ${r.join(", ")}`)}n.validation?.warnings&&n.validation.warnings.length>0&&p.warn("GeminiAdapter","Warnings",n.validation.warnings),yield*this.provider.chatStreamed(n.messages,{model:n.options.model,tools:n.options.tools,temperature:n.options.temperature,structuredOutput:n.options.structuredOutput,maxInputTokens:n.options.maxInputTokens,topP:n.options.topP,topK:n.options.topK,stopSequences:n.options.stopSequences,signal:t.signal});}getProvider(){return this.provider}};});var mr,Zh=R(()=>{eS();aS();cS();fS();mr=class s{static createAdapter(e,t){switch(e){case "openai":return s.createOpenAIAdapter(t,false);case "openai-responses":return s.createOpenAIAdapter(t,true);case "kimi":return s.createKimiAdapter(t);case "anthropic":case "anthropic-openai":return s.createAnthropicAdapter(t);case "doubao":throw new Error("Doubao adapter not yet implemented. Use Phase 5.");case "gemini":return s.createGeminiAdapter(t);default:throw new Error(`Unsupported provider protocol: ${e}`)}}static createOpenAIAdapter(e,t){let n={apiKey:e.apiKey,baseUrl:e.baseUrl,defaultModel:e.defaultModel||e.lastSelectedModel,useResponsesAPI:t,maxTokens:e.maxTokens,maxInputTokens:e.maxInputTokens};return new Gu(n)}static createAnthropicAdapter(e){let t={authToken:e.apiKey,baseUrl:e.baseUrl,defaultModel:e.defaultModel||e.lastSelectedModel,maxTokens:e.maxTokens&&e.maxTokens<=8192?e.maxTokens:void 0,disableCaching:false};return new qu(t)}static createKimiAdapter(e){let t={apiKey:e.apiKey,baseUrl:e.baseUrl,defaultModel:e.defaultModel||e.lastSelectedModel,maxTokens:e.maxTokens,maxInputTokens:e.maxInputTokens};return new Ju(t)}static createGeminiAdapter(e){let t={apiKey:e.apiKey,baseUrl:e.baseUrl,urlSuffix:e.urlSuffix,defaultModel:e.defaultModel||e.lastSelectedModel,retry:e.retry};return new Yu(t)}static isProtocolSupported(e){return ["openai","openai-responses","anthropic","anthropic-openai","kimi","gemini"].includes(e)}static getProtocolDisplayName(e){return {openai:"OpenAI (Chat Completions)","openai-responses":"OpenAI (Responses API)",anthropic:"Anthropic (Claude)","anthropic-openai":"Anthropic (OpenAI Format)",doubao:"\u8C46\u5305 (Doubao)",gemini:"Google Gemini",kimi:"Kimi (Moonshot)"}[e]||e}};});function RO(s,e=MO){if(!s||s.length<=e)return s;let t=s.split(`
|
|
1803
1803
|
`).length,n=s.length,r=Math.floor(e*.4),o=Math.floor(e*.4),i=r,a=s.length-o;for(;i>0&&(s.charCodeAt(i)&192)===128;)i--;for(;a<s.length&&(s.charCodeAt(a)&192)===128;)a++;let l=s.slice(0,i),c=s.slice(a),d=`
|
|
1804
1804
|
|
|
1805
1805
|
\u2026[${n-l.length-c.length} chars truncated, total ${t} lines]\u2026
|
|
1806
1806
|
|
|
1807
|
-
`;return l+d+c}var MO,Xu,yS=R(()=>{Zn();Wi();xr();Qn();ko();MO=16e3;Xu=class{client;defaultModel;retryConfig;baseUrl;thinking;reasoning;caching;store;lastResponseId=null;sessionResponseIds=new Map;constructor(e){this.baseUrl=e.baseUrl||"https://ark.cn-beijing.volces.com/api/v3",this.defaultModel=e.defaultModel||"doubao-seed-1-6-251015",this.thinking=e.thinking,this.reasoning=e.reasoning,this.caching=e.caching||{type:"enabled"},this.store=e.store??true,this.client=pO.create({baseURL:this.baseUrl,headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},timeout:18e4}),this.retryConfig=
|
|
1807
|
+
`;return l+d+c}var MO,Xu,yS=R(()=>{Zn();Wi();xr();Qn();ko();MO=16e3;Xu=class{client;defaultModel;retryConfig;baseUrl;thinking;reasoning;caching;store;lastResponseId=null;sessionResponseIds=new Map;constructor(e){this.baseUrl=e.baseUrl||"https://ark.cn-beijing.volces.com/api/v3",this.defaultModel=e.defaultModel||"doubao-seed-1-6-251015",this.thinking=e.thinking,this.reasoning=e.reasoning,this.caching=e.caching||{type:"enabled"},this.store=e.store??true,this.client=pO.create({baseURL:this.baseUrl,headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},timeout:18e4}),this.retryConfig=Vr(void 0,{requestMaxRetries:3,streamMaxRetries:5,...e.retry}),process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Doubao] Initialized with:",{baseUrl:this.baseUrl,defaultModel:this.defaultModel,thinking:this.thinking,caching:this.caching,store:this.store});}async chat(e,t={}){let n="",r="",o=[],i,a;for await(let l of this.chatStreamed(e,t)){let c=l.choices?.[0]?.delta;if(c&&(c.content&&(n+=c.content),c.reasoning_content&&(r+=c.reasoning_content),c.tool_calls))for(let u of c.tool_calls){let d=o.find(m=>m.index===u.index);d?u.function?.arguments&&(d.function.arguments+=u.function.arguments):o.push({id:u.id||`call_${o.length}`,type:"function",function:{name:u.function?.name||"",arguments:u.function?.arguments||""},index:u.index});}l.usage&&(i=l.usage),l.id&&(a=l.id);}return a&&(this.lastResponseId=a,t.sessionId&&this.sessionResponseIds.set(t.sessionId,a)),{id:a||`chatcmpl-${Date.now()}`,choices:[{message:{role:"assistant",content:n||null,reasoning_content:r||void 0,...o.length>0?{tool_calls:o}:{}},finish_reason:o.length>0?"tool_calls":"stop"}],usage:i||{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}async*chatStreamed(e,t={}){let{model:n=this.defaultModel,tools:r,temperature:o=.7,sessionId:i,signal:a}=t,l=t.previousResponseId;!l&&i&&(l=this.sessionResponseIds.get(i)),l||(l=this.lastResponseId||void 0);let c=this.buildPayload(e,{model:n,tools:r,temperature:o,structuredOutput:t.structuredOutput,maxInputTokens:t.maxInputTokens,previousResponseId:l}),u=`${this.baseUrl}/responses`;je.llmRequest("doubao-responses",n,c,u,{Authorization:"Bearer ***"}),process.env.CLI_DEBUG_CONSOLE==="1"&&(console.log(`
|
|
1808
1808
|
[Doubao Responses API Request]`),console.log("URL:",u),console.log("Payload:",JSON.stringify(c,null,2)));let d=this.retryConfig.streamMaxRetries,m=0;for(;;)try{if(a?.aborted){let b=new Error("Request aborted");throw b.name="AbortError",b}let g=Date.now(),h=await this.client.post("/responses",c,{responseType:"stream",signal:a,headers:{Accept:"text/event-stream"}});if(process.env.CLI_DEBUG_CONSOLE==="1"&&(console.log(`
|
|
1809
1809
|
[Doubao Stream Started]`),console.log("Status:",h.status)),h.status!==200){let b="";for await(let C of h.data)b+=C.toString();throw new Error(`Doubao API error: ${h.status} - ${b}`)}yield*this.parseStreamResponse(h.data);let y=Date.now()-g;je.llmResponse("doubao-responses",y,{},{}),process.env.CLI_DEBUG_CONSOLE==="1"&&(console.log(`
|
|
1810
1810
|
[Doubao Stream Complete]`),console.log("Duration:",`${y}ms`));return}catch(g){let h="";if(g.response?.data)try{if(typeof g.response.data.on=="function"){let b=[];for await(let T of g.response.data)b.push(Buffer.from(T));let C=Buffer.concat(b).toString("utf-8");try{let T=JSON.parse(C),S=T.error||{message:T.message,code:T.code,type:T.type};h=JSON.stringify(S,null,2);}catch{h=C;}}else if(typeof g.response.data=="string")h=g.response.data;else if(g.response.data.error){let b=g.response.data.error,C={message:b.message,code:b.code,type:b.type};h=JSON.stringify(C,null,2);}else {let b=g.response.data,C={message:b.message,code:b.code,type:b.type,error:b.error};h=JSON.stringify(C,null,2);}}catch(b){h=`HTTP ${g.response?.status||"unknown"} (\u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94\u4F53: ${b})`;}let y=An(g);if(process.env.CLI_DEBUG_CONSOLE==="1"&&(console.log(`
|
|
1811
1811
|
[Doubao Stream Error]`),console.log("Message:",g.message),console.log("Status:",g.response?.status),console.log("Error Details:",h||"none"),console.log("Retryable:",y.retryable)),h&&(y.message=`${g.message}
|
|
1812
|
-
${h}`),je.llmError("doubao-responses",g),y.retryable&&m<d){m++;let b=g.response?.headers?.["retry-after"],C=wr(b),T=
|
|
1812
|
+
${h}`),je.llmError("doubao-responses",g),y.retryable&&m<d){m++;let b=g.response?.headers?.["retry-after"],C=wr(b),T=Yr(C,m,this.retryConfig);console.log(`[Doubao] Stream failed (${y.code}), reconnecting in ${ln(T)} (${m}/${d})...`),yield {choices:[],type:"stream_retry",error:y.message,errorCode:y.code,attempt:m,maxRetries:d,delayMs:T};try{await As(T,t.signal);}catch(S){throw S?.name==="AbortError",S}continue}throw y}}getResponseId(e){return e?this.sessionResponseIds.get(e)||null:this.lastResponseId}setResponseId(e,t){this.lastResponseId=e,t&&this.sessionResponseIds.set(t,e);}clearSession(e){e?this.sessionResponseIds.delete(e):this.lastResponseId=null;}setThinking(e){this.thinking=e;}setCaching(e){this.caching=e;}buildPayload(e,t){let {model:n,tools:r,temperature:o,structuredOutput:i,maxInputTokens:a,previousResponseId:l}=t,c=this.convertToDoubaoInput(e,l);this.extractSystemInstructions(e);let d={model:n,input:c,stream:true,temperature:o};return l&&(d.previous_response_id=l),this.thinking&&(d.thinking=this.thinking),this.reasoning&&(d.reasoning=this.reasoning),r&&r.length>0&&(d.tools=r.map(m=>({type:"function",name:m.name,description:m.description,parameters:m.parameters})),process.env.CLI_DEBUG_CONSOLE==="1"&&console.log(`[Doubao] Added ${d.tools.length} tools`)),i&&(d.text={format:{type:"json_schema",name:i.name,schema:i.schema}}),d}extractSystemInstructions(e){let t=e.filter(n=>n.role==="system").map(n=>Fe(n.content).trim()).filter(n=>n.length>0);return t.length>0?t.join(`
|
|
1813
1813
|
|
|
1814
1814
|
`):void 0}convertToDoubaoInput(e,t){let n=new Map;if(!e.some(i=>i.role==="tool"||i.role==="assistant"&&Array.isArray(i.tool_calls)&&i.tool_calls.length>0))return e.map(i=>({role:i.role,content:Fe(i.content)}));let o=e.filter(i=>i.role!=="system");if(t){let i=[],a=false;for(let l=o.length-1;l>=0;l--){let c=o[l];if(c.role==="user"&&!a)i.unshift(...this.convertMessageToInputItems(c,n)),a=true;else if(c.role==="tool"&&a)i.unshift(...this.convertMessageToInputItems(c,n));else if(a)break}return i}return o.flatMap(i=>this.convertMessageToInputItems(i,n)).filter(i=>i!==null)}convertMessageToInputItems(e,t){if(e.role==="assistant"){let r=[],o=Fe(e.content);if(o.trim().length>0&&r.push({type:"message",role:"assistant",status:"completed",content:[{type:"input_text",text:o}]}),Array.isArray(e.tool_calls)&&e.tool_calls.length>0)for(let i of e.tool_calls){let a=this.normalizeCallId(i.id,t);r.push({type:"function_call",id:a,call_id:a,name:i.function.name,arguments:i.function.arguments||"",status:"completed"});}return r}if(e.role==="tool"){let r=this.normalizeCallId(e.tool_call_id||e.name,t),o=Fe(e.content),i=RO(o);return [{type:"function_call_output",call_id:r,output:i}]}if(Array.isArray(e.content)){let r=[];for(let o of e.content)o.type==="text"&&o.text.trim()?r.push({type:"input_text",text:o.text}):o.type==="image_url"&&r.push({type:"input_image",image_url:o.image_url.url});return r.length===0?[]:[{type:"message",role:"user",content:r}]}let n=Fe(e.content);return !n||n.trim().length===0?[]:[{type:"message",role:"user",content:[{type:"input_text",text:n}]}]}normalizeCallId(e,t){if(e&&t.has(e))return t.get(e);let n;return e?n=e.startsWith("fc_")?e:`fc_${e}`:n=`fc_${Math.random().toString(36).slice(2,10)}`,e?t.set(e,n):t.set(n,n),n}async*parseStreamResponse(e){let t="",n=new Map,r=0,o=null,i=null,a=false,l=false,c,u=m=>{let g={...m};return l||(g.role="assistant",l=true),{id:c,choices:[{index:0,delta:g}]}};for await(let m of e){t+=m.toString();let g=t.split(`
|
|
1815
1815
|
`);t=g.pop()||"";for(let h of g){let y=h.trim();if(!y||!y.startsWith("data: "))continue;let b=y.slice(6);if(b==="[DONE]"){process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Doubao Stream] Received [DONE]");continue}let C;try{C=JSON.parse(b);}catch{process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Doubao Stream] Invalid JSON:",b);continue}switch(process.env.CLI_DEBUG_CONSOLE==="1"&&console.log("[Doubao Stream Event]",C.type,JSON.stringify(C,null,2).slice(0,200)),C.type){case "response.created":case "response.in_progress":C.response?.id&&(c=C.response.id);break;case "response.output_text.delta":{let T=typeof C.delta=="string"?C.delta:"";if(!T)break;a=true,yield u({content:T});break}case "response.reasoning_summary_text.delta":{let T=typeof C.delta=="string"?C.delta:"";if(!T)break;a=true,yield u({reasoning_content:T});break}case "response.reasoning_summary_part.added":case "response.reasoning_summary_part.done":break;case "response.output_item.added":{if(C.item?.type==="function_call"){let T=C.item,S=T.id||`item_${C.output_index}`,E={id:T.call_id||T.id||`call_${Date.now()}_${r}`,name:T.name,index:r++,arguments:""};n.set(S,E),a=true,yield u({tool_calls:[{index:E.index,id:E.id,type:"function",function:{name:E.name}}]});}else if(C.item?.type==="reasoning"){let T=C.item;if(T.summary?.length>0){let S=T.summary.map(E=>E.text).join(`
|
|
@@ -2762,7 +2762,7 @@ ${o}`).join(`
|
|
|
2762
2762
|
3. \u7F16\u5199\u4F7F\u7528\u8BF4\u660E\u548C\u793A\u4F8B
|
|
2763
2763
|
4. \u7EF4\u62A4 README \u548C\u53D8\u66F4\u65E5\u5FD7
|
|
2764
2764
|
|
|
2765
|
-
\u8BF7\u8F93\u51FA\u89C4\u8303\u7684\u6587\u6863\u5185\u5BB9\u3002`,capabilities:["documentation","writing"],inputSchema:{type:"object",properties:{code:{type:"string",description:"\u9700\u8981\u6587\u6863\u5316\u7684\u4EE3\u7801"},type:{type:"string",enum:["api","readme","changelog","guide"]}},required:["code"]},outputSchema:{type:"object",properties:{content:{type:"string",description:"\u6587\u6863\u5185\u5BB9"},format:{type:"string",enum:["markdown","html","text"]}},required:["content"]},preferredModel:"haiku"},Ci=[hk,fk,yk,bk,vk,Ck,wk];});var
|
|
2765
|
+
\u8BF7\u8F93\u51FA\u89C4\u8303\u7684\u6587\u6863\u5185\u5BB9\u3002`,capabilities:["documentation","writing"],inputSchema:{type:"object",properties:{code:{type:"string",description:"\u9700\u8981\u6587\u6863\u5316\u7684\u4EE3\u7801"},type:{type:"string",enum:["api","readme","changelog","guide"]}},required:["code"]},outputSchema:{type:"object",properties:{content:{type:"string",description:"\u6587\u6863\u5185\u5BB9"},format:{type:"string",enum:["markdown","html","text"]}},required:["content"]},preferredModel:"haiku"},Ci=[hk,fk,yk,bk,vk,Ck,wk];});var ps,Md=R(()=>{Xs();Za();tl();If();vf();Xo();sr();te();$f();Gf();pk();Yf();iy();ol();ps=class{config;hostService;orchestrator;sharedContext;eventBus;agentPool;taskAnalyzer;routeHandler;ccbOrchestrator;dagPlanner;dagExecutor;abortController=null;isAborted=false;currentCCBHandlers=null;interruptedState=null;constructor(e){this.config=e,this.hostService=new gr({platformServices:e.services}),this.orchestrator=new hr({hostService:this.hostService,resolveProvider:e.resolveProvider}),this.sharedContext=new fi;let t=new rl;this.eventBus=t,this.agentPool=new no({eventBus:t,orchestrator:this.orchestrator,resolveProvider:e.resolveProvider,providerId:e.providerId,modelName:e.modelName,permissionManager:e.permissionManager,tools:e.tools,memory:e.memory,workDir:e.workDir,sharedContext:this.sharedContext});let n=this.createLLMCallPure(),r=this.createLLMCallAgent(),o=this.createLLMCallCCB();this.taskAnalyzer=Df({llmCall:n}),this.routeHandler=Nf(),this.ccbOrchestrator=jf({llmCall:o,workerModels:e.workerModels,defaultModel:e.modelName,workDir:e.workDir}),this.dagPlanner=Vf({llmCall:n}),this.dagExecutor=oy({llmCall:r,config:{maxConcurrency:e.maxConcurrency??5,nodeTimeout:e.nodeTimeout??3e5,allowPartialFailure:e.allowPartialFailure??true,retryCount:2,retryDelay:1e3}}),p.info("PIPELINE","CooperateRuntime initialized (Five-Layer Architecture)");}createLLMCallCCB(){let e=new Set(["search_files","search","list_directory","show_tree","git_status","git_diff","smart_read"]),t=this.config.tools.filter(n=>e.has(n.name));return async(n,r,o)=>{let i=`ccb-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,a;typeof o=="string"?a=o:o&&typeof o=="object"&&(a=o.model);let{providerId:l,modelName:c}=this.resolveModel(a);p.info("PIPELINE","LLM call (CCB mode with read-only tools)",{sessionId:i,model:a,providerId:l,modelName:c,toolCount:t.length,tools:t.map(m=>m.name)});let u=this.currentCCBHandlers,d=await this.orchestrator.runSession({sessionId:i,prompt:r,providerId:l,modelName:c,buildHostConfig:(m,g)=>({sessionId:i,configKey:"ccb_agent",provider:m,llmConfig:g,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:n,systemPrompt:n,agentName:"CCBAgent",agentDescription:"CCB review agent with read-only tools",permissionManager:this.config.permissionManager,tools:t,memory:this.config.memory,disableSystemPrompt:false,agentConfig:{maxIterations:15,temperature:.3,mode:"auto"}}),onRuntimeEvent:m=>{let g=n.match(/的(\S+评审[专官家]*)/),h=g?g[1]:"CCB Agent",y="ccb-unknown";if(h.includes("\u67B6\u6784")?y="ccb-architect":h.includes("\u5B9E\u73B0")?y="ccb-implementer":h.includes("\u521B\u65B0")&&(y="ccb-innovator"),p.debug("CCB_EVENT",`CCB onRuntimeEvent: type=${m.type}, agentId=${y}, hasHandlers=${!!u}, hasOnCCBAgentText=${!!u?.onCCBAgentText}`),m.type==="text"&&u?.onCCBAgentText){let b=m.delta||"";p.debug("CCB_EVENT",`CCB text event: delta="${b.substring(0,20)}...", agentId=${y}`),b&&u.onCCBAgentText(y,h,b);}if(m.type==="text_complete"&&u?.onCCBAgentTextComplete&&u.onCCBAgentTextComplete(y,h),m.type==="tool_call_start"&&u?.onCCBToolCall){let b=m.name||"unknown",C=m.args||{};u.onCCBToolCall(y,h,b,C);}if(m.type==="tool_call_end"&&u?.onCCBToolResult){let b=m.name||"unknown",C=m.output||m.summary||"",T=!m.success,S=m.args||{};u.onCCBToolResult(y,h,b,C,T,S);}if(m.type==="token_usage"&&u?.onTokenUsage){let b=m;u.onTokenUsage({agentId:`ccb-${i}`,agentLabel:`CCB ${h}`,role:"ccb_reviewer",model:c,input:b.sessionPromptTokens,output:b.sessionCompletionTokens,contextWindow:2e5,tokensUsedForContext:b.sessionPromptTokens+b.sessionCompletionTokens,cacheCreationTokens:b.anthropicCacheCreationTokens,cacheReadTokens:b.anthropicCacheReadTokens});}}});return p.debug("PIPELINE","CCB call completed",{sessionId:i,outputLength:d.summary.output?.length||0,iterations:d.summary.iterations,toolCalls:d.summary.toolCalls}),d.summary.output??""}}createLLMCallPure(){return async(e,t,n)=>{let r=`llm-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,o;typeof n=="string"?o=n:n&&typeof n=="object"&&(o=n.model);let{providerId:i,modelName:a}=this.resolveModel(o);p.info("PIPELINE","LLM call (pure text mode)",{sessionId:r,model:o,providerId:i,modelName:a});let l=await this.orchestrator.runSession({sessionId:r,prompt:t,providerId:i,modelName:a,buildHostConfig:(c,u)=>({sessionId:r,configKey:"llm_call",provider:c,llmConfig:u,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:e,systemPrompt:e,agentName:"LLMCall",agentDescription:"LLM call adapter for task analysis",permissionManager:this.config.permissionManager,tools:[],memory:this.config.memory,disableSystemPrompt:true,agentConfig:{maxIterations:1,temperature:.3,mode:"ask"}})});return p.debug("PIPELINE","LLM call completed",{sessionId:r,outputLength:l.summary.output?.length||0,outputPreview:l.summary.output?.substring(0,100)||"(empty)"}),l.summary.output??""}}createLLMCallAgent(){return async(e,t,n)=>{let r=`agent-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,o,i,a,l,c;typeof n=="string"?o=n:n&&typeof n=="object"&&(o=n.model,i=n.onText,a=n.nodeId,l=n.onRuntimeEvent,c=n.previousToolCalls);let{providerId:u,modelName:d}=this.resolveModel(o),m=c&&c.length>0;p.info("PIPELINE","LLM call (agent mode)",{sessionId:r,model:o,providerId:u,modelName:d,nodeId:a,previousToolCallCount:c?.length??0});let g;if(m){g=new _n(500);for(let y of c)g.add({role:"assistant",content:"",tool_calls:[{id:y.toolId,type:"function",function:{name:y.toolName,arguments:JSON.stringify(y.args)}}]}),g.add({role:"user",content:[{type:"tool_result",tool_use_id:y.toolId,content:y.result}]});g.add({role:"user",content:`\u3010\u7CFB\u7EDF\u63D0\u793A\u3011\u8FD9\u662F\u4E00\u4E2A\u91CD\u8BD5\u8BF7\u6C42\u3002\u4E0A\u9762\u7684 ${c.length} \u4E2A\u5DE5\u5177\u8C03\u7528\u662F\u4F60\u5728\u4E4B\u524D\u7684\u5C1D\u8BD5\u4E2D\u5DF2\u7ECF\u6210\u529F\u5B8C\u6210\u7684\u64CD\u4F5C\u3002\u8BF7\u4ECE\u4E2D\u65AD\u7684\u5730\u65B9\u7EE7\u7EED\uFF0C\u4E0D\u8981\u91CD\u590D\u6267\u884C\u5DF2\u5B8C\u6210\u7684\u5DE5\u5177\u8C03\u7528\u3002
|
|
2766
2766
|
|
|
2767
2767
|
\u73B0\u5728\u7EE7\u7EED\u6267\u884C\u4EFB\u52A1\uFF1A
|
|
2768
2768
|
${t}`}),p.debug("PIPELINE","Prefilled memory with previous tool calls",{sessionId:r,toolCallCount:c.length,memorySize:g.getMessagesForLLM().length});}let h=await this.orchestrator.runSession({sessionId:r,prompt:t,providerId:u,modelName:d,buildHostConfig:(y,b)=>({sessionId:r,configKey:"dag_agent",provider:y,llmConfig:b,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:e,systemPrompt:e,agentName:"DAGAgent",agentDescription:"DAG node execution agent",permissionManager:this.config.permissionManager,tools:this.config.tools,memory:g??this.config.memory,disableSystemPrompt:false,agentConfig:{maxIterations:50,temperature:.3,mode:"auto"}}),onRuntimeEvent:y=>{let b=y;if(y.type==="text"&&i&&b.delta&&i(b.delta),l){let C={...y,nodeId:a};C.toolName===void 0&&b.name&&(C.toolName=b.name),C.toolArgs===void 0&&b.args&&(C.toolArgs=b.args),C.output===void 0&&(b.output!==void 0||b.summary!==void 0)&&(C.output=b.output??b.summary),C.success===void 0&&b.success!==void 0&&(C.success=b.success),C.isError===void 0&&b.success!==void 0&&(C.isError=b.success===false),l(C);}}});return p.debug("PIPELINE","Agent call completed",{sessionId:r,outputLength:h.summary.output?.length||0,iterations:h.summary.iterations,toolCalls:h.summary.toolCalls,hadPreviousToolCalls:m}),h.summary.output??""}}resolveModel(e){if(!e)return {providerId:this.config.providerId,modelName:this.config.modelName};let t={opus:{providerId:"anthropic",modelName:"claude-3-opus-20240229"},"claude-opus":{providerId:"anthropic",modelName:"claude-3-opus-20240229"},sonnet:{providerId:"anthropic",modelName:"claude-3-5-sonnet-20241022"},"claude-sonnet":{providerId:"anthropic",modelName:"claude-3-5-sonnet-20241022"},haiku:{providerId:"anthropic",modelName:"claude-3-haiku-20240307"},"claude-haiku":{providerId:"anthropic",modelName:"claude-3-haiku-20240307"},gemini:{providerId:"google",modelName:"gemini-1.5-pro"},"gemini-pro":{providerId:"google",modelName:"gemini-1.5-pro"},"gemini-flash":{providerId:"google",modelName:"gemini-1.5-flash"},gpt4:{providerId:"openai",modelName:"gpt-4-turbo"},"gpt-4":{providerId:"openai",modelName:"gpt-4-turbo"},gpt4o:{providerId:"openai",modelName:"gpt-4o"},"gpt-4o":{providerId:"openai",modelName:"gpt-4o"}},n=e.toLowerCase();if(t[n])return t[n];if(e.includes(":")){let[r,o]=e.split(":",2);return {providerId:r,modelName:o}}return p.warn("PIPELINE",`Unknown model alias: ${e}, using default provider with custom model`),{providerId:this.config.providerId,modelName:e}}getModelForNode(e){if(e)return this.config.modelName}async chat(e,t){let{sessionId:n,prompt:r}=e;this.isAborted=false,this.abortController=new AbortController,Yo();try{p.info("PIPELINE","Chat started",{sessionId:n,promptLength:r.length}),this.checkAborted(),t?.onThinking?.("\u6B63\u5728\u5206\u6790\u4EFB\u52A1\u590D\u6742\u5EA6...");let o=await this.taskAnalyzer.analyze(r);this.checkAborted(),t?.onAnalysis?.(o),p.info("PIPELINE","Task analyzed",{intent:o.intent.summary,complexityScore:o.complexity.score,complexity:o.complexity});let i=this.routeHandler.handle(o),a=Lf(i.path);switch(t?.onRouting?.(i.path,i.metadata.reason),p.info("PIPELINE","Routing decided",{path:i.path,reason:i.metadata.reason}),this.checkAborted(),i.path){case "simple":return await this.executeSimplePath(n,r,t);case "standard":return await this.executeStandardPath(n,r,o,t);case "complex":return await this.executeComplexPath(n,r,o,t);default:return await this.executeSimplePath(n,r,t)}}catch(o){if(this.isAborted||o instanceof Error&&o.message==="Pipeline aborted")return p.info("PIPELINE","Chat aborted by user"),t?.onError?.(new Error("\u4EFB\u52A1\u5DF2\u88AB\u7528\u6237\u4E2D\u65AD")),"\u4EFB\u52A1\u5DF2\u88AB\u7528\u6237\u4E2D\u65AD";let i=o instanceof Error?o:new Error(String(o));throw t?.onError?.(i),p.error("PIPELINE","Chat failed",{error:i.message}),i}finally{Gn(),this.abortController=null;}}checkAborted(){if(this.isAborted)throw new Error("Pipeline aborted")}setupCCBEventHandler(e){this.currentCCBHandlers=e||null,this.ccbOrchestrator.setEventHandler(t=>{if(t.type==="ccb_agent_review"&&e?.onCCBAgentReview){let{agentId:n,agentName:r,perspective:o,model:i,verdict:a,analysis:l,risks:c,suggestions:u}=t.data;n&&r&&o&&a&&l&&e.onCCBAgentReview({agentId:n,agentName:r,perspective:o,model:i,verdict:a,analysis:l,risks:c||[],suggestions:u||[]});}if(t.type==="ccb_agent_retry"&&e?.onCCBAgentRetry){let{agentId:n,agentName:r,perspective:o,model:i,retryCount:a,maxRetries:l,error:c}=t.data;n&&r&&e.onCCBAgentRetry({agentId:n,agentName:r||"",perspective:o||"",model:i,retryCount:a||0,maxRetries:l||2,error:c||"\u672A\u77E5\u9519\u8BEF"});}if(t.type==="ccb_agent_failed"&&e?.onCCBAgentFailed){let{agentId:n,agentName:r,perspective:o,model:i,retryCount:a,maxRetries:l,error:c}=t.data;n&&r&&e.onCCBAgentFailed({agentId:n,agentName:r||"",perspective:o||"",model:i,retryCount:a||0,maxRetries:l||2,error:c||"\u672A\u77E5\u9519\u8BEF"});}p.debug("PIPELINE",`CCB event: ${t.type}`,t.data);});}async executeSimplePath(e,t,n){this.checkAborted(),n?.onThinking?.("\u76F4\u63A5\u6267\u884C\u4EFB\u52A1...");let r=await this.orchestrator.runSession({sessionId:e,prompt:t,providerId:this.config.providerId,modelName:this.config.modelName,abortSignal:this.abortController?.signal,buildHostConfig:(i,a)=>({sessionId:e,configKey:"simple_path",provider:i,llmConfig:a,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:this.config.systemPrompt??"Execute the task directly",systemPrompt:this.config.systemPrompt,agentName:"SimpleAgent",agentDescription:"Simple path execution agent",permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,agentConfig:{maxIterations:100,temperature:.3,mode:"auto"}}),onRuntimeEvent:i=>{n?.onRuntimeEvent?.(i),i.type==="text"&&n?.onText?.(i.delta);}});this.checkAborted();let o=r.summary.output??"Task completed";return n?.onComplete?.(o),p.info("PIPELINE","Simple path completed",{sessionId:e}),o}async executeStandardPath(e,t,n,r){this.checkAborted(),r?.onThinking?.("\u6536\u96C6\u9879\u76EE\u4E0A\u4E0B\u6587...");let{codebaseContext:o,sessionSummary:i}=await this.collectCCBContext(t),a=this.config.ccbReviewMode??"multi-role";this.setupCCBEventHandler(r);let l={userRequest:t,taskAnalysis:{intent:n.intent.summary,complexity:n.complexity.score,domains:n.intent.domain},codebaseContext:o,sessionSummary:i},c;switch(a){case "single-role":r?.onThinking?.("\u6267\u884C\u5FEB\u901F\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.quickReview(l);break;case "multi-model":r?.onThinking?.("\u6267\u884C\u591A\u6A21\u578B\u534F\u4F5C\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.review(l);break;default:r?.onThinking?.("\u6267\u884C\u591A\u89D2\u8272\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.multiRoleReview(l);break}this.checkAborted(),r?.onCCBReview?.(c),p.info("PIPELINE",`CCB review completed (${a} mode)`,{approved:c.approved,confidence:c.confidence,reviewCount:c.reviews.length}),this.checkAborted(),r?.onThinking?.("\u89C4\u5212\u6267\u884C\u56FE...");let u=await this.dagPlanner.plan({userRequest:t,ccbSummary:{approved:c.approved,recommendedApproach:c.summary.recommendedApproach||"\u76F4\u63A5\u6267\u884C",risks:c.summary.risks.map(d=>d.description),estimatedEffort:{timeRange:"1-2\u5C0F\u65F6",complexity:this.getComplexityLabel(n.complexity.score),parallelism:Math.min(n.complexity.dimensions.interdependency+2,5)}},availableRoles:Ci.map(d=>({name:d.name,capabilities:d.capabilities,description:d.description}))});return this.checkAborted(),r?.onDAGPlanned?.(u),p.info("PIPELINE","DAG planned",{nodeCount:u.nodes.size,levels:u.analysis.levels.length,maxParallelism:u.analysis.maxParallelism}),await this.executeDAG(e,u,t,r)}async executeComplexPath(e,t,n,r){this.checkAborted(),r?.onThinking?.("\u6536\u96C6\u9879\u76EE\u4E0A\u4E0B\u6587...");let{codebaseContext:o,sessionSummary:i}=await this.collectCCBContext(t),a=this.config.ccbReviewMode??"multi-role";this.setupCCBEventHandler(r);let l={userRequest:t,taskAnalysis:{intent:n.intent.summary,complexity:n.complexity.score,domains:n.intent.domain},codebaseContext:o,sessionSummary:i},c;switch(a){case "single-role":r?.onThinking?.("\u6267\u884C\u5FEB\u901F\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.quickReview(l);break;case "multi-model":r?.onThinking?.("\u6267\u884C\u591A\u6A21\u578B\u534F\u4F5C\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.review(l);break;default:r?.onThinking?.("\u6267\u884C\u591A\u89D2\u8272\u8BC4\u5BA1..."),c=await this.ccbOrchestrator.multiRoleReview(l);break}if(this.checkAborted(),r?.onCCBReview?.(c),p.info("PIPELINE",`CCB review completed (${a} mode)`,{approved:c.approved,confidence:c.confidence,reviewCount:c.reviews.length}),!c.approved){let d=c.summary.risks.map(m=>m.description).join("; ");return r?.onComplete?.(`\u8BC4\u5BA1\u672A\u901A\u8FC7: ${d}`),`\u4EFB\u52A1\u672A\u901A\u8FC7 CCB \u8BC4\u5BA1\u3002\u539F\u56E0: ${d}`}this.checkAborted(),r?.onThinking?.("\u89C4\u5212\u590D\u6742\u6267\u884C\u56FE...");let u=await this.dagPlanner.plan({userRequest:t,ccbSummary:{approved:c.approved,recommendedApproach:c.summary.recommendedApproach||"\u5206\u9636\u6BB5\u6267\u884C",risks:c.summary.risks.map(d=>d.description),estimatedEffort:{timeRange:"4-8\u5C0F\u65F6",complexity:"high",parallelism:Math.min(n.complexity.dimensions.interdependency+3,8)}},availableRoles:Ci.map(d=>({name:d.name,capabilities:d.capabilities,description:d.description}))});return this.checkAborted(),r?.onDAGPlanned?.(u),p.info("PIPELINE","Complex DAG planned",{nodeCount:u.nodes.size,levels:u.analysis.levels.length,criticalPath:u.analysis.criticalPath}),await this.executeDAG(e,u,t,r)}async executeDAG(e,t,n,r){this.checkAborted(),this.interruptedState={sessionId:e,prompt:n,dag:t,handlers:r},r?.onThinking?.(`\u5F00\u59CB\u6267\u884C ${t.nodes.size} \u4E2A\u4EFB\u52A1\u8282\u70B9...`);let o=this.dagExecutor.onEvent,i=this.dagExecutor.onText,a=this.dagExecutor.onRuntimeEvent;this.dagExecutor.onEvent=l=>{this.isAborted||(o?.(l),this.handleExecutionEvent(l,t,r));},this.dagExecutor.onText=(l,c)=>{if(this.isAborted)return;let d=t.nodes.get(l)?.task.role;r?.onAgentText?.(l,c,d);},this.dagExecutor.onRuntimeEvent=(l,c)=>{if(this.isAborted)return;let u=t.nodes.get(l),d=u?.task.role,m=this.getModelForNode(u);if(c.type==="tool_call_start"&&r?.onNodeToolCall&&r.onNodeToolCall(l,c.toolName||c.name||"",c.toolArgs||c.args||{},d,m),c.type==="tool_call_end"&&r?.onNodeToolResult){let g=c.isError===true||c.success===false,h=c.toolArgs||c.args||{};r.onNodeToolResult(l,c.toolName||c.name||"",c.output||c.summary||"",g,h,d,m);}c.type==="token_usage"&&r?.onTokenUsage&&r.onTokenUsage({agentId:`dag-${l}`,agentLabel:d||l,role:d||"dag_executor",model:m,input:c.sessionPromptTokens||0,output:c.sessionCompletionTokens||0,contextWindow:2e5,tokensUsedForContext:(c.sessionPromptTokens||0)+(c.sessionCompletionTokens||0),cacheCreationTokens:c.anthropicCacheCreationTokens,cacheReadTokens:c.anthropicCacheReadTokens}),r?.onRuntimeEvent&&r.onRuntimeEvent({...c,nodeId:l});};try{let l=await this.dagExecutor.execute(t,n);this.checkAborted(),this.interruptedState=null;let c=this.formatExecutionSummary(l);return r?.onComplete?.(c),p.info("PIPELINE","DAG execution completed",{sessionId:e,success:l.success,completedNodes:l.completedNodes,failedNodes:l.failedNodes,duration:l.totalDuration}),l.finalOutput}finally{this.dagExecutor.onEvent=o,this.dagExecutor.onText=i,this.dagExecutor.onRuntimeEvent=a;}}handleExecutionEvent(e,t,n){switch(e.type){case "level_start":n?.onProgress?.({level:e.data.level??0,totalLevels:t.analysis.levels.length,completed:t.state.completedNodes.length,total:t.nodes.size});break;case "level_complete":n?.onProgress?.({level:(e.data.level??0)+1,totalLevels:t.analysis.levels.length,completed:t.state.completedNodes.length,total:t.nodes.size});break;case "node_start":if(e.data.nodeId){let r=t.nodes.get(e.data.nodeId);if(r){let o=this.config.modelName,i={level:e.data.level??0,totalLevels:t.analysis.levels.length,completed:t.state.completedNodes.length,total:t.nodes.size};n?.onNodeStart?.(e.data.nodeId,r.task.role,r.task.description,o,i);}}break;case "node_complete":if(e.data.nodeId){let r=t.nodes.get(e.data.nodeId);if(r){let o=this.config.modelName,i={level:e.data.level??0,totalLevels:t.analysis.levels.length,completed:t.state.completedNodes.length,total:t.nodes.size};n?.onNodeComplete?.(e.data.nodeId,r.task.role,e.data.result?.output??"",o,i);}}break;case "node_failed":if(e.data.nodeId){let r=t.nodes.get(e.data.nodeId);if(r){let o=this.config.modelName,i={level:e.data.level??0,totalLevels:t.analysis.levels.length,completed:t.state.completedNodes.length,total:t.nodes.size};n?.onNodeFail?.(e.data.nodeId,r.task.role,e.data.error??"\u672A\u77E5\u9519\u8BEF",o,i);}}break;case "node_retry":if(e.data.nodeId){let r=t.nodes.get(e.data.nodeId);if(r){let o=this.config.modelName;n?.onNodeRetry?.({nodeId:e.data.nodeId,role:e.data.role||r.task.role,retryCount:e.data.retryCount||1,maxRetries:(e.data.maxRetries||this.config.nodeTimeout,2),error:e.data.error||"\u672A\u77E5\u9519\u8BEF",model:o}),n?.onThinking?.(`\u{1F504} [${r.task.role}] \u91CD\u8BD5\u4E2D (\u7B2C ${e.data.retryCount} \u6B21)...`);}}break}}getComplexityLabel(e){return e<=3?"low":e<=6?"medium":"high"}formatExecutionSummary(e){let t=[];return t.push(e.success?"\u2705 \u6267\u884C\u6210\u529F":"\u274C \u6267\u884C\u5931\u8D25"),t.push(`\u5B8C\u6210: ${e.completedNodes}/${e.completedNodes+e.failedNodes}`),e.failedNodes>0&&t.push(`\u5931\u8D25: ${e.failedNodes}`),t.push(`\u8017\u65F6: ${(e.totalDuration/1e3).toFixed(1)}s`),t.join(" | ")}async collectCCBContext(e){try{let n=await new xd({workDir:this.config.workDir,maxFiles:5,maxContentLength:3e3}).collect(e),r=dk(n),o,i=this.config.memory.getMessagesForLLM();if(i.length>0){let a=i.slice(-10),l=[];for(let c of a)if(c.role==="user"){let u=typeof c.content=="string"?c.content:Array.isArray(c.content)?c.content.map(d=>d.text||"").join(" "):"";if(u&&u.length>0){let d=u.length>100?u.substring(0,100)+"...":u;l.push(`- \u7528\u6237: ${d}`);}}else if(c.role==="assistant"){let u=typeof c.content=="string"?c.content:"";if(u&&u.length>0){let d=u.length>100?u.substring(0,100)+"...":u;l.push(`- \u52A9\u624B: ${d}`);}}l.length>0&&(o=`\u6700\u8FD1 ${l.length} \u6761\u5BF9\u8BDD:
|
|
@@ -3396,7 +3396,7 @@ ${t}
|
|
|
3396
3396
|
## \u8F93\u51FA\u8981\u6C42
|
|
3397
3397
|
- \u63D0\u4F9B\u6E05\u6670\u3001\u53EF\u6267\u884C\u7684\u89E3\u51B3\u65B9\u6848
|
|
3398
3398
|
- \u89E3\u91CA\u5173\u952E\u51B3\u7B56\u7684\u7406\u7531
|
|
3399
|
-
- \u6807\u6CE8\u6F5C\u5728\u98CE\u9669\u548C\u6539\u8FDB\u70B9`}subscribeExistingAgents(){for(let e of this.registry.getAll())this.subscribeAgent(e.id);}subscribeAgent(e){if(this.agentSubscriptions.has(e))return;let t=this.registry.getInstance(e);if(!t)return;let n=this.messageBus.subscribeForAgent(e,async r=>{if(r.type!=="task_broadcast")return;let o=r.payload;if(!(Date.now()>o.bidDeadline))try{let i=await t.evaluateTask(o);i.participate&&i.bid&&await this.messageBus.publishBid(i.bid);}catch(i){p.warn("NETWORK","Agent bid failed",{agentId:e,error:i instanceof Error?i.message:String(i)});}});this.agentSubscriptions.set(e,n);}unsubscribeAgent(e){let t=this.agentSubscriptions.get(e);t&&(t(),this.agentSubscriptions.delete(e));}clearAgentSubscriptions(){for(let e of this.agentSubscriptions.values())e();this.agentSubscriptions.clear();}async handleReplanRequired(e){let t=(e.trigger.reason+" "+(e.trigger.error||"")).toLowerCase();if(e.trigger.type==="timeout"||t.includes("timeout")||t.includes("timed out")||t.includes("format")||t.includes("schema")||t.includes("invalid")){let r=e.trigger.error||e.trigger.reason;this.markInterruptedState(e.dagId,r),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Paused DAG for manual resume due to unstable failure",{dagId:e.dagId,reason:r});return}try{let r=await this.replanningEngine.handleTrigger(e.dagId,e.trigger,{failedNodes:e.failedNodes,completedNodes:e.completedNodes});if(r.success){this.refreshDataFlow(e.dagId);return}let o=r.reason||e.trigger.reason;this.markInterruptedState(e.dagId,o),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Paused DAG because replan failed",{dagId:e.dagId,reason:o});}catch(r){let o=r instanceof Error?r.message:String(r);this.markInterruptedState(e.dagId,o),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Replan handling failed, DAG paused",{dagId:e.dagId,error:o});}}refreshDataFlow(e){let t=this.dagBuilder.getDAG(e);t&&this.rgpsDataFlowManager.inferFromDAG(t);}setupEventListeners(){this.registry.on("agent_registered",e=>{this.subscribeAgent(e.agentId);}),this.registry.on("agent_unregistered",e=>{this.unsubscribeAgent(e.agentId);}),this.dagExecutor.on("node_started",e=>{this.emitEvent({type:"node_started",dagId:e.dagId,nodeId:e.nodeId,agentId:e.agentId});}),this.dagExecutor.on("node_completed",e=>{this.emitEvent({type:"node_completed",dagId:e.dagId,nodeId:e.nodeId,output:e.output});}),this.dagExecutor.on("node_failed",e=>{this.emitEvent({type:"node_failed",dagId:e.dagId,nodeId:e.nodeId,error:e.error});}),this.dagExecutor.on("replan_required",e=>{this.handleReplanRequired(e);}),this.replanningEngine.on("replan_started",e=>{this.emitEvent({type:"replan_triggered",dagId:e.dagId,reason:e.trigger.reason});}),this.replanningEngine.on("replan_completed",e=>{this.emitEvent({type:"replan_completed",dagId:e.dagId,newVersion:e.newVersion}),this.refreshDataFlow(e.dagId);}),this.biddingEngine.on("bid_received",e=>{this.emitEvent({type:"bid_received",bid:e});}),this.progressiveManager.on("dag_expanded",e=>{this.refreshDataFlow(e.dagId);}),this.progressiveManager.on("user_requirement_inserted",e=>{this.refreshDataFlow(e.dagId);});}emitEvent(e){this.emit(e.type,e),this.emit("network_event",e);}registerAgent(e){return this.registry.register(e)}unregisterAgent(e){return this.registry.unregister(e)}getAgents(){return this.registry.getAll()}getActiveAgents(){return this.registry.getActive()}getAgentFactory(){return this.agentFactory}getRegistry(){return this.registry}getMessageBus(){return this.messageBus}getModelCapabilityRegistry(){return this.modelCapabilityRegistry}getDAGScheduler(){return this.dagScheduler}isStarted(){return this.started}async resume(e){if(!this.interruptedState)throw new Error("\u6CA1\u6709\u53EF\u6062\u590D\u7684\u4E2D\u65AD\u4EFB\u52A1");let t=this.interruptedState,n=this.dagBuilder.getDAG(t.dagId);if(!n)throw this.interruptedState=null,new Error("\u4E2D\u65AD\u4EFB\u52A1\u5BF9\u5E94\u7684 DAG \u5DF2\u4E0D\u5B58\u5728");this.started||this.start(),this.aborted=false,this.abortController=new AbortController,this.executing=true,this.currentExecutingAgentId=null,this.currentDagId=n.id,this.currentPrompt=t.prompt,this.pendingUserMessages=[];let r=e||t.handlers;this.interruptedState={...t,handlers:r,interruptedAt:Date.now()};let o=this.computeDAGLevels(n),i=[];for(let[a,l]of n.nodes)i.push({id:a,description:l.task?.description||a,agentId:l.assignedAgent||"unassigned",level:l.level,dependencies:l.dependencies||[]});r?.onThinking?.("\u6062\u590D\u6267\u884C\u4E2D..."),r?.onDAGCreated?.({id:n.id,nodeCount:n.nodes.size,levelCount:o.length,maxParallelism:Math.max(...o.map(a=>a.length),1),criticalPath:n.analysis.criticalPath,estimatedTime:n.analysis.estimatedTotalTime,nodes:i}),this.updateProgress(n,r);try{return await this.executeDagAndFinalize(n,{startTime:Date.now(),selectedAgentIds:t.selectedAgentIds,negotiation:t.negotiation,negotiationRounds:t.negotiationRounds,negotiationSummary:t.negotiationSummary},r)}finally{this.executing=false,this.currentExecutingAgentId=null,this.currentDagId=null,this.currentPrompt=null;}}getModeName(){return "network"}abort(){p.info("NETWORK","Aborting network runtime"),this.aborted=true,this.currentDagId&&(this.markInterruptedState(this.currentDagId,"Task aborted by user"),this.dagExecutor.pause(this.currentDagId)),this.abortController&&(this.abortController.abort(),this.abortController=null),p.info("NETWORK","Aborted (state preserved for resume)",{dagId:this.currentDagId});}isAborted(){return this.aborted}};});var Jn,Ay=R(()=>{yf();Ef();Ek();Ey();te();Jn=class{config;constructor(e){this.config=e;}create(e){switch(p.info("MODE_FACTORY",`Creating runtime for mode: ${e}`),e){case "single":return this.createSingleAgent();case "assistant":return this.createAssistantAgent();case "cooperate":return this.createCooperateAgent();case "network":return this.createNetworkAgent();default:return p.warn("MODE_FACTORY",`Unknown mode: ${e}, falling back to single`),this.createSingleAgent()}}createSingleAgent(){return new gi({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt})}createAssistantAgent(){return new bi({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt})}createCooperateAgent(){return new ms({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt,ccbReviewMode:this.config.ccbReviewMode,workerModels:this.config.workerModels})}createNetworkAgent(){let e=this.config.orchestrator?{orchestrator:this.config.orchestrator,tools:this.config.tools,permissionManager:this.config.permissionManager,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,maxIterations:30}:void 0;return new wi({llmCall:this.createLLMCall(),executionCapability:e,autoCreateDefaultAgents:true})}createLLMCall(){let{orchestrator:e}=this.config;return async(t,n)=>{if(!e)throw new Error("Orchestrator not available for LLM call");let r="",o=`network-llm-${Date.now()}`;return await e.runSession({sessionId:o,prompt:n,buildHostConfig:(i,a)=>({sessionId:o,configKey:"network_llm_call",provider:i,llmConfig:a,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:t,systemPrompt:t,agentName:"NetworkLLM",agentDescription:"Network mode LLM caller",permissionManager:this.config.permissionManager,tools:[],memory:this.config.memory,agentConfig:{maxIterations:1,temperature:.3},sessionEnabled:false,disableSystemPrompt:true}),onRuntimeEvent:i=>{i.type==="text"&&(r+=i.delta);}}),r}}static getDefaultMode(){return "single"}static isValidMode(e){return ["single","assistant","cooperate","network"].includes(e)}static getAvailableModes(){return ["single","assistant","cooperate","network"]}static getModeDescription(e){switch(e){case "single":return "\u5355\u673A\u6A21\u5F0F - \u65E5\u5E38\u5F00\u53D1\uFF0C\u5FEB\u901F\u8FED\u4EE3";case "assistant":return "\u52A9\u7406\u6A21\u5F0F - AI \u52A9\u7406\uFF0C\u8F7B\u91CF supervisor + spawn";case "cooperate":return "\u534F\u540C\u6A21\u5F0F - \u9759\u6001 DAG + CCB \u8BC4\u5BA1\u6D41\u7A0B";case "network":return "\u81EA\u7EC4\u7F51\u6A21\u5F0F - Agent \u81EA\u4E3B\u7EC4\u7F51\uFF0C\u52A8\u6001\u534F\u5546 (\u5F00\u53D1\u4E2D)";default:return ""}}};});function AB(s){return s.toLowerCase().replace(/[^a-z0-9-_]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,24)||"workspace"}function PB(s){let e=Ie__default.resolve(s),t=AB(Ie__default.basename(e)),n=Nr.createHash("sha1").update(e).digest("hex").slice(0,12);return `${t}-${n}`}function MB(s){return new Date(s).toISOString().slice(0,10)}function ll(s){let e=new Date(s),t=n=>String(n).padStart(2,"0");return [e.getFullYear(),t(e.getMonth()+1),t(e.getDate())].join("-")+` ${t(e.getHours())}:${t(e.getMinutes())}`}function gn(s,e){return s?s.length<=e?s:s.slice(0,e).trimEnd()+"...":""}var hB,fB,yB,bB,vB,CB,My,wB,TB,xB,Ry,al,f0,SB,kB,_B,IB,EB,ro,y0=R(()=>{wt();cr();od();te();hB=Ie__default.join(Fs,"workspaces"),fB=200,yB=20,bB=50,vB=40,CB=4e3,My=8,wB=240,TB=8,xB=256*1024,Ry=6,al=240,f0=512*1024,SB=1500,kB=15e3,_B=6,IB=30,EB="claude-haiku";ro=class{options;workspacePath=null;workspaceId=null;workspaceName=null;eventsDir=null;memoriesDir=null;memoryPaths=null;graphPaths=null;indexPath=null;summaryPath=null;sessionSummaryPath=null;metaPath=null;seq=0;currentDate=null;currentFile=null;currentFileBytes=0;queue=[];sessionSummaryQueue=[];memoryQueue=[];graphNodeQueue=[];graphEdgeQueue=[];summarizerOverrides;summarizerQueue=[];summarizerTimer=null;summarizerRunning=false;summarizerLastRun=0;summarizerProvider=null;summarizerProviderModel=null;summaryItems=[];summaryDirty=false;runAggregates=new Map;flushTimer=null;isFlushing=false;flushPending=false;ready=false;initPromise=null;createdAt=Date.now();constructor(e={}){this.options={flushIntervalMs:e.flushIntervalMs??fB,batchSize:e.batchSize??yB,indexStride:e.indexStride??bB,summaryWindow:e.summaryWindow??vB,maxSummaryChars:e.maxSummaryChars??CB,source:e.source,agentName:e.agentName},this.summarizerOverrides=e.summarizer,e.workspacePath&&this.setWorkspace(e.workspacePath);}async setWorkspace(e){let t=Ie__default.resolve(e);if(this.workspacePath===t)return;await this.flush(),this.workspacePath=t,this.workspaceName=Ie__default.basename(t),this.workspaceId=PB(t);let n=Ie__default.join(hB,this.workspaceId);this.eventsDir=Ie__default.join(n,"events"),this.memoriesDir=Ie__default.join(n,"memories"),this.memoryPaths={progress:Ie__default.join(this.memoriesDir,"progress.jsonl"),standard:Ie__default.join(this.memoriesDir,"standards.jsonl"),lesson:Ie__default.join(this.memoriesDir,"lessons.jsonl"),pinned:Ie__default.join(this.memoriesDir,"pinned.jsonl")},this.graphPaths={nodes:Ie__default.join(this.memoriesDir,"graph_nodes.jsonl"),edges:Ie__default.join(this.memoriesDir,"graph_edges.jsonl")},this.indexPath=Ie__default.join(this.eventsDir,"index.jsonl"),this.summaryPath=Ie__default.join(this.eventsDir,"recent_summary.json"),this.sessionSummaryPath=this.memoriesDir?Ie__default.join(this.memoriesDir,"session_summary.jsonl"):null,this.metaPath=Ie__default.join(this.eventsDir,"meta.json"),this.currentDate=null,this.currentFile=null,this.currentFileBytes=0,this.sessionSummaryQueue=[],this.memoryQueue=[],this.graphNodeQueue=[],this.graphEdgeQueue=[],this.summarizerQueue=[],this.summarizerProvider=null,this.summarizerProviderModel=null,this.runAggregates.clear(),this.ready=false,this.initPromise=this.initializeWorkspace(),await this.initPromise;}formatFilePath(e){if(!this.workspacePath)return e;let t=Ie__default.relative(this.workspacePath,e);return !t||t.startsWith("..")?e:t}record(e){if(!this.workspacePath||!this.workspaceId)return;let t={schemaVersion:1,id:Nr.randomUUID(),seq:++this.seq,ts:e.ts??Date.now(),workspaceId:this.workspaceId,workspacePath:this.workspacePath,type:e.type,sessionId:e.sessionId,runId:e.runId,actor:e.actor,summary:e.summary,reason:e.reason,files:e.files,data:e.data};this.queue.push(t),this.updateSummary(t),this.updateRunAggregate(t),this.maybeQueueSessionSummary(t),this.queueMemoryEntries(this.extractMemoryEntries(t),"event"),this.queueGraphEntries(this.extractGraphEntries(t));let n=t.type==="run_result"||t.type==="run_error";(this.queue.length>=this.options.batchSize||n)&&this.flush();}createRunId(){return Nr.randomUUID()}async getContextSummary(e){await this.ensureReady(),this.summaryItems.length===0&&await this.loadSummarySnapshot();let t=e?.language??"zh",n=e?.maxItems??this.options.summaryWindow,r=e?.maxSessionItems??My,o=e?.maxMemoryItems??Ry,i=e?.maxChars??this.options.maxSummaryChars,a=e?.query?.trim(),l=t==="zh"?{memoryHeader:"## \u9879\u76EE\u8BB0\u5FC6\uFF08\u81EA\u52A8\uFF09",pinned:"### \u56FA\u5B9A",progress:"### \u8FDB\u5EA6",standard:"### \u89C4\u8303",lesson:"### \u6559\u8BAD",sessionHeader:"## \u4F1A\u8BDD\u6458\u8981",activityHeader:"## \u6700\u8FD1\u5DE5\u4F5C\u6458\u8981"}:{memoryHeader:"## Project Memory (Auto)",pinned:"### Pinned",progress:"### Progress",standard:"### Standards",lesson:"### Lessons",sessionHeader:"## Session Summary",activityHeader:"## Recent Workspace Activity"},c=null;if(a){let W=this.tokenizeQuery(a);c={tokens:W,graphMatches:await this.getGraphRunMatches(W)};}let u=a&&c?await this.getRelevantSessionSummaries(a,r,c):await this.getRecentSessionSummaries(r),d=a&&c?await this.getRelevantMemoryItems(a,o,c):{pinned:await this.getRecentMemoryItems("pinned",o),progress:await this.getRecentMemoryItems("progress",o),standard:await this.getRecentMemoryItems("standard",o),lesson:await this.getRecentMemoryItems("lesson",o)},m=d.pinned,g=d.progress,h=d.standard,y=d.lesson,b=this.summaryItems.slice(-n),C=W=>W.map(U=>`- [${ll(U.ts)}] ${U.summary}`),T=C(u),S=C(m),E=C(g),v=C(h),I=C(y),D=C(b),O=[{key:"pinned",title:l.pinned,lines:S},{key:"progress",title:l.progress,lines:E},{key:"standard",title:l.standard,lines:v},{key:"lesson",title:l.lesson,lines:I}],k={key:"activity",title:l.activityHeader,lines:D},M={key:"session",title:l.sessionHeader,lines:T};if(O.every(W=>W.lines.length===0)&&T.length===0&&D.length===0)return null;let N=()=>{let W=[],U=O.filter(z=>z.lines.length>0).map(z=>`${z.title}
|
|
3399
|
+
- \u6807\u6CE8\u6F5C\u5728\u98CE\u9669\u548C\u6539\u8FDB\u70B9`}subscribeExistingAgents(){for(let e of this.registry.getAll())this.subscribeAgent(e.id);}subscribeAgent(e){if(this.agentSubscriptions.has(e))return;let t=this.registry.getInstance(e);if(!t)return;let n=this.messageBus.subscribeForAgent(e,async r=>{if(r.type!=="task_broadcast")return;let o=r.payload;if(!(Date.now()>o.bidDeadline))try{let i=await t.evaluateTask(o);i.participate&&i.bid&&await this.messageBus.publishBid(i.bid);}catch(i){p.warn("NETWORK","Agent bid failed",{agentId:e,error:i instanceof Error?i.message:String(i)});}});this.agentSubscriptions.set(e,n);}unsubscribeAgent(e){let t=this.agentSubscriptions.get(e);t&&(t(),this.agentSubscriptions.delete(e));}clearAgentSubscriptions(){for(let e of this.agentSubscriptions.values())e();this.agentSubscriptions.clear();}async handleReplanRequired(e){let t=(e.trigger.reason+" "+(e.trigger.error||"")).toLowerCase();if(e.trigger.type==="timeout"||t.includes("timeout")||t.includes("timed out")||t.includes("format")||t.includes("schema")||t.includes("invalid")){let r=e.trigger.error||e.trigger.reason;this.markInterruptedState(e.dagId,r),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Paused DAG for manual resume due to unstable failure",{dagId:e.dagId,reason:r});return}try{let r=await this.replanningEngine.handleTrigger(e.dagId,e.trigger,{failedNodes:e.failedNodes,completedNodes:e.completedNodes});if(r.success){this.refreshDataFlow(e.dagId);return}let o=r.reason||e.trigger.reason;this.markInterruptedState(e.dagId,o),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Paused DAG because replan failed",{dagId:e.dagId,reason:o});}catch(r){let o=r instanceof Error?r.message:String(r);this.markInterruptedState(e.dagId,o),this.dagExecutor.pause(e.dagId),p.warn("NETWORK","Replan handling failed, DAG paused",{dagId:e.dagId,error:o});}}refreshDataFlow(e){let t=this.dagBuilder.getDAG(e);t&&this.rgpsDataFlowManager.inferFromDAG(t);}setupEventListeners(){this.registry.on("agent_registered",e=>{this.subscribeAgent(e.agentId);}),this.registry.on("agent_unregistered",e=>{this.unsubscribeAgent(e.agentId);}),this.dagExecutor.on("node_started",e=>{this.emitEvent({type:"node_started",dagId:e.dagId,nodeId:e.nodeId,agentId:e.agentId});}),this.dagExecutor.on("node_completed",e=>{this.emitEvent({type:"node_completed",dagId:e.dagId,nodeId:e.nodeId,output:e.output});}),this.dagExecutor.on("node_failed",e=>{this.emitEvent({type:"node_failed",dagId:e.dagId,nodeId:e.nodeId,error:e.error});}),this.dagExecutor.on("replan_required",e=>{this.handleReplanRequired(e);}),this.replanningEngine.on("replan_started",e=>{this.emitEvent({type:"replan_triggered",dagId:e.dagId,reason:e.trigger.reason});}),this.replanningEngine.on("replan_completed",e=>{this.emitEvent({type:"replan_completed",dagId:e.dagId,newVersion:e.newVersion}),this.refreshDataFlow(e.dagId);}),this.biddingEngine.on("bid_received",e=>{this.emitEvent({type:"bid_received",bid:e});}),this.progressiveManager.on("dag_expanded",e=>{this.refreshDataFlow(e.dagId);}),this.progressiveManager.on("user_requirement_inserted",e=>{this.refreshDataFlow(e.dagId);});}emitEvent(e){this.emit(e.type,e),this.emit("network_event",e);}registerAgent(e){return this.registry.register(e)}unregisterAgent(e){return this.registry.unregister(e)}getAgents(){return this.registry.getAll()}getActiveAgents(){return this.registry.getActive()}getAgentFactory(){return this.agentFactory}getRegistry(){return this.registry}getMessageBus(){return this.messageBus}getModelCapabilityRegistry(){return this.modelCapabilityRegistry}getDAGScheduler(){return this.dagScheduler}isStarted(){return this.started}async resume(e){if(!this.interruptedState)throw new Error("\u6CA1\u6709\u53EF\u6062\u590D\u7684\u4E2D\u65AD\u4EFB\u52A1");let t=this.interruptedState,n=this.dagBuilder.getDAG(t.dagId);if(!n)throw this.interruptedState=null,new Error("\u4E2D\u65AD\u4EFB\u52A1\u5BF9\u5E94\u7684 DAG \u5DF2\u4E0D\u5B58\u5728");this.started||this.start(),this.aborted=false,this.abortController=new AbortController,this.executing=true,this.currentExecutingAgentId=null,this.currentDagId=n.id,this.currentPrompt=t.prompt,this.pendingUserMessages=[];let r=e||t.handlers;this.interruptedState={...t,handlers:r,interruptedAt:Date.now()};let o=this.computeDAGLevels(n),i=[];for(let[a,l]of n.nodes)i.push({id:a,description:l.task?.description||a,agentId:l.assignedAgent||"unassigned",level:l.level,dependencies:l.dependencies||[]});r?.onThinking?.("\u6062\u590D\u6267\u884C\u4E2D..."),r?.onDAGCreated?.({id:n.id,nodeCount:n.nodes.size,levelCount:o.length,maxParallelism:Math.max(...o.map(a=>a.length),1),criticalPath:n.analysis.criticalPath,estimatedTime:n.analysis.estimatedTotalTime,nodes:i}),this.updateProgress(n,r);try{return await this.executeDagAndFinalize(n,{startTime:Date.now(),selectedAgentIds:t.selectedAgentIds,negotiation:t.negotiation,negotiationRounds:t.negotiationRounds,negotiationSummary:t.negotiationSummary},r)}finally{this.executing=false,this.currentExecutingAgentId=null,this.currentDagId=null,this.currentPrompt=null;}}getModeName(){return "network"}abort(){p.info("NETWORK","Aborting network runtime"),this.aborted=true,this.currentDagId&&(this.markInterruptedState(this.currentDagId,"Task aborted by user"),this.dagExecutor.pause(this.currentDagId)),this.abortController&&(this.abortController.abort(),this.abortController=null),p.info("NETWORK","Aborted (state preserved for resume)",{dagId:this.currentDagId});}isAborted(){return this.aborted}};});var Jn,Ay=R(()=>{yf();Ef();Ek();Ey();te();Jn=class{config;constructor(e){this.config=e;}create(e){switch(p.info("MODE_FACTORY",`Creating runtime for mode: ${e}`),e){case "single":return this.createSingleAgent();case "assistant":return this.createAssistantAgent();case "cooperate":return this.createCooperateAgent();case "network":return this.createNetworkAgent();default:return p.warn("MODE_FACTORY",`Unknown mode: ${e}, falling back to single`),this.createSingleAgent()}}createSingleAgent(){return new gi({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt})}createAssistantAgent(){return new bi({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt})}createCooperateAgent(){return new ps({services:this.config.services,permissionManager:this.config.permissionManager,tools:this.config.tools,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,systemPrompt:this.config.systemPrompt,ccbReviewMode:this.config.ccbReviewMode,workerModels:this.config.workerModels})}createNetworkAgent(){let e=this.config.orchestrator?{orchestrator:this.config.orchestrator,tools:this.config.tools,permissionManager:this.config.permissionManager,memory:this.config.memory,workDir:this.config.workDir,providerId:this.config.providerId,modelName:this.config.modelName,resolveProvider:this.config.resolveProvider,maxIterations:30}:void 0;return new wi({llmCall:this.createLLMCall(),executionCapability:e,autoCreateDefaultAgents:true})}createLLMCall(){let{orchestrator:e}=this.config;return async(t,n)=>{if(!e)throw new Error("Orchestrator not available for LLM call");let r="",o=`network-llm-${Date.now()}`;return await e.runSession({sessionId:o,prompt:n,buildHostConfig:(i,a)=>({sessionId:o,configKey:"network_llm_call",provider:i,llmConfig:a,workspacePath:this.config.workDir,workDir:this.config.workDir,instructions:t,systemPrompt:t,agentName:"NetworkLLM",agentDescription:"Network mode LLM caller",permissionManager:this.config.permissionManager,tools:[],memory:this.config.memory,agentConfig:{maxIterations:1,temperature:.3},sessionEnabled:false,disableSystemPrompt:true}),onRuntimeEvent:i=>{i.type==="text"&&(r+=i.delta);}}),r}}static getDefaultMode(){return "single"}static isValidMode(e){return ["single","assistant","cooperate","network"].includes(e)}static getAvailableModes(){return ["single","assistant","cooperate","network"]}static getModeDescription(e){switch(e){case "single":return "\u5355\u673A\u6A21\u5F0F - \u65E5\u5E38\u5F00\u53D1\uFF0C\u5FEB\u901F\u8FED\u4EE3";case "assistant":return "\u52A9\u7406\u6A21\u5F0F - AI \u52A9\u7406\uFF0C\u8F7B\u91CF supervisor + spawn";case "cooperate":return "\u534F\u540C\u6A21\u5F0F - \u9759\u6001 DAG + CCB \u8BC4\u5BA1\u6D41\u7A0B";case "network":return "\u81EA\u7EC4\u7F51\u6A21\u5F0F - Agent \u81EA\u4E3B\u7EC4\u7F51\uFF0C\u52A8\u6001\u534F\u5546 (\u5F00\u53D1\u4E2D)";default:return ""}}};});function AB(s){return s.toLowerCase().replace(/[^a-z0-9-_]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,24)||"workspace"}function PB(s){let e=Ie__default.resolve(s),t=AB(Ie__default.basename(e)),n=Nr.createHash("sha1").update(e).digest("hex").slice(0,12);return `${t}-${n}`}function MB(s){return new Date(s).toISOString().slice(0,10)}function ll(s){let e=new Date(s),t=n=>String(n).padStart(2,"0");return [e.getFullYear(),t(e.getMonth()+1),t(e.getDate())].join("-")+` ${t(e.getHours())}:${t(e.getMinutes())}`}function gn(s,e){return s?s.length<=e?s:s.slice(0,e).trimEnd()+"...":""}var hB,fB,yB,bB,vB,CB,My,wB,TB,xB,Ry,al,f0,SB,kB,_B,IB,EB,ro,y0=R(()=>{wt();cr();od();te();hB=Ie__default.join(Fs,"workspaces"),fB=200,yB=20,bB=50,vB=40,CB=4e3,My=8,wB=240,TB=8,xB=256*1024,Ry=6,al=240,f0=512*1024,SB=1500,kB=15e3,_B=6,IB=30,EB="claude-haiku";ro=class{options;workspacePath=null;workspaceId=null;workspaceName=null;eventsDir=null;memoriesDir=null;memoryPaths=null;graphPaths=null;indexPath=null;summaryPath=null;sessionSummaryPath=null;metaPath=null;seq=0;currentDate=null;currentFile=null;currentFileBytes=0;queue=[];sessionSummaryQueue=[];memoryQueue=[];graphNodeQueue=[];graphEdgeQueue=[];summarizerOverrides;summarizerQueue=[];summarizerTimer=null;summarizerRunning=false;summarizerLastRun=0;summarizerProvider=null;summarizerProviderModel=null;summaryItems=[];summaryDirty=false;runAggregates=new Map;flushTimer=null;isFlushing=false;flushPending=false;ready=false;initPromise=null;createdAt=Date.now();constructor(e={}){this.options={flushIntervalMs:e.flushIntervalMs??fB,batchSize:e.batchSize??yB,indexStride:e.indexStride??bB,summaryWindow:e.summaryWindow??vB,maxSummaryChars:e.maxSummaryChars??CB,source:e.source,agentName:e.agentName},this.summarizerOverrides=e.summarizer,e.workspacePath&&this.setWorkspace(e.workspacePath);}async setWorkspace(e){let t=Ie__default.resolve(e);if(this.workspacePath===t)return;await this.flush(),this.workspacePath=t,this.workspaceName=Ie__default.basename(t),this.workspaceId=PB(t);let n=Ie__default.join(hB,this.workspaceId);this.eventsDir=Ie__default.join(n,"events"),this.memoriesDir=Ie__default.join(n,"memories"),this.memoryPaths={progress:Ie__default.join(this.memoriesDir,"progress.jsonl"),standard:Ie__default.join(this.memoriesDir,"standards.jsonl"),lesson:Ie__default.join(this.memoriesDir,"lessons.jsonl"),pinned:Ie__default.join(this.memoriesDir,"pinned.jsonl")},this.graphPaths={nodes:Ie__default.join(this.memoriesDir,"graph_nodes.jsonl"),edges:Ie__default.join(this.memoriesDir,"graph_edges.jsonl")},this.indexPath=Ie__default.join(this.eventsDir,"index.jsonl"),this.summaryPath=Ie__default.join(this.eventsDir,"recent_summary.json"),this.sessionSummaryPath=this.memoriesDir?Ie__default.join(this.memoriesDir,"session_summary.jsonl"):null,this.metaPath=Ie__default.join(this.eventsDir,"meta.json"),this.currentDate=null,this.currentFile=null,this.currentFileBytes=0,this.sessionSummaryQueue=[],this.memoryQueue=[],this.graphNodeQueue=[],this.graphEdgeQueue=[],this.summarizerQueue=[],this.summarizerProvider=null,this.summarizerProviderModel=null,this.runAggregates.clear(),this.ready=false,this.initPromise=this.initializeWorkspace(),await this.initPromise;}formatFilePath(e){if(!this.workspacePath)return e;let t=Ie__default.relative(this.workspacePath,e);return !t||t.startsWith("..")?e:t}record(e){if(!this.workspacePath||!this.workspaceId)return;let t={schemaVersion:1,id:Nr.randomUUID(),seq:++this.seq,ts:e.ts??Date.now(),workspaceId:this.workspaceId,workspacePath:this.workspacePath,type:e.type,sessionId:e.sessionId,runId:e.runId,actor:e.actor,summary:e.summary,reason:e.reason,files:e.files,data:e.data};this.queue.push(t),this.updateSummary(t),this.updateRunAggregate(t),this.maybeQueueSessionSummary(t),this.queueMemoryEntries(this.extractMemoryEntries(t),"event"),this.queueGraphEntries(this.extractGraphEntries(t));let n=t.type==="run_result"||t.type==="run_error";(this.queue.length>=this.options.batchSize||n)&&this.flush();}createRunId(){return Nr.randomUUID()}async getContextSummary(e){await this.ensureReady(),this.summaryItems.length===0&&await this.loadSummarySnapshot();let t=e?.language??"zh",n=e?.maxItems??this.options.summaryWindow,r=e?.maxSessionItems??My,o=e?.maxMemoryItems??Ry,i=e?.maxChars??this.options.maxSummaryChars,a=e?.query?.trim(),l=t==="zh"?{memoryHeader:"## \u9879\u76EE\u8BB0\u5FC6\uFF08\u81EA\u52A8\uFF09",pinned:"### \u56FA\u5B9A",progress:"### \u8FDB\u5EA6",standard:"### \u89C4\u8303",lesson:"### \u6559\u8BAD",sessionHeader:"## \u4F1A\u8BDD\u6458\u8981",activityHeader:"## \u6700\u8FD1\u5DE5\u4F5C\u6458\u8981"}:{memoryHeader:"## Project Memory (Auto)",pinned:"### Pinned",progress:"### Progress",standard:"### Standards",lesson:"### Lessons",sessionHeader:"## Session Summary",activityHeader:"## Recent Workspace Activity"},c=null;if(a){let W=this.tokenizeQuery(a);c={tokens:W,graphMatches:await this.getGraphRunMatches(W)};}let u=a&&c?await this.getRelevantSessionSummaries(a,r,c):await this.getRecentSessionSummaries(r),d=a&&c?await this.getRelevantMemoryItems(a,o,c):{pinned:await this.getRecentMemoryItems("pinned",o),progress:await this.getRecentMemoryItems("progress",o),standard:await this.getRecentMemoryItems("standard",o),lesson:await this.getRecentMemoryItems("lesson",o)},m=d.pinned,g=d.progress,h=d.standard,y=d.lesson,b=this.summaryItems.slice(-n),C=W=>W.map(U=>`- [${ll(U.ts)}] ${U.summary}`),T=C(u),S=C(m),E=C(g),v=C(h),I=C(y),D=C(b),O=[{key:"pinned",title:l.pinned,lines:S},{key:"progress",title:l.progress,lines:E},{key:"standard",title:l.standard,lines:v},{key:"lesson",title:l.lesson,lines:I}],k={key:"activity",title:l.activityHeader,lines:D},M={key:"session",title:l.sessionHeader,lines:T};if(O.every(W=>W.lines.length===0)&&T.length===0&&D.length===0)return null;let N=()=>{let W=[],U=O.filter(z=>z.lines.length>0).map(z=>`${z.title}
|
|
3400
3400
|
${z.lines.join(`
|
|
3401
3401
|
`)}`);return U.length>0&&W.push(`${l.memoryHeader}
|
|
3402
3402
|
${U.join(`
|
|
@@ -3459,9 +3459,9 @@ Stats: +${t.created} ~${t.modified} -${t.deleted} d${t.directories}${n}`}parseCo
|
|
|
3459
3459
|
.cdundo/
|
|
3460
3460
|
`:`# Neox checkpoint directory
|
|
3461
3461
|
.cdundo/
|
|
3462
|
-
`;await Le.writeFile(e,n),p.debug("CHECKPOINT","Added .cdundo to .gitignore");}}catch(t){p.error("CHECKPOINT","Failed to update .gitignore",{error:t});}}async cleanupOldCheckpoints(){try{let e=await this.getCheckpoints(this.config.maxCheckpoints+10);e.length>this.config.maxCheckpoints&&(p.debug("CHECKPOINT",`Cleaning up old checkpoints (${e.length} > ${this.config.maxCheckpoints})`),await this.compressRepository());}catch(e){p.error("CHECKPOINT","Failed to cleanup checkpoints",{error:e});}}async compressRepository(){if(!this.initialized)return {success:false};try{let e=await this.getRepositorySize();p.debug("CHECKPOINT","Compressing repository..."),await this.git.raw(["reflog","expire","--expire=now","--all"]),await this.git.raw(["gc","--aggressive","--prune=now"]),await this.git.raw(["repack","-a","-d","--depth=250","--window=250"]);let t=await this.getRepositorySize(),n=e-t;return p.debug("CHECKPOINT",`Repository compressed: ${this.formatFileSize(e)} \u2192 ${this.formatFileSize(t)} (saved ${this.formatFileSize(n)})`),{success:!0,savedBytes:n}}catch(e){return p.error("CHECKPOINT","Failed to compress repository",{error:e}),{success:false}}}async getRepositorySize(){let e=0,t=async n=>{try{let r=await Le.readdir(n,{withFileTypes:!0});for(let o of r){let i=Ie.join(n,o.name);if(o.isDirectory())await t(i);else if(o.isFile()){let a=await Le.stat(i);e+=a.size;}}}catch{}};return await t(this.shadowGitDir),e}async getStorageStats(){let e=await this.getRepositorySize(),t=0,n=async o=>{try{let i=await Le.readdir(o,{withFileTypes:!0});for(let a of i){let l=Ie.join(o,a.name);if(a.isDirectory()&&a.name!==".git")await n(l);else if(a.isFile()){let c=await Le.stat(l);t+=c.size;}}}catch{}};await n(this.shadowDir);let r=await this.getCheckpoints(1e3);return {repositorySize:e,shadowDirSize:t,checkpointCount:r.length,oldestCheckpoint:r.length>0?{id:r[r.length-1].id,timestamp:r[r.length-1].timestamp}:void 0,newestCheckpoint:r.length>0?{id:r[0].id,timestamp:r[0].timestamp}:void 0}}async cleanStaleLocks(){let e=Ie.join(this.shadowGitDir,"index.lock");try{if(Ct.existsSync(e)){let n=await Le.stat(e);Date.now()-n.mtimeMs>1e4&&(await Le.unlink(e),p.debug("CHECKPOINT","Cleaned stale lock file"));}}catch{}}async withGitLock(e){let t=this.gitOperationLock,n=()=>{};this.gitOperationLock=new Promise(r=>{n=r;});try{await t;let r;for(let o=1;o<=this.GIT_RETRY_ATTEMPTS;o++)try{return o>1&&(await this.cleanStaleLocks(),await new Promise(a=>setTimeout(a,this.GIT_RETRY_DELAY_MS))),await e()}catch(i){if(r=i,!(i.message&&(i.message.includes("index.lock")||i.message.includes("File exists")))||o===this.GIT_RETRY_ATTEMPTS)throw i;p.warn("CHECKPOINT",`Git operation failed (attempt ${o}/${this.GIT_RETRY_ATTEMPTS}), retrying...`);}throw r}finally{n();}}async destroy(){await this.stopWatching(),this.initialized=false,this.changeCallbacks.clear(),p.debug("CHECKPOINT","Instance destroyed");}};});var cl,L0=R(()=>{R0();cl=class s{static instance=null;instances=new Map;config;constructor(e={}){this.config=e;}static getInstance(e){return s.instance||(s.instance=new s(e)),s.instance}async getCheckpoint(e){let t=Ie.normalize(e);if(!this.instances.has(t)){let n=new Gd(this.config);await n.init(t),this.instances.set(t,n);}return this.instances.get(t)}async startWatching(e,t,n=0){return (await this.getCheckpoint(e)).startWatching(t,n)}getBeforeCheckpointId(e){let t=Ie.normalize(e);return this.instances.get(t)?.getBeforeCheckpointId()??null}async stopWatching(e){let t=Ie.normalize(e),n=this.instances.get(t);n&&await n.stopWatching();}async createCheckpoint(e,t){return (await this.getCheckpoint(e)).createCheckpoint(t)}async rollbackTo(e,t){return (await this.getCheckpoint(e)).rollbackTo(t)}async rollbackSingleFile(e,t){return (await this.getCheckpoint(e)).rollbackSingleFile(t)}async reapplySingleFile(e,t){return (await this.getCheckpoint(e)).reapplySingleFile(t)}async getCheckpoints(e,t,n){return (await this.getCheckpoint(e)).getCheckpoints(t,n)}async getDiff(e,t,n){return (await this.getCheckpoint(e)).getDiff(t,n)}async getChangeBuffer(e){return (await this.getCheckpoint(e)).getChangeBuffer()}async getCurrentStats(e){return (await this.getCheckpoint(e)).getCurrentStats()}async onFileChange(e,t){return (await this.getCheckpoint(e)).onFileChange(t)}isWatching(e){let t=Ie.normalize(e);return this.instances.get(t)?.isActive()??false}async cleanup(e){let t=Ie.normalize(e),n=this.instances.get(t);n&&(await n.destroy(),this.instances.delete(t));let r=Ie.join(t,".cdundo");try{await Le.rm(r,{recursive:!0,force:!0}),console.log("[CheckpointManager] Cleaned up:",r);}catch(o){console.error("[CheckpointManager] Failed to cleanup:",o);}}async destroyAll(){for(let[e,t]of this.instances)await t.destroy();this.instances.clear(),console.log("[CheckpointManager] All instances destroyed");}getActiveWorkspaces(){return Array.from(this.instances.keys()).filter(e=>this.instances.get(e)?.isActive())}getStats(){return {totalInstances:this.instances.size,activeInstances:this.getActiveWorkspaces().length,workspaces:Array.from(this.instances.keys())}}},cl.getInstance();});var Wd,N0=R(()=>{L0();Wd=class{checkpointManager;workspacePath=null;enabled=true;sessionMessageCounts=new Map;constructor(e){this.checkpointManager=e??cl.getInstance();}setWorkspace(e){this.workspacePath=e;}setEnabled(e){this.enabled=e;}isEnabled(){return this.enabled}async startMessage(e){if(!this.enabled||!this.workspacePath)return null;let t=this.sessionMessageCounts.get(e)||0;return this.checkpointManager.startWatching(this.workspacePath,e,t)}async finishMessage(e,t){if(!this.enabled||!this.workspacePath)return null;let n=await this.createCheckpoint(e,t);return await this.checkpointManager.stopWatching(this.workspacePath),n}async stopWatching(){this.workspacePath&&await this.checkpointManager.stopWatching(this.workspacePath);}async createCheckpoint(e,t){if(!this.enabled||!this.workspacePath)return null;let n=this.sessionMessageCounts.get(e)||0,r=t||`Message #${n+1}`,o=await this.checkpointManager.createCheckpoint(this.workspacePath,r);return this.sessionMessageCounts.set(e,n+1),o}async rollbackToCheckpoint(e){return this.workspacePath?this.checkpointManager.rollbackTo(this.workspacePath,e):{success:false,restored:[],errors:["No workspace set"]}}async rollbackSingleFile(e){return this.workspacePath?this.checkpointManager.rollbackSingleFile(this.workspacePath,e):{success:false,error:"No workspace set"}}async reapplySingleFile(e){return this.workspacePath?this.checkpointManager.reapplySingleFile(this.workspacePath,e):{success:false,error:"No workspace set"}}async getCheckpoints(e,t){return this.workspacePath?this.checkpointManager.getCheckpoints(this.workspacePath,e,t):[]}async getCurrentStats(){return this.workspacePath?this.checkpointManager.getCurrentStats(this.workspacePath):null}async getChangeBuffer(){return this.workspacePath?this.checkpointManager.getChangeBuffer(this.workspacePath):[]}async cleanup(){this.workspacePath&&await this.checkpointManager.cleanup(this.workspacePath);}};});var zd,Hd,$0=R(()=>{te();zd=class{id="edge";tts;constructor(){this.tts=new EdgeTTS;}async init(){}async synthesize(e,t){let n=t?.voice||"zh-CN-XiaoxiaoNeural",r=t?.speed?`${Math.round((t.speed-1)*100)}%`:"+0%",o=t?.format||"mp3",i=o==="opus"?"webm-24khz-16bit-mono-opus":"audio-24khz-48kbitrate-mono-mp3";await this.tts.synthesize(e,n,{rate:r,outputFormat:i});let a=this.tts.toBuffer(),l=this.tts.getAudioInfo();return {audio:a,format:o,durationMs:Math.round(l.estimatedDuration*1e3)}}async synthesizeStream(e,t,n){let r=n?.voice||"zh-CN-XiaoxiaoNeural",o=n?.format||"mp3",i=0;for await(let a of this.tts.synthesizeStream(e,r))a&&a.length>0&&(t(Buffer.from(a),i),i++);return {format:o,totalChunks:i}}async getVoices(){return (await this.tts.getVoicesByLanguage("zh-CN")).map(t=>({id:t.ShortName,name:t.LocalName||t.FriendlyName,locale:t.Locale,gender:t.Gender}))}destroy(){}},Hd=class{provider=null;config;summarizeFn=null;constructor(e){this.config=e;}setSummarizeFn(e){this.summarizeFn=e;}updateConfig(e){this.config={...this.config,...e};}isEnabled(){return this.config.enabled===true}async init(){if(!this.config.enabled)return;(this.config.provider||"edge")==="edge"?this.provider=new zd:this.provider=new zd,await this.provider.init(),p.info("TTS",`TTS service initialized with provider: ${this.provider.id}`);}async speak(e){if(!this.config.enabled||!this.provider||!e||e.trim().length===0)return null;try{let t=await this.provider.synthesize(e,{voice:this.config.voice,speed:this.config.speed,format:this.config.format||"mp3"});return {audio:t.audio.toString("base64"),format:t.format,voiceSummary:e,durationMs:t.durationMs}}catch(t){return p.error("TTS",`TTS synthesis failed: ${t.message}`),null}}async speakStream(e,t){if(!this.config.enabled||!this.provider||!e||e.trim().length===0)return null;try{let n=await this.provider.synthesizeStream(e,(r,o)=>{t(r.toString("base64"),o);},{voice:this.config.voice,speed:this.config.speed,format:this.config.format||"mp3"});return {format:n.format,totalChunks:n.totalChunks,voiceText:e}}catch(n){return p.error("TTS",`TTS stream synthesis failed: ${n.message}`),null}}async getVoices(){return this.provider?this.provider.getVoices():[]}destroy(){this.provider?.destroy(),this.provider=null;}};});function HB(s){Ct.existsSync(Oy)||Ct.mkdirSync(Oy,{recursive:true}),Ct.writeFileSync(ul,JSON.stringify(s,null,2));}function B0(){try{Ct.existsSync(ul)&&Ct.unlinkSync(ul);}catch{}}function qd(){try{return Ct.existsSync(ul)?JSON.parse(Ct.readFileSync(ul,"utf-8")):null}catch{return null}}function qB(){let s=process.argv.slice(2),e=4399,t=process.cwd(),n=false;for(let r=0;r<s.length;r++)s[r]==="--port"&&s[r+1]?(e=parseInt(s[r+1],10),r++):s[r]==="--workdir"&&s[r+1]?(t=s[r+1],r++):s[r]==="--daemon"&&(n=true);return {port:e,workDir:t,daemon:n}}async function KB(s,e){let t=He(),n=ti(),r=new nt(t),o=t.agentApprovalMode||t.approvalMode||"auto",i=new os({defaultPermission:"allow"}),a=(x,B)=>{let H=r.getProvider(x);if(!H)return {provider:null,llmConfig:null};let W=B||H.defaultModel||H.models?.[0]?.name;return {provider:H,llmConfig:{model:W,providerName:H.name||H.id,maxInputTokens:H.contextWindow||128e3}}},l=sd(500),c=new ro({workspacePath:s,source:"server",agentName:"Neox Server"}),u=new Hd(t.tts??{enabled:false});t.tts?.enabled&&(u.setSummarizeFn(async(x,B,H)=>{let W=h;if(!W)return x.substring(0,B);let U=mr.createAdapter(W.protocol,W),z=H||"claude-haiku-4-5-20251001";return (await U.chat([{role:"system",content:`\u4F60\u662F\u4E00\u4E2A\u8BED\u97F3\u6458\u8981\u52A9\u624B\u3002\u628A\u4EE5\u4E0B\u5185\u5BB9\u538B\u7F29\u6210${B}\u5B57\u4EE5\u5185\u7684\u53E3\u8BED\u5316\u6458\u8981\uFF0C\u9002\u5408\u8BED\u97F3\u6717\u8BFB\u3002\u4E0D\u8981\u7528\u4EE3\u7801\u3001markdown\u683C\u5F0F\u3001\u5217\u8868\u3002\u76F4\u63A5\u8BF4\u91CD\u70B9\u3002`},{role:"user",content:x}],{model:z,maxTokens:300,temperature:.3})).choices?.[0]?.message?.content||x.substring(0,B)}),await u.init());let d=await zn(s,n),m=Os({workDir:s}),g=typeof m=="string"?m:"",h=r.getDefaultProvider(),y=h?.id??"",b=h?.defaultModel??h?.models?.[0]?.name??"",C={services:n,permissionManager:i,tools:d,memory:l,workDir:s,providerId:y,modelName:b,resolveProvider:a,systemPrompt:g},T=new Wd;T.setWorkspace(s);let S=null,E=null,v=null,I=null,D=t.runMode||"single";try{S=new gi({...C,actionLog:c,agentMode:o==="dangerous"?"auto":"agent",enableFGTS:t.experimental?.enableFGTS,enablePTC:t.experimental?.enablePTC});}catch(x){p.error("SERVER","Failed to init SingleAgentRuntime",{error:x});}try{E=new bi({...C,actionLog:c});}catch(x){p.error("SERVER","Failed to init AssistantRuntime",{error:x});}try{let x=new Dt(void 0,"cooperate");v=new ms({...C,ccbReviewMode:x.getCCBReviewMode(),workerModels:x.getEnabledWorkerModels().map(B=>({providerId:B.providerId,model:B.model,traits:B.traits}))});}catch(x){p.error("SERVER","Failed to init CooperateRuntime",{error:x});}try{let x=async(H,W,U)=>{let z=h;if(!z)throw new Error("No provider configured for NetworkRuntime");let q=mr.createAdapter(z.protocol,z),P=[{role:"system",content:H},{role:"user",content:W}],$=U?.model||b;if(U?.onText&&q.chatStreamed){let V="",Z=q.chatStreamed(P,{model:$,maxTokens:U.maxTokens,temperature:U.temperature,signal:U.signal});for await(let ae of Z)ae.type==="text"&&ae.text?(V+=ae.text,U.onText(ae.text)):ae.type==="content_block_delta"&&ae.delta?.text&&(V+=ae.delta.text,U.onText(ae.delta.text));return V}return (await q.chat(P,{model:$,maxTokens:U?.maxTokens,temperature:U?.temperature,signal:U?.signal})).choices?.[0]?.message?.content||""},B=new Dt(void 0,"network");I=new wi({llmCall:x,executionCapability:{orchestrator:new hr({hostService:new gr({platformServices:n}),resolveProvider:a}),tools:d,permissionManager:i,memory:l,workDir:s,providerId:y,modelName:b,resolveProvider:a,maxIterations:30},autoCreateDefaultAgents:!0,customRoles:B.getNetworkRoles?.()});}catch(x){p.error("SERVER","Failed to init NetworkRuntime",{error:x});}let O=new Set,k=new Map,M=new Map,N={async chat(x,B){O.add(x);let H=new AbortController;k.set(x,H);let W=($,F)=>{if(p.info("SERVER",`\u{1F4E1} publishRawEvent: type=${$.type} sessionId=${x}`),e.publish({sessionId:x,type:$.type,data:$,tracker:F,timestamp:Date.now()}),$.type==="run_result"&&u.isEnabled()){let V=$.currentTurnText||$.output;V&&u.speak(V).then(Z=>{Z&&e.publish({sessionId:x,type:"tts_audio",data:{type:"tts_audio",audio:Z.audio,audioFormat:Z.format,voiceSummary:Z.voiceSummary,durationMs:Z.durationMs??0},timestamp:Date.now()});}).catch(Z=>{p.warn("SERVER",`TTS generation failed: ${Z.message}`);});}},z=$=>{e.publish({sessionId:x,type:"error",data:{type:"error",message:$.message},timestamp:Date.now()});},q={onRuntimeEvent:($,F)=>W($,F),onError:z},P={onRuntimeEvent:$=>W($),onError:z};try{let $=B.mode??D,F=B.attachments?{attachments:B.attachments}:void 0;if($==="single"&&S)await S.chat({sessionId:x,prompt:B.prompt,metadata:F,providerId:B.providerId,modelName:B.modelName},q);else if($==="assistant"&&E)E.removeAllListeners("worker_event"),E.removeAllListeners("worker_result"),E.on("worker_event",V=>{if(V?.event){let Z={...V.event,sourceLabel:V.agentId,workerRole:V.role,workerTask:V.taskSummary};W(Z,V.tracker);}}),E.on("worker_result",V=>{e.publish({sessionId:x,type:"worker_result",data:{type:"worker_result",agentId:V.agentId,success:V.success,output:V.output},timestamp:Date.now()});}),await E.chat({sessionId:x,prompt:B.prompt,metadata:F});else if($==="cooperate"&&v)await v.chat({sessionId:x,prompt:B.prompt,metadata:F},P);else if($==="network"&&I)await I.chat({prompt:B.prompt,history:[]});else if(S)await S.chat({sessionId:x,prompt:B.prompt,metadata:F,providerId:B.providerId,modelName:B.modelName},q);else throw new Error("No runtime available")}finally{O.delete(x),k.delete(x);}},abort(x){let B=k.get(x);B&&(B.abort(),k.delete(x)),S&&S.abort(),E&&E.abort(),v&&v.abort?.();},replyPermission(x,B,H){let W=M.get(x);W&&(W.resolve(B),M.delete(x));},getActiveSessions(){return [...O]},setRunMode(x){Jn.isValidMode(x)&&(D=x,p.info("SERVER",`Run mode changed to: ${D}`));},getRunMode(){return D},setSandboxMode(x,B){ni(B);},setApprovalMode(x,B){let H=B==="auto"?"auto":"agent";S&&S.setAgentMode(H),p.info("SERVER",`Approval mode set to: ${B} \u2192 agentMode=${H==="auto"?"AUTO":"AGENT"}`);},async compactSession(x){p.info("SERVER",`Compact session: ${x}`);},clearSession(x){l.clear(),p.info("SERVER",`Cleared session: ${x}`);},getContextHealth(x){return l.checkContextHealth?.()??null},async getSessionInfo(x){return {messageCount:l.length,messages:l.getAll()}},setCompressionMode(x,B){p.info("SERVER",`Compression mode set to: ${B}`);},getMemoryStats(x){return {length:l.length,contextHealth:l.checkContextHealth?.()??null}},clearMemory(x){l.clear();},addMemoryMessage(x,B,H){l.add({role:B,content:H});},getToolList(){return {count:d.length,names:d.map(x=>x.name)}},async reloadTools(x){let B=await zn(x,n);d.length=0,d.push(...B),p.info("SERVER",`Reloaded ${d.length} tools for ${x}`);},async setWorkspace(x){let B=await zn(x,n);d.length=0,d.push(...B),T.setWorkspace(x),p.info("SERVER",`Workspace switched to: ${x}`);},async startCheckpointWatching(x){return T.startMessage(x)},async stopCheckpointWatching(){await T.stopWatching();},async createCheckpoint(x,B){return T.createCheckpoint(x,B)},async rollbackToCheckpoint(x){return T.rollbackToCheckpoint(x)},async rollbackSingleFile(x){return T.rollbackSingleFile(x)},async reapplySingleFile(x){return T.reapplySingleFile(x)},async getCheckpoints(x,B){return T.getCheckpoints(x,B)},async getCheckpointStats(){return T.getCurrentStats?.()??{created:0,modified:0,deleted:0,directories:0,total:0}},async getCheckpointChanges(){return T.getChangeBuffer?.()??[]},setCheckpointEnabled(x){T.setEnabled(x);},isCheckpointEnabled(){return T.isEnabled()},async cleanupCheckpoints(){await T.cleanup?.();},async getHostStatus(){return {isRunning:O.size>0,currentTask:null,mode:D,workingDirectory:s,uptime:Math.floor(process.uptime()),memoryUsage:{tokensUsed:l.length,contextWindow:128e3,pressure:l.length/128e3}}},async getHostAgents(){return [{id:"main",role:"main",status:O.size>0?"running":"idle"}]},async getHostActivity(x=10){return []},async getHostSession(){return {messageCount:l.length,tokensUsed:0}},async getHostSystem(){let x=null,B="unknown";try{let{execSync:H}=await import('child_process');try{x=H("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf-8",timeout:5e3}).trim();}catch{}try{B=H("git status --porcelain",{cwd:s,encoding:"utf-8",timeout:5e3}).trim().length===0?"clean":"dirty";}catch{}}catch{}return {platform:process.platform,arch:process.arch,cwd:s,gitBranch:x,gitStatus:B,nodeVersion:process.version}},async hostInterrupt(x){for(let[H,W]of k)W.abort();S&&S.abort(),E&&E.abort(),v&&v.abort?.();let B=O.size>0;return O.clear(),k.clear(),{interrupted:B}},async hostSendCommand(x,B){let H=`cmd-${Date.now()}`,W={prompt:x};return N.chat(H,W).catch(U=>{p.error("SERVER",`hostSendCommand failed: ${U.message}`);}),{queued:true,sessionId:H}},setTTSEnabled(x){let B=u.isEnabled();u.updateConfig({enabled:x,provider:"edge"}),x&&!B&&(u.summarizeFn||u.setSummarizeFn(async(H,W,U)=>{let z=h;if(!z)return H.substring(0,W);let q=mr.createAdapter(z.protocol,z),P=U||"claude-haiku-4-5-20251001";return (await q.chat([{role:"system",content:`\u4F60\u662F\u4E00\u4E2A\u8BED\u97F3\u6458\u8981\u52A9\u624B\u3002\u628A\u4EE5\u4E0B\u5185\u5BB9\u538B\u7F29\u6210${W}\u5B57\u4EE5\u5185\u7684\u53E3\u8BED\u5316\u6458\u8981\uFF0C\u9002\u5408\u8BED\u97F3\u6717\u8BFB\u3002\u4E0D\u8981\u7528\u4EE3\u7801\u3001markdown\u683C\u5F0F\u3001\u5217\u8868\u3002\u76F4\u63A5\u8BF4\u91CD\u70B9\u3002`},{role:"user",content:H}],{model:P,maxTokens:300,temperature:.3})).choices?.[0]?.message?.content||H.substring(0,W)}),u.init().catch(H=>{p.error("SERVER",`TTS init failed: ${H.message}`);})),p.info("SERVER",`TTS ${x?"enabled":"disabled"}`);},isTTSEnabled(){return u.isEnabled()},getTTSConfig(){return t.tts??{enabled:false}},updateTTSConfig(x){let B=u.isEnabled();u.updateConfig(x),x.enabled&&!B&&u.init().catch(H=>{p.error("SERVER",`TTS init failed: ${H.message}`);});}};return N}async function JB(){let{port:s,workDir:e,daemon:t}=qB(),n=He(),r=n.remote??{};p.info("SERVER",`Starting Neox Server on port ${s}, workDir: ${e}`);let o=new jd,i=new Ti,a=await KB(e,o),l={workDir:e};r.enabled&&r.token&&(l.auth={token:r.token,allowLocalWithoutAuth:true},l.rateLimit={maxRequests:120,windowMs:6e4},l.corsOrigins=["*"],p.info("SERVER","Remote mode enabled \u2014 auth + rateLimit active"));let{app:c,channelRegistry:u}=k0(l,a,o,i),d=n.channels;d&&(await u.initialize(d),u.setHandler(async h=>{let y=`ch-${h.channelId}-${h.chatId}`;return new Promise(b=>{let C="",T=o.subscribe(y);(async()=>{for await(let S of T){if(S.type==="run_result"){C=S.data?.output||"",T.close();break}if(S.type==="error"){C=`Error: ${S.data?.message||"unknown"}`,T.close();break}}b(C||"[no response]");})(),a.chat(y,{prompt:h.text}).catch(()=>{b("[error processing message]"),T.close();});})}),await u.startAll(),p.info("SERVER","Channel adapters initialized")),await et.initialize(e),et.watch(e),p.info("SERVER",`Skills hot-reload active (${et.size} skills loaded)`);let m=process.env.NEOX_HOST||(r.enabled?r.host||"0.0.0.0":"127.0.0.1");HB({pid:process.pid,port:s,workDir:e,startedAt:Date.now(),daemon:t});let g=()=>{p.info("SERVER","Shutting down..."),et.stopWatch(),u.stopAll().catch(()=>{}),B0(),i.dispose(),o.dispose(),process.exit(0);};process.on("SIGINT",g),process.on("SIGTERM",g),serve({fetch:c.fetch,port:s,hostname:m},h=>{p.info("SERVER",`Neox Server listening on http://${m}:${h.port}`),process.send&&process.send({type:"ready",port:h.port});});}var Oy,ul,F0=R(()=>{_0();I0();Ny();te();iu();Za();tl();yf();Ef();Md();Ey();Ay();wt();cr();Vs();Zh();od();uu();N0();Oc();un();sr();Ca();Dy();Jo();$0();Oy=Ie.join(ho.homedir(),".neox"),ul=Ie.join(Oy,"server.pid");JB().catch(s=>{p.error("SERVER","Failed to start server",{error:s}),B0(),process.exit(1);});});async function ZB(s){return new Promise(e=>{let t=iT.createServer();t.once("error",()=>e(false)),t.once("listening",()=>{t.close(()=>e(true));}),t.listen(s,"127.0.0.1");})}async function W0(s=XB){for(let e=s;e<s+100;e++)if(await ZB(e))return e;throw new Error("No free port found")}async function Uy(s){try{let e=new AbortController,t=setTimeout(()=>e.abort(),QB),n=await fetch(`http://127.0.0.1:${s}/health`,{signal:e.signal});return clearTimeout(t),n.ok}catch{return false}}async function z0(s){let e=qd();if(e){if(p.debug("BOOT",`ensureServer: found pid file, checking health on port ${e.port}...`),await Uy(e.port))return p.info("PROCESS_MGR",`Reusing existing server on port ${e.port}${e.daemon?" (daemon)":""}`),{port:e.port,baseUrl:`http://127.0.0.1:${e.port}`,reused:true};p.debug("BOOT","ensureServer: stale pid file, starting new server");}let t=await W0();p.debug("BOOT",`ensureServer: starting server on port ${t}...`);let n=await eF(s,t);return {port:t,baseUrl:`http://127.0.0.1:${t}`,process:n,reused:false}}async function eF(s,e){let t=Ie.resolve(Ie.dirname(fileURLToPath(import.meta.url)),".."),n=Ie.join(t,"server","main.js");p.debug("BOOT",`startServer: entry=${n}`),p.info("PROCESS_MGR",`Starting server: ${n} --port ${e} --workdir ${s}`);let r=fork(n,["--port",String(e),"--workdir",s],{stdio:["pipe","pipe","pipe","ipc"],detached:false,env:{...process.env}}),o="";return r.stderr?.on("data",i=>{let a=i.toString();o+=a,p.debug("SERVER_CHILD",a.trim());}),await new Promise((i,a)=>{let l=setTimeout(()=>{p.error("BOOT",`startServer: TIMEOUT (${dl}ms)`),o&&p.error("BOOT",`server stderr:
|
|
3462
|
+
`;await Le.writeFile(e,n),p.debug("CHECKPOINT","Added .cdundo to .gitignore");}}catch(t){p.error("CHECKPOINT","Failed to update .gitignore",{error:t});}}async cleanupOldCheckpoints(){try{let e=await this.getCheckpoints(this.config.maxCheckpoints+10);e.length>this.config.maxCheckpoints&&(p.debug("CHECKPOINT",`Cleaning up old checkpoints (${e.length} > ${this.config.maxCheckpoints})`),await this.compressRepository());}catch(e){p.error("CHECKPOINT","Failed to cleanup checkpoints",{error:e});}}async compressRepository(){if(!this.initialized)return {success:false};try{let e=await this.getRepositorySize();p.debug("CHECKPOINT","Compressing repository..."),await this.git.raw(["reflog","expire","--expire=now","--all"]),await this.git.raw(["gc","--aggressive","--prune=now"]),await this.git.raw(["repack","-a","-d","--depth=250","--window=250"]);let t=await this.getRepositorySize(),n=e-t;return p.debug("CHECKPOINT",`Repository compressed: ${this.formatFileSize(e)} \u2192 ${this.formatFileSize(t)} (saved ${this.formatFileSize(n)})`),{success:!0,savedBytes:n}}catch(e){return p.error("CHECKPOINT","Failed to compress repository",{error:e}),{success:false}}}async getRepositorySize(){let e=0,t=async n=>{try{let r=await Le.readdir(n,{withFileTypes:!0});for(let o of r){let i=Ie.join(n,o.name);if(o.isDirectory())await t(i);else if(o.isFile()){let a=await Le.stat(i);e+=a.size;}}}catch{}};return await t(this.shadowGitDir),e}async getStorageStats(){let e=await this.getRepositorySize(),t=0,n=async o=>{try{let i=await Le.readdir(o,{withFileTypes:!0});for(let a of i){let l=Ie.join(o,a.name);if(a.isDirectory()&&a.name!==".git")await n(l);else if(a.isFile()){let c=await Le.stat(l);t+=c.size;}}}catch{}};await n(this.shadowDir);let r=await this.getCheckpoints(1e3);return {repositorySize:e,shadowDirSize:t,checkpointCount:r.length,oldestCheckpoint:r.length>0?{id:r[r.length-1].id,timestamp:r[r.length-1].timestamp}:void 0,newestCheckpoint:r.length>0?{id:r[0].id,timestamp:r[0].timestamp}:void 0}}async cleanStaleLocks(){let e=Ie.join(this.shadowGitDir,"index.lock");try{if(Ct.existsSync(e)){let n=await Le.stat(e);Date.now()-n.mtimeMs>1e4&&(await Le.unlink(e),p.debug("CHECKPOINT","Cleaned stale lock file"));}}catch{}}async withGitLock(e){let t=this.gitOperationLock,n=()=>{};this.gitOperationLock=new Promise(r=>{n=r;});try{await t;let r;for(let o=1;o<=this.GIT_RETRY_ATTEMPTS;o++)try{return o>1&&(await this.cleanStaleLocks(),await new Promise(a=>setTimeout(a,this.GIT_RETRY_DELAY_MS))),await e()}catch(i){if(r=i,!(i.message&&(i.message.includes("index.lock")||i.message.includes("File exists")))||o===this.GIT_RETRY_ATTEMPTS)throw i;p.warn("CHECKPOINT",`Git operation failed (attempt ${o}/${this.GIT_RETRY_ATTEMPTS}), retrying...`);}throw r}finally{n();}}async destroy(){await this.stopWatching(),this.initialized=false,this.changeCallbacks.clear(),p.debug("CHECKPOINT","Instance destroyed");}};});var cl,L0=R(()=>{R0();cl=class s{static instance=null;instances=new Map;config;constructor(e={}){this.config=e;}static getInstance(e){return s.instance||(s.instance=new s(e)),s.instance}async getCheckpoint(e){let t=Ie.normalize(e);if(!this.instances.has(t)){let n=new Gd(this.config);await n.init(t),this.instances.set(t,n);}return this.instances.get(t)}async startWatching(e,t,n=0){return (await this.getCheckpoint(e)).startWatching(t,n)}getBeforeCheckpointId(e){let t=Ie.normalize(e);return this.instances.get(t)?.getBeforeCheckpointId()??null}async stopWatching(e){let t=Ie.normalize(e),n=this.instances.get(t);n&&await n.stopWatching();}async createCheckpoint(e,t){return (await this.getCheckpoint(e)).createCheckpoint(t)}async rollbackTo(e,t){return (await this.getCheckpoint(e)).rollbackTo(t)}async rollbackSingleFile(e,t){return (await this.getCheckpoint(e)).rollbackSingleFile(t)}async reapplySingleFile(e,t){return (await this.getCheckpoint(e)).reapplySingleFile(t)}async getCheckpoints(e,t,n){return (await this.getCheckpoint(e)).getCheckpoints(t,n)}async getDiff(e,t,n){return (await this.getCheckpoint(e)).getDiff(t,n)}async getChangeBuffer(e){return (await this.getCheckpoint(e)).getChangeBuffer()}async getCurrentStats(e){return (await this.getCheckpoint(e)).getCurrentStats()}async onFileChange(e,t){return (await this.getCheckpoint(e)).onFileChange(t)}isWatching(e){let t=Ie.normalize(e);return this.instances.get(t)?.isActive()??false}async cleanup(e){let t=Ie.normalize(e),n=this.instances.get(t);n&&(await n.destroy(),this.instances.delete(t));let r=Ie.join(t,".cdundo");try{await Le.rm(r,{recursive:!0,force:!0}),console.log("[CheckpointManager] Cleaned up:",r);}catch(o){console.error("[CheckpointManager] Failed to cleanup:",o);}}async destroyAll(){for(let[e,t]of this.instances)await t.destroy();this.instances.clear(),console.log("[CheckpointManager] All instances destroyed");}getActiveWorkspaces(){return Array.from(this.instances.keys()).filter(e=>this.instances.get(e)?.isActive())}getStats(){return {totalInstances:this.instances.size,activeInstances:this.getActiveWorkspaces().length,workspaces:Array.from(this.instances.keys())}}},cl.getInstance();});var Wd,N0=R(()=>{L0();Wd=class{checkpointManager;workspacePath=null;enabled=true;sessionMessageCounts=new Map;constructor(e){this.checkpointManager=e??cl.getInstance();}setWorkspace(e){this.workspacePath=e;}setEnabled(e){this.enabled=e;}isEnabled(){return this.enabled}async startMessage(e){if(!this.enabled||!this.workspacePath)return null;let t=this.sessionMessageCounts.get(e)||0;return this.checkpointManager.startWatching(this.workspacePath,e,t)}async finishMessage(e,t){if(!this.enabled||!this.workspacePath)return null;let n=await this.createCheckpoint(e,t);return await this.checkpointManager.stopWatching(this.workspacePath),n}async stopWatching(){this.workspacePath&&await this.checkpointManager.stopWatching(this.workspacePath);}async createCheckpoint(e,t){if(!this.enabled||!this.workspacePath)return null;let n=this.sessionMessageCounts.get(e)||0,r=t||`Message #${n+1}`,o=await this.checkpointManager.createCheckpoint(this.workspacePath,r);return this.sessionMessageCounts.set(e,n+1),o}async rollbackToCheckpoint(e){return this.workspacePath?this.checkpointManager.rollbackTo(this.workspacePath,e):{success:false,restored:[],errors:["No workspace set"]}}async rollbackSingleFile(e){return this.workspacePath?this.checkpointManager.rollbackSingleFile(this.workspacePath,e):{success:false,error:"No workspace set"}}async reapplySingleFile(e){return this.workspacePath?this.checkpointManager.reapplySingleFile(this.workspacePath,e):{success:false,error:"No workspace set"}}async getCheckpoints(e,t){return this.workspacePath?this.checkpointManager.getCheckpoints(this.workspacePath,e,t):[]}async getCurrentStats(){return this.workspacePath?this.checkpointManager.getCurrentStats(this.workspacePath):null}async getChangeBuffer(){return this.workspacePath?this.checkpointManager.getChangeBuffer(this.workspacePath):[]}async cleanup(){this.workspacePath&&await this.checkpointManager.cleanup(this.workspacePath);}};});var zd,Hd,$0=R(()=>{te();zd=class{id="edge";tts;constructor(){this.tts=new EdgeTTS;}async init(){}async synthesize(e,t){let n=t?.voice||"zh-CN-XiaoxiaoNeural",r=t?.speed?`${Math.round((t.speed-1)*100)}%`:"+0%",o=t?.format||"mp3",i=o==="opus"?"webm-24khz-16bit-mono-opus":"audio-24khz-48kbitrate-mono-mp3";await this.tts.synthesize(e,n,{rate:r,outputFormat:i});let a=this.tts.toBuffer(),l=this.tts.getAudioInfo();return {audio:a,format:o,durationMs:Math.round(l.estimatedDuration*1e3)}}async synthesizeStream(e,t,n){let r=n?.voice||"zh-CN-XiaoxiaoNeural",o=n?.format||"mp3",i=0;for await(let a of this.tts.synthesizeStream(e,r))a&&a.length>0&&(t(Buffer.from(a),i),i++);return {format:o,totalChunks:i}}async getVoices(){return (await this.tts.getVoicesByLanguage("zh-CN")).map(t=>({id:t.ShortName,name:t.LocalName||t.FriendlyName,locale:t.Locale,gender:t.Gender}))}destroy(){}},Hd=class{provider=null;config;summarizeFn=null;constructor(e){this.config=e;}setSummarizeFn(e){this.summarizeFn=e;}updateConfig(e){this.config={...this.config,...e};}isEnabled(){return this.config.enabled===true}async init(){if(!this.config.enabled)return;(this.config.provider||"edge")==="edge"?this.provider=new zd:this.provider=new zd,await this.provider.init(),p.info("TTS",`TTS service initialized with provider: ${this.provider.id}`);}async speak(e){if(!this.config.enabled||!this.provider||!e||e.trim().length===0)return null;try{let t=await this.provider.synthesize(e,{voice:this.config.voice,speed:this.config.speed,format:this.config.format||"mp3"});return {audio:t.audio.toString("base64"),format:t.format,voiceSummary:e,durationMs:t.durationMs}}catch(t){return p.error("TTS",`TTS synthesis failed: ${t.message}`),null}}async speakStream(e,t){if(!this.config.enabled||!this.provider||!e||e.trim().length===0)return null;try{let n=await this.provider.synthesizeStream(e,(r,o)=>{t(r.toString("base64"),o);},{voice:this.config.voice,speed:this.config.speed,format:this.config.format||"mp3"});return {format:n.format,totalChunks:n.totalChunks,voiceText:e}}catch(n){return p.error("TTS",`TTS stream synthesis failed: ${n.message}`),null}}async getVoices(){return this.provider?this.provider.getVoices():[]}destroy(){this.provider?.destroy(),this.provider=null;}};});function HB(s){Ct.existsSync(Oy)||Ct.mkdirSync(Oy,{recursive:true}),Ct.writeFileSync(ul,JSON.stringify(s,null,2));}function B0(){try{Ct.existsSync(ul)&&Ct.unlinkSync(ul);}catch{}}function qd(){try{return Ct.existsSync(ul)?JSON.parse(Ct.readFileSync(ul,"utf-8")):null}catch{return null}}function qB(){let s=process.argv.slice(2),e=4399,t=process.cwd(),n=false;for(let r=0;r<s.length;r++)s[r]==="--port"&&s[r+1]?(e=parseInt(s[r+1],10),r++):s[r]==="--workdir"&&s[r+1]?(t=s[r+1],r++):s[r]==="--daemon"&&(n=true);return {port:e,workDir:t,daemon:n}}async function KB(s,e){let t=He(),n=ti(),r=new nt(t),o=t.agentApprovalMode||t.approvalMode||"auto",i=new ss({defaultPermission:"allow"}),a=(x,B)=>{let H=r.getProvider(x);if(!H)return {provider:null,llmConfig:null};let W=B||H.defaultModel||H.models?.[0]?.name;return {provider:H,llmConfig:{model:W,providerName:H.name||H.id,maxInputTokens:H.contextWindow||128e3}}},l=sd(500),c=new ro({workspacePath:s,source:"server",agentName:"Neox Server"}),u=new Hd(t.tts??{enabled:false});t.tts?.enabled&&(u.setSummarizeFn(async(x,B,H)=>{let W=h;if(!W)return x.substring(0,B);let U=mr.createAdapter(W.protocol,W),z=H||"claude-haiku-4-5-20251001";return (await U.chat([{role:"system",content:`\u4F60\u662F\u4E00\u4E2A\u8BED\u97F3\u6458\u8981\u52A9\u624B\u3002\u628A\u4EE5\u4E0B\u5185\u5BB9\u538B\u7F29\u6210${B}\u5B57\u4EE5\u5185\u7684\u53E3\u8BED\u5316\u6458\u8981\uFF0C\u9002\u5408\u8BED\u97F3\u6717\u8BFB\u3002\u4E0D\u8981\u7528\u4EE3\u7801\u3001markdown\u683C\u5F0F\u3001\u5217\u8868\u3002\u76F4\u63A5\u8BF4\u91CD\u70B9\u3002`},{role:"user",content:x}],{model:z,maxTokens:300,temperature:.3})).choices?.[0]?.message?.content||x.substring(0,B)}),await u.init());let d=await zn(s,n),m=Os({workDir:s}),g=typeof m=="string"?m:"",h=r.getDefaultProvider(),y=h?.id??"",b=h?.defaultModel??h?.models?.[0]?.name??"",C={services:n,permissionManager:i,tools:d,memory:l,workDir:s,providerId:y,modelName:b,resolveProvider:a,systemPrompt:g},T=new Wd;T.setWorkspace(s);let S=null,E=null,v=null,I=null,D=t.runMode||"single";try{S=new gi({...C,actionLog:c,agentMode:o==="dangerous"?"auto":"agent",enableFGTS:t.experimental?.enableFGTS,enablePTC:t.experimental?.enablePTC});}catch(x){p.error("SERVER","Failed to init SingleAgentRuntime",{error:x});}try{E=new bi({...C,actionLog:c});}catch(x){p.error("SERVER","Failed to init AssistantRuntime",{error:x});}try{let x=new Dt(void 0,"cooperate");v=new ps({...C,ccbReviewMode:x.getCCBReviewMode(),workerModels:x.getEnabledWorkerModels().map(B=>({providerId:B.providerId,model:B.model,traits:B.traits}))});}catch(x){p.error("SERVER","Failed to init CooperateRuntime",{error:x});}try{let x=async(H,W,U)=>{let z=h;if(!z)throw new Error("No provider configured for NetworkRuntime");let q=mr.createAdapter(z.protocol,z),P=[{role:"system",content:H},{role:"user",content:W}],$=U?.model||b;if(U?.onText&&q.chatStreamed){let V="",Z=q.chatStreamed(P,{model:$,maxTokens:U.maxTokens,temperature:U.temperature,signal:U.signal});for await(let ae of Z)ae.type==="text"&&ae.text?(V+=ae.text,U.onText(ae.text)):ae.type==="content_block_delta"&&ae.delta?.text&&(V+=ae.delta.text,U.onText(ae.delta.text));return V}return (await q.chat(P,{model:$,maxTokens:U?.maxTokens,temperature:U?.temperature,signal:U?.signal})).choices?.[0]?.message?.content||""},B=new Dt(void 0,"network");I=new wi({llmCall:x,executionCapability:{orchestrator:new hr({hostService:new gr({platformServices:n}),resolveProvider:a}),tools:d,permissionManager:i,memory:l,workDir:s,providerId:y,modelName:b,resolveProvider:a,maxIterations:30},autoCreateDefaultAgents:!0,customRoles:B.getNetworkRoles?.()});}catch(x){p.error("SERVER","Failed to init NetworkRuntime",{error:x});}let O=new Set,k=new Map,M=new Map,N={async chat(x,B){O.add(x);let H=new AbortController;k.set(x,H);let W=($,F)=>{if(p.info("SERVER",`\u{1F4E1} publishRawEvent: type=${$.type} sessionId=${x}`),e.publish({sessionId:x,type:$.type,data:$,tracker:F,timestamp:Date.now()}),$.type==="run_result"&&u.isEnabled()){let V=$.currentTurnText||$.output;V&&u.speak(V).then(Z=>{Z&&e.publish({sessionId:x,type:"tts_audio",data:{type:"tts_audio",audio:Z.audio,audioFormat:Z.format,voiceSummary:Z.voiceSummary,durationMs:Z.durationMs??0},timestamp:Date.now()});}).catch(Z=>{p.warn("SERVER",`TTS generation failed: ${Z.message}`);});}},z=$=>{e.publish({sessionId:x,type:"error",data:{type:"error",message:$.message},timestamp:Date.now()});},q={onRuntimeEvent:($,F)=>W($,F),onError:z},P={onRuntimeEvent:$=>W($),onError:z};try{let $=B.mode??D,F=B.attachments?{attachments:B.attachments}:void 0;if($==="single"&&S)await S.chat({sessionId:x,prompt:B.prompt,metadata:F,providerId:B.providerId,modelName:B.modelName},q);else if($==="assistant"&&E)E.removeAllListeners("worker_event"),E.removeAllListeners("worker_result"),E.on("worker_event",V=>{if(V?.event){let Z={...V.event,sourceLabel:V.agentId,workerRole:V.role,workerTask:V.taskSummary};W(Z,V.tracker);}}),E.on("worker_result",V=>{e.publish({sessionId:x,type:"worker_result",data:{type:"worker_result",agentId:V.agentId,success:V.success,output:V.output},timestamp:Date.now()});}),await E.chat({sessionId:x,prompt:B.prompt,metadata:F});else if($==="cooperate"&&v)await v.chat({sessionId:x,prompt:B.prompt,metadata:F},P);else if($==="network"&&I)await I.chat({prompt:B.prompt,history:[]});else if(S)await S.chat({sessionId:x,prompt:B.prompt,metadata:F,providerId:B.providerId,modelName:B.modelName},q);else throw new Error("No runtime available")}finally{O.delete(x),k.delete(x);}},abort(x){let B=k.get(x);B&&(B.abort(),k.delete(x)),S&&S.abort(),E&&E.abort(),v&&v.abort?.();},replyPermission(x,B,H){let W=M.get(x);W&&(W.resolve(B),M.delete(x));},getActiveSessions(){return [...O]},setRunMode(x){Jn.isValidMode(x)&&(D=x,p.info("SERVER",`Run mode changed to: ${D}`));},getRunMode(){return D},setSandboxMode(x,B){ni(B);},setApprovalMode(x,B){let H=B==="auto"?"auto":"agent";S&&S.setAgentMode(H),p.info("SERVER",`Approval mode set to: ${B} \u2192 agentMode=${H==="auto"?"AUTO":"AGENT"}`);},async compactSession(x){p.info("SERVER",`Compact session: ${x}`);},clearSession(x){l.clear(),p.info("SERVER",`Cleared session: ${x}`);},getContextHealth(x){return l.checkContextHealth?.()??null},async getSessionInfo(x){return {messageCount:l.length,messages:l.getAll()}},setCompressionMode(x,B){p.info("SERVER",`Compression mode set to: ${B}`);},getMemoryStats(x){return {length:l.length,contextHealth:l.checkContextHealth?.()??null}},clearMemory(x){l.clear();},addMemoryMessage(x,B,H){l.add({role:B,content:H});},getToolList(){return {count:d.length,names:d.map(x=>x.name)}},async reloadTools(x){let B=await zn(x,n);d.length=0,d.push(...B),p.info("SERVER",`Reloaded ${d.length} tools for ${x}`);},async setWorkspace(x){let B=await zn(x,n);d.length=0,d.push(...B),T.setWorkspace(x),p.info("SERVER",`Workspace switched to: ${x}`);},async startCheckpointWatching(x){return T.startMessage(x)},async stopCheckpointWatching(){await T.stopWatching();},async createCheckpoint(x,B){return T.createCheckpoint(x,B)},async rollbackToCheckpoint(x){return T.rollbackToCheckpoint(x)},async rollbackSingleFile(x){return T.rollbackSingleFile(x)},async reapplySingleFile(x){return T.reapplySingleFile(x)},async getCheckpoints(x,B){return T.getCheckpoints(x,B)},async getCheckpointStats(){return T.getCurrentStats?.()??{created:0,modified:0,deleted:0,directories:0,total:0}},async getCheckpointChanges(){return T.getChangeBuffer?.()??[]},setCheckpointEnabled(x){T.setEnabled(x);},isCheckpointEnabled(){return T.isEnabled()},async cleanupCheckpoints(){await T.cleanup?.();},async getHostStatus(){return {isRunning:O.size>0,currentTask:null,mode:D,workingDirectory:s,uptime:Math.floor(process.uptime()),memoryUsage:{tokensUsed:l.length,contextWindow:128e3,pressure:l.length/128e3}}},async getHostAgents(){return [{id:"main",role:"main",status:O.size>0?"running":"idle"}]},async getHostActivity(x=10){return []},async getHostSession(){return {messageCount:l.length,tokensUsed:0}},async getHostSystem(){let x=null,B="unknown";try{let{execSync:H}=await import('child_process');try{x=H("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf-8",timeout:5e3}).trim();}catch{}try{B=H("git status --porcelain",{cwd:s,encoding:"utf-8",timeout:5e3}).trim().length===0?"clean":"dirty";}catch{}}catch{}return {platform:process.platform,arch:process.arch,cwd:s,gitBranch:x,gitStatus:B,nodeVersion:process.version}},async hostInterrupt(x){for(let[H,W]of k)W.abort();S&&S.abort(),E&&E.abort(),v&&v.abort?.();let B=O.size>0;return O.clear(),k.clear(),{interrupted:B}},async hostSendCommand(x,B){let H=`cmd-${Date.now()}`,W={prompt:x};return N.chat(H,W).catch(U=>{p.error("SERVER",`hostSendCommand failed: ${U.message}`);}),{queued:true,sessionId:H}},setTTSEnabled(x){let B=u.isEnabled();u.updateConfig({enabled:x,provider:"edge"}),x&&!B&&(u.summarizeFn||u.setSummarizeFn(async(H,W,U)=>{let z=h;if(!z)return H.substring(0,W);let q=mr.createAdapter(z.protocol,z),P=U||"claude-haiku-4-5-20251001";return (await q.chat([{role:"system",content:`\u4F60\u662F\u4E00\u4E2A\u8BED\u97F3\u6458\u8981\u52A9\u624B\u3002\u628A\u4EE5\u4E0B\u5185\u5BB9\u538B\u7F29\u6210${W}\u5B57\u4EE5\u5185\u7684\u53E3\u8BED\u5316\u6458\u8981\uFF0C\u9002\u5408\u8BED\u97F3\u6717\u8BFB\u3002\u4E0D\u8981\u7528\u4EE3\u7801\u3001markdown\u683C\u5F0F\u3001\u5217\u8868\u3002\u76F4\u63A5\u8BF4\u91CD\u70B9\u3002`},{role:"user",content:H}],{model:P,maxTokens:300,temperature:.3})).choices?.[0]?.message?.content||H.substring(0,W)}),u.init().catch(H=>{p.error("SERVER",`TTS init failed: ${H.message}`);})),p.info("SERVER",`TTS ${x?"enabled":"disabled"}`);},isTTSEnabled(){return u.isEnabled()},getTTSConfig(){return t.tts??{enabled:false}},updateTTSConfig(x){let B=u.isEnabled();u.updateConfig(x),x.enabled&&!B&&u.init().catch(H=>{p.error("SERVER",`TTS init failed: ${H.message}`);});}};return N}async function JB(){let{port:s,workDir:e,daemon:t}=qB(),n=He(),r=n.remote??{};p.info("SERVER",`Starting Neox Server on port ${s}, workDir: ${e}`);let o=new jd,i=new Ti,a=await KB(e,o),l={workDir:e};r.enabled&&r.token&&(l.auth={token:r.token,allowLocalWithoutAuth:true},l.rateLimit={maxRequests:120,windowMs:6e4},l.corsOrigins=["*"],p.info("SERVER","Remote mode enabled \u2014 auth + rateLimit active"));let{app:c,channelRegistry:u}=k0(l,a,o,i),d=n.channels;d&&(await u.initialize(d),u.setHandler(async h=>{let y=`ch-${h.channelId}-${h.chatId}`;return new Promise(b=>{let C="",T=o.subscribe(y);(async()=>{for await(let S of T){if(S.type==="run_result"){C=S.data?.output||"",T.close();break}if(S.type==="error"){C=`Error: ${S.data?.message||"unknown"}`,T.close();break}}b(C||"[no response]");})(),a.chat(y,{prompt:h.text}).catch(()=>{b("[error processing message]"),T.close();});})}),await u.startAll(),p.info("SERVER","Channel adapters initialized")),await et.initialize(e),et.watch(e),p.info("SERVER",`Skills hot-reload active (${et.size} skills loaded)`);let m=process.env.NEOX_HOST||(r.enabled?r.host||"0.0.0.0":"127.0.0.1");HB({pid:process.pid,port:s,workDir:e,startedAt:Date.now(),daemon:t});let g=()=>{p.info("SERVER","Shutting down..."),et.stopWatch(),u.stopAll().catch(()=>{}),B0(),i.dispose(),o.dispose(),process.exit(0);};process.on("SIGINT",g),process.on("SIGTERM",g),serve({fetch:c.fetch,port:s,hostname:m},h=>{p.info("SERVER",`Neox Server listening on http://${m}:${h.port}`),process.send&&process.send({type:"ready",port:h.port});});}var Oy,ul,F0=R(()=>{_0();I0();Ny();te();iu();Za();tl();yf();Ef();Md();Ey();Ay();wt();cr();Vs();Zh();od();uu();N0();Oc();un();sr();Ca();Dy();Jo();$0();Oy=Ie.join(ho.homedir(),".neox"),ul=Ie.join(Oy,"server.pid");JB().catch(s=>{p.error("SERVER","Failed to start server",{error:s}),B0(),process.exit(1);});});async function ZB(s){return new Promise(e=>{let t=iT.createServer();t.once("error",()=>e(false)),t.once("listening",()=>{t.close(()=>e(true));}),t.listen(s,"127.0.0.1");})}async function W0(s=XB){for(let e=s;e<s+100;e++)if(await ZB(e))return e;throw new Error("No free port found")}async function Uy(s){try{let e=new AbortController,t=setTimeout(()=>e.abort(),QB),n=await fetch(`http://127.0.0.1:${s}/health`,{signal:e.signal});return clearTimeout(t),n.ok}catch{return false}}async function z0(s){let e=qd();if(e){if(p.debug("BOOT",`ensureServer: found pid file, checking health on port ${e.port}...`),await Uy(e.port))return p.info("PROCESS_MGR",`Reusing existing server on port ${e.port}${e.daemon?" (daemon)":""}`),{port:e.port,baseUrl:`http://127.0.0.1:${e.port}`,reused:true};p.debug("BOOT","ensureServer: stale pid file, starting new server");}let t=await W0();p.debug("BOOT",`ensureServer: starting server on port ${t}...`);let n=await eF(s,t);return {port:t,baseUrl:`http://127.0.0.1:${t}`,process:n,reused:false}}async function eF(s,e){let t=Ie.resolve(Ie.dirname(fileURLToPath(import.meta.url)),".."),n=Ie.join(t,"server","main.js");p.debug("BOOT",`startServer: entry=${n}`),p.info("PROCESS_MGR",`Starting server: ${n} --port ${e} --workdir ${s}`);let r=fork(n,["--port",String(e),"--workdir",s],{stdio:["pipe","pipe","pipe","ipc"],detached:false,env:{...process.env}}),o="";return r.stderr?.on("data",i=>{let a=i.toString();o+=a,p.debug("SERVER_CHILD",a.trim());}),await new Promise((i,a)=>{let l=setTimeout(()=>{p.error("BOOT",`startServer: TIMEOUT (${dl}ms)`),o&&p.error("BOOT",`server stderr:
|
|
3463
3463
|
${o.slice(-500)}`),a(new Error(`Server startup timeout (${dl}ms)`));},dl);r.on("message",c=>{c?.type==="ready"&&(clearTimeout(l),p.debug("BOOT",`startServer: ready on port ${c.port}`),p.info("PROCESS_MGR",`Server ready on port ${c.port}`),i());}),r.on("error",c=>{clearTimeout(l),p.error("BOOT",`startServer: error: ${c.message}`),a(c);}),r.on("exit",c=>{clearTimeout(l),c!==0&&(p.error("BOOT",`startServer: exited with code ${c}`),o&&p.error("BOOT",`server stderr:
|
|
3464
|
-
${o.slice(-500)}`),a(new Error(`Server exited with code ${c}`)));});}),r}function H0(s){s.process&&!s.process.killed&&(p.info("PROCESS_MGR","Stopping server process"),s.process.kill("SIGTERM"));}function tF(){Ct.existsSync(Fy)||Ct.mkdirSync(Fy,{recursive:true});}async function q0(s,e){let t=await jy();if(t.running)throw new Error(`Daemon already running (pid: ${t.pid}, port: ${t.port})`);tF();let n=e??await W0(),r=Ie.resolve(Ie.dirname(fileURLToPath(import.meta.url)),".."),o=Ie.join(r,"server","main.js"),i=Ct.openSync(Kd,"a"),a=spawn(process.execPath,[o,"--port",String(n),"--workdir",s,"--daemon"],{detached:true,stdio:["ignore",i,i],env:{...process.env,NEOX_DAEMON:"1"}});Ct.closeSync(i),a.unref();let l=a.pid,c=Date.now();for(;Date.now()-c<dl;)if(await new Promise(u=>setTimeout(u,500)),await Uy(n))return {pid:l,port:n};try{process.kill(l,"SIGTERM");}catch{}throw new Error(`Daemon startup timeout (${dl}ms)`)}async function K0(){let s=qd();if(!s)return false;try{process.kill(s.pid,"SIGTERM");let e=Date.now();for(;Date.now()-e<5e3;){await new Promise(t=>setTimeout(t,300));try{process.kill(s.pid,0);}catch{return !0}}try{process.kill(s.pid,"SIGKILL");}catch{}return !0}catch{return false}}async function jy(){let s=qd();if(!s)return {running:false,logFile:Kd};let e=false;try{process.kill(s.pid,0),e=!0;}catch{}let t=e&&await Uy(s.port);return {running:t,pid:s.pid,port:s.port,workDir:s.workDir,uptime:t?Math.floor((Date.now()-s.startedAt)/1e3):void 0,logFile:Kd}}function so(){return Kd}var XB,QB,dl,Fy,Kd,Gy=R(()=>{F0();te();XB=4399,QB=3e3,dl=15e3,Fy=Ie.join(ho.homedir(),".neox"),Kd=Ie.join(Fy,"server.log");});var Jd,Vd,fs,In,Yd,rF,$r,w,Xt=R(()=>{Cu();Jd=ai,Vd=["/help","/exit","/quit","/mode","/mode ask","/mode agent","/run","/run status","/run single","/run assistant","/run cooperate","/run network","/runconfig","/approval","/approval on","/approval off","/notify","/sandbox","/sandbox on","/sandbox off","/sandbox status","/provider","/provider list","/provider add","/provider edit","/provider remove","/provider default","/provider use","/model","/model list","/model add","/model use","/model remove","/model default","/model config","/attach","/attachments","/thinking","/thinking on","/thinking off","/thinking status","/websearch","/websearch status","/websearch on","/websearch off","/websearch set-url","/websearch set-key","/sessions","/session","/session-new","/session-info","/undo","/checkpoint","/checkpoints","/rollback","/session-clear","/session-export","/compact","/workspace","/workspace list","/workspace add","/workspace switch","/processes","/ps","/kill","/clear","/config-clear","/config-reset","/stats","/statistic","/context","/memory","/memory show","/memory paths","/remote","/index","/index-build","/index-status","/schema-example","/mcp","/mcp list","/mcp add","/mcp remove","/mcp connect","/mcp test"],fs={openai:"https://api.openai.com/v1","openai-responses":"https://api.openai.com/v1",anthropic:"https://api.anthropic.com","anthropic-openai":"https://api.anthropic.com/v1",doubao:"https://ark.cn-beijing.volces.com/api/v3",gemini:"https://generativelanguage.googleapis.com",kimi:"https://api.moonshot.cn/v1"},In={openai:"OpenAI (Chat)","openai-responses":"OpenAI (Responses)",anthropic:"Anthropic","anthropic-openai":"Anthropic (OpenAI Format)",doubao:"\u8C46\u5305 (Doubao)",gemini:"Google Gemini",kimi:"Kimi (Moonshot)"},Yd={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"},rF=()=>{let s=process.env.COLORFGBG;if(s){let t=s.split(";");if(t.length>1){let n=parseInt(t[1]);return n<8||isNaN(n)}}process.env.TERM_PROGRAM;return true},$r=rF(),w={primary:s=>$r?Oe.cyan(s):Oe.blue(s),success:s=>$r?Oe.green(s):Oe.green(s),error:s=>$r?Oe.red(s):Oe.red(s),warning:s=>$r?Oe.yellow(s):Oe.yellow(s),info:s=>$r?Oe.blueBright(s):Oe.blue(s),dim:s=>$r?Oe.gray(s):Oe.gray(s),highlight:s=>$r?Oe.white.bold(s):Oe.black.bold(s),code:s=>$r?Oe.magenta(s):Oe.magenta(s),text:s=>$r?Oe.white(s):Oe.black(s)};});function Xd(s){let t=Date.now()-s.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5),o=Math.floor(t/864e5);return n<1?"just now":n<60?`${n}m ago`:r<24?`${r}h ago`:o===1?"yesterday":`${o} days ago`}function J0(s){return s<1e3?`${s}ms`:s<6e4?`${(s/1e3).toFixed(1)}s`:s<36e5?`${Math.floor(s/6e4)}m ${Math.floor(s%6e4/1e3)}s`:`${Math.floor(s/36e5)}h ${Math.floor(s%36e5/6e4)}m`}function gl(s){return !s||s.length===0?"":` [${s.join(", ")}]`}function V0(s){if(!s||Object.keys(s).length===0)return "";let e=Object.entries(s);if(e.length===0)return "";let t=e.slice(0,2).map(([r,o])=>{let i=String(o);return i.length>30&&(i=i.substring(0,27)+"..."),`${r}=${i}`}),n=e.length>2?`, +${e.length-2}`:"";return Oe.dim(` (${t.join(", ")}${n})`)}var Y0=R(()=>{});function X0(s,e){let t=e.trim();if(!t.startsWith("/"))return [];let n=/\s$/.test(e),r=t.split(/\s+/);if(r.length===0)return [];let o=r[0],i=r.slice(1),a=s.providerStore.getProviders().map(g=>g.id),l=s.providerSettings?.models.map(g=>g.name)||[],c=["list","add","edit","remove","default","use"],u=["list","add","use","remove","default"],d=(g,h)=>h.map(y=>`${g} ${y}`),m=()=>{if(n)return e;let g=e.lastIndexOf(" ");return g===-1?`${e} `:e.slice(0,g+1)};if(i.length===0&&!n){let g=Vd.filter(h=>h.startsWith(t));if(g.length>0)return g}switch(o){case "/provider":{if(i.length===0||i.length===1&&!n)return d("/provider",c);let g=i[0];if(!c.includes(g))return d("/provider",c);if(["use","edit","remove","default"].includes(g)){if(i.length===1&&!n)return a.map(y=>`/provider ${g} ${y}`);let h=m();return a.map(y=>`${h}${y}`)}return []}case "/model":{if(i.length===0||i.length===1&&!n)return d("/model",u);let g=i[0],h=i.slice(1);if(!u.includes(g))return d("/model",u);switch(g){case "list":{if(a.length===0)return [];let y=h.length===0?`${t} `:m();return a.map(b=>`${y}${b}`)}case "use":{if(h.length===0)return Array.from(new Set([...a.map(T=>`/model use ${T}`),...l.map(T=>`/model use ${T}`)]));let y=h[0],b=s.providerStore.getProvider(y);if(b){let T=m();return (b.models||[]).map(S=>`${T}${S.name}`)}if(l.length===0)return [];let C=h.length===1?`${t} `:m();return l.map(T=>`${C}${T}`)}case "remove":case "delete":case "default":{if(l.length===0)return [];let y=h.length===0?`${t} `:m();return l.map(b=>`${y}${b}`)}default:return []}}default:return []}}var Q0=R(()=>{Xt();});function oF(s){let e=s.trim();if(!e.startsWith("{")||!e.endsWith("}"))return null;try{let t=JSON.parse(e);return !t||typeof t!="object"||typeof t.type!="string"?null:t}catch{return null}}function Z0(s){if(!s)return "";let e=[],t=[],n=[];if((s.pattern||s.query)&&e.push(s.pattern||s.query),Array.isArray(s.keywords)&&e.push(...s.keywords),Array.isArray(s.queries))for(let o of s.queries){if(!o?.pattern)continue;let i=(o.op||"or").toLowerCase();i==="and"?t.push(o.pattern):i==="not"?n.push(o.pattern):e.push(o.pattern);}let r=[];return e.length>0&&r.push(e.join(" OR ")),t.length>0&&r.push(`AND ${t.join(" + ")}`),n.length>0&&r.push(`NOT ${n.join(" + ")}`),r.join(" ")}function e_(s,e,t,n){if(!s)return;let r=Su(e,t);if(s.updateStatus(r,"tool_call"),process.env.CLI_DEBUG==="1"){let a=Object.keys(t).join(",");console.error(`[DEBUG] handleToolCallStart: toolName="${e}", sourceLabel="${n}", argsKeys=${a}`);}let o=e.toLowerCase();if(o==="update_plan"||o==="verify_step"||o==="ask_user")return;if(o==="web_search"||o.includes("websearch")){s.addWebSearchResult({query:t.query||t.q||"",status:"searching",sourceLabel:n});return}if(o==="web_fetch"||o.includes("webfetch")){s.addWebFetchResult({url:t.url||"",status:"fetching",sourceLabel:n});return}if(o==="readfile"||o==="read"){s.addReadFileResult({filePath:t.path||t.file_path||"",startLine:t.start_line||t.offset,numLines:t.num_lines||t.limit,status:"reading",sourceLabel:n});return}if(o==="search"||o==="grep"){let a=Z0(t)||t.pattern||t.query||"",l=t.mode||"content",c=Array.isArray(t.keywords)?false:Array.isArray(t.queries)?t.queries.some(d=>d?.regex!==false):true,u=t.path||t.file_path||".";l==="files"?s.addSearchFilesResult({pattern:a,path:u,status:"searching",sourceLabel:n}):s.addSearchResult({pattern:a,filePath:u,contextLines:t.context_lines,mode:l,regex:c,caseInsensitive:t.case_insensitive,status:"searching",sourceLabel:n});return}if(o==="search_files"||o==="glob"){s.addSearchFilesResult({pattern:t.pattern||"",path:t.path,status:"searching",sourceLabel:n});return}if(o==="show_tree"||o==="list_directory"||o==="smart_tree"){s.addShowTreeResult({path:t.directory||t.path||".",maxDepth:t.max_depth,mode:t.mode,status:"loading",sourceLabel:n});return}if(o==="execute_bash"||o==="execute_shell"||o==="bash"){s.addCommandExecResult({command:t.command||t.code||"",cwd:t.cwd,timeout:t.timeout,background:t.run_in_background,status:"running",sourceLabel:n});return}if(o==="execute_python"||o==="execute_js"||o==="execute_javascript"){s.addCodeExecResult({toolName:e,code:t.code,cwd:t.cwd,status:"running",sourceLabel:n});return}if(o==="debug_in_browser"){s.addBrowserDebugResult({url:t.url||"auto",status:"detecting",sourceLabel:n});return}if(o==="ptc_execute"){let a=t.description||t.script?.substring(0,80)||"Executing script";s.addPTCResult({status:"running",description:a,sourceLabel:n});return}if(o.startsWith("git_")){s.addGitResult({subcommand:o.replace("git_",""),args:t,status:"running",sourceLabel:n});return}if(o==="task"){let a=t.role?`[${t.role}]`:"[scout]",l=t.model||"",c=t.description||"",u=c?c.substring(0,120):"Sub-agent task",d=[a];l&&d.push(l),s.addAssistantToolEntry("task",u,{result:"pending",sourceLabel:n,details:d.join(" \xB7 ")});return}if(["spawn_agent","delegate_task","query_agent","send_message","wait_result","wait_all","terminate_agent"].includes(o)){let a=t.agent_id||t.agentId||t.target||"",l=t.task||t.description||t.message||"",c="",u;if(o==="spawn_agent"){let d=t.role?`[${t.role}]`:"",m=t.model||t.modelName||"";c=l?l.substring(0,120):`Spawn ${d}`;let g=[];d&&g.push(d),m&&g.push(m),g.length&&(u=g.join(" \xB7 "));}else if(o==="wait_all"){let d=t.agent_ids||t.agentIds||[];c=d.length>0?`Waiting ${d.length} agents: ${d.join(", ")}`:"Waiting all agents";}else o==="wait_result"?c=a?`Waiting ${a}`:"Waiting result":o==="delegate_task"?(c=l?l.substring(0,120):`\u2192 ${a}`,t.model&&(u=t.model)):c=l||`\u2192 ${a||o}`;s.addAssistantToolEntry(o,c,{targetAgentId:a,taskId:t.task_id||t.taskId,result:"pending",sourceLabel:n,details:u});return}o==="write_file"||o==="write"||o==="edit_file"||o==="edit"||o==="explore"||o==="task"||s.addToolCall(e,t);}function Wy(s,e,t,n,r,o){if(!s)return;let i=e.toLowerCase();if(i==="update_plan"||i==="verify_step"||i==="ask_user"||i==="explore"||i==="task")return;if(i==="edit_file"||i==="edit"){try{let l=JSON.parse(t);l.status==="success"?s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"completed",summary:l.summary||"Edit completed successfully",replacements:l.metadata?.replacements||1,sourceLabel:o}):l.status==="already_done"?s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"completed",summary:l.summary||"Edit already applied",alreadyDone:!0,sourceLabel:o}):s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"error",error:l.summary||l.error||"Edit failed",sourceLabel:o});}catch{n?s.addEditFileResult({filePath:r?.file_path||"",status:"completed",summary:"Edit completed",sourceLabel:o}):s.addEditFileResult({filePath:r?.file_path||"",status:"error",error:t,sourceLabel:o});}return}if(i==="write_file"||i==="write")return;if(i==="web_search"||i.includes("websearch")){if(n)try{let l=iF(t);s.addWebSearchResult({query:r?.query||r?.q||"",results:l,status:"completed",sourceLabel:o});}catch{s.addWebSearchResult({query:r?.query||r?.q||"",status:"completed",sourceLabel:o});}else s.addWebSearchResult({query:r?.query||"",status:"error",error:t,sourceLabel:o});return}if(i==="web_fetch"||i.includes("webfetch")){n?s.addWebFetchResult({url:r?.url||"",contentLength:t.length,contentPreview:t.slice(0,500),status:"completed",sourceLabel:o}):s.addWebFetchResult({url:r?.url||"",status:"error",error:t,sourceLabel:o});return}if(i==="readfile"||i==="read"){if(n){let l=t.split(`
|
|
3464
|
+
${o.slice(-500)}`),a(new Error(`Server exited with code ${c}`)));});}),r}function H0(s){s.process&&!s.process.killed&&(p.info("PROCESS_MGR","Stopping server process"),s.process.kill("SIGTERM"));}function tF(){Ct.existsSync(Fy)||Ct.mkdirSync(Fy,{recursive:true});}async function q0(s,e){let t=await jy();if(t.running)throw new Error(`Daemon already running (pid: ${t.pid}, port: ${t.port})`);tF();let n=e??await W0(),r=Ie.resolve(Ie.dirname(fileURLToPath(import.meta.url)),".."),o=Ie.join(r,"server","main.js"),i=Ct.openSync(Kd,"a"),a=spawn(process.execPath,[o,"--port",String(n),"--workdir",s,"--daemon"],{detached:true,stdio:["ignore",i,i],env:{...process.env,NEOX_DAEMON:"1"}});Ct.closeSync(i),a.unref();let l=a.pid,c=Date.now();for(;Date.now()-c<dl;)if(await new Promise(u=>setTimeout(u,500)),await Uy(n))return {pid:l,port:n};try{process.kill(l,"SIGTERM");}catch{}throw new Error(`Daemon startup timeout (${dl}ms)`)}async function K0(){let s=qd();if(!s)return false;try{process.kill(s.pid,"SIGTERM");let e=Date.now();for(;Date.now()-e<5e3;){await new Promise(t=>setTimeout(t,300));try{process.kill(s.pid,0);}catch{return !0}}try{process.kill(s.pid,"SIGKILL");}catch{}return !0}catch{return false}}async function jy(){let s=qd();if(!s)return {running:false,logFile:Kd};let e=false;try{process.kill(s.pid,0),e=!0;}catch{}let t=e&&await Uy(s.port);return {running:t,pid:s.pid,port:s.port,workDir:s.workDir,uptime:t?Math.floor((Date.now()-s.startedAt)/1e3):void 0,logFile:Kd}}function so(){return Kd}var XB,QB,dl,Fy,Kd,Gy=R(()=>{F0();te();XB=4399,QB=3e3,dl=15e3,Fy=Ie.join(ho.homedir(),".neox"),Kd=Ie.join(Fy,"server.log");});var Jd,Vd,hs,In,Yd,rF,$r,w,Xt=R(()=>{Cu();Jd=ai,Vd=["/help","/exit","/quit","/mode","/mode ask","/mode agent","/run","/run status","/run single","/run assistant","/run cooperate","/run network","/runconfig","/approval","/approval on","/approval off","/notify","/sandbox","/sandbox on","/sandbox off","/sandbox status","/provider","/provider list","/provider add","/provider edit","/provider remove","/provider default","/provider use","/model","/model list","/model add","/model use","/model remove","/model default","/model config","/attach","/attachments","/thinking","/thinking on","/thinking off","/thinking status","/websearch","/websearch status","/websearch on","/websearch off","/websearch set-url","/websearch set-key","/sessions","/session","/session-new","/session-info","/undo","/checkpoint","/checkpoints","/rollback","/session-clear","/session-export","/compact","/workspace","/workspace list","/workspace add","/workspace switch","/processes","/ps","/kill","/clear","/config-clear","/config-reset","/stats","/statistic","/context","/memory","/memory show","/memory paths","/remote","/index","/index-build","/index-status","/schema-example","/mcp","/mcp list","/mcp add","/mcp remove","/mcp connect","/mcp test"],hs={openai:"https://api.openai.com/v1","openai-responses":"https://api.openai.com/v1",anthropic:"https://api.anthropic.com","anthropic-openai":"https://api.anthropic.com/v1",doubao:"https://ark.cn-beijing.volces.com/api/v3",gemini:"https://generativelanguage.googleapis.com",kimi:"https://api.moonshot.cn/v1"},In={openai:"OpenAI (Chat)","openai-responses":"OpenAI (Responses)",anthropic:"Anthropic","anthropic-openai":"Anthropic (OpenAI Format)",doubao:"\u8C46\u5305 (Doubao)",gemini:"Google Gemini",kimi:"Kimi (Moonshot)"},Yd={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"},rF=()=>{let s=process.env.COLORFGBG;if(s){let t=s.split(";");if(t.length>1){let n=parseInt(t[1]);return n<8||isNaN(n)}}process.env.TERM_PROGRAM;return true},$r=rF(),w={primary:s=>$r?Oe.cyan(s):Oe.blue(s),success:s=>$r?Oe.green(s):Oe.green(s),error:s=>$r?Oe.red(s):Oe.red(s),warning:s=>$r?Oe.yellow(s):Oe.yellow(s),info:s=>$r?Oe.blueBright(s):Oe.blue(s),dim:s=>$r?Oe.gray(s):Oe.gray(s),highlight:s=>$r?Oe.white.bold(s):Oe.black.bold(s),code:s=>$r?Oe.magenta(s):Oe.magenta(s),text:s=>$r?Oe.white(s):Oe.black(s)};});function Xd(s){let t=Date.now()-s.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5),o=Math.floor(t/864e5);return n<1?"just now":n<60?`${n}m ago`:r<24?`${r}h ago`:o===1?"yesterday":`${o} days ago`}function J0(s){return s<1e3?`${s}ms`:s<6e4?`${(s/1e3).toFixed(1)}s`:s<36e5?`${Math.floor(s/6e4)}m ${Math.floor(s%6e4/1e3)}s`:`${Math.floor(s/36e5)}h ${Math.floor(s%36e5/6e4)}m`}function gl(s){return !s||s.length===0?"":` [${s.join(", ")}]`}function V0(s){if(!s||Object.keys(s).length===0)return "";let e=Object.entries(s);if(e.length===0)return "";let t=e.slice(0,2).map(([r,o])=>{let i=String(o);return i.length>30&&(i=i.substring(0,27)+"..."),`${r}=${i}`}),n=e.length>2?`, +${e.length-2}`:"";return Oe.dim(` (${t.join(", ")}${n})`)}var Y0=R(()=>{});function X0(s,e){let t=e.trim();if(!t.startsWith("/"))return [];let n=/\s$/.test(e),r=t.split(/\s+/);if(r.length===0)return [];let o=r[0],i=r.slice(1),a=s.providerStore.getProviders().map(g=>g.id),l=s.providerSettings?.models.map(g=>g.name)||[],c=["list","add","edit","remove","default","use"],u=["list","add","use","remove","default"],d=(g,h)=>h.map(y=>`${g} ${y}`),m=()=>{if(n)return e;let g=e.lastIndexOf(" ");return g===-1?`${e} `:e.slice(0,g+1)};if(i.length===0&&!n){let g=Vd.filter(h=>h.startsWith(t));if(g.length>0)return g}switch(o){case "/provider":{if(i.length===0||i.length===1&&!n)return d("/provider",c);let g=i[0];if(!c.includes(g))return d("/provider",c);if(["use","edit","remove","default"].includes(g)){if(i.length===1&&!n)return a.map(y=>`/provider ${g} ${y}`);let h=m();return a.map(y=>`${h}${y}`)}return []}case "/model":{if(i.length===0||i.length===1&&!n)return d("/model",u);let g=i[0],h=i.slice(1);if(!u.includes(g))return d("/model",u);switch(g){case "list":{if(a.length===0)return [];let y=h.length===0?`${t} `:m();return a.map(b=>`${y}${b}`)}case "use":{if(h.length===0)return Array.from(new Set([...a.map(T=>`/model use ${T}`),...l.map(T=>`/model use ${T}`)]));let y=h[0],b=s.providerStore.getProvider(y);if(b){let T=m();return (b.models||[]).map(S=>`${T}${S.name}`)}if(l.length===0)return [];let C=h.length===1?`${t} `:m();return l.map(T=>`${C}${T}`)}case "remove":case "delete":case "default":{if(l.length===0)return [];let y=h.length===0?`${t} `:m();return l.map(b=>`${y}${b}`)}default:return []}}default:return []}}var Q0=R(()=>{Xt();});function oF(s){let e=s.trim();if(!e.startsWith("{")||!e.endsWith("}"))return null;try{let t=JSON.parse(e);return !t||typeof t!="object"||typeof t.type!="string"?null:t}catch{return null}}function Z0(s){if(!s)return "";let e=[],t=[],n=[];if((s.pattern||s.query)&&e.push(s.pattern||s.query),Array.isArray(s.keywords)&&e.push(...s.keywords),Array.isArray(s.queries))for(let o of s.queries){if(!o?.pattern)continue;let i=(o.op||"or").toLowerCase();i==="and"?t.push(o.pattern):i==="not"?n.push(o.pattern):e.push(o.pattern);}let r=[];return e.length>0&&r.push(e.join(" OR ")),t.length>0&&r.push(`AND ${t.join(" + ")}`),n.length>0&&r.push(`NOT ${n.join(" + ")}`),r.join(" ")}function e_(s,e,t,n){if(!s)return;let r=Su(e,t);if(s.updateStatus(r,"tool_call"),process.env.CLI_DEBUG==="1"){let a=Object.keys(t).join(",");console.error(`[DEBUG] handleToolCallStart: toolName="${e}", sourceLabel="${n}", argsKeys=${a}`);}let o=e.toLowerCase();if(o==="update_plan"||o==="verify_step"||o==="ask_user")return;if(o==="web_search"||o.includes("websearch")){s.addWebSearchResult({query:t.query||t.q||"",status:"searching",sourceLabel:n});return}if(o==="web_fetch"||o.includes("webfetch")){s.addWebFetchResult({url:t.url||"",status:"fetching",sourceLabel:n});return}if(o==="readfile"||o==="read"){s.addReadFileResult({filePath:t.path||t.file_path||"",startLine:t.start_line||t.offset,numLines:t.num_lines||t.limit,status:"reading",sourceLabel:n});return}if(o==="search"||o==="grep"){let a=Z0(t)||t.pattern||t.query||"",l=t.mode||"content",c=Array.isArray(t.keywords)?false:Array.isArray(t.queries)?t.queries.some(d=>d?.regex!==false):true,u=t.path||t.file_path||".";l==="files"?s.addSearchFilesResult({pattern:a,path:u,status:"searching",sourceLabel:n}):s.addSearchResult({pattern:a,filePath:u,contextLines:t.context_lines,mode:l,regex:c,caseInsensitive:t.case_insensitive,status:"searching",sourceLabel:n});return}if(o==="search_files"||o==="glob"){s.addSearchFilesResult({pattern:t.pattern||"",path:t.path,status:"searching",sourceLabel:n});return}if(o==="show_tree"||o==="list_directory"||o==="smart_tree"){s.addShowTreeResult({path:t.directory||t.path||".",maxDepth:t.max_depth,mode:t.mode,status:"loading",sourceLabel:n});return}if(o==="execute_bash"||o==="execute_shell"||o==="bash"){s.addCommandExecResult({command:t.command||t.code||"",cwd:t.cwd,timeout:t.timeout,background:t.run_in_background,status:"running",sourceLabel:n});return}if(o==="execute_python"||o==="execute_js"||o==="execute_javascript"){s.addCodeExecResult({toolName:e,code:t.code,cwd:t.cwd,status:"running",sourceLabel:n});return}if(o==="debug_in_browser"){s.addBrowserDebugResult({url:t.url||"auto",status:"detecting",sourceLabel:n});return}if(o==="ptc_execute"){let a=t.description||t.script?.substring(0,80)||"Executing script";s.addPTCResult({status:"running",description:a,sourceLabel:n});return}if(o.startsWith("git_")){s.addGitResult({subcommand:o.replace("git_",""),args:t,status:"running",sourceLabel:n});return}if(o==="task"){let a=t.role?`[${t.role}]`:"[scout]",l=t.model||"",c=t.description||"",u=c?c.substring(0,120):"Sub-agent task",d=[a];l&&d.push(l),s.addAssistantToolEntry("task",u,{result:"pending",sourceLabel:n,details:d.join(" \xB7 ")});return}if(["spawn_agent","delegate_task","query_agent","send_message","wait_result","wait_all","terminate_agent"].includes(o)){let a=t.agent_id||t.agentId||t.target||"",l=t.task||t.description||t.message||"",c="",u;if(o==="spawn_agent"){let d=t.role?`[${t.role}]`:"",m=t.model||t.modelName||"";c=l?l.substring(0,120):`Spawn ${d}`;let g=[];d&&g.push(d),m&&g.push(m),g.length&&(u=g.join(" \xB7 "));}else if(o==="wait_all"){let d=t.agent_ids||t.agentIds||[];c=d.length>0?`Waiting ${d.length} agents: ${d.join(", ")}`:"Waiting all agents";}else o==="wait_result"?c=a?`Waiting ${a}`:"Waiting result":o==="delegate_task"?(c=l?l.substring(0,120):`\u2192 ${a}`,t.model&&(u=t.model)):c=l||`\u2192 ${a||o}`;s.addAssistantToolEntry(o,c,{targetAgentId:a,taskId:t.task_id||t.taskId,result:"pending",sourceLabel:n,details:u});return}o==="write_file"||o==="write"||o==="edit_file"||o==="edit"||o==="explore"||o==="task"||s.addToolCall(e,t);}function Wy(s,e,t,n,r,o){if(!s)return;let i=e.toLowerCase();if(i==="update_plan"||i==="verify_step"||i==="ask_user"||i==="explore"||i==="task")return;if(i==="edit_file"||i==="edit"){try{let l=JSON.parse(t);l.status==="success"?s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"completed",summary:l.summary||"Edit completed successfully",replacements:l.metadata?.replacements||1,sourceLabel:o}):l.status==="already_done"?s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"completed",summary:l.summary||"Edit already applied",alreadyDone:!0,sourceLabel:o}):s.addEditFileResult({filePath:l.file_path||r?.file_path||"",status:"error",error:l.summary||l.error||"Edit failed",sourceLabel:o});}catch{n?s.addEditFileResult({filePath:r?.file_path||"",status:"completed",summary:"Edit completed",sourceLabel:o}):s.addEditFileResult({filePath:r?.file_path||"",status:"error",error:t,sourceLabel:o});}return}if(i==="write_file"||i==="write")return;if(i==="web_search"||i.includes("websearch")){if(n)try{let l=iF(t);s.addWebSearchResult({query:r?.query||r?.q||"",results:l,status:"completed",sourceLabel:o});}catch{s.addWebSearchResult({query:r?.query||r?.q||"",status:"completed",sourceLabel:o});}else s.addWebSearchResult({query:r?.query||"",status:"error",error:t,sourceLabel:o});return}if(i==="web_fetch"||i.includes("webfetch")){n?s.addWebFetchResult({url:r?.url||"",contentLength:t.length,contentPreview:t.slice(0,500),status:"completed",sourceLabel:o}):s.addWebFetchResult({url:r?.url||"",status:"error",error:t,sourceLabel:o});return}if(i==="readfile"||i==="read"){if(n){let l=t.split(`
|
|
3465
3465
|
`);s.addReadFileResult({filePath:r?.path||r?.file_path||"",totalLines:l.length,fileSize:t.length>=1024?`${(t.length/1024).toFixed(1)}KB`:`${t.length} chars`,preview:t.slice(0,1e3),status:"completed",sourceLabel:o});}else s.addReadFileResult({filePath:r?.path||r?.file_path||"",status:"error",error:t,sourceLabel:o});return}if(i==="search"){let l=oF(t),c=l?.content&&typeof l.content=="string"?l.content:t,u=l?.metadata,d=r?.mode==="files"||u?.mode==="files",m=Z0(r)||r?.pattern||r?.query||"",g=u?.mode||r?.mode||(d?"files":"content"),h=u?.regex??(Array.isArray(r?.keywords)?false:Array.isArray(r?.queries)?r.queries.some(T=>T?.regex!==false):true),y=r?.case_insensitive,b=r?.path||r?.file_path||u?.path||"",C=u?.command;if(n)if(d){let T=u?.files||c.split(`
|
|
3466
3466
|
`).filter(S=>S.trim().startsWith(" ")).map(S=>S.trim());s.addSearchFilesResult({pattern:m,path:b,fileCount:T.length,files:T.slice(0,30),status:"completed",mode:g,strategy:u?.strategy,regex:h,caseInsensitive:y,command:C,sourceLabel:o});}else {let T=aF(c),S=lF(c),E=S.entries.length>0?cF(S.entries):void 0;s.addSearchResult({pattern:m,filePath:b,matchCount:S.matchCount??T.length,details:E,status:"completed",mode:g,strategy:u?.strategy,regex:h,caseInsensitive:y,command:C,sourceLabel:o});}else d?s.addSearchFilesResult({pattern:m,path:b,status:"error",error:c,mode:g,strategy:u?.strategy,regex:h,caseInsensitive:y,command:C,sourceLabel:o}):s.addSearchResult({pattern:m,filePath:b,status:"error",error:c,mode:g,strategy:u?.strategy,regex:h,caseInsensitive:y,command:C,sourceLabel:o});return}if(i==="search_files"||i==="glob"){if(n){let l=t.split(`
|
|
3467
3467
|
`).filter(c=>c.trim());s.addSearchFilesResult({pattern:r?.pattern||"",path:r?.path,fileCount:l.length,files:l.slice(0,30),status:"completed",sourceLabel:o});}else s.addSearchFilesResult({pattern:r?.pattern||"",status:"error",error:t,sourceLabel:o});return}if(i==="show_tree"||i==="list_directory"||i==="smart_tree"){n?s.addShowTreeResult({path:r?.directory||r?.path||".",mode:r?.mode,maxDepth:r?.max_depth,content:t,totalChars:t.length,status:"completed",sourceLabel:o}):s.addShowTreeResult({path:r?.directory||r?.path||".",mode:r?.mode,maxDepth:r?.max_depth,status:"error",error:t,sourceLabel:o});return}if(i==="execute_bash"||i==="execute_shell"||i==="bash"){n?s.addCommandExecResult({command:r?.command||r?.code||"",cwd:r?.cwd,output:t,exitCode:0,status:"completed",sourceLabel:o}):s.addCommandExecResult({command:r?.command||r?.code||"",cwd:r?.cwd,output:t,status:"error",error:t,sourceLabel:o});return}if(i==="execute_python"||i==="execute_js"||i==="execute_javascript"){n?s.addCodeExecResult({toolName:e,code:r?.code,output:t,exitCode:0,status:"completed",sourceLabel:o}):s.addCodeExecResult({toolName:e,code:r?.code,status:"error",error:t,sourceLabel:o});return}if(i==="debug_in_browser"){if(n)try{let l=JSON.parse(t);s.addBrowserDebugResult({url:l.url||"unknown",status:l.success?"completed":"error",summary:l.summary,loadTime:l.load_time,consoleLogs:l.console_logs?.length||0,errors:l.errors?.map(c=>({type:c.type,message:c.message,file:c.file,line:c.line}))||[],networkRequests:l.network_requests?.length||0,performance:l.performance,error:l.error,sourceLabel:o});}catch{s.addToolResult(t,false);}else s.addBrowserDebugResult({url:"unknown",status:"error",error:t,sourceLabel:o});return}if(i==="ptc_execute"){n?s.addPTCResult({status:"completed",description:r?.description||"",output:t,sourceLabel:o}):s.addPTCResult({status:"error",description:r?.description||"",error:t,sourceLabel:o});return}if(i.startsWith("git_")){let l=i.replace("git_",""),c={};try{c=JSON.parse(t);}catch{}n?s.addGitResult({subcommand:l,args:r,status:"completed",output:c.data||c.output||t,summary:c.summary||c._summary,sourceLabel:o}):s.addGitResult({subcommand:l,args:r,status:"error",error:c.error||c._message||c.summary||t,sourceLabel:o});return}if(i==="task"){let l=t.startsWith("[ERROR]"),c=r?.role?`[${r.role}]`:"[scout]",u=t.substring(0,300).replace(/\n/g," "),d=l?u:u||"Task completed",m=t.length>300?t.substring(0,600):void 0;s.addAssistantToolEntry("task",d,{result:l?"error":"success",sourceLabel:o,details:m?`${c}
|
|
@@ -3489,7 +3489,7 @@ ${a}`:a}function s_(s){let e=false,t=new Map,n=new Map,r=new Map,o=new Map,i=new
|
|
|
3489
3489
|
Retryable: ${v.retryable}`);break;case "plan_update":p.info("RUNTIME_EVENTS","\u{1F525} Handling plan_update event",{hasExplanation:!!v.explanation,planSteps:v.plan?.length}),v.plan&&"showPlanUpdate"in s.uiController?(p.info("RUNTIME_EVENTS","\u2705 Calling showPlanUpdate"),s.uiController.showPlanUpdate(v.explanation,v.plan),"setPlanSteps"in s.uiController&&s.uiController.setPlanSteps(v.plan)):p.warn("RUNTIME_EVENTS","\u274C Cannot show plan update",{hasPlan:!!v.plan,hasMethod:"showPlanUpdate"in s.uiController});break;case "error":if(s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming(),s.uiController.resetStreamingState&&s.uiController.resetStreamingState(),!e){let O=v.message.split(`
|
|
3490
3490
|
`),k=O[0],M=O.length>1?O.slice(1).join(`
|
|
3491
3491
|
`):void 0;s.uiController.addError(k,M);}s.uiController.updateStatus(v.message.split(`
|
|
3492
|
-
`)[0],"error"),e=false;break;case "queued_message_added":p.info("RUNTIME_EVENTS",`\u{1F4E8} Queued message added at position ${v.position}`),"forceUpdate"in s.uiController&&s.uiController.forceUpdate();break;case "queued_messages_processed":p.info("RUNTIME_EVENTS",`\u2705 Processed ${v.count} queued messages`),"forceUpdate"in s.uiController&&s.uiController.forceUpdate();break;case "shell_output_stream":{let O=k=>{if(k<60)return `${k}s`;let M=Math.floor(k/60),N=k%60;return `${M}m ${N}s`};if(v.isComplete){let k=v.exitCode!==void 0&&v.exitCode!==0?` (exit=${v.exitCode})`:"";s.uiController.updateStatus(`Shell complete ${O(v.elapsed)}${k}`,v.exitCode===0?"complete":"error");}else s.uiController.updateStatus(`Shell running... ${O(v.elapsed)}`,"tool_call");"updateShellOutputStream"in s.uiController&&s.uiController.updateShellOutputStream({command:v.command,output:v.output,elapsed:v.elapsed,isComplete:v.isComplete,exitCode:v.exitCode});break}}}}function o_(s){return yF.has(s)||s.includes("websearch")||s.includes("webfetch")}function i_(s){return s==="write_file"||s==="write"||s==="edit_file"||s==="edit"}function bF(s,e,t,n,r){if(!s)return;let o=t.toLowerCase(),i=o==="update_plan"||o==="verify_step"||o==="ask_user",a=i_(o);if(i||a||!r?.viaCallTool&&o_(o)){e_(s,t,n,r?.sourceLabel);return}s.startToolCallWithId(e,t,n,r);}var uF,dF,yF,a_=R(()=>{zy();te();ou();ja();uF=new Set(["ephemeral","contextual","summarized"]),dF={show_tree:6,list_directory:6,smart_tree:6,tree:6,git_status:30,git_diff:30,git_log:30,git_blame:30,git_branch_list:30,git_branch:30};yF=new Set(["web_search","websearch","web_fetch","webfetch","readfile","read","search","search_files","glob","show_tree","list_directory","smart_tree","execute_bash","execute_shell","bash","execute_python","execute_js","execute_javascript","debug_in_browser","spawn_agent","delegate_task","query_agent","send_message","wait_result","wait_all","terminate_agent","task","explore","ptc_execute","update_plan","verify_step","ask_user","write_file","write","edit_file","edit"]);});function vF(s,e){let t=Ie.basename(e,Ie.extname(e))||"structured_output";return s&&typeof s=="object"&&s.schema&&typeof s.schema=="object"?{name:s.name||t,description:s.description,schema:s.schema,strict:s.strict??true}:{name:s?.title||t,schema:s||{},strict:true}}function l_(s){let e=s||process.env.CD_OUTPUT_SCHEMA||process.env.NEOX_OUTPUT_SCHEMA;if(!e)return;let t=Ie.isAbsolute(e)?e:Ie.resolve(process.cwd(),e);try{let n=Ct.readFileSync(t,"utf-8"),r=JSON.parse(n),o=vF(r,t);return p.info("SCHEMA",`Structured output schema loaded: ${o.name}`),o}catch(n){throw p.error("SCHEMA",`Failed to load structured output schema from ${e}: ${n.message}`),n}}async function c_(s,e){let t="structured-output-example.schema.json",n=Ie.resolve(s,e||t),r={name:"TaskSummary",description:"\u793A\u4F8B\uFF1A\u4EFB\u52A1\u603B\u7ED3 Schema\uFF0C\u53EF\u4F5C\u4E3A\u81EA\u5B9A\u4E49 Schema \u7684\u8D77\u70B9",schema:{type:"object",properties:{status:{type:"string",enum:["ok","needs_attention","error"],description:"\u672C\u6B21\u4EFB\u52A1\u7684\u6700\u7EC8\u72B6\u6001"},summary:{type:"string",description:"\u5BF9\u4EFB\u52A1\u7684\u7B80\u8981\u603B\u7ED3\uFF0C1-3 \u53E5\u8BDD"},steps:{type:"array",description:"\u6267\u884C\u6B65\u9AA4\u5217\u8868",items:{type:"object",properties:{title:{type:"string"},result:{type:"string"}},required:["title"],additionalProperties:false}},next_actions:{type:"array",description:"\u9700\u8981\u8DDF\u8FDB\u7684\u52A8\u4F5C",items:{type:"string"}}},required:["status","summary"],additionalProperties:false},strict:true};try{await Ct.promises.writeFile(n,JSON.stringify(r,null,2),"utf-8"),Q(""),Q(w.success(`[v] \u793A\u4F8B Schema \u5DF2\u751F\u6210: ${n}`)),Q(w.dim("\u4F7F\u7528\u65B9\u5F0F:")),Q(w.dim(" 1. \u6839\u636E\u9700\u8981\u4FEE\u6539\u5B57\u6BB5/\u63CF\u8FF0")),Q(w.dim(` 2. \u542F\u52A8 CLI: neox --output-schema ${e||t}`)),Q(w.dim(" 3. CLI \u4F1A\u5F3A\u5236\u8F93\u51FA\u7B26\u5408\u8BE5 Schema \u7684 JSON")),Q(""),Q(w.highlight("\u793A\u4F8B\u7ED3\u6784 (\u6458\u5F55):")),Q(w.dim(JSON.stringify(r.schema,null,2)));}catch(o){Q(w.error(`[x] \u751F\u6210\u793A\u4F8B Schema \u5931\u8D25: ${o.message}`));}}var u_=R(()=>{te();Xt();Tn();});var xi=R(()=>{Y0();Q0();a_();u_();});function sp(s){let e=on.getAllModels();switch(s){case "openai":case "openai-responses":return e.filter(t=>t.provider==="openai").sort((t,n)=>t.releaseDate&&n.releaseDate?n.releaseDate.localeCompare(t.releaseDate):(n.scores?.coding??0)-(t.scores?.coding??0)).map(t=>t.id);case "anthropic":case "anthropic-openai":return e.filter(t=>t.provider==="anthropic").sort((t,n)=>t.releaseDate&&n.releaseDate?n.releaseDate.localeCompare(t.releaseDate):(n.scores?.coding??0)-(t.scores?.coding??0)).map(t=>t.id);case "gemini":return e.filter(t=>t.provider==="gemini").map(t=>t.id);case "doubao":return e.filter(t=>t.provider==="doubao").map(t=>t.id);case "kimi":return e.filter(t=>t.provider==="kimi").map(t=>t.id);default:return []}}var Jy=R(()=>{
|
|
3492
|
+
`)[0],"error"),e=false;break;case "queued_message_added":p.info("RUNTIME_EVENTS",`\u{1F4E8} Queued message added at position ${v.position}`),"forceUpdate"in s.uiController&&s.uiController.forceUpdate();break;case "queued_messages_processed":p.info("RUNTIME_EVENTS",`\u2705 Processed ${v.count} queued messages`),"forceUpdate"in s.uiController&&s.uiController.forceUpdate();break;case "shell_output_stream":{let O=k=>{if(k<60)return `${k}s`;let M=Math.floor(k/60),N=k%60;return `${M}m ${N}s`};if(v.isComplete){let k=v.exitCode!==void 0&&v.exitCode!==0?` (exit=${v.exitCode})`:"";s.uiController.updateStatus(`Shell complete ${O(v.elapsed)}${k}`,v.exitCode===0?"complete":"error");}else s.uiController.updateStatus(`Shell running... ${O(v.elapsed)}`,"tool_call");"updateShellOutputStream"in s.uiController&&s.uiController.updateShellOutputStream({command:v.command,output:v.output,elapsed:v.elapsed,isComplete:v.isComplete,exitCode:v.exitCode});break}}}}function o_(s){return yF.has(s)||s.includes("websearch")||s.includes("webfetch")}function i_(s){return s==="write_file"||s==="write"||s==="edit_file"||s==="edit"}function bF(s,e,t,n,r){if(!s)return;let o=t.toLowerCase(),i=o==="update_plan"||o==="verify_step"||o==="ask_user",a=i_(o);if(i||a||!r?.viaCallTool&&o_(o)){e_(s,t,n,r?.sourceLabel);return}s.startToolCallWithId(e,t,n,r);}var uF,dF,yF,a_=R(()=>{zy();te();ou();ja();uF=new Set(["ephemeral","contextual","summarized"]),dF={show_tree:6,list_directory:6,smart_tree:6,tree:6,git_status:30,git_diff:30,git_log:30,git_blame:30,git_branch_list:30,git_branch:30};yF=new Set(["web_search","websearch","web_fetch","webfetch","readfile","read","search","search_files","glob","show_tree","list_directory","smart_tree","execute_bash","execute_shell","bash","execute_python","execute_js","execute_javascript","debug_in_browser","spawn_agent","delegate_task","query_agent","send_message","wait_result","wait_all","terminate_agent","task","explore","ptc_execute","update_plan","verify_step","ask_user","write_file","write","edit_file","edit"]);});function vF(s,e){let t=Ie.basename(e,Ie.extname(e))||"structured_output";return s&&typeof s=="object"&&s.schema&&typeof s.schema=="object"?{name:s.name||t,description:s.description,schema:s.schema,strict:s.strict??true}:{name:s?.title||t,schema:s||{},strict:true}}function l_(s){let e=s||process.env.CD_OUTPUT_SCHEMA||process.env.NEOX_OUTPUT_SCHEMA;if(!e)return;let t=Ie.isAbsolute(e)?e:Ie.resolve(process.cwd(),e);try{let n=Ct.readFileSync(t,"utf-8"),r=JSON.parse(n),o=vF(r,t);return p.info("SCHEMA",`Structured output schema loaded: ${o.name}`),o}catch(n){throw p.error("SCHEMA",`Failed to load structured output schema from ${e}: ${n.message}`),n}}async function c_(s,e){let t="structured-output-example.schema.json",n=Ie.resolve(s,e||t),r={name:"TaskSummary",description:"\u793A\u4F8B\uFF1A\u4EFB\u52A1\u603B\u7ED3 Schema\uFF0C\u53EF\u4F5C\u4E3A\u81EA\u5B9A\u4E49 Schema \u7684\u8D77\u70B9",schema:{type:"object",properties:{status:{type:"string",enum:["ok","needs_attention","error"],description:"\u672C\u6B21\u4EFB\u52A1\u7684\u6700\u7EC8\u72B6\u6001"},summary:{type:"string",description:"\u5BF9\u4EFB\u52A1\u7684\u7B80\u8981\u603B\u7ED3\uFF0C1-3 \u53E5\u8BDD"},steps:{type:"array",description:"\u6267\u884C\u6B65\u9AA4\u5217\u8868",items:{type:"object",properties:{title:{type:"string"},result:{type:"string"}},required:["title"],additionalProperties:false}},next_actions:{type:"array",description:"\u9700\u8981\u8DDF\u8FDB\u7684\u52A8\u4F5C",items:{type:"string"}}},required:["status","summary"],additionalProperties:false},strict:true};try{await Ct.promises.writeFile(n,JSON.stringify(r,null,2),"utf-8"),Q(""),Q(w.success(`[v] \u793A\u4F8B Schema \u5DF2\u751F\u6210: ${n}`)),Q(w.dim("\u4F7F\u7528\u65B9\u5F0F:")),Q(w.dim(" 1. \u6839\u636E\u9700\u8981\u4FEE\u6539\u5B57\u6BB5/\u63CF\u8FF0")),Q(w.dim(` 2. \u542F\u52A8 CLI: neox --output-schema ${e||t}`)),Q(w.dim(" 3. CLI \u4F1A\u5F3A\u5236\u8F93\u51FA\u7B26\u5408\u8BE5 Schema \u7684 JSON")),Q(""),Q(w.highlight("\u793A\u4F8B\u7ED3\u6784 (\u6458\u5F55):")),Q(w.dim(JSON.stringify(r.schema,null,2)));}catch(o){Q(w.error(`[x] \u751F\u6210\u793A\u4F8B Schema \u5931\u8D25: ${o.message}`));}}var u_=R(()=>{te();Xt();Tn();});var xi=R(()=>{Y0();Q0();a_();u_();});function sp(s){let e=on.getAllModels();switch(s){case "openai":case "openai-responses":return e.filter(t=>t.provider==="openai").sort((t,n)=>t.releaseDate&&n.releaseDate?n.releaseDate.localeCompare(t.releaseDate):(n.scores?.coding??0)-(t.scores?.coding??0)).map(t=>t.id);case "anthropic":case "anthropic-openai":return e.filter(t=>t.provider==="anthropic").sort((t,n)=>t.releaseDate&&n.releaseDate?n.releaseDate.localeCompare(t.releaseDate):(n.scores?.coding??0)-(t.scores?.coding??0)).map(t=>t.id);case "gemini":return e.filter(t=>t.provider==="gemini").map(t=>t.id);case "doubao":return e.filter(t=>t.provider==="doubao").map(t=>t.id);case "kimi":return e.filter(t=>t.provider==="kimi").map(t=>t.id);default:return []}}var Jy=R(()=>{cs();});var lp={};jr(lp,{applyProviderChange:()=>op,handleInteractiveProviderSelection:()=>Xy,handleProviderAddCommand:()=>ip,handleProviderDefaultCommand:()=>Yy,handleProviderDeleteCommand:()=>Vy,handleProviderEditCommand:()=>ap,showProviderOptions:()=>yl});function yl(s){let e=s.getProviders();if(e.length===0){s.logInfo("No providers configured","Use /provider add to create one.");return}let n=s.getDefaultProvider()?.id,o=`${e.map((i,a)=>{let l=[];i.id===s.providerId&&l.push("current"),i.id===n&&l.push("default");let c=In[i.protocol]||"OpenAI",u=i.models.length>0?i.models.map(m=>m.name).join(", "):"none",d=i.baseUrl||hs[i.protocol];return [`${a+1}. ${i.name}${gl(l)}`,` id: ${i.id}`,` protocol: ${c}`,` base url: ${d}`,` models: ${u}`].join(`
|
|
3493
3493
|
`)}).join(`
|
|
3494
3494
|
|
|
3495
3495
|
`)}
|
|
@@ -3500,10 +3500,10 @@ Commands:
|
|
|
3500
3500
|
/provider edit <id> edit provider
|
|
3501
3501
|
/provider remove <id> remove provider
|
|
3502
3502
|
/provider default <id> set default provider`;s.logInfo("Available providers",o);}async function op(s,e){if(!e){yl(s);return}let t=s.getProvider(e)||s.getProviders().find(n=>n.protocol===e);if(!t){s.logInfo("Provider not found",`Unknown provider "${e}".`);return}if(t.id===s.providerId){s.logInfo("Provider unchanged",`${t.name} is already active.`);return}try{let n=s.resolveModel(t.id);if(!n)throw new Error(`Provider "${t.name}" does not have any models configured.`);s.setLastSelectedModel(t.id,n),s.setDefaultProvider(t.id),await s.applyProviderState({providerId:t.id,provider:t.protocol,model:n,providerSettings:t}),s.updateProviderDisplay(s.getProviderDisplayName(),n),s.logInfo("Provider updated",`Provider: ${s.getProviderDisplayName()}
|
|
3503
|
-
Model: ${n}`);}catch(n){s.logInfo("Failed to switch provider",n.message);}}function LF(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(0)}K`:`${s}`}function NF(s){let e=sp(s);return p.debug("PROVIDER_ADD","Getting model suggestions",{protocol:s,count:e.length}),e.slice(0,20).map(t=>{let n=on.getModel(t);if(!n)return {label:t,value:t,description:void 0};let r=LF(n.maxInputTokens),o=[];n.supportsVision&&o.push("\u{1F441}\uFE0F"),n.supportsThinking&&o.push("\u{1F4AD}");let i=o.length>0?`${o.join(" ")} `:"";return {label:n.id,value:n.id,description:`${n.displayName} ${i}(${r} ctx)`}})}async function ip(s){try{s.logInfo("\u6DFB\u52A0\u65B0\u7684 Provider","\u8BF7\u6309\u6B65\u9AA4\u5B8C\u6210\u914D\u7F6E"),s.logInfo("Step 1/4","Provider \u540D\u79F0\u548C\u5730\u5740");let e=await s.promptText("Provider \u663E\u793A\u540D\u79F0",{allowEmpty:!1,hint:"\u4F8B\u5982: OpenAI, Claude API, \u79C1\u6709\u4EE3\u7406"}),t=await s.promptSelect("\u534F\u8BAE\u683C\u5F0F",[{label:"OpenAI (Chat Completions)",value:"openai",description:"GPT-4, GPT-4o \u7B49\u6807\u51C6\u6A21\u578B"},{label:"OpenAI (Responses API)",value:"openai-responses",description:"o3, o4-mini \u7B49\u63A8\u7406\u6A21\u578B"},{label:"Kimi (Moonshot)",value:"kimi",description:"Kimi OpenAI \u517C\u5BB9\u534F\u8BAE"},{label:"Anthropic (Claude)",value:"anthropic",description:"Claude \u539F\u751F\u683C\u5F0F"},{label:"Anthropic (OpenAI \u683C\u5F0F)",value:"anthropic-openai",description:"\u4EE3\u7406\u670D\u52A1\u5E38\u7528"},{label:"\u8C46\u5305 (Doubao)",value:"doubao",description:"\u706B\u5C71\u65B9\u821F\u8C46\u5305\uFF0C\u652F\u6301\u6DF1\u5EA6\u601D\u8003"},{label:"Google Gemini",value:"gemini",description:"Gemini 2.5 \u7CFB\u5217"}],"anthropic"),n=
|
|
3503
|
+
Model: ${n}`);}catch(n){s.logInfo("Failed to switch provider",n.message);}}function LF(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(0)}K`:`${s}`}function NF(s){let e=sp(s);return p.debug("PROVIDER_ADD","Getting model suggestions",{protocol:s,count:e.length}),e.slice(0,20).map(t=>{let n=on.getModel(t);if(!n)return {label:t,value:t,description:void 0};let r=LF(n.maxInputTokens),o=[];n.supportsVision&&o.push("\u{1F441}\uFE0F"),n.supportsThinking&&o.push("\u{1F4AD}");let i=o.length>0?`${o.join(" ")} `:"";return {label:n.id,value:n.id,description:`${n.displayName} ${i}(${r} ctx)`}})}async function ip(s){try{s.logInfo("\u6DFB\u52A0\u65B0\u7684 Provider","\u8BF7\u6309\u6B65\u9AA4\u5B8C\u6210\u914D\u7F6E"),s.logInfo("Step 1/4","Provider \u540D\u79F0\u548C\u5730\u5740");let e=await s.promptText("Provider \u663E\u793A\u540D\u79F0",{allowEmpty:!1,hint:"\u4F8B\u5982: OpenAI, Claude API, \u79C1\u6709\u4EE3\u7406"}),t=await s.promptSelect("\u534F\u8BAE\u683C\u5F0F",[{label:"OpenAI (Chat Completions)",value:"openai",description:"GPT-4, GPT-4o \u7B49\u6807\u51C6\u6A21\u578B"},{label:"OpenAI (Responses API)",value:"openai-responses",description:"o3, o4-mini \u7B49\u63A8\u7406\u6A21\u578B"},{label:"Kimi (Moonshot)",value:"kimi",description:"Kimi OpenAI \u517C\u5BB9\u534F\u8BAE"},{label:"Anthropic (Claude)",value:"anthropic",description:"Claude \u539F\u751F\u683C\u5F0F"},{label:"Anthropic (OpenAI \u683C\u5F0F)",value:"anthropic-openai",description:"\u4EE3\u7406\u670D\u52A1\u5E38\u7528"},{label:"\u8C46\u5305 (Doubao)",value:"doubao",description:"\u706B\u5C71\u65B9\u821F\u8C46\u5305\uFF0C\u652F\u6301\u6DF1\u5EA6\u601D\u8003"},{label:"Google Gemini",value:"gemini",description:"Gemini 2.5 \u7CFB\u5217"}],"anthropic"),n=hs[t],r=await s.promptText("Base URL",{defaultValue:n,hint:"\u76F4\u63A5\u56DE\u8F66\u4F7F\u7528\u9ED8\u8BA4\u503C\uFF0C\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u4EE3\u7406\u5730\u5740"});s.logInfo("Step 2/4","\u9009\u62E9\u6A21\u578B");let o=NF(t),i=[],a="";if(o.length>0){let g=[...o,{label:"\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0",value:"__custom__",description:"\u624B\u52A8\u8F93\u5165\u6A21\u578B\u540D\u79F0"}],h=await s.promptSelect("\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B",g,o[0]?.value);if(h==="__custom__"?a=await s.promptText("\u8F93\u5165\u6A21\u578B\u540D\u79F0",{allowEmpty:!1}):a=h,i.push(a),await s.promptYesNo("\u662F\u5426\u6DFB\u52A0\u66F4\u591A\u6A21\u578B?",!1)){let b=await s.promptText("\u8F93\u5165\u66F4\u591A\u6A21\u578B\u540D\u79F0",{allowEmpty:!0,hint:"\u591A\u4E2A\u6A21\u578B\u7528\u9017\u53F7\u5206\u9694\uFF0C\u4F8B\u5982: gpt-4o,gpt-4-turbo"});if(b.trim()){let C=b.split(",").map(T=>T.trim()).filter(T=>T);for(let T of C)i.includes(T)||i.push(T);}}}else {a=await s.promptText("\u8F93\u5165\u9ED8\u8BA4\u6A21\u578B\u540D\u79F0",{allowEmpty:!1}),i.push(a);let g=await s.promptText("\u8F93\u5165\u66F4\u591A\u6A21\u578B\u540D\u79F0 (\u53EF\u9009)",{allowEmpty:!0,hint:"\u591A\u4E2A\u6A21\u578B\u7528\u9017\u53F7\u5206\u9694"});if(g.trim()){let h=g.split(",").map(y=>y.trim()).filter(y=>y);for(let y of h)i.includes(y)||i.push(y);}}s.logInfo("Step 3/4","API \u5BC6\u94A5");let l=await s.promptText("API Key",{allowEmpty:!1,hint:"\u8F93\u5165\u4F60\u7684 API \u5BC6\u94A5\u6216 Token"});s.logInfo("Step 4/4","\u786E\u8BA4\u914D\u7F6E");let c=[`\u540D\u79F0: ${e}`,`\u534F\u8BAE: ${In[t]}`,`\u5730\u5740: ${r}`,`\u6A21\u578B: ${i.join(", ")}`,`\u9ED8\u8BA4: ${a}`].join(`
|
|
3504
3504
|
`);s.logInfo("\u914D\u7F6E\u9884\u89C8",c);let u=await s.promptYesNo("\u8BBE\u4E3A\u9ED8\u8BA4 Provider?",s.getProviderCount()===0),d=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),m=s.addProvider({id:d||void 0,name:e,protocol:t,apiKey:l,baseUrl:r,defaultModel:a,models:i,setAsDefault:u});s.setLastSelectedModel(m.id,m.defaultModel||a),await s.applyProviderState({providerId:m.id,provider:m.protocol,model:m.defaultModel||a,providerSettings:m}),s.updateProviderDisplay(s.getProviderDisplayName(),m.defaultModel||a),s.logInfo("\u2713 Provider \u521B\u5EFA\u6210\u529F",[`Provider: ${s.getProviderDisplayName()}`,`Model: ${m.defaultModel||a}`,`ID: ${m.id}`].join(`
|
|
3505
|
-
`)),yl(s);}catch(e){e.message==="cancelled"?s.logInfo("\u5DF2\u53D6\u6D88","Provider \u8BBE\u7F6E\u5DF2\u53D6\u6D88"):s.logInfo("\u521B\u5EFA\u5931\u8D25",e.message);}}async function ap(s,e){let t=s.getProviderByIdentifier(e);if(!t&&(t=await s.selectProviderFromList("Select provider to view/edit"),!t)||!t)return;let n=t,r=n.id;try{let o=!0;for(;o;){let i=n.id===s.providerId,a=[`\u{1F4E6} Provider: ${n.name}${i?" (current)":""}`,`\u{1F194} ID: ${n.id}`,`\u{1F50C} Protocol: ${In[n.protocol]||n.protocol}`,`\u{1F310} Base URL: ${n.baseUrl||
|
|
3506
|
-
`);s.logInfo("Provider Configuration",a);let l=[{label:"\u2B05\uFE0F Back (Cancel)",value:"done",description:"\u8FD4\u56DE\u4E0A\u7EA7\u83DC\u5355 (ESC)"},{label:"\u270F\uFE0F Edit Provider ID",value:"edit_id",description:`\u5F53\u524D: ${n.id}`},{label:"\u270F\uFE0F Edit Provider Name",value:"edit_name",description:`\u5F53\u524D: ${n.name}`},{label:"\u270F\uFE0F Edit Protocol",value:"edit_protocol",description:`\u5F53\u524D: ${In[n.protocol]}`},{label:"\u270F\uFE0F Edit Base URL",value:"edit_base_url",description:`\u5F53\u524D: ${n.baseUrl||fs[n.protocol]}`},{label:"\u270F\uFE0F Edit API Key",value:"edit_api_key",description:n.apiKey?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"},{label:"\u270F\uFE0F Edit Default Model",value:"edit_model",description:`\u5F53\u524D: ${n.defaultModel||"(none)"}`}];switch(i||l.push({label:"\u{1F504} Switch to this provider",value:"switch",description:"\u5C06\u6B64 provider \u8BBE\u4E3A\u5F53\u524D\u4F7F\u7528\u7684"}),l.push({label:"\u{1F5D1}\uFE0F Delete this provider",value:"delete",description:i?"\u5220\u9664\u5F53\u524D provider (\u4F1A\u5207\u6362\u5230\u5176\u4ED6 provider)":"\u5220\u9664\u6B64 provider"}),await s.promptSelect("What would you like to do?",l,"done")){case "done":o=!1;break;case "edit_id":{let u=await s.promptText(`Edit Provider ID (current: ${n.id})`,{defaultValue:n.id,hint:"\u4EC5\u9650\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26\uFF08-\uFF09\uFF0C\u6700\u957F 48 \u4E2A\u5B57\u7B26"});if(u.trim()&&u.trim()!==n.id){let d=s.renameProvider(n.id,u.trim());n=d,r===s.providerId&&(await s.applyProviderState({providerId:d.id,provider:d.protocol,model:s.model,providerSettings:d}),s.updateProviderDisplay(s.getProviderDisplayName(),s.model)),s.logInfo("\u2713 Provider ID updated",`New ID: ${n.id}`);}break}case "edit_name":{let u=await s.promptText(`Edit Provider Name (current: ${n.name})`,{defaultValue:n.name});u.trim()&&u.trim()!==n.name&&(n=s.updateProvider(n.id,{name:u.trim()}),s.logInfo("\u2713 Provider name updated",`New name: ${n.name}`));break}case "edit_protocol":{let u=[{label:"OpenAI (Chat Completions)",value:"openai",description:"GPT-4, GPT-3.5 \u7B49\u6807\u51C6\u6A21\u578B"},{label:"OpenAI (Responses API)",value:"openai-responses",description:"GPT-5, o3 \u7B49\u652F\u6301\u63A8\u7406\u7684\u6A21\u578B"},{label:"Kimi (Moonshot)",value:"kimi",description:"Kimi OpenAI \u517C\u5BB9\u534F\u8BAE"},{label:"Anthropic (Claude)",value:"anthropic",description:"Claude \u539F\u751F\u683C\u5F0F"},{label:"Anthropic (OpenAI \u683C\u5F0F)",value:"anthropic-openai",description:"\u4F7F\u7528 OpenAI \u517C\u5BB9\u683C\u5F0F\u8C03\u7528 Claude"},{label:"\u8C46\u5305 (Doubao)",value:"doubao",description:"\u706B\u5C71\u65B9\u821F\u8C46\u5305\u6A21\u578B\uFF0C\u652F\u6301\u6DF1\u5EA6\u601D\u8003"},{label:"Google Gemini",value:"gemini",description:"Gemini 2.5 \u7CFB\u5217"}],d=await s.promptSelect(`Edit Protocol (current: ${In[n.protocol]})`,u,n.protocol);d!==n.protocol&&(n=s.updateProvider(n.id,{protocol:d}),s.logInfo("\u2713 Protocol updated",`New protocol: ${In[d]}`));break}case "edit_base_url":{let u=n.baseUrl||fs[n.protocol],d=await s.promptText(`Edit Base URL (current: ${u})`,{defaultValue:u});d.trim()&&d.trim()!==u&&(n=s.updateProvider(n.id,{baseUrl:d.trim()}),s.logInfo("\u2713 Base URL updated",`New URL: ${n.baseUrl}`));break}case "edit_api_key":{let u=await s.promptText(n.apiKey?`Edit API Key (current: ${n.apiKey})`:"Edit API Key (not set)",{defaultValue:n.apiKey||"",hint:"\u5B8C\u6574\u7684 API \u5BC6\u94A5"});u.trim()&&u.trim()!==n.apiKey&&(n=s.updateProvider(n.id,{apiKey:u.trim()}),s.logInfo("\u2713 API Key updated","New key has been saved"));break}case "edit_model":{if(n.models.length===0){s.logInfo("No models configured","Use /model add to add models first");break}let u=n.models.map(m=>({label:m.name,value:m.name})),d=await s.promptSelect(`Edit Default Model (current: ${n.defaultModel||"(none)"})`,u,n.defaultModel||n.models[0].name);d!==n.defaultModel&&(n=s.updateProvider(n.id,{defaultModel:d}),s.logInfo("\u2713 Default model updated",`New model: ${d}`),n.id===s.providerId&&(s.setLastSelectedModel(s.providerId,d),await s.applyProviderState({providerId:n.id,provider:n.protocol,model:d,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),d)));break}case "switch":{let u=s.resolveModel(n.id);if(!u){s.logInfo("Cannot switch","This provider has no models configured");break}s.setLastSelectedModel(n.id,u),s.setDefaultProvider(n.id),await s.applyProviderState({providerId:n.id,provider:n.protocol,model:u,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),u),s.logInfo("\u2713 Provider switched",`Now using: ${n.name} / ${u}`);break}case "delete":{if(s.getProviderCount()<=1){s.logInfo("Cannot delete","At least one provider is required");break}if(!await s.promptConfirmKeyword(`Type DELETE to remove provider "${n.name}"`,"delete")){s.logInfo("Deletion cancelled");break}let d=n.id===s.providerId;if(s.deleteProvider(n.id),s.refreshProviderSettings(),d){let m=s.getDefaultProvider();if(m){let g=s.resolveModel(m.id);g&&(s.setLastSelectedModel(m.id,g),await s.applyProviderState({providerId:m.id,provider:m.protocol,model:g,providerSettings:m}),s.updateProviderDisplay(s.getProviderDisplayName(),g),s.logInfo("\u2713 Provider deleted",`Removed ${n.name}. Switched to ${m.name}.`));}}else s.logInfo("\u2713 Provider deleted",`Removed ${n.name}.`);o=!1;break}}}s.logInfo("\u2713 Done",`Provider: ${n.name}`);}catch(o){o.message==="cancelled"?s.logInfo("Cancelled","Provider not modified"):s.logInfo("Failed to update provider",o.message);}}async function Vy(s,e){let t=s.getProviderByIdentifier(e);if(!(!t&&(t=await s.selectProviderFromList("Select provider to delete"),!t))){if(s.getProviderCount()<=1){s.logInfo("Cannot delete provider","At least one provider is required.");return}try{if(!await s.promptConfirmKeyword(`Type DELETE to remove provider "${t.name}"`,"delete")){s.logInfo("Deletion cancelled","Provider was not removed.");return}let r=t.id===s.providerId;if(s.deleteProvider(t.id),s.refreshProviderSettings(),r){let o=s.getDefaultProvider();if(!o){s.logInfo("Provider deleted",`Removed ${t.name}. Add a new provider with /provider add.`);return}let i=s.resolveModel(o.id);if(!i){s.logInfo("Provider deleted",`Removed ${t.name}. Configure models for ${o.name} via /model add.`);return}s.setLastSelectedModel(o.id,i),await s.applyProviderState({providerId:o.id,provider:o.protocol,model:i,providerSettings:o}),s.updateProviderDisplay(s.getProviderDisplayName(),i);}s.logInfo("Provider deleted",`Removed ${t.name}.`);}catch(n){n.message==="cancelled"?s.logInfo("Deletion cancelled"):s.logInfo("Failed to delete provider",n.message);}}}async function Yy(s,e){let t=s.getProviderByIdentifier(e);if(!(!t&&(t=await s.selectProviderFromList("Select provider to set as default"),!t)))try{s.setDefaultProvider(t.id),s.logInfo("Default provider updated",`${t.name} is now the default provider.`);}catch(n){s.logInfo("Failed to set default provider",n.message);}}async function Xy(s){let e=s.getProviders();if(!e||e.length===0){s.logInfo("No providers configured","Use /provider add to create one.");return}try{let t=await s.selectProviderFromList("Select provider to view/edit");if(!t)return;if(t.id==="__add__"){await ip(s);return}await ap(s,t.id);}catch(t){t.message==="cancelled"?s.logInfo("Selection cancelled"):s.logInfo("Selection failed",t.message);}}var bl=R(()=>{Xt();xi();us();Jy();te();});var sb={};jr(sb,{checkForUpdates:()=>YU,handleUpdateCommand:()=>VU});function yI(){try{return JSON.parse(execSync("npm list -g @mk-co/neox-cli --json",{encoding:"utf-8"})).dependencies?.["@mk-co/neox-cli"]?.version||"unknown"}catch{return "unknown"}}async function bI(){try{return execSync("npm view @mk-co/neox-cli version",{encoding:"utf-8"}).trim()}catch{throw new Error("Failed to fetch latest version from npm registry")}}function vI(s,e){let t=s.split(".").map(Number),n=e.split(".").map(Number);for(let r=0;r<Math.max(t.length,n.length);r++){let o=t[r]||0,i=n[r]||0;if(o>i)return 1;if(o<i)return -1}return 0}async function VU(){Q(""),Q(w.highlight("\u{1F504} Checking for updates...")),Q("");try{let s=yI();Q(w.dim(` Current version: ${w.primary(s)}`));let e=await bI();if(Q(w.dim(` Latest version: ${w.primary(e)}`)),Q(""),vI(e,s)<=0){Q(w.success(" \u2713 You are already on the latest version!")),Q("");return}Q(w.highlight(` \u{1F4E6} New version available: ${w.primary(e)}`)),Q(""),Q(w.dim(" Updating...")),Q(""),execSync("npm install -g @mk-co/neox-cli@latest",{stdio:"inherit",encoding:"utf-8"}),Q(""),Q(w.success(" \u2713 Successfully updated to the latest version!")),Q(""),Q(w.dim(" Please restart neox to use the new version.")),Q("");}catch(s){Q(""),Q(w.error(" \u2717 Failed to update neox")),Q(""),s instanceof Error&&Q(w.dim(` Error: ${s.message}`)),Q(""),Q(w.dim(" You can manually update by running:")),Q(w.primary(" npm install -g @mk-co/neox-cli@latest")),Q("");}}async function YU(s=false){try{let e=yI(),t=await bI(),n=vI(t,e);return n>0&&!s&&(Q(""),Q(w.highlight(` \u{1F4E6} New version available: ${w.primary(e)} \u2192 ${w.primary(t)}`)),Q(w.dim(` Run ${w.primary("/update")} to upgrade`)),Q("")),n>0}catch{return false}}var fp=R(()=>{Xt();Tn();});var TI={};jr(TI,{handleDaemonCommand:()=>QU});function XU(s){if(s<60)return `${s}s`;if(s<3600)return `${Math.floor(s/60)}m ${s%60}s`;let e=Math.floor(s/3600),t=Math.floor(s%3600/60);return `${e}h ${t}m`}async function QU(s){switch(s[0]||"status"){case "start":await CI(s);break;case "stop":await wI();break;case "restart":await wI(),await CI(s);break;case "status":await ZU();break;case "logs":ej(s);break;case "install":await tj();break;default:console.log("Usage: neox daemon <start|stop|restart|status|logs|install>");}}async function CI(s){let e=ob(s,"--workdir")||process.cwd(),t=ob(s,"--port"),n=t?parseInt(t,10):void 0;console.log("Starting Neox daemon...");try{let r=await q0(e,n);console.log(`Daemon started (pid: ${r.pid}, port: ${r.port})`),console.log(`Log: ${so()}`);}catch(r){console.error(`Failed: ${r.message}`),process.exit(1);}}async function wI(){console.log("Stopping Neox daemon...");let s=await K0();console.log(s?"Daemon stopped.":"No daemon running.");}async function ZU(){let s=await jy();s.running?(console.log("Status: running"),console.log(`PID: ${s.pid}`),console.log(`Port: ${s.port}`),console.log(`WorkDir: ${s.workDir}`),console.log(`Uptime: ${XU(s.uptime??0)}`),console.log(`Log: ${s.logFile}`)):(console.log("Status: stopped"),console.log(`Log: ${s.logFile}`));}function ej(s){let e=so();if(!Ct.existsSync(e)){console.log("No log file found.");return}let t=ob(s,"-n")||"50",o=Ct.readFileSync(e,"utf-8").split(`
|
|
3505
|
+
`)),yl(s);}catch(e){e.message==="cancelled"?s.logInfo("\u5DF2\u53D6\u6D88","Provider \u8BBE\u7F6E\u5DF2\u53D6\u6D88"):s.logInfo("\u521B\u5EFA\u5931\u8D25",e.message);}}async function ap(s,e){let t=s.getProviderByIdentifier(e);if(!t&&(t=await s.selectProviderFromList("Select provider to view/edit"),!t)||!t)return;let n=t,r=n.id;try{let o=!0;for(;o;){let i=n.id===s.providerId,a=[`\u{1F4E6} Provider: ${n.name}${i?" (current)":""}`,`\u{1F194} ID: ${n.id}`,`\u{1F50C} Protocol: ${In[n.protocol]||n.protocol}`,`\u{1F310} Base URL: ${n.baseUrl||hs[n.protocol]}`,`\u{1F511} API Key: ${n.apiKey||"(not set)"}`,`\u{1F3AF} Default Model: ${n.defaultModel||"(none)"}`,`\u{1F4CB} All Models: ${n.models.map(u=>u.name).join(", ")||"(none)"}`].join(`
|
|
3506
|
+
`);s.logInfo("Provider Configuration",a);let l=[{label:"\u2B05\uFE0F Back (Cancel)",value:"done",description:"\u8FD4\u56DE\u4E0A\u7EA7\u83DC\u5355 (ESC)"},{label:"\u270F\uFE0F Edit Provider ID",value:"edit_id",description:`\u5F53\u524D: ${n.id}`},{label:"\u270F\uFE0F Edit Provider Name",value:"edit_name",description:`\u5F53\u524D: ${n.name}`},{label:"\u270F\uFE0F Edit Protocol",value:"edit_protocol",description:`\u5F53\u524D: ${In[n.protocol]}`},{label:"\u270F\uFE0F Edit Base URL",value:"edit_base_url",description:`\u5F53\u524D: ${n.baseUrl||hs[n.protocol]}`},{label:"\u270F\uFE0F Edit API Key",value:"edit_api_key",description:n.apiKey?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"},{label:"\u270F\uFE0F Edit Default Model",value:"edit_model",description:`\u5F53\u524D: ${n.defaultModel||"(none)"}`}];switch(i||l.push({label:"\u{1F504} Switch to this provider",value:"switch",description:"\u5C06\u6B64 provider \u8BBE\u4E3A\u5F53\u524D\u4F7F\u7528\u7684"}),l.push({label:"\u{1F5D1}\uFE0F Delete this provider",value:"delete",description:i?"\u5220\u9664\u5F53\u524D provider (\u4F1A\u5207\u6362\u5230\u5176\u4ED6 provider)":"\u5220\u9664\u6B64 provider"}),await s.promptSelect("What would you like to do?",l,"done")){case "done":o=!1;break;case "edit_id":{let u=await s.promptText(`Edit Provider ID (current: ${n.id})`,{defaultValue:n.id,hint:"\u4EC5\u9650\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26\uFF08-\uFF09\uFF0C\u6700\u957F 48 \u4E2A\u5B57\u7B26"});if(u.trim()&&u.trim()!==n.id){let d=s.renameProvider(n.id,u.trim());n=d,r===s.providerId&&(await s.applyProviderState({providerId:d.id,provider:d.protocol,model:s.model,providerSettings:d}),s.updateProviderDisplay(s.getProviderDisplayName(),s.model)),s.logInfo("\u2713 Provider ID updated",`New ID: ${n.id}`);}break}case "edit_name":{let u=await s.promptText(`Edit Provider Name (current: ${n.name})`,{defaultValue:n.name});u.trim()&&u.trim()!==n.name&&(n=s.updateProvider(n.id,{name:u.trim()}),s.logInfo("\u2713 Provider name updated",`New name: ${n.name}`));break}case "edit_protocol":{let u=[{label:"OpenAI (Chat Completions)",value:"openai",description:"GPT-4, GPT-3.5 \u7B49\u6807\u51C6\u6A21\u578B"},{label:"OpenAI (Responses API)",value:"openai-responses",description:"GPT-5, o3 \u7B49\u652F\u6301\u63A8\u7406\u7684\u6A21\u578B"},{label:"Kimi (Moonshot)",value:"kimi",description:"Kimi OpenAI \u517C\u5BB9\u534F\u8BAE"},{label:"Anthropic (Claude)",value:"anthropic",description:"Claude \u539F\u751F\u683C\u5F0F"},{label:"Anthropic (OpenAI \u683C\u5F0F)",value:"anthropic-openai",description:"\u4F7F\u7528 OpenAI \u517C\u5BB9\u683C\u5F0F\u8C03\u7528 Claude"},{label:"\u8C46\u5305 (Doubao)",value:"doubao",description:"\u706B\u5C71\u65B9\u821F\u8C46\u5305\u6A21\u578B\uFF0C\u652F\u6301\u6DF1\u5EA6\u601D\u8003"},{label:"Google Gemini",value:"gemini",description:"Gemini 2.5 \u7CFB\u5217"}],d=await s.promptSelect(`Edit Protocol (current: ${In[n.protocol]})`,u,n.protocol);d!==n.protocol&&(n=s.updateProvider(n.id,{protocol:d}),s.logInfo("\u2713 Protocol updated",`New protocol: ${In[d]}`));break}case "edit_base_url":{let u=n.baseUrl||hs[n.protocol],d=await s.promptText(`Edit Base URL (current: ${u})`,{defaultValue:u});d.trim()&&d.trim()!==u&&(n=s.updateProvider(n.id,{baseUrl:d.trim()}),s.logInfo("\u2713 Base URL updated",`New URL: ${n.baseUrl}`));break}case "edit_api_key":{let u=await s.promptText(n.apiKey?`Edit API Key (current: ${n.apiKey})`:"Edit API Key (not set)",{defaultValue:n.apiKey||"",hint:"\u5B8C\u6574\u7684 API \u5BC6\u94A5"});u.trim()&&u.trim()!==n.apiKey&&(n=s.updateProvider(n.id,{apiKey:u.trim()}),s.logInfo("\u2713 API Key updated","New key has been saved"));break}case "edit_model":{if(n.models.length===0){s.logInfo("No models configured","Use /model add to add models first");break}let u=n.models.map(m=>({label:m.name,value:m.name})),d=await s.promptSelect(`Edit Default Model (current: ${n.defaultModel||"(none)"})`,u,n.defaultModel||n.models[0].name);d!==n.defaultModel&&(n=s.updateProvider(n.id,{defaultModel:d}),s.logInfo("\u2713 Default model updated",`New model: ${d}`),n.id===s.providerId&&(s.setLastSelectedModel(s.providerId,d),await s.applyProviderState({providerId:n.id,provider:n.protocol,model:d,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),d)));break}case "switch":{let u=s.resolveModel(n.id);if(!u){s.logInfo("Cannot switch","This provider has no models configured");break}s.setLastSelectedModel(n.id,u),s.setDefaultProvider(n.id),await s.applyProviderState({providerId:n.id,provider:n.protocol,model:u,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),u),s.logInfo("\u2713 Provider switched",`Now using: ${n.name} / ${u}`);break}case "delete":{if(s.getProviderCount()<=1){s.logInfo("Cannot delete","At least one provider is required");break}if(!await s.promptConfirmKeyword(`Type DELETE to remove provider "${n.name}"`,"delete")){s.logInfo("Deletion cancelled");break}let d=n.id===s.providerId;if(s.deleteProvider(n.id),s.refreshProviderSettings(),d){let m=s.getDefaultProvider();if(m){let g=s.resolveModel(m.id);g&&(s.setLastSelectedModel(m.id,g),await s.applyProviderState({providerId:m.id,provider:m.protocol,model:g,providerSettings:m}),s.updateProviderDisplay(s.getProviderDisplayName(),g),s.logInfo("\u2713 Provider deleted",`Removed ${n.name}. Switched to ${m.name}.`));}}else s.logInfo("\u2713 Provider deleted",`Removed ${n.name}.`);o=!1;break}}}s.logInfo("\u2713 Done",`Provider: ${n.name}`);}catch(o){o.message==="cancelled"?s.logInfo("Cancelled","Provider not modified"):s.logInfo("Failed to update provider",o.message);}}async function Vy(s,e){let t=s.getProviderByIdentifier(e);if(!(!t&&(t=await s.selectProviderFromList("Select provider to delete"),!t))){if(s.getProviderCount()<=1){s.logInfo("Cannot delete provider","At least one provider is required.");return}try{if(!await s.promptConfirmKeyword(`Type DELETE to remove provider "${t.name}"`,"delete")){s.logInfo("Deletion cancelled","Provider was not removed.");return}let r=t.id===s.providerId;if(s.deleteProvider(t.id),s.refreshProviderSettings(),r){let o=s.getDefaultProvider();if(!o){s.logInfo("Provider deleted",`Removed ${t.name}. Add a new provider with /provider add.`);return}let i=s.resolveModel(o.id);if(!i){s.logInfo("Provider deleted",`Removed ${t.name}. Configure models for ${o.name} via /model add.`);return}s.setLastSelectedModel(o.id,i),await s.applyProviderState({providerId:o.id,provider:o.protocol,model:i,providerSettings:o}),s.updateProviderDisplay(s.getProviderDisplayName(),i);}s.logInfo("Provider deleted",`Removed ${t.name}.`);}catch(n){n.message==="cancelled"?s.logInfo("Deletion cancelled"):s.logInfo("Failed to delete provider",n.message);}}}async function Yy(s,e){let t=s.getProviderByIdentifier(e);if(!(!t&&(t=await s.selectProviderFromList("Select provider to set as default"),!t)))try{s.setDefaultProvider(t.id),s.logInfo("Default provider updated",`${t.name} is now the default provider.`);}catch(n){s.logInfo("Failed to set default provider",n.message);}}async function Xy(s){let e=s.getProviders();if(!e||e.length===0){s.logInfo("No providers configured","Use /provider add to create one.");return}try{let t=await s.selectProviderFromList("Select provider to view/edit");if(!t)return;if(t.id==="__add__"){await ip(s);return}await ap(s,t.id);}catch(t){t.message==="cancelled"?s.logInfo("Selection cancelled"):s.logInfo("Selection failed",t.message);}}var bl=R(()=>{Xt();xi();cs();Jy();te();});var sb={};jr(sb,{checkForUpdates:()=>YU,handleUpdateCommand:()=>VU});function yI(){try{return JSON.parse(execSync("npm list -g @mk-co/neox-cli --json",{encoding:"utf-8"})).dependencies?.["@mk-co/neox-cli"]?.version||"unknown"}catch{return "unknown"}}async function bI(){try{return execSync("npm view @mk-co/neox-cli version",{encoding:"utf-8"}).trim()}catch{throw new Error("Failed to fetch latest version from npm registry")}}function vI(s,e){let t=s.split(".").map(Number),n=e.split(".").map(Number);for(let r=0;r<Math.max(t.length,n.length);r++){let o=t[r]||0,i=n[r]||0;if(o>i)return 1;if(o<i)return -1}return 0}async function VU(){Q(""),Q(w.highlight("\u{1F504} Checking for updates...")),Q("");try{let s=yI();Q(w.dim(` Current version: ${w.primary(s)}`));let e=await bI();if(Q(w.dim(` Latest version: ${w.primary(e)}`)),Q(""),vI(e,s)<=0){Q(w.success(" \u2713 You are already on the latest version!")),Q("");return}Q(w.highlight(` \u{1F4E6} New version available: ${w.primary(e)}`)),Q(""),Q(w.dim(" Updating...")),Q(""),execSync("npm install -g @mk-co/neox-cli@latest",{stdio:"inherit",encoding:"utf-8"}),Q(""),Q(w.success(" \u2713 Successfully updated to the latest version!")),Q(""),Q(w.dim(" Please restart neox to use the new version.")),Q("");}catch(s){Q(""),Q(w.error(" \u2717 Failed to update neox")),Q(""),s instanceof Error&&Q(w.dim(` Error: ${s.message}`)),Q(""),Q(w.dim(" You can manually update by running:")),Q(w.primary(" npm install -g @mk-co/neox-cli@latest")),Q("");}}async function YU(s=false){try{let e=yI(),t=await bI(),n=vI(t,e);return n>0&&!s&&(Q(""),Q(w.highlight(` \u{1F4E6} New version available: ${w.primary(e)} \u2192 ${w.primary(t)}`)),Q(w.dim(` Run ${w.primary("/update")} to upgrade`)),Q("")),n>0}catch{return false}}var fp=R(()=>{Xt();Tn();});var TI={};jr(TI,{handleDaemonCommand:()=>QU});function XU(s){if(s<60)return `${s}s`;if(s<3600)return `${Math.floor(s/60)}m ${s%60}s`;let e=Math.floor(s/3600),t=Math.floor(s%3600/60);return `${e}h ${t}m`}async function QU(s){switch(s[0]||"status"){case "start":await CI(s);break;case "stop":await wI();break;case "restart":await wI(),await CI(s);break;case "status":await ZU();break;case "logs":ej(s);break;case "install":await tj();break;default:console.log("Usage: neox daemon <start|stop|restart|status|logs|install>");}}async function CI(s){let e=ob(s,"--workdir")||process.cwd(),t=ob(s,"--port"),n=t?parseInt(t,10):void 0;console.log("Starting Neox daemon...");try{let r=await q0(e,n);console.log(`Daemon started (pid: ${r.pid}, port: ${r.port})`),console.log(`Log: ${so()}`);}catch(r){console.error(`Failed: ${r.message}`),process.exit(1);}}async function wI(){console.log("Stopping Neox daemon...");let s=await K0();console.log(s?"Daemon stopped.":"No daemon running.");}async function ZU(){let s=await jy();s.running?(console.log("Status: running"),console.log(`PID: ${s.pid}`),console.log(`Port: ${s.port}`),console.log(`WorkDir: ${s.workDir}`),console.log(`Uptime: ${XU(s.uptime??0)}`),console.log(`Log: ${s.logFile}`)):(console.log("Status: stopped"),console.log(`Log: ${s.logFile}`));}function ej(s){let e=so();if(!Ct.existsSync(e)){console.log("No log file found.");return}let t=ob(s,"-n")||"50",o=Ct.readFileSync(e,"utf-8").split(`
|
|
3507
3507
|
`).slice(-parseInt(t,10));console.log(o.join(`
|
|
3508
3508
|
`));}async function tj(){let s=process.platform;s==="darwin"?await nj():s==="linux"?await rj():console.log(`Platform "${s}" not supported. Use "neox daemon start" manually.`);}async function nj(){let s="com.neox.server",e=Ie.join(ho.homedir(),"Library","LaunchAgents"),t=Ie.join(e,`${s}.plist`),n=process.argv[1]||"neox",r=process.execPath,o=`<?xml version="1.0" encoding="UTF-8"?>
|
|
3509
3509
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
@@ -3662,24 +3662,24 @@ $ npm install --save-dev react-devtools-core
|
|
|
3662
3662
|
`).length,l="";return s.staticNode&&(l=Nl(s.staticNode,{skipStaticElements:false})),{output:i,outputHeight:a,staticOutput:l?`${l}
|
|
3663
3663
|
`:""}}let t=new co({width:s.yogaNode.getComputedWidth(),height:s.yogaNode.getComputedHeight()});Bp(s,t,{skipStaticElements:true});let n;if(s.staticNode?.yogaNode&&s.staticNode.childNodes&&s.staticNode.childNodes.length>0){let a=s.staticNode.yogaNode.getComputedWidth(),l=s.staticNode.yogaNode.getComputedHeight();n=new co({width:a,height:l}),Bp(s.staticNode,n,{skipStaticElements:false});}let{output:r,height:o}=t.get();return {output:r,outputHeight:o,staticOutput:n?`${n.get().output}
|
|
3664
3664
|
`:""}}return {output:"",outputHeight:0,staticOutput:""}},Ob=$E;var OE=new WeakMap,uo=OE;var Bb=createContext({exit(){}});Bb.displayName="InternalAppContext";var $l=Bb;var Fb=createContext({stdin:$t.stdin,internal_eventEmitter:new EventEmitter,setRawMode(){},isRawModeSupported:false,internal_exitOnCtrlC:true});Fb.displayName="InternalStdinContext";var po=Fb;var Ub=createContext({stdout:$t.stdout,write(){},columns:$t.stdout.columns||80,rows:$t.stdout.rows||24});Ub.displayName="InternalStdoutContext";var Di=Ub;var jb=createContext({stderr:$t.stderr,write(){}});jb.displayName="InternalStderrContext";var Up=jb;var Gb=createContext({activeId:void 0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){}});Gb.displayName="InternalFocusContext";var Ol=Gb;te();var tt={CURSOR_HIDE:"\x1B[?25l",CURSOR_SHOW:"\x1B[?25h",CURSOR_SAVE:"\x1B[s",CURSOR_RESTORE:"\x1B[u",CURSOR_HOME:"\x1B[H",cursorTo:(s,e)=>e!==void 0?`\x1B[${e+1};${s+1}H`:`\x1B[${s+1}G`,cursorMove:(s,e)=>{let t="";return e<0&&(t+=`\x1B[${-e}A`),e>0&&(t+=`\x1B[${e}B`),s>0&&(t+=`\x1B[${s}C`),s<0&&(t+=`\x1B[${-s}D`),t},cursorUp:(s=1)=>`\x1B[${s}A`,cursorDown:(s=1)=>`\x1B[${s}B`,cursorForward:(s=1)=>`\x1B[${s}C`,cursorBack:(s=1)=>`\x1B[${s}D`,ERASE_LINE:"\x1B[2K",ERASE_LINE_END:"\x1B[K",ERASE_LINE_START:"\x1B[1K",ERASE_SCREEN:"\x1B[2J",ERASE_SCREEN_DOWN:"\x1B[J",ERASE_SCREEN_UP:"\x1B[1J",eraseLines:s=>{if(s<=0)return "";let e="";return s>1&&(e+=`\x1B[${s-1}A`),e+="\r",e+="\x1B[J",e},scrollUp:(s=1)=>`\x1B[${s}S`,scrollDown:(s=1)=>`\x1B[${s}T`,ALT_SCREEN_ENTER:"\x1B[?1049h",ALT_SCREEN_LEAVE:"\x1B[?1049l",ALT_SCROLL_ENABLE:"\x1B[?1007h",ALT_SCROLL_DISABLE:"\x1B[?1007l",SYNC_START:"\x1B[?2026h",SYNC_END:"\x1B[?2026l",BRACKETED_PASTE_ENABLE:"\x1B[?2004h",BRACKETED_PASTE_DISABLE:"\x1B[?2004l",MOUSE_ENABLE:"\x1B[?1000h\x1B[?1002h\x1B[?1015h\x1B[?1006h",MOUSE_DISABLE:"\x1B[?1006l\x1B[?1015l\x1B[?1002l\x1B[?1000l",QUERY_SIZE:"\x1B[18t",QUERY_CURSOR_POS:"\x1B[6n",RESET:"\x1Bc",SOFT_RESET:"\x1B[!p"};function Wb(){return process.platform==="win32"?"win32":process.platform==="darwin"?"darwin":process.platform==="linux"&&!!(process.env.WSL_DISTRO_NAME||process.env.WSLENV||process.env.WSL_INTEROP)?"wsl":"linux"}function zb(s){let e=s.TERM||"",t=s.TERM_PROGRAM||"",n=s.WT_SESSION,r=s.ConEmuANSI;return n?"windows-terminal":t==="vscode"||s.VSCODE_INJECTION?"vscode":t==="iTerm.app"||s.ITERM_SESSION_ID?"iterm":t==="Hyper"?"hyper":t==="Apple_Terminal"?"terminal-app":s.ALACRITTY_WINDOW_ID||e==="alacritty"?"alacritty":s.KITTY_WINDOW_ID||e==="xterm-kitty"?"kitty":s.WEZTERM_PANE?"wezterm":s.KONSOLE_VERSION?"konsole":s.GNOME_TERMINAL_SCREEN||s.VTE_VERSION?"gnome-terminal":s.MSYSTEM||e==="cygwin"?"mintty":r==="ON"||process.platform==="win32"?"conpty":Wb()==="wsl"?"wsl":e.includes("xterm")||e.includes("256color")?"xterm":"unknown"}function KE(){return zb(process.env)}function mo(s=process.env){let e=zb(s);return !!(s.SSH_CONNECTION||s.SSH_CLIENT||s.SSH_TTY)&&e!=="terminal-app"}function JE(s,e,t){let n=process.env,r=s.isTTY??false,o=!!(n.CI||n.CONTINUOUS_INTEGRATION||n.GITHUB_ACTIONS),i=n.COLORTERM||"",a=n.TERM||"",l=!!(i==="truecolor"||i==="24bit"||a.includes("truecolor")||a.includes("24bit")||["iterm","vscode","windows-terminal","alacritty","kitty","wezterm","hyper"].includes(e)),c=l||!!(a.includes("256color")||i||["xterm","gnome-terminal","konsole","mintty","conpty"].includes(e)),u=r&&!o&&!["terminal-app","mintty"].includes(e),d=r&&!o,m=r&&!o&&e!=="unknown",g=!!(n.LANG?.includes("UTF-8")||n.LC_ALL?.includes("UTF-8")||t==="darwin"||["iterm","vscode","windows-terminal","alacritty","kitty","wezterm"].includes(e));return {color256:c,trueColor:l,synchronizedUpdate:u,alternateScreen:d,bracketedPaste:m,mouse:r&&!o,unicode:g,terminalType:e,isCI:o,isTTY:r}}var Bl=class extends EventEmitter{stdout;stdin;options;platform;terminalType;capabilities;_size;_inAltScreen=false;_inSyncUpdate=false;_resizePollTimer=null;_destroyed=false;constructor(e){super(),this.stdout=e.stdout,this.stdin=e.stdin,this.options=e,this.platform=Wb(),this.terminalType=KE(),this.capabilities=JE(this.stdout,this.terminalType,this.platform),e.forceDisable?.synchronizedUpdate&&(this.capabilities.synchronizedUpdate=false),e.forceDisable?.alternateScreen&&(this.capabilities.alternateScreen=false),e.forceDisable?.color&&(this.capabilities.color256=false,this.capabilities.trueColor=false),this._size=this.querySize(),this.setupResizeListener();}get size(){return {...this._size}}get columns(){return this._size.columns}get rows(){return this._size.rows}querySize(){return {columns:this.stdout.columns||80,rows:this.stdout.rows||24}}setupResizeListener(){let e=()=>{let n=this.querySize();if(n.columns!==this._size.columns||n.rows!==this._size.rows){let r=this._size;this._size=n,this.emit("resize",n,r);}};this.stdout.on("resize",e),process.platform!=="win32"&&process.on("SIGWINCH",e);let t=this.options.resizePollInterval??(this.platform==="win32"||this.platform==="wsl"?500:0);t>0&&(this._resizePollTimer=setInterval(e,t));}write(e){this._destroyed||this.stdout.write(e);}writeLine(e){this.write(e+`
|
|
3665
|
-
`);}clearScreen(){this.write(tt.ERASE_SCREEN+tt.CURSOR_HOME);}clearScreenDown(){this.write(tt.ERASE_SCREEN_DOWN);}clearLine(){this.write(tt.ERASE_LINE+"\r");}clearLines(e){e<=0||this.write(tt.eraseLines(e));}moveCursor(e,t){this.write(tt.cursorTo(e,t));}moveCursorBy(e,t){this.write(tt.cursorMove(e,t));}hideCursor(){this.write(tt.CURSOR_HIDE);}showCursor(){this.write(tt.CURSOR_SHOW);}saveCursor(){this.write(tt.CURSOR_SAVE);}restoreCursor(){this.write(tt.CURSOR_RESTORE);}beginSyncUpdate(){this.capabilities.synchronizedUpdate&&!this._inSyncUpdate&&(this.write(tt.SYNC_START),this._inSyncUpdate=true);}endSyncUpdate(){this._inSyncUpdate&&(this.write(tt.SYNC_END),this._inSyncUpdate=false);}syncUpdate(e){this.beginSyncUpdate();try{e();}finally{this.endSyncUpdate();}}async syncUpdateAsync(e){this.beginSyncUpdate();try{await e();}finally{this.endSyncUpdate();}}get inAltScreen(){return this._inAltScreen}enterAltScreen(){this.capabilities.alternateScreen&&!this._inAltScreen&&(this.write(tt.ALT_SCREEN_ENTER),this.write(tt.ALT_SCROLL_ENABLE),this._inAltScreen=true,this.emit("altscreen",true));}leaveAltScreen(){this._inAltScreen&&(this.write(tt.ALT_SCROLL_DISABLE),this.write(tt.ALT_SCREEN_LEAVE),this._inAltScreen=false,this.emit("altscreen",false));}withAltScreen(e){let t=this._inAltScreen;t||this.enterAltScreen();try{return e()}finally{t||this.leaveAltScreen();}}async withAltScreenAsync(e){let t=this._inAltScreen;t||this.enterAltScreen();try{return await e()}finally{t||this.leaveAltScreen();}}enableBracketedPaste(){this.capabilities.bracketedPaste&&this.write(tt.BRACKETED_PASTE_ENABLE);}disableBracketedPaste(){this.capabilities.bracketedPaste&&this.write(tt.BRACKETED_PASTE_DISABLE);}enableMouse(){this.capabilities.mouse&&this.write(tt.MOUSE_ENABLE);}disableMouse(){this.capabilities.mouse&&this.write(tt.MOUSE_DISABLE);}reset(){this._inSyncUpdate&&this.endSyncUpdate(),this._inAltScreen&&this.leaveAltScreen(),this.showCursor(),this.disableBracketedPaste(),this.disableMouse();}destroy(){this._destroyed||(this._destroyed=true,this._resizePollTimer&&(clearInterval(this._resizePollTimer),this._resizePollTimer=null),this.reset(),this.removeAllListeners());}},jp=null;function Wr(s){return jp||(jp=new Bl({stdout:process.stdout,stdin:process.stdin,...s})),jp}var Ul=class{stdin;stdinListener=null;healthCheckInterval=null;rawModeForcedAt=0;aggressiveCompat=mo();mouseWheelCallback=null;constructor(e){this.stdin=e;}setMouseWheelCallback(e){this.mouseWheelCallback=e,de("INPUT_MANAGER",`\u{1F5B1}\uFE0F Mouse wheel callback ${e?"set":"cleared"}`);}enablePermanent(e){this.stdinListener=e;try{this.stdin.setRawMode(!0),this.stdin.setEncoding("utf8");}catch(t){throw de("INPUT_MANAGER",`\u274C setRawMode failed: ${t}`),t}this.stdin.on("data",this.handleStdinData),this.stdin.isPaused?.()&&(this.stdin.resume(),de("INPUT_MANAGER","\u{1F504} Stdin was paused, resumed")),this.healthCheckInterval=setInterval(()=>{this.stdin.isPaused?.()&&(de("INPUT_MANAGER","\u26A0\uFE0F Stdin was paused, resuming..."),this.stdin.resume());let t=this.stdin.isRaw;if(this.aggressiveCompat&&t===false)try{this.stdin.setRawMode(!0),this.stdin.setEncoding("utf8"),this.stdin.resume();let n=Date.now();n-this.rawModeForcedAt>1e3&&(de("INPUT_MANAGER","\u26A0\uFE0F Raw mode lost, force-restored"),this.rawModeForcedAt=n);}catch(n){de("INPUT_MANAGER",`\u274C force setRawMode(true) failed: ${n}`);}},100),de("INPUT_MANAGER","\u2705 Enabled permanently");}disable(){this.healthCheckInterval&&(clearInterval(this.healthCheckInterval),this.healthCheckInterval=null),this.stdin.off("data",this.handleStdinData);try{this.stdin.setRawMode(!1);}catch(e){de("INPUT_MANAGER",`\u274C setRawMode(false) failed: ${e}`);}this.stdinListener=null,de("INPUT_MANAGER","\u{1F53B} Disabled");}handleStdinData=e=>{let t=e.toString();if(t.includes("\x1B[<")){let n=/\x1b\[<(\d+);(\d+);(\d+)([Mm])/g,r,o=t;for(;(r=n.exec(t))!==null;){let i=parseInt(r[1],10);r[4]==="M"&&this.mouseWheelCallback&&(i===64?this.mouseWheelCallback("up"):i===65&&this.mouseWheelCallback("down")),o=o.replace(r[0],"");}if(o.trim()==="")return;if(o.length>0){this.stdinListener?.(o);return}}this.stdinListener?.(t);}},Fl=null;function
|
|
3665
|
+
`);}clearScreen(){this.write(tt.ERASE_SCREEN+tt.CURSOR_HOME);}clearScreenDown(){this.write(tt.ERASE_SCREEN_DOWN);}clearLine(){this.write(tt.ERASE_LINE+"\r");}clearLines(e){e<=0||this.write(tt.eraseLines(e));}moveCursor(e,t){this.write(tt.cursorTo(e,t));}moveCursorBy(e,t){this.write(tt.cursorMove(e,t));}hideCursor(){this.write(tt.CURSOR_HIDE);}showCursor(){this.write(tt.CURSOR_SHOW);}saveCursor(){this.write(tt.CURSOR_SAVE);}restoreCursor(){this.write(tt.CURSOR_RESTORE);}beginSyncUpdate(){this.capabilities.synchronizedUpdate&&!this._inSyncUpdate&&(this.write(tt.SYNC_START),this._inSyncUpdate=true);}endSyncUpdate(){this._inSyncUpdate&&(this.write(tt.SYNC_END),this._inSyncUpdate=false);}syncUpdate(e){this.beginSyncUpdate();try{e();}finally{this.endSyncUpdate();}}async syncUpdateAsync(e){this.beginSyncUpdate();try{await e();}finally{this.endSyncUpdate();}}get inAltScreen(){return this._inAltScreen}enterAltScreen(){this.capabilities.alternateScreen&&!this._inAltScreen&&(this.write(tt.ALT_SCREEN_ENTER),this.write(tt.ALT_SCROLL_ENABLE),this._inAltScreen=true,this.emit("altscreen",true));}leaveAltScreen(){this._inAltScreen&&(this.write(tt.ALT_SCROLL_DISABLE),this.write(tt.ALT_SCREEN_LEAVE),this._inAltScreen=false,this.emit("altscreen",false));}withAltScreen(e){let t=this._inAltScreen;t||this.enterAltScreen();try{return e()}finally{t||this.leaveAltScreen();}}async withAltScreenAsync(e){let t=this._inAltScreen;t||this.enterAltScreen();try{return await e()}finally{t||this.leaveAltScreen();}}enableBracketedPaste(){this.capabilities.bracketedPaste&&this.write(tt.BRACKETED_PASTE_ENABLE);}disableBracketedPaste(){this.capabilities.bracketedPaste&&this.write(tt.BRACKETED_PASTE_DISABLE);}enableMouse(){this.capabilities.mouse&&this.write(tt.MOUSE_ENABLE);}disableMouse(){this.capabilities.mouse&&this.write(tt.MOUSE_DISABLE);}reset(){this._inSyncUpdate&&this.endSyncUpdate(),this._inAltScreen&&this.leaveAltScreen(),this.showCursor(),this.disableBracketedPaste(),this.disableMouse();}destroy(){this._destroyed||(this._destroyed=true,this._resizePollTimer&&(clearInterval(this._resizePollTimer),this._resizePollTimer=null),this.reset(),this.removeAllListeners());}},jp=null;function Wr(s){return jp||(jp=new Bl({stdout:process.stdout,stdin:process.stdin,...s})),jp}var Ul=class{stdin;stdinListener=null;healthCheckInterval=null;rawModeForcedAt=0;aggressiveCompat=mo();mouseWheelCallback=null;constructor(e){this.stdin=e;}setMouseWheelCallback(e){this.mouseWheelCallback=e,de("INPUT_MANAGER",`\u{1F5B1}\uFE0F Mouse wheel callback ${e?"set":"cleared"}`);}enablePermanent(e){this.stdinListener=e;try{this.stdin.setRawMode(!0),this.stdin.setEncoding("utf8");}catch(t){throw de("INPUT_MANAGER",`\u274C setRawMode failed: ${t}`),t}this.stdin.on("data",this.handleStdinData),this.stdin.isPaused?.()&&(this.stdin.resume(),de("INPUT_MANAGER","\u{1F504} Stdin was paused, resumed")),this.healthCheckInterval=setInterval(()=>{this.stdin.isPaused?.()&&(de("INPUT_MANAGER","\u26A0\uFE0F Stdin was paused, resuming..."),this.stdin.resume());let t=this.stdin.isRaw;if(this.aggressiveCompat&&t===false)try{this.stdin.setRawMode(!0),this.stdin.setEncoding("utf8"),this.stdin.resume();let n=Date.now();n-this.rawModeForcedAt>1e3&&(de("INPUT_MANAGER","\u26A0\uFE0F Raw mode lost, force-restored"),this.rawModeForcedAt=n);}catch(n){de("INPUT_MANAGER",`\u274C force setRawMode(true) failed: ${n}`);}},100),de("INPUT_MANAGER","\u2705 Enabled permanently");}disable(){this.healthCheckInterval&&(clearInterval(this.healthCheckInterval),this.healthCheckInterval=null),this.stdin.off("data",this.handleStdinData);try{this.stdin.setRawMode(!1);}catch(e){de("INPUT_MANAGER",`\u274C setRawMode(false) failed: ${e}`);}this.stdinListener=null,de("INPUT_MANAGER","\u{1F53B} Disabled");}handleStdinData=e=>{let t=e.toString();if(t.includes("\x1B[<")){let n=/\x1b\[<(\d+);(\d+);(\d+)([Mm])/g,r,o=t;for(;(r=n.exec(t))!==null;){let i=parseInt(r[1],10);r[4]==="M"&&this.mouseWheelCallback&&(i===64?this.mouseWheelCallback("up"):i===65&&this.mouseWheelCallback("down")),o=o.replace(r[0],"");}if(o.trim()==="")return;if(o.length>0){this.stdinListener?.(o);return}}this.stdinListener?.(t);}},Fl=null;function Ts(s){if(!Fl&&s&&(Fl=new Ul(s)),!Fl)throw new Error("InputManager not initialized");return Fl}var jl=class{pendingRequests=new Map;frameScheduled=false;lastFrameTime=0;targetFPS=60;frameInterval=1e3/this.targetFPS;stats={totalFrames:0,droppedRequests:0,averageFrameTime:0};scheduleFrame(e,t,n=2){let r=Date.now();if(n===0){process.env.FRAME_SCHEDULER_DEBUG==="1"&&process.stderr.write(`[FRAME_SCHEDULER] \u26A1 IMMEDIATE render, executing now
|
|
3666
3666
|
`),this.flushFrame([{id:e,priority:n,callback:t,timestamp:r}]);return}let o=this.pendingRequests.get(e);if(o){n<o.priority?this.pendingRequests.set(e,{id:e,priority:n,callback:t,timestamp:r}):this.stats.droppedRequests++;return}this.pendingRequests.set(e,{id:e,priority:n,callback:t,timestamp:r}),this.frameScheduled||this.scheduleNextFrame();}scheduleNextFrame(){this.frameScheduled=true;let t=Date.now()-this.lastFrameTime,n=Math.max(0,this.frameInterval-t);setTimeout(()=>{this.executeFrame();},n);}executeFrame(){let e=Date.now(),t=Array.from(this.pendingRequests.values());this.pendingRequests.clear(),this.frameScheduled=false,t.sort((r,o)=>r.priority-o.priority),this.flushFrame(t),this.lastFrameTime=e,this.stats.totalFrames++;let n=Date.now()-e;this.stats.averageFrameTime=(this.stats.averageFrameTime*(this.stats.totalFrames-1)+n)/this.stats.totalFrames,process.env.FRAME_SCHEDULER_DEBUG==="1"&&process.stderr.write(`[FRAME_SCHEDULER] Frame #${this.stats.totalFrames}: ${t.length} requests, ${n.toFixed(2)}ms
|
|
3667
3667
|
`);}flushFrame(e){e.length!==0&&(process.env.FRAME_SCHEDULER_DEBUG==="1"&&process.stderr.write(`[FRAME_SCHEDULER] \u{1F3A8} Flushing ${e.length} render callback(s)
|
|
3668
3668
|
`),e.forEach(t=>{try{t.callback();}catch(n){process.stderr.write(`[FRAME_SCHEDULER] Render callback error: ${n}
|
|
3669
3669
|
`);}}));}getStats(){return {...this.stats}}resetStats(){this.stats={totalFrames:0,droppedRequests:0,averageFrameTime:0};}},Gp=null;function Li(){return Gp||(Gp=new jl),Gp}te();var Wp="\x1B[200~",Hb="\x1B[201~",VE=50,Gl=class{buffer="";inPaste=false;escapeTimeout=null;parse(e,t){for(de("PASTE_PARSER",`Received ${e.length} bytes: ${JSON.stringify(e)}`),this.buffer+=e;this.buffer.length>0;){if(this.inPaste){let l=this.buffer.indexOf(Hb);if(l>=0){let c=this.buffer.slice(0,l);this.buffer=this.buffer.slice(l+Hb.length),de("PASTE_PARSER",`\u{1F4CB} Paste detected: ${c.length} chars`),t(c,true),this.inPaste=false;continue}else break}if(this.buffer.indexOf(Wp)===0){this.escapeTimeout&&clearTimeout(this.escapeTimeout),de("PASTE_PARSER","\u{1F4E5} Paste start detected"),this.inPaste=true,this.buffer=this.buffer.slice(Wp.length);continue}if(this.buffer.startsWith("\x1B")){if(this.escapeTimeout&&clearTimeout(this.escapeTimeout),this.buffer.length===1){this.escapeTimeout=setTimeout(()=>{this.buffer==="\x1B"&&(de("PASTE_PARSER","\u2328\uFE0F ESC key detected"),t("\x1B",false),this.buffer="");},VE);break}if(this.isCompleteEscapeSequence(this.buffer)){de("PASTE_PARSER",`\u2328\uFE0F ESC sequence: ${JSON.stringify(this.buffer)}`),t(this.buffer,false),this.buffer="";continue}if(this.buffer.length>20){de("PASTE_PARSER",`\u26A0\uFE0F Invalid ESC sequence (too long): ${JSON.stringify(this.buffer)}`),t(this.buffer,false),this.buffer="";continue}break}let r=this.buffer.length,o=this.buffer.indexOf("\x1B"),i=this.buffer.indexOf(Wp);o>0&&(r=Math.min(r,o)),i>0&&(r=Math.min(r,i));let a=this.buffer.slice(0,r);if(this.buffer=this.buffer.slice(r),a.length>0&&(de("PASTE_PARSER",`\u2328\uFE0F Text: ${JSON.stringify(a)} (${a.length} chars)`),t(a,false)),a.length===0&&this.buffer.length>0)break}}isCompleteEscapeSequence(e){return e.startsWith("\x1B[")?/[A-Za-z~^$u]$/.test(e):e.startsWith("\x1BO")?/[A-Za-z]$/.test(e):e.startsWith("\x1B]")?e.endsWith("\x07")||e.endsWith("\x1B\\"):e.length===2}dispose(){this.escapeTimeout&&(clearTimeout(this.escapeTimeout),this.escapeTimeout=null),this.buffer="",this.inPaste=false,de("PASTE_PARSER","\u{1F5D1}\uFE0F Disposed");}};te();var YE=(s,e=2)=>s.replace(/^\t+/gm,t=>" ".repeat(t.length*e)),qb=YE;var XE=(s,e)=>{let t=[],n=s-e,r=s+e;for(let o=n;o<=r;o++)t.push(o);return t},QE=(s,e,t={})=>{var n;if(typeof s!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");let r=qb(s).split(/\r?\n/);if(!(e>r.length))return XE(e,(n=t.around)!==null&&n!==void 0?n:3).filter(o=>r[o-1]!==void 0).map(o=>({line:o,value:r[o-1]}))},Kb=QE;var zr=createContext({isScreenReaderEnabled:false});var Wl=createContext(void 0);var Jb=forwardRef(({children:s,backgroundColor:e,"aria-label":t,"aria-hidden":n,"aria-role":r,"aria-state":o,...i},a)=>{let{isScreenReaderEnabled:l}=useContext(zr),c=t?A.createElement("ink-text",null,t):void 0;if(l&&n)return null;let u=A.createElement("ink-box",{ref:a,style:{flexWrap:"nowrap",flexDirection:"row",flexGrow:0,flexShrink:1,...i,backgroundColor:e,overflowX:i.overflowX??i.overflow??"visible",overflowY:i.overflowY??i.overflow??"visible"},internal_accessibility:{role:r,state:o}},l&&c?c:s);return e?A.createElement(Wl.Provider,{value:e},u):u});Jb.displayName="Box";var _=Jb;function f({color:s,backgroundColor:e,dimColor:t=false,bold:n=false,italic:r=false,underline:o=false,strikethrough:i=false,inverse:a=false,wrap:l="wrap",children:c,"aria-label":u,"aria-hidden":d=false}){let{isScreenReaderEnabled:m}=useContext(zr),g=useContext(Wl),h=m&&u?u:c;if(h==null)return null;let y=b=>{t&&(b=Oe.dim(b)),s&&(b=Xn(b,s,"foreground"));let C=e??g;return C&&(b=Xn(b,C,"background")),n&&(b=Oe.bold(b)),r&&(b=Oe.italic(b)),o&&(b=Oe.underline(b)),i&&(b=Oe.strikethrough(b)),a&&(b=Oe.inverse(b)),b};return m&&d?null:A.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:l},internal_transform:y},m&&u?u:c)}var Hp=s=>s?.replace(`file://${cwd()}/`,""),Xb=new Yb({cwd:cwd(),internals:Yb.nodeInternals()});function qp({error:s}){let e=s.stack?s.stack.split(`
|
|
3670
3670
|
`).slice(1):void 0,t=e?Xb.parseLine(e[0]):void 0,n=Hp(t?.file),r,o=0;if(n&&t?.line&&Ct.existsSync(n)){let i=Ct.readFileSync(n,"utf8");if(r=Kb(i,t.line),r)for(let{line:a}of r)o=Math.max(o,String(a).length);}return A.createElement(_,{flexDirection:"column",padding:1},A.createElement(_,null,A.createElement(f,{backgroundColor:"red",color:"white"}," ","ERROR"," "),A.createElement(f,null," ",s.message)),t&&n&&A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},n,":",t.line,":",t.column)),t&&r&&A.createElement(_,{marginTop:1,flexDirection:"column"},r.map(({line:i,value:a})=>A.createElement(_,{key:i},A.createElement(_,{width:o+1},A.createElement(f,{dimColor:i!==t.line,backgroundColor:i===t.line?"red":void 0,color:i===t.line?"white":void 0,"aria-label":i===t.line?`Line ${i}, error`:`Line ${i}`},String(i).padStart(o," "),":")),A.createElement(f,{key:i,backgroundColor:i===t.line?"red":void 0,color:i===t.line?"white":void 0}," "+a)))),s.stack&&A.createElement(_,{marginTop:1,flexDirection:"column"},s.stack.split(`
|
|
3671
|
-
`).slice(1).map(i=>{let a=Xb.parseLine(i);return a?A.createElement(_,{key:i},A.createElement(f,{dimColor:true},"- "),A.createElement(f,{dimColor:true,bold:true},a.function),A.createElement(f,{dimColor:true,color:"gray","aria-label":`at ${Hp(a.file)??""} line ${a.line} column ${a.column}`}," ","(",Hp(a.file)??"",":",a.line,":",a.column,")")):A.createElement(_,{key:i},A.createElement(f,{dimColor:true},"- "),A.createElement(f,{dimColor:true,bold:true},i,"\\t"," "))})))}var SA=" ",kA="\x1B[Z",_A="\x1B",Oi=class extends PureComponent{static displayName="InternalApp";static getDerivedStateFromError(e){return {error:e}}state={isFocusEnabled:true,activeFocusId:void 0,focusables:[],error:void 0,terminalColumns:$t.stdout.columns||80,terminalRows:$t.stdout.rows||24};internal_eventEmitter=new EventEmitter;pasteParser=null;isRawModeSupported(){return this.props.stdin.isTTY}render(){return A.createElement($l.Provider,{value:{exit:this.handleExit}},A.createElement(po.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC,internal_eventEmitter:this.internal_eventEmitter}},A.createElement(Di.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout,columns:this.state.terminalColumns,rows:this.state.terminalRows}},A.createElement(Up.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},A.createElement(Ol.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?A.createElement(qp,{error:this.state.error}):this.props.children)))))}componentDidMount(){cv.hide(this.props.stdout),this.props.stdin.isTTY&&(this.props.stdout.write("\x1B[?2004h"),de("INK_APP","\u2705 Bracketed Paste Mode enabled"),this.pasteParser=new Gl,
|
|
3672
|
-
`),this.setState({terminalColumns:e,terminalRows:t});};componentWillUnmount(){if(cv.show(this.props.stdout),this.props.stdout.off("resize",this.handleResize),this.isRawModeSupported()){this.props.stdout.write("\x1B[?2004l"),this.pasteParser?.dispose(),this.pasteParser=null;try{
|
|
3673
|
-
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`)};handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===_A&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===SA&&this.focusNext(),e===kA&&this.focusPrevious());};handlePaste=async e=>{if(de("INPUT_PASTE",`\u{1F4CB} Pasted ${e.length} characters`),e.length===0){de("INPUT_PASTE","\u{1F5BC}\uFE0F Empty paste detected - checking clipboard for image...");try{let{pasteImageAsBase64:t}=await Promise.resolve().then(()=>(Xp(),lv)),n=await t();if(n){de("INPUT_PASTE",`\u{1F4CE} Image detected in clipboard: ${n.name} (${Math.round(n.data.length/1024)}KB)`),this.internal_eventEmitter.emit("image-paste",n);return}}catch(t){de("INPUT_PASTE","\u274C Failed to check clipboard for image",{error:t});}}this.internal_eventEmitter.emit("paste",e),this.handleInput(e);};handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(false),this.props.onExit(e);};enableFocus=()=>{this.setState({isFocusEnabled:true});};disableFocus=()=>{this.setState({isFocusEnabled:false});};focus=e=>{this.setState(t=>t.focusables.some(r=>r?.id===e)?{activeFocusId:e}:t);};focusNext=()=>{this.setState(e=>{let t=e.focusables.find(r=>r.isActive)?.id;return {activeFocusId:this.findNextFocusable(e)??t}});};focusPrevious=()=>{this.setState(e=>{let t=e.focusables.findLast(r=>r.isActive)?.id;return {activeFocusId:this.findPreviousFocusable(e)??t}});};addFocusable=(e,{autoFocus:t})=>{this.setState(n=>{let r=n.activeFocusId;return !r&&t&&(r=e),{activeFocusId:r,focusables:[...n.focusables,{id:e,isActive:true}]}});};removeFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.filter(n=>n.id!==e)}));};activateFocusable=e=>{this.setState(t=>({focusables:t.focusables.map(n=>n.id!==e?n:{id:e,isActive:true})}));};deactivateFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.map(n=>n.id!==e?n:{id:e,isActive:false})}));};findNextFocusable=e=>{let t=e.focusables.findIndex(n=>n.id===e.activeFocusId);for(let n=t+1;n<e.focusables.length;n++){let r=e.focusables[n];if(r?.isActive)return r.id}};findPreviousFocusable=e=>{let t=e.focusables.findIndex(n=>n.id===e.activeFocusId);for(let n=t-1;n>=0;n--){let r=e.focusables[n];if(r?.isActive)return r.id}}};function Qp({onlyFirst:s=false}={}){let r="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(r,s?void 0:"g")}var IA=Qp();function
|
|
3671
|
+
`).slice(1).map(i=>{let a=Xb.parseLine(i);return a?A.createElement(_,{key:i},A.createElement(f,{dimColor:true},"- "),A.createElement(f,{dimColor:true,bold:true},a.function),A.createElement(f,{dimColor:true,color:"gray","aria-label":`at ${Hp(a.file)??""} line ${a.line} column ${a.column}`}," ","(",Hp(a.file)??"",":",a.line,":",a.column,")")):A.createElement(_,{key:i},A.createElement(f,{dimColor:true},"- "),A.createElement(f,{dimColor:true,bold:true},i,"\\t"," "))})))}var SA=" ",kA="\x1B[Z",_A="\x1B",Oi=class extends PureComponent{static displayName="InternalApp";static getDerivedStateFromError(e){return {error:e}}state={isFocusEnabled:true,activeFocusId:void 0,focusables:[],error:void 0,terminalColumns:$t.stdout.columns||80,terminalRows:$t.stdout.rows||24};internal_eventEmitter=new EventEmitter;pasteParser=null;isRawModeSupported(){return this.props.stdin.isTTY}render(){return A.createElement($l.Provider,{value:{exit:this.handleExit}},A.createElement(po.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC,internal_eventEmitter:this.internal_eventEmitter}},A.createElement(Di.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout,columns:this.state.terminalColumns,rows:this.state.terminalRows}},A.createElement(Up.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},A.createElement(Ol.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?A.createElement(qp,{error:this.state.error}):this.props.children)))))}componentDidMount(){cv.hide(this.props.stdout),this.props.stdin.isTTY&&(this.props.stdout.write("\x1B[?2004h"),de("INK_APP","\u2705 Bracketed Paste Mode enabled"),this.pasteParser=new Gl,Ts(this.props.stdin).enablePermanent(t=>{this.pasteParser.parse(t,(n,r)=>{r?this.handlePaste(n):this.handleInput(n),this.internal_eventEmitter.emit("input",n);});}),de("INK_APP","\u2705 InputManager and PasteParser initialized"),$t.env.FRAME_SCHEDULER_DEBUG==="1"&&setInterval(()=>{let t=Li().getStats();de("FRAME_SCHEDULER","Stats",t);},5e3)),this.props.stdout.on("resize",this.handleResize);}handleResize=()=>{let e=this.props.stdout.columns||80,t=this.props.stdout.rows||24;$t.env.NEOX_INK_DEBUG==="1"&&$t.stderr.write(`[APP_RESIZE] \u{1F4D0} Resize detected: ${this.state.terminalColumns}x${this.state.terminalRows} \u2192 ${e}x${t}
|
|
3672
|
+
`),this.setState({terminalColumns:e,terminalRows:t});};componentWillUnmount(){if(cv.show(this.props.stdout),this.props.stdout.off("resize",this.handleResize),this.isRawModeSupported()){this.props.stdout.write("\x1B[?2004l"),this.pasteParser?.dispose(),this.pasteParser=null;try{Ts().disable();}catch{}de("INK_APP","\u{1F53B} Bracketed Paste Mode disabled and resources cleaned up");}}componentDidCatch(e){this.handleExit(e);}handleSetRawMode=e=>{if(!this.isRawModeSupported())throw new Error(`Raw mode is not supported on the current stdin.
|
|
3673
|
+
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`)};handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===_A&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===SA&&this.focusNext(),e===kA&&this.focusPrevious());};handlePaste=async e=>{if(de("INPUT_PASTE",`\u{1F4CB} Pasted ${e.length} characters`),e.length===0){de("INPUT_PASTE","\u{1F5BC}\uFE0F Empty paste detected - checking clipboard for image...");try{let{pasteImageAsBase64:t}=await Promise.resolve().then(()=>(Xp(),lv)),n=await t();if(n){de("INPUT_PASTE",`\u{1F4CE} Image detected in clipboard: ${n.name} (${Math.round(n.data.length/1024)}KB)`),this.internal_eventEmitter.emit("image-paste",n);return}}catch(t){de("INPUT_PASTE","\u274C Failed to check clipboard for image",{error:t});}}this.internal_eventEmitter.emit("paste",e),this.handleInput(e);};handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(false),this.props.onExit(e);};enableFocus=()=>{this.setState({isFocusEnabled:true});};disableFocus=()=>{this.setState({isFocusEnabled:false});};focus=e=>{this.setState(t=>t.focusables.some(r=>r?.id===e)?{activeFocusId:e}:t);};focusNext=()=>{this.setState(e=>{let t=e.focusables.find(r=>r.isActive)?.id;return {activeFocusId:this.findNextFocusable(e)??t}});};focusPrevious=()=>{this.setState(e=>{let t=e.focusables.findLast(r=>r.isActive)?.id;return {activeFocusId:this.findPreviousFocusable(e)??t}});};addFocusable=(e,{autoFocus:t})=>{this.setState(n=>{let r=n.activeFocusId;return !r&&t&&(r=e),{activeFocusId:r,focusables:[...n.focusables,{id:e,isActive:true}]}});};removeFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.filter(n=>n.id!==e)}));};activateFocusable=e=>{this.setState(t=>({focusables:t.focusables.map(n=>n.id!==e?n:{id:e,isActive:true})}));};deactivateFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.map(n=>n.id!==e?n:{id:e,isActive:false})}));};findNextFocusable=e=>{let t=e.focusables.findIndex(n=>n.id===e.activeFocusId);for(let n=t+1;n<e.focusables.length;n++){let r=e.focusables[n];if(r?.isActive)return r.id}};findPreviousFocusable=e=>{let t=e.focusables.findIndex(n=>n.id===e.activeFocusId);for(let n=t-1;n>=0;n--){let r=e.focusables[n];if(r?.isActive)return r.id}}};function Qp({onlyFirst:s=false}={}){let r="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(r,s?void 0:"g")}var IA=Qp();function ks(s){if(typeof s!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof s}\``);return s.replace(IA,"")}te();var uv=mo();var En=class extends EventEmitter{terminal;_lastVisibleLines=[];_allLines=[];_isActive=false;_forceFullRedraw=false;_scrollOffset=0;_autoScroll=true;_contentHeight=0;constructor(){super(),this.terminal=Wr();}get isActive(){return this._isActive}get size(){return this.terminal.size}get scrollOffset(){return this._scrollOffset}get contentHeight(){return this._contentHeight}get isAutoScroll(){return this._autoScroll}get isResizeLocked(){return false}get lastVisualLines(){return this._lastVisibleLines.length}start(){this._isActive||(this._isActive=true,this.terminal.enterAltScreen(),this.terminal.hideCursor(),this.terminal.clearScreen(),this.terminal.moveCursor(0,0),this.terminal.write("\x1B[?1000h"),this.terminal.write("\x1B[?1002h"),this.terminal.write("\x1B[?1006h"),this.terminal.on("resize",this.handleResize.bind(this)),this._forceFullRedraw=true,this.emit("start"));}stop(){this._isActive&&(this._isActive=false,this.terminal.write("\x1B[?1006l"),this.terminal.write("\x1B[?1002l"),this.terminal.write("\x1B[?1000l"),this.terminal.showCursor(),this.terminal.leaveAltScreen(),this.terminal.off("resize",this.handleResize.bind(this)),this.emit("stop"));}handleResize(e){if(process.env.NEOX_INK_DEBUG==="1"&&process.stderr.write(`[AltScreenRenderer.handleResize] ${e.columns}x${e.rows}
|
|
3674
3674
|
`),this._forceFullRedraw=true,this._lastVisibleLines=[],this._autoScroll)this._scrollOffset=Math.max(0,this._contentHeight-e.rows);else {let t=Math.max(0,this._contentHeight-e.rows);this._scrollOffset=Math.min(this._scrollOffset,t);}this.emit("resize",e),this.emit("resizeUnlock");}scrollUp(e=3){return this._scrollOffset<=0?false:(this._scrollOffset=Math.max(0,this._scrollOffset-e),this._autoScroll=false,this._forceFullRedraw=true,this.emit("scroll",this._scrollOffset),true)}scrollDown(e=3){let{rows:t}=this.terminal.size,n=Math.max(0,this._contentHeight-t);return this._scrollOffset>=n?false:(this._scrollOffset=Math.min(n,this._scrollOffset+e),this._scrollOffset>=n&&(this._autoScroll=true),this._forceFullRedraw=true,this.emit("scroll",this._scrollOffset),true)}pageUp(){let{rows:e}=this.terminal.size;return this.scrollUp(e-2)}pageDown(){let{rows:e}=this.terminal.size;return this.scrollDown(e-2)}scrollToTop(){return this._scrollOffset===0?false:(this._scrollOffset=0,this._autoScroll=false,this._forceFullRedraw=true,this.emit("scroll",this._scrollOffset),true)}scrollToBottom(){let{rows:e}=this.terminal.size,t=Math.max(0,this._contentHeight-e);return this._scrollOffset===t&&this._autoScroll?false:(this._scrollOffset=t,this._autoScroll=true,this._forceFullRedraw=true,this.emit("scroll",this._scrollOffset),true)}canScroll(){let{rows:e}=this.terminal.size,t=Math.max(0,this._contentHeight-e);return {up:this._scrollOffset>0,down:this._scrollOffset<t}}render(e){if(!this._isActive)return;let t=e.split(`
|
|
3675
3675
|
`);this._allLines=t,this._contentHeight=t.length;let{rows:n}=this.terminal.size;this._autoScroll&&(this._scrollOffset=Math.max(0,t.length-n));let r=[];for(let i=0;i<n;i++){let a=this._scrollOffset+i;r.push(t[a]||"");}let o=this._lastVisibleLines;if(this.terminal.beginSyncUpdate(),this._forceFullRedraw){this.terminal.clearScreen(),this.terminal.moveCursor(0,0);for(let i=0;i<r.length;i++)this.terminal.write(r[i]),i<r.length-1&&this.terminal.write(`
|
|
3676
3676
|
`);this._forceFullRedraw=false;}else for(let i=0;i<r.length;i++){let a=o[i]||"",l=r[i]||"";a!==l&&(this.terminal.moveCursor(0,i),this.terminal.write("\x1B[2K"),this.terminal.write(l));}this.terminal.endSyncUpdate(),this._lastVisibleLines=r;}clear(){this._isActive&&(this.terminal.clearScreen(),this.terminal.moveCursor(0,0),this._lastVisibleLines=[],this._allLines=[],this._scrollOffset=0,this._contentHeight=0,this._autoScroll=true);}forceRedraw(){this._forceFullRedraw=true;}done(){this.stop();}resetState(){this._lastVisibleLines=[],this._allLines=[],this._scrollOffset=0,this._contentHeight=0,this._autoScroll=true,this._forceFullRedraw=true;}};function Zp(){return new En}var yo=class s extends EventEmitter{terminal;static INVERSE_SGR_REGEX=/\x1b\[(?:\d+;)*7(?:;\d+)*m/g;_incremental;_lastOutput="";_lastVisualLines=0;_lastVisualLineContent=[];_lastCursorLine=0;_lastWidth=0;_resizePending=false;_resizeLock=false;_resizeLockTimer=null;constructor(e={}){super(),this.terminal=Wr(),this._incremental=e.incremental!==false,this._lastWidth=this.terminal.size.columns;}get isResizeLocked(){return this._resizeLock}get size(){return this.terminal.size}get lastVisualLines(){return this._lastVisualLines}get lastWidth(){return this._lastWidth}calculateVisualLines(e,t){return this.toVisualLines(e,t).length}toVisualLines(e,t){if(!e)return [];let n=rE(e,Math.max(1,t),{hard:true,trim:false});return n===""?[]:n.split(`
|
|
3677
|
-
`)}findCursorHint(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n]??"";s.INVERSE_SGR_REGEX.lastIndex=0;let o=-1,i;for(;(i=s.INVERSE_SGR_REGEX.exec(r))!==null;)o=i.index;if(o>=0){let a=r.slice(0,o),l=_l(
|
|
3677
|
+
`)}findCursorHint(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n]??"";s.INVERSE_SGR_REGEX.lastIndex=0;let o=-1,i;for(;(i=s.INVERSE_SGR_REGEX.exec(r))!==null;)o=i.index;if(o>=0){let a=r.slice(0,o),l=_l(ks(a)),c=Math.max(0,t-1),u=uv?Math.min(l,c):l;return {lineIndex:n,column:u}}}return null}buildCursorMoveSequence(e,t,n){if(n<=0)return "";let r=n-1,o=Math.max(0,r-e),i="";return o>0&&(i+=`\x1B[${o}A`),i+="\r",t>0&&(i+=`\x1B[${t}C`),i}alignCursorToBottom(e){if(e<=0)return "";let t=Math.max(0,Math.min(this._lastCursorLine,e-1)),r=e-1-t;return r>0?`\x1B[${r}B`:r<0?`\x1B[${-r}A`:""}eraseOutput(e){if(e<=0)return;let t="";for(let n=0;n<e;n++)t+="\x1B[2K",n<e-1&&(t+="\x1B[1A");t+="\r",this.terminal.write(t);}handleResize(e){let t=this._lastWidth,n=this._lastOutput,r=this.calculateVisualLines(n,e);return process.env.NEOX_INK_DEBUG==="1"&&process.stderr.write(`[InlineRenderer.handleResize] width: ${t}\u2192${e}, lastLines=${this._lastVisualLines}, newLines=${r}
|
|
3678
3678
|
`),this._resizeLock=true,this._resizeLockTimer&&clearTimeout(this._resizeLockTimer),this._resizeLockTimer=setTimeout(()=>{this._resizeLock=false,this._resizeLockTimer=null,this.emit("resizeUnlock");},100),this._lastVisualLines=r,this._lastWidth=e,this._resizePending=true,r}render(e){let t=this.terminal.size.columns;p.debug("INK_RENDER",`render: width=${t}, lastWidth=${this._lastWidth}, lastLines=${this._lastVisualLines}, resizePending=${this._resizePending}, incremental=${this._incremental}, content=${e.length} chars, contentLines=${e.split(`
|
|
3679
3679
|
`).length}, endsWithNL=${e.endsWith(`
|
|
3680
|
-
`)}`);let n=this.toVisualLines(e,t),r=n.length,o=this.findCursorHint(n,t);if(p.debug("INK_RENDER",`newVisualLines=${r}, cursorHint=${JSON.stringify(o)}`),!this._incremental||this._lastVisualLines===0||this._resizePending||this._lastWidth!==t){p.debug("INK_RENDER",`FULL_REDRAW: lastVisualLines=${this._lastVisualLines}, newVisualLines=${r}, lastCursorLine=${this._lastCursorLine}`)
|
|
3681
|
-
`))
|
|
3682
|
-
`),c+="\r";let d=i[u]??"",m=n[u]??"";d!==m&&(c+="\x1B[2K",c+=m);}if(r>0)if(o)c+=this.buildCursorMoveSequence(o.lineIndex,o.column,l);else {let u=l-r;u>0&&(c+=`\x1B[${u}A`),c+="\r";let d=n[r-1]??"";if(uv){let m=
|
|
3680
|
+
`)}`);let n=this.toVisualLines(e,t),r=n.length,o=this.findCursorHint(n,t);if(p.debug("INK_RENDER",`newVisualLines=${r}, cursorHint=${JSON.stringify(o)}`),!this._incremental||this._lastVisualLines===0||this._resizePending||this._lastWidth!==t){if(p.debug("INK_RENDER",`FULL_REDRAW: lastVisualLines=${this._lastVisualLines}, newVisualLines=${r}, lastCursorLine=${this._lastCursorLine}`),process.platform==="win32"){if(this._lastVisualLines>0){let i=this.alignCursorToBottom(this._lastVisualLines);i&&this.terminal.write(i),this._lastVisualLines>1&&this.terminal.write(`\x1B[${this._lastVisualLines-1}A`),this.terminal.write("\r");}if(this._lastVisualLines>r){for(let i=r;i<this._lastVisualLines;i++)i>0&&this.terminal.write("\x1B[1B"),this.terminal.write("\r\x1B[2K");this._lastVisualLines>1&&this.terminal.write(`\x1B[${this._lastVisualLines-1}A`),this.terminal.write("\r");}for(let i=0;i<r;i++)i>0&&this.terminal.write("\x1B[1E"),this.terminal.write("\x1B[2K"),this.terminal.write((n[i]??"").trimEnd());}else {if(this._lastVisualLines>0){let i=this.alignCursorToBottom(this._lastVisualLines);i&&this.terminal.write(i),this.eraseOutput(this._lastVisualLines);}this.terminal.write(n.join(`
|
|
3681
|
+
`));}o&&r>0&&this.terminal.write(this.buildCursorMoveSequence(o.lineIndex,o.column,r));}else {let i=this._lastVisualLineContent,a=i.length,l=Math.max(a,r),c="";if(a>0){let u=Math.max(0,Math.min(this._lastCursorLine,a-1));u>0&&(c+=`\x1B[${u}A`),c+="\r";}for(let u=0;u<l;u++){u>0&&(c+=`
|
|
3682
|
+
`),c+="\r";let d=i[u]??"",m=n[u]??"";d!==m&&(c+="\x1B[2K",c+=m);}if(r>0)if(o)c+=this.buildCursorMoveSequence(o.lineIndex,o.column,l);else {let u=l-r;u>0&&(c+=`\x1B[${u}A`),c+="\r";let d=n[r-1]??"";if(uv){let m=ks(d).replace(/[\u0000-\u001F\u007F]/g,""),g=_l(m),h=Math.max(0,t-1),y=Math.min(g,h);y>0&&(c+=`\x1B[${y}C`);}else {let m=_l(ks(d));m>0&&(c+=`\x1B[${m}C`);}}this.terminal.beginSyncUpdate(),this.terminal.write(c),this.terminal.endSyncUpdate();}this._lastOutput=e,this._lastVisualLines=r,this._lastVisualLineContent=n,this._lastCursorLine=r>0?o?Math.max(0,Math.min(o.lineIndex,r-1)):r-1:0,this._lastWidth=t,this._resizePending=false;}clear(){let e=this.alignCursorToBottom(this._lastVisualLines);e&&this.terminal.write(e),this.eraseOutput(this._lastVisualLines),this._lastOutput="",this._lastVisualLines=0,this._lastVisualLineContent=[],this._lastCursorLine=0;}resetState(){this._lastOutput="",this._lastVisualLines=0,this._lastVisualLineContent=[],this._lastCursorLine=0,this._lastWidth=this.terminal.size.columns,this._resizePending=false;}done(){this.terminal.showCursor(),this._lastOutput="",this._lastVisualLines=0,this._lastVisualLineContent=[],this._lastCursorLine=0;}truncateToWidth(e,t){let n=0,r="",o=0;for(;o<e.length;){if(e[o]==="\x1B"&&e[o+1]==="["){let l=o+2;for(;l<e.length&&!/[a-zA-Z]/.test(e[l]);)l++;if(l<e.length){r+=e.slice(o,l+1),o=l+1;continue}}let i=e[o],a=_l(i);if(n+a>t)break;r+=i,n+=a,o++;}return r.includes("\x1B[")&&(r+="\x1B[0m"),r}};function em(s={}){return new yo(s)}te();var gv=()=>{},Bi=class{options;isScreenReaderEnabled;renderer;useAltScreen;isUnmounted;lastOutput;lastOutputHeight;container;rootNode;exitPromise;restoreConsole;unsubscribeResize;terminalAdapter;unsubscribeTerminalResize;_accumulatedStatic="";_lastFullOutput="";scrollUp=(e=3)=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.scrollUp(e)&&this.onRender();};scrollDown=(e=3)=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.scrollDown(e)&&this.onRender();};pageUp=()=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.pageUp()&&this.onRender();};pageDown=()=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.pageDown()&&this.onRender();};scrollToTop=()=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.scrollToTop()&&this.onRender();};scrollToBottom=()=>{!this.useAltScreen||!(this.renderer instanceof En)||this.renderer.scrollToBottom()&&this.onRender();};canScroll=()=>!this.useAltScreen||!(this.renderer instanceof En)?{up:false,down:false}:this.renderer.canScroll();setupMouseWheelHandler(){try{Ts().setMouseWheelCallback(t=>{t==="up"?this.scrollUp(3):this.scrollDown(3);}),$t.env.NEOX_INK_DEBUG==="1"&&$t.stderr.write(`[INK] \u{1F5B1}\uFE0F Mouse wheel handler installed via InputManager
|
|
3683
3683
|
`);}catch(e){$t.env.NEOX_INK_DEBUG==="1"&&$t.stderr.write(`[INK] \u26A0\uFE0F InputManager not ready, will retry: ${e}
|
|
3684
3684
|
`),setTimeout(()=>this.setupMouseWheelHandler(),100);}}constructor(e){if(MA(this),this.options=e,this.rootNode=Al("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=e.isScreenReaderEnabled??$t.env.INK_SCREEN_READER==="true",this.terminalAdapter=Wr({stdout:e.stdout,stdin:e.stdin,resizePollInterval:void 0}),$t.env.NEOX_INK_DEBUG==="1"){let i=this.terminalAdapter.capabilities;$t.stderr.write(`[INK] \u{1F5A5}\uFE0F Terminal: ${i.terminalType}, syncUpdate=${i.synchronizedUpdate}, altScreen=${i.alternateScreen}, trueColor=${i.trueColor}
|
|
3685
3685
|
`);}let t=e.debug||this.isScreenReaderEnabled;e.maxFps??30;this.useAltScreen=e.useAltScreen??false;let o=Li();this.rootNode.onRender=()=>{let i=t?0:2;if(o.scheduleFrame("ink-root-render",this.onRender,i),$t.env.NEOX_INK_DEBUG==="1"){let a=t?"IMMEDIATE":"NORMAL";$t.stderr.write(`[INK] \u{1F4C5} Render scheduled with ${a} priority
|
|
@@ -3693,11 +3693,11 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
3693
3693
|
`).filter(d=>d.trim()==="").length;p.debug("INK_RENDER",`STATIC output: ${a.length} lines, ${r.length} chars, endsWithNewline=${r.endsWith(`
|
|
3694
3694
|
`)}, blankLines=${c}, first80="${l.slice(0,80).replace(/\n/g,"\\n")}"`);let u=this.terminalAdapter.capabilities.synchronizedUpdate;u&&this.terminalAdapter.beginSyncUpdate(),this.renderer.clear(),this.options.stdout.write(r),this.renderer.render(t),u&&this.terminalAdapter.endSyncUpdate();}else t!==this.lastOutput?(p.debug("INK_RENDER",`DYNAMIC only: output changed, ${t.length} chars, outputLines=${t.split(`
|
|
3695
3695
|
`).length}, endsWithNewline=${t.endsWith(`
|
|
3696
|
-
`)}`),this.renderer.render(t)):p.debug("INK_RENDER","SKIP: output unchanged");this.lastOutput=t,this.lastOutputHeight=n,p.debug("INK_RENDER","onRender completed");};render(e){let t=A.createElement(zr.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},A.createElement(Oi,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount,onResize:this.handleResizeFromApp},e));Yn.updateContainerSync(t,this.container,null,gv),Yn.flushSyncWork();}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.lastOutput);return}if(bo){this.options.stdout.write(e);return}this.renderer.clear(),this.options.stdout.write(e),this.renderer.render(this.lastOutput);}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.lastOutput);return}if(bo){this.options.stderr.write(e);return}this.renderer.clear(),this.options.stderr.write(e),this.renderer.render(this.lastOutput);}}unmount(e){if(!this.isUnmounted){this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize();try{
|
|
3696
|
+
`)}`),this.renderer.render(t)):p.debug("INK_RENDER","SKIP: output unchanged");this.lastOutput=t,this.lastOutputHeight=n,p.debug("INK_RENDER","onRender completed");};render(e){let t=A.createElement(zr.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},A.createElement(Oi,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount,onResize:this.handleResizeFromApp},e));Yn.updateContainerSync(t,this.container,null,gv),Yn.flushSyncWork();}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.lastOutput);return}if(bo){this.options.stdout.write(e);return}this.renderer.clear(),this.options.stdout.write(e),this.renderer.render(this.lastOutput);}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.lastOutput);return}if(bo){this.options.stderr.write(e);return}this.renderer.clear(),this.options.stderr.write(e),this.renderer.render(this.lastOutput);}}unmount(e){if(!this.isUnmounted){this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize();try{Ts().setMouseWheelCallback(null);}catch{}typeof this.unsubscribeTerminalResize=="function"&&this.unsubscribeTerminalResize(),this.terminalAdapter.reset(),bo?this.options.stdout.write(this.lastOutput+`
|
|
3697
3697
|
`):!this.options.debug&&!this.useAltScreen&&this.renderer.done(),this.useAltScreen&&this.options.stdout.write(`
|
|
3698
3698
|
`),this.isUnmounted=true,Yn.updateContainerSync(null,this.container,null,gv),Yn.flushSyncWork(),uo.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise();}}async waitUntilExit(){return this.exitPromise||=new Promise((e,t)=>{this.resolveExitPromise=e,this.rejectExitPromise=t;}),this.exitPromise}clear(){!bo&&!this.options.debug&&this.renderer.clear();}wrapText(e,t){if(t<=0)return e;let n=e.split(`
|
|
3699
3699
|
`),r=[];for(let o of n){let i=this.wrapLine(o,t);r.push(...i);}return r.join(`
|
|
3700
|
-
`)}wrapLine(e,t){if(_l(
|
|
3700
|
+
`)}wrapLine(e,t){if(_l(ks(e))<=t)return [e];let r=[],o="",i=0,a=false,l="";for(let c=0;c<e.length;c++){let u=e[c];if(u==="\x1B"){a=true,l=u;continue}if(a){l+=u,u==="m"&&(a=false,o+=l,l="");continue}let d=_l(u);i+d>t?(r.push(o),o=u,i=d):(o+=u,i+=d);}return o&&r.push(o),r}patchConsole(){this.options.debug||(this.restoreConsole=DA((e,t)=>{e==="stdout"&&this.writeToStdout(t),e==="stderr"&&(t.startsWith("The above error occurred")||this.writeToStderr(t));}));}};var OA=(s,e)=>{let t={stdout:$t.stdout,stdin:$t.stdin,stderr:$t.stderr,debug:false,exitOnCtrlC:true,patchConsole:true,maxFps:30,incrementalRendering:true,useAltScreen:false,...BA(e)},n=FA(t.stdout,()=>new Bi(t));return n.render(s),{rerender:n.render,unmount(){n.unmount();},waitUntilExit:n.waitUntilExit,cleanup:()=>uo.delete(t.stdout),clear:n.clear}},vo=OA,BA=(s={})=>s instanceof Stream?{stdout:s,stdin:$t.stdin}:s,FA=(s,e)=>{let t=uo.get(s);return t||(t=e(),uo.set(s,t)),t};function Jl(s){let{items:e,children:t,style:n}=s,[r,o]=useState(0),i=e.length<r?e.length:r,a=useMemo(()=>e.slice(i),[i,e]);useLayoutEffect(()=>{(e.length<r||e.length>r)&&o(e.length);},[e.length,r]);let l=useMemo(()=>a.map((u,d)=>t(u,i+d)),[a,t,i]),c=useMemo(()=>({position:"absolute",flexDirection:"column",...n}),[n]);return A.createElement("ink-box",{internal_static:true,style:c},l)}var zA=/^(?:\x1b)([a-zA-Z0-9])$/,HA=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,hv={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},fv=[...Object.values(hv),"backspace"],qA=s=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(s),KA=s=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(s),JA=(s="")=>{let e;Buffer$1.isBuffer(s)?s[0]>127&&s[1]===void 0?(s[0]-=128,s="\x1B"+String(s)):s=String(s):s!==void 0&&typeof s!="string"?s=String(s):s||(s="");let t={name:"",ctrl:false,meta:false,shift:false,option:false,sequence:s,raw:s};if(t.sequence=t.sequence||s||t.name,s==="\r")t.raw=void 0,t.name="return";else if(s===`
|
|
3701
3701
|
`)t.name="enter";else if(s===" ")t.name="tab";else if(s==="\b"||s==="\x1B\b")t.name="backspace",t.meta=s.charAt(0)==="\x1B";else if(s==="\x7F"||s==="\x1B\x7F")t.name="delete",t.meta=s.charAt(0)==="\x1B";else if(s==="\x1B"||s==="\x1B\x1B")t.name="escape",t.meta=s.length===2;else if(s===" "||s==="\x1B ")t.name="space",t.meta=s.length===2;else if(s.length===1&&s<="")t.name=String.fromCharCode(s.charCodeAt(0)+97-1),t.ctrl=true;else if(s.length===1&&s>="0"&&s<="9")t.name="number";else if(s.length===1&&s>="a"&&s<="z")t.name=s;else if(s.length===1&&s>="A"&&s<="Z")t.name=s.toLowerCase(),t.shift=true;else if(e=zA.exec(s))t.meta=true,t.shift=/^[A-Z]$/.test(e[1]);else if(e=HA.exec(s)){let n=[...s];n[0]==="\x1B"&&n[1]==="\x1B"&&(t.option=true);let r=[e[1],e[2],e[4],e[6]].filter(Boolean).join(""),o=(e[3]||e[5]||1)-1;t.ctrl=!!(o&4),t.meta=!!(o&10),t.shift=!!(o&1),t.code=r,t.name=hv[r],t.shift=qA(r)||t.shift,t.ctrl=KA(r)||t.ctrl;}return t},yv=JA;var YA=()=>useContext(po),Vl=YA;te();var XA=(s,e={})=>{let{stdin:t,setRawMode:n,internal_exitOnCtrlC:r,internal_eventEmitter:o}=Vl();useEffect(()=>{if(e.isActive!==false)return ()=>{}},[e.isActive,n]),useEffect(()=>{if(e.isActive===false)return;let i=a=>{let l=Date.now();de("INPUT",`>>> handleData START, data.length=${a.length}`);let c=a==="\r"||a===`
|
|
3702
3702
|
`||a===`\r
|
|
3703
3703
|
`;if(a.length>1&&(a.includes(`
|
|
@@ -3754,8 +3754,8 @@ Or: .neox/skills/<name>/SKILL.md`,selectToExecute:"Select skill to execute",buil
|
|
|
3754
3754
|
`+s.slice(N);u(Y);return}if(ne.return){if(T&&r.length>0){let Y=r[E];C(0),S(false),d(Y);return}process.env.CLI_DEBUG==="1"&&p.debug("INPUT_LINE","Enter pressed - submitting",{valueLength:s.length,value:s.substring(0,50),disabled:t}),d(),C(0),S(false);return}if(T&&r.length>0){if(ne.upArrow){v(Y=>Y>0?Y-1:r.length-1);return}if(ne.downArrow){v(Y=>Y<r.length-1?Y+1:0);return}}if(ne.upArrow){if($===0)m(),C(0);else {let Y=s.lastIndexOf(`
|
|
3755
3755
|
`,N-F-2)+1,Ae=z[$-1].length,ge=Math.min(F,Ae),_e=Y+ge;C(s.length-_e);}return}if(ne.downArrow){if($===z.length-1)g(),C(0);else {s.lastIndexOf(`
|
|
3756
3756
|
`,N-1)+1;let Ae=s.indexOf(`
|
|
3757
|
-
`,N)+1,ge=z[$+1].length,_e=Math.min(F,ge),fe=Ae+_e;C(s.length-fe);}return}if(ne.leftArrow){C(Math.min(b+1,s.length));return}if(ne.rightArrow){C(Math.max(b-1,0));return}if(ne.home||ne.ctrl&&X==="a"){C(s.length);return}if(ne.end||ne.ctrl&&X==="e"){C(0);return}if(ne.backspace||ne.delete){if(b===s.length){s.length===0&&a>0&&c&&c();return}let Y=N-1,Ae=s.slice(0,Y)+s.slice(Y+1);u(Ae);return}if(!ne.ctrl&&!ne.meta&&X){let Y=e$(X);if(!Y){process.env.CLI_DEBUG==="1"&&p.debug("INPUT_LINE","Dropped control/escape-only input chunk");return}let Ae=s.slice(0,N)+Y+s.slice(N);u(Ae);return}}}},{isActive:V});let Pe=!s,oe=()=>Pe?A.createElement(_,null,A.createElement(f,{color:"#9B8FD9",bold:true},"> "),A.createElement(f,{inverse:true}," "),A.createElement(f,{dimColor:true},e)):z.map((X,ne)=>{let Y=ne===$,Ae=z.slice(0,ne).reduce((pe,J)=>pe+J.length+1,0);Ae+X.length;let _e=-1;Y&&(_e=N-Ae);let fe=ne===0?"> ":"\u2502 ",Se="#9B8FD9";if(t)return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,{dimColor:true},X));if(Y&&_e>=0){let pe=X.slice(0,_e),J=X[_e]||" ",he=X.slice(_e+1);return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,null,pe,A.createElement(f,{inverse:true},J),he))}return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,null,X))});return A.createElement(_,{flexDirection:"column"},q&&!t&&A.createElement(_,{marginBottom:0},A.createElement(f,{dimColor:true}," \u21B5 ",G().ui.shiftEnterNewline," \u2502 Enter ",G().ui.enterToSend," \u2502 ",lt(G().ui.lineCount,{count:z.length}))),A.createElement(_,{flexDirection:"column"},oe()))};var t$=({isRunning:s,statusText:e="",tokenStats:t,streamingTokens:n=0,streamingStartTime:r=null,provider:o,model:i,onContextMenuToggle:a,agentContextStats:l=[],runMode:c="single",networkStats:u,cooperateStats:d})=>{let{columns:m=80}=Qt(),g=l.filter(J=>J.agentId!=="Main"),h=g.some(J=>J.status==="running"||J.status==="waiting"),y=s||c==="single"&&h,[b,C]=useState(null),[T,S]=useState(0),[E,v]=useState(0),[I,D]=useState(0),[O,k]=useState(0);useEffect(()=>{y?(C(r||Date.now()),S(0)):!y&&(t?.output||0)===0&&(C(null),S(0));},[y,r,t?.output]),useEffect(()=>{if(!y||b===null)return;let J=setInterval(()=>{S(Math.floor((Date.now()-b)/1e3));},500);return ()=>clearInterval(J)},[y,b]),useEffect(()=>{if(!y||n===0){v(0);return}let J=Math.floor(n);if(E===J)return;let he=J-E,K=Math.min(Math.abs(he),20),re=he/K,ve=setInterval(()=>{v(Be=>{let ce=Be+re;return Math.abs(ce-J)<1?J:ce});},50);return ()=>clearInterval(ve)},[n,y,E]),useEffect(()=>{let J=t?.output||0;if(I===J)return;let he=J-I;if(Math.abs(he)>100){D(J);return}let K=Math.max(Math.ceil(Math.abs(he)/10),3),re=he/K,ve=setInterval(()=>{D(Be=>{let ce=Be+re;return Math.abs(ce-J)<1?J:ce});},10);return ()=>clearInterval(ve)},[t?.output,I]),useEffect(()=>{if(!y){k(0);return}let he=(e||"Thinking...").length,K=setInterval(()=>{k(re=>(re+1)%(he+3));},80);return ()=>clearInterval(K)},[y,e]);let M=()=>{if(T<60)return `${T}s`;let J=Math.floor(T/60),he=T%60;return `${J}m ${he}s`},N=J=>J>=1e6?(J/1e6).toFixed(1)+"M":J>=1e3?(J/1e3).toFixed(1)+"K":J.toString(),x=t?.contextWindow||0,B=t?.tokensUsedForContext||t?.total||0,H=t?.pressure||0,W=Math.round(H*100),U=()=>H>.8?"red":H>.5?"yellow":"#B19CD9",z=J=>J.split("").map((K,re)=>{let se=re-O;return se>=0&&se<2?A.createElement(f,{key:re,color:"white",bold:true},K):se>=-1&&se<0?A.createElement(f,{key:re,color:"cyanBright"},K):A.createElement(f,{key:re,color:"cyan"},K)}),q=(J,he)=>{if(!J||_l(J)<=he)return J;let re=0,se=J.length,ve=J;for(;re<se;){let Be=Math.floor((re+se+1)/2),ce=J.slice(0,Be)+"...";_l(ce)<=he?(ve=ce,re=Be):se=Be-1;}return ve},P=(J,he)=>{if(!he||_l(J)<=he)return z(J);let K=q(J,he);return A.createElement(f,{color:"cyan"},K)},F=(()=>{switch(c){case "single":return {icon:"\u25C6",label:"Single",color:"cyan"};case "assistant":return {icon:"\u25C8",label:"Assistant",color:"magenta"};case "cooperate":return {icon:"\u25C7",label:"Cooperate",color:"yellow"};case "network":return {icon:"\u25C9",label:"Network",color:"blue"};default:return {icon:"\u25C6",label:"Single",color:"cyan"}}})(),V=e&&(e.includes("Streaming:")||e.toLowerCase().includes("stream")),Z=e?.match(/Streaming:\s*(\w+)/),ae=Z?Z[1]:null,be=l.length>0,Pe=l.find(J=>J.agentId==="Main"),oe=g.find(J=>J.status==="running")||g.find(J=>J.status==="waiting"),X=g.filter(J=>J.status==="running");X.length>1?`${X.length} agents running: ${X.map(J=>`${J.agentLabel}\u2192${J.currentTask||"..."}`).join(", ")}`:oe?`${oe.agentLabel}: ${oe.currentTask||(oe.status==="waiting"?"Waiting...":"Running...")}`:null;let Y=()=>g.length===0?null:A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"magenta"},g.length),A.createElement(f,{dimColor:true}," workers")),Ae=(J,he)=>{let K=J.status||"idle",re=K==="running",ve=(ye=>{switch(ye?.toLowerCase()){case "scout":return "cyan";case "explore":return "cyan";case "worker":return "green";case "task":return "green";case "verifier":return "yellow";case "compressor":return "blue";case "coordinator":return "magenta";default:return "magenta"}})(J.workerRole),Be=J.workerRole?J.workerRole.charAt(0).toUpperCase()+J.workerRole.slice(1):J.agentLabel.replace(/-\d+$/,""),ce=m>140?48:m>110?32:20,L=J.workerTask||J.currentTask||"",ee=L.length>ce?L.slice(0,ce-3)+"...":L,me=J.toolUseCount||0,le=J.input+J.output,we=J.elapsedMs?Math.round(J.elapsedMs/1e3):0,We=re?A.createElement(si,{type:"dots"}):K==="waiting"?A.createElement(f,{color:"yellow"},"\u25D0"):K==="completed"?A.createElement(f,{color:"blue"},"\u2713"):K==="error"?A.createElement(f,{color:"red"},"\u2717"):A.createElement(f,{color:"gray"},"\u25CB");return A.createElement(_,{key:J.agentId,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{dimColor:true}," ",he?"\u2514\u2500 ":"\u251C\u2500 "),We,A.createElement(f,null," "),A.createElement(f,{color:ve,bold:true},Be),ee&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,null,ee),A.createElement(f,{dimColor:true},")"))),A.createElement(_,null,me>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"\xB7 "),A.createElement(f,{color:"cyan"},me),A.createElement(f,{dimColor:true}," tools")),le>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \xB7 "),A.createElement(f,{color:"#B19CD9"},N(le)),A.createElement(f,{dimColor:true}," tok")),we>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \xB7 "),A.createElement(f,{color:"yellow"},we,"s"))))};if(c==="network"){let J=u?.teamSize||0,he=u?.activeAgents||0,K=u?.currentPhase||"executing",re=u?.currentAgent,se=u?.totalInputTokens||t?.input||0,ve=u?.totalOutputTokens||t?.output||0,Be=u?.completedTasks,ce=u?.totalTasks,ee=(()=>{switch(K){case "analyzing":return {text:"Analyzing",color:"cyan"};case "bidding":return {text:"Bidding",color:"yellow"};case "negotiating":return {text:"Negotiating",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "reviewing":return {text:"Reviewing",color:"blue"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Running",color:"cyan"}}})();return A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"blue"},"[N]"),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"blue"},J),A.createElement(f,{dimColor:true}," agents"),he>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"green"},he),A.createElement(f,{dimColor:true}," active)")),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),re?A.createElement(A.Fragment,null,z(re),A.createElement(f,{dimColor:true},": "),A.createElement(f,{color:ee.color},ee.text)):A.createElement(f,{color:ee.color},ee.text),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,ve>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(_,null,Be!==void 0&&ce!==void 0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"tasks "),A.createElement(f,{color:"#B19CD9"},Be),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},ce),A.createElement(f,{dimColor:true}," \u2502 ")),s&&E>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:"green"},"\u2193 ",Math.floor(E)),A.createElement(f,{dimColor:true}," \u2502 ")),A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"#9B8FD9"},N(se)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"#6FCF97"},N(ve))))}if(c==="cooperate"&&d){let{models:J,phase:he,totalInputTokens:K,totalOutputTokens:re,ccbResult:se,dagProgress:ve}=d,ce=(()=>{switch(he){case "analyzing":return {text:"Analyzing",color:"cyan"};case "ccb_review":return {text:"CCB Review",color:"yellow"};case "dag_planning":return {text:"Planning",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Running",color:"cyan"}}})(),L=()=>J.length===0?null:J.map((me,le)=>{let we=me.status==="running"?"green":me.status==="completed"?"blue":"gray";return A.createElement(A.Fragment,{key:le},le>0&&A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:we},me.shortName))}),ee=J.filter(me=>me.status==="completed").length;return A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"yellow"},"[C]"),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),e?z(e):A.createElement(f,{color:ce.color},ce.text),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")")),E>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ~"),A.createElement(f,{color:"magenta"},Math.floor(E)),A.createElement(f,{dimColor:true}," tok"))):A.createElement(_,null,re>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(_,null,J.length>0&&A.createElement(A.Fragment,null,L(),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:"#B19CD9"},ee),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},J.length),A.createElement(f,{dimColor:true}," \u2502 ")),se&&A.createElement(A.Fragment,null,A.createElement(f,{color:se.approved?"green":"red"},se.approved?"\u2713":"\u2717"),A.createElement(f,{dimColor:true}," CCB "),A.createElement(f,{color:"#B19CD9"},se.approveCount),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},se.totalCount),A.createElement(f,{dimColor:true}," \u2502 ")),ve&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"DAG "),A.createElement(f,{color:"#B19CD9"},ve.completedNodes),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},ve.totalNodes),A.createElement(f,{dimColor:true}," \u2502 ")),A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(K||t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(re||t?.output||0))))}if((c==="assistant"||c==="cooperate")&&be){let J=Pe?.pressure||0,he=Math.round(J*100),K=()=>J>.8?"red":J>.5?"yellow":"green",re=g.length>0,se=Pe?.agentLabel||"Main";return A.createElement(_,{flexDirection:"column"},A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:F.color},F.icon),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{bold:true,color:"#9B8FD9"},"\u25CF"),A.createElement(f,null," "),V&&ae?A.createElement(A.Fragment,null,z(`Streaming: ${ae}`)):z(e||"Thinking..."),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,(Pe?.output||t?.output||0)>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"cyan",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"cyan"},"Ready")))),A.createElement(_,null,Pe?A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{dimColor:true},se,": "),A.createElement(f,{color:"cyan"},N(Pe.input)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"green"},N(Pe.output)),(Pe.cacheCreationTokens||Pe.cacheReadTokens)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," cache-w "),A.createElement(f,{color:"magenta"},N(Pe.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," cache-r "),A.createElement(f,{color:"blue"},N(Pe.cacheReadTokens||0))),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"#B19CD9"},N(Pe.tokensUsedForContext)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},N(Pe.contextWindow)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:K()},he,"%"),A.createElement(f,{dimColor:true},")"),Y()):A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(t?.output||0)),Y()))),re&&g.map((ve,Be)=>Ae(ve,Be===g.length-1)))}let ge=c==="single"&&g.length>0,_e=m<100,fe=m<80,pe=(()=>{if(fe)return Math.max(10,m-40);let J=11;if(s&&T>0&&!fe){let re=` (${M()})`;J+=_l(re);}let he=_e?35:80,K=m-J-he;return Math.max(15,K)})();return fe?A.createElement(_,{flexDirection:"column"},A.createElement(_,null,s?A.createElement(A.Fragment,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{color:"cyan"},q(e||"Thinking...",m-5))):A.createElement(A.Fragment,null,A.createElement(f,{color:"green"},"\u2713"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Done"))),x>0&&A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(t?.output||0)),A.createElement(f,{dimColor:true}," ctx "),A.createElement(f,{color:U()},W,"%"))):A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(_,{justifyContent:"space-between",width:"100%"},A.createElement(_,null,!_e&&A.createElement(A.Fragment,null,A.createElement(f,{color:F.color},F.icon),A.createElement(f,{dimColor:true}," \u2502 ")),y?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{bold:true,color:"#9B8FD9"},"\u25CF"),A.createElement(f,null," "),V&&ae?A.createElement(A.Fragment,null,P(`Streaming: ${ae}`,pe)):P(!s&&h?`Sub-agents running... (${g.length})`:e||"Thinking...",pe),T>0&&!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"yellow"},M()),m>=100&&A.createElement(f,{dimColor:true}," \u2022 esc"),E>0&&m>=120&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2022 "),A.createElement(f,{color:"green"},"\u2193 ",Math.floor(E)," token")),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,(t?.output||0)>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"#6FCF97",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"#6FCF97"},"Complete!"),T>0&&!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(_,null,x>0?A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"#9B8FD9"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"#6FCF97"},N(t?.output||0)),(t?.cacheCreationTokens||t?.cacheReadTokens)&&m>=120&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," c-w "),A.createElement(f,{color:"magenta"},N(t.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," c-r "),A.createElement(f,{color:"blue"},N(t.cacheReadTokens||0))),!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2502 ctx "),A.createElement(f,{color:"#B19CD9"},N(B)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},N(x))),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:U()},W,"%"),A.createElement(f,{dimColor:true},")")):A.createElement(f,{dimColor:true},"ctx: --"))),ge&&g.map((J,he)=>Ae(J,he===g.length-1)))},n$=(s,e)=>!s&&!e?true:!s||!e||s.length!==e.length?false:s.every((t,n)=>{let r=e[n];return t.agentId===r.agentId&&t.input===r.input&&t.output===r.output&&t.pressure===r.pressure&&t.tokensUsedForContext===r.tokensUsedForContext&&t.status===r.status&&t.currentTask===r.currentTask&&t.contextWindow===r.contextWindow&&t.cacheCreationTokens===r.cacheCreationTokens&&t.cacheReadTokens===r.cacheReadTokens}),lx=A.memo(t$,(s,e)=>s.isRunning===e.isRunning&&s.statusText===e.statusText&&s.streamingTokens===e.streamingTokens&&s.streamingStartTime===e.streamingStartTime&&s.tokenStats?.input===e.tokenStats?.input&&s.tokenStats?.output===e.tokenStats?.output&&s.tokenStats?.total===e.tokenStats?.total&&s.tokenStats?.pressure===e.tokenStats?.pressure&&s.tokenStats?.cacheCreationTokens===e.tokenStats?.cacheCreationTokens&&s.tokenStats?.cacheReadTokens===e.tokenStats?.cacheReadTokens&&s.runMode===e.runMode&&s.networkStats?.teamSize===e.networkStats?.teamSize&&s.networkStats?.activeAgents===e.networkStats?.activeAgents&&s.networkStats?.currentPhase===e.networkStats?.currentPhase&&s.networkStats?.currentAgent===e.networkStats?.currentAgent&&s.networkStats?.totalInputTokens===e.networkStats?.totalInputTokens&&s.networkStats?.totalOutputTokens===e.networkStats?.totalOutputTokens&&s.networkStats?.completedTasks===e.networkStats?.completedTasks&&s.networkStats?.totalTasks===e.networkStats?.totalTasks&&s.cooperateStats?.phase===e.cooperateStats?.phase&&s.cooperateStats?.totalInputTokens===e.cooperateStats?.totalInputTokens&&s.cooperateStats?.totalOutputTokens===e.cooperateStats?.totalOutputTokens&&s.cooperateStats?.ccbResult?.approved===e.cooperateStats?.ccbResult?.approved&&s.cooperateStats?.ccbResult?.approveCount===e.cooperateStats?.ccbResult?.approveCount&&s.cooperateStats?.dagProgress?.completedNodes===e.cooperateStats?.dagProgress?.completedNodes&&s.cooperateStats?.models?.length===e.cooperateStats?.models?.length&&n$(s.agentContextStats,e.agentContextStats));var cx=({isRunning:s,hasInput:e,customHints:t,menuActive:n=false,thinkingEnabled:r=true,accumulatedRunTime:o=0,provider:i,model:a,runMode:l="single",hasBgTasks:c=false})=>{let{columns:u=80}=Qt(),[d,m]=useState(o);useEffect(()=>{if(!s){m(o);return}m(o);let S=setInterval(()=>{m(E=>E+1);},1e3);return ()=>clearInterval(S)},[s,o]);let g=()=>{if(d<60)return `${d}s`;let S=Math.floor(d/60),E=d%60;if(S<60)return `${S}m ${E}s`;let v=Math.floor(S/60),I=S%60;return `${v}h ${I}m`},h=()=>{if(!i||!a)return "";let S=i,E=i.indexOf(" (");E>0&&(S=i.substring(0,E));let v=a.length>35?a.substring(0,32)+"...":a;return `${S}/${v}`},b=(()=>{switch(l){case "single":return {label:"SINGLE"};case "assistant":return {label:"ASSISTANT"};case "cooperate":return {label:"COOPERATE"};case "network":return {label:"NETWORK"};default:return {label:"SINGLE"}}})(),C=u<100,T=u<80;return t?A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{color:ue.functional.warning},t)):n?null:T?A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{color:ue.text.secondary},"? shortcuts"),A.createElement(_,null,d>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.cyan},g()),A.createElement(f,{color:ue.text.dim}," \u2022 ")),A.createElement(f,{color:ue.brand.purple},b.label))):A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,c?A.createElement(f,{color:ue.brand.cyan},"tab \u21B9 tasks"):A.createElement(f,{color:ue.text.secondary},"? for shortcuts"),d>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.text.dim}," \u2022 "),A.createElement(f,{color:ue.brand.cyan},g()),!C&&A.createElement(f,{color:ue.text.dim}," session"))),A.createElement(_,null,!C&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.purple,bold:true},"["),A.createElement(f,{color:ue.brand.purple},b.label),A.createElement(f,{color:ue.brand.purple,bold:true},"]"),A.createElement(f,{color:ue.text.dim}," \u2022 ")),h()&&!C&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.magenta,bold:true},"["),A.createElement(f,{color:ue.brand.magenta},h()),A.createElement(f,{color:ue.brand.magenta,bold:true},"]"),A.createElement(f,{color:ue.text.dim}," \u2022 ")),r?A.createElement(f,{color:ue.brand.cyan},"Thinking on"):A.createElement(f,{color:ue.text.dim},"Thinking off")))};var ux=({attachments:s,onRemove:e})=>s.length===0?null:A.createElement(_,{flexDirection:"column",paddingLeft:2,marginBottom:1},A.createElement(f,{color:"magenta",dimColor:true},"Attachments:"),s.map((t,n)=>{let r=t.name||t.path?.split("/").pop()||"unknown",o=t.type?.startsWith("image/")||t.mediaType?.startsWith("image/")||r.match(/\.(png|jpg|jpeg|gif|webp)$/i);return A.createElement(_,{key:n},A.createElement(f,{color:"magenta"},o?"\u{1F4CE} \u{1F5BC}\uFE0F ":"\u{1F4CE} ",r),e&&A.createElement(f,{color:"gray",dimColor:true}," (press \u232B Backspace to remove)"))}));var dx=({planSteps:s,isRunning:e=false})=>{let t=s.find(r=>r.status==="pending");if(!t||!e)return null;let n=t.step.length>50?t.step.substring(0,47)+"...":t.step;return A.createElement(_,{paddingLeft:3},A.createElement(f,{dimColor:true},"\u2514\u2500 "),A.createElement(f,{color:"gray"},"\u25CB"),A.createElement(f,{dimColor:true}," Next: "),A.createElement(f,{color:"cyan"},n))};var px=({contextWindow:s,tokensUsed:e,systemTokens:t=0,userTokens:n=0,assistantTokens:r=0,toolCallTokens:o=0,toolResultTokens:i=0,compactionThreshold:a=.8,compressionMode:l="sync",agentContextStats:c=[],runMode:u="single",networkStats:d,onClose:m})=>{let g=D=>D>=1e6?`${(D/1e6).toFixed(1)}M`:D>=1e3?`${(D/1e3).toFixed(1)}k`:D.toString(),h=D=>D>.8?"red":D>.5?"yellow":"green",y=({color:D,label:O,tokens:k,total:M,indent:N=2})=>{let x=M>0?(k/M*100).toFixed(2):"0.00";return A.createElement(_,{marginLeft:N},A.createElement(f,{color:D},"\u25A0"),A.createElement(f,null," ",O,": "),A.createElement(f,{color:"yellow"},g(k)),A.createElement(f,{dimColor:true}," tokens (",x,"%)"))},b=({stat:D,indent:O=2})=>{let k=D.cacheCreationTokens||0,M=D.cacheReadTokens||0,N=D.contextWindow||2e5,x=D.tokensUsedForContext||0,B=N>0?x/N:0,H=Math.round(B*100);return A.createElement(_,{marginLeft:O,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"magenta"},D.agentLabel||D.agentId),D.status&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:D.status==="running"?"green":D.status==="error"?"red":"gray"},D.status==="running"?"\u25CF":D.status==="completed"?"\u2713":D.status==="error"?"\u2717":"\u25CB"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},g(D.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},g(D.output)),(k>0||M>0)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2502 cw "),A.createElement(f,{color:"blue"},g(k)),A.createElement(f,{dimColor:true}," cr "),A.createElement(f,{color:"blue"},g(M))),A.createElement(f,{dimColor:true}," \u2502 ctx "),A.createElement(f,{color:"yellow"},g(x)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},g(N)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:h(B)},H,"%"),A.createElement(f,{dimColor:true},")")))},C=({stat:D,indent:O=2})=>{let k=D.contextWindow>0?D.tokensUsedForContext/D.contextWindow:0,M=Math.round(k*100);return A.createElement(_,{marginLeft:O,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"magenta"},D.agentLabel||D.agentId),D.status&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:D.status==="running"?"green":D.status==="error"?"red":"gray"},D.status==="running"?"\u25CF":D.status==="completed"?"\u2713":D.status==="error"?"\u2717":"\u25CB"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},g(D.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},g(D.output)),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"yellow"},g(D.tokensUsedForContext)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},g(D.contextWindow)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:h(k)},M,"%"),A.createElement(f,{dimColor:true},")")))};if(u==="network"){let D=d?.teamSize||c.length||0,O=d?.activeAgents||0,k=d?.totalInputTokens||0,M=d?.totalOutputTokens||0,N=k+M,B=(H=>{switch(H){case "analyzing":return {text:"Analyzing",color:"cyan"};case "bidding":return {text:"Bidding",color:"yellow"};case "negotiating":return {text:"Negotiating",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "reviewing":return {text:"Reviewing",color:"blue"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Idle",color:"gray"}}})(d?.currentPhase);return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:"blue",paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:"blue"},"[N]"),A.createElement(f,{bold:true,color:"blue"}," Network Context Overview")),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Team Size: "),A.createElement(f,{color:"blue",bold:true},D),A.createElement(f,{dimColor:true}," agents"),O>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"green"},O),A.createElement(f,{dimColor:true}," active)"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"Current Phase: "),A.createElement(f,{color:B.color,bold:true},B.text),d?.currentAgent&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," - "),A.createElement(f,{color:"cyan"},d.currentAgent))),d?.completedTasks!==void 0&&d?.totalTasks!==void 0&&A.createElement(_,null,A.createElement(f,{dimColor:true},"Tasks: "),A.createElement(f,{color:"yellow"},d.completedTasks),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},d.totalTasks),A.createElement(f,{dimColor:true}," completed"))),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(f,{bold:true,dimColor:true},"Total Token Usage:"),A.createElement(_,{marginLeft:2},A.createElement(f,{dimColor:true},"Input: "),A.createElement(f,{color:"cyan"},g(k)),A.createElement(f,{dimColor:true}," \u2502 Output: "),A.createElement(f,{color:"green"},g(M)),A.createElement(f,{dimColor:true}," \u2502 Total: "),A.createElement(f,{color:"yellow"},g(N)))),c.length>0&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Agent Context Details:"),c.map(H=>A.createElement(b,{key:H.agentId,stat:H})),A.createElement(_,{marginTop:1,marginLeft:2},A.createElement(f,{dimColor:true},"Total Tokens: "),A.createElement(f,{color:"yellow"},g(c.reduce((H,W)=>H+W.input+W.output,0))),A.createElement(f,{dimColor:true}," across "),A.createElement(f,{color:"cyan"},c.length),A.createElement(f,{dimColor:true}," agents"))),c.length===0&&A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true,italic:true},"Agent context details not available yet.")))}if((u==="assistant"||u==="cooperate")&&c.length>0){let D=c.find(W=>W.agentId==="Main"),O=c.filter(W=>W.agentId!=="Main"&&W.agentId!=="supervisor"),k=c.reduce((W,U)=>W+U.tokensUsedForContext,0),M=c.reduce((W,U)=>W+U.input,0),N=c.reduce((W,U)=>W+U.output,0),x=u==="assistant"?"[A]":"[C]",B=u==="assistant"?"Assistant":"Cooperate",H=u==="assistant"?"magenta":"yellow";return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:H,paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:H},x),A.createElement(f,{bold:true,color:H}," ",B," Context Overview")),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Total Agents: "),A.createElement(f,{color:H,bold:true},c.length),O.length>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," (1 Main + "),A.createElement(f,{color:"cyan"},O.length),A.createElement(f,{dimColor:true}," Workers)"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"Total Tokens: "),A.createElement(f,{color:"cyan"},g(M)),A.createElement(f,{dimColor:true}," in / "),A.createElement(f,{color:"green"},g(N)),A.createElement(f,{dimColor:true}," out"))),D&&A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(f,{bold:true,dimColor:true},"Main Agent:"),A.createElement(C,{stat:D})),O.length>0&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Worker Agents (",O.length,"):"),O.map(W=>A.createElement(C,{key:W.agentId,stat:W}))),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},"Combined Context: "),A.createElement(f,{color:"yellow"},g(k)),A.createElement(f,{dimColor:true}," tokens")))}let T=s-e,S=s>0?e/s:0,E=Math.floor(s*a),v=Math.max(0,E-e),I=Math.round(S*100);return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(f,{bold:true,color:"cyan"},"Context Window Details"),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Total: "),A.createElement(f,{color:"yellow"},g(e)),A.createElement(f,{dimColor:true}," / "),A.createElement(f,{color:"yellow"},g(s)),A.createElement(f,{dimColor:true}," tokens ("),A.createElement(f,{color:h(S),bold:true},I,"%"),A.createElement(f,{dimColor:true},")")),A.createElement(_,null,A.createElement(f,{dimColor:true},"Remaining: "),A.createElement(f,{color:"green"},g(T)),A.createElement(f,{dimColor:true}," tokens"))),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Compression: "),A.createElement(f,{color:l==="sync"?"green":"yellow"},l==="sync"?"Sync LLM":"Async LLM"),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"cyan"},Math.round(a*100),"%"),A.createElement(f,{dimColor:true}," threshold)"))),v>0?A.createElement(_,{marginBottom:1},A.createElement(f,{dimColor:true},"Compaction in: "),A.createElement(f,{color:"cyan"},g(v)),A.createElement(f,{dimColor:true}," tokens")):A.createElement(_,{marginBottom:1},A.createElement(f,{color:"red",bold:true},"\u26A0\uFE0F Compaction threshold reached!")),A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Context Breakdown:"),A.createElement(y,{color:"magenta",label:"System",tokens:t,total:e}),A.createElement(y,{color:"cyan",label:"User",tokens:n,total:e}),A.createElement(y,{color:"green",label:"Assistant",tokens:r,total:e}),A.createElement(y,{color:"blue",label:"Tool Calls",tokens:o,total:e}),A.createElement(y,{color:"yellow",label:"Tool Results",tokens:i,total:e}),A.createElement(_,{marginTop:1,marginLeft:2},A.createElement(f,{dimColor:true},"Usage: "),A.createElement(f,{color:h(S)},"\u2588".repeat(Math.floor(S*20))),A.createElement(f,{dimColor:true},"\u2591".repeat(20-Math.floor(S*20))))))};function hx(){let s=G(),e=s.slashMenu.categories,t=s.slashMenu.commands;return [{name:"/help",description:t.help,category:e.basic},{name:"/clear",description:t.clear,category:e.basic},{name:"/exit",description:t.exit,category:e.basic},{name:"/mode",description:t.mode,category:e.mode,hasSubMenu:true},{name:"/run",description:t.run,category:e.mode,hasSubMenu:true},{name:"/runconfig",description:t.runconfig,category:e.mode,hasSubMenu:true},{name:"/thinking",description:t.thinking,category:e.mode,hasSubMenu:true},{name:"/approval",description:t.approval,category:e.mode,hasSubMenu:true},{name:"/sandbox",description:t.sandbox,category:e.mode,hasSubMenu:true},{name:"/provider",description:t.provider,category:e.ai,hasSubMenu:true},{name:"/model",description:t.model,category:e.ai,hasSubMenu:true},{name:"/sessions",description:t.sessions,category:e.session},{name:"/session",description:t.session,category:e.session,hasSubMenu:true},{name:"/session-new",description:t.sessionNew,category:e.session},{name:"/session-info",description:t.sessionInfo,category:e.session},{name:"/checkpoint",description:t.checkpoint,category:e.session},{name:"/checkpoints",description:t.checkpoints,category:e.session},{name:"/rollback",description:t.rollback,category:e.session,hasSubMenu:true},{name:"/undo",description:t.undo,category:e.session},{name:"/compact",description:t.compact,category:e.session},{name:"/ps",description:t.ps,category:e.process},{name:"/kill",description:t.kill,category:e.process,hasSubMenu:true},{name:"/skills",description:t.skills,category:e.skills},{name:"/workspace",description:t.workspace,category:e.tools,hasSubMenu:true},{name:"/websearch",description:t.websearch,category:e.tools,hasSubMenu:true},{name:"/mcp",description:t.mcp,category:e.tools,hasSubMenu:true},{name:"/context",description:t.context,category:e.tools,hasSubMenu:true},{name:"/memory",description:t.memory,category:e.tools,hasSubMenu:true},{name:"/remote",description:t.remote,category:e.tools,hasSubMenu:true},{name:"/index",description:t.index,category:e.tools,hasSubMenu:true},{name:"/stats",description:t.tokenStats,category:e.stats},{name:"/cost",description:t.costStats,category:e.stats},{name:"/language",description:t.language,category:e.config,hasSubMenu:true},{name:"/config-clear",description:t.configClear,category:e.config},{name:"/config-reset",description:t.configReset,category:e.config},{name:"/notify",description:t.notify,category:e.config,hasSubMenu:true},{name:"/tts",description:t.tts,category:e.config,hasSubMenu:true},{name:"/experimental",description:t.experimental,category:e.config,hasSubMenu:true},{name:"/update",description:t.update,category:e.config}]}hx();var o$=({isVisible:s,filter:e="",onSelect:t,onCancel:n})=>{let[r,o]=useState(0),[i,a]=useState(0),l=10,c=hx(),u=G(),d=e&&e!=="/"?c.filter(h=>h.name.toLowerCase().includes(e.toLowerCase())||h.description.toLowerCase().includes(e.toLowerCase())):c;useEffect(()=>{o(0),a(0);},[e]),useEffect(()=>{r<i?a(r):r>=i+l&&a(r-l+1);},[r]),gt((h,y)=>{if(s){if(y.escape){n();return}if(y.upArrow){o(b=>b>0?b-1:d.length-1);return}if(y.downArrow){o(b=>b<d.length-1?b+1:0);return}if(y.pageUp||y.ctrl&&h==="u"){o(b=>Math.max(0,b-l));return}if(y.pageDown||y.ctrl&&h==="d"){o(b=>Math.min(d.length-1,b+l));return}if(y.return){d.length>0&&t(d[r].name);return}if(y.tab){d.length>0&&t(d[r].name+" ");return}}},{isActive:s});let m=d.slice(i,i+l),g=A.useMemo(()=>m.map((h,y)=>{let C=i+y===r;return A.createElement(_,{key:h.name},A.createElement(f,{color:C?ue.brand.purple:ue.text.dim},C?"\u276F ":" "),A.createElement(f,{color:C?ue.brand.purple:void 0,bold:C},"\u25CF ",h.name),A.createElement(f,{color:C?ue.brand.magenta:ue.text.secondary}," ","- ",h.description))}),[m,i,r]);return !s||d.length===0?null:A.createElement(_,{flexDirection:"column",paddingLeft:0},A.createElement(f,{color:ue.brand.purple,bold:true},u.slashMenu.title),A.createElement(f,{color:ue.text.secondary},u.common.selectHint),i>0&&A.createElement(f,{color:ue.text.dim}," \u2191 ..."),g,i+l<d.length&&A.createElement(f,{color:ue.text.dim}," \u2193 ..."),A.createElement(f,{color:ue.border.primary},"\u2500".repeat(40)),A.createElement(f,{color:ue.text.secondary},lt(u.slashMenu.commandCount,{count:d.length})," \xB7 ",Math.floor(i/l)+1,"/",Math.ceil(d.length/l)))},fx=A.memo(o$);var c$=({tasks:s,selectedIndex:e,onKill:t,onToggleExpand:n})=>{let{columns:r=80}=Qt(),[o,i]=useState(Date.now()),a=s.some(m=>m.status==="running");if(useEffect(()=>{if(!a)return;let m=setInterval(()=>i(Date.now()),1e3);return ()=>clearInterval(m)},[a]),s.length===0)return null;let l=m=>{let g=Math.floor((o-m)/1e3);if(g<60)return `${g}s`;let h=Math.floor(g/60),y=g%60;return `${h}m${y}s`},c=(m,g)=>m.length<=g?m:m.slice(0,g-3)+"...",u=Math.max(20,r-45),d=(m,g)=>{let h=g===e,y=g===s.length-1,b=m.status==="running"?A.createElement(si,{type:"dots"}):m.status==="done"?A.createElement(f,{color:"green"},"\u2713"):m.status==="error"?A.createElement(f,{color:"red"},"\u2717"):A.createElement(f,{color:"yellow"},"\u2298"),C=m.status==="running"?"cyan":m.status==="done"?"green":m.status==="error"?"red":"yellow",T=m.status==="done"?`exit ${m.exitCode??0}`:m.status;return A.createElement(_,{key:m.id,flexDirection:"column"},A.createElement(_,null,A.createElement(f,{dimColor:true},y?"\u2514 ":"\u251C "),A.createElement(f,{color:h?"white":void 0,bold:h},h?"\u25B8 ":" "),b,A.createElement(f,{dimColor:true}," #",m.id," "),A.createElement(f,{color:h?"white":"cyan",bold:h},c(m.command,u)),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:C},T),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:"yellow"},l(m.startTime))),m.expanded&&m.output.length>0&&A.createElement(_,{flexDirection:"column",marginLeft:6},m.output.slice(-5).map((S,E)=>A.createElement(f,{key:E,dimColor:true},S))))};return A.createElement(_,{flexDirection:"column",marginTop:0},A.createElement(_,null,A.createElement(f,{color:ue.brand.purple},"\u250C "),A.createElement(f,{color:ue.brand.purple,bold:true},"Background Tasks"),A.createElement(f,{dimColor:true}," (",s.length,")"),A.createElement(f,{dimColor:true},"\u2500".repeat(Math.max(0,r-25-String(s.length).length)))),s.map((m,g)=>d(m,g)))},yx=A.memo(c$);te();var u$=({inputValue:s,isRunning:e,statusText:t="",tokenStats:n,streamingTokens:r=0,streamingStartTime:o=null,accumulatedRunTime:i=0,provider:a,model:l,customHints:c,attachments:u=[],multiline:d=false,completions:m=[],menuActive:g=false,promptActive:h=false,promptMessage:y,promptHint:b,promptOnCancel:C,thinkingEnabled:T=true,contextMenuActive:S=false,compressionMode:E="sync",compactionThreshold:v=.85,agentContextStats:I=[],runMode:D="single",networkStats:O,cooperateStats:k,currentPlanSteps:M=[],onInputChange:N,onSubmit:x,onInterrupt:B,onExit:H,onHistoryUp:W,onHistoryDown:U,onTabComplete:z,onRemoveAttachment:q,onContextMenuToggle:P,onAgentContextScreenToggle:$,onPasteImage:F,onShowInterruptInput:V,backgroundTasks:Z=[],bgSelectedIndex:ae=-1,onBgKill:be,onBgRemove:Pe,onBgNavigate:oe,onBgToggleExpand:X})=>{let{columns:ne}=Qt(),[Y,Ae]=A.useState(false);A.useEffect(()=>{Z.length===0&&Y&&Ae(false);},[Z.length,Y]),A.useEffect(()=>{s&&Y&&Ae(false);},[s,Y]);let ge=s==="/"||s.startsWith("/")&&!s.includes(" "),_e=A.useCallback(J=>{J.endsWith(" ")?N(J.trim()):(N(""),setTimeout(()=>{x(J);},0));},[N,x]),fe=A.useCallback(()=>{N("");},[N]),Se=A.useRef(0),pe=1200;return gt((J,he)=>{if(process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","BottomBar useInput",{key:he,input:J,menuActive:g,promptActive:h,isRunning:e,inputValue:s.substring(0,20)}),!g){if(e&&J==="i"&&!he.ctrl&&!he.meta&&V){p.debug("INK_INPUT",'Interrupt input triggered with "i" key'),V();return}if(he.ctrl&&J==="g"&&$){$();return}if(he.ctrl&&J==="z"){process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","Ctrl+Z blocked (prevents suspension)");return}if(he.tab&&Z.length>0&&!e&&!ge){Ae(K=>!K);return}if(Y&&Z.length>0){if(he.upArrow){oe?.("up");return}if(he.downArrow){oe?.("down");return}if(he.return&&ae>=0){X?.();return}}if(he.escape){let K=!J||J==="\x1B"||J==="";if(p.info("INK_INPUT",`ESC detected: isRealEscape=${K}, input=${JSON.stringify(J)}, isRunning=${e}`),!K){p.debug("INK_INPUT","Ignoring escape sequence (not real ESC key)");return}if(S&&P){P();return}if(h&&C){C(),N("");return}if(Y&&Z.length>0&&ae>=0&&ae<Z.length){let re=Z[ae];re.status==="running"?be?.(re.id):Pe?.(re.id);return}if(Y){Ae(false);return}e?(p.info("INK_INPUT","\u{1F6D1} User pressed ESC to interrupt task"),B()):s&&N("");return}if(he.ctrl&&J==="c"){let K=Date.now(),re=K-Se.current<=pe;if(Se.current=K,process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","Ctrl+C pressed",{isRunning:e,isSecondPress:re}),re){p.info("INK_INPUT","\u26A0\uFE0F Ctrl+C double-press - force exiting"),H();return}if(e){B();return}p.info("INK_INPUT","\u26A0\uFE0F Ctrl+C pressed - exiting"),H();}}},{isActive:true}),A.createElement(_,{flexDirection:"column"},h&&y&&A.createElement(_,{paddingX:2,paddingY:1},A.createElement(f,{color:"cyan",bold:true},y)),h&&b&&A.createElement(_,{paddingX:2,paddingBottom:1},A.createElement(f,{dimColor:true},b)),!h&&!g&&A.createElement(_,{marginTop:1,width:"100%"},A.createElement(lx,{isRunning:e,statusText:t,tokenStats:n,streamingTokens:r,streamingStartTime:o,provider:a,model:l,onContextMenuToggle:P,agentContextStats:I,runMode:D,networkStats:O,cooperateStats:k})),!h&&!g&&A.createElement(dx,{planSteps:M,isRunning:e}),u.length>0&&A.createElement(ux,{attachments:u,onRemove:q}),!g&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{color:"#9370db"},"\u2500".repeat(ne)),A.createElement(ax,{value:s,placeholder:h?b||"Type your answer...":e?"Enter to interrupt and send...":"Type a message...",disabled:g,multiline:d,completions:[],menuActive:g,slashMenuActive:ge,imageCount:u.length,onChange:N,onSubmit:J=>x(J??s),onHistoryUp:W,onHistoryDown:U,onTabComplete:z,onPasteImage:F,onRemoveLastAttachment:q?()=>q(u.length-1):void 0}),A.createElement(f,{color:"#9370db"},"\u2500".repeat(ne))),ge&&!g&&!e&&A.createElement(fx,{isVisible:true,filter:s,onSelect:_e,onCancel:fe}),!h&&A.createElement(cx,{isRunning:e,hasInput:s.length>0,customHints:c,menuActive:g,thinkingEnabled:T,accumulatedRunTime:i,provider:a,model:l,runMode:D,hasBgTasks:Z.length>0}),Z.length>0&&A.createElement(yx,{tasks:Z,selectedIndex:Y?ae:-1,onKill:be,onToggleExpand:X}),S&&n?.contextWindow&&P&&A.createElement(px,{contextWindow:n.contextWindow,tokensUsed:n.tokensUsedForContext||n.total,systemTokens:n.systemTokens,userTokens:n.userTokens,assistantTokens:n.assistantTokens,toolCallTokens:n.toolCallTokens,toolResultTokens:n.toolResultTokens,compressionMode:E,compactionThreshold:v,agentContextStats:I,runMode:D,networkStats:O,onClose:P}))},bx=A.memo(u$);var vu="__type_something__",Ah="__chat_about__",vx="__separator__",Ph=({message:s,choices:e,initialIndex:t=0,hint:n,header:r,maxVisible:o=12,allowTextInput:i=false,onSelect:a,onCancel:l,onExit:c})=>{let{columns:u=80,rows:d=24}=Qt(),[m,g]=useState(false),[h,y]=useState(""),b=useMemo(()=>i?[...e,{label:"",value:vx,isSeparator:true},{label:"Type something.",value:vu},{label:"Chat about this",value:Ah}]:e,[e,i]),C=P=>P?P.isSeparator||P.value===""||P.value===vx:false,T=P=>C(b[P]),S=useMemo(()=>{let P=b.findIndex($=>C($));return b[0]?.value==="__back__"&&P>0&&P<=4?P+1:0},[b]),E=useMemo(()=>{let P=Math.max(5,Math.min(10,d-14));return Math.max(5,Math.min(o,P))},[o,d]),v=b.slice(S),I=Math.min(v.length,E),D=(P,$)=>{let F=P;for(let V=0;V<b.length;V++)if(F+=$,F<0&&(F=b.length-1),F>=b.length&&(F=0),!T(F))return F;return P},O=()=>{for(let P=0;P<b.length;P++)if(!T(P))return P;return 0},[k,M]=useState(()=>T(t)?O():t),[N,x]=useState(0),[B,H]=useState(false);useEffect(()=>{T(t)?M(O()):M(t);},[t,b]),useEffect(()=>{let P=setTimeout(()=>H(true),200);return ()=>clearTimeout(P)},[]),useEffect(()=>{if(I<=0){N!==0&&x(0);return}let P=Math.max(0,v.length-I);if(N>P){x(P);return}if(k<S)return;let $=k-S;$<N?x($):$>=N+I&&x($-I+1);},[k,S,v.length,I,N]),gt((P,$)=>{if(m){if($.escape){g(false),y("");return}if($.return&&h.trim()){process.nextTick(()=>a(h.trim()));return}if($.backspace||$.delete){y(F=>F.slice(0,-1));return}P&&!$.ctrl&&!$.meta&&y(F=>F+P);}},{isActive:m}),gt((P,$)=>{if(!m){if($.ctrl&&P==="c"&&c){process.nextTick(()=>c());return}if($.escape&&l){process.nextTick(()=>l());return}if($.upArrow){M(F=>D(F,-1));return}if($.downArrow){M(F=>D(F,1));return}if($.return){if(T(k)||!B)return;let F=b[k].value;if(F===vu){g(true);return}process.nextTick(()=>a(F));}}},{isActive:!m});let W=N>0,U=N+I<v.length,z=P=>{let $=0;for(let F=0;F<=P;F++)!T(F)&&b[F].value!==vu&&b[F].value!==Ah&&$++;return $},q=(P,$)=>{let F=$===k;if(C(P))return A.createElement(_,{key:`sep-${$}`,marginTop:1},A.createElement(f,{dimColor:true},"\u2500".repeat(Math.min(u,120))));let V=F?"\u276F":" ",ae=P.value===vu||P.value===Ah?null:z($),be=ae!==null?" ":" ";return A.createElement(_,{key:`${P.value}-${$}`,flexDirection:"column"},A.createElement(_,null,A.createElement(f,{color:F?"cyan":void 0},V," "),ae!==null&&A.createElement(f,{color:F?"cyan":"white",bold:F},ae,". "),A.createElement(f,{color:F?"cyan":"white",bold:F},P.label)),P.description&&A.createElement(_,null,A.createElement(f,{dimColor:true},be,P.description)))};return m?A.createElement(_,{flexDirection:"column"},r&&A.createElement(_,null,A.createElement(f,{color:"green",bold:true},"\u2610 ",r)),A.createElement(f,null," "),s&&A.createElement(_,null,A.createElement(f,{bold:true},s)),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{color:"cyan",bold:true},"\u276F "),A.createElement(f,null,h),A.createElement(f,{color:"cyan"},"\u2588")),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{dimColor:true},"Enter to submit \xB7 Esc to go back"))):A.createElement(_,{flexDirection:"column"},r&&A.createElement(_,null,A.createElement(f,{color:"green",bold:true},"\u2610 ",r)),r&&A.createElement(f,null," "),s&&A.createElement(_,null,A.createElement(f,{bold:true},s)),A.createElement(f,null," "),b.slice(0,S).map((P,$)=>q(P,$)),W&&A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2191 ...")),v.slice(N,N+I).map((P,$)=>{let F=S+N+$;return q(P,F)}),U&&A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2193 ...")),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{dimColor:true},n||"Enter to select \xB7 \u2191/\u2193 to navigate \xB7 Esc to cancel")))};var wx=({onSubmit:s,onCancel:e})=>{let[t,n]=useState(""),[r,o]=useState(0),i=t.length-r;gt((u,d)=>{if(d.escape){e();return}if(d.return){let m=t.trim();m&&s(m);return}if(d.backspace||d.delete){if(r===t.length)return;let m=i-1,g=t.slice(0,m)+t.slice(m+1);n(g);return}if(d.leftArrow){o(Math.min(r+1,t.length));return}if(d.rightArrow){o(Math.max(r-1,0));return}if(d.home||d.ctrl&&u==="a"){o(t.length);return}if(d.end||d.ctrl&&u==="e"){o(0);return}if(!d.ctrl&&!d.meta&&u){let m=t.slice(0,i)+u+t.slice(i);n(m);return}},{isActive:true});let a=t.slice(0,i),l=t[i]||" ",c=t.slice(i+1);return A.createElement(_,{flexDirection:"column",borderStyle:"double",borderColor:"yellow",paddingX:2,paddingY:1,width:"80%"},A.createElement(_,{marginBottom:1,justifyContent:"center"},A.createElement(f,{bold:true,color:"yellow"},"\u2728 ",G().ui.interruptMessage," - ",G().ui.willSendNextRequest)),A.createElement(_,{flexDirection:"column"},A.createElement(f,{dimColor:true},G().ui.enterYourMessage,":"),A.createElement(_,{marginTop:1},A.createElement(f,{color:"green",bold:true},"\u276F "),t?A.createElement(f,null,a,A.createElement(f,{inverse:true},l),c):A.createElement(_,null,A.createElement(f,{inverse:true}," "),A.createElement(f,{dimColor:true},G().ui.typeMessage)))),A.createElement(_,{marginTop:1,justifyContent:"space-between"},A.createElement(f,{dimColor:true},"Enter: ",G().ui.enterToConfirm),A.createElement(f,{dimColor:true},"ESC: ",G().common.cancel)))};var oi=s=>s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:String(s),d$=s=>{switch(s){case "running":return {icon:"\u25CF",color:"green"};case "waiting":return {icon:"\u25D0",color:"yellow"};case "completed":return {icon:"\u2713",color:"blue"};case "error":return {icon:"\u2717",color:"red"};default:return {icon:"\u25CB",color:"gray"}}},Tx=({agentContextStats:s,onClose:e})=>{let{columns:t}=Qt();gt((r,o)=>{(o.escape||r==="q")&&e();},{isActive:true});let n=[...s].sort((r,o)=>r.agentId==="Main"?-1:o.agentId==="Main"?1:r.agentLabel.localeCompare(o.agentLabel));return A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{bold:true,color:"cyan"},"Agent Context Overview"),A.createElement(f,{dimColor:true},"ESC to close")),A.createElement(f,{color:"gray"},"\u2500".repeat(Math.max(t,10))),n.length===0?A.createElement(f,{dimColor:true},"No agent context stats available."):n.map(r=>{let o=r.contextWindow||0,i=r.tokensUsedForContext||0,a=o>0?i/o:0,l=Math.round(a*100),{icon:c,color:u}=d$(r.status),d=r.currentTask?r.currentTask.length>40?`${r.currentTask.slice(0,37)}...`:r.currentTask:"";return A.createElement(_,{key:r.agentId,justifyContent:"space-between",marginTop:1},A.createElement(_,null,A.createElement(f,{color:"magenta"},r.agentLabel),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:u},c),d&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{dimColor:true},d))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},oi(r.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},oi(r.output)),(r.cacheCreationTokens||r.cacheReadTokens)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," cache-w "),A.createElement(f,{color:"magenta"},oi(r.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," cache-r "),A.createElement(f,{color:"blue"},oi(r.cacheReadTokens||0))),A.createElement(f,{dimColor:true}," \u2502 context "),A.createElement(f,{color:"yellow"},oi(i)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},oi(o)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:a>.8?"red":a>.5?"yellow":"green"},l,"%"),A.createElement(f,{dimColor:true},")")))}),A.createElement(f,{color:"gray"},"\u2500".repeat(Math.max(t,10))),A.createElement(f,{dimColor:true},"Tip: Press Q or ESC to return"))};var xx=({messages:s})=>s.length===0?null:A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:"magenta",bold:true},"\u250C\u2500 "),A.createElement(f,{color:"magenta",bold:true},"Queued (",s.length,")"),A.createElement(f,{color:"magenta",bold:true}," \u2500")),s.map((e,t)=>A.createElement(_,{key:e.id,paddingLeft:1},A.createElement(f,{color:"gray"},"\u2502 "),A.createElement(f,{color:"cyan",bold:true},"> "),A.createElement(f,{color:"white"},e.text.length>70?e.text.substring(0,67)+"...":e.text))),A.createElement(_,null,A.createElement(f,{color:"magenta",bold:true},"\u2514\u2500"),A.createElement(f,{dimColor:true}," Press "),A.createElement(f,{color:"yellow"},"\u2191"),A.createElement(f,{dimColor:true}," to edit queued messages")));var Sx=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],p$=A.memo(({agent:s})=>{let[e,t]=A.useState(0);A.useEffect(()=>{if(s.status!=="running")return;let a=setInterval(()=>t(l=>(l+1)%Sx.length),200);return ()=>clearInterval(a)},[s.status]);let n=s.status==="completed"?"\u2713":s.status==="error"?"\u2717":Sx[e],r=s.status==="completed"?"green":s.status==="error"?"red":"yellow",o=s.status==="completed"?"done":s.status==="error"?"err":s.elapsed>0?`${s.elapsed}s`:"..",i=s.toolCount>0?` ${s.toolCount}t`:"";return A.createElement(f,null,A.createElement(f,{color:r},n),A.createElement(f,{bold:true}," ",s.role),A.createElement(f,{dimColor:true},"(",o,i,")"))}),kx=A.memo(({agents:s})=>s.length===0?null:A.createElement(_,{flexDirection:"row",flexWrap:"wrap"},A.createElement(f,{dimColor:true}," "),s.map((e,t)=>A.createElement(_,{key:e.id,flexDirection:"row"},t>0&&A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(p$,{agent:e})))));Cu();te();var v$=[".png",".jpg",".jpeg",".gif",".webp",".bmp",".svg"],C$=s=>{let e=new WeakSet;try{return JSON.stringify(s,(t,n)=>{if(typeof n=="bigint")return n.toString();if(n instanceof Error)return {name:n.name,message:n.message,stack:n.stack};if(typeof n=="function")return "[Function]";if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular]";e.add(n);}return n})}catch{try{return String(s)}catch{return "[Unserializable]"}}};function w$(s){if(!s)return false;let e=s.trim(),t=e.toLowerCase(),n=v$.some(o=>t.endsWith(o)),r=e.startsWith("/")||e.startsWith("./")||e.startsWith("~/")||e.includes("/")&&n;return n&&r}var _x=({staticEntries:s=[],pendingEntries:e=[],isRunning:t,statusText:n="",tokenStats:r,streamingTokens:o=0,streamingStartTime:i=null,accumulatedRunTime:a=0,version:l=ai,provider:c="OpenAI",model:u="gpt-4",workDir:d=process.cwd(),showHeader:m=true,thinkingEnabled:g=true,selectMenuOptions:h=null,textPromptOptions:y=null,contextMenuActive:b=false,agentContextScreenActive:C=false,compressionMode:T="sync",compactionThreshold:S=.85,agentContextStats:E=[],runMode:v="single",networkStats:I,cooperateStats:D,commandOutput:O=[],attachedImages:k=[],interruptInputActive:M=false,queuedMessages:N=[],currentPlanSteps:x=[],sidebarAgents:B=[],backgroundTasks:H=[],bgSelectedIndex:W=-1,onBgKill:U,onBgRemove:z,onBgNavigate:q,onBgToggleExpand:P,getCompletions:$,onStaticRendered:F,onSubmit:V,onInterrupt:Z,onExit:ae,onContextMenuToggle:be,onAgentContextScreenToggle:Pe,onClearCommandOutput:oe,onAttachImage:X,onClearImages:ne,onInterruptInputSubmit:Y,onInterruptInputCancel:Ae,onShowInterruptInput:ge,onScrollUp:_e,onScrollDown:fe,onPageUp:Se,onPageDown:pe,onScrollToTop:J,onScrollToBottom:he})=>{let[K,re]=useState(""),[se,ve]=useState([]),[Be,ce]=useState(-1),[L,ee]=useState(null),[me,le]=useState(true),we=useMemo(()=>!$||!K.startsWith("/")?[]:$(K),[K,$]),We=useContext(po);useEffect(()=>{if(!We?.internal_eventEmitter||!X)return;let ie=$e=>{de("CLI_APP",`\u{1F4CE} Received image-paste event from vendor Ink: ${$e.name}`),X($e);};return We.internal_eventEmitter.on("image-paste",ie),()=>{We.internal_eventEmitter.off("image-paste",ie);}},[We,X]),useEffect(()=>{y?.defaultValue&&re(y.defaultValue);},[y?.defaultValue]),gt((ie,$e)=>{if($e.escape){if(C)return;L?ee(null):O.length>0&&oe&&oe();}$e.pageUp&&Se&&Se(),$e.pageDown&&pe&&pe(),$e.upArrow&&$e.ctrl&&_e&&_e(),$e.downArrow&&$e.ctrl&&fe&&fe(),$e.ctrl&&ie==="a"&&$e.shift&&J&&J(),$e.ctrl&&ie==="z"&&$e.shift&&he&&he(),$e.ctrl&&ie==="o"&&le(it=>!it);},{isActive:!h&&!L});let ye=e.filter(ie=>ie.type!=="thinking"&&ie.type!=="reasoning"),Ne=ie=>{if(!ie)return false;let{content:$e}=ie;return typeof $e=="string"?$e.trim().length>0:Array.isArray($e)?$e.some(it=>{if(!it||typeof it!="object"||!("type"in it))return false;switch(it.type){case "text":return typeof it.text=="string"&&it.text.trim().length>0;case "image_url":return true;case "tool_use":return true;case "tool_result":return it.content!==null&&it.content!==void 0&&String(it.content).trim().length>0;case "thinking":return typeof it.thinking=="string"&&it.thinking.trim().length>0;case "redacted_thinking":return typeof it.data=="string"&&it.data.trim().length>0;default:return true}}):false},ot=ie=>{if(ie.message){let db=Ne(ie.message);if(ie.type==="user"&&!db&&process.env.CLI_DEBUG==="1"){let GI=C$(ie.message.content).slice(0,100);de("APP",`User message filtered out! entry.id=${ie.id}, message.role=${ie.message.role}, content=${GI}`);}return db}let $e=typeof ie.text=="string"&&ie.text.trim().length>0,it=ie.type==="plan"&&!!ie.planSteps&&ie.planSteps.length>0,ao=(ie.type==="pipeline_node_start"||ie.type==="pipeline_node_complete"||ie.type==="pipeline_node_fail"||ie.type==="pipeline_node_retry")&&(ie.pipelineNode||ie.pipelineNodeRetry),FI=(ie.type==="network_node_start"||ie.type==="network_node_complete"||ie.type==="network_node_fail")&&ie.networkNode,UI=(ie.type==="ccb_review"||ie.type==="ccb_agent_review"||ie.type==="ccb_retry"||ie.type==="ccb_failed")&&!!(ie.ccbReview||ie.ccbAgentReview||ie.ccbRetry||ie.ccbFailed),jI=ie.type==="pipeline_dag"&&!!ie.pipelineDAG;return !!($e||it||ao||FI||UI||jI)},Ht=useMemo(()=>ye.filter(ot),[ye]),Fr=useMemo(()=>{let ie=s.filter(ot);return process.env.CLI_DEBUG==="1"&&de("APP",`visibleStaticEntries: staticEntries=${s.length}, visible=${ie.length}, types=${ie.map($e=>$e.type).join(",")}`),ie},[s]),br=A.useCallback((ie,$e)=>ie,[]),Sl=useMemo(()=>{let ie=[];return m&&ie.push(A.createElement(OT,{key:"static-header",version:l,provider:c,model:u,workDir:d})),Fr.forEach(($e,it)=>{ie.push(A.createElement(_,{key:`static-entry-${$e.id}`,flexDirection:"column",marginTop:it>0?1:0},A.createElement(_h,{entry:$e,thinkingCollapsed:me})));}),ie},[m,l,c,u,d,Fr]);if(useEffect(()=>{!m&&s.length===0||F?.();},[m,s.length,F]),C)return A.createElement(Tx,{agentContextStats:E,onClose:()=>Pe?.()});let Ai=ie=>{if(y){if(!ie.trim()&&!y.allowEmpty)return;y.onSubmit(ie),re("");return}let $e=k.length>0,it=ie.trim().length>0;(it||$e)&&(it&&ve([...se,ie]),ce(-1),re(""),V(ie,$e?k:void 0));},ws=()=>{if(se.length===0)return;let ie=Be+1;ie<se.length&&(ce(ie),re(se[se.length-1-ie]));},Ur=()=>{if(Be<=0){ce(-1),re("");return}let ie=Be-1;ce(ie),re(se[se.length-1-ie]);},OI=ie=>{if(!$)return null;let $e=$(ie);if($e.length===0)return null;if($e.length===1)return $e[0];let it=$e.map(ao=>({label:ao,value:ao,description:void 0}));return ee({message:"Select completion:",choices:it,initialIndex:0,onSelect:ao=>{re(ao),ee(null);},onCancel:()=>{ee(null);}}),null},BI=v==="assistant";return A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(Jl,{items:Sl},br),A.createElement(_,{flexDirection:"column",width:"100%"},Ht.map((ie,$e)=>A.createElement(_,{key:`pending-wrapper-${ie.id}`,flexDirection:"column",marginTop:1},A.createElement(_h,{entry:ie,thinkingCollapsed:me}))),!me&&(()=>{let ie=[...e].reverse().find($e=>($e.type==="thinking"||$e.type==="reasoning")&&$e.text);return ie?A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{color:"cyan",bold:true},"\u25CF Thinking (latest, ctrl+o to collapse)"),A.createElement(_,{key:`thinking-expanded-${ie.id}`,flexDirection:"column",marginTop:1},A.createElement(hu,{content:ie.text,collapsed:false,type:ie.type,timestamp:ie.timestamp,sourceLabel:ie.sourceLabel}))):null})()),A.createElement(f,null,`
|
|
3758
|
-
`),BI&&A.createElement(kx,{agents:B}),M&&Y&&Ae?A.createElement(_,{flexShrink:0,flexDirection:"column"},A.createElement(wx,{onSubmit:Y,onCancel:Ae})):A.createElement(_,{flexShrink:0,flexDirection:"column"},N.length>0&&A.createElement(xx,{messages:N}),A.createElement(bx,{inputValue:K,isRunning:t,statusText:n,tokenStats:r,streamingTokens:o,streamingStartTime:i,accumulatedRunTime:a,provider:c,model:u,menuActive:!!h||!!L,promptActive:!!y,promptMessage:y?.message,promptHint:y?.hint,promptOnCancel:y?.onCancel,thinkingEnabled:g,contextMenuActive:b,compressionMode:T,compactionThreshold:S,agentContextStats:E,runMode:v,networkStats:I,cooperateStats:D,currentPlanSteps:x,attachments:k,completions:we,onInputChange:ie=>{if(X&&w$(ie)){X(ie.trim());return}re(ie);},onSubmit:Ai,onInterrupt:Z,onExit:ae,onHistoryUp:ws,onHistoryDown:Ur,onTabComplete:OI,onContextMenuToggle:be,onAgentContextScreenToggle:Pe,onRemoveAttachment:ne?ie=>{ne();}:void 0,onPasteImage:X,onShowInterruptInput:ge,backgroundTasks:H,bgSelectedIndex:W,onBgKill:U,onBgRemove:z,onBgNavigate:q,onBgToggleExpand:P}),h&&A.createElement(Ph,{message:h.message,choices:h.choices,initialIndex:h.initialIndex,hint:h.hint,header:h.header,allowTextInput:h.allowTextInput,onSelect:h.onSelect,onCancel:h.onCancel,onExit:ae}),L&&A.createElement(Ph,{message:L.message,choices:L.choices,initialIndex:L.initialIndex,hint:L.hint,onSelect:L.onSelect,onCancel:L.onCancel,onExit:ae}),O.length>0&&A.createElement(_,{flexDirection:"column",paddingX:2,paddingY:1,borderStyle:"round",borderColor:"gray"},O.map((ie,$e)=>A.createElement(f,{key:$e},ie)))))};te();qr();var Tu=class s{appInstance=null;messages=[];staticEntries=[];nextEntryId=1;isRunning=false;statusText="";tokenStats={input:0,output:0,total:0,contextWindow:void 0,tokensUsedForContext:0,pressure:0};version="";provider="";model="";workDir="";showHeader=true;thinkingEnabled=true;callbacks;forceUpdate=null;selectMenuOptions=null;textPromptOptions=null;contextMenuActive=false;agentContextScreenActive=false;commandOutput=[];getCompletions;memoryLogTimer=null;ttyWriteGuardActive=false;allowTTYWriteDepth=0;originalStdoutWrite=null;originalStderrWrite=null;inkStdout=null;altScreenEnabled=false;attachedImages=[];pendingEntries=[];getPendingMessages=null;interruptInputActive=false;runMode="single";streamingTokens=0;streamingStartTime=null;accumulatedRunTime=0;runningStartTime=null;compressionMode="sync";compactionThreshold=.85;agentContextStats=new Map;networkStats=null;cooperateStats=null;currentPlanSteps=[];backgroundTasks=[];bgNextId=1;bgSelectedIndex=-1;sidebarAgents=[];static MAX_QUEUED_STATIC=50;constructor(e){this.callbacks=e;}addBackgroundTask(e,t){let n=this.bgNextId++;return this.backgroundTasks=[...this.backgroundTasks,{id:n,command:e,pid:t,status:"running",startTime:Date.now(),output:[]}],this.bgSelectedIndex<0&&(this.bgSelectedIndex=0),this.forceUpdate?.(),p.info("BG_TASK",`Added background task #${n}: ${e} (pid=${t})`),n}updateBackgroundTask(e,t){this.backgroundTasks=this.backgroundTasks.map(n=>{if(n.id!==e)return n;let r={...n};return t.status&&(r.status=t.status),t.exitCode!==void 0&&(r.exitCode=t.exitCode),t.outputLine&&(r.output=[...n.output.slice(-19),t.outputLine]),r}),this.forceUpdate?.();}removeBackgroundTask(e){this.backgroundTasks.findIndex(n=>n.id===e)<0||(this.backgroundTasks=this.backgroundTasks.filter(n=>n.id!==e),this.backgroundTasks.length===0?this.bgSelectedIndex=-1:this.bgSelectedIndex>=this.backgroundTasks.length&&(this.bgSelectedIndex=this.backgroundTasks.length-1),this.forceUpdate?.());}killBackgroundTask(e){let t=this.backgroundTasks.find(n=>n.id===e);if(!(!t||t.status!=="running")){try{process.kill(t.pid,"SIGTERM"),p.info("BG_TASK",`Killed background task #${e} (pid=${t.pid})`);}catch(n){p.warn("BG_TASK",`Failed to kill pid ${t.pid}: ${n}`);}this.updateBackgroundTask(e,{status:"killed"});}}bgMoveSelection(e){this.backgroundTasks.length!==0&&(e==="up"?this.bgSelectedIndex=Math.max(0,this.bgSelectedIndex-1):this.bgSelectedIndex=Math.min(this.backgroundTasks.length-1,this.bgSelectedIndex+1),this.forceUpdate?.());}bgToggleExpand(){if(this.bgSelectedIndex<0||this.bgSelectedIndex>=this.backgroundTasks.length)return;let e=this.backgroundTasks[this.bgSelectedIndex];this.backgroundTasks=this.backgroundTasks.map(t=>t.id===e.id?{...t,expanded:!t.expanded}:t),this.forceUpdate?.();}getBackgroundTasks(){return this.backgroundTasks}getBgSelectedIndex(){return this.bgSelectedIndex}hasActiveBackgroundTasks(){return this.backgroundTasks.length>0}updateBackgroundTaskByPid(e,t){let n=this.backgroundTasks.find(r=>r.pid===e);n&&this.updateBackgroundTask(n.id,t);}setCompletionFunction(e){this.getCompletions=e;}start(){p.info("INK","Starting Ink runtime"),this.startMemorySampler();let e=()=>{let[,a]=useState(0);return useLayoutEffect(()=>(this.forceUpdate=()=>{let l=Date.now();p.debug("RUNTIME",`>>> forceUpdate called, staticEntries=${this.staticEntries.length}, pendingEntries=${this.pendingEntries.length}`),a(u=>u+1);let c=Date.now()-l;c>50&&p.warn("RUNTIME",`\u26A0\uFE0F forceUpdate slow: setCounter took ${c}ms`);},()=>{this.forceUpdate=null;}),[]),A.createElement(_x,{staticEntries:this.staticEntries,pendingEntries:this.pendingEntries,isRunning:this.isRunning,statusText:this.statusText,tokenStats:this.tokenStats,streamingTokens:this.streamingTokens,streamingStartTime:this.streamingStartTime,accumulatedRunTime:this.accumulatedRunTime,compressionMode:this.compressionMode,compactionThreshold:this.compactionThreshold,agentContextStats:this.getAgentContextStats(),runMode:this.runMode,networkStats:this.networkStats||void 0,cooperateStats:this.cooperateStats||void 0,currentPlanSteps:this.currentPlanSteps,sidebarAgents:this.getSidebarAgents(),version:this.version,provider:this.provider,model:this.model,workDir:this.workDir,showHeader:this.showHeader,thinkingEnabled:this.thinkingEnabled,selectMenuOptions:this.selectMenuOptions,textPromptOptions:this.textPromptOptions,contextMenuActive:this.contextMenuActive,agentContextScreenActive:this.agentContextScreenActive,commandOutput:this.commandOutput,attachedImages:this.attachedImages,interruptInputActive:this.interruptInputActive,queuedMessages:this.getQueuedMessagesForDisplay(),backgroundTasks:this.backgroundTasks,bgSelectedIndex:this.bgSelectedIndex,onBgKill:l=>this.killBackgroundTask(l),onBgRemove:l=>this.removeBackgroundTask(l),onBgNavigate:l=>this.bgMoveSelection(l),onBgToggleExpand:()=>this.bgToggleExpand(),getCompletions:this.getCompletions,onStaticRendered:void 0,onSubmit:(l,c)=>{let u=c||this.attachedImages;this.attachedImages=[],this.callbacks.onSubmit(l,u);},onInterrupt:this.callbacks.onInterrupt,onExit:this.callbacks.onExit,onContextMenuToggle:()=>{this.contextMenuActive=!this.contextMenuActive,this.forceUpdate?.();},onAgentContextScreenToggle:()=>{this.agentContextScreenActive=!this.agentContextScreenActive,this.forceUpdate?.();},onClearCommandOutput:()=>{this.clearCommandOutput();},onAttachImage:l=>{this.attachImage(l);},onClearImages:()=>{this.clearAttachedImages();},onInterruptInputSubmit:l=>{this.handleInterruptInputSubmit(l);},onInterruptInputCancel:()=>{this.hideInterruptInput();},onShowInterruptInput:()=>{this.showInterruptInput();},onScrollUp:()=>this.appInstance?.scrollUp?.(),onScrollDown:()=>this.appInstance?.scrollDown?.(),onPageUp:()=>this.appInstance?.pageUp?.(),onPageDown:()=>this.appInstance?.pageDown?.(),onScrollToTop:()=>this.appInstance?.scrollToTop?.(),onScrollToBottom:()=>this.appInstance?.scrollToBottom?.()})},t=ht(),n=Hl(),r=t||n;t&&p.info("INK","WSL detected, disabling incremental rendering for compatibility"),n&&p.info("INK","Windows detected, disabling incremental rendering for compatibility");let o=process.env.NEOX_ALT_SCREEN;this.altScreenEnabled=o==="1"||o==="true";let i=this.installTTYWriteGuard();this.appInstance=vo(A.createElement(e,null),{stdout:i,stdin:process.stdin,exitOnCtrlC:false,patchConsole:false,incrementalRendering:!r,useAltScreen:this.altScreenEnabled}),p.info("INK",`Renderer mode: ${this.altScreenEnabled?"alt-screen":"inline"}`),t&&setTimeout(()=>{this.forceUpdate&&(p.debug("INK","WSL startup render nudge"),this.forceUpdate());},0);try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?2004h"),p.info("INK","Bracketed paste mode enabled for image paste detection"));}catch(a){p.warn("INK","Failed to enable bracketed paste mode",{error:a});}if(this.altScreenEnabled)try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?1000h"),this.writeDirectStdout("\x1B[?1002h"),this.writeDirectStdout("\x1B[?1006h"),p.info("INK","Mouse SGR mode enabled for wheel scrolling"));}catch(a){p.warn("INK","Failed to enable mouse mode",{error:a});}try{p.debug("TTY_STATE","\u{1F6E1}\uFE0F [INK] Re-registering SIGTSTP ignore handler after Ink starts"),process.removeAllListeners("SIGTSTP"),process.on("SIGTSTP","ignore"),p.debug("TTY_STATE","\u2705 [INK] SIGTSTP handler re-registered (Ctrl+Z ignored)"),process.env.CLI_DEBUG==="1"&&p.debug("INK","SIGTSTP handler registered (Ctrl+Z ignored)");}catch{p.debug("TTY_STATE","\u26A0\uFE0F [INK] SIGTSTP not supported on this platform"),process.env.CLI_DEBUG==="1"&&p.debug("INK","SIGTSTP not supported on this platform");}p.info("INK","Ink runtime started");}stop(){try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?2004l"),p.debug("INK","Bracketed paste mode disabled"));}catch(e){p.debug("INK","Failed to disable bracketed paste mode (ignored)",{error:e});}if(this.altScreenEnabled)try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?1006l"),this.writeDirectStdout("\x1B[?1002l"),this.writeDirectStdout("\x1B[?1000l"),p.debug("INK","Mouse mode disabled"));}catch(e){p.debug("INK","Failed to disable mouse mode (ignored)",{error:e});}this.appInstance&&(this.appInstance.unmount(),this.appInstance=null,p.info("INK","Ink runtime stopped")),this.restoreTTYWriteGuard(),this.stopMemorySampler(),this.altScreenEnabled=false;}installTTYWriteGuard(){if(this.ttyWriteGuardActive)return this.inkStdout??process.stdout;this.originalStdoutWrite=process.stdout.write.bind(process.stdout),this.originalStderrWrite=process.stderr.write.bind(process.stderr);let e=t=>(n,r,o)=>{if(typeof r=="function"&&(o=r,r=void 0),this.allowTTYWriteDepth>0){let i=t==="stdout"?this.originalStdoutWrite:this.originalStderrWrite;if(i)return i(n,r,o)}return this.handleSuppressedWrite(t,n),typeof o=="function"&&o(),true};return process.stdout.write=e("stdout"),process.stderr.write=e("stderr"),this.inkStdout=this.createInkStdoutProxy(),this.ttyWriteGuardActive=true,p.info("INK","TTY output guard enabled"),this.inkStdout}restoreTTYWriteGuard(){this.ttyWriteGuardActive&&(this.originalStdoutWrite&&(process.stdout.write=this.originalStdoutWrite),this.originalStderrWrite&&(process.stderr.write=this.originalStderrWrite),this.ttyWriteGuardActive=false,this.inkStdout=null,p.info("INK","TTY output guard disabled"));}createInkStdoutProxy(){let e=process.stdout,t=this.originalStdoutWrite||e.write.bind(e);return new Proxy(e,{get:(n,r,o)=>{if(r==="write")return (a,l,c)=>this.withDirectTTYWrite(()=>t(a,l,c));let i=Reflect.get(n,r,o);return typeof i=="function"?i.bind(n):i}})}withDirectTTYWrite(e){this.allowTTYWriteDepth+=1;try{return e()}finally{this.allowTTYWriteDepth=Math.max(0,this.allowTTYWriteDepth-1);}}writeDirectStdout(e){let t=this.originalStdoutWrite||process.stdout.write.bind(process.stdout);this.withDirectTTYWrite(()=>{t(e);});}handleSuppressedWrite(e,t){if(t==null)return;let n="";if(typeof t=="string")n=t;else if(Buffer.isBuffer(t))n=t.toString("utf8");else try{n=String(t);}catch{return}if(!n||n.trim().length===0)return;let r=n.length>2e3?`${n.slice(0,2e3)}...`:n;p.warn("TTY_SUPPRESS",`[${e}] ${r}`);}addMessage(e){this.messages=[...this.messages.slice(-4),e],this.forceUpdate?.();}addEntry(e){let t={...e,id:this.nextEntryId++,timestamp:new Date};if(e.type==="user"){let n=!!e.message,r=e.message?.content;p.debug("INK_RUNTIME",`[addEntry] user entry id=${t.id}, hasMessage=${n}, contentType=${typeof r}, isArray=${Array.isArray(r)}`);}return this.staticEntries.length>=s.MAX_QUEUED_STATIC&&(p.warn("INK_RUNTIME",`Static queue reached limit (${this.staticEntries.length}). Forcing immediate render to prevent OOM.`),this.forceUpdate?.(),setImmediate(()=>{this.clearStaticEntries();})),this.staticEntries=[...this.staticEntries,t],p.debug("INK_RUNTIME",`Queued static entry ${t.id}. Pending static: ${this.staticEntries.length}, type: ${e.type}, forceUpdate: ${!!this.forceUpdate}`),this.forceUpdate?this.forceUpdate():setImmediate(()=>{this.forceUpdate?.();}),t.id}updateEntry(e,t){let n=this.staticEntries.findIndex(o=>o.id===e);if(n>=0){this.staticEntries=this.staticEntries.map((o,i)=>i===n?{...o,...t}:o),this.forceUpdate?.();return}let r=this.pendingEntries.findIndex(o=>o.id===e);r>=0&&(this.pendingEntries=this.pendingEntries.map((o,i)=>i===r?{...o,...t}:o),this.forceUpdate?.());}getEntry(e){return this.staticEntries.find(t=>t.id===e)||this.pendingEntries.find(t=>t.id===e)}addPendingEntry(e){let t={...e,id:this.nextEntryId++,timestamp:new Date};if(this.pendingEntries.length>=10){p.warn("INK_RUNTIME",`Too many pending entries (${this.pendingEntries.length}). Auto-committing oldest.`);let r=this.pendingEntries[0];this.staticEntries=[...this.staticEntries,r],this.pendingEntries=this.pendingEntries.slice(1);}return this.pendingEntries=[...this.pendingEntries,t],p.debug("INK_RUNTIME",`Added pending entry ${t.id}. Pending: ${this.pendingEntries.length}`),this.forceUpdate?.(),t.id}updatePendingEntry(e,t){let n=this.pendingEntries.findIndex(r=>r.id===e);n>=0&&(this.pendingEntries=this.pendingEntries.map((r,o)=>o===n?{...r,...t}:r),this.forceUpdate?.());}updatePendingEntryByKey(e,t){let n=this.pendingEntries.findIndex(r=>r.entryKey===e);if(n>=0)this.pendingEntries=this.pendingEntries.map((r,o)=>o===n?{...r,...t,entryKey:e,timestamp:new Date}:r);else {let r={...t,entryKey:e,id:this.nextEntryId++,timestamp:new Date};this.pendingEntries=[...this.pendingEntries,r];}this.forceUpdate?.();}commitPendingEntryByKey(e){let t=this.pendingEntries.findIndex(n=>n.entryKey===e);if(t>=0){let n=this.pendingEntries[t];return this.pendingEntries=this.pendingEntries.filter((r,o)=>o!==t),this.staticEntries=[...this.staticEntries,{...n,isStreaming:false,isComplete:true}],p.debug("INK_RUNTIME",`Committed entry by key ${e}. Static: ${this.staticEntries.length}, Pending: ${this.pendingEntries.length}`),this.forceUpdate?.(),true}return false}commitPendingEntry(e){let t=this.pendingEntries.findIndex(n=>n.id===e);if(t>=0){let n=this.pendingEntries[t];this.pendingEntries=this.pendingEntries.filter((r,o)=>o!==t),this.staticEntries=[...this.staticEntries,n],p.debug("INK_RUNTIME",`Committed entry ${e}. Static: ${this.staticEntries.length}, Pending: ${this.pendingEntries.length}`),this.forceUpdate?.();}else p.warn("INK_RUNTIME",`Cannot commit entry ${e} - not found in pending entries`);}clearPendingEntries(){this.pendingEntries.length>0&&(this.pendingEntries=[],this.forceUpdate?.());}commitAllPendingEntries(){if(this.pendingEntries.length>0){let e=this.pendingEntries.map(t=>({...t,isStreaming:false,isComplete:true}));this.staticEntries=[...this.staticEntries,...e],this.pendingEntries=[],p.debug("INK_RUNTIME",`Committed ${e.length} pending entries on run complete`),this.forceUpdate?.();}}updateStreamingStats(e){this.streamingTokens=e,this.streamingStartTime||(this.streamingStartTime=Date.now()),this.forceUpdate?.();}resetStreamingStats(){this.streamingTokens=0,this.streamingStartTime=null;}getAccumulatedRunTime(){if(this.isRunning&&this.runningStartTime!==null){let e=Math.floor((Date.now()-this.runningStartTime)/1e3);return this.accumulatedRunTime+e}return this.accumulatedRunTime}resetAccumulatedRunTime(){this.accumulatedRunTime=0,this.runningStartTime=null,this.forceUpdate?.();}setCompressionMode(e){this.compressionMode!==e&&(this.compressionMode=e,this.forceUpdate?.());}setCompactionThreshold(e){this.compactionThreshold!==e&&(this.compactionThreshold=e,this.forceUpdate?.());}updateAgentContext(e,t){this.agentContextStats.set(e,t),this.forceUpdate?.();}clearAgentContext(e){this.agentContextStats.has(e)&&(this.agentContextStats.delete(e),this.forceUpdate?.());}clearAllAgentContexts(){this.agentContextStats.size>0&&(this.agentContextStats.clear(),this.forceUpdate?.());}getAgentContextStats(){return Array.from(this.agentContextStats.values()).sort((t,n)=>t.agentId==="supervisor"?-1:n.agentId==="supervisor"?1:t.agentId.localeCompare(n.agentId))}updateLastMessage(e){if(this.messages.length===0)return;let t=this.messages[this.messages.length-1];if(typeof t.content=="string")t.content=e;else if(Array.isArray(t.content)){let n=t.content.find(r=>r.type==="text");n&&"text"in n&&(n.text=e);}this.forceUpdate?.();}getLastMessageText(){if(this.messages.length===0)return "";let e=this.messages[this.messages.length-1];if(typeof e.content=="string")return e.content;if(Array.isArray(e.content)){let t=e.content.find(n=>n.type==="text");if(t&&"text"in t)return t.text||""}return ""}setRunning(e){if(this.isRunning!==e){if(e)this.runningStartTime=Date.now();else if(this.runningStartTime!==null){let t=Math.floor((Date.now()-this.runningStartTime)/1e3);this.accumulatedRunTime+=t,this.runningStartTime=null;}this.isRunning=e,this.forceUpdate?.();}}triggerForceUpdate(){this.forceUpdate?.();}setStatusText(e){this.statusText!==e&&(this.statusText=e,this.forceUpdate?.());}setTokenStats(e){p.info("DEBUG_CTX",`InkRuntime.setTokenStats: received contextWindow=${e.contextWindow}, current=${this.tokenStats.contextWindow}`);let t=e.contextWindow!==void 0?e.contextWindow:this.tokenStats.contextWindow;(this.tokenStats.input!==e.input||this.tokenStats.output!==e.output||this.tokenStats.total!==e.total||this.tokenStats.contextWindow!==t||this.tokenStats.tokensUsedForContext!==e.tokensUsedForContext||this.tokenStats.pressure!==e.pressure||this.tokenStats.toolTokens!==e.toolTokens||this.tokenStats.messageTokens!==e.messageTokens||this.tokenStats.systemTokens!==e.systemTokens||this.tokenStats.userTokens!==e.userTokens||this.tokenStats.assistantTokens!==e.assistantTokens||this.tokenStats.toolCallTokens!==e.toolCallTokens||this.tokenStats.toolResultTokens!==e.toolResultTokens||this.tokenStats.cacheCreationTokens!==e.cacheCreationTokens||this.tokenStats.cacheReadTokens!==e.cacheReadTokens)&&(this.tokenStats={...e,contextWindow:t,tokensUsedForContext:e.tokensUsedForContext??this.tokenStats.tokensUsedForContext,pressure:e.pressure??this.tokenStats.pressure},p.info("DEBUG_CTX",`InkRuntime.setTokenStats: after update contextWindow=${this.tokenStats.contextWindow}`),this.forceUpdate?.());}clearMessages(){p.warn("INK_RUNTIME",`clearMessages called! This will clear pending/static queues. Messages: ${this.messages.length}`),this.messages=[],this.staticEntries=[],this.pendingEntries=[],this.forceUpdate?.();}setCommandOutput(e){p.debug("INK_RUNTIME","Set command output",{lineCount:e.length}),this.commandOutput=e,this.forceUpdate?.();}clearCommandOutput(){p.debug("INK_RUNTIME","Clear command output"),this.commandOutput=[],this.forceUpdate?.();}attachImage(e){let t;if(typeof e=="string")if(e.startsWith("data:")){let r=e.match(/^data:([^;]+);base64,(.+)$/);if(r){let o=`image_${Date.now()}.png`;t={mediaType:r[1],data:r[2],name:o};}else {p.error("INK_RUNTIME","Invalid data URL format",{imageData:e});return}}else {let r=e.split("/").pop()||e;t={path:e,name:r};}else t=e;if(this.attachedImages.some(r=>r.path&&t.path&&r.path===t.path||r.data&&t.data&&r.data===t.data)){p.debug("INK_RUNTIME","Image already attached");return}this.attachedImages.push(t),p.info("INK_RUNTIME",`\u{1F4CE} Attached image #${this.attachedImages.length}: ${t.name||"unnamed"}`),this.forceUpdate?.();}clearAttachedImages(){this.attachedImages.length>0&&(p.debug("INK_RUNTIME",`Cleared ${this.attachedImages.length} attached images`),this.attachedImages=[],this.forceUpdate?.());}getAttachedImages(){return [...this.attachedImages]}showInterruptInput(){p.debug("INK_RUNTIME","Show interrupt input"),this.interruptInputActive=true,this.forceUpdate?.();}hideInterruptInput(){p.debug("INK_RUNTIME","Hide interrupt input"),this.interruptInputActive=false,this.forceUpdate?.();}handleInterruptInputSubmit(e){p.debug("INK_RUNTIME","Handle interrupt input submit",{text:e.substring(0,50)}),this.hideInterruptInput(),this.callbacks.onSubmit(e);}setGetPendingMessages(e){this.getPendingMessages=e;}getQueuedMessagesForDisplay(){return this.getPendingMessages?this.getPendingMessages().map((e,t)=>({id:t+1,text:e.text,timestamp:e.timestamp})):[]}hasQueuedMessages(){return this.getPendingMessages?this.getPendingMessages().length>0:false}addAgentSpawnEntry(e,t,n,r){return this.addEntry({type:"agent_spawn",agentId:e,agentIndex:t,agentStatus:"running",agentTask:n,agentModel:r,text:n})}addAgentProgressEntry(e,t,n,r){return this.addEntry({type:"agent_progress",agentId:e,agentIndex:t,agentStatus:"running",agentProgress:n,text:r})}addAgentCompleteEntry(e,t,n){return this.addEntry({type:"agent_complete",agentId:e,agentIndex:t,agentStatus:"completed",text:n})}addAgentErrorEntry(e,t,n){return this.addEntry({type:"agent_error",agentId:e,agentIndex:t,agentStatus:"error",agentError:n,text:n})}setVersion(e){this.version=e,this.forceUpdate?.();}setProvider(e){this.provider=e,this.forceUpdate?.();}setModel(e){this.model=e,this.forceUpdate?.();}setRunMode(e){this.runMode=e,e!=="network"&&(this.networkStats=null),this.forceUpdate?.();}upsertSidebarAgent(e){let t=this.sidebarAgents.find(n=>n.id===e.id);t?(t.role=e.role,t.task=e.task,t.status=e.status,e.toolCount!==void 0&&(t.toolCount=e.toolCount),e.tokens!==void 0&&(t.tokens=e.tokens),t.elapsed=Math.round((Date.now()-t.startTime)/1e3)):this.sidebarAgents.push({id:e.id,role:e.role,task:e.task,status:e.status,toolCount:e.toolCount??0,tokens:e.tokens??0,elapsed:0,startTime:Date.now()}),this.forceUpdate?.();}removeSidebarAgent(e){this.sidebarAgents=this.sidebarAgents.filter(t=>t.id!==e),this.forceUpdate?.();}clearSidebarAgents(){this.sidebarAgents=[],this.forceUpdate?.();}getSidebarAgents(){let e=Date.now();for(let t of this.sidebarAgents)t.status==="running"&&(t.elapsed=Math.round((e-t.startTime)/1e3));return this.sidebarAgents}updateNetworkStats(e){this.networkStats||(this.networkStats={teamSize:0,activeAgents:0,totalInputTokens:0,totalOutputTokens:0}),Object.assign(this.networkStats,e),this.forceUpdate?.();}clearNetworkStats(){this.networkStats=null,this.forceUpdate?.();}getNetworkStats(){return this.networkStats}updateCooperateStats(e){this.cooperateStats||(this.cooperateStats={models:[],totalInputTokens:0,totalOutputTokens:0}),Object.assign(this.cooperateStats,e),this.forceUpdate?.();}clearCooperateStats(){this.cooperateStats=null,this.forceUpdate?.();}getCooperateStats(){return this.cooperateStats}setPlanSteps(e){this.currentPlanSteps=e,this.forceUpdate?.();}getPlanSteps(){return this.currentPlanSteps}clearPlanSteps(){this.currentPlanSteps=[],this.forceUpdate?.();}setWorkDir(e){this.workDir=e,this.forceUpdate?.();}setShowHeader(e){this.showHeader=e,this.forceUpdate?.();}setThinkingEnabled(e){this.thinkingEnabled!==e&&(this.thinkingEnabled=e,this.forceUpdate?.());}showSelectMenu(e){if(p.debug("INK_RUNTIME","Show select menu",{options:e}),process.stdin.isTTY&&!process.stdin.destroyed){let t=process.stdin.isPaused?.()||false;process.stdin.isRaw||false;if(t){process.env.CLI_DEBUG==="1"&&p.debug("INK_RUNTIME",`showSelectMenu: Resuming stdin (wasPaused=${t})`);try{process.stdin.resume(),p.info("INK_RUNTIME","\u2713 Stdin resumed for SelectMenu");}catch(r){p.error("INK_RUNTIME","Failed to resume stdin for SelectMenu",{error:r});}}}this.selectMenuOptions=e,this.forceUpdate?.();}hideSelectMenu(){if(p.debug("INK_RUNTIME","Hide select menu"),this.selectMenuOptions){let e=this.selectMenuOptions.choices.length+5;process.stdout.write(S$.eraseLines(e));}this.selectMenuOptions=null,this.forceUpdate?.(),process.nextTick(()=>{this.forceUpdate?.();});}isSelectMenuActive(){return this.selectMenuOptions!==null}updateSelectMenuIndex(e){if(!this.selectMenuOptions)return;let t=Math.max(0,this.selectMenuOptions.choices.length-1),n=Math.max(0,Math.min(e,t));this.selectMenuOptions={...this.selectMenuOptions,initialIndex:n},this.forceUpdate?.();}showTextPrompt(e){if(p.debug("INK_RUNTIME","Show text prompt",{options:e}),process.stdin.isTTY&&!process.stdin.destroyed){let t=process.stdin.isPaused?.()||false;if(t){process.env.CLI_DEBUG==="1"&&p.debug("INK_RUNTIME",`showTextPrompt: Resuming stdin (wasPaused=${t})`);try{process.stdin.resume(),p.info("INK_RUNTIME","\u2713 Stdin resumed for TextPrompt");}catch(n){p.error("INK_RUNTIME","Failed to resume stdin for TextPrompt",{error:n});}}}this.textPromptOptions=e,this.forceUpdate?.();}hideTextPrompt(){p.debug("INK_RUNTIME","Hide text prompt"),this.textPromptOptions=null,this.forceUpdate?.();}showContextMenu(){p.debug("INK_RUNTIME","Show context menu"),this.contextMenuActive=true,this.forceUpdate?.();}hideContextMenu(){p.debug("INK_RUNTIME","Hide context menu"),this.contextMenuActive=false,this.forceUpdate?.();}getContextMenuActive(){return this.contextMenuActive}clearStaticEntries(){if(this.staticEntries.length===0)return;let e=this.staticEntries.length;p.debug("INK_RUNTIME",`Clearing ${e} static entries from memory`),this.staticEntries=[],global.gc&&e>10&&(p.debug("INK_RUNTIME","Triggering manual GC after clearing entries"),setImmediate(()=>{global.gc&&global.gc();}));}startMemorySampler(){this.memoryLogTimer||process.env.INK_MEM!=="1"||(this.memoryLogTimer=setInterval(()=>{let e=process.memoryUsage(),t=n=>Math.round(n/1024/1024*10)/10;p.info("INK_MEM","usage",{rssMB:t(e.rss),heapUsedMB:t(e.heapUsed),heapTotalMB:t(e.heapTotal),externalMB:t(e.external),arrayBuffersMB:t(e.arrayBuffers??0),pendingEntries:this.pendingEntries.length,queuedStatic:this.staticEntries.length,isRunning:this.isRunning});},1e4));}stopMemorySampler(){this.memoryLogTimer&&(clearInterval(this.memoryLogTimer),this.memoryLogTimer=null);}};te();ja();var A$=s=>{let e=new WeakSet;try{return JSON.stringify(s,(t,n)=>{if(typeof n=="bigint")return n.toString();if(n instanceof Error)return {name:n.name,message:n.message,stack:n.stack};if(typeof n=="function")return "[Function]";if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular]";e.add(n);}return n})}catch{try{return String(s)}catch{return "[Unserializable]"}}},_u=class{runtime;config;callbacks;currentThinkingText="";lastMessageRole=null;lastEntryId=null;tokenStats={inputTokens:0,outputTokens:0,totalTokens:0};memory;streamingTextPendingId=null;streamingReasoningPendingId=null;streamingTextBuffer="";streamingReasoningBuffer="";streamingReasoningType="thinking";streamingReasoningSourceLabel=void 0;streamingToolChars=0;hasInferredThinkingStatus=false;toolLogIdByToolId=new Map;toolLogDetailsByToolId=new Map;toolLogNameByToolId=new Map;toolLogOutputByToolId=new Map;toolLogSourceLabelByToolId=new Map;streamingSourceLabel=null;streamingSourceType=null;agentBuffers=new Map;activeAgentId=null;constructor(e){this.config=e,this.memory=e.memory,this.runtime=new Tu({onSubmit:(t,n)=>{this.callbacks?.onSubmit&&this.callbacks.onSubmit(t,n);},onInterrupt:()=>{this.callbacks?.onInterrupt&&this.callbacks.onInterrupt();},onExit:()=>{this.callbacks?.onExit&&this.callbacks.onExit();}}),e.getPendingMessages&&this.runtime.setGetPendingMessages(e.getPendingMessages);}start(e){this.callbacks=e,this.runtime.setVersion(this.config.version),this.runtime.setProvider(this.config.provider),this.runtime.setModel(this.config.model),this.runtime.setWorkDir(this.config.workDir),this.config.getCompletions&&this.runtime.setCompletionFunction(this.config.getCompletions),this.runtime.start(),p.info("INK_ADAPTER","Ink UI started");}stop(){this.runtime.stop(),this.callbacks=void 0,p.info("INK_ADAPTER","Ink UI stopped");}addUserMessage(e,t,n){let r=[{type:"text",text:e}];if(t&&t.length>0)for(let i of t)r.push({type:"image_url",image_url:{url:`file://${i.path}`}});let o={role:"user",content:r};this.lastEntryId=this.runtime.addEntry({type:"user",message:o,sourceLabel:n==="remote"?"Android":void 0}),this.lastMessageRole="user";}addAssistantMessage(e=""){if(e===""){this.lastMessageRole="assistant";return}let t={role:"assistant",content:[{type:"text",text:e}]};this.lastEntryId=this.runtime.addEntry({type:"assistant",message:t,isStreaming:false}),this.lastMessageRole="assistant";}addSupervisorMessage(e){let t={role:"user",content:[{type:"text",text:e}]};this.lastEntryId=this.runtime.addEntry({type:"supervisor",message:t}),this.lastMessageRole="user";}startSupervisorStreaming(){this.startAgentStreaming("Supervisor"),this.streamingSourceLabel="Supervisor",this.streamingSourceType="supervisor";}startExecutorStreaming(e){let t=e||"Executor";this.startAgentStreaming(t);}getStreamingSourceType(){return this.streamingSourceType}startAgentStreaming(e){this.agentBuffers.has(e)||this.agentBuffers.set(e,""),this.activeAgentId=e,this.lastMessageRole="assistant",p.debug("INK_ADAPTER",`Started agent streaming for ${e}`);}startWorkerStreaming(e){this.startAgentStreaming(e);}addWorkerTextDelta(e,t){this.streamText(t,e);}completeWorkerStreaming(e){this.completeTextStreaming(e);}addWorkerInfo(e,t,n,r="info"){let i=`${`[${e}]`} ${t}`,a=r==="error"?"warning":r;this.addInfo(i,n,a);}streamText(e,t){let n=Date.now(),r=t||this.activeAgentId||"default";p.debug("INK_ADAPTER",`streamText: ${e.length} chars to ${r}`,{snippet:e.substring(0,30),bufferExists:this.agentBuffers.has(r)});let o=Date.now()-n;o>10&&p.warn("INK_ADAPTER",`\u26A0\uFE0F streamText slow: ${o}ms for ${e.length} chars`);let i=this.agentBuffers.get(r)||"";this.agentBuffers.set(r,i+e);}addTextDelta(e,t){p.debug("INK_ADAPTER",`addTextDelta called: ${e.length} chars, agentId=${t||"default"}`,{delta:e.substring(0,50)}),this.streamText(e,t);}addAgentTextDelta(e,t,n){p.debug("INK_ADAPTER",`addAgentTextDelta: ${e.length} chars, agentId=${t}`,{delta:e.substring(0,50)}),this.agentBuffers.has(t)||this.agentBuffers.set(t,"");let r=this.agentBuffers.get(t)||"";this.agentBuffers.set(t,r+e);let i={role:"assistant",content:[{type:"text",text:this.agentBuffers.get(t)||""}]};this.runtime.updatePendingEntryByKey(t,{type:"assistant",message:i,isStreaming:true,isComplete:false,sourceLabel:n||t});}bufferAgentTextOnly(e,t){this.agentBuffers.has(t)||this.agentBuffers.set(t,"");let n=this.agentBuffers.get(t)||"";this.agentBuffers.set(t,n+e);}flushAgentBuffer(e){let t=this.agentBuffers.get(e)||"";return this.agentBuffers.delete(e),t}commitPendingEntryByKey(e){return this.agentBuffers.has(e)&&this.agentBuffers.delete(e),this.runtime.commitPendingEntryByKey(e)}addToolCall(e,t){let n={role:"assistant",content:[{type:"tool_use",id:`tool_${Math.floor(Date.now())}`,name:e,input:t}]};this.runtime.addMessage(n),this.lastMessageRole="tool_call";}addToolCallEntry(e,t,n){p.debug("INK_ADAPTER","Add tool call entry",{toolName:e,sourceLabel:n?.sourceLabel});let r=`entry_${Date.now()}_${Math.random().toString(36).slice(2,6)}`;this.startToolCallWithId(r,e,t,n);}addToolResult(e,t=false){let n={role:"user",content:[{type:"tool_result",tool_use_id:`tool_${Math.floor(Date.now())}`,content:e,is_error:t}]};this.runtime.addMessage(n),this.lastMessageRole="tool_result";}addEntry(e){return p.debug("INK_ADAPTER",`AddEntry: ${e.type}`,{text:e.text}),this.runtime.addEntry(e)}addInfo(e,t,n="info",r){p.info("INK_ADAPTER",`Info: ${e}`,t?{details:t}:void 0);let o=n==="warning"||e.includes("\u26A0")||e.includes("\u23F3")||e.includes("\u23F1\uFE0F")||e.includes("\u{1F504}");this.runtime.addEntry({type:o?"warning":"info",text:e,details:t,sourceLabel:r});}addError(e,t){let n=typeof t=="string"?t:t?.details,r=typeof t=="object"?t?.sourceLabel:void 0;p.error("INK_ADAPTER",e,n?{details:n}:void 0),this.runtime.addEntry({type:"error",text:e,details:n,sourceLabel:r});}addWarning(e,t,n){p.warn("INK_ADAPTER",e,t?{details:t}:void 0),this.runtime.addEntry({type:"warning",text:e,details:t,sourceLabel:n?.sourceLabel});}addCompacting(e,t){p.info("INK_ADAPTER",`Compacting: ${e}`,t?{details:t}:void 0),this.runtime.addEntry({type:"compacting",text:e,details:t});}updateStatus(e,t){if(t==="tool_call"&&e.includes("Streaming:")){let n=e.match(/\((\d+) chars\)/);if(n){let r=parseInt(n[1],10);this.streamingToolChars=r,this.runtime.updateStreamingStats(r);}}else t!=="tool_call"&&(this.streamingToolChars=0);t==="compacting"||t==="thinking"||t==="tool_call"?this.runtime.setRunning(true):(t==="complete"||t==="error")&&this.runtime.setRunning(false),this.runtime.setStatusText(e);}setRunning(e){this.runtime.setRunning(e);}startSessionTimer(){}getAccumulatedRunTime(){return this.runtime.getAccumulatedRunTime()}resetAccumulatedRunTime(){this.runtime.resetAccumulatedRunTime();}setCompressionMode(e){this.runtime.setCompressionMode(e);}setCompactionThreshold(e){this.runtime.setCompactionThreshold(e/100);}updateTokenStats(e,t){this.tokenStats.inputTokens=e,this.tokenStats.outputTokens=t,this.tokenStats.totalTokens=e+t,this.runtime.setTokenStats({input:e,output:t,total:e+t});}updateAgentContext(e,t){this.runtime.updateAgentContext(e,t);}clearAgentContext(e){this.runtime.clearAgentContext(e);}clearAllAgentContexts(){this.runtime.clearAllAgentContexts();}getTokenStats(){return {...this.tokenStats}}setTokenStats(e,t,n){p.info("DEBUG_CTX",`InkUIAdapter.setTokenStats: input=${e}, output=${t}, extras.contextWindow=${n?.contextWindow}`),this.tokenStats={inputTokens:e,outputTokens:t,totalTokens:e+t,...n};let r=n?.anthropicCacheCreationTokens||n?.openaiCachedTokens||n?.cacheCreationTokens,o=n?.anthropicCacheReadTokens||n?.cacheReadTokens,i=n?.contextWindow||0,a=n?.tokensUsedForContext||e+t+(o||0),l=i>0?a/i:0;p.info("DEBUG_CTX",`InkUIAdapter.setTokenStats: passing to runtime contextWindow=${n?.contextWindow}, calculated contextWindow=${i}`),this.runtime.setTokenStats({input:e,output:t,total:e+t,contextWindow:n?.contextWindow,tokensUsedForContext:n?.tokensUsedForContext,pressure:l,systemTokens:n?.systemTokens,userTokens:n?.userTokens,assistantTokens:n?.assistantTokens,toolCallTokens:n?.toolCallTokens,toolResultTokens:n?.toolResultTokens,toolTokens:n?.toolTokens,messageTokens:n?.messageTokens,cacheCreationTokens:r,cacheReadTokens:o});}startThinking(){this.streamingReasoningBuffer="",this.streamingReasoningType="thinking",this.hasInferredThinkingStatus=false,this.updateStatus(ku(),"thinking");}streamThinking(e,t="thinking",n){if(this.streamingReasoningBuffer+=e,n&&(this.streamingReasoningSourceLabel=n),!this.hasInferredThinkingStatus&&this.streamingReasoningBuffer.length>30){let r=Px(this.streamingReasoningBuffer);r&&(this.updateStatus(r,"thinking"),this.hasInferredThinkingStatus=true);}this.streamingReasoningPendingId?this.runtime.updatePendingEntry(this.streamingReasoningPendingId,{text:this.streamingReasoningBuffer}):(this.streamingReasoningType=t,this.streamingReasoningPendingId=this.runtime.addPendingEntry({type:t,text:this.streamingReasoningBuffer,isStreaming:true}));}endThinking(){if(!this.streamingReasoningPendingId){this.updateStatus("","info");return}try{this.streamingReasoningBuffer&&this.streamingReasoningBuffer.trim().length>0?(this.runtime.updatePendingEntry(this.streamingReasoningPendingId,{isStreaming:!1,isComplete:!0,sourceLabel:this.streamingReasoningSourceLabel}),this.runtime.commitPendingEntry(this.streamingReasoningPendingId),p.debug("INK_ADAPTER",`Committed reasoning entry (${this.streamingReasoningBuffer.length} chars)`)):p.debug("INK_ADAPTER","Discarding empty reasoning entry (no content)");}catch(e){p.warn("INK_ADAPTER","Failed to commit reasoning entry",{error:e});}finally{this.streamingReasoningPendingId=null,this.streamingReasoningBuffer="",this.streamingReasoningSourceLabel=void 0,this.runtime.resetStreamingStats(),this.updateStatus("","info");}}startTaskTimer(){this.runtime.setRunning(true);}stopTaskTimer(){this.runtime.setRunning(false);}setStreamingTokens(e){this.runtime.updateStreamingStats(e);}clear(){this.runtime.clearMessages(),this.lastMessageRole=null;}resetStreamingState(){this.agentBuffers.clear(),this.activeAgentId=null,this.streamingTextBuffer="",this.streamingTextPendingId=null,this.streamingReasoningBuffer="",this.streamingReasoningPendingId=null,this.currentThinkingText="",this.streamingToolChars=0,this.runtime.clearPendingEntries(),this.runtime.resetStreamingStats(),this.runtime.setStatusText(""),p.debug("INK_ADAPTER","Reset streaming state (cleared all pending entries and buffers)");}finalizeStreamingState(){let e=Array.from(this.agentBuffers.keys());if(e.length>0)for(let t of e)this.completeTextStreaming(t);else this.completeTextStreaming();this.completeReasoningStreaming();}startReasoningStreaming(){this.startThinking();}streamReasoningText(e){this.streamThinking(e);}addReasoningDelta(e,t){this.streamThinking(e,"reasoning",t);}completeReasoningStreaming(e){e&&(this.streamingReasoningSourceLabel=e),this.endThinking();}addThinking(e){}completeTextStreaming(e){let t=e||this.activeAgentId||"default",n=this.agentBuffers.get(t)||"";if(!(n&&n.trim().length>0)){p.debug("INK_ADAPTER",`Complete text streaming (${t}) - no text to commit`),this.agentBuffers.delete(t),this.runtime.commitPendingEntryByKey(t),(t==="default"||t===this.activeAgentId)&&(this.streamingTextPendingId=null,this.streamingSourceLabel=null,this.streamingSourceType=null,this.runtime.resetStreamingStats());return}try{if(this.runtime.commitPendingEntryByKey(t))p.debug("INK_ADAPTER",`Complete text streaming (${t}) - committed pending entry ${n.length} chars`);else {let i={role:"assistant",content:[{type:"text",text:n}]};this.runtime.addEntry({type:"assistant",message:i,isStreaming:!1,isComplete:!0,sourceLabel:t==="default"?void 0:t}),p.debug("INK_ADAPTER",`Complete text streaming (${t}) - created static entry from buffer ${n.length} chars`);}}catch(o){p.warn("INK_ADAPTER","Failed to commit text entry",{error:o});}finally{this.agentBuffers.delete(t),(t==="default"||t===this.activeAgentId)&&(this.streamingTextPendingId=null,this.streamingSourceLabel=null,this.streamingSourceType=null,this.lastMessageRole="assistant",this.runtime.resetStreamingStats()),this.activeAgentId===t&&(this.activeAgentId=null);}}printCommandOutput(e){p.debug("INK_ADAPTER",`Command output: ${e}`);}setCommandOutputLines(e){p.debug("INK_ADAPTER",`Set command output lines: ${e.length}`),this.runtime.setCommandOutput(e);}clearCommandOutputLines(){p.debug("INK_ADAPTER","Clear command output lines"),this.runtime.clearCommandOutput();}startToolCallWithId(e,t,n,r){p.debug("INK_ADAPTER",`Start tool call: ${t}`,{toolId:e,args:n});let o=r?.sourceLabel,i=t,a=n;t==="call_tool"&&n?.name&&(i=n.name,a=n.args||{});let l=this.buildToolCallDetails(a,r),d={readfile:"readfile",Read:"readfile",read_file:"readfile",smart_read:"readfile",read:"readfile",search:"search",Grep:"search",grep:"search",search_files:"search_files",Glob:"search_files",glob:"search_files",find_files:"search_files",show_tree:"show_tree",smart_tree:"show_tree",list_directory:"show_tree",ls:"show_tree",file_update:"file_update",Edit:"file_update",edit_file:"file_update",Write:"file_update",write_file:"file_update",delete_file:"file_update",rename_file:"file_update",apply_patch:"file_update",create_directory:"file_update",command_exec:"command_exec",Bash:"command_exec",bash:"command_exec",shell:"command_exec",execute_command:"command_exec",execute_shell:"command_exec",code_exec:"code_exec",execute_python:"code_exec",execute_javascript:"code_exec",web_search:"web_search",WebSearch:"web_search",web_fetch:"web_fetch",WebFetch:"web_fetch",browser_debug:"browser_debug",debug_in_browser:"browser_debug",git_status:"git_status",git_diff:"git_diff",git_log:"git_log",git_commit:"git_commit",git_blame:"git_diff",git_branch:"git_running",git_branch_list:"git_running",TodoWrite:"todo",TodoRead:"todo",Task:"task",NotebookEdit:"notebook",NotebookRead:"notebook",AskUserQuestion:"ask_user",ask_user:"ask_user",run_tests:"command_exec",run_lint:"command_exec",run_format:"command_exec",build_index:"search",search_symbol:"search",get_definitions:"search",get_references:"search",index_stats:"search",analyze_code:"search"}[i]||"tool_call",m=this.buildToolSummaryText(d,i,a),g=this.runtime.addPendingEntry({type:d,text:m,details:l,entryKey:e,isStreaming:true,sourceLabel:o});this.toolLogIdByToolId.set(e,g),this.toolLogDetailsByToolId.set(e,l||""),this.toolLogNameByToolId.set(e,i),o&&this.toolLogSourceLabelByToolId.set(e,o);let h=Su(i,a);this.updateStatus(h,"tool_call");}updateToolCallOutput(e,t,n){p.debug("INK_ADAPTER",`Update tool output: ${e}`,{output:t});let r=this.toolLogIdByToolId.get(e);if(!r)return;let o=this.toolLogDetailsByToolId.get(e)||"",i=this.formatToolOutput(t,n?.truncated);i&&this.toolLogOutputByToolId.set(e,i);let a=this.mergeToolDetails(o,i);this.runtime.updateEntry(r,{details:a,isStreaming:true});}completeToolCall(e,t){p.debug("INK_ADAPTER",`Complete tool call: ${e}`);let n=this.toolLogIdByToolId.get(e);if(!n){t?.result&&this.addToolResult(t.result,t.isError||false);return}let r=this.toolLogSourceLabelByToolId.get(e),o=this.toolLogNameByToolId.get(e)||"",i=this.isGitResultTool(o),a=t?.summary||t?.error||"",l=this.toolLogOutputByToolId.get(e)||"",c=(a||l||"").replace(/\r\n?/g,`
|
|
3757
|
+
`,N)+1,ge=z[$+1].length,_e=Math.min(F,ge),fe=Ae+_e;C(s.length-fe);}return}if(ne.leftArrow){C(Math.min(b+1,s.length));return}if(ne.rightArrow){C(Math.max(b-1,0));return}if(ne.home||ne.ctrl&&X==="a"){C(s.length);return}if(ne.end||ne.ctrl&&X==="e"){C(0);return}if(ne.backspace||ne.delete){if(b===s.length){s.length===0&&a>0&&c&&c();return}let Y=N-1,Ae=s.slice(0,Y)+s.slice(Y+1);u(Ae);return}if(!ne.ctrl&&!ne.meta&&X){let Y=e$(X);if(!Y){process.env.CLI_DEBUG==="1"&&p.debug("INPUT_LINE","Dropped control/escape-only input chunk");return}let Ae=s.slice(0,N)+Y+s.slice(N);u(Ae);return}}}},{isActive:V});let Pe=!s,oe=()=>Pe?A.createElement(_,null,A.createElement(f,{color:"#9B8FD9",bold:true},"> "),A.createElement(f,{inverse:true}," "),A.createElement(f,{dimColor:true},e)):z.map((X,ne)=>{let Y=ne===$,Ae=z.slice(0,ne).reduce((pe,J)=>pe+J.length+1,0);Ae+X.length;let _e=-1;Y&&(_e=N-Ae);let fe=ne===0?"> ":"\u2502 ",Se="#9B8FD9";if(t)return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,{dimColor:true},X));if(Y&&_e>=0){let pe=X.slice(0,_e),J=X[_e]||" ",he=X.slice(_e+1);return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,null,pe,A.createElement(f,{inverse:true},J),he))}return A.createElement(_,{key:ne},A.createElement(f,{color:Se,bold:true},fe),A.createElement(f,null,X))});return A.createElement(_,{flexDirection:"column"},q&&!t&&A.createElement(_,{marginBottom:0},A.createElement(f,{dimColor:true}," \u21B5 ",G().ui.shiftEnterNewline," \u2502 Enter ",G().ui.enterToSend," \u2502 ",lt(G().ui.lineCount,{count:z.length}))),A.createElement(_,{flexDirection:"column"},oe()))};var t$=({isRunning:s,statusText:e="",tokenStats:t,streamingTokens:n=0,streamingStartTime:r=null,provider:o,model:i,onContextMenuToggle:a,agentContextStats:l=[],runMode:c="single",networkStats:u,cooperateStats:d})=>{let{columns:m=80}=Qt(),g=l.filter(J=>J.agentId!=="Main"),h=g.some(J=>J.status==="running"||J.status==="waiting"),y=s||c==="single"&&h,[b,C]=useState(null),[T,S]=useState(0),[E,v]=useState(0),[I,D]=useState(0),[O,k]=useState(0);useEffect(()=>{y?(C(r||Date.now()),S(0)):!y&&(t?.output||0)===0&&(C(null),S(0));},[y,r,t?.output]),useEffect(()=>{if(!y||b===null)return;let J=setInterval(()=>{S(Math.floor((Date.now()-b)/1e3));},500);return ()=>clearInterval(J)},[y,b]),useEffect(()=>{if(!y||n===0){v(0);return}let J=Math.floor(n);if(E===J)return;let he=J-E,K=Math.min(Math.abs(he),20),re=he/K,ve=setInterval(()=>{v(Be=>{let ce=Be+re;return Math.abs(ce-J)<1?J:ce});},50);return ()=>clearInterval(ve)},[n,y,E]),useEffect(()=>{let J=t?.output||0;if(I===J)return;let he=J-I;if(Math.abs(he)>100){D(J);return}let K=Math.max(Math.ceil(Math.abs(he)/10),3),re=he/K,ve=setInterval(()=>{D(Be=>{let ce=Be+re;return Math.abs(ce-J)<1?J:ce});},10);return ()=>clearInterval(ve)},[t?.output,I]),useEffect(()=>{if(!y){k(0);return}let he=(e||"Thinking...").length,K=setInterval(()=>{k(re=>(re+1)%(he+3));},80);return ()=>clearInterval(K)},[y,e]);let M=()=>{if(T<60)return `${T}s`;let J=Math.floor(T/60),he=T%60;return `${J}m ${he}s`},N=J=>J>=1e6?(J/1e6).toFixed(1)+"M":J>=1e3?(J/1e3).toFixed(1)+"K":J.toString(),x=t?.contextWindow||0,B=t?.tokensUsedForContext||t?.total||0,H=t?.pressure||0,W=Math.round(H*100),U=()=>H>.8?"red":H>.5?"yellow":"#B19CD9",z=J=>J.split("").map((K,re)=>{let se=re-O;return se>=0&&se<2?A.createElement(f,{key:re,color:"white",bold:true},K):se>=-1&&se<0?A.createElement(f,{key:re,color:"cyanBright"},K):A.createElement(f,{key:re,color:"cyan"},K)}),q=(J,he)=>{if(!J||_l(J)<=he)return J;let re=0,se=J.length,ve=J;for(;re<se;){let Be=Math.floor((re+se+1)/2),ce=J.slice(0,Be)+"...";_l(ce)<=he?(ve=ce,re=Be):se=Be-1;}return ve},P=(J,he)=>{if(!he||_l(J)<=he)return z(J);let K=q(J,he);return A.createElement(f,{color:"cyan"},K)},F=(()=>{switch(c){case "single":return {icon:"\u25C6",label:"Single",color:"cyan"};case "assistant":return {icon:"\u25C8",label:"Assistant",color:"magenta"};case "cooperate":return {icon:"\u25C7",label:"Cooperate",color:"yellow"};case "network":return {icon:"\u25C9",label:"Network",color:"blue"};default:return {icon:"\u25C6",label:"Single",color:"cyan"}}})(),V=e&&(e.includes("Streaming:")||e.toLowerCase().includes("stream")),Z=e?.match(/Streaming:\s*(\w+)/),ae=Z?Z[1]:null,be=l.length>0,Pe=l.find(J=>J.agentId==="Main"),oe=g.find(J=>J.status==="running")||g.find(J=>J.status==="waiting"),X=g.filter(J=>J.status==="running");X.length>1?`${X.length} agents running: ${X.map(J=>`${J.agentLabel}\u2192${J.currentTask||"..."}`).join(", ")}`:oe?`${oe.agentLabel}: ${oe.currentTask||(oe.status==="waiting"?"Waiting...":"Running...")}`:null;let Y=()=>g.length===0?null:A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"magenta"},g.length),A.createElement(f,{dimColor:true}," workers")),Ae=(J,he)=>{let K=J.status||"idle",re=K==="running",ve=(ye=>{switch(ye?.toLowerCase()){case "scout":return "cyan";case "explore":return "cyan";case "worker":return "green";case "task":return "green";case "verifier":return "yellow";case "compressor":return "blue";case "coordinator":return "magenta";default:return "magenta"}})(J.workerRole),Be=J.workerRole?J.workerRole.charAt(0).toUpperCase()+J.workerRole.slice(1):J.agentLabel.replace(/-\d+$/,""),ce=m>140?48:m>110?32:20,L=J.workerTask||J.currentTask||"",ee=L.length>ce?L.slice(0,ce-3)+"...":L,me=J.toolUseCount||0,le=J.input+J.output,we=J.elapsedMs?Math.round(J.elapsedMs/1e3):0,We=re?A.createElement(si,{type:"dots"}):K==="waiting"?A.createElement(f,{color:"yellow"},"\u25D0"):K==="completed"?A.createElement(f,{color:"blue"},"\u2713"):K==="error"?A.createElement(f,{color:"red"},"\u2717"):A.createElement(f,{color:"gray"},"\u25CB");return A.createElement(_,{key:J.agentId,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{dimColor:true}," ",he?"\u2514\u2500 ":"\u251C\u2500 "),We,A.createElement(f,null," "),A.createElement(f,{color:ve,bold:true},Be),ee&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,null,ee),A.createElement(f,{dimColor:true},")"))),A.createElement(_,null,me>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"\xB7 "),A.createElement(f,{color:"cyan"},me),A.createElement(f,{dimColor:true}," tools")),le>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \xB7 "),A.createElement(f,{color:"#B19CD9"},N(le)),A.createElement(f,{dimColor:true}," tok")),we>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \xB7 "),A.createElement(f,{color:"yellow"},we,"s"))))};if(c==="network"){let J=u?.teamSize||0,he=u?.activeAgents||0,K=u?.currentPhase||"executing",re=u?.currentAgent,se=u?.totalInputTokens||t?.input||0,ve=u?.totalOutputTokens||t?.output||0,Be=u?.completedTasks,ce=u?.totalTasks,ee=(()=>{switch(K){case "analyzing":return {text:"Analyzing",color:"cyan"};case "bidding":return {text:"Bidding",color:"yellow"};case "negotiating":return {text:"Negotiating",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "reviewing":return {text:"Reviewing",color:"blue"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Running",color:"cyan"}}})();return A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"blue"},"[N]"),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"blue"},J),A.createElement(f,{dimColor:true}," agents"),he>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"green"},he),A.createElement(f,{dimColor:true}," active)")),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),re?A.createElement(A.Fragment,null,z(re),A.createElement(f,{dimColor:true},": "),A.createElement(f,{color:ee.color},ee.text)):A.createElement(f,{color:ee.color},ee.text),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,ve>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(_,null,Be!==void 0&&ce!==void 0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"tasks "),A.createElement(f,{color:"#B19CD9"},Be),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},ce),A.createElement(f,{dimColor:true}," \u2502 ")),s&&E>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:"green"},"\u2193 ",Math.floor(E)),A.createElement(f,{dimColor:true}," \u2502 ")),A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"#9B8FD9"},N(se)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"#6FCF97"},N(ve))))}if(c==="cooperate"&&d){let{models:J,phase:he,totalInputTokens:K,totalOutputTokens:re,ccbResult:se,dagProgress:ve}=d,ce=(()=>{switch(he){case "analyzing":return {text:"Analyzing",color:"cyan"};case "ccb_review":return {text:"CCB Review",color:"yellow"};case "dag_planning":return {text:"Planning",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Running",color:"cyan"}}})(),L=()=>J.length===0?null:J.map((me,le)=>{let we=me.status==="running"?"green":me.status==="completed"?"blue":"gray";return A.createElement(A.Fragment,{key:le},le>0&&A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:we},me.shortName))}),ee=J.filter(me=>me.status==="completed").length;return A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"yellow"},"[C]"),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),e?z(e):A.createElement(f,{color:ce.color},ce.text),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")")),E>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ~"),A.createElement(f,{color:"magenta"},Math.floor(E)),A.createElement(f,{dimColor:true}," tok"))):A.createElement(_,null,re>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(_,null,J.length>0&&A.createElement(A.Fragment,null,L(),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:"#B19CD9"},ee),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},J.length),A.createElement(f,{dimColor:true}," \u2502 ")),se&&A.createElement(A.Fragment,null,A.createElement(f,{color:se.approved?"green":"red"},se.approved?"\u2713":"\u2717"),A.createElement(f,{dimColor:true}," CCB "),A.createElement(f,{color:"#B19CD9"},se.approveCount),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},se.totalCount),A.createElement(f,{dimColor:true}," \u2502 ")),ve&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true},"DAG "),A.createElement(f,{color:"#B19CD9"},ve.completedNodes),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},ve.totalNodes),A.createElement(f,{dimColor:true}," \u2502 ")),A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(K||t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(re||t?.output||0))))}if((c==="assistant"||c==="cooperate")&&be){let J=Pe?.pressure||0,he=Math.round(J*100),K=()=>J>.8?"red":J>.5?"yellow":"green",re=g.length>0,se=Pe?.agentLabel||"Main";return A.createElement(_,{flexDirection:"column"},A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:F.color},F.icon),A.createElement(f,{dimColor:true}," \u2502 "),s?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{bold:true,color:"#9B8FD9"},"\u25CF"),A.createElement(f,null," "),V&&ae?A.createElement(A.Fragment,null,z(`Streaming: ${ae}`)):z(e||"Thinking..."),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,(Pe?.output||t?.output||0)>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"green",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Complete!"),T>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"cyan",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"cyan"},"Ready")))),A.createElement(_,null,Pe?A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{dimColor:true},se,": "),A.createElement(f,{color:"cyan"},N(Pe.input)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"green"},N(Pe.output)),(Pe.cacheCreationTokens||Pe.cacheReadTokens)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," cache-w "),A.createElement(f,{color:"magenta"},N(Pe.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," cache-r "),A.createElement(f,{color:"blue"},N(Pe.cacheReadTokens||0))),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"#B19CD9"},N(Pe.tokensUsedForContext)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},N(Pe.contextWindow)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:K()},he,"%"),A.createElement(f,{dimColor:true},")"),Y()):A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(t?.output||0)),Y()))),re&&g.map((ve,Be)=>Ae(ve,Be===g.length-1)))}let ge=c==="single"&&g.length>0,_e=m<100,fe=m<80,pe=(()=>{if(fe)return Math.max(10,m-40);let J=11;if(s&&T>0&&!fe){let re=` (${M()})`;J+=_l(re);}let he=_e?35:80,K=m-J-he;return Math.max(15,K)})();return fe?A.createElement(_,{flexDirection:"column"},A.createElement(_,null,s?A.createElement(A.Fragment,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{color:"cyan"},q(e||"Thinking...",m-5))):A.createElement(A.Fragment,null,A.createElement(f,{color:"green"},"\u2713"),A.createElement(f,null," "),A.createElement(f,{color:"green"},"Done"))),x>0&&A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},N(t?.output||0)),A.createElement(f,{dimColor:true}," ctx "),A.createElement(f,{color:U()},W,"%"))):A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(_,{justifyContent:"space-between",width:"100%"},A.createElement(_,null,!_e&&A.createElement(A.Fragment,null,A.createElement(f,{color:F.color},F.icon),A.createElement(f,{dimColor:true}," \u2502 ")),y?A.createElement(_,null,A.createElement(si,{type:"dots"}),A.createElement(f,null," "),A.createElement(f,{bold:true,color:"#9B8FD9"},"\u25CF"),A.createElement(f,null," "),V&&ae?A.createElement(A.Fragment,null,P(`Streaming: ${ae}`,pe)):P(!s&&h?`Sub-agents running... (${g.length})`:e||"Thinking...",pe),T>0&&!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"yellow"},M()),m>=100&&A.createElement(f,{dimColor:true}," \u2022 esc"),E>0&&m>=120&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2022 "),A.createElement(f,{color:"green"},"\u2193 ",Math.floor(E)," token")),A.createElement(f,{dimColor:true},")"))):A.createElement(_,null,(t?.output||0)>0?A.createElement(A.Fragment,null,A.createElement(f,{color:"#6FCF97",bold:true},"\u25A0"),A.createElement(f,null," "),A.createElement(f,{color:"#6FCF97"},"Complete!"),T>0&&!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"#B19CD9"},M()),A.createElement(f,{dimColor:true},")"))):A.createElement(A.Fragment,null,A.createElement(f,{color:"#9B8FD9",bold:true},"\u25CF"),A.createElement(f,null," "),A.createElement(f,{color:"#9B8FD9"},"Ready")))),A.createElement(_,null,x>0?A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"#9B8FD9"},N(t?.input||0)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"#6FCF97"},N(t?.output||0)),(t?.cacheCreationTokens||t?.cacheReadTokens)&&m>=120&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," c-w "),A.createElement(f,{color:"magenta"},N(t.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," c-r "),A.createElement(f,{color:"blue"},N(t.cacheReadTokens||0))),!_e&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2502 ctx "),A.createElement(f,{color:"#B19CD9"},N(B)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"#B19CD9"},N(x))),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:U()},W,"%"),A.createElement(f,{dimColor:true},")")):A.createElement(f,{dimColor:true},"ctx: --"))),ge&&g.map((J,he)=>Ae(J,he===g.length-1)))},n$=(s,e)=>!s&&!e?true:!s||!e||s.length!==e.length?false:s.every((t,n)=>{let r=e[n];return t.agentId===r.agentId&&t.input===r.input&&t.output===r.output&&t.pressure===r.pressure&&t.tokensUsedForContext===r.tokensUsedForContext&&t.status===r.status&&t.currentTask===r.currentTask&&t.contextWindow===r.contextWindow&&t.cacheCreationTokens===r.cacheCreationTokens&&t.cacheReadTokens===r.cacheReadTokens}),lx=A.memo(t$,(s,e)=>s.isRunning===e.isRunning&&s.statusText===e.statusText&&s.streamingTokens===e.streamingTokens&&s.streamingStartTime===e.streamingStartTime&&s.tokenStats?.input===e.tokenStats?.input&&s.tokenStats?.output===e.tokenStats?.output&&s.tokenStats?.total===e.tokenStats?.total&&s.tokenStats?.pressure===e.tokenStats?.pressure&&s.tokenStats?.cacheCreationTokens===e.tokenStats?.cacheCreationTokens&&s.tokenStats?.cacheReadTokens===e.tokenStats?.cacheReadTokens&&s.runMode===e.runMode&&s.networkStats?.teamSize===e.networkStats?.teamSize&&s.networkStats?.activeAgents===e.networkStats?.activeAgents&&s.networkStats?.currentPhase===e.networkStats?.currentPhase&&s.networkStats?.currentAgent===e.networkStats?.currentAgent&&s.networkStats?.totalInputTokens===e.networkStats?.totalInputTokens&&s.networkStats?.totalOutputTokens===e.networkStats?.totalOutputTokens&&s.networkStats?.completedTasks===e.networkStats?.completedTasks&&s.networkStats?.totalTasks===e.networkStats?.totalTasks&&s.cooperateStats?.phase===e.cooperateStats?.phase&&s.cooperateStats?.totalInputTokens===e.cooperateStats?.totalInputTokens&&s.cooperateStats?.totalOutputTokens===e.cooperateStats?.totalOutputTokens&&s.cooperateStats?.ccbResult?.approved===e.cooperateStats?.ccbResult?.approved&&s.cooperateStats?.ccbResult?.approveCount===e.cooperateStats?.ccbResult?.approveCount&&s.cooperateStats?.dagProgress?.completedNodes===e.cooperateStats?.dagProgress?.completedNodes&&s.cooperateStats?.models?.length===e.cooperateStats?.models?.length&&n$(s.agentContextStats,e.agentContextStats));var cx=({isRunning:s,hasInput:e,customHints:t,menuActive:n=false,thinkingEnabled:r=true,accumulatedRunTime:o=0,provider:i,model:a,runMode:l="single",hasBgTasks:c=false})=>{let{columns:u=80}=Qt(),[d,m]=useState(o);useEffect(()=>{if(!s){m(o);return}m(o);let S=setInterval(()=>{m(E=>E+1);},1e3);return ()=>clearInterval(S)},[s,o]);let g=()=>{if(d<60)return `${d}s`;let S=Math.floor(d/60),E=d%60;if(S<60)return `${S}m ${E}s`;let v=Math.floor(S/60),I=S%60;return `${v}h ${I}m`},h=()=>{if(!i||!a)return "";let S=i,E=i.indexOf(" (");E>0&&(S=i.substring(0,E));let v=a.length>35?a.substring(0,32)+"...":a;return `${S}/${v}`},b=(()=>{switch(l){case "single":return {label:"SINGLE"};case "assistant":return {label:"ASSISTANT"};case "cooperate":return {label:"COOPERATE"};case "network":return {label:"NETWORK"};default:return {label:"SINGLE"}}})(),C=u<100,T=u<80;return t?A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{color:ue.functional.warning},t)):n?null:T?A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{color:ue.text.secondary},"? shortcuts"),A.createElement(_,null,d>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.cyan},g()),A.createElement(f,{color:ue.text.dim}," \u2022 ")),A.createElement(f,{color:ue.brand.purple},b.label))):A.createElement(_,{justifyContent:"space-between"},A.createElement(_,null,c?A.createElement(f,{color:ue.brand.cyan},"tab \u21B9 tasks"):A.createElement(f,{color:ue.text.secondary},"? for shortcuts"),d>0&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.text.dim}," \u2022 "),A.createElement(f,{color:ue.brand.cyan},g()),!C&&A.createElement(f,{color:ue.text.dim}," session"))),A.createElement(_,null,!C&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.purple,bold:true},"["),A.createElement(f,{color:ue.brand.purple},b.label),A.createElement(f,{color:ue.brand.purple,bold:true},"]"),A.createElement(f,{color:ue.text.dim}," \u2022 ")),h()&&!C&&A.createElement(A.Fragment,null,A.createElement(f,{color:ue.brand.magenta,bold:true},"["),A.createElement(f,{color:ue.brand.magenta},h()),A.createElement(f,{color:ue.brand.magenta,bold:true},"]"),A.createElement(f,{color:ue.text.dim}," \u2022 ")),r?A.createElement(f,{color:ue.brand.cyan},"Thinking on"):A.createElement(f,{color:ue.text.dim},"Thinking off")))};var ux=({attachments:s,onRemove:e})=>s.length===0?null:A.createElement(_,{flexDirection:"column",paddingLeft:2,marginBottom:1},A.createElement(f,{color:"magenta",dimColor:true},"Attachments:"),s.map((t,n)=>{let r=t.name||t.path?.split("/").pop()||"unknown",o=t.type?.startsWith("image/")||t.mediaType?.startsWith("image/")||r.match(/\.(png|jpg|jpeg|gif|webp)$/i);return A.createElement(_,{key:n},A.createElement(f,{color:"magenta"},o?"\u{1F4CE} \u{1F5BC}\uFE0F ":"\u{1F4CE} ",r),e&&A.createElement(f,{color:"gray",dimColor:true}," (press \u232B Backspace to remove)"))}));var dx=({planSteps:s,isRunning:e=false})=>{let t=s.find(r=>r.status==="pending");if(!t||!e)return null;let n=t.step.length>50?t.step.substring(0,47)+"...":t.step;return A.createElement(_,{paddingLeft:3},A.createElement(f,{dimColor:true},"\u2514\u2500 "),A.createElement(f,{color:"gray"},"\u25CB"),A.createElement(f,{dimColor:true}," Next: "),A.createElement(f,{color:"cyan"},n))};var px=({contextWindow:s,tokensUsed:e,systemTokens:t=0,userTokens:n=0,assistantTokens:r=0,toolCallTokens:o=0,toolResultTokens:i=0,compactionThreshold:a=.8,compressionMode:l="sync",agentContextStats:c=[],runMode:u="single",networkStats:d,onClose:m})=>{let g=D=>D>=1e6?`${(D/1e6).toFixed(1)}M`:D>=1e3?`${(D/1e3).toFixed(1)}k`:D.toString(),h=D=>D>.8?"red":D>.5?"yellow":"green",y=({color:D,label:O,tokens:k,total:M,indent:N=2})=>{let x=M>0?(k/M*100).toFixed(2):"0.00";return A.createElement(_,{marginLeft:N},A.createElement(f,{color:D},"\u25A0"),A.createElement(f,null," ",O,": "),A.createElement(f,{color:"yellow"},g(k)),A.createElement(f,{dimColor:true}," tokens (",x,"%)"))},b=({stat:D,indent:O=2})=>{let k=D.cacheCreationTokens||0,M=D.cacheReadTokens||0,N=D.contextWindow||2e5,x=D.tokensUsedForContext||0,B=N>0?x/N:0,H=Math.round(B*100);return A.createElement(_,{marginLeft:O,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"magenta"},D.agentLabel||D.agentId),D.status&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:D.status==="running"?"green":D.status==="error"?"red":"gray"},D.status==="running"?"\u25CF":D.status==="completed"?"\u2713":D.status==="error"?"\u2717":"\u25CB"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},g(D.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},g(D.output)),(k>0||M>0)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," \u2502 cw "),A.createElement(f,{color:"blue"},g(k)),A.createElement(f,{dimColor:true}," cr "),A.createElement(f,{color:"blue"},g(M))),A.createElement(f,{dimColor:true}," \u2502 ctx "),A.createElement(f,{color:"yellow"},g(x)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},g(N)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:h(B)},H,"%"),A.createElement(f,{dimColor:true},")")))},C=({stat:D,indent:O=2})=>{let k=D.contextWindow>0?D.tokensUsedForContext/D.contextWindow:0,M=Math.round(k*100);return A.createElement(_,{marginLeft:O,justifyContent:"space-between"},A.createElement(_,null,A.createElement(f,{color:"magenta"},D.agentLabel||D.agentId),D.status&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:D.status==="running"?"green":D.status==="error"?"red":"gray"},D.status==="running"?"\u25CF":D.status==="completed"?"\u2713":D.status==="error"?"\u2717":"\u25CB"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},g(D.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},g(D.output)),A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(f,{color:"yellow"},g(D.tokensUsedForContext)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},g(D.contextWindow)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:h(k)},M,"%"),A.createElement(f,{dimColor:true},")")))};if(u==="network"){let D=d?.teamSize||c.length||0,O=d?.activeAgents||0,k=d?.totalInputTokens||0,M=d?.totalOutputTokens||0,N=k+M,B=(H=>{switch(H){case "analyzing":return {text:"Analyzing",color:"cyan"};case "bidding":return {text:"Bidding",color:"yellow"};case "negotiating":return {text:"Negotiating",color:"magenta"};case "executing":return {text:"Executing",color:"green"};case "reviewing":return {text:"Reviewing",color:"blue"};case "complete":return {text:"Complete",color:"green"};default:return {text:"Idle",color:"gray"}}})(d?.currentPhase);return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:"blue",paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:"blue"},"[N]"),A.createElement(f,{bold:true,color:"blue"}," Network Context Overview")),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Team Size: "),A.createElement(f,{color:"blue",bold:true},D),A.createElement(f,{dimColor:true}," agents"),O>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"green"},O),A.createElement(f,{dimColor:true}," active)"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"Current Phase: "),A.createElement(f,{color:B.color,bold:true},B.text),d?.currentAgent&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," - "),A.createElement(f,{color:"cyan"},d.currentAgent))),d?.completedTasks!==void 0&&d?.totalTasks!==void 0&&A.createElement(_,null,A.createElement(f,{dimColor:true},"Tasks: "),A.createElement(f,{color:"yellow"},d.completedTasks),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},d.totalTasks),A.createElement(f,{dimColor:true}," completed"))),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(f,{bold:true,dimColor:true},"Total Token Usage:"),A.createElement(_,{marginLeft:2},A.createElement(f,{dimColor:true},"Input: "),A.createElement(f,{color:"cyan"},g(k)),A.createElement(f,{dimColor:true}," \u2502 Output: "),A.createElement(f,{color:"green"},g(M)),A.createElement(f,{dimColor:true}," \u2502 Total: "),A.createElement(f,{color:"yellow"},g(N)))),c.length>0&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Agent Context Details:"),c.map(H=>A.createElement(b,{key:H.agentId,stat:H})),A.createElement(_,{marginTop:1,marginLeft:2},A.createElement(f,{dimColor:true},"Total Tokens: "),A.createElement(f,{color:"yellow"},g(c.reduce((H,W)=>H+W.input+W.output,0))),A.createElement(f,{dimColor:true}," across "),A.createElement(f,{color:"cyan"},c.length),A.createElement(f,{dimColor:true}," agents"))),c.length===0&&A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true,italic:true},"Agent context details not available yet.")))}if((u==="assistant"||u==="cooperate")&&c.length>0){let D=c.find(W=>W.agentId==="Main"),O=c.filter(W=>W.agentId!=="Main"&&W.agentId!=="supervisor"),k=c.reduce((W,U)=>W+U.tokensUsedForContext,0),M=c.reduce((W,U)=>W+U.input,0),N=c.reduce((W,U)=>W+U.output,0),x=u==="assistant"?"[A]":"[C]",B=u==="assistant"?"Assistant":"Cooperate",H=u==="assistant"?"magenta":"yellow";return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:H,paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:H},x),A.createElement(f,{bold:true,color:H}," ",B," Context Overview")),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Total Agents: "),A.createElement(f,{color:H,bold:true},c.length),O.length>0&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," (1 Main + "),A.createElement(f,{color:"cyan"},O.length),A.createElement(f,{dimColor:true}," Workers)"))),A.createElement(_,null,A.createElement(f,{dimColor:true},"Total Tokens: "),A.createElement(f,{color:"cyan"},g(M)),A.createElement(f,{dimColor:true}," in / "),A.createElement(f,{color:"green"},g(N)),A.createElement(f,{dimColor:true}," out"))),D&&A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(f,{bold:true,dimColor:true},"Main Agent:"),A.createElement(C,{stat:D})),O.length>0&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Worker Agents (",O.length,"):"),O.map(W=>A.createElement(C,{key:W.agentId,stat:W}))),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},"Combined Context: "),A.createElement(f,{color:"yellow"},g(k)),A.createElement(f,{dimColor:true}," tokens")))}let T=s-e,S=s>0?e/s:0,E=Math.floor(s*a),v=Math.max(0,E-e),I=Math.round(S*100);return A.createElement(_,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:2,paddingY:1},A.createElement(_,{justifyContent:"space-between",marginBottom:1},A.createElement(f,{bold:true,color:"cyan"},"Context Window Details"),A.createElement(f,{dimColor:true},"(press ESC to close)")),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Total: "),A.createElement(f,{color:"yellow"},g(e)),A.createElement(f,{dimColor:true}," / "),A.createElement(f,{color:"yellow"},g(s)),A.createElement(f,{dimColor:true}," tokens ("),A.createElement(f,{color:h(S),bold:true},I,"%"),A.createElement(f,{dimColor:true},")")),A.createElement(_,null,A.createElement(f,{dimColor:true},"Remaining: "),A.createElement(f,{color:"green"},g(T)),A.createElement(f,{dimColor:true}," tokens"))),A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{dimColor:true},"Compression: "),A.createElement(f,{color:l==="sync"?"green":"yellow"},l==="sync"?"Sync LLM":"Async LLM"),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:"cyan"},Math.round(a*100),"%"),A.createElement(f,{dimColor:true}," threshold)"))),v>0?A.createElement(_,{marginBottom:1},A.createElement(f,{dimColor:true},"Compaction in: "),A.createElement(f,{color:"cyan"},g(v)),A.createElement(f,{dimColor:true}," tokens")):A.createElement(_,{marginBottom:1},A.createElement(f,{color:"red",bold:true},"\u26A0\uFE0F Compaction threshold reached!")),A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,dimColor:true},"Context Breakdown:"),A.createElement(y,{color:"magenta",label:"System",tokens:t,total:e}),A.createElement(y,{color:"cyan",label:"User",tokens:n,total:e}),A.createElement(y,{color:"green",label:"Assistant",tokens:r,total:e}),A.createElement(y,{color:"blue",label:"Tool Calls",tokens:o,total:e}),A.createElement(y,{color:"yellow",label:"Tool Results",tokens:i,total:e}),A.createElement(_,{marginTop:1,marginLeft:2},A.createElement(f,{dimColor:true},"Usage: "),A.createElement(f,{color:h(S)},"\u2588".repeat(Math.floor(S*20))),A.createElement(f,{dimColor:true},"\u2591".repeat(20-Math.floor(S*20))))))};function hx(){let s=G(),e=s.slashMenu.categories,t=s.slashMenu.commands;return [{name:"/help",description:t.help,category:e.basic},{name:"/clear",description:t.clear,category:e.basic},{name:"/exit",description:t.exit,category:e.basic},{name:"/mode",description:t.mode,category:e.mode,hasSubMenu:true},{name:"/run",description:t.run,category:e.mode,hasSubMenu:true},{name:"/runconfig",description:t.runconfig,category:e.mode,hasSubMenu:true},{name:"/thinking",description:t.thinking,category:e.mode,hasSubMenu:true},{name:"/approval",description:t.approval,category:e.mode,hasSubMenu:true},{name:"/sandbox",description:t.sandbox,category:e.mode,hasSubMenu:true},{name:"/provider",description:t.provider,category:e.ai,hasSubMenu:true},{name:"/model",description:t.model,category:e.ai,hasSubMenu:true},{name:"/sessions",description:t.sessions,category:e.session},{name:"/session",description:t.session,category:e.session,hasSubMenu:true},{name:"/session-new",description:t.sessionNew,category:e.session},{name:"/session-info",description:t.sessionInfo,category:e.session},{name:"/checkpoint",description:t.checkpoint,category:e.session},{name:"/checkpoints",description:t.checkpoints,category:e.session},{name:"/rollback",description:t.rollback,category:e.session,hasSubMenu:true},{name:"/undo",description:t.undo,category:e.session},{name:"/compact",description:t.compact,category:e.session},{name:"/ps",description:t.ps,category:e.process},{name:"/kill",description:t.kill,category:e.process,hasSubMenu:true},{name:"/skills",description:t.skills,category:e.skills},{name:"/workspace",description:t.workspace,category:e.tools,hasSubMenu:true},{name:"/websearch",description:t.websearch,category:e.tools,hasSubMenu:true},{name:"/mcp",description:t.mcp,category:e.tools,hasSubMenu:true},{name:"/context",description:t.context,category:e.tools,hasSubMenu:true},{name:"/memory",description:t.memory,category:e.tools,hasSubMenu:true},{name:"/remote",description:t.remote,category:e.tools,hasSubMenu:true},{name:"/index",description:t.index,category:e.tools,hasSubMenu:true},{name:"/stats",description:t.tokenStats,category:e.stats},{name:"/cost",description:t.costStats,category:e.stats},{name:"/language",description:t.language,category:e.config,hasSubMenu:true},{name:"/config-clear",description:t.configClear,category:e.config},{name:"/config-reset",description:t.configReset,category:e.config},{name:"/notify",description:t.notify,category:e.config,hasSubMenu:true},{name:"/tts",description:t.tts,category:e.config,hasSubMenu:true},{name:"/experimental",description:t.experimental,category:e.config,hasSubMenu:true},{name:"/update",description:t.update,category:e.config}]}hx();var o$=({isVisible:s,filter:e="",onSelect:t,onCancel:n})=>{let[r,o]=useState(0),[i,a]=useState(0),l=10,c=hx(),u=G(),d=e&&e!=="/"?c.filter(h=>h.name.toLowerCase().includes(e.toLowerCase())||h.description.toLowerCase().includes(e.toLowerCase())):c;useEffect(()=>{o(0),a(0);},[e]),useEffect(()=>{r<i?a(r):r>=i+l&&a(r-l+1);},[r]),gt((h,y)=>{if(s){if(y.escape){n();return}if(y.upArrow){o(b=>b>0?b-1:d.length-1);return}if(y.downArrow){o(b=>b<d.length-1?b+1:0);return}if(y.pageUp||y.ctrl&&h==="u"){o(b=>Math.max(0,b-l));return}if(y.pageDown||y.ctrl&&h==="d"){o(b=>Math.min(d.length-1,b+l));return}if(y.return){d.length>0&&t(d[r].name);return}if(y.tab){d.length>0&&t(d[r].name+" ");return}}},{isActive:s});let m=d.slice(i,i+l),g=A.useMemo(()=>m.map((h,y)=>{let C=i+y===r;return A.createElement(_,{key:h.name},A.createElement(f,{color:C?ue.brand.purple:ue.text.dim},C?"\u276F ":" "),A.createElement(f,{color:C?ue.brand.purple:void 0,bold:C},"\u25CF ",h.name),A.createElement(f,{color:C?ue.brand.magenta:ue.text.secondary}," ","- ",h.description))}),[m,i,r]);return !s||d.length===0?null:A.createElement(_,{flexDirection:"column",paddingLeft:0},A.createElement(f,{color:ue.brand.purple,bold:true},u.slashMenu.title),A.createElement(f,{color:ue.text.secondary},u.common.selectHint),i>0&&A.createElement(f,{color:ue.text.dim}," \u2191 ..."),g,i+l<d.length&&A.createElement(f,{color:ue.text.dim}," \u2193 ..."),A.createElement(f,{color:ue.border.primary},"\u2500".repeat(40)),A.createElement(f,{color:ue.text.secondary},lt(u.slashMenu.commandCount,{count:d.length})," \xB7 ",Math.floor(i/l)+1,"/",Math.ceil(d.length/l)))},fx=A.memo(o$);var c$=({tasks:s,selectedIndex:e,onKill:t,onToggleExpand:n})=>{let{columns:r=80}=Qt(),[o,i]=useState(Date.now()),a=s.some(m=>m.status==="running");if(useEffect(()=>{if(!a)return;let m=setInterval(()=>i(Date.now()),1e3);return ()=>clearInterval(m)},[a]),s.length===0)return null;let l=m=>{let g=Math.floor((o-m)/1e3);if(g<60)return `${g}s`;let h=Math.floor(g/60),y=g%60;return `${h}m${y}s`},c=(m,g)=>m.length<=g?m:m.slice(0,g-3)+"...",u=Math.max(20,r-45),d=(m,g)=>{let h=g===e,y=g===s.length-1,b=m.status==="running"?A.createElement(si,{type:"dots"}):m.status==="done"?A.createElement(f,{color:"green"},"\u2713"):m.status==="error"?A.createElement(f,{color:"red"},"\u2717"):A.createElement(f,{color:"yellow"},"\u2298"),C=m.status==="running"?"cyan":m.status==="done"?"green":m.status==="error"?"red":"yellow",T=m.status==="done"?`exit ${m.exitCode??0}`:m.status;return A.createElement(_,{key:m.id,flexDirection:"column"},A.createElement(_,null,A.createElement(f,{dimColor:true},y?"\u2514 ":"\u251C "),A.createElement(f,{color:h?"white":void 0,bold:h},h?"\u25B8 ":" "),b,A.createElement(f,{dimColor:true}," #",m.id," "),A.createElement(f,{color:h?"white":"cyan",bold:h},c(m.command,u)),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:C},T),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:"yellow"},l(m.startTime))),m.expanded&&m.output.length>0&&A.createElement(_,{flexDirection:"column",marginLeft:6},m.output.slice(-5).map((S,E)=>A.createElement(f,{key:E,dimColor:true},S))))};return A.createElement(_,{flexDirection:"column",marginTop:0},A.createElement(_,null,A.createElement(f,{color:ue.brand.purple},"\u250C "),A.createElement(f,{color:ue.brand.purple,bold:true},"Background Tasks"),A.createElement(f,{dimColor:true}," (",s.length,")"),A.createElement(f,{dimColor:true},"\u2500".repeat(Math.max(0,r-25-String(s.length).length)))),s.map((m,g)=>d(m,g)))},yx=A.memo(c$);te();var u$=({inputValue:s,isRunning:e,statusText:t="",tokenStats:n,streamingTokens:r=0,streamingStartTime:o=null,accumulatedRunTime:i=0,provider:a,model:l,customHints:c,attachments:u=[],multiline:d=false,completions:m=[],menuActive:g=false,promptActive:h=false,promptMessage:y,promptHint:b,promptOnCancel:C,thinkingEnabled:T=true,contextMenuActive:S=false,compressionMode:E="sync",compactionThreshold:v=.85,agentContextStats:I=[],runMode:D="single",networkStats:O,cooperateStats:k,currentPlanSteps:M=[],onInputChange:N,onSubmit:x,onInterrupt:B,onExit:H,onHistoryUp:W,onHistoryDown:U,onTabComplete:z,onRemoveAttachment:q,onContextMenuToggle:P,onAgentContextScreenToggle:$,onPasteImage:F,onShowInterruptInput:V,backgroundTasks:Z=[],bgSelectedIndex:ae=-1,onBgKill:be,onBgRemove:Pe,onBgNavigate:oe,onBgToggleExpand:X})=>{let{columns:ne}=Qt(),[Y,Ae]=A.useState(false);A.useEffect(()=>{Z.length===0&&Y&&Ae(false);},[Z.length,Y]),A.useEffect(()=>{s&&Y&&Ae(false);},[s,Y]);let ge=s==="/"||s.startsWith("/")&&!s.includes(" "),_e=A.useCallback(J=>{J.endsWith(" ")?N(J.trim()):(N(""),setTimeout(()=>{x(J);},0));},[N,x]),fe=A.useCallback(()=>{N("");},[N]),Se=A.useRef(0),pe=1200;return gt((J,he)=>{if(process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","BottomBar useInput",{key:he,input:J,menuActive:g,promptActive:h,isRunning:e,inputValue:s.substring(0,20)}),!g){if(e&&J==="i"&&!he.ctrl&&!he.meta&&V){p.debug("INK_INPUT",'Interrupt input triggered with "i" key'),V();return}if(he.ctrl&&J==="g"&&$){$();return}if(he.ctrl&&J==="z"){process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","Ctrl+Z blocked (prevents suspension)");return}if(he.tab&&Z.length>0&&!e&&!ge){Ae(K=>!K);return}if(Y&&Z.length>0){if(he.upArrow){oe?.("up");return}if(he.downArrow){oe?.("down");return}if(he.return&&ae>=0){X?.();return}}if(he.escape){let K=!J||J==="\x1B"||J==="";if(p.info("INK_INPUT",`ESC detected: isRealEscape=${K}, input=${JSON.stringify(J)}, isRunning=${e}`),!K){p.debug("INK_INPUT","Ignoring escape sequence (not real ESC key)");return}if(S&&P){P();return}if(h&&C){C(),N("");return}if(Y&&Z.length>0&&ae>=0&&ae<Z.length){let re=Z[ae];re.status==="running"?be?.(re.id):Pe?.(re.id);return}if(Y){Ae(false);return}e?(p.info("INK_INPUT","\u{1F6D1} User pressed ESC to interrupt task"),B()):s&&N("");return}if(he.ctrl&&J==="c"){let K=Date.now(),re=K-Se.current<=pe;if(Se.current=K,process.env.CLI_DEBUG==="1"&&p.debug("INK_INPUT","Ctrl+C pressed",{isRunning:e,isSecondPress:re}),re){p.info("INK_INPUT","\u26A0\uFE0F Ctrl+C double-press - force exiting"),H();return}if(e){B();return}p.info("INK_INPUT","\u26A0\uFE0F Ctrl+C pressed - exiting"),H();}}},{isActive:true}),A.createElement(_,{flexDirection:"column"},h&&y&&A.createElement(_,{paddingX:2,paddingY:1},A.createElement(f,{color:"cyan",bold:true},y)),h&&b&&A.createElement(_,{paddingX:2,paddingBottom:1},A.createElement(f,{dimColor:true},b)),!h&&!g&&A.createElement(_,{marginTop:1,width:"100%"},A.createElement(lx,{isRunning:e,statusText:t,tokenStats:n,streamingTokens:r,streamingStartTime:o,provider:a,model:l,onContextMenuToggle:P,agentContextStats:I,runMode:D,networkStats:O,cooperateStats:k})),!h&&!g&&A.createElement(dx,{planSteps:M,isRunning:e}),u.length>0&&A.createElement(ux,{attachments:u,onRemove:q}),!g&&A.createElement(_,{flexDirection:"column"},A.createElement(f,{color:"#9370db"},"\u2500".repeat(ne)),A.createElement(ax,{value:s,placeholder:h?b||"Type your answer...":e?"Enter to interrupt and send...":"Type a message...",disabled:g,multiline:d,completions:[],menuActive:g,slashMenuActive:ge,imageCount:u.length,onChange:N,onSubmit:J=>x(J??s),onHistoryUp:W,onHistoryDown:U,onTabComplete:z,onPasteImage:F,onRemoveLastAttachment:q?()=>q(u.length-1):void 0}),A.createElement(f,{color:"#9370db"},"\u2500".repeat(ne))),ge&&!g&&!e&&A.createElement(fx,{isVisible:true,filter:s,onSelect:_e,onCancel:fe}),!h&&A.createElement(cx,{isRunning:e,hasInput:s.length>0,customHints:c,menuActive:g,thinkingEnabled:T,accumulatedRunTime:i,provider:a,model:l,runMode:D,hasBgTasks:Z.length>0}),Z.length>0&&A.createElement(yx,{tasks:Z,selectedIndex:Y?ae:-1,onKill:be,onToggleExpand:X}),S&&n?.contextWindow&&P&&A.createElement(px,{contextWindow:n.contextWindow,tokensUsed:n.tokensUsedForContext||n.total,systemTokens:n.systemTokens,userTokens:n.userTokens,assistantTokens:n.assistantTokens,toolCallTokens:n.toolCallTokens,toolResultTokens:n.toolResultTokens,compressionMode:E,compactionThreshold:v,agentContextStats:I,runMode:D,networkStats:O,onClose:P}))},bx=A.memo(u$);var vu="__type_something__",Ah="__chat_about__",vx="__separator__",Ph=({message:s,choices:e,initialIndex:t=0,hint:n,header:r,maxVisible:o=12,allowTextInput:i=false,onSelect:a,onCancel:l,onExit:c})=>{let{columns:u=80,rows:d=24}=Qt(),[m,g]=useState(false),[h,y]=useState(""),b=useMemo(()=>i?[...e,{label:"",value:vx,isSeparator:true},{label:"Type something.",value:vu},{label:"Chat about this",value:Ah}]:e,[e,i]),C=P=>P?P.isSeparator||P.value===""||P.value===vx:false,T=P=>C(b[P]),S=useMemo(()=>{let P=b.findIndex($=>C($));return b[0]?.value==="__back__"&&P>0&&P<=4?P+1:0},[b]),E=useMemo(()=>{let P=Math.max(5,Math.min(10,d-14));return Math.max(5,Math.min(o,P))},[o,d]),v=b.slice(S),I=Math.min(v.length,E),D=(P,$)=>{let F=P;for(let V=0;V<b.length;V++)if(F+=$,F<0&&(F=b.length-1),F>=b.length&&(F=0),!T(F))return F;return P},O=()=>{for(let P=0;P<b.length;P++)if(!T(P))return P;return 0},[k,M]=useState(()=>T(t)?O():t),[N,x]=useState(0),[B,H]=useState(false);useEffect(()=>{T(t)?M(O()):M(t);},[t,b]),useEffect(()=>{let P=setTimeout(()=>H(true),200);return ()=>clearTimeout(P)},[]),useEffect(()=>{if(I<=0){N!==0&&x(0);return}let P=Math.max(0,v.length-I);if(N>P){x(P);return}if(k<S)return;let $=k-S;$<N?x($):$>=N+I&&x($-I+1);},[k,S,v.length,I,N]),gt((P,$)=>{if(m){if($.escape){g(false),y("");return}if($.return&&h.trim()){process.nextTick(()=>a(h.trim()));return}if($.backspace||$.delete){y(F=>F.slice(0,-1));return}P&&!$.ctrl&&!$.meta&&y(F=>F+P);}},{isActive:m}),gt((P,$)=>{if(!m){if($.ctrl&&P==="c"&&c){process.nextTick(()=>c());return}if($.escape&&l){process.nextTick(()=>l());return}if($.upArrow){M(F=>D(F,-1));return}if($.downArrow){M(F=>D(F,1));return}if($.return){if(T(k)||!B)return;let F=b[k].value;if(F===vu){g(true);return}process.nextTick(()=>a(F));}}},{isActive:!m});let W=N>0,U=N+I<v.length,z=P=>{let $=0;for(let F=0;F<=P;F++)!T(F)&&b[F].value!==vu&&b[F].value!==Ah&&$++;return $},q=(P,$)=>{let F=$===k;if(C(P))return A.createElement(_,{key:`sep-${$}`,marginTop:1},A.createElement(f,{dimColor:true},"\u2500".repeat(Math.min(u,120))));let V=F?"\u276F":" ",ae=P.value===vu||P.value===Ah?null:z($),be=ae!==null?" ":" ";return A.createElement(_,{key:`${P.value}-${$}`,flexDirection:"column"},A.createElement(_,null,A.createElement(f,{color:F?"cyan":void 0},V," "),ae!==null&&A.createElement(f,{color:F?"cyan":"white",bold:F},ae,". "),A.createElement(f,{color:F?"cyan":"white",bold:F},P.label)),P.description&&A.createElement(_,null,A.createElement(f,{dimColor:true},be,P.description)))};return m?A.createElement(_,{flexDirection:"column"},r&&A.createElement(_,null,A.createElement(f,{color:"green",bold:true},"\u2610 ",r)),A.createElement(f,null," "),s&&A.createElement(_,null,A.createElement(f,{bold:true},s)),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{color:"cyan",bold:true},"\u276F "),A.createElement(f,null,h),A.createElement(f,{color:"cyan"},"\u2588")),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{dimColor:true},"Enter to submit \xB7 Esc to go back"))):A.createElement(_,{flexDirection:"column"},r&&A.createElement(_,null,A.createElement(f,{color:"green",bold:true},"\u2610 ",r)),r&&A.createElement(f,null," "),s&&A.createElement(_,null,A.createElement(f,{bold:true},s)),A.createElement(f,null," "),b.slice(0,S).map((P,$)=>q(P,$)),W&&A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2191 ...")),v.slice(N,N+I).map((P,$)=>{let F=S+N+$;return q(P,F)}),U&&A.createElement(_,null,A.createElement(f,{dimColor:true}," \u2193 ...")),A.createElement(f,null," "),A.createElement(_,null,A.createElement(f,{dimColor:true},n||"Enter to select \xB7 \u2191/\u2193 to navigate \xB7 Esc to cancel")))};var wx=({onSubmit:s,onCancel:e})=>{let[t,n]=useState(""),[r,o]=useState(0),i=t.length-r;gt((u,d)=>{if(d.escape){e();return}if(d.return){let m=t.trim();m&&s(m);return}if(d.backspace||d.delete){if(r===t.length)return;let m=i-1,g=t.slice(0,m)+t.slice(m+1);n(g);return}if(d.leftArrow){o(Math.min(r+1,t.length));return}if(d.rightArrow){o(Math.max(r-1,0));return}if(d.home||d.ctrl&&u==="a"){o(t.length);return}if(d.end||d.ctrl&&u==="e"){o(0);return}if(!d.ctrl&&!d.meta&&u){let m=t.slice(0,i)+u+t.slice(i);n(m);return}},{isActive:true});let a=t.slice(0,i),l=t[i]||" ",c=t.slice(i+1);return A.createElement(_,{flexDirection:"column",borderStyle:"double",borderColor:"yellow",paddingX:2,paddingY:1,width:"80%"},A.createElement(_,{marginBottom:1,justifyContent:"center"},A.createElement(f,{bold:true,color:"yellow"},"\u2728 ",G().ui.interruptMessage," - ",G().ui.willSendNextRequest)),A.createElement(_,{flexDirection:"column"},A.createElement(f,{dimColor:true},G().ui.enterYourMessage,":"),A.createElement(_,{marginTop:1},A.createElement(f,{color:"green",bold:true},"\u276F "),t?A.createElement(f,null,a,A.createElement(f,{inverse:true},l),c):A.createElement(_,null,A.createElement(f,{inverse:true}," "),A.createElement(f,{dimColor:true},G().ui.typeMessage)))),A.createElement(_,{marginTop:1,justifyContent:"space-between"},A.createElement(f,{dimColor:true},"Enter: ",G().ui.enterToConfirm),A.createElement(f,{dimColor:true},"ESC: ",G().common.cancel)))};var oi=s=>s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:String(s),d$=s=>{switch(s){case "running":return {icon:"\u25CF",color:"green"};case "waiting":return {icon:"\u25D0",color:"yellow"};case "completed":return {icon:"\u2713",color:"blue"};case "error":return {icon:"\u2717",color:"red"};default:return {icon:"\u25CB",color:"gray"}}},Tx=({agentContextStats:s,onClose:e})=>{let{columns:t}=Qt();gt((r,o)=>{(o.escape||r==="q")&&e();},{isActive:true});let n=[...s].sort((r,o)=>r.agentId==="Main"?-1:o.agentId==="Main"?1:r.agentLabel.localeCompare(o.agentLabel));return A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(_,{justifyContent:"space-between"},A.createElement(f,{bold:true,color:"cyan"},"Agent Context Overview"),A.createElement(f,{dimColor:true},"ESC to close")),A.createElement(f,{color:"gray"},"\u2500".repeat(Math.max(t,10))),n.length===0?A.createElement(f,{dimColor:true},"No agent context stats available."):n.map(r=>{let o=r.contextWindow||0,i=r.tokensUsedForContext||0,a=o>0?i/o:0,l=Math.round(a*100),{icon:c,color:u}=d$(r.status),d=r.currentTask?r.currentTask.length>40?`${r.currentTask.slice(0,37)}...`:r.currentTask:"";return A.createElement(_,{key:r.agentId,justifyContent:"space-between",marginTop:1},A.createElement(_,null,A.createElement(f,{color:"magenta"},r.agentLabel),A.createElement(f,{dimColor:true}," "),A.createElement(f,{color:u},c),d&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," "),A.createElement(f,{dimColor:true},d))),A.createElement(_,null,A.createElement(f,{dimColor:true},"in "),A.createElement(f,{color:"cyan"},oi(r.input)),A.createElement(f,{dimColor:true}," out "),A.createElement(f,{color:"green"},oi(r.output)),(r.cacheCreationTokens||r.cacheReadTokens)&&A.createElement(A.Fragment,null,A.createElement(f,{dimColor:true}," cache-w "),A.createElement(f,{color:"magenta"},oi(r.cacheCreationTokens||0)),A.createElement(f,{dimColor:true}," cache-r "),A.createElement(f,{color:"blue"},oi(r.cacheReadTokens||0))),A.createElement(f,{dimColor:true}," \u2502 context "),A.createElement(f,{color:"yellow"},oi(i)),A.createElement(f,{dimColor:true},"/"),A.createElement(f,{color:"yellow"},oi(o)),A.createElement(f,{dimColor:true}," ("),A.createElement(f,{color:a>.8?"red":a>.5?"yellow":"green"},l,"%"),A.createElement(f,{dimColor:true},")")))}),A.createElement(f,{color:"gray"},"\u2500".repeat(Math.max(t,10))),A.createElement(f,{dimColor:true},"Tip: Press Q or ESC to return"))};var xx=({messages:s})=>s.length===0?null:A.createElement(_,{flexDirection:"column",marginBottom:1},A.createElement(_,null,A.createElement(f,{color:"magenta",bold:true},"\u250C\u2500 "),A.createElement(f,{color:"magenta",bold:true},"Queued (",s.length,")"),A.createElement(f,{color:"magenta",bold:true}," \u2500")),s.map((e,t)=>A.createElement(_,{key:e.id,paddingLeft:1},A.createElement(f,{color:"gray"},"\u2502 "),A.createElement(f,{color:"cyan",bold:true},"> "),A.createElement(f,{color:"white"},e.text.length>70?e.text.substring(0,67)+"...":e.text))),A.createElement(_,null,A.createElement(f,{color:"magenta",bold:true},"\u2514\u2500"),A.createElement(f,{dimColor:true}," Press "),A.createElement(f,{color:"yellow"},"\u2191"),A.createElement(f,{dimColor:true}," to edit queued messages")));var Sx=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],p$=A.memo(({agent:s})=>{let[e,t]=A.useState(0);A.useEffect(()=>{if(s.status!=="running")return;let a=setInterval(()=>t(l=>(l+1)%Sx.length),200);return ()=>clearInterval(a)},[s.status]);let n=s.status==="completed"?"\u2713":s.status==="error"?"\u2717":Sx[e],r=s.status==="completed"?"green":s.status==="error"?"red":"yellow",o=s.status==="completed"?"done":s.status==="error"?"err":s.elapsed>0?`${s.elapsed}s`:"..",i=s.toolCount>0?` ${s.toolCount}t`:"";return A.createElement(f,null,A.createElement(f,{color:r},n),A.createElement(f,{bold:true}," ",s.role),A.createElement(f,{dimColor:true},"(",o,i,")"))}),kx=A.memo(({agents:s})=>s.length===0?null:A.createElement(_,{flexDirection:"row",flexWrap:"wrap"},A.createElement(f,{dimColor:true}," "),s.map((e,t)=>A.createElement(_,{key:e.id,flexDirection:"row"},t>0&&A.createElement(f,{dimColor:true}," \u2502 "),A.createElement(p$,{agent:e})))));Cu();te();var v$=[".png",".jpg",".jpeg",".gif",".webp",".bmp",".svg"],C$=s=>{let e=new WeakSet;try{return JSON.stringify(s,(t,n)=>{if(typeof n=="bigint")return n.toString();if(n instanceof Error)return {name:n.name,message:n.message,stack:n.stack};if(typeof n=="function")return "[Function]";if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular]";e.add(n);}return n})}catch{try{return String(s)}catch{return "[Unserializable]"}}};function w$(s){if(!s)return false;let e=s.trim(),t=e.toLowerCase(),n=v$.some(o=>t.endsWith(o)),r=e.startsWith("/")||e.startsWith("./")||e.startsWith("~/")||e.includes("/")&&n;return n&&r}var _x=({staticEntries:s=[],pendingEntries:e=[],isRunning:t,statusText:n="",tokenStats:r,streamingTokens:o=0,streamingStartTime:i=null,accumulatedRunTime:a=0,version:l=ai,provider:c="OpenAI",model:u="gpt-4",workDir:d=process.cwd(),showHeader:m=true,thinkingEnabled:g=true,selectMenuOptions:h=null,textPromptOptions:y=null,contextMenuActive:b=false,agentContextScreenActive:C=false,compressionMode:T="sync",compactionThreshold:S=.85,agentContextStats:E=[],runMode:v="single",networkStats:I,cooperateStats:D,commandOutput:O=[],attachedImages:k=[],interruptInputActive:M=false,queuedMessages:N=[],currentPlanSteps:x=[],sidebarAgents:B=[],backgroundTasks:H=[],bgSelectedIndex:W=-1,onBgKill:U,onBgRemove:z,onBgNavigate:q,onBgToggleExpand:P,getCompletions:$,onStaticRendered:F,onSubmit:V,onInterrupt:Z,onExit:ae,onContextMenuToggle:be,onAgentContextScreenToggle:Pe,onClearCommandOutput:oe,onAttachImage:X,onClearImages:ne,onInterruptInputSubmit:Y,onInterruptInputCancel:Ae,onShowInterruptInput:ge,onScrollUp:_e,onScrollDown:fe,onPageUp:Se,onPageDown:pe,onScrollToTop:J,onScrollToBottom:he})=>{let[K,re]=useState(""),[se,ve]=useState([]),[Be,ce]=useState(-1),[L,ee]=useState(null),[me,le]=useState(true),we=useMemo(()=>!$||!K.startsWith("/")?[]:$(K),[K,$]),We=useContext(po);useEffect(()=>{if(!We?.internal_eventEmitter||!X)return;let ie=$e=>{de("CLI_APP",`\u{1F4CE} Received image-paste event from vendor Ink: ${$e.name}`),X($e);};return We.internal_eventEmitter.on("image-paste",ie),()=>{We.internal_eventEmitter.off("image-paste",ie);}},[We,X]),useEffect(()=>{y?.defaultValue&&re(y.defaultValue);},[y?.defaultValue]),gt((ie,$e)=>{if($e.escape){if(C)return;L?ee(null):O.length>0&&oe&&oe();}$e.pageUp&&Se&&Se(),$e.pageDown&&pe&&pe(),$e.upArrow&&$e.ctrl&&_e&&_e(),$e.downArrow&&$e.ctrl&&fe&&fe(),$e.ctrl&&ie==="a"&&$e.shift&&J&&J(),$e.ctrl&&ie==="z"&&$e.shift&&he&&he(),$e.ctrl&&ie==="o"&&le(it=>!it);},{isActive:!h&&!L});let ye=e.filter(ie=>ie.type!=="thinking"&&ie.type!=="reasoning"),Ne=ie=>{if(!ie)return false;let{content:$e}=ie;return typeof $e=="string"?$e.trim().length>0:Array.isArray($e)?$e.some(it=>{if(!it||typeof it!="object"||!("type"in it))return false;switch(it.type){case "text":return typeof it.text=="string"&&it.text.trim().length>0;case "image_url":return true;case "tool_use":return true;case "tool_result":return it.content!==null&&it.content!==void 0&&String(it.content).trim().length>0;case "thinking":return typeof it.thinking=="string"&&it.thinking.trim().length>0;case "redacted_thinking":return typeof it.data=="string"&&it.data.trim().length>0;default:return true}}):false},ot=ie=>{if(ie.message){let db=Ne(ie.message);if(ie.type==="user"&&!db&&process.env.CLI_DEBUG==="1"){let GI=C$(ie.message.content).slice(0,100);de("APP",`User message filtered out! entry.id=${ie.id}, message.role=${ie.message.role}, content=${GI}`);}return db}let $e=typeof ie.text=="string"&&ie.text.trim().length>0,it=ie.type==="plan"&&!!ie.planSteps&&ie.planSteps.length>0,ao=(ie.type==="pipeline_node_start"||ie.type==="pipeline_node_complete"||ie.type==="pipeline_node_fail"||ie.type==="pipeline_node_retry")&&(ie.pipelineNode||ie.pipelineNodeRetry),FI=(ie.type==="network_node_start"||ie.type==="network_node_complete"||ie.type==="network_node_fail")&&ie.networkNode,UI=(ie.type==="ccb_review"||ie.type==="ccb_agent_review"||ie.type==="ccb_retry"||ie.type==="ccb_failed")&&!!(ie.ccbReview||ie.ccbAgentReview||ie.ccbRetry||ie.ccbFailed),jI=ie.type==="pipeline_dag"&&!!ie.pipelineDAG;return !!($e||it||ao||FI||UI||jI)},Ht=useMemo(()=>ye.filter(ot),[ye]),Fr=useMemo(()=>{let ie=s.filter(ot);return process.env.CLI_DEBUG==="1"&&de("APP",`visibleStaticEntries: staticEntries=${s.length}, visible=${ie.length}, types=${ie.map($e=>$e.type).join(",")}`),ie},[s]),br=A.useCallback((ie,$e)=>ie,[]),Sl=useMemo(()=>{let ie=[];return m&&ie.push(A.createElement(OT,{key:"static-header",version:l,provider:c,model:u,workDir:d})),Fr.forEach(($e,it)=>{ie.push(A.createElement(_,{key:`static-entry-${$e.id}`,flexDirection:"column",marginTop:it>0?1:0},A.createElement(_h,{entry:$e,thinkingCollapsed:me})));}),ie},[m,l,c,u,d,Fr]);if(useEffect(()=>{!m&&s.length===0||F?.();},[m,s.length,F]),C)return A.createElement(Tx,{agentContextStats:E,onClose:()=>Pe?.()});let Ai=ie=>{if(y){if(!ie.trim()&&!y.allowEmpty)return;y.onSubmit(ie),re("");return}let $e=k.length>0,it=ie.trim().length>0;(it||$e)&&(it&&ve([...se,ie]),ce(-1),re(""),V(ie,$e?k:void 0));},Cs=()=>{if(se.length===0)return;let ie=Be+1;ie<se.length&&(ce(ie),re(se[se.length-1-ie]));},Ur=()=>{if(Be<=0){ce(-1),re("");return}let ie=Be-1;ce(ie),re(se[se.length-1-ie]);},OI=ie=>{if(!$)return null;let $e=$(ie);if($e.length===0)return null;if($e.length===1)return $e[0];let it=$e.map(ao=>({label:ao,value:ao,description:void 0}));return ee({message:"Select completion:",choices:it,initialIndex:0,onSelect:ao=>{re(ao),ee(null);},onCancel:()=>{ee(null);}}),null},BI=v==="assistant";return A.createElement(_,{flexDirection:"column",width:"100%"},A.createElement(Jl,{items:Sl},br),A.createElement(_,{flexDirection:"column",width:"100%"},Ht.map((ie,$e)=>A.createElement(_,{key:`pending-wrapper-${ie.id}`,flexDirection:"column",marginTop:1},A.createElement(_h,{entry:ie,thinkingCollapsed:me}))),!me&&(()=>{let ie=[...e].reverse().find($e=>($e.type==="thinking"||$e.type==="reasoning")&&$e.text);return ie?A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{color:"cyan",bold:true},"\u25CF Thinking (latest, ctrl+o to collapse)"),A.createElement(_,{key:`thinking-expanded-${ie.id}`,flexDirection:"column",marginTop:1},A.createElement(hu,{content:ie.text,collapsed:false,type:ie.type,timestamp:ie.timestamp,sourceLabel:ie.sourceLabel}))):null})()),A.createElement(f,null,`
|
|
3758
|
+
`),BI&&A.createElement(kx,{agents:B}),M&&Y&&Ae?A.createElement(_,{flexShrink:0,flexDirection:"column"},A.createElement(wx,{onSubmit:Y,onCancel:Ae})):A.createElement(_,{flexShrink:0,flexDirection:"column"},N.length>0&&A.createElement(xx,{messages:N}),A.createElement(bx,{inputValue:K,isRunning:t,statusText:n,tokenStats:r,streamingTokens:o,streamingStartTime:i,accumulatedRunTime:a,provider:c,model:u,menuActive:!!h||!!L,promptActive:!!y,promptMessage:y?.message,promptHint:y?.hint,promptOnCancel:y?.onCancel,thinkingEnabled:g,contextMenuActive:b,compressionMode:T,compactionThreshold:S,agentContextStats:E,runMode:v,networkStats:I,cooperateStats:D,currentPlanSteps:x,attachments:k,completions:we,onInputChange:ie=>{if(X&&w$(ie)){X(ie.trim());return}re(ie);},onSubmit:Ai,onInterrupt:Z,onExit:ae,onHistoryUp:Cs,onHistoryDown:Ur,onTabComplete:OI,onContextMenuToggle:be,onAgentContextScreenToggle:Pe,onRemoveAttachment:ne?ie=>{ne();}:void 0,onPasteImage:X,onShowInterruptInput:ge,backgroundTasks:H,bgSelectedIndex:W,onBgKill:U,onBgRemove:z,onBgNavigate:q,onBgToggleExpand:P}),h&&A.createElement(Ph,{message:h.message,choices:h.choices,initialIndex:h.initialIndex,hint:h.hint,header:h.header,allowTextInput:h.allowTextInput,onSelect:h.onSelect,onCancel:h.onCancel,onExit:ae}),L&&A.createElement(Ph,{message:L.message,choices:L.choices,initialIndex:L.initialIndex,hint:L.hint,onSelect:L.onSelect,onCancel:L.onCancel,onExit:ae}),O.length>0&&A.createElement(_,{flexDirection:"column",paddingX:2,paddingY:1,borderStyle:"round",borderColor:"gray"},O.map((ie,$e)=>A.createElement(f,{key:$e},ie)))))};te();qr();var Tu=class s{appInstance=null;messages=[];staticEntries=[];nextEntryId=1;isRunning=false;statusText="";tokenStats={input:0,output:0,total:0,contextWindow:void 0,tokensUsedForContext:0,pressure:0};version="";provider="";model="";workDir="";showHeader=true;thinkingEnabled=true;callbacks;forceUpdate=null;selectMenuOptions=null;textPromptOptions=null;contextMenuActive=false;agentContextScreenActive=false;commandOutput=[];getCompletions;memoryLogTimer=null;ttyWriteGuardActive=false;allowTTYWriteDepth=0;originalStdoutWrite=null;originalStderrWrite=null;inkStdout=null;altScreenEnabled=false;attachedImages=[];pendingEntries=[];getPendingMessages=null;interruptInputActive=false;runMode="single";streamingTokens=0;streamingStartTime=null;accumulatedRunTime=0;runningStartTime=null;compressionMode="sync";compactionThreshold=.85;agentContextStats=new Map;networkStats=null;cooperateStats=null;currentPlanSteps=[];backgroundTasks=[];bgNextId=1;bgSelectedIndex=-1;sidebarAgents=[];static MAX_QUEUED_STATIC=50;constructor(e){this.callbacks=e;}addBackgroundTask(e,t){let n=this.bgNextId++;return this.backgroundTasks=[...this.backgroundTasks,{id:n,command:e,pid:t,status:"running",startTime:Date.now(),output:[]}],this.bgSelectedIndex<0&&(this.bgSelectedIndex=0),this.forceUpdate?.(),p.info("BG_TASK",`Added background task #${n}: ${e} (pid=${t})`),n}updateBackgroundTask(e,t){this.backgroundTasks=this.backgroundTasks.map(n=>{if(n.id!==e)return n;let r={...n};return t.status&&(r.status=t.status),t.exitCode!==void 0&&(r.exitCode=t.exitCode),t.outputLine&&(r.output=[...n.output.slice(-19),t.outputLine]),r}),this.forceUpdate?.();}removeBackgroundTask(e){this.backgroundTasks.findIndex(n=>n.id===e)<0||(this.backgroundTasks=this.backgroundTasks.filter(n=>n.id!==e),this.backgroundTasks.length===0?this.bgSelectedIndex=-1:this.bgSelectedIndex>=this.backgroundTasks.length&&(this.bgSelectedIndex=this.backgroundTasks.length-1),this.forceUpdate?.());}killBackgroundTask(e){let t=this.backgroundTasks.find(n=>n.id===e);if(!(!t||t.status!=="running")){try{process.kill(t.pid,"SIGTERM"),p.info("BG_TASK",`Killed background task #${e} (pid=${t.pid})`);}catch(n){p.warn("BG_TASK",`Failed to kill pid ${t.pid}: ${n}`);}this.updateBackgroundTask(e,{status:"killed"});}}bgMoveSelection(e){this.backgroundTasks.length!==0&&(e==="up"?this.bgSelectedIndex=Math.max(0,this.bgSelectedIndex-1):this.bgSelectedIndex=Math.min(this.backgroundTasks.length-1,this.bgSelectedIndex+1),this.forceUpdate?.());}bgToggleExpand(){if(this.bgSelectedIndex<0||this.bgSelectedIndex>=this.backgroundTasks.length)return;let e=this.backgroundTasks[this.bgSelectedIndex];this.backgroundTasks=this.backgroundTasks.map(t=>t.id===e.id?{...t,expanded:!t.expanded}:t),this.forceUpdate?.();}getBackgroundTasks(){return this.backgroundTasks}getBgSelectedIndex(){return this.bgSelectedIndex}hasActiveBackgroundTasks(){return this.backgroundTasks.length>0}updateBackgroundTaskByPid(e,t){let n=this.backgroundTasks.find(r=>r.pid===e);n&&this.updateBackgroundTask(n.id,t);}setCompletionFunction(e){this.getCompletions=e;}start(){p.info("INK","Starting Ink runtime"),this.startMemorySampler();let e=()=>{let[,a]=useState(0);return useLayoutEffect(()=>(this.forceUpdate=()=>{let l=Date.now();p.debug("RUNTIME",`>>> forceUpdate called, staticEntries=${this.staticEntries.length}, pendingEntries=${this.pendingEntries.length}`),a(u=>u+1);let c=Date.now()-l;c>50&&p.warn("RUNTIME",`\u26A0\uFE0F forceUpdate slow: setCounter took ${c}ms`);},()=>{this.forceUpdate=null;}),[]),A.createElement(_x,{staticEntries:this.staticEntries,pendingEntries:this.pendingEntries,isRunning:this.isRunning,statusText:this.statusText,tokenStats:this.tokenStats,streamingTokens:this.streamingTokens,streamingStartTime:this.streamingStartTime,accumulatedRunTime:this.accumulatedRunTime,compressionMode:this.compressionMode,compactionThreshold:this.compactionThreshold,agentContextStats:this.getAgentContextStats(),runMode:this.runMode,networkStats:this.networkStats||void 0,cooperateStats:this.cooperateStats||void 0,currentPlanSteps:this.currentPlanSteps,sidebarAgents:this.getSidebarAgents(),version:this.version,provider:this.provider,model:this.model,workDir:this.workDir,showHeader:this.showHeader,thinkingEnabled:this.thinkingEnabled,selectMenuOptions:this.selectMenuOptions,textPromptOptions:this.textPromptOptions,contextMenuActive:this.contextMenuActive,agentContextScreenActive:this.agentContextScreenActive,commandOutput:this.commandOutput,attachedImages:this.attachedImages,interruptInputActive:this.interruptInputActive,queuedMessages:this.getQueuedMessagesForDisplay(),backgroundTasks:this.backgroundTasks,bgSelectedIndex:this.bgSelectedIndex,onBgKill:l=>this.killBackgroundTask(l),onBgRemove:l=>this.removeBackgroundTask(l),onBgNavigate:l=>this.bgMoveSelection(l),onBgToggleExpand:()=>this.bgToggleExpand(),getCompletions:this.getCompletions,onStaticRendered:void 0,onSubmit:(l,c)=>{let u=c||this.attachedImages;this.attachedImages=[],this.callbacks.onSubmit(l,u);},onInterrupt:this.callbacks.onInterrupt,onExit:this.callbacks.onExit,onContextMenuToggle:()=>{this.contextMenuActive=!this.contextMenuActive,this.forceUpdate?.();},onAgentContextScreenToggle:()=>{this.agentContextScreenActive=!this.agentContextScreenActive,this.forceUpdate?.();},onClearCommandOutput:()=>{this.clearCommandOutput();},onAttachImage:l=>{this.attachImage(l);},onClearImages:()=>{this.clearAttachedImages();},onInterruptInputSubmit:l=>{this.handleInterruptInputSubmit(l);},onInterruptInputCancel:()=>{this.hideInterruptInput();},onShowInterruptInput:()=>{this.showInterruptInput();},onScrollUp:()=>this.appInstance?.scrollUp?.(),onScrollDown:()=>this.appInstance?.scrollDown?.(),onPageUp:()=>this.appInstance?.pageUp?.(),onPageDown:()=>this.appInstance?.pageDown?.(),onScrollToTop:()=>this.appInstance?.scrollToTop?.(),onScrollToBottom:()=>this.appInstance?.scrollToBottom?.()})},t=ht(),n=Hl(),r=t||n;t&&p.info("INK","WSL detected, disabling incremental rendering for compatibility"),n&&p.info("INK","Windows detected, disabling incremental rendering for compatibility");let o=process.env.NEOX_ALT_SCREEN;this.altScreenEnabled=o==="1"||o==="true";let i=this.installTTYWriteGuard();this.appInstance=vo(A.createElement(e,null),{stdout:i,stdin:process.stdin,exitOnCtrlC:false,patchConsole:false,incrementalRendering:!r,useAltScreen:this.altScreenEnabled}),p.info("INK",`Renderer mode: ${this.altScreenEnabled?"alt-screen":"inline"}`),t&&setTimeout(()=>{this.forceUpdate&&(p.debug("INK","WSL startup render nudge"),this.forceUpdate());},0);try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?2004h"),p.info("INK","Bracketed paste mode enabled for image paste detection"));}catch(a){p.warn("INK","Failed to enable bracketed paste mode",{error:a});}if(this.altScreenEnabled)try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?1000h"),this.writeDirectStdout("\x1B[?1002h"),this.writeDirectStdout("\x1B[?1006h"),p.info("INK","Mouse SGR mode enabled for wheel scrolling"));}catch(a){p.warn("INK","Failed to enable mouse mode",{error:a});}try{p.debug("TTY_STATE","\u{1F6E1}\uFE0F [INK] Re-registering SIGTSTP ignore handler after Ink starts"),process.removeAllListeners("SIGTSTP"),process.on("SIGTSTP","ignore"),p.debug("TTY_STATE","\u2705 [INK] SIGTSTP handler re-registered (Ctrl+Z ignored)"),process.env.CLI_DEBUG==="1"&&p.debug("INK","SIGTSTP handler registered (Ctrl+Z ignored)");}catch{p.debug("TTY_STATE","\u26A0\uFE0F [INK] SIGTSTP not supported on this platform"),process.env.CLI_DEBUG==="1"&&p.debug("INK","SIGTSTP not supported on this platform");}p.info("INK","Ink runtime started");}stop(){try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?2004l"),p.debug("INK","Bracketed paste mode disabled"));}catch(e){p.debug("INK","Failed to disable bracketed paste mode (ignored)",{error:e});}if(this.altScreenEnabled)try{process.stdout.isTTY&&!process.stdout.destroyed&&(this.writeDirectStdout("\x1B[?1006l"),this.writeDirectStdout("\x1B[?1002l"),this.writeDirectStdout("\x1B[?1000l"),p.debug("INK","Mouse mode disabled"));}catch(e){p.debug("INK","Failed to disable mouse mode (ignored)",{error:e});}this.appInstance&&(this.appInstance.unmount(),this.appInstance=null,p.info("INK","Ink runtime stopped")),this.restoreTTYWriteGuard(),this.stopMemorySampler(),this.altScreenEnabled=false;}installTTYWriteGuard(){if(this.ttyWriteGuardActive)return this.inkStdout??process.stdout;this.originalStdoutWrite=process.stdout.write.bind(process.stdout),this.originalStderrWrite=process.stderr.write.bind(process.stderr);let e=t=>(n,r,o)=>{if(typeof r=="function"&&(o=r,r=void 0),this.allowTTYWriteDepth>0){let i=t==="stdout"?this.originalStdoutWrite:this.originalStderrWrite;if(i)return i(n,r,o)}return this.handleSuppressedWrite(t,n),typeof o=="function"&&o(),true};return process.stdout.write=e("stdout"),process.stderr.write=e("stderr"),this.inkStdout=this.createInkStdoutProxy(),this.ttyWriteGuardActive=true,p.info("INK","TTY output guard enabled"),this.inkStdout}restoreTTYWriteGuard(){this.ttyWriteGuardActive&&(this.originalStdoutWrite&&(process.stdout.write=this.originalStdoutWrite),this.originalStderrWrite&&(process.stderr.write=this.originalStderrWrite),this.ttyWriteGuardActive=false,this.inkStdout=null,p.info("INK","TTY output guard disabled"));}createInkStdoutProxy(){let e=process.stdout,t=this.originalStdoutWrite||e.write.bind(e);return new Proxy(e,{get:(n,r,o)=>{if(r==="write")return (a,l,c)=>this.withDirectTTYWrite(()=>t(a,l,c));let i=Reflect.get(n,r,o);return typeof i=="function"?i.bind(n):i}})}withDirectTTYWrite(e){this.allowTTYWriteDepth+=1;try{return e()}finally{this.allowTTYWriteDepth=Math.max(0,this.allowTTYWriteDepth-1);}}writeDirectStdout(e){let t=this.originalStdoutWrite||process.stdout.write.bind(process.stdout);this.withDirectTTYWrite(()=>{t(e);});}handleSuppressedWrite(e,t){if(t==null)return;let n="";if(typeof t=="string")n=t;else if(Buffer.isBuffer(t))n=t.toString("utf8");else try{n=String(t);}catch{return}if(!n||n.trim().length===0)return;let r=n.length>2e3?`${n.slice(0,2e3)}...`:n;p.warn("TTY_SUPPRESS",`[${e}] ${r}`);}addMessage(e){this.messages=[...this.messages.slice(-4),e],this.forceUpdate?.();}addEntry(e){let t={...e,id:this.nextEntryId++,timestamp:new Date};if(e.type==="user"){let n=!!e.message,r=e.message?.content;p.debug("INK_RUNTIME",`[addEntry] user entry id=${t.id}, hasMessage=${n}, contentType=${typeof r}, isArray=${Array.isArray(r)}`);}return this.staticEntries.length>=s.MAX_QUEUED_STATIC&&(p.warn("INK_RUNTIME",`Static queue reached limit (${this.staticEntries.length}). Forcing immediate render to prevent OOM.`),this.forceUpdate?.(),setImmediate(()=>{this.clearStaticEntries();})),this.staticEntries=[...this.staticEntries,t],p.debug("INK_RUNTIME",`Queued static entry ${t.id}. Pending static: ${this.staticEntries.length}, type: ${e.type}, forceUpdate: ${!!this.forceUpdate}`),this.forceUpdate?this.forceUpdate():setImmediate(()=>{this.forceUpdate?.();}),t.id}updateEntry(e,t){let n=this.staticEntries.findIndex(o=>o.id===e);if(n>=0){this.staticEntries=this.staticEntries.map((o,i)=>i===n?{...o,...t}:o),this.forceUpdate?.();return}let r=this.pendingEntries.findIndex(o=>o.id===e);r>=0&&(this.pendingEntries=this.pendingEntries.map((o,i)=>i===r?{...o,...t}:o),this.forceUpdate?.());}getEntry(e){return this.staticEntries.find(t=>t.id===e)||this.pendingEntries.find(t=>t.id===e)}addPendingEntry(e){let t={...e,id:this.nextEntryId++,timestamp:new Date};if(this.pendingEntries.length>=10){p.warn("INK_RUNTIME",`Too many pending entries (${this.pendingEntries.length}). Auto-committing oldest.`);let r=this.pendingEntries[0];this.staticEntries=[...this.staticEntries,r],this.pendingEntries=this.pendingEntries.slice(1);}return this.pendingEntries=[...this.pendingEntries,t],p.debug("INK_RUNTIME",`Added pending entry ${t.id}. Pending: ${this.pendingEntries.length}`),this.forceUpdate?.(),t.id}updatePendingEntry(e,t){let n=this.pendingEntries.findIndex(r=>r.id===e);n>=0&&(this.pendingEntries=this.pendingEntries.map((r,o)=>o===n?{...r,...t}:r),this.forceUpdate?.());}updatePendingEntryByKey(e,t){let n=this.pendingEntries.findIndex(r=>r.entryKey===e);if(n>=0)this.pendingEntries=this.pendingEntries.map((r,o)=>o===n?{...r,...t,entryKey:e,timestamp:new Date}:r);else {let r={...t,entryKey:e,id:this.nextEntryId++,timestamp:new Date};this.pendingEntries=[...this.pendingEntries,r];}this.forceUpdate?.();}commitPendingEntryByKey(e){let t=this.pendingEntries.findIndex(n=>n.entryKey===e);if(t>=0){let n=this.pendingEntries[t];return this.pendingEntries=this.pendingEntries.filter((r,o)=>o!==t),this.staticEntries=[...this.staticEntries,{...n,isStreaming:false,isComplete:true}],p.debug("INK_RUNTIME",`Committed entry by key ${e}. Static: ${this.staticEntries.length}, Pending: ${this.pendingEntries.length}`),this.forceUpdate?.(),true}return false}commitPendingEntry(e){let t=this.pendingEntries.findIndex(n=>n.id===e);if(t>=0){let n=this.pendingEntries[t];this.pendingEntries=this.pendingEntries.filter((r,o)=>o!==t),this.staticEntries=[...this.staticEntries,n],p.debug("INK_RUNTIME",`Committed entry ${e}. Static: ${this.staticEntries.length}, Pending: ${this.pendingEntries.length}`),this.forceUpdate?.();}else p.warn("INK_RUNTIME",`Cannot commit entry ${e} - not found in pending entries`);}clearPendingEntries(){this.pendingEntries.length>0&&(this.pendingEntries=[],this.forceUpdate?.());}commitAllPendingEntries(){if(this.pendingEntries.length>0){let e=this.pendingEntries.map(t=>({...t,isStreaming:false,isComplete:true}));this.staticEntries=[...this.staticEntries,...e],this.pendingEntries=[],p.debug("INK_RUNTIME",`Committed ${e.length} pending entries on run complete`),this.forceUpdate?.();}}updateStreamingStats(e){this.streamingTokens=e,this.streamingStartTime||(this.streamingStartTime=Date.now()),this.forceUpdate?.();}resetStreamingStats(){this.streamingTokens=0,this.streamingStartTime=null;}getAccumulatedRunTime(){if(this.isRunning&&this.runningStartTime!==null){let e=Math.floor((Date.now()-this.runningStartTime)/1e3);return this.accumulatedRunTime+e}return this.accumulatedRunTime}resetAccumulatedRunTime(){this.accumulatedRunTime=0,this.runningStartTime=null,this.forceUpdate?.();}setCompressionMode(e){this.compressionMode!==e&&(this.compressionMode=e,this.forceUpdate?.());}setCompactionThreshold(e){this.compactionThreshold!==e&&(this.compactionThreshold=e,this.forceUpdate?.());}updateAgentContext(e,t){this.agentContextStats.set(e,t),this.forceUpdate?.();}clearAgentContext(e){this.agentContextStats.has(e)&&(this.agentContextStats.delete(e),this.forceUpdate?.());}clearAllAgentContexts(){this.agentContextStats.size>0&&(this.agentContextStats.clear(),this.forceUpdate?.());}getAgentContextStats(){return Array.from(this.agentContextStats.values()).sort((t,n)=>t.agentId==="supervisor"?-1:n.agentId==="supervisor"?1:t.agentId.localeCompare(n.agentId))}updateLastMessage(e){if(this.messages.length===0)return;let t=this.messages[this.messages.length-1];if(typeof t.content=="string")t.content=e;else if(Array.isArray(t.content)){let n=t.content.find(r=>r.type==="text");n&&"text"in n&&(n.text=e);}this.forceUpdate?.();}getLastMessageText(){if(this.messages.length===0)return "";let e=this.messages[this.messages.length-1];if(typeof e.content=="string")return e.content;if(Array.isArray(e.content)){let t=e.content.find(n=>n.type==="text");if(t&&"text"in t)return t.text||""}return ""}setRunning(e){if(this.isRunning!==e){if(e)this.runningStartTime=Date.now();else if(this.runningStartTime!==null){let t=Math.floor((Date.now()-this.runningStartTime)/1e3);this.accumulatedRunTime+=t,this.runningStartTime=null;}this.isRunning=e,this.forceUpdate?.();}}triggerForceUpdate(){this.forceUpdate?.();}setStatusText(e){this.statusText!==e&&(this.statusText=e,this.forceUpdate?.());}setTokenStats(e){p.info("DEBUG_CTX",`InkRuntime.setTokenStats: received contextWindow=${e.contextWindow}, current=${this.tokenStats.contextWindow}`);let t=e.contextWindow!==void 0?e.contextWindow:this.tokenStats.contextWindow;(this.tokenStats.input!==e.input||this.tokenStats.output!==e.output||this.tokenStats.total!==e.total||this.tokenStats.contextWindow!==t||this.tokenStats.tokensUsedForContext!==e.tokensUsedForContext||this.tokenStats.pressure!==e.pressure||this.tokenStats.toolTokens!==e.toolTokens||this.tokenStats.messageTokens!==e.messageTokens||this.tokenStats.systemTokens!==e.systemTokens||this.tokenStats.userTokens!==e.userTokens||this.tokenStats.assistantTokens!==e.assistantTokens||this.tokenStats.toolCallTokens!==e.toolCallTokens||this.tokenStats.toolResultTokens!==e.toolResultTokens||this.tokenStats.cacheCreationTokens!==e.cacheCreationTokens||this.tokenStats.cacheReadTokens!==e.cacheReadTokens)&&(this.tokenStats={...e,contextWindow:t,tokensUsedForContext:e.tokensUsedForContext??this.tokenStats.tokensUsedForContext,pressure:e.pressure??this.tokenStats.pressure},p.info("DEBUG_CTX",`InkRuntime.setTokenStats: after update contextWindow=${this.tokenStats.contextWindow}`),this.forceUpdate?.());}clearMessages(){p.warn("INK_RUNTIME",`clearMessages called! This will clear pending/static queues. Messages: ${this.messages.length}`),this.messages=[],this.staticEntries=[],this.pendingEntries=[],this.forceUpdate?.();}setCommandOutput(e){p.debug("INK_RUNTIME","Set command output",{lineCount:e.length}),this.commandOutput=e,this.forceUpdate?.();}clearCommandOutput(){p.debug("INK_RUNTIME","Clear command output"),this.commandOutput=[],this.forceUpdate?.();}attachImage(e){let t;if(typeof e=="string")if(e.startsWith("data:")){let r=e.match(/^data:([^;]+);base64,(.+)$/);if(r){let o=`image_${Date.now()}.png`;t={mediaType:r[1],data:r[2],name:o};}else {p.error("INK_RUNTIME","Invalid data URL format",{imageData:e});return}}else {let r=e.split("/").pop()||e;t={path:e,name:r};}else t=e;if(this.attachedImages.some(r=>r.path&&t.path&&r.path===t.path||r.data&&t.data&&r.data===t.data)){p.debug("INK_RUNTIME","Image already attached");return}this.attachedImages.push(t),p.info("INK_RUNTIME",`\u{1F4CE} Attached image #${this.attachedImages.length}: ${t.name||"unnamed"}`),this.forceUpdate?.();}clearAttachedImages(){this.attachedImages.length>0&&(p.debug("INK_RUNTIME",`Cleared ${this.attachedImages.length} attached images`),this.attachedImages=[],this.forceUpdate?.());}getAttachedImages(){return [...this.attachedImages]}showInterruptInput(){p.debug("INK_RUNTIME","Show interrupt input"),this.interruptInputActive=true,this.forceUpdate?.();}hideInterruptInput(){p.debug("INK_RUNTIME","Hide interrupt input"),this.interruptInputActive=false,this.forceUpdate?.();}handleInterruptInputSubmit(e){p.debug("INK_RUNTIME","Handle interrupt input submit",{text:e.substring(0,50)}),this.hideInterruptInput(),this.callbacks.onSubmit(e);}setGetPendingMessages(e){this.getPendingMessages=e;}getQueuedMessagesForDisplay(){return this.getPendingMessages?this.getPendingMessages().map((e,t)=>({id:t+1,text:e.text,timestamp:e.timestamp})):[]}hasQueuedMessages(){return this.getPendingMessages?this.getPendingMessages().length>0:false}addAgentSpawnEntry(e,t,n,r){return this.addEntry({type:"agent_spawn",agentId:e,agentIndex:t,agentStatus:"running",agentTask:n,agentModel:r,text:n})}addAgentProgressEntry(e,t,n,r){return this.addEntry({type:"agent_progress",agentId:e,agentIndex:t,agentStatus:"running",agentProgress:n,text:r})}addAgentCompleteEntry(e,t,n){return this.addEntry({type:"agent_complete",agentId:e,agentIndex:t,agentStatus:"completed",text:n})}addAgentErrorEntry(e,t,n){return this.addEntry({type:"agent_error",agentId:e,agentIndex:t,agentStatus:"error",agentError:n,text:n})}setVersion(e){this.version=e,this.forceUpdate?.();}setProvider(e){this.provider=e,this.forceUpdate?.();}setModel(e){this.model=e,this.forceUpdate?.();}setRunMode(e){this.runMode=e,e!=="network"&&(this.networkStats=null),this.forceUpdate?.();}upsertSidebarAgent(e){let t=this.sidebarAgents.find(n=>n.id===e.id);t?(t.role=e.role,t.task=e.task,t.status=e.status,e.toolCount!==void 0&&(t.toolCount=e.toolCount),e.tokens!==void 0&&(t.tokens=e.tokens),t.elapsed=Math.round((Date.now()-t.startTime)/1e3)):this.sidebarAgents.push({id:e.id,role:e.role,task:e.task,status:e.status,toolCount:e.toolCount??0,tokens:e.tokens??0,elapsed:0,startTime:Date.now()}),this.forceUpdate?.();}removeSidebarAgent(e){this.sidebarAgents=this.sidebarAgents.filter(t=>t.id!==e),this.forceUpdate?.();}clearSidebarAgents(){this.sidebarAgents=[],this.forceUpdate?.();}getSidebarAgents(){let e=Date.now();for(let t of this.sidebarAgents)t.status==="running"&&(t.elapsed=Math.round((e-t.startTime)/1e3));return this.sidebarAgents}updateNetworkStats(e){this.networkStats||(this.networkStats={teamSize:0,activeAgents:0,totalInputTokens:0,totalOutputTokens:0}),Object.assign(this.networkStats,e),this.forceUpdate?.();}clearNetworkStats(){this.networkStats=null,this.forceUpdate?.();}getNetworkStats(){return this.networkStats}updateCooperateStats(e){this.cooperateStats||(this.cooperateStats={models:[],totalInputTokens:0,totalOutputTokens:0}),Object.assign(this.cooperateStats,e),this.forceUpdate?.();}clearCooperateStats(){this.cooperateStats=null,this.forceUpdate?.();}getCooperateStats(){return this.cooperateStats}setPlanSteps(e){this.currentPlanSteps=e,this.forceUpdate?.();}getPlanSteps(){return this.currentPlanSteps}clearPlanSteps(){this.currentPlanSteps=[],this.forceUpdate?.();}setWorkDir(e){this.workDir=e,this.forceUpdate?.();}setShowHeader(e){this.showHeader=e,this.forceUpdate?.();}setThinkingEnabled(e){this.thinkingEnabled!==e&&(this.thinkingEnabled=e,this.forceUpdate?.());}showSelectMenu(e){if(p.debug("INK_RUNTIME","Show select menu",{options:e}),process.stdin.isTTY&&!process.stdin.destroyed){let t=process.stdin.isPaused?.()||false;process.stdin.isRaw||false;if(t){process.env.CLI_DEBUG==="1"&&p.debug("INK_RUNTIME",`showSelectMenu: Resuming stdin (wasPaused=${t})`);try{process.stdin.resume(),p.info("INK_RUNTIME","\u2713 Stdin resumed for SelectMenu");}catch(r){p.error("INK_RUNTIME","Failed to resume stdin for SelectMenu",{error:r});}}}this.selectMenuOptions=e,this.forceUpdate?.();}hideSelectMenu(){if(p.debug("INK_RUNTIME","Hide select menu"),this.selectMenuOptions){let e=this.selectMenuOptions.choices.length+5;process.stdout.write(S$.eraseLines(e));}this.selectMenuOptions=null,this.forceUpdate?.(),process.nextTick(()=>{this.forceUpdate?.();});}isSelectMenuActive(){return this.selectMenuOptions!==null}updateSelectMenuIndex(e){if(!this.selectMenuOptions)return;let t=Math.max(0,this.selectMenuOptions.choices.length-1),n=Math.max(0,Math.min(e,t));this.selectMenuOptions={...this.selectMenuOptions,initialIndex:n},this.forceUpdate?.();}showTextPrompt(e){if(p.debug("INK_RUNTIME","Show text prompt",{options:e}),process.stdin.isTTY&&!process.stdin.destroyed){let t=process.stdin.isPaused?.()||false;if(t){process.env.CLI_DEBUG==="1"&&p.debug("INK_RUNTIME",`showTextPrompt: Resuming stdin (wasPaused=${t})`);try{process.stdin.resume(),p.info("INK_RUNTIME","\u2713 Stdin resumed for TextPrompt");}catch(n){p.error("INK_RUNTIME","Failed to resume stdin for TextPrompt",{error:n});}}}this.textPromptOptions=e,this.forceUpdate?.();}hideTextPrompt(){p.debug("INK_RUNTIME","Hide text prompt"),this.textPromptOptions=null,this.forceUpdate?.();}showContextMenu(){p.debug("INK_RUNTIME","Show context menu"),this.contextMenuActive=true,this.forceUpdate?.();}hideContextMenu(){p.debug("INK_RUNTIME","Hide context menu"),this.contextMenuActive=false,this.forceUpdate?.();}getContextMenuActive(){return this.contextMenuActive}clearStaticEntries(){if(this.staticEntries.length===0)return;let e=this.staticEntries.length;p.debug("INK_RUNTIME",`Clearing ${e} static entries from memory`),this.staticEntries=[],global.gc&&e>10&&(p.debug("INK_RUNTIME","Triggering manual GC after clearing entries"),setImmediate(()=>{global.gc&&global.gc();}));}startMemorySampler(){this.memoryLogTimer||process.env.INK_MEM!=="1"||(this.memoryLogTimer=setInterval(()=>{let e=process.memoryUsage(),t=n=>Math.round(n/1024/1024*10)/10;p.info("INK_MEM","usage",{rssMB:t(e.rss),heapUsedMB:t(e.heapUsed),heapTotalMB:t(e.heapTotal),externalMB:t(e.external),arrayBuffersMB:t(e.arrayBuffers??0),pendingEntries:this.pendingEntries.length,queuedStatic:this.staticEntries.length,isRunning:this.isRunning});},1e4));}stopMemorySampler(){this.memoryLogTimer&&(clearInterval(this.memoryLogTimer),this.memoryLogTimer=null);}};te();ja();var A$=s=>{let e=new WeakSet;try{return JSON.stringify(s,(t,n)=>{if(typeof n=="bigint")return n.toString();if(n instanceof Error)return {name:n.name,message:n.message,stack:n.stack};if(typeof n=="function")return "[Function]";if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular]";e.add(n);}return n})}catch{try{return String(s)}catch{return "[Unserializable]"}}},_u=class{runtime;config;callbacks;currentThinkingText="";lastMessageRole=null;lastEntryId=null;tokenStats={inputTokens:0,outputTokens:0,totalTokens:0};memory;streamingTextPendingId=null;streamingReasoningPendingId=null;streamingTextBuffer="";streamingReasoningBuffer="";streamingReasoningType="thinking";streamingReasoningSourceLabel=void 0;streamingToolChars=0;hasInferredThinkingStatus=false;toolLogIdByToolId=new Map;toolLogDetailsByToolId=new Map;toolLogNameByToolId=new Map;toolLogOutputByToolId=new Map;toolLogSourceLabelByToolId=new Map;streamingSourceLabel=null;streamingSourceType=null;agentBuffers=new Map;activeAgentId=null;constructor(e){this.config=e,this.memory=e.memory,this.runtime=new Tu({onSubmit:(t,n)=>{this.callbacks?.onSubmit&&this.callbacks.onSubmit(t,n);},onInterrupt:()=>{this.callbacks?.onInterrupt&&this.callbacks.onInterrupt();},onExit:()=>{this.callbacks?.onExit&&this.callbacks.onExit();}}),e.getPendingMessages&&this.runtime.setGetPendingMessages(e.getPendingMessages);}start(e){this.callbacks=e,this.runtime.setVersion(this.config.version),this.runtime.setProvider(this.config.provider),this.runtime.setModel(this.config.model),this.runtime.setWorkDir(this.config.workDir),this.config.getCompletions&&this.runtime.setCompletionFunction(this.config.getCompletions),this.runtime.start(),p.info("INK_ADAPTER","Ink UI started");}stop(){this.runtime.stop(),this.callbacks=void 0,p.info("INK_ADAPTER","Ink UI stopped");}addUserMessage(e,t,n){let r=[{type:"text",text:e}];if(t&&t.length>0)for(let i of t)r.push({type:"image_url",image_url:{url:`file://${i.path}`}});let o={role:"user",content:r};this.lastEntryId=this.runtime.addEntry({type:"user",message:o,sourceLabel:n==="remote"?"Android":void 0}),this.lastMessageRole="user";}addAssistantMessage(e=""){if(e===""){this.lastMessageRole="assistant";return}let t={role:"assistant",content:[{type:"text",text:e}]};this.lastEntryId=this.runtime.addEntry({type:"assistant",message:t,isStreaming:false}),this.lastMessageRole="assistant";}addSupervisorMessage(e){let t={role:"user",content:[{type:"text",text:e}]};this.lastEntryId=this.runtime.addEntry({type:"supervisor",message:t}),this.lastMessageRole="user";}startSupervisorStreaming(){this.startAgentStreaming("Supervisor"),this.streamingSourceLabel="Supervisor",this.streamingSourceType="supervisor";}startExecutorStreaming(e){let t=e||"Executor";this.startAgentStreaming(t);}getStreamingSourceType(){return this.streamingSourceType}startAgentStreaming(e){this.agentBuffers.has(e)||this.agentBuffers.set(e,""),this.activeAgentId=e,this.lastMessageRole="assistant",p.debug("INK_ADAPTER",`Started agent streaming for ${e}`);}startWorkerStreaming(e){this.startAgentStreaming(e);}addWorkerTextDelta(e,t){this.streamText(t,e);}completeWorkerStreaming(e){this.completeTextStreaming(e);}addWorkerInfo(e,t,n,r="info"){let i=`${`[${e}]`} ${t}`,a=r==="error"?"warning":r;this.addInfo(i,n,a);}streamText(e,t){let n=Date.now(),r=t||this.activeAgentId||"default";p.debug("INK_ADAPTER",`streamText: ${e.length} chars to ${r}`,{snippet:e.substring(0,30),bufferExists:this.agentBuffers.has(r)});let o=Date.now()-n;o>10&&p.warn("INK_ADAPTER",`\u26A0\uFE0F streamText slow: ${o}ms for ${e.length} chars`);let i=this.agentBuffers.get(r)||"";this.agentBuffers.set(r,i+e);}addTextDelta(e,t){p.debug("INK_ADAPTER",`addTextDelta called: ${e.length} chars, agentId=${t||"default"}`,{delta:e.substring(0,50)}),this.streamText(e,t);}addAgentTextDelta(e,t,n){p.debug("INK_ADAPTER",`addAgentTextDelta: ${e.length} chars, agentId=${t}`,{delta:e.substring(0,50)}),this.agentBuffers.has(t)||this.agentBuffers.set(t,"");let r=this.agentBuffers.get(t)||"";this.agentBuffers.set(t,r+e);let i={role:"assistant",content:[{type:"text",text:this.agentBuffers.get(t)||""}]};this.runtime.updatePendingEntryByKey(t,{type:"assistant",message:i,isStreaming:true,isComplete:false,sourceLabel:n||t});}bufferAgentTextOnly(e,t){this.agentBuffers.has(t)||this.agentBuffers.set(t,"");let n=this.agentBuffers.get(t)||"";this.agentBuffers.set(t,n+e);}flushAgentBuffer(e){let t=this.agentBuffers.get(e)||"";return this.agentBuffers.delete(e),t}commitPendingEntryByKey(e){return this.agentBuffers.has(e)&&this.agentBuffers.delete(e),this.runtime.commitPendingEntryByKey(e)}addToolCall(e,t){let n={role:"assistant",content:[{type:"tool_use",id:`tool_${Math.floor(Date.now())}`,name:e,input:t}]};this.runtime.addMessage(n),this.lastMessageRole="tool_call";}addToolCallEntry(e,t,n){p.debug("INK_ADAPTER","Add tool call entry",{toolName:e,sourceLabel:n?.sourceLabel});let r=`entry_${Date.now()}_${Math.random().toString(36).slice(2,6)}`;this.startToolCallWithId(r,e,t,n);}addToolResult(e,t=false){let n={role:"user",content:[{type:"tool_result",tool_use_id:`tool_${Math.floor(Date.now())}`,content:e,is_error:t}]};this.runtime.addMessage(n),this.lastMessageRole="tool_result";}addEntry(e){return p.debug("INK_ADAPTER",`AddEntry: ${e.type}`,{text:e.text}),this.runtime.addEntry(e)}addInfo(e,t,n="info",r){p.info("INK_ADAPTER",`Info: ${e}`,t?{details:t}:void 0);let o=n==="warning"||e.includes("\u26A0")||e.includes("\u23F3")||e.includes("\u23F1\uFE0F")||e.includes("\u{1F504}");this.runtime.addEntry({type:o?"warning":"info",text:e,details:t,sourceLabel:r});}addError(e,t){let n=typeof t=="string"?t:t?.details,r=typeof t=="object"?t?.sourceLabel:void 0;p.error("INK_ADAPTER",e,n?{details:n}:void 0),this.runtime.addEntry({type:"error",text:e,details:n,sourceLabel:r});}addWarning(e,t,n){p.warn("INK_ADAPTER",e,t?{details:t}:void 0),this.runtime.addEntry({type:"warning",text:e,details:t,sourceLabel:n?.sourceLabel});}addCompacting(e,t){p.info("INK_ADAPTER",`Compacting: ${e}`,t?{details:t}:void 0),this.runtime.addEntry({type:"compacting",text:e,details:t});}updateStatus(e,t){if(t==="tool_call"&&e.includes("Streaming:")){let n=e.match(/\((\d+) chars\)/);if(n){let r=parseInt(n[1],10);this.streamingToolChars=r,this.runtime.updateStreamingStats(r);}}else t!=="tool_call"&&(this.streamingToolChars=0);t==="compacting"||t==="thinking"||t==="tool_call"?this.runtime.setRunning(true):(t==="complete"||t==="error")&&this.runtime.setRunning(false),this.runtime.setStatusText(e);}setRunning(e){this.runtime.setRunning(e);}startSessionTimer(){}getAccumulatedRunTime(){return this.runtime.getAccumulatedRunTime()}resetAccumulatedRunTime(){this.runtime.resetAccumulatedRunTime();}setCompressionMode(e){this.runtime.setCompressionMode(e);}setCompactionThreshold(e){this.runtime.setCompactionThreshold(e/100);}updateTokenStats(e,t){this.tokenStats.inputTokens=e,this.tokenStats.outputTokens=t,this.tokenStats.totalTokens=e+t,this.runtime.setTokenStats({input:e,output:t,total:e+t});}updateAgentContext(e,t){this.runtime.updateAgentContext(e,t);}clearAgentContext(e){this.runtime.clearAgentContext(e);}clearAllAgentContexts(){this.runtime.clearAllAgentContexts();}getTokenStats(){return {...this.tokenStats}}setTokenStats(e,t,n){p.info("DEBUG_CTX",`InkUIAdapter.setTokenStats: input=${e}, output=${t}, extras.contextWindow=${n?.contextWindow}`),this.tokenStats={inputTokens:e,outputTokens:t,totalTokens:e+t,...n};let r=n?.anthropicCacheCreationTokens||n?.openaiCachedTokens||n?.cacheCreationTokens,o=n?.anthropicCacheReadTokens||n?.cacheReadTokens,i=n?.contextWindow||0,a=n?.tokensUsedForContext||e+t+(o||0),l=i>0?a/i:0;p.info("DEBUG_CTX",`InkUIAdapter.setTokenStats: passing to runtime contextWindow=${n?.contextWindow}, calculated contextWindow=${i}`),this.runtime.setTokenStats({input:e,output:t,total:e+t,contextWindow:n?.contextWindow,tokensUsedForContext:n?.tokensUsedForContext,pressure:l,systemTokens:n?.systemTokens,userTokens:n?.userTokens,assistantTokens:n?.assistantTokens,toolCallTokens:n?.toolCallTokens,toolResultTokens:n?.toolResultTokens,toolTokens:n?.toolTokens,messageTokens:n?.messageTokens,cacheCreationTokens:r,cacheReadTokens:o});}startThinking(){this.streamingReasoningBuffer="",this.streamingReasoningType="thinking",this.hasInferredThinkingStatus=false,this.updateStatus(ku(),"thinking");}streamThinking(e,t="thinking",n){if(this.streamingReasoningBuffer+=e,n&&(this.streamingReasoningSourceLabel=n),!this.hasInferredThinkingStatus&&this.streamingReasoningBuffer.length>30){let r=Px(this.streamingReasoningBuffer);r&&(this.updateStatus(r,"thinking"),this.hasInferredThinkingStatus=true);}this.streamingReasoningPendingId?this.runtime.updatePendingEntry(this.streamingReasoningPendingId,{text:this.streamingReasoningBuffer}):(this.streamingReasoningType=t,this.streamingReasoningPendingId=this.runtime.addPendingEntry({type:t,text:this.streamingReasoningBuffer,isStreaming:true}));}endThinking(){if(!this.streamingReasoningPendingId){this.updateStatus("","info");return}try{this.streamingReasoningBuffer&&this.streamingReasoningBuffer.trim().length>0?(this.runtime.updatePendingEntry(this.streamingReasoningPendingId,{isStreaming:!1,isComplete:!0,sourceLabel:this.streamingReasoningSourceLabel}),this.runtime.commitPendingEntry(this.streamingReasoningPendingId),p.debug("INK_ADAPTER",`Committed reasoning entry (${this.streamingReasoningBuffer.length} chars)`)):p.debug("INK_ADAPTER","Discarding empty reasoning entry (no content)");}catch(e){p.warn("INK_ADAPTER","Failed to commit reasoning entry",{error:e});}finally{this.streamingReasoningPendingId=null,this.streamingReasoningBuffer="",this.streamingReasoningSourceLabel=void 0,this.runtime.resetStreamingStats(),this.updateStatus("","info");}}startTaskTimer(){this.runtime.setRunning(true);}stopTaskTimer(){this.runtime.setRunning(false);}setStreamingTokens(e){this.runtime.updateStreamingStats(e);}clear(){this.runtime.clearMessages(),this.lastMessageRole=null;}resetStreamingState(){this.agentBuffers.clear(),this.activeAgentId=null,this.streamingTextBuffer="",this.streamingTextPendingId=null,this.streamingReasoningBuffer="",this.streamingReasoningPendingId=null,this.currentThinkingText="",this.streamingToolChars=0,this.runtime.clearPendingEntries(),this.runtime.resetStreamingStats(),this.runtime.setStatusText(""),p.debug("INK_ADAPTER","Reset streaming state (cleared all pending entries and buffers)");}finalizeStreamingState(){let e=Array.from(this.agentBuffers.keys());if(e.length>0)for(let t of e)this.completeTextStreaming(t);else this.completeTextStreaming();this.completeReasoningStreaming();}startReasoningStreaming(){this.startThinking();}streamReasoningText(e){this.streamThinking(e);}addReasoningDelta(e,t){this.streamThinking(e,"reasoning",t);}completeReasoningStreaming(e){e&&(this.streamingReasoningSourceLabel=e),this.endThinking();}addThinking(e){}completeTextStreaming(e){let t=e||this.activeAgentId||"default",n=this.agentBuffers.get(t)||"";if(!(n&&n.trim().length>0)){p.debug("INK_ADAPTER",`Complete text streaming (${t}) - no text to commit`),this.agentBuffers.delete(t),this.runtime.commitPendingEntryByKey(t),(t==="default"||t===this.activeAgentId)&&(this.streamingTextPendingId=null,this.streamingSourceLabel=null,this.streamingSourceType=null,this.runtime.resetStreamingStats());return}try{if(this.runtime.commitPendingEntryByKey(t))p.debug("INK_ADAPTER",`Complete text streaming (${t}) - committed pending entry ${n.length} chars`);else {let i={role:"assistant",content:[{type:"text",text:n}]};this.runtime.addEntry({type:"assistant",message:i,isStreaming:!1,isComplete:!0,sourceLabel:t==="default"?void 0:t}),p.debug("INK_ADAPTER",`Complete text streaming (${t}) - created static entry from buffer ${n.length} chars`);}}catch(o){p.warn("INK_ADAPTER","Failed to commit text entry",{error:o});}finally{this.agentBuffers.delete(t),(t==="default"||t===this.activeAgentId)&&(this.streamingTextPendingId=null,this.streamingSourceLabel=null,this.streamingSourceType=null,this.lastMessageRole="assistant",this.runtime.resetStreamingStats()),this.activeAgentId===t&&(this.activeAgentId=null);}}printCommandOutput(e){p.debug("INK_ADAPTER",`Command output: ${e}`);}setCommandOutputLines(e){p.debug("INK_ADAPTER",`Set command output lines: ${e.length}`),this.runtime.setCommandOutput(e);}clearCommandOutputLines(){p.debug("INK_ADAPTER","Clear command output lines"),this.runtime.clearCommandOutput();}startToolCallWithId(e,t,n,r){p.debug("INK_ADAPTER",`Start tool call: ${t}`,{toolId:e,args:n});let o=r?.sourceLabel,i=t,a=n;t==="call_tool"&&n?.name&&(i=n.name,a=n.args||{});let l=this.buildToolCallDetails(a,r),d={readfile:"readfile",Read:"readfile",read_file:"readfile",smart_read:"readfile",read:"readfile",search:"search",Grep:"search",grep:"search",search_files:"search_files",Glob:"search_files",glob:"search_files",find_files:"search_files",show_tree:"show_tree",smart_tree:"show_tree",list_directory:"show_tree",ls:"show_tree",file_update:"file_update",Edit:"file_update",edit_file:"file_update",Write:"file_update",write_file:"file_update",delete_file:"file_update",rename_file:"file_update",apply_patch:"file_update",create_directory:"file_update",command_exec:"command_exec",Bash:"command_exec",bash:"command_exec",shell:"command_exec",execute_command:"command_exec",execute_shell:"command_exec",code_exec:"code_exec",execute_python:"code_exec",execute_javascript:"code_exec",web_search:"web_search",WebSearch:"web_search",web_fetch:"web_fetch",WebFetch:"web_fetch",browser_debug:"browser_debug",debug_in_browser:"browser_debug",git_status:"git_status",git_diff:"git_diff",git_log:"git_log",git_commit:"git_commit",git_blame:"git_diff",git_branch:"git_running",git_branch_list:"git_running",TodoWrite:"todo",TodoRead:"todo",Task:"task",NotebookEdit:"notebook",NotebookRead:"notebook",AskUserQuestion:"ask_user",ask_user:"ask_user",run_tests:"command_exec",run_lint:"command_exec",run_format:"command_exec",build_index:"search",search_symbol:"search",get_definitions:"search",get_references:"search",index_stats:"search",analyze_code:"search"}[i]||"tool_call",m=this.buildToolSummaryText(d,i,a),g=this.runtime.addPendingEntry({type:d,text:m,details:l,entryKey:e,isStreaming:true,sourceLabel:o});this.toolLogIdByToolId.set(e,g),this.toolLogDetailsByToolId.set(e,l||""),this.toolLogNameByToolId.set(e,i),o&&this.toolLogSourceLabelByToolId.set(e,o);let h=Su(i,a);this.updateStatus(h,"tool_call");}updateToolCallOutput(e,t,n){p.debug("INK_ADAPTER",`Update tool output: ${e}`,{output:t});let r=this.toolLogIdByToolId.get(e);if(!r)return;let o=this.toolLogDetailsByToolId.get(e)||"",i=this.formatToolOutput(t,n?.truncated);i&&this.toolLogOutputByToolId.set(e,i);let a=this.mergeToolDetails(o,i);this.runtime.updateEntry(r,{details:a,isStreaming:true});}completeToolCall(e,t){p.debug("INK_ADAPTER",`Complete tool call: ${e}`);let n=this.toolLogIdByToolId.get(e);if(!n){t?.result&&this.addToolResult(t.result,t.isError||false);return}let r=this.toolLogSourceLabelByToolId.get(e),o=this.toolLogNameByToolId.get(e)||"",i=this.isGitResultTool(o),a=t?.summary||t?.error||"",l=this.toolLogOutputByToolId.get(e)||"",c=(a||l||"").replace(/\r\n?/g,`
|
|
3759
3759
|
`).trim(),u=c.split(`
|
|
3760
3760
|
`).find(h=>h.trim())||"",d=u.length>200?u.slice(0,197)+"\u2026":u,m={isStreaming:false,isComplete:true,sourceLabel:r};d&&(m.text=d);let g=this.formatToolCompletionDetails(c,o);if(g&&(m.details=g),i){let h=this.formatGitToolDetails(a,l);h&&(m.details=h);}t?.success||(m.type="tool_error"),this.runtime.updateEntry(n,m),this.runtime.commitPendingEntry(n),this.toolLogIdByToolId.delete(e),this.toolLogDetailsByToolId.delete(e),this.toolLogNameByToolId.delete(e),this.toolLogOutputByToolId.delete(e),this.toolLogSourceLabelByToolId.delete(e);}updateTaskTokens(e,t=false){p.debug("INK_ADAPTER",`Update task tokens: ${e}`,{isActual:t}),!t&&this.runtime.updateStreamingStats(e);}addToolError(e,t){p.error("INK_ADAPTER",`Tool error: ${e}`,{error:t}),this.addToolResult(t,true);}printCommandOutputLines(e){e.forEach(t=>this.printCommandOutput(t));}resetTokenStats(){this.tokenStats={inputTokens:0,outputTokens:0,totalTokens:0},this.runtime.setTokenStats({input:0,output:0,total:0});}pause(){p.debug("INK_ADAPTER","Pause UI");}resume(){p.debug("INK_ADAPTER","Resume UI");}refreshUI(){p.debug("INK_ADAPTER","Refresh UI");}forceUpdate(){p.debug("INK_ADAPTER","Force UI update"),this.runtime.triggerForceUpdate();}setPlanSteps(e){p.debug("INK_ADAPTER",`Set plan steps: ${e.length} items`),this.runtime.setPlanSteps(e);}getPlanSteps(){return this.runtime.getPlanSteps()}clearPlanSteps(){p.debug("INK_ADAPTER","Clear plan steps"),this.runtime.clearPlanSteps();}commitAllPendingEntries(){p.debug("INK_ADAPTER","Commit all pending entries"),this.runtime.commitAllPendingEntries();}updateProvider(e,t){this.config.provider=e,this.config.model=t,this.runtime.setProvider(e),this.runtime.setModel(t);}updateWorkDir(e){this.config.workDir=e,this.runtime.setWorkDir(e);}setThinkingEnabled(e){this.runtime.setThinkingEnabled(e);}setRunMode(e){this.runtime.setRunMode(e);}updateNetworkStats(e){this.runtime.updateNetworkStats(e);}clearNetworkStats(){this.runtime.clearNetworkStats();}updateCooperateStats(e){this.runtime.updateCooperateStats(e);}clearCooperateStats(){this.runtime.clearCooperateStats();}addBackgroundTask(e,t){return this.runtime.addBackgroundTask(e,t)}updateBackgroundTask(e,t){this.runtime.updateBackgroundTask(e,t);}removeBackgroundTask(e){this.runtime.removeBackgroundTask(e);}updateBackgroundTaskByPid(e,t){this.runtime.updateBackgroundTaskByPid(e,t);}showContextMenu(){return new Promise(e=>{this.runtime.showContextMenu();let t=setInterval(()=>{this.runtime.getContextMenuActive()||(clearInterval(t),e());},100);})}async promptText(e){return new Promise(t=>{this.runtime.showTextPrompt({message:e.message,defaultValue:e.defaultValue??e.initial,hint:e.hint,allowEmpty:e.allowEmpty??false,onSubmit:n=>{this.runtime.hideTextPrompt(),t(n);},onCancel:()=>{this.runtime.hideTextPrompt(),t(null);}});})}async promptSelect(e){return new Promise(t=>{this.runtime.hideSelectMenu();let n=e.choices.map(o=>({label:o.title,value:o.value,description:o.description})),r=e.initial||0;if(e.initialValue){let o=e.choices.findIndex(i=>i.value===e.initialValue);o>=0&&(r=o);}setTimeout(()=>{this.runtime.showSelectMenu({message:e.message,choices:n,initialIndex:r,hint:e.hint,header:e.header,allowTextInput:e.allowTextInput,onSelect:o=>{this.runtime.hideSelectMenu(),setTimeout(()=>t(o),100);},onCancel:()=>{this.runtime.hideSelectMenu(),setTimeout(()=>t(null),100);}});},100);})}handleSelectBack(){return p.debug("INK_ADAPTER","Handle select back"),this.runtime.isSelectMenuActive()?(this.runtime.hideSelectMenu(),true):false}addWebSearchResult(e){if(e.status==="searching"){p.debug("INK_ADAPTER","Skip web search start (waiting for completion)");return}p.debug("INK_ADAPTER","Add web search result",{options:e});let t=e.query||"query",n=e.results?`Found ${e.results.length} results`:void 0;this.runtime.addEntry({type:"web_search",text:t,details:n,sourceLabel:e.sourceLabel});}addWebFetchResult(e){if(e.status==="fetching"){p.debug("INK_ADAPTER","Skip web fetch start (waiting for completion)");return}p.debug("INK_ADAPTER","Add web fetch result",{options:e});let t=e.url||"URL",n=e.contentLength?`${(e.contentLength/1024).toFixed(1)}KB`:e.contentPreview?`${e.contentPreview.length} chars`:void 0;this.runtime.addEntry({type:"web_fetch",text:t,details:n,sourceLabel:e.sourceLabel});}addReadFileResult(e){if(e.status==="reading"){p.debug("INK_ADAPTER","Skip read file start (waiting for completion)");return}p.debug("INK_ADAPTER","Add read file result",{options:e});let t=e.filePath||"file",n=e.totalLines?`${t} \u2014 ${e.totalLines} lines read`:t,r=[];e.totalLines&&r.push(`${e.totalLines} lines`),e.fileSize&&r.push(e.fileSize);let o=r.length>0?r.join(", "):void 0;this.runtime.addEntry({type:"readfile",text:n,details:o,sourceLabel:e.sourceLabel});}addSearchResult(e){if(e.status==="searching"){p.debug("INK_ADAPTER","Skip search start (waiting for completion)");return}p.debug("INK_ADAPTER","Add search result",{options:e});let t=[];if(e.pattern&&t.push(`pattern="${e.pattern}"`),e.filePath){let i=e.filePath==="."?".":e.filePath;t.push(`path="${i}"`);}e.mode&&t.push(`mode="${e.mode}"`),e.strategy&&t.push(`engine="${e.strategy}"`),e.status==="completed"?e.matchCount!==void 0&&t.push(`matches=${e.matchCount}`):e.status==="error"&&t.push("\u274C ERROR");let n=t.join(", "),r=[];if(e.command){let i=this.simplifyRipgrepCommand(e.command);r.push(`$ ${i}`),r.push("");}e.status==="error"&&e.error?r.push(this.parseErrorMessage(e.error)):e.details&&r.push(e.details);let o=r.length>0?r.join(`
|
|
3761
3761
|
`):void 0;this.runtime.addEntry({type:"search",text:n,details:o,sourceLabel:e.sourceLabel});}addSearchFilesResult(e){if(e.status==="searching"){p.debug("INK_ADAPTER","Skip search files start (waiting for completion)");return}p.debug("INK_ADAPTER","Add search files result",{options:e});let t=[];e.pattern&&t.push(`pattern="${e.pattern}"`),e.path&&t.push(`path="${e.path}"`),e.fileCount!==void 0&&t.push(`files=${e.fileCount}`);let n=t.length>0?t.join(", "):"Glob";this.runtime.addEntry({type:"search_files",text:n,sourceLabel:e.sourceLabel});}addShowTreeResult(e){if(e.status==="loading"){p.debug("INK_ADAPTER","Skip show tree start (waiting for completion)");return}p.debug("INK_ADAPTER","Add show tree result",{options:e});let n=[`path="${e.path||"."}"`];if(e.mode&&n.push(`mode="${e.mode}"`),e.maxDepth!==void 0&&e.maxDepth!==null&&n.push(`depth=${e.maxDepth}`),e.status==="completed"&&e.totalChars){let a=(e.totalChars/1024).toFixed(1);n.push(`${a}KB`);}else e.status==="error"&&n.push("\u274C ERROR");let r=n.join(", "),o=this.formatSmartTreeDetails(e.content),i;if(e.status==="error"&&e.error)i=`Error: ${e.error}`;else if(o)i=o;else if(e.content){let a=e.content.replace(/\r\n?/g,`
|
|
@@ -3812,7 +3812,7 @@ ${n}`:n;this.runtime.addEntry({type:c?"ptc_error":"ptc_complete",text:u,details:
|
|
|
3812
3812
|
`)}mergeToolDetails(e,t){let n=[];return e&&n.push(e),t&&(n.length>0&&n.push("---"),n.push(t)),n.join(`
|
|
3813
3813
|
`)}truncateText(e,t){return e.length<=t?e:`${e.slice(0,t)}
|
|
3814
3814
|
... (truncated)`}formatDuration(e){if(e<1e3)return `${e}ms`;let t=e/1e3;if(t<60)return `${t.toFixed(2)}s`;let n=Math.floor(t/60),r=t-n*60;return `${n}m ${r.toFixed(1)}s`}stopHealthMonitoring(){p.debug("INK_ADAPTER","Stop health monitoring");}flushRenderScheduler(){p.debug("INK_ADAPTER","Flush render scheduler (no-op for Ink)");}getLastMessageText(){if(!this.lastEntryId)return "";let e=this.runtime.getEntry(this.lastEntryId);if(!e||!e.message)return "";let t=e.message;if(typeof t.content=="string")return t.content;if(Array.isArray(t.content)){let n=t.content.find(r=>r.type==="text");if(n&&"text"in n)return n.text||""}return ""}parseErrorMessage(e){let t=e.trim();if(t.startsWith("{")&&t.endsWith("}"))try{let n=JSON.parse(t),r=[];return n.summary?r.push(n.summary):n.error&&r.push(n.error),n.tool&&r.push(`Tool: ${n.tool}`),n.status&&n.status!=="error"&&r.push(`Status: ${n.status}`),n.metadata&&(n.metadata.exit_code!==void 0&&r.push(`Exit code: ${n.metadata.exit_code}`),n.metadata.command&&r.push(`Command: ${n.metadata.command}`)),r.length>0?r.join(`
|
|
3815
|
-
`):e}catch{}return e.startsWith("Error:")?e:`Error: ${e}`}simplifyRipgrepCommand(e){let t=e.split(/\s+/),n=[],r=false,o=0;for(let i=0;i<t.length;i++){if(r){r=false;continue}let a=t[i];if(a.includes("/rg")||a.includes("\\rg")){n.push("rg");continue}if(i===t.length-1&&a.startsWith("/")){let l=process.cwd();if(a===l)n.push(".");else if(a.startsWith(l+"/")){let c=a.substring(l.length+1);n.push(c||".");}else {let c=a.split("/").pop()||".";n.push(c);}continue}if(a==="-g"){if(o++,o<=2)n.push(a),i+1<t.length&&(n.push(t[i+1]),r=true);else if(o===3){let l=t.slice(i).filter(c=>c==="-g").length;for(n.push(`... (+${l} more -g)`);i<t.length&&(t[i]==="-g"||i>0&&t[i-1]==="-g");)t[i]==="-g"&&i+1<t.length&&i++,i++;i--;}continue}n.push(a);}return n.join(" ")}};var Lx=({onContinue:s,onManualEdit:e,onExit:t,onAutoCreate:n,detectedProviders:r=[]})=>{let o=r.length>0,i=o?[{label:"\u81EA\u52A8\u521B\u5EFA",value:"auto",description:`\u4ECE\u73AF\u5883\u53D8\u91CF\u521B\u5EFA (${r.map(c=>c.name).join(", ")})`},{label:"\u624B\u52A8\u914D\u7F6E",value:"setup",description:"\u8FDB\u5165\u4EA4\u4E92\u5F0F\u914D\u7F6E\u5411\u5BFC"},{label:"\u7F16\u8F91\u6587\u4EF6",value:"manual",description:"\u6253\u5F00\u914D\u7F6E\u6587\u4EF6\u624B\u52A8\u7F16\u8F91"},{label:"\u9000\u51FA",value:"exit",description:"\u7A0D\u540E\u518D\u914D\u7F6E"}]:[{label:"\u5F00\u59CB\u914D\u7F6E",value:"setup",description:"\u8FDB\u5165\u4EA4\u4E92\u5F0F\u914D\u7F6E\u5411\u5BFC"},{label:"\u7F16\u8F91\u6587\u4EF6",value:"manual",description:"\u6253\u5F00\u914D\u7F6E\u6587\u4EF6\u624B\u52A8\u7F16\u8F91"},{label:"\u9000\u51FA",value:"exit",description:"\u7A0D\u540E\u518D\u914D\u7F6E"}],[a,l]=useState(0);return gt((c,u)=>{if(u.upArrow&&l(d=>d>0?d-1:i.length-1),u.downArrow&&l(d=>d<i.length-1?d+1:0),u.return)switch(i[a].value){case "auto":n?.();break;case "setup":s();break;case "manual":e?.();break;case "exit":t?.();break}u.escape&&t?.();}),A.createElement(_,{flexDirection:"column",paddingX:1,paddingY:1},A.createElement(f,{bold:true,color:"yellow"},"Neox CLI - Provider \u914D\u7F6E"),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{marginTop:1},A.createElement(f,{color:"cyan"},G().ui.noProviderDetected)),A.createElement(f,{dimColor:true},G().ui.needConfigProvider),o&&A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{color:"green"},"+ ",G().ui.detectedCredentials,":"),r.map((c,u)=>A.createElement(_,{key:u,marginLeft:2},A.createElement(f,null,A.createElement(f,{color:"cyan"},c.name.padEnd(12)),A.createElement(f,{dimColor:true},c.protocol),c.baseUrl&&A.createElement(f,{dimColor:true}," | ",c.baseUrl))))),A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{dimColor:true},G().ui.supportedProviders)),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{bold:true},G().ui.selectAction,":"),A.createElement(_,{flexDirection:"column",marginTop:1},i.map((c,u)=>{let d=u===a,m=d?">":" ";return A.createElement(_,{key:c.value},A.createElement(f,{color:d?"cyan":void 0,bold:d},m," ",c.label.padEnd(10)),A.createElement(f,{dimColor:true}," ",c.description))}))),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},G().common.selectHint)))};var Nx=({onComplete:s,onStartSetup:e,onManualEdit:t,onAutoCreate:n,detectedProviders:r=[]})=>{let{exit:o}=Fi(),[i,a]=useState(true);return gt((l,c)=>{c.escape&&!i&&(s(),o());}),i?A.createElement(Lx,{detectedProviders:r,onContinue:()=>{a(false),e();},onManualEdit:()=>{a(false),t?.(),s(),o();},onAutoCreate:()=>{a(false),n?.(),s(),o();},onExit:()=>{s(),o();}}):A.createElement(_,{flexDirection:"column",padding:1},A.createElement(f,{color:"cyan"},G().ui.startingProviderSetup),A.createElement(f,{dimColor:true},G().ui.completeSetupInPopup))};us();var ci=[{value:"openai",label:"OpenAI (Chat Completions)",defaultUrl:"https://api.openai.com/v1",providerKey:"openai"},{value:"openai-responses",label:"OpenAI (Responses API)",defaultUrl:"https://api.openai.com/v1",providerKey:"openai"},{value:"kimi",label:"Kimi (Moonshot)",defaultUrl:"https://api.moonshot.cn/v1",providerKey:"kimi"},{value:"anthropic",label:"Anthropic (Claude)",defaultUrl:"https://api.anthropic.com",providerKey:"anthropic"},{value:"anthropic-openai",label:"Anthropic (OpenAI \u683C\u5F0F)",defaultUrl:"https://api.anthropic.com/v1",providerKey:"anthropic"},{value:"gemini",label:"Gemini",defaultUrl:"https://generativelanguage.googleapis.com",providerKey:"gemini"},{value:"doubao",label:"\u8C46\u5305 (Doubao)",defaultUrl:"https://ark.cn-beijing.volces.com/api/v3",providerKey:"doubao"},{value:"deepseek",label:"DeepSeek",defaultUrl:"https://api.deepseek.com/v1",providerKey:"deepseek"}],$x=({onComplete:s,onCancel:e})=>{let{exit:t}=Fi(),{write:n}=Qt(),[r,o]=useState("name"),[i,a]=useState(0),l=useRef("name"),[c,u]=useState("My Provider"),[d,m]=useState(""),[g,h]=useState(""),[y,b]=useState(""),[C,T]=useState(""),[S,E]=useState(""),[v,I]=useState("My Provider"),[D,O]=useState(true);useEffect(()=>{l.current!==r&&(n("\x1B[2J\x1B[H"),l.current=r);},[r,n]),A.useEffect(()=>{let z=setInterval(()=>O(q=>!q),500);return ()=>clearInterval(z)},[]);let k=useMemo(()=>g?on.getModelsByProvider(g).filter(q=>!q.deprecated).sort((q,P)=>(P.scores?.coding??0)-(q.scores?.coding??0)):[],[g]);gt((z,q)=>{if(q.escape){e(),t();return}if(r==="protocol"||r==="model"){let P=r==="protocol"?ci:k;if(q.upArrow&&a($=>$>0?$-1:P.length-1),q.downArrow&&a($=>$<P.length-1?$+1:0),q.return)if(r==="protocol"){let $=ci[i];m($.value),h($.providerKey),I($.defaultUrl),o("baseUrl"),a(0);}else {let $=k[i];E($.id),o("confirm");}return}if(r==="confirm"){q.return&&(s({name:c,protocol:d,baseUrl:y,apiKey:C,model:S}),t());return}if(q.return){if(r==="name")u(v||"My Provider"),I(""),o("protocol"),a(0);else if(r==="baseUrl"){let P=ci.find($=>$.value===d);b(v||P?.defaultUrl||""),I(""),o("apiKey");}else r==="apiKey"&&v.trim().length>0&&(T(v),I(""),o("model"),a(0));return}if(q.backspace||q.delete){I(P=>P.slice(0,-1));return}z&&!q.ctrl&&!q.meta&&I(P=>P+z);});let M=(z,q,P=false)=>{let $=P?"*".repeat(v.length):v;return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},z),A.createElement(_,{marginTop:1},A.createElement(f,{color:"cyan"},"> "),A.createElement(f,null,$),A.createElement(f,{color:"gray"},D?"\u2588":" ")),q&&!v&&A.createElement(_,{marginLeft:2},A.createElement(f,{dimColor:true},"(",q,")")))},N=()=>A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},G().ui.selectProtocol),A.createElement(_,{flexDirection:"column",marginTop:1},ci.map((z,q)=>{let P=q===i;return A.createElement(_,{key:z.value},A.createElement(f,{color:P?"cyan":void 0,bold:P},P?"> ":" ",z.label))}))),x=()=>{let z=k.slice(0,10),q=k.length>10;return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},G().ui.selectDefaultModel),A.createElement(f,{dimColor:true},lt(G().ui.modelsAvailable,{count:k.length})),A.createElement(_,{flexDirection:"column",marginTop:1},z.map((P,$)=>{let F=$===i,V=P.scores?.coding?`[code:${P.scores.coding}]`:"";return A.createElement(_,{key:P.id},A.createElement(f,{color:F?"cyan":void 0,bold:F},F?"> ":" ",P.id.padEnd(30)),A.createElement(f,{dimColor:true}," ",V))}),q&&i<10&&A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true}," ... ",lt(G().ui.moreModels,{count:k.length-10})))))},B=()=>{let z=on.getModel(S);return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,color:"green"},G().ui.configConfirm),A.createElement(_,{flexDirection:"column",marginTop:1,marginLeft:2},A.createElement(f,null,G().ui.name,": ",A.createElement(f,{color:"cyan"},c)),A.createElement(f,null,G().ui.protocol,": ",A.createElement(f,{color:"cyan"},ci.find(q=>q.value===d)?.label)),A.createElement(f,null,"Base URL: ",A.createElement(f,{color:"cyan"},y)),A.createElement(f,null,"API Key: ",A.createElement(f,{color:"cyan"},"*".repeat(Math.min(C.length,20)),"...")),A.createElement(f,null,G().ui.model,": ",A.createElement(f,{color:"cyan"},S)),z&&A.createElement(f,{dimColor:true},"(in: ",(z.maxInputTokens/1e3).toFixed(0),"K, out: ",(z.maxOutputTokens/1e3).toFixed(0),"K)")),A.createElement(_,{marginTop:1},A.createElement(f,{color:"yellow"},G().ui.pressEnterToConfirm)))},H=["name","protocol","baseUrl","apiKey","model","confirm"],U=`[${H.indexOf(r)+1}/${H.length}]`;return A.createElement(_,{flexDirection:"column",paddingX:1,paddingY:1},A.createElement(f,{bold:true,color:"yellow"},G().ui.providerSetupWizard," ",U),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{marginTop:1},r==="name"&&M("Provider Name","Default: My Provider"),r==="protocol"&&N(),r==="baseUrl"&&M("Base URL (leave empty for default)",ci.find(z=>z.value===d)?.defaultUrl||""),r==="apiKey"&&M("API Key","",true),r==="model"&&x(),r==="confirm"&&B()),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},r==="protocol"||r==="model"?"\u2191\u2193 \u9009\u62E9 ":"","Enter \u786E\u8BA4 ESC \u53D6\u6D88")))};us();var Eu={warn:.7,soft:.8,hard:.95},Oh=2e4;function G$(s,e){return {warn:e?.warn??s?.warn??Eu.warn,soft:e?.soft??s?.soft??Eu.soft,hard:e?.hard??s?.hard??Eu.hard}}function W$(s,e){if(e!==void 0)return e;if(s)return Math.floor(s*9/10)}function z$(s,e){if(e!==void 0)return e;if(!s)return Oh;let t=Math.floor(s*.15);return Math.min(Oh,t||Oh)}function Ox(s,e){let t=on.getModel(s);process.env.CLI_DEBUG==="1"&&(console.error(`[PROFILE] resolveCompatProfile for model="${s}"`),console.error(`[PROFILE] registryModel found: ${!!t}`),console.error(`[PROFILE] registryModel.maxInputTokens: ${t?.maxInputTokens}`),console.error(`[PROFILE] overrides.contextWindow: ${e?.contextWindow}`));let n=128e3,r=16e3,o=e?.contextWindow??t?.maxInputTokens??n,i=e?.maxOutputTokens??t?.maxOutputTokens??r;process.env.CLI_DEBUG==="1"&&console.error(`[PROFILE] final contextWindow: ${o}`);let a=W$(o,e?.autoCompactTokenLimit),l=z$(o,e?.tailTokenBudget),c=G$(Eu,e?.warnThresholds);return {model:s,contextWindow:o,autoCompactLimit:a,maxOutputTokens:i,tailTokenBudget:l,warnThresholds:c,source:e?"override":t?"registry":"default"}}un();te();Cu();wt();var H$=".neox",q$="mcp.json";function Bh(s){return Ie__default.join(s,H$,q$)}function Ga(s){let e=Bh(s);try{let t=Ct__default.readFileSync(e,"utf-8");return JSON.parse(t)??{}}catch{return {}}}function Pu(s,e){let t=Bh(s),n=Ie__default.dirname(t);Ct__default.existsSync(n)||Ct__default.mkdirSync(n,{recursive:true}),Ct__default.writeFileSync(t,JSON.stringify(e,null,2),"utf-8");}function Ux(){return He().mcp??{}}function Js(s){let e=(Ux().servers??[]).map(r=>({...Bx(r),scope:"user"})),t=(Ga(s).servers??[]).map(r=>({...Bx(r),scope:"workspace"})),n=new Map;for(let r of e)n.set(r.id,r);for(let r of t)n.set(r.id,r);return Array.from(n.values())}function Bx(s){return {...s,transport:s.transport??"stdio",enabled:s.enabled??true,autoConnect:s.autoConnect??false}}function Mu(s,e,t,n){if(e==="workspace"){let l=Ga(s),c=l.servers??[],u=c.findIndex(d=>d.id===t.id);if(u>=0&&true)throw new Error(`MCP server "${t.id}" already exists in workspace config`);u>=0?c[u]=t:c.push(t),Pu(s,{...l,servers:c});return}let r=He(),o=r.mcp??{},i=o.servers??[],a=i.findIndex(l=>l.id===t.id);if(a>=0&&true)throw new Error(`MCP server "${t.id}" already exists in user config`);a>=0?i[a]=t:i.push(t),r.mcp={...o,servers:i},Me(r);}function Ru(s,e,t){if(e==="workspace"){let a=Ga(s),l=a.servers??[],c=l.filter(u=>u.id!==t);return c.length===l.length?false:(Pu(s,{...a,servers:c}),true)}let n=He(),r=n.mcp??{},o=r.servers??[],i=o.filter(a=>a.id!==t);return i.length===o.length?false:(n.mcp={...r,servers:i},Me(n),true)}function ar(s,e,t,n){if(e==="workspace"){let l=Ga(s),c=l.servers??[],u=c.findIndex(d=>d.id===t);return u<0?false:(c[u]={...c[u],...n},Pu(s,{...l,servers:c}),true)}let r=He(),o=r.mcp??{},i=o.servers??[],a=i.findIndex(l=>l.id===t);return a<0?false:(i[a]={...i[a],...n},r.mcp={...o,servers:i},Me(r),true)}Du();var lr=class{workDir;connections=new Map;connecting=new Map;toolsCache=null;_enabled=true;constructor(e){this.workDir=e.workDir;}isEnabled(){return this._enabled}setEnabled(e){this._enabled=e,e||(this.toolsCache=null);}setWorkDir(e){this.workDir!==e&&(this.workDir=e,this.toolsCache=null);}listServers(){return Js(this.workDir)}async refreshTools(){return await this.disconnectAll(),this.toolsCache=null,this.getTools({refresh:true})}async getTools(e){if(!this._enabled)return [];if(e?.refresh&&(this.toolsCache=null),!e?.refresh&&this.toolsCache)return this.toolsCache;let t=[],n=this.listServers();for(let r of n)if(r.enabled!==false)try{let o=await this.getToolDefsForServer(r);for(let i of o)t.push(this.createTool(r,i));}catch(o){p.warn("MCP",`Failed to load tools for ${r.id}: ${o?.message||o}`);}return this.toolsCache=t,t}async connect(e){let t=this.listServers().find(r=>r.id===e);if(!t)throw new Error(`MCP server not found: ${e}`);let n=await this.ensureConnected(t);return this.toolsCache=null,n}async disconnect(e){let t=this.connections.get(e);if(t){this.connections.delete(e),this.toolsCache=null;try{await t.client.close();}catch{}try{await t.transport.close?.();}catch{}}}async disconnectAll(){let e=Array.from(this.connections.keys());for(let t of e)await this.disconnect(t);}async testServer(e){let t=await this.connect(e),n=this.filterTools(t.tools,t.server);return {toolCount:n.length,tools:n.map(r=>r.name)}}async getToolDefinitions(e){let t=await this.connect(e);return this.filterTools(t.tools,t.server)}async ensureConnected(e){let t=this.connections.get(e.id);if(t)return t;let n=this.connecting.get(e.id);if(n)return n;let r=this.createConnection(e);this.connecting.set(e.id,r);try{let o=await r;return this.connections.set(e.id,o),o}finally{this.connecting.delete(e.id);}}async createConnection(e){let t=this.createTransport(e),n=new Client({name:"neox",version:ai},{capabilities:{}});await n.connect(t);let o=(await n.listTools())?.tools??[];return p.info("MCP",`Connected ${e.id} (${o.length} tools)`),{server:e,client:n,transport:t,tools:o}}createTransport(e){if(e.transport==="sse"){if(!e.url)throw new Error(`MCP server ${e.id} missing url for sse transport`);return new SSEClientTransport(new URL(e.url))}if(!e.command)throw new Error(`MCP server ${e.id} missing command for stdio transport`);let t=new StdioClientTransport({command:e.command,args:e.args??[],env:Q$(e.env),stderr:"pipe"});return this.attachStdioStderrLogger(t,e),t}createTool(e,t){return {name:Fh(e.id,t.name),description:`[MCP:${e.id}] ${t.description||t.name}`,parameters:Y$(t.inputSchema),function:async r=>{let i=await(await this.ensureConnected(e)).client.callTool({name:t.name,arguments:r??{}});return Z$(i)},permission:{category:"network",defaultPermission:"ask",permissionReason:`MCP tool from ${e.id}`}}}attachStdioStderrLogger(e,t){let n=e.stderr;if(!n)return;let r="";n.on("data",o=>{let i=typeof o=="string"?o:o.toString("utf8");r+=i;let a=r.split(/\r?\n/);r=a.pop()??"";for(let l of a){let c=l.trim();if(!c)continue;let u=c.length>2e3?`${c.slice(0,2e3)}...`:c;p.warn("MCP_STDERR",`[${t.id}] ${u}`);}}),n.on("error",o=>{p.warn("MCP_STDERR",`stderr stream error from ${t.id}: ${o.message}`);}),n.on("end",()=>{let o=r.trim();if(o){let i=o.length>2e3?`${o.slice(0,2e3)}...`:o;p.warn("MCP_STDERR",`[${t.id}] ${i}`);}r="";});}filterTools(e,t){let n=t.allowlist??[],r=t.denylist??[];return e.filter(o=>r.length>0&&jx(o.name,r)?false:n.length>0?jx(o.name,n):true)}async getToolDefsForServer(e){if(this.connections.has(e.id)){let r=this.connections.get(e.id);return this.filterTools(r.tools,e)}let n=e.toolCache??[];return this.filterTools(n,e)}};function Y$(s){if(!s||typeof s!="object")return {type:"object",properties:{}};let e=typeof s.properties=="object"&&s.properties!==null?s.properties:{},t=Array.isArray(s.required)?s.required:void 0,n=typeof s.additionalProperties=="boolean"?s.additionalProperties:void 0;return {type:"object",properties:e,required:t,additionalProperties:n}}function jx(s,e){return e.some(t=>X$(s,t))}function X$(s,e){if(e==="*")return true;if(!e.includes("*"))return s===e;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${t.replace(/\\\*/g,".*")}$`).test(s)}function Q$(s){let e={};for(let[t,n]of Object.entries(process.env))typeof n=="string"&&(e[t]=n);if(s)for(let[t,n]of Object.entries(s))e[t]=n;return e}function Z$(s){if(!s)return "";let e=!!s.isError,t=s.content,n=eO(t);if(e)throw new Error(n||"MCP tool error");return n||JSON.stringify(s)}function eO(s){return s?typeof s=="string"?s:Array.isArray(s)?s.map(e=>e?e.type==="text"&&typeof e.text=="string"?e.text:JSON.stringify(e):"").filter(Boolean).join(`
|
|
3815
|
+
`):e}catch{}return e.startsWith("Error:")?e:`Error: ${e}`}simplifyRipgrepCommand(e){let t=e.split(/\s+/),n=[],r=false,o=0;for(let i=0;i<t.length;i++){if(r){r=false;continue}let a=t[i];if(a.includes("/rg")||a.includes("\\rg")){n.push("rg");continue}if(i===t.length-1&&a.startsWith("/")){let l=process.cwd();if(a===l)n.push(".");else if(a.startsWith(l+"/")){let c=a.substring(l.length+1);n.push(c||".");}else {let c=a.split("/").pop()||".";n.push(c);}continue}if(a==="-g"){if(o++,o<=2)n.push(a),i+1<t.length&&(n.push(t[i+1]),r=true);else if(o===3){let l=t.slice(i).filter(c=>c==="-g").length;for(n.push(`... (+${l} more -g)`);i<t.length&&(t[i]==="-g"||i>0&&t[i-1]==="-g");)t[i]==="-g"&&i+1<t.length&&i++,i++;i--;}continue}n.push(a);}return n.join(" ")}};var Lx=({onContinue:s,onManualEdit:e,onExit:t,onAutoCreate:n,detectedProviders:r=[]})=>{let o=r.length>0,i=o?[{label:"\u81EA\u52A8\u521B\u5EFA",value:"auto",description:`\u4ECE\u73AF\u5883\u53D8\u91CF\u521B\u5EFA (${r.map(c=>c.name).join(", ")})`},{label:"\u624B\u52A8\u914D\u7F6E",value:"setup",description:"\u8FDB\u5165\u4EA4\u4E92\u5F0F\u914D\u7F6E\u5411\u5BFC"},{label:"\u7F16\u8F91\u6587\u4EF6",value:"manual",description:"\u6253\u5F00\u914D\u7F6E\u6587\u4EF6\u624B\u52A8\u7F16\u8F91"},{label:"\u9000\u51FA",value:"exit",description:"\u7A0D\u540E\u518D\u914D\u7F6E"}]:[{label:"\u5F00\u59CB\u914D\u7F6E",value:"setup",description:"\u8FDB\u5165\u4EA4\u4E92\u5F0F\u914D\u7F6E\u5411\u5BFC"},{label:"\u7F16\u8F91\u6587\u4EF6",value:"manual",description:"\u6253\u5F00\u914D\u7F6E\u6587\u4EF6\u624B\u52A8\u7F16\u8F91"},{label:"\u9000\u51FA",value:"exit",description:"\u7A0D\u540E\u518D\u914D\u7F6E"}],[a,l]=useState(0);return gt((c,u)=>{if(u.upArrow&&l(d=>d>0?d-1:i.length-1),u.downArrow&&l(d=>d<i.length-1?d+1:0),u.return)switch(i[a].value){case "auto":n?.();break;case "setup":s();break;case "manual":e?.();break;case "exit":t?.();break}u.escape&&t?.();}),A.createElement(_,{flexDirection:"column",paddingX:1,paddingY:1},A.createElement(f,{bold:true,color:"yellow"},"Neox CLI - Provider \u914D\u7F6E"),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{marginTop:1},A.createElement(f,{color:"cyan"},G().ui.noProviderDetected)),A.createElement(f,{dimColor:true},G().ui.needConfigProvider),o&&A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{color:"green"},"+ ",G().ui.detectedCredentials,":"),r.map((c,u)=>A.createElement(_,{key:u,marginLeft:2},A.createElement(f,null,A.createElement(f,{color:"cyan"},c.name.padEnd(12)),A.createElement(f,{dimColor:true},c.protocol),c.baseUrl&&A.createElement(f,{dimColor:true}," | ",c.baseUrl))))),A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{dimColor:true},G().ui.supportedProviders)),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{flexDirection:"column",marginTop:1},A.createElement(f,{bold:true},G().ui.selectAction,":"),A.createElement(_,{flexDirection:"column",marginTop:1},i.map((c,u)=>{let d=u===a,m=d?">":" ";return A.createElement(_,{key:c.value},A.createElement(f,{color:d?"cyan":void 0,bold:d},m," ",c.label.padEnd(10)),A.createElement(f,{dimColor:true}," ",c.description))}))),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},G().common.selectHint)))};var Nx=({onComplete:s,onStartSetup:e,onManualEdit:t,onAutoCreate:n,detectedProviders:r=[]})=>{let{exit:o}=Fi(),[i,a]=useState(true);return gt((l,c)=>{c.escape&&!i&&(s(),o());}),i?A.createElement(Lx,{detectedProviders:r,onContinue:()=>{a(false),e();},onManualEdit:()=>{a(false),t?.(),s(),o();},onAutoCreate:()=>{a(false),n?.(),s(),o();},onExit:()=>{s(),o();}}):A.createElement(_,{flexDirection:"column",padding:1},A.createElement(f,{color:"cyan"},G().ui.startingProviderSetup),A.createElement(f,{dimColor:true},G().ui.completeSetupInPopup))};cs();var ci=[{value:"openai",label:"OpenAI (Chat Completions)",defaultUrl:"https://api.openai.com/v1",providerKey:"openai"},{value:"openai-responses",label:"OpenAI (Responses API)",defaultUrl:"https://api.openai.com/v1",providerKey:"openai"},{value:"kimi",label:"Kimi (Moonshot)",defaultUrl:"https://api.moonshot.cn/v1",providerKey:"kimi"},{value:"anthropic",label:"Anthropic (Claude)",defaultUrl:"https://api.anthropic.com",providerKey:"anthropic"},{value:"anthropic-openai",label:"Anthropic (OpenAI \u683C\u5F0F)",defaultUrl:"https://api.anthropic.com/v1",providerKey:"anthropic"},{value:"gemini",label:"Gemini",defaultUrl:"https://generativelanguage.googleapis.com",providerKey:"gemini"},{value:"doubao",label:"\u8C46\u5305 (Doubao)",defaultUrl:"https://ark.cn-beijing.volces.com/api/v3",providerKey:"doubao"},{value:"deepseek",label:"DeepSeek",defaultUrl:"https://api.deepseek.com/v1",providerKey:"deepseek"}],$x=({onComplete:s,onCancel:e})=>{let{exit:t}=Fi(),{write:n}=Qt(),[r,o]=useState("name"),[i,a]=useState(0),l=useRef("name"),[c,u]=useState("My Provider"),[d,m]=useState(""),[g,h]=useState(""),[y,b]=useState(""),[C,T]=useState(""),[S,E]=useState(""),[v,I]=useState("My Provider"),[D,O]=useState(true);useEffect(()=>{l.current!==r&&(n("\x1B[2J\x1B[H"),l.current=r);},[r,n]),A.useEffect(()=>{let z=setInterval(()=>O(q=>!q),500);return ()=>clearInterval(z)},[]);let k=useMemo(()=>g?on.getModelsByProvider(g).filter(q=>!q.deprecated).sort((q,P)=>(P.scores?.coding??0)-(q.scores?.coding??0)):[],[g]);gt((z,q)=>{if(q.escape){e(),t();return}if(r==="protocol"||r==="model"){let P=r==="protocol"?ci:k;if(q.upArrow&&a($=>$>0?$-1:P.length-1),q.downArrow&&a($=>$<P.length-1?$+1:0),q.return)if(r==="protocol"){let $=ci[i];m($.value),h($.providerKey),I($.defaultUrl),o("baseUrl"),a(0);}else {let $=k[i];E($.id),o("confirm");}return}if(r==="confirm"){q.return&&(s({name:c,protocol:d,baseUrl:y,apiKey:C,model:S}),t());return}if(q.return){if(r==="name")u(v||"My Provider"),I(""),o("protocol"),a(0);else if(r==="baseUrl"){let P=ci.find($=>$.value===d);b(v||P?.defaultUrl||""),I(""),o("apiKey");}else r==="apiKey"&&v.trim().length>0&&(T(v),I(""),o("model"),a(0));return}if(q.backspace||q.delete){I(P=>P.slice(0,-1));return}z&&!q.ctrl&&!q.meta&&I(P=>P+z);});let M=(z,q,P=false)=>{let $=P?"*".repeat(v.length):v;return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},z),A.createElement(_,{marginTop:1},A.createElement(f,{color:"cyan"},"> "),A.createElement(f,null,$),A.createElement(f,{color:"gray"},D?"\u2588":" ")),q&&!v&&A.createElement(_,{marginLeft:2},A.createElement(f,{dimColor:true},"(",q,")")))},N=()=>A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},G().ui.selectProtocol),A.createElement(_,{flexDirection:"column",marginTop:1},ci.map((z,q)=>{let P=q===i;return A.createElement(_,{key:z.value},A.createElement(f,{color:P?"cyan":void 0,bold:P},P?"> ":" ",z.label))}))),x=()=>{let z=k.slice(0,10),q=k.length>10;return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true},G().ui.selectDefaultModel),A.createElement(f,{dimColor:true},lt(G().ui.modelsAvailable,{count:k.length})),A.createElement(_,{flexDirection:"column",marginTop:1},z.map((P,$)=>{let F=$===i,V=P.scores?.coding?`[code:${P.scores.coding}]`:"";return A.createElement(_,{key:P.id},A.createElement(f,{color:F?"cyan":void 0,bold:F},F?"> ":" ",P.id.padEnd(30)),A.createElement(f,{dimColor:true}," ",V))}),q&&i<10&&A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true}," ... ",lt(G().ui.moreModels,{count:k.length-10})))))},B=()=>{let z=on.getModel(S);return A.createElement(_,{flexDirection:"column"},A.createElement(f,{bold:true,color:"green"},G().ui.configConfirm),A.createElement(_,{flexDirection:"column",marginTop:1,marginLeft:2},A.createElement(f,null,G().ui.name,": ",A.createElement(f,{color:"cyan"},c)),A.createElement(f,null,G().ui.protocol,": ",A.createElement(f,{color:"cyan"},ci.find(q=>q.value===d)?.label)),A.createElement(f,null,"Base URL: ",A.createElement(f,{color:"cyan"},y)),A.createElement(f,null,"API Key: ",A.createElement(f,{color:"cyan"},"*".repeat(Math.min(C.length,20)),"...")),A.createElement(f,null,G().ui.model,": ",A.createElement(f,{color:"cyan"},S)),z&&A.createElement(f,{dimColor:true},"(in: ",(z.maxInputTokens/1e3).toFixed(0),"K, out: ",(z.maxOutputTokens/1e3).toFixed(0),"K)")),A.createElement(_,{marginTop:1},A.createElement(f,{color:"yellow"},G().ui.pressEnterToConfirm)))},H=["name","protocol","baseUrl","apiKey","model","confirm"],U=`[${H.indexOf(r)+1}/${H.length}]`;return A.createElement(_,{flexDirection:"column",paddingX:1,paddingY:1},A.createElement(f,{bold:true,color:"yellow"},G().ui.providerSetupWizard," ",U),A.createElement(f,{dimColor:true},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),A.createElement(_,{marginTop:1},r==="name"&&M("Provider Name","Default: My Provider"),r==="protocol"&&N(),r==="baseUrl"&&M("Base URL (leave empty for default)",ci.find(z=>z.value===d)?.defaultUrl||""),r==="apiKey"&&M("API Key","",true),r==="model"&&x(),r==="confirm"&&B()),A.createElement(_,{marginTop:1},A.createElement(f,{dimColor:true},r==="protocol"||r==="model"?"\u2191\u2193 \u9009\u62E9 ":"","Enter \u786E\u8BA4 ESC \u53D6\u6D88")))};cs();var Eu={warn:.7,soft:.8,hard:.95},Oh=2e4;function G$(s,e){return {warn:e?.warn??s?.warn??Eu.warn,soft:e?.soft??s?.soft??Eu.soft,hard:e?.hard??s?.hard??Eu.hard}}function W$(s,e){if(e!==void 0)return e;if(s)return Math.floor(s*9/10)}function z$(s,e){if(e!==void 0)return e;if(!s)return Oh;let t=Math.floor(s*.15);return Math.min(Oh,t||Oh)}function Ox(s,e){let t=on.getModel(s);process.env.CLI_DEBUG==="1"&&(console.error(`[PROFILE] resolveCompatProfile for model="${s}"`),console.error(`[PROFILE] registryModel found: ${!!t}`),console.error(`[PROFILE] registryModel.maxInputTokens: ${t?.maxInputTokens}`),console.error(`[PROFILE] overrides.contextWindow: ${e?.contextWindow}`));let n=128e3,r=16e3,o=e?.contextWindow??t?.maxInputTokens??n,i=e?.maxOutputTokens??t?.maxOutputTokens??r;process.env.CLI_DEBUG==="1"&&console.error(`[PROFILE] final contextWindow: ${o}`);let a=W$(o,e?.autoCompactTokenLimit),l=z$(o,e?.tailTokenBudget),c=G$(Eu,e?.warnThresholds);return {model:s,contextWindow:o,autoCompactLimit:a,maxOutputTokens:i,tailTokenBudget:l,warnThresholds:c,source:e?"override":t?"registry":"default"}}un();te();Cu();wt();var H$=".neox",q$="mcp.json";function Bh(s){return Ie__default.join(s,H$,q$)}function Ga(s){let e=Bh(s);try{let t=Ct__default.readFileSync(e,"utf-8");return JSON.parse(t)??{}}catch{return {}}}function Pu(s,e){let t=Bh(s),n=Ie__default.dirname(t);Ct__default.existsSync(n)||Ct__default.mkdirSync(n,{recursive:true}),Ct__default.writeFileSync(t,JSON.stringify(e,null,2),"utf-8");}function Ux(){return He().mcp??{}}function Js(s){let e=(Ux().servers??[]).map(r=>({...Bx(r),scope:"user"})),t=(Ga(s).servers??[]).map(r=>({...Bx(r),scope:"workspace"})),n=new Map;for(let r of e)n.set(r.id,r);for(let r of t)n.set(r.id,r);return Array.from(n.values())}function Bx(s){return {...s,transport:s.transport??"stdio",enabled:s.enabled??true,autoConnect:s.autoConnect??false}}function Mu(s,e,t,n){if(e==="workspace"){let l=Ga(s),c=l.servers??[],u=c.findIndex(d=>d.id===t.id);if(u>=0&&true)throw new Error(`MCP server "${t.id}" already exists in workspace config`);u>=0?c[u]=t:c.push(t),Pu(s,{...l,servers:c});return}let r=He(),o=r.mcp??{},i=o.servers??[],a=i.findIndex(l=>l.id===t.id);if(a>=0&&true)throw new Error(`MCP server "${t.id}" already exists in user config`);a>=0?i[a]=t:i.push(t),r.mcp={...o,servers:i},Me(r);}function Ru(s,e,t){if(e==="workspace"){let a=Ga(s),l=a.servers??[],c=l.filter(u=>u.id!==t);return c.length===l.length?false:(Pu(s,{...a,servers:c}),true)}let n=He(),r=n.mcp??{},o=r.servers??[],i=o.filter(a=>a.id!==t);return i.length===o.length?false:(n.mcp={...r,servers:i},Me(n),true)}function ar(s,e,t,n){if(e==="workspace"){let l=Ga(s),c=l.servers??[],u=c.findIndex(d=>d.id===t);return u<0?false:(c[u]={...c[u],...n},Pu(s,{...l,servers:c}),true)}let r=He(),o=r.mcp??{},i=o.servers??[],a=i.findIndex(l=>l.id===t);return a<0?false:(i[a]={...i[a],...n},r.mcp={...o,servers:i},Me(r),true)}Du();var lr=class{workDir;connections=new Map;connecting=new Map;toolsCache=null;_enabled=true;constructor(e){this.workDir=e.workDir;}isEnabled(){return this._enabled}setEnabled(e){this._enabled=e,e||(this.toolsCache=null);}setWorkDir(e){this.workDir!==e&&(this.workDir=e,this.toolsCache=null);}listServers(){return Js(this.workDir)}async refreshTools(){return await this.disconnectAll(),this.toolsCache=null,this.getTools({refresh:true})}async getTools(e){if(!this._enabled)return [];if(e?.refresh&&(this.toolsCache=null),!e?.refresh&&this.toolsCache)return this.toolsCache;let t=[],n=this.listServers();for(let r of n)if(r.enabled!==false)try{let o=await this.getToolDefsForServer(r);for(let i of o)t.push(this.createTool(r,i));}catch(o){p.warn("MCP",`Failed to load tools for ${r.id}: ${o?.message||o}`);}return this.toolsCache=t,t}async connect(e){let t=this.listServers().find(r=>r.id===e);if(!t)throw new Error(`MCP server not found: ${e}`);let n=await this.ensureConnected(t);return this.toolsCache=null,n}async disconnect(e){let t=this.connections.get(e);if(t){this.connections.delete(e),this.toolsCache=null;try{await t.client.close();}catch{}try{await t.transport.close?.();}catch{}}}async disconnectAll(){let e=Array.from(this.connections.keys());for(let t of e)await this.disconnect(t);}async testServer(e){let t=await this.connect(e),n=this.filterTools(t.tools,t.server);return {toolCount:n.length,tools:n.map(r=>r.name)}}async getToolDefinitions(e){let t=await this.connect(e);return this.filterTools(t.tools,t.server)}async ensureConnected(e){let t=this.connections.get(e.id);if(t)return t;let n=this.connecting.get(e.id);if(n)return n;let r=this.createConnection(e);this.connecting.set(e.id,r);try{let o=await r;return this.connections.set(e.id,o),o}finally{this.connecting.delete(e.id);}}async createConnection(e){let t=this.createTransport(e),n=new Client({name:"neox",version:ai},{capabilities:{}});await n.connect(t);let o=(await n.listTools())?.tools??[];return p.info("MCP",`Connected ${e.id} (${o.length} tools)`),{server:e,client:n,transport:t,tools:o}}createTransport(e){if(e.transport==="sse"){if(!e.url)throw new Error(`MCP server ${e.id} missing url for sse transport`);return new SSEClientTransport(new URL(e.url))}if(!e.command)throw new Error(`MCP server ${e.id} missing command for stdio transport`);let t=new StdioClientTransport({command:e.command,args:e.args??[],env:Q$(e.env),stderr:"pipe"});return this.attachStdioStderrLogger(t,e),t}createTool(e,t){return {name:Fh(e.id,t.name),description:`[MCP:${e.id}] ${t.description||t.name}`,parameters:Y$(t.inputSchema),function:async r=>{let i=await(await this.ensureConnected(e)).client.callTool({name:t.name,arguments:r??{}});return Z$(i)},permission:{category:"network",defaultPermission:"ask",permissionReason:`MCP tool from ${e.id}`}}}attachStdioStderrLogger(e,t){let n=e.stderr;if(!n)return;let r="";n.on("data",o=>{let i=typeof o=="string"?o:o.toString("utf8");r+=i;let a=r.split(/\r?\n/);r=a.pop()??"";for(let l of a){let c=l.trim();if(!c)continue;let u=c.length>2e3?`${c.slice(0,2e3)}...`:c;p.warn("MCP_STDERR",`[${t.id}] ${u}`);}}),n.on("error",o=>{p.warn("MCP_STDERR",`stderr stream error from ${t.id}: ${o.message}`);}),n.on("end",()=>{let o=r.trim();if(o){let i=o.length>2e3?`${o.slice(0,2e3)}...`:o;p.warn("MCP_STDERR",`[${t.id}] ${i}`);}r="";});}filterTools(e,t){let n=t.allowlist??[],r=t.denylist??[];return e.filter(o=>r.length>0&&jx(o.name,r)?false:n.length>0?jx(o.name,n):true)}async getToolDefsForServer(e){if(this.connections.has(e.id)){let r=this.connections.get(e.id);return this.filterTools(r.tools,e)}let n=e.toolCache??[];return this.filterTools(n,e)}};function Y$(s){if(!s||typeof s!="object")return {type:"object",properties:{}};let e=typeof s.properties=="object"&&s.properties!==null?s.properties:{},t=Array.isArray(s.required)?s.required:void 0,n=typeof s.additionalProperties=="boolean"?s.additionalProperties:void 0;return {type:"object",properties:e,required:t,additionalProperties:n}}function jx(s,e){return e.some(t=>X$(s,t))}function X$(s,e){if(e==="*")return true;if(!e.includes("*"))return s===e;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${t.replace(/\\\*/g,".*")}$`).test(s)}function Q$(s){let e={};for(let[t,n]of Object.entries(process.env))typeof n=="string"&&(e[t]=n);if(s)for(let[t,n]of Object.entries(s))e[t]=n;return e}function Z$(s){if(!s)return "";let e=!!s.isError,t=s.content,n=eO(t);if(e)throw new Error(n||"MCP tool error");return n||JSON.stringify(s)}function eO(s){return s?typeof s=="string"?s:Array.isArray(s)?s.map(e=>e?e.type==="text"&&typeof e.text=="string"?e.text:JSON.stringify(e):"").filter(Boolean).join(`
|
|
3816
3816
|
`):JSON.stringify(s):""}Ps();wt();var tO=`
|
|
3817
3817
|
\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588
|
|
3818
3818
|
\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588
|
|
@@ -3889,7 +3889,7 @@ Neox CLI - AI \u4EE3\u7801\u52A9\u624B (AI Code Assistant) v${s}
|
|
|
3889
3889
|
\u6587\u6863 (Docs): https://github.com/your-repo/Neox
|
|
3890
3890
|
\u95EE\u9898 (Issues): https://github.com/your-repo/Neox/issues
|
|
3891
3891
|
`);}function h0(s){console.log(`Neox CLI v${s}`);}Ca();iu();Dy();te();function Nd(){return Nr.randomBytes(16).toString("hex")}ig();Jo();lu();Jo();lu();var $d=class{constructor(e=et){this.registry=e;this.executor=new Gs(e);}executor;parse(e){let t=e.trim();if(!t.startsWith("/"))return {matched:false};let n=t.slice(1),r=n.indexOf(" "),o,i;r===-1?(o=n,i=""):(o=n.slice(0,r),i=n.slice(r+1).trim());let a=this.registry.find(o);return a?{matched:true,skill:a,args:i}:{matched:false,error:`Unknown skill: ${o}`}}async route(e,t){let n=this.parse(e);return n.matched?this.executor.execute(n.skill.id,n.args||"",t):n.error?{success:false,error:n.error}:null}isSkillCommand(e){let t=e.trim();if(!t.startsWith("/"))return false;let n=t.slice(1).split(" ")[0];return this.registry.has(n)}getSuggestions(e){if(!e.startsWith("/"))return [];let t=e.slice(1).toLowerCase(),n=this.registry.list({userInvocable:true});return t?n.filter(r=>r.id.toLowerCase().startsWith(t)||r.metadata.name.toLowerCase().startsWith(t)||r.metadata.neox?.aliases?.some(o=>o.toLowerCase().startsWith(t))):n}getExecutor(){return this.executor}},Ly=new $d;Gy();var pl=class extends Error{status;body;constructor(e,t){super(`HTTP ${e}: ${t}`),this.name="ApiError",this.status=e,this.body=t;}};async function nF(s,e,t,n){let r=new AbortController;return t&&t.addEventListener("abort",()=>r.abort()),(async()=>{for(;!r.signal.aborted;)try{let i=await fetch(s,{headers:{Accept:"text/event-stream",...n},signal:r.signal});if(!i.ok||!i.body)throw new Error(`SSE connect failed: ${i.status}`);let a=i.body.getReader(),l=new TextDecoder,c="";for(;;){let{done:u,value:d}=await a.read();if(u)break;c+=l.decode(d,{stream:!0});let m=c.split(`
|
|
3892
|
-
`);c=m.pop()??"";let g="",h="";for(let y of m)if(y.startsWith("event:"))g=y.slice(6).trim();else if(y.startsWith("data:"))h+=y.slice(5).trim();else if(y===""){if(g&&h&&g!=="heartbeat"&&g!=="connected")try{let b=JSON.parse(h);e(b);}catch{}g="",h="";}}}catch{if(r.signal.aborted)return;await new Promise(a=>setTimeout(a,2e3));}})(),{close:()=>r.abort()}}var oo=class{baseUrl;token;constructor(e){typeof e=="string"?this.baseUrl=e:(this.baseUrl=e?.baseUrl??"http://127.0.0.1:4399",this.token=e?.token);}get authHeaders(){return this.token?{Authorization:`Bearer ${this.token}`}:{}}async subscribe(e,t,n){let r=t?`${this.baseUrl}/events?sessionId=${encodeURIComponent(t)}`:`${this.baseUrl}/events`;return nF(r,e,n,this.authHeaders)}async chat(e,t,n){await this.post(`/session/${e}/chat`,{prompt:t,...n});}async abort(e){await this.post(`/session/${e}/abort`);}async replyPermission(e,t,n){await this.post(`/permission/${e}/reply`,{approved:t,message:n});}async getRunMode(){return (await this.get("/mode")).mode}async setRunMode(e){await this.post("/mode",{mode:e});}async injectMessage(e,t){await this.post(`/session/${e}/inject`,{message:t});}async getStatus(){return this.get("/status")}async isHealthy(){try{return (await fetch(`${this.baseUrl}/health`,{signal:AbortSignal.timeout(3e3)})).ok}catch{return false}}async setSandboxMode(e,t){await this.post(`/session/${e}/sandbox`,{enabled:t});}async setApprovalMode(e,t){await this.post(`/session/${e}/approval`,{mode:t});}async compactSession(e){await this.post(`/session/${e}/compact`);}async clearSession(e){await this.post(`/session/${e}/clear`);}async getContextHealth(e){return this.get(`/session/${e}/context-health`)}async getSessionInfo(e){return this.get(`/session/${e}/info`)}async setCompressionMode(e,t){await this.post(`/session/${e}/compression`,{mode:t});}async getMemoryStats(e){return this.get(`/session/${e}/memory`)}async clearMemory(e){await this.post(`/session/${e}/memory/clear`);}async addMemoryMessage(e,t,n){await this.post(`/session/${e}/memory/add`,{role:t,content:n});}async getToolList(){return this.get("/tools")}async reloadTools(e){await this.post("/tools/reload",{workDir:e});}async setWorkspace(e){await this.post("/workspace",{workDir:e});}async startCheckpointWatching(e){return (await this.post("/checkpoint/start-watching",{sessionId:e}))?.checkpointId??null}async stopCheckpointWatching(){await this.post("/checkpoint/stop-watching");}async createCheckpoint(e,t){return this.post("/checkpoint/create",{sessionId:e,label:t})}async rollbackToCheckpoint(e){return this.post("/checkpoint/rollback",{checkpointId:e})}async rollbackSingleFile(e){return this.post("/checkpoint/rollback-file",{filePath:e})}async reapplySingleFile(e){return this.post("/checkpoint/reapply-file",{filePath:e})}async getCheckpoints(e,t){let n=new URLSearchParams;e!=null&&n.set("limit",String(e)),t&&n.set("sessionId",t);let r=n.toString();return this.get(`/checkpoints${r?`?${r}`:""}`)}async getCheckpointStats(){return this.get("/checkpoint/stats")}async getCheckpointChanges(){return this.get("/checkpoint/changes")}async setCheckpointEnabled(e){await this.post("/checkpoint/enabled",{enabled:e});}async isCheckpointEnabled(){return (await this.get("/checkpoint/enabled")).enabled}async cleanupCheckpoints(){await this.post("/checkpoint/cleanup");}async setTTSEnabled(e){return this.post("/tts",{enabled:e})}async getTTSStatus(){return this.get("/tts")}async get(e){let t=await fetch(`${this.baseUrl}${e}`,{headers:{...this.authHeaders}});if(!t.ok)throw new pl(t.status,await t.text());return t.json()}async post(e,t){let n=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:{...this.authHeaders,...t?{"Content-Type":"application/json"}:{}},body:t?JSON.stringify(t):void 0});if(!n.ok)throw new pl(n.status,await n.text());let r=await n.text();return r?JSON.parse(r):void 0}async del(e){let t=await fetch(`${this.baseUrl}${e}`,{method:"DELETE",headers:{...this.authHeaders}});if(!t.ok)throw new pl(t.status,await t.text());let n=await t.text();return n?JSON.parse(n):void 0}async registerDevice(e,t){return this.post("/device/register",{device:e,capabilities:t})}async getDevice(e){return this.get(`/device/${e}`)}async getDevices(){return this.get("/devices")}async removeDevice(e){await this.del(`/device/${e}`);}async getHostStatus(){return this.get("/host/status")}async getHostAgents(){return this.get("/host/agents")}async getHostActivity(e){let t=e!=null?`?limit=${e}`:"";return this.get(`/host/activity${t}`)}async getHostSession(){return this.get("/host/session")}async getHostSystem(){return this.get("/host/system")}async hostInterrupt(e){return this.post("/host/interrupt",{reason:e})}async hostSendCommand(e,t){return this.post("/host/command",{text:e,priority:t})}async setAuth(e){return this.post("/admin/auth",e)}async getAuth(){return this.get("/admin/auth")}};te();var ml=class{client;listeners=new Set;subscription=null;currentMode="single";running=new Set;constructor(e,t){this.client=new oo({baseUrl:e,token:t});}async connect(e){this.subscription=await this.client.subscribe(t=>{for(let n of this.listeners)try{n(t.data,t.tracker??{contextUsed:0,startTime:Date.now(),provider:"",model:""});}catch(r){p.error("REMOTE_ADAPTER","Event callback error",{error:r});}(t.type==="run_result"||t.type==="error")&&this.running.delete(t.sessionId);},e),p.info("REMOTE_ADAPTER","SSE connected");}async chat(e){this.running.add(e.sessionId);let t=new Promise((n,r)=>{let o=(i,a)=>{i.type==="run_result"?(this.listeners.delete(o),n()):i.type==="error"&&(this.listeners.delete(o),r(new Error(i.message||"Runtime error")));};this.listeners.add(o);});await this.client.chat(e.sessionId,e.prompt,{mode:e.mode,attachments:e.attachments,providerId:e.providerId,modelName:e.modelName}),await t;}abort(e){this.client.abort(e).catch(t=>{p.error("REMOTE_ADAPTER","Abort failed",{error:t});}),this.running.delete(e);}injectMessage(e,t){this.client.injectMessage(e,t).catch(n=>{p.error("REMOTE_ADAPTER","Inject failed",{error:n});});}onEvent(e){this.listeners.add(e);}offEvent(e){this.listeners.delete(e);}setRunMode(e){this.currentMode=e,this.client.setRunMode(e).catch(t=>{p.error("REMOTE_ADAPTER","setRunMode failed",{error:t});});}getRunMode(){return this.currentMode}getStatus(){return {isRunning:this.running.size>0,mode:this.currentMode,activeSessions:[...this.running]}}dispose(){this.subscription?.close(),this.subscription=null,this.listeners.clear(),this.running.clear();}};Xt();xi();te();qr();wt();var p_=new Set([".wav",".mp3",".m4a",".aiff",".aif",".ogg"]),Hy="complete.wav",Zd="/System/Library/Sounds",wF="Glass.aiff";function hl(s){return {soundEnabled:s.completionAlerts?.soundEnabled??false,soundFile:s.completionAlerts?.soundFile??"",notifyEnabled:s.completionAlerts?.notifyEnabled??false}}function qy(){try{return Ct__default.existsSync(Pr)?Ct__default.readdirSync(Pr).filter(s=>p_.has(Ie__default.extname(s).toLowerCase())).sort((s,e)=>s.localeCompare(e)):[]}catch{return []}}function m_(){if(process.platform!=="darwin")return [];try{return Ct__default.existsSync(Zd)?Ct__default.readdirSync(Zd).filter(s=>p_.has(Ie__default.extname(s).toLowerCase())).sort((s,e)=>s.localeCompare(e)):[]}catch{return []}}function g_(){return Zd}function TF(s){if(s){let n=Ie__default.isAbsolute(s)?s:Ie__default.join(Pr,s);if(Ct__default.existsSync(n))return n}let e=Ie__default.join(Pr,Hy);if(Ct__default.existsSync(e))return e;let t=qy();if(t.length>0)return Ie__default.join(Pr,t[0]);if(process.platform==="darwin"){let n=Ie__default.join(Zd,wF);if(Ct__default.existsSync(n))return n}return null}function h_(s,e){let t="Neox CLI",n=G().notify.taskComplete,r=e?.summary?.durationMs,o=r?`${n} - ${(r/1e3).toFixed(1)}s`:n;if(s.notifyEnabled&&SF(t,o),s.soundEnabled){let i=TF(s.soundFile);xF(i);}}function
|
|
3892
|
+
`);c=m.pop()??"";let g="",h="";for(let y of m)if(y.startsWith("event:"))g=y.slice(6).trim();else if(y.startsWith("data:"))h+=y.slice(5).trim();else if(y===""){if(g&&h&&g!=="heartbeat"&&g!=="connected")try{let b=JSON.parse(h);e(b);}catch{}g="",h="";}}}catch{if(r.signal.aborted)return;await new Promise(a=>setTimeout(a,2e3));}})(),{close:()=>r.abort()}}var oo=class{baseUrl;token;constructor(e){typeof e=="string"?this.baseUrl=e:(this.baseUrl=e?.baseUrl??"http://127.0.0.1:4399",this.token=e?.token);}get authHeaders(){return this.token?{Authorization:`Bearer ${this.token}`}:{}}async subscribe(e,t,n){let r=t?`${this.baseUrl}/events?sessionId=${encodeURIComponent(t)}`:`${this.baseUrl}/events`;return nF(r,e,n,this.authHeaders)}async chat(e,t,n){await this.post(`/session/${e}/chat`,{prompt:t,...n});}async abort(e){await this.post(`/session/${e}/abort`);}async replyPermission(e,t,n){await this.post(`/permission/${e}/reply`,{approved:t,message:n});}async getRunMode(){return (await this.get("/mode")).mode}async setRunMode(e){await this.post("/mode",{mode:e});}async injectMessage(e,t){await this.post(`/session/${e}/inject`,{message:t});}async getStatus(){return this.get("/status")}async isHealthy(){try{return (await fetch(`${this.baseUrl}/health`,{signal:AbortSignal.timeout(3e3)})).ok}catch{return false}}async setSandboxMode(e,t){await this.post(`/session/${e}/sandbox`,{enabled:t});}async setApprovalMode(e,t){await this.post(`/session/${e}/approval`,{mode:t});}async compactSession(e){await this.post(`/session/${e}/compact`);}async clearSession(e){await this.post(`/session/${e}/clear`);}async getContextHealth(e){return this.get(`/session/${e}/context-health`)}async getSessionInfo(e){return this.get(`/session/${e}/info`)}async setCompressionMode(e,t){await this.post(`/session/${e}/compression`,{mode:t});}async getMemoryStats(e){return this.get(`/session/${e}/memory`)}async clearMemory(e){await this.post(`/session/${e}/memory/clear`);}async addMemoryMessage(e,t,n){await this.post(`/session/${e}/memory/add`,{role:t,content:n});}async getToolList(){return this.get("/tools")}async reloadTools(e){await this.post("/tools/reload",{workDir:e});}async setWorkspace(e){await this.post("/workspace",{workDir:e});}async startCheckpointWatching(e){return (await this.post("/checkpoint/start-watching",{sessionId:e}))?.checkpointId??null}async stopCheckpointWatching(){await this.post("/checkpoint/stop-watching");}async createCheckpoint(e,t){return this.post("/checkpoint/create",{sessionId:e,label:t})}async rollbackToCheckpoint(e){return this.post("/checkpoint/rollback",{checkpointId:e})}async rollbackSingleFile(e){return this.post("/checkpoint/rollback-file",{filePath:e})}async reapplySingleFile(e){return this.post("/checkpoint/reapply-file",{filePath:e})}async getCheckpoints(e,t){let n=new URLSearchParams;e!=null&&n.set("limit",String(e)),t&&n.set("sessionId",t);let r=n.toString();return this.get(`/checkpoints${r?`?${r}`:""}`)}async getCheckpointStats(){return this.get("/checkpoint/stats")}async getCheckpointChanges(){return this.get("/checkpoint/changes")}async setCheckpointEnabled(e){await this.post("/checkpoint/enabled",{enabled:e});}async isCheckpointEnabled(){return (await this.get("/checkpoint/enabled")).enabled}async cleanupCheckpoints(){await this.post("/checkpoint/cleanup");}async setTTSEnabled(e){return this.post("/tts",{enabled:e})}async getTTSStatus(){return this.get("/tts")}async get(e){let t=await fetch(`${this.baseUrl}${e}`,{headers:{...this.authHeaders}});if(!t.ok)throw new pl(t.status,await t.text());return t.json()}async post(e,t){let n=await fetch(`${this.baseUrl}${e}`,{method:"POST",headers:{...this.authHeaders,...t?{"Content-Type":"application/json"}:{}},body:t?JSON.stringify(t):void 0});if(!n.ok)throw new pl(n.status,await n.text());let r=await n.text();return r?JSON.parse(r):void 0}async del(e){let t=await fetch(`${this.baseUrl}${e}`,{method:"DELETE",headers:{...this.authHeaders}});if(!t.ok)throw new pl(t.status,await t.text());let n=await t.text();return n?JSON.parse(n):void 0}async registerDevice(e,t){return this.post("/device/register",{device:e,capabilities:t})}async getDevice(e){return this.get(`/device/${e}`)}async getDevices(){return this.get("/devices")}async removeDevice(e){await this.del(`/device/${e}`);}async getHostStatus(){return this.get("/host/status")}async getHostAgents(){return this.get("/host/agents")}async getHostActivity(e){let t=e!=null?`?limit=${e}`:"";return this.get(`/host/activity${t}`)}async getHostSession(){return this.get("/host/session")}async getHostSystem(){return this.get("/host/system")}async hostInterrupt(e){return this.post("/host/interrupt",{reason:e})}async hostSendCommand(e,t){return this.post("/host/command",{text:e,priority:t})}async setAuth(e){return this.post("/admin/auth",e)}async getAuth(){return this.get("/admin/auth")}};te();var ml=class{client;listeners=new Set;subscription=null;currentMode="single";running=new Set;constructor(e,t){this.client=new oo({baseUrl:e,token:t});}async connect(e){this.subscription=await this.client.subscribe(t=>{for(let n of this.listeners)try{n(t.data,t.tracker??{contextUsed:0,startTime:Date.now(),provider:"",model:""});}catch(r){p.error("REMOTE_ADAPTER","Event callback error",{error:r});}(t.type==="run_result"||t.type==="error")&&this.running.delete(t.sessionId);},e),p.info("REMOTE_ADAPTER","SSE connected");}async chat(e){this.running.add(e.sessionId);let t=new Promise((n,r)=>{let o=(i,a)=>{i.type==="run_result"?(this.listeners.delete(o),n()):i.type==="error"&&(this.listeners.delete(o),r(new Error(i.message||"Runtime error")));};this.listeners.add(o);});await this.client.chat(e.sessionId,e.prompt,{mode:e.mode,attachments:e.attachments,providerId:e.providerId,modelName:e.modelName}),await t;}abort(e){this.client.abort(e).catch(t=>{p.error("REMOTE_ADAPTER","Abort failed",{error:t});}),this.running.delete(e);}injectMessage(e,t){this.client.injectMessage(e,t).catch(n=>{p.error("REMOTE_ADAPTER","Inject failed",{error:n});});}onEvent(e){this.listeners.add(e);}offEvent(e){this.listeners.delete(e);}setRunMode(e){this.currentMode=e,this.client.setRunMode(e).catch(t=>{p.error("REMOTE_ADAPTER","setRunMode failed",{error:t});});}getRunMode(){return this.currentMode}getStatus(){return {isRunning:this.running.size>0,mode:this.currentMode,activeSessions:[...this.running]}}dispose(){this.subscription?.close(),this.subscription=null,this.listeners.clear(),this.running.clear();}};Xt();xi();te();qr();wt();var p_=new Set([".wav",".mp3",".m4a",".aiff",".aif",".ogg"]),Hy="complete.wav",Zd="/System/Library/Sounds",wF="Glass.aiff";function hl(s){return {soundEnabled:s.completionAlerts?.soundEnabled??false,soundFile:s.completionAlerts?.soundFile??"",notifyEnabled:s.completionAlerts?.notifyEnabled??false}}function qy(){try{return Ct__default.existsSync(Pr)?Ct__default.readdirSync(Pr).filter(s=>p_.has(Ie__default.extname(s).toLowerCase())).sort((s,e)=>s.localeCompare(e)):[]}catch{return []}}function m_(){if(process.platform!=="darwin")return [];try{return Ct__default.existsSync(Zd)?Ct__default.readdirSync(Zd).filter(s=>p_.has(Ie__default.extname(s).toLowerCase())).sort((s,e)=>s.localeCompare(e)):[]}catch{return []}}function g_(){return Zd}function TF(s){if(s){let n=Ie__default.isAbsolute(s)?s:Ie__default.join(Pr,s);if(Ct__default.existsSync(n))return n}let e=Ie__default.join(Pr,Hy);if(Ct__default.existsSync(e))return e;let t=qy();if(t.length>0)return Ie__default.join(Pr,t[0]);if(process.platform==="darwin"){let n=Ie__default.join(Zd,wF);if(Ct__default.existsSync(n))return n}return null}function h_(s,e){let t="Neox CLI",n=G().notify.taskComplete,r=e?.summary?.durationMs,o=r?`${n} - ${(r/1e3).toFixed(1)}s`:n;if(s.notifyEnabled&&SF(t,o),s.soundEnabled){let i=TF(s.soundFile);xF(i);}}function ys(s,e,t){try{let n=spawn(s,e,{stdio:"ignore"});n.on("error",r=>{process.env.CLI_DEBUG&&p.debug("ALERT",`Failed to spawn ${s}`,{error:r}),t&&t();}),n.unref();}catch(n){process.env.CLI_DEBUG&&p.debug("ALERT",`Failed to execute ${s}`,{error:n}),t&&t();}}function fs(){try{process.stdout.write("\x07");}catch{}}function d_(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function ep(s){return s.replace(/'/g,"''")}function xF(s){if(!s||!Ct__default.existsSync(s)){fs();return}if(process.platform==="darwin"){ys("afplay",[s],fs);return}if(ht()){let e=Ie__default.extname(s).toLowerCase();if(e!==".wav"&&e!==".wave"){fs();return}let t=Ss(s),r=`(New-Object Media.SoundPlayer '${ep(t)}').PlaySync()`;ys("powershell.exe",["-NoProfile","-Command",r],fs);return}if(process.platform==="linux"){ys("paplay",[s],()=>{ys("aplay",[s],fs);});return}if(process.platform==="win32"){let e=Ie__default.extname(s).toLowerCase();if(e!==".wav"&&e!==".wave"){fs();return}let n=`(New-Object Media.SoundPlayer '${ep(s)}').PlaySync()`;ys("powershell",["-NoProfile","-Command",n],fs);return}fs();}function SF(s,e){if(process.platform==="darwin"){let t=`display notification "${d_(e)}" with title "${d_(s)}"`;ys("osascript",["-e",t]);return}if(ht()){let t=ep(s),n=ep(e),r=`
|
|
3893
3893
|
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
|
|
3894
3894
|
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
|
|
3895
3895
|
$template = '<toast><visual><binding template="ToastText02"><text id="1">${t}</text><text id="2">${n}</text></binding></visual></toast>'
|
|
@@ -3897,7 +3897,7 @@ $xml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
|
|
3897
3897
|
$xml.LoadXml($template)
|
|
3898
3898
|
$toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
|
|
3899
3899
|
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('Neox CLI').Show($toast)
|
|
3900
|
-
`;bs("powershell.exe",["-NoProfile","-Command",r]);return}if(process.platform==="linux"){bs("notify-send",[s,e]);return}process.platform==="win32"&&process.env.CLI_DEBUG&&p.debug("ALERT","Notification not supported on Windows without extra tools");}zy();function f_(s){return s.map(e=>({id:e.id??e.data?.id,name:e.name??e.data?.name,timestamp:e.timestamp??e.data?.timestamp??Date.now()})).filter(e=>typeof e.id=="string")}Xt();Tn();var kF=[{id:"provider",title:"Provider",description:"\u9009\u62E9/\u5207\u6362 Provider"},{id:"model",title:"Model",description:"\u9009\u62E9 Provider \u2192 Model"},{id:"session",title:"Session",description:"\u9009\u62E9/\u5207\u6362\u4F1A\u8BDD"},{id:"workspace",title:"Workspace",description:"\u5DE5\u4F5C\u533A\u7BA1\u7406 (\u5207\u6362/\u6DFB\u52A0/\u5217\u8868)"},{id:"mode",title:"Mode",description:"\u5207\u6362\u4EA4\u4E92\u98CE\u683C (Agent/Ask)"},{id:"run",title:"Run",description:"\u5207\u6362\u8FD0\u884C\u6A21\u5F0F (single/assistant/cooperate/network)"},{id:"runconfig",title:"RunConfig",description:"\u8FD0\u884C\u914D\u7F6E\u4E2D\u5FC3 (\u6A21\u578B\u6C60/\u5E76\u53D1/CCB)"},{id:"sandbox",title:"Sandbox",description:"\u5207\u6362\u6C99\u7BB1\u6A21\u5F0F"},{id:"thinking",title:"Thinking",description:"\u5207\u6362\u6DF1\u5EA6\u601D\u8003"},{id:"approval",title:"Approval",description:"\u5207\u6362\u5BA1\u6279\u6A21\u5F0F"},{id:"notify",title:"Notify",description:"\u5B8C\u6210\u63D0\u793A (\u58F0\u97F3/\u901A\u77E5)"},{id:"context",title:"Context",description:"\u4E0A\u4E0B\u6587\u7BA1\u7406 (tokens/\u538B\u7F29/\u7F13\u5B58)"},{id:"memory",title:"Memory",description:"\u8BB0\u5FC6\u7EDF\u8BA1 (\u77ED/\u4E2D/\u957F/\u6C38\u4E45)"},{id:"remote",title:"Remote",description:"\u8FDC\u7A0B\u8BBF\u95EE (LAN/VPS)"},{id:"statistic",title:"Statistic",description:"Token \u4F7F\u7528\u7EDF\u8BA1 (\u603B\u89C8/Provider/\u7F13\u5B58)"},{id:"index",title:"Index",description:"\u4EE3\u7801\u7D22\u5F15\u7BA1\u7406 (\u6784\u5EFA/\u67E5\u770B/\u6E05\u9664)"},{id:"help-text",title:"View Help Text",description:"\u67E5\u770B\u5E2E\u52A9\u6587\u6863"},{id:"exit",title:"\u2190 Exit",description:"\u9000\u51FA\u5E2E\u52A9\u83DC\u5355"}];function fl(s,e){Q(s);}function _F(){return ["",w.highlight(" \u57FA\u672C\u547D\u4EE4 (Commands):"),w.dim(" \u6240\u6709\u547D\u4EE4\u652F\u6301\u83DC\u5355\u9009\u62E9\uFF0C\u76F4\u63A5\u8F93\u5165\u547D\u4EE4\u5373\u53EF"),"",w.primary(" /help ")+w.dim("\u5E2E\u52A9\u83DC\u5355"),w.primary(" /exit ")+w.dim("\u9000\u51FA CLI"),w.primary(" /update ")+w.dim("\u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C"),w.primary(" /provider ")+w.dim("\u9009\u62E9/\u5207\u6362 Provider"),w.primary(" /model ")+w.dim("\u9009\u62E9 Provider \u2192 Model"),w.primary(" /mode ")+w.dim("\u5207\u6362 Agent/Ask \u6A21\u5F0F"),w.primary(" /run ")+w.dim("\u5207\u6362\u8FD0\u884C\u6A21\u5F0F (single/assistant/cooperate/network)"),w.primary(" /runconfig ")+w.dim("\u8FD0\u884C\u914D\u7F6E\u4E2D\u5FC3 (\u6A21\u578B\u6C60/\u5E76\u53D1/CCB)"),w.primary(" /approval ")+w.dim("\u5207\u6362\u5BA1\u6279\u6A21\u5F0F Auto/Manual"),w.primary(" /notify ")+w.dim("\u5B8C\u6210\u63D0\u793A\u8BBE\u7F6E (\u58F0\u97F3/\u901A\u77E5)"),w.primary(" /sandbox ")+w.dim("\u5207\u6362\u6C99\u7BB1\u6A21\u5F0F On/Off"),w.primary(" /thinking ")+w.dim("\u5207\u6362\u6DF1\u5EA6\u601D\u8003 On/Off"),w.primary(" /websearch ")+w.dim("WebSearch \u5F00\u5173\u4E0E URL/Key \u914D\u7F6E"),w.primary(" /index ")+w.dim("\u4EE3\u7801\u7D22\u5F15\u7BA1\u7406 (\u6784\u5EFA/\u67E5\u770B/\u6E05\u9664)"),w.primary(" /mcp ")+w.dim("MCP \u670D\u52A1\u5668\u7BA1\u7406 (list/add/remove/connect)"),w.primary(" /context ")+w.dim("\u4E0A\u4E0B\u6587\u7BA1\u7406\u83DC\u5355 (tokens/\u538B\u7F29/\u7F13\u5B58)"),w.primary(" /memory ")+w.dim("\u8BB0\u5FC6\u7EDF\u8BA1 (\u77ED/\u4E2D/\u957F/\u6C38\u4E45)"),w.primary(" /remote ")+w.dim("\u8FDC\u7A0B\u8BBF\u95EE\u914D\u7F6E (LAN/VPS)"),w.primary(" /statistic ")+w.dim("Token \u4F7F\u7528\u7EDF\u8BA1 (\u603B\u89C8/Provider/\u7F13\u5B58)"),w.primary(" /workspace ")+w.dim("\u5DE5\u4F5C\u533A\u7BA1\u7406 (list/add/switch)"),"",w.dim(" \u76F4\u63A5\u547D\u4EE4 (\u4E5F\u53EF\u76F4\u63A5\u6307\u5B9A\u53C2\u6570):"),w.dim(" /provider <id> \u5207\u6362\u5230\u6307\u5B9A Provider"),w.dim(" /model <name> \u5207\u6362\u5230\u6307\u5B9A Model"),w.dim(" /mode agent|ask \u76F4\u63A5\u8BBE\u7F6E\u6A21\u5F0F"),w.dim(" /run <mode> \u76F4\u63A5\u8BBE\u7F6E\u8FD0\u884C\u6A21\u5F0F"),w.dim(" /sandbox on|off \u76F4\u63A5\u8BBE\u7F6E\u6C99\u7BB1"),w.dim(" /thinking on|off \u76F4\u63A5\u8BBE\u7F6E\u601D\u8003"),w.dim(" /websearch on|off \u5F00\u5173 WebSearch"),w.dim(" /websearch set-url <url> \u8BBE\u7F6E WebSearch URL"),w.dim(" /websearch set-key <key> \u8BBE\u7F6E API Key"),"",w.primary(" /clear ")+w.dim("\u6E05\u7A7A\u5BF9\u8BDD\u5386\u53F2"),w.primary(" /stats ")+w.dim("\u663E\u793A\u4F1A\u8BDD\u7EDF\u8BA1\u4FE1\u606F"),w.primary(" /config-clear")+w.dim("\u6E05\u9664\u914D\u7F6E\u6587\u4EF6"),w.primary(" /attach <path>")+w.dim("\u6DFB\u52A0\u56FE\u7247\u9644\u4EF6"),w.primary(" /attachments ")+w.dim("\u7BA1\u7406\u9644\u4EF6 (list/clear/remove)")]}function IF(s=fl){for(let e of _F())s(e);}function EF(){return ["",w.highlight(" \u4F1A\u8BDD\u547D\u4EE4 (Session Commands):"),"",w.primary(" /sessions ")+w.dim("\u9009\u62E9/\u5207\u6362\u4F1A\u8BDD"),w.primary(" /session <id> ")+w.dim("\u76F4\u63A5\u5207\u6362\u5230\u6307\u5B9A\u4F1A\u8BDD"),w.primary(" /session-new ")+w.dim("\u521B\u5EFA\u65B0\u4F1A\u8BDD"),w.primary(" /session-info ")+w.dim("\u663E\u793A\u4F1A\u8BDD\u4FE1\u606F"),w.primary(" /undo [n] ")+w.dim("\u64A4\u9500\u6700\u8FD1 n \u8F6E\u5BF9\u8BDD"),w.primary(" /checkpoint ")+w.dim("\u521B\u5EFA\u68C0\u67E5\u70B9"),w.primary(" /checkpoints ")+w.dim("\u5217\u51FA\u68C0\u67E5\u70B9"),w.primary(" /rollback <id> ")+w.dim("\u56DE\u6EDA\u5230\u68C0\u67E5\u70B9"),w.primary(" /session-clear ")+w.dim("\u6E05\u7A7A\u4F1A\u8BDD"),w.primary(" /session-export ")+w.dim("\u5BFC\u51FA\u4F1A\u8BDD"),w.primary(" /compact ")+w.dim("\u624B\u52A8\u538B\u7F29\u4E0A\u4E0B\u6587")]}function AF(s=fl){for(let e of EF())s(e);}function PF(){return ["",w.highlight(" \u8FDB\u7A0B\u7BA1\u7406 (Process Management):"),"",w.primary(" /processes ")+w.dim("\u67E5\u770B\u8FDB\u7A0B\u5217\u8868"),w.primary(" /ps ")+w.dim("/processes \u7684\u7B80\u5199"),w.primary(" /kill <pid> ")+w.dim("\u7EC8\u6B62\u6307\u5B9A\u8FDB\u7A0B"),w.primary(" /kill all ")+w.dim("\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B")]}function MF(s=fl){for(let e of PF())s(e);}function RF(){return ["",w.highlight(" \u5FEB\u6377\u952E (Keyboard Shortcuts):"),"",w.dim(" \u83DC\u5355\u9009\u62E9\u65F6:"),w.primary(" \u2191/\u2193 ")+w.dim("\u4E0A\u4E0B\u79FB\u52A8\u9009\u62E9"),w.primary(" Enter ")+w.dim("\u786E\u8BA4\u9009\u62E9"),w.primary(" ESC ")+w.dim("\u53D6\u6D88\u9009\u62E9"),"",w.dim(" \u8FD0\u884C\u65F6:"),w.primary(" ESC ")+w.dim("\u4E2D\u65AD\u5F53\u524D\u4EFB\u52A1\uFF08\u6309\u4E24\u6B21\uFF09"),w.primary(" Tab ")+w.dim("\u5207\u6362 Thinking \u6A21\u5F0F"),w.error(" Ctrl+C ")+w.dim("\u9000\u51FA\u7A0B\u5E8F"),""]}function DF(s=fl){for(let e of RF())s(e);}function tp(s=fl){IF(s),AF(s),MF(s),DF(s);}function y_(){return kF.map(s=>({title:s.title,value:s.id,description:s.description}))}xi();Tn();function Wt(s,e){s.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}async function np(s){let{runtimeHost:e,colors:t,promptSelect:n,sessionEnabled:r,activateSession:o,logInfo:i}=s;if(!r){i("Session disabled","Session persistence is not enabled.");return}let a=await e.listSessions();if(a.length===0){i("No sessions","No sessions found. Start chatting to create one.");return}let l=e.getCurrentSessionId();try{let c=a.slice(0,15).map(h=>{let y=l&&h.sessionId===l,b=Xd(h.updatedAt);return {label:y?`\u25CF ${h.sessionId}`:h.sessionId,value:h.sessionId,description:`${h.itemCount} items, ${b}${y?" (current)":""}`}}),u=[{label:"\u2B05\uFE0F Back",value:"__back__",description:"Return to previous menu"},{label:"\u2500".repeat(40),value:"__separator__",description:""},...c],d=await n("Select session",u,l||void 0);if(d==="__back__")return;if(d==="__separator__")return np(s);if(d===l){i("Session","Already on this session.");return}let m=await e.switchSession(d),g=await o(m,{loadHistory:!0});i("Session switched",`${d}${g>0?` (${g} messages loaded)`:""}`);}catch(c){c.message!=="cancelled"&&i("Session switch failed",c.message);}}async function v_(s,e){let{runtimeHost:t,sessionEnabled:n,activateSession:r,colors:o}=s;if(!n){Wt(s,[o.error(" [x] Session persistence is disabled")]);return}try{let i=await t.switchSession(e),a=await r(i,{loadHistory:!0}),l=["",o.success(` \u2713 Switched to session: ${e}`)];a>0&&l.push(o.dim(` Loaded ${a} messages`)),l.push(""),Wt(s,l);}catch(i){Wt(s,[o.error(` [x] ${i.message}`)]);}}async function C_(s,e){let{runtimeHost:t,sessionEnabled:n,activateSession:r,colors:o}=s;if(!n){Wt(s,[o.error(" [x] Session persistence is disabled")]);return}try{let i=await t.createSession(e);await r(i,{loadHistory:!1}),await t.createCheckpoint("session_start");let a=["",o.success(` \u2713 Created new session: ${i.sessionId}`),""];Wt(s,a);}catch(i){Wt(s,[o.error(` [x] Failed to create session: ${i.message}`)]);}}async function w_(s){let{runtimeHost:e,colors:t}=s;s.clearOutputLines&&s.clearOutputLines();try{let n=await e.getSessionInfo(),r=[];r.push(""),r.push(t.highlight(" Session Info:")),r.push(""),r.push(t.dim(" Session ID: ")+t.info(n.sessionId)),r.push(t.dim(" Turns: ")+t.info(n.turnCount.toString())),r.push(t.dim(" Messages: ")+t.info(n.messageCount.toString())),r.push(t.dim(" Checkpoints: ")+t.info(n.checkpointCount.toString())),n.meta&&(r.push(t.dim(" Model: ")+t.info(n.meta.model||"N/A")),n.meta.createdAt&&r.push(t.dim(" Created: ")+t.info(new Date(n.meta.createdAt).toLocaleString()))),r.push(""),Wt(s,r);}catch{Wt(s,[t.dim(" No active session")]);}}async function T_(s,e){let{runtimeHost:t,colors:n}=s;try{let r=parseInt(e||"1")||1,o=await t.undoTurns(r);if(o.success){let i=["",n.success(` \u2713 Undone ${o.undoneCount} turn(s)`)];if(o.messages.length>0){i.push(n.dim(" Removed messages:"));for(let a of o.messages.slice(0,4)){let l=(a.content||"").slice(0,50);i.push(n.dim(` [${a.role}] ${l}${l.length>=50?"...":""}`));}o.messages.length>4&&i.push(n.dim(` ... and ${o.messages.length-4} more`));}i.push(""),Wt(s,i);}else Wt(s,[n.warning(" \u26A0 Nothing to undo")]);}catch(r){Wt(s,[n.error(` [x] Undo failed: ${r.message}`)]);}}async function x_(s,e){let{runtimeHost:t,logInfo:n}=s;try{let r=await t.createCheckpoint(e||void 0);n("Checkpoint created",`${r}${e?` (${e})`:""}`);}catch(r){n("Checkpoint failed",r.message);}}async function S_(s){return rp(s)}async function rp(s,e){let{runtimeHost:t,normalizeCheckpoints:n,promptSelect:r,logInfo:o}=s;try{if(e){let g=await t.rollbackTo(e);o("Rollback complete",`Rolled back to ${e}, removed ${g.removedCount} items`);return}let i=n(await t.listCheckpoints());if(i.length===0){o("No checkpoints","No checkpoints available. Checkpoints are auto-created before each turn.");return}let a=i.find(g=>g.name==="session_start"),l=i.filter(g=>g.name?.startsWith("turn_")),c=i.filter(g=>g.name!=="session_start"&&!g.name?.startsWith("turn_")),u=[];if(u.push({label:"\u2B05\uFE0F Back",value:"__back__",description:"Cancel and return"}),u.push({label:"\u270F\uFE0F Enter ID manually",value:"__manual__",description:"Type a checkpoint ID"}),u.push({label:"\u2500".repeat(40),value:"__separator__",description:""}),a){let g=new Date(a.timestamp).toLocaleString();u.push({label:`\u{1F3C1} ${a.id}`,value:a.id,description:`Session Start - ${g}`});}l.slice().reverse().forEach(g=>{let h=new Date(g.timestamp).toLocaleString(),y=g.name?.match(/turn_(\d+)/),b=y?`Turn ${y[1]}`:g.name;u.push({label:`\u21A9\uFE0F ${g.id}`,value:g.id,description:`${b} - ${h}`});}),c.forEach(g=>{let h=new Date(g.timestamp).toLocaleString();u.push({label:`\u{1F4CC} ${g.id}`,value:g.id,description:`${g.name||"unnamed"} - ${h}`});});let d=await r("Select checkpoint to rollback",u);if(d==="__back__")return;if(d==="__separator__")return rp(s);if(d==="__manual__"){let{promptText:g}=s;if(!g){o("Error","Manual input not supported");return}let h=await g("Enter checkpoint ID:",{allowEmpty:!1});if(!h)return;let y=await t.rollbackTo(h);o("Rollback complete",`Rolled back to ${h}, removed ${y.removedCount} items`);return}let m=await t.rollbackTo(d);o("Rollback complete",`Rolled back to ${d}, removed ${m.removedCount} items`);}catch(i){i.message!=="cancelled"&&o("Rollback failed",i.message);}}async function k_(s){let{runtimeHost:e,colors:t}=s;try{await e.clearSession(),Wt(s,["",t.success(" \u2713 Session cleared"),""]);}catch(n){Wt(s,[t.error(` [x] Failed to clear session: ${n.message}`)]);}}async function __(s,e){let{currentSession:t,sessionManager:n,colors:r}=s;if(!t){Wt(s,[r.error(" [x] No active session")]);return}try{let o=t.sessionId,i=await n.exportSession(o);e?(await Ct.promises.writeFile(e,i,"utf-8"),Wt(s,["",r.success(` \u2713 Session exported to: ${e}`),""])):Wt(s,["",r.highlight(" Session Export (JSON):"),"",i,""]);}catch(o){Wt(s,[r.error(` [x] Export failed: ${o.message}`)]);}}async function I_(s,e){let{sessionEnabled:t,compatProfile:n,uiController:r,runtimeHost:o,logInfo:i,colors:a}=s,{autoCompactionInProgress:l}=s;if(!t)return i("\u4F1A\u8BDD\u5DF2\u7981\u7528","\u538B\u7F29\u4EC5\u9002\u7528\u4E8E\u542F\u7528\u4E86\u6301\u4E45\u5316\u7684\u4F1A\u8BDD\u3002"),l;if(!n)return i("\u7F3A\u5C11\u6A21\u578B\u4E0A\u4E0B\u6587\u753B\u50CF","\u8BF7\u68C0\u67E5 Provider/Model \u914D\u7F6E\u3002"),l;if(l)return i("\u538B\u7F29\u8FDB\u884C\u4E2D","\u8BF7\u7A0D\u5019\u7247\u523B\u3002"),l;l=true;try{r&&r.updateStatus("[~] Manual compaction...","compacting"),await(s.withRuntimeEvents??(async u=>u()))(()=>o.compactSession()),r&&r.updateStatus("Compaction complete!","complete");}catch(c){i("\u624B\u52A8\u538B\u7F29\u5931\u8D25",c?.message||String(c)),r&&(r.updateStatus("Compaction failed","error"),r.addInfo("\u274C \u538B\u7F29\u5931\u8D25",c?.message||String(c)));}finally{l=false;}return l}ru();xi();Xt();Tn();function zt(s,e){s?.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}async function E_(s,e){s?.clearOutputLines&&s.clearOutputLines(),Bt.refreshStatus();let t=Bt.getBackgroundRunning(),n=[];if(n.push(""),n.push(w.highlight(" \u540E\u53F0\u8FDB\u7A0B (Background Processes)")),n.push(""),t.length===0){n.push(w.dim(" \u6CA1\u6709\u8FD0\u884C\u4E2D\u7684\u540E\u53F0\u8FDB\u7A0B")),n.push(""),n.push(w.dim(" \u63D0\u793A: \u4F7F\u7528 execute_shell \u7684 background=true \u53C2\u6570\u542F\u52A8\u540E\u53F0\u8FDB\u7A0B")),n.push(""),zt(s,n);return}n.push(w.success(` \u{1F7E2} ${t.length} \u4E2A\u540E\u53F0\u8FDB\u7A0B\u6B63\u5728\u8FD0\u884C:`)),n.push(""),t.forEach(r=>{let o=Date.now()-r.startTime.getTime(),i=J0(o),a=r.command.length>50?r.command.substring(0,47)+"...":r.command;n.push(w.dim(" ")+w.warning(`PID ${r.pid}`)),n.push(w.dim(" \u547D\u4EE4: ")+w.info(a)),n.push(w.dim(" \u8FD0\u884C: ")+w.dim(i)),n.push(w.dim(" \u76EE\u5F55: ")+w.dim(r.cwd)),n.push("");}),n.push(w.dim(" \u547D\u4EE4:")),n.push(w.dim(" /kill <pid> ")+w.dim("\u7EC8\u6B62\u6307\u5B9A\u8FDB\u7A0B")),n.push(w.dim(" /kill all ")+w.dim("\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B")),n.push(""),zt(s,n);}async function A_(s,e){if(s?.clearOutputLines&&s.clearOutputLines(),!e){let i=["",w.error(" \u7528\u6CD5: /kill <pid> \u6216 /kill all"),w.dim(" \u4F7F\u7528 /processes \u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u8FDB\u7A0B"),""];zt(s,i);return}if(Bt.refreshStatus(),e.toLowerCase()==="all"){let i=Bt.getBackgroundRunning();if(i.length===0){zt(s,["",w.info(" \u6CA1\u6709\u8FD0\u884C\u4E2D\u7684\u540E\u53F0\u8FDB\u7A0B"),""]);return}let a=[];a.push(""),a.push(w.warning(` \u5373\u5C06\u7EC8\u6B62 ${i.length} \u4E2A\u540E\u53F0\u8FDB\u7A0B:`)),i.forEach(c=>{a.push(w.dim(` PID ${c.pid}: ${c.command.substring(0,40)}...`));}),a.push(""),zt(s,a);let{confirm:l}=await xl({type:"confirm",name:"confirm",message:"\u786E\u8BA4\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B?",initial:false});if(l){let c=Bt.killAll(true),u=[""];u.push(w.success(` \u2713 \u5DF2\u7EC8\u6B62 ${c.killed} \u4E2A\u8FDB\u7A0B`)),c.failed>0&&u.push(w.warning(` \u26A0 ${c.failed} \u4E2A\u8FDB\u7A0B\u7EC8\u6B62\u5931\u8D25`)),u.push(""),zt(s,u);}else zt(s,[w.dim(" \u5DF2\u53D6\u6D88")]);return}let t=parseInt(e,10);if(isNaN(t)){zt(s,["",w.error(` \u65E0\u6548\u7684 PID: ${e}`),""]);return}let n=Bt.get(t);if(!n)try{process.kill(t,0),zt(s,["",w.warning(` PID ${t} \u4E0D\u5728\u8FDB\u7A0B\u7BA1\u7406\u5668\u4E2D\uFF0C\u5C1D\u8BD5\u76F4\u63A5\u7EC8\u6B62...`)]);let{confirm:i}=await xl({type:"confirm",name:"confirm",message:`\u786E\u8BA4\u7EC8\u6B62 PID ${t}?`,initial:!1});i?(process.kill(t,"SIGTERM"),zt(s,[w.success(` \u2713 \u5DF2\u53D1\u9001 SIGTERM \u5230 PID ${t}`),""])):zt(s,[w.dim(" \u5DF2\u53D6\u6D88"),""]);return}catch{zt(s,["",w.error(` \u8FDB\u7A0B ${t} \u4E0D\u5B58\u5728`),""]);return}if(n.status!=="running"){zt(s,["",w.info(` \u8FDB\u7A0B ${t} \u5DF2\u7ECF\u7ED3\u675F (\u72B6\u6001: ${n.status})`),""]);return}let r=["",w.warning(" \u5373\u5C06\u7EC8\u6B62\u8FDB\u7A0B:"),w.dim(` PID: ${n.pid}`),w.dim(` \u547D\u4EE4: ${n.command}`),w.dim(` \u7C7B\u578B: ${n.background?"\u540E\u53F0":"\u540C\u6B65"}`),""];zt(s,r);let{confirm:o}=await xl({type:"confirm",name:"confirm",message:"\u786E\u8BA4\u7EC8\u6B62\u6B64\u8FDB\u7A0B?",initial:true});o?(n.background?Bt.killProcessGroup(t):Bt.kill(t,"SIGTERM",true))?zt(s,["",w.success(` \u2713 \u5DF2\u7EC8\u6B62\u8FDB\u7A0B ${t}`),""]):zt(s,["",w.error(` \u2717 \u65E0\u6CD5\u7EC8\u6B62\u8FDB\u7A0B ${t}`),""]):zt(s,[w.dim(" \u5DF2\u53D6\u6D88")]);}bl();Xt();xi();us();Jy();te();function $F(s){let e=s.getProviders();if(!e||e.length===0){s.logInfo("No provider configured","Add a provider before managing models.");return}OF(s,e);}function OF(s,e){let t=[];t.push(""),t.push(w.highlight(" Available Models")),t.push("");for(let r of e){let o=In[r.protocol]||"OpenAI",i=r.id===s.providerId,a=i?w.success(" [current]"):"";t.push(w.primary(` \u25B8 ${r.name} (${r.id})`)+a),t.push(w.dim(` Protocol: ${o}`)),r.models.length===0?t.push(w.dim(" No models configured")):r.models.forEach((l,c)=>{let u=[];i&&l.name===s.model&&u.push("current"),l.name===r.defaultModel&&u.push("default"),t.push(` ${w.dim(`${c+1}.`)} ${l.name}${gl(u)}`);}),t.push("");}if(t.push(w.dim(" Commands:")),t.push(w.dim(" /model use [providerId] <name> switch model")),t.push(w.dim(" /model add add model")),t.push(w.dim(" /model remove <name> remove model")),t.push(w.dim(" /model default <name> set default model")),t.push(w.dim(" /model list <providerId> list provider models")),t.push(""),s.outputFn){for(let r of t)s.outputFn(r);return}let n=t.slice(1,-1);s.logInfo("Available models",n.join(`
|
|
3900
|
+
`;ys("powershell.exe",["-NoProfile","-Command",r]);return}if(process.platform==="linux"){ys("notify-send",[s,e]);return}process.platform==="win32"&&process.env.CLI_DEBUG&&p.debug("ALERT","Notification not supported on Windows without extra tools");}zy();function f_(s){return s.map(e=>({id:e.id??e.data?.id,name:e.name??e.data?.name,timestamp:e.timestamp??e.data?.timestamp??Date.now()})).filter(e=>typeof e.id=="string")}Xt();Tn();var kF=[{id:"provider",title:"Provider",description:"\u9009\u62E9/\u5207\u6362 Provider"},{id:"model",title:"Model",description:"\u9009\u62E9 Provider \u2192 Model"},{id:"session",title:"Session",description:"\u9009\u62E9/\u5207\u6362\u4F1A\u8BDD"},{id:"workspace",title:"Workspace",description:"\u5DE5\u4F5C\u533A\u7BA1\u7406 (\u5207\u6362/\u6DFB\u52A0/\u5217\u8868)"},{id:"mode",title:"Mode",description:"\u5207\u6362\u4EA4\u4E92\u98CE\u683C (Agent/Ask)"},{id:"run",title:"Run",description:"\u5207\u6362\u8FD0\u884C\u6A21\u5F0F (single/assistant/cooperate/network)"},{id:"runconfig",title:"RunConfig",description:"\u8FD0\u884C\u914D\u7F6E\u4E2D\u5FC3 (\u6A21\u578B\u6C60/\u5E76\u53D1/CCB)"},{id:"sandbox",title:"Sandbox",description:"\u5207\u6362\u6C99\u7BB1\u6A21\u5F0F"},{id:"thinking",title:"Thinking",description:"\u5207\u6362\u6DF1\u5EA6\u601D\u8003"},{id:"approval",title:"Approval",description:"\u5207\u6362\u5BA1\u6279\u6A21\u5F0F"},{id:"notify",title:"Notify",description:"\u5B8C\u6210\u63D0\u793A (\u58F0\u97F3/\u901A\u77E5)"},{id:"context",title:"Context",description:"\u4E0A\u4E0B\u6587\u7BA1\u7406 (tokens/\u538B\u7F29/\u7F13\u5B58)"},{id:"memory",title:"Memory",description:"\u8BB0\u5FC6\u7EDF\u8BA1 (\u77ED/\u4E2D/\u957F/\u6C38\u4E45)"},{id:"remote",title:"Remote",description:"\u8FDC\u7A0B\u8BBF\u95EE (LAN/VPS)"},{id:"statistic",title:"Statistic",description:"Token \u4F7F\u7528\u7EDF\u8BA1 (\u603B\u89C8/Provider/\u7F13\u5B58)"},{id:"index",title:"Index",description:"\u4EE3\u7801\u7D22\u5F15\u7BA1\u7406 (\u6784\u5EFA/\u67E5\u770B/\u6E05\u9664)"},{id:"help-text",title:"View Help Text",description:"\u67E5\u770B\u5E2E\u52A9\u6587\u6863"},{id:"exit",title:"\u2190 Exit",description:"\u9000\u51FA\u5E2E\u52A9\u83DC\u5355"}];function fl(s,e){Q(s);}function _F(){return ["",w.highlight(" \u57FA\u672C\u547D\u4EE4 (Commands):"),w.dim(" \u6240\u6709\u547D\u4EE4\u652F\u6301\u83DC\u5355\u9009\u62E9\uFF0C\u76F4\u63A5\u8F93\u5165\u547D\u4EE4\u5373\u53EF"),"",w.primary(" /help ")+w.dim("\u5E2E\u52A9\u83DC\u5355"),w.primary(" /exit ")+w.dim("\u9000\u51FA CLI"),w.primary(" /update ")+w.dim("\u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C"),w.primary(" /provider ")+w.dim("\u9009\u62E9/\u5207\u6362 Provider"),w.primary(" /model ")+w.dim("\u9009\u62E9 Provider \u2192 Model"),w.primary(" /mode ")+w.dim("\u5207\u6362 Agent/Ask \u6A21\u5F0F"),w.primary(" /run ")+w.dim("\u5207\u6362\u8FD0\u884C\u6A21\u5F0F (single/assistant/cooperate/network)"),w.primary(" /runconfig ")+w.dim("\u8FD0\u884C\u914D\u7F6E\u4E2D\u5FC3 (\u6A21\u578B\u6C60/\u5E76\u53D1/CCB)"),w.primary(" /approval ")+w.dim("\u5207\u6362\u5BA1\u6279\u6A21\u5F0F Auto/Manual"),w.primary(" /notify ")+w.dim("\u5B8C\u6210\u63D0\u793A\u8BBE\u7F6E (\u58F0\u97F3/\u901A\u77E5)"),w.primary(" /sandbox ")+w.dim("\u5207\u6362\u6C99\u7BB1\u6A21\u5F0F On/Off"),w.primary(" /thinking ")+w.dim("\u5207\u6362\u6DF1\u5EA6\u601D\u8003 On/Off"),w.primary(" /websearch ")+w.dim("WebSearch \u5F00\u5173\u4E0E URL/Key \u914D\u7F6E"),w.primary(" /index ")+w.dim("\u4EE3\u7801\u7D22\u5F15\u7BA1\u7406 (\u6784\u5EFA/\u67E5\u770B/\u6E05\u9664)"),w.primary(" /mcp ")+w.dim("MCP \u670D\u52A1\u5668\u7BA1\u7406 (list/add/remove/connect)"),w.primary(" /context ")+w.dim("\u4E0A\u4E0B\u6587\u7BA1\u7406\u83DC\u5355 (tokens/\u538B\u7F29/\u7F13\u5B58)"),w.primary(" /memory ")+w.dim("\u8BB0\u5FC6\u7EDF\u8BA1 (\u77ED/\u4E2D/\u957F/\u6C38\u4E45)"),w.primary(" /remote ")+w.dim("\u8FDC\u7A0B\u8BBF\u95EE\u914D\u7F6E (LAN/VPS)"),w.primary(" /statistic ")+w.dim("Token \u4F7F\u7528\u7EDF\u8BA1 (\u603B\u89C8/Provider/\u7F13\u5B58)"),w.primary(" /workspace ")+w.dim("\u5DE5\u4F5C\u533A\u7BA1\u7406 (list/add/switch)"),"",w.dim(" \u76F4\u63A5\u547D\u4EE4 (\u4E5F\u53EF\u76F4\u63A5\u6307\u5B9A\u53C2\u6570):"),w.dim(" /provider <id> \u5207\u6362\u5230\u6307\u5B9A Provider"),w.dim(" /model <name> \u5207\u6362\u5230\u6307\u5B9A Model"),w.dim(" /mode agent|ask \u76F4\u63A5\u8BBE\u7F6E\u6A21\u5F0F"),w.dim(" /run <mode> \u76F4\u63A5\u8BBE\u7F6E\u8FD0\u884C\u6A21\u5F0F"),w.dim(" /sandbox on|off \u76F4\u63A5\u8BBE\u7F6E\u6C99\u7BB1"),w.dim(" /thinking on|off \u76F4\u63A5\u8BBE\u7F6E\u601D\u8003"),w.dim(" /websearch on|off \u5F00\u5173 WebSearch"),w.dim(" /websearch set-url <url> \u8BBE\u7F6E WebSearch URL"),w.dim(" /websearch set-key <key> \u8BBE\u7F6E API Key"),"",w.primary(" /clear ")+w.dim("\u6E05\u7A7A\u5BF9\u8BDD\u5386\u53F2"),w.primary(" /stats ")+w.dim("\u663E\u793A\u4F1A\u8BDD\u7EDF\u8BA1\u4FE1\u606F"),w.primary(" /config-clear")+w.dim("\u6E05\u9664\u914D\u7F6E\u6587\u4EF6"),w.primary(" /attach <path>")+w.dim("\u6DFB\u52A0\u56FE\u7247\u9644\u4EF6"),w.primary(" /attachments ")+w.dim("\u7BA1\u7406\u9644\u4EF6 (list/clear/remove)")]}function IF(s=fl){for(let e of _F())s(e);}function EF(){return ["",w.highlight(" \u4F1A\u8BDD\u547D\u4EE4 (Session Commands):"),"",w.primary(" /sessions ")+w.dim("\u9009\u62E9/\u5207\u6362\u4F1A\u8BDD"),w.primary(" /session <id> ")+w.dim("\u76F4\u63A5\u5207\u6362\u5230\u6307\u5B9A\u4F1A\u8BDD"),w.primary(" /session-new ")+w.dim("\u521B\u5EFA\u65B0\u4F1A\u8BDD"),w.primary(" /session-info ")+w.dim("\u663E\u793A\u4F1A\u8BDD\u4FE1\u606F"),w.primary(" /undo [n] ")+w.dim("\u64A4\u9500\u6700\u8FD1 n \u8F6E\u5BF9\u8BDD"),w.primary(" /checkpoint ")+w.dim("\u521B\u5EFA\u68C0\u67E5\u70B9"),w.primary(" /checkpoints ")+w.dim("\u5217\u51FA\u68C0\u67E5\u70B9"),w.primary(" /rollback <id> ")+w.dim("\u56DE\u6EDA\u5230\u68C0\u67E5\u70B9"),w.primary(" /session-clear ")+w.dim("\u6E05\u7A7A\u4F1A\u8BDD"),w.primary(" /session-export ")+w.dim("\u5BFC\u51FA\u4F1A\u8BDD"),w.primary(" /compact ")+w.dim("\u624B\u52A8\u538B\u7F29\u4E0A\u4E0B\u6587")]}function AF(s=fl){for(let e of EF())s(e);}function PF(){return ["",w.highlight(" \u8FDB\u7A0B\u7BA1\u7406 (Process Management):"),"",w.primary(" /processes ")+w.dim("\u67E5\u770B\u8FDB\u7A0B\u5217\u8868"),w.primary(" /ps ")+w.dim("/processes \u7684\u7B80\u5199"),w.primary(" /kill <pid> ")+w.dim("\u7EC8\u6B62\u6307\u5B9A\u8FDB\u7A0B"),w.primary(" /kill all ")+w.dim("\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B")]}function MF(s=fl){for(let e of PF())s(e);}function RF(){return ["",w.highlight(" \u5FEB\u6377\u952E (Keyboard Shortcuts):"),"",w.dim(" \u83DC\u5355\u9009\u62E9\u65F6:"),w.primary(" \u2191/\u2193 ")+w.dim("\u4E0A\u4E0B\u79FB\u52A8\u9009\u62E9"),w.primary(" Enter ")+w.dim("\u786E\u8BA4\u9009\u62E9"),w.primary(" ESC ")+w.dim("\u53D6\u6D88\u9009\u62E9"),"",w.dim(" \u8FD0\u884C\u65F6:"),w.primary(" ESC ")+w.dim("\u4E2D\u65AD\u5F53\u524D\u4EFB\u52A1\uFF08\u6309\u4E24\u6B21\uFF09"),w.primary(" Tab ")+w.dim("\u5207\u6362 Thinking \u6A21\u5F0F"),w.error(" Ctrl+C ")+w.dim("\u9000\u51FA\u7A0B\u5E8F"),""]}function DF(s=fl){for(let e of RF())s(e);}function tp(s=fl){IF(s),AF(s),MF(s),DF(s);}function y_(){return kF.map(s=>({title:s.title,value:s.id,description:s.description}))}xi();Tn();function Wt(s,e){s.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}async function np(s){let{runtimeHost:e,colors:t,promptSelect:n,sessionEnabled:r,activateSession:o,logInfo:i}=s;if(!r){i("Session disabled","Session persistence is not enabled.");return}let a=await e.listSessions();if(a.length===0){i("No sessions","No sessions found. Start chatting to create one.");return}let l=e.getCurrentSessionId();try{let c=a.slice(0,15).map(h=>{let y=l&&h.sessionId===l,b=Xd(h.updatedAt);return {label:y?`\u25CF ${h.sessionId}`:h.sessionId,value:h.sessionId,description:`${h.itemCount} items, ${b}${y?" (current)":""}`}}),u=[{label:"\u2B05\uFE0F Back",value:"__back__",description:"Return to previous menu"},{label:"\u2500".repeat(40),value:"__separator__",description:""},...c],d=await n("Select session",u,l||void 0);if(d==="__back__")return;if(d==="__separator__")return np(s);if(d===l){i("Session","Already on this session.");return}let m=await e.switchSession(d),g=await o(m,{loadHistory:!0});i("Session switched",`${d}${g>0?` (${g} messages loaded)`:""}`);}catch(c){c.message!=="cancelled"&&i("Session switch failed",c.message);}}async function v_(s,e){let{runtimeHost:t,sessionEnabled:n,activateSession:r,colors:o}=s;if(!n){Wt(s,[o.error(" [x] Session persistence is disabled")]);return}try{let i=await t.switchSession(e),a=await r(i,{loadHistory:!0}),l=["",o.success(` \u2713 Switched to session: ${e}`)];a>0&&l.push(o.dim(` Loaded ${a} messages`)),l.push(""),Wt(s,l);}catch(i){Wt(s,[o.error(` [x] ${i.message}`)]);}}async function C_(s,e){let{runtimeHost:t,sessionEnabled:n,activateSession:r,colors:o}=s;if(!n){Wt(s,[o.error(" [x] Session persistence is disabled")]);return}try{let i=await t.createSession(e);await r(i,{loadHistory:!1}),await t.createCheckpoint("session_start");let a=["",o.success(` \u2713 Created new session: ${i.sessionId}`),""];Wt(s,a);}catch(i){Wt(s,[o.error(` [x] Failed to create session: ${i.message}`)]);}}async function w_(s){let{runtimeHost:e,colors:t}=s;s.clearOutputLines&&s.clearOutputLines();try{let n=await e.getSessionInfo(),r=[];r.push(""),r.push(t.highlight(" Session Info:")),r.push(""),r.push(t.dim(" Session ID: ")+t.info(n.sessionId)),r.push(t.dim(" Turns: ")+t.info(n.turnCount.toString())),r.push(t.dim(" Messages: ")+t.info(n.messageCount.toString())),r.push(t.dim(" Checkpoints: ")+t.info(n.checkpointCount.toString())),n.meta&&(r.push(t.dim(" Model: ")+t.info(n.meta.model||"N/A")),n.meta.createdAt&&r.push(t.dim(" Created: ")+t.info(new Date(n.meta.createdAt).toLocaleString()))),r.push(""),Wt(s,r);}catch{Wt(s,[t.dim(" No active session")]);}}async function T_(s,e){let{runtimeHost:t,colors:n}=s;try{let r=parseInt(e||"1")||1,o=await t.undoTurns(r);if(o.success){let i=["",n.success(` \u2713 Undone ${o.undoneCount} turn(s)`)];if(o.messages.length>0){i.push(n.dim(" Removed messages:"));for(let a of o.messages.slice(0,4)){let l=(a.content||"").slice(0,50);i.push(n.dim(` [${a.role}] ${l}${l.length>=50?"...":""}`));}o.messages.length>4&&i.push(n.dim(` ... and ${o.messages.length-4} more`));}i.push(""),Wt(s,i);}else Wt(s,[n.warning(" \u26A0 Nothing to undo")]);}catch(r){Wt(s,[n.error(` [x] Undo failed: ${r.message}`)]);}}async function x_(s,e){let{runtimeHost:t,logInfo:n}=s;try{let r=await t.createCheckpoint(e||void 0);n("Checkpoint created",`${r}${e?` (${e})`:""}`);}catch(r){n("Checkpoint failed",r.message);}}async function S_(s){return rp(s)}async function rp(s,e){let{runtimeHost:t,normalizeCheckpoints:n,promptSelect:r,logInfo:o}=s;try{if(e){let g=await t.rollbackTo(e);o("Rollback complete",`Rolled back to ${e}, removed ${g.removedCount} items`);return}let i=n(await t.listCheckpoints());if(i.length===0){o("No checkpoints","No checkpoints available. Checkpoints are auto-created before each turn.");return}let a=i.find(g=>g.name==="session_start"),l=i.filter(g=>g.name?.startsWith("turn_")),c=i.filter(g=>g.name!=="session_start"&&!g.name?.startsWith("turn_")),u=[];if(u.push({label:"\u2B05\uFE0F Back",value:"__back__",description:"Cancel and return"}),u.push({label:"\u270F\uFE0F Enter ID manually",value:"__manual__",description:"Type a checkpoint ID"}),u.push({label:"\u2500".repeat(40),value:"__separator__",description:""}),a){let g=new Date(a.timestamp).toLocaleString();u.push({label:`\u{1F3C1} ${a.id}`,value:a.id,description:`Session Start - ${g}`});}l.slice().reverse().forEach(g=>{let h=new Date(g.timestamp).toLocaleString(),y=g.name?.match(/turn_(\d+)/),b=y?`Turn ${y[1]}`:g.name;u.push({label:`\u21A9\uFE0F ${g.id}`,value:g.id,description:`${b} - ${h}`});}),c.forEach(g=>{let h=new Date(g.timestamp).toLocaleString();u.push({label:`\u{1F4CC} ${g.id}`,value:g.id,description:`${g.name||"unnamed"} - ${h}`});});let d=await r("Select checkpoint to rollback",u);if(d==="__back__")return;if(d==="__separator__")return rp(s);if(d==="__manual__"){let{promptText:g}=s;if(!g){o("Error","Manual input not supported");return}let h=await g("Enter checkpoint ID:",{allowEmpty:!1});if(!h)return;let y=await t.rollbackTo(h);o("Rollback complete",`Rolled back to ${h}, removed ${y.removedCount} items`);return}let m=await t.rollbackTo(d);o("Rollback complete",`Rolled back to ${d}, removed ${m.removedCount} items`);}catch(i){i.message!=="cancelled"&&o("Rollback failed",i.message);}}async function k_(s){let{runtimeHost:e,colors:t}=s;try{await e.clearSession(),Wt(s,["",t.success(" \u2713 Session cleared"),""]);}catch(n){Wt(s,[t.error(` [x] Failed to clear session: ${n.message}`)]);}}async function __(s,e){let{currentSession:t,sessionManager:n,colors:r}=s;if(!t){Wt(s,[r.error(" [x] No active session")]);return}try{let o=t.sessionId,i=await n.exportSession(o);e?(await Ct.promises.writeFile(e,i,"utf-8"),Wt(s,["",r.success(` \u2713 Session exported to: ${e}`),""])):Wt(s,["",r.highlight(" Session Export (JSON):"),"",i,""]);}catch(o){Wt(s,[r.error(` [x] Export failed: ${o.message}`)]);}}async function I_(s,e){let{sessionEnabled:t,compatProfile:n,uiController:r,runtimeHost:o,logInfo:i,colors:a}=s,{autoCompactionInProgress:l}=s;if(!t)return i("\u4F1A\u8BDD\u5DF2\u7981\u7528","\u538B\u7F29\u4EC5\u9002\u7528\u4E8E\u542F\u7528\u4E86\u6301\u4E45\u5316\u7684\u4F1A\u8BDD\u3002"),l;if(!n)return i("\u7F3A\u5C11\u6A21\u578B\u4E0A\u4E0B\u6587\u753B\u50CF","\u8BF7\u68C0\u67E5 Provider/Model \u914D\u7F6E\u3002"),l;if(l)return i("\u538B\u7F29\u8FDB\u884C\u4E2D","\u8BF7\u7A0D\u5019\u7247\u523B\u3002"),l;l=true;try{r&&r.updateStatus("[~] Manual compaction...","compacting"),await(s.withRuntimeEvents??(async u=>u()))(()=>o.compactSession()),r&&r.updateStatus("Compaction complete!","complete");}catch(c){i("\u624B\u52A8\u538B\u7F29\u5931\u8D25",c?.message||String(c)),r&&(r.updateStatus("Compaction failed","error"),r.addInfo("\u274C \u538B\u7F29\u5931\u8D25",c?.message||String(c)));}finally{l=false;}return l}ru();xi();Xt();Tn();function zt(s,e){s?.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}async function E_(s,e){s?.clearOutputLines&&s.clearOutputLines(),Bt.refreshStatus();let t=Bt.getBackgroundRunning(),n=[];if(n.push(""),n.push(w.highlight(" \u540E\u53F0\u8FDB\u7A0B (Background Processes)")),n.push(""),t.length===0){n.push(w.dim(" \u6CA1\u6709\u8FD0\u884C\u4E2D\u7684\u540E\u53F0\u8FDB\u7A0B")),n.push(""),n.push(w.dim(" \u63D0\u793A: \u4F7F\u7528 execute_shell \u7684 background=true \u53C2\u6570\u542F\u52A8\u540E\u53F0\u8FDB\u7A0B")),n.push(""),zt(s,n);return}n.push(w.success(` \u{1F7E2} ${t.length} \u4E2A\u540E\u53F0\u8FDB\u7A0B\u6B63\u5728\u8FD0\u884C:`)),n.push(""),t.forEach(r=>{let o=Date.now()-r.startTime.getTime(),i=J0(o),a=r.command.length>50?r.command.substring(0,47)+"...":r.command;n.push(w.dim(" ")+w.warning(`PID ${r.pid}`)),n.push(w.dim(" \u547D\u4EE4: ")+w.info(a)),n.push(w.dim(" \u8FD0\u884C: ")+w.dim(i)),n.push(w.dim(" \u76EE\u5F55: ")+w.dim(r.cwd)),n.push("");}),n.push(w.dim(" \u547D\u4EE4:")),n.push(w.dim(" /kill <pid> ")+w.dim("\u7EC8\u6B62\u6307\u5B9A\u8FDB\u7A0B")),n.push(w.dim(" /kill all ")+w.dim("\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B")),n.push(""),zt(s,n);}async function A_(s,e){if(s?.clearOutputLines&&s.clearOutputLines(),!e){let i=["",w.error(" \u7528\u6CD5: /kill <pid> \u6216 /kill all"),w.dim(" \u4F7F\u7528 /processes \u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u8FDB\u7A0B"),""];zt(s,i);return}if(Bt.refreshStatus(),e.toLowerCase()==="all"){let i=Bt.getBackgroundRunning();if(i.length===0){zt(s,["",w.info(" \u6CA1\u6709\u8FD0\u884C\u4E2D\u7684\u540E\u53F0\u8FDB\u7A0B"),""]);return}let a=[];a.push(""),a.push(w.warning(` \u5373\u5C06\u7EC8\u6B62 ${i.length} \u4E2A\u540E\u53F0\u8FDB\u7A0B:`)),i.forEach(c=>{a.push(w.dim(` PID ${c.pid}: ${c.command.substring(0,40)}...`));}),a.push(""),zt(s,a);let{confirm:l}=await xl({type:"confirm",name:"confirm",message:"\u786E\u8BA4\u7EC8\u6B62\u6240\u6709\u540E\u53F0\u8FDB\u7A0B?",initial:false});if(l){let c=Bt.killAll(true),u=[""];u.push(w.success(` \u2713 \u5DF2\u7EC8\u6B62 ${c.killed} \u4E2A\u8FDB\u7A0B`)),c.failed>0&&u.push(w.warning(` \u26A0 ${c.failed} \u4E2A\u8FDB\u7A0B\u7EC8\u6B62\u5931\u8D25`)),u.push(""),zt(s,u);}else zt(s,[w.dim(" \u5DF2\u53D6\u6D88")]);return}let t=parseInt(e,10);if(isNaN(t)){zt(s,["",w.error(` \u65E0\u6548\u7684 PID: ${e}`),""]);return}let n=Bt.get(t);if(!n)try{process.kill(t,0),zt(s,["",w.warning(` PID ${t} \u4E0D\u5728\u8FDB\u7A0B\u7BA1\u7406\u5668\u4E2D\uFF0C\u5C1D\u8BD5\u76F4\u63A5\u7EC8\u6B62...`)]);let{confirm:i}=await xl({type:"confirm",name:"confirm",message:`\u786E\u8BA4\u7EC8\u6B62 PID ${t}?`,initial:!1});i?(process.kill(t,"SIGTERM"),zt(s,[w.success(` \u2713 \u5DF2\u53D1\u9001 SIGTERM \u5230 PID ${t}`),""])):zt(s,[w.dim(" \u5DF2\u53D6\u6D88"),""]);return}catch{zt(s,["",w.error(` \u8FDB\u7A0B ${t} \u4E0D\u5B58\u5728`),""]);return}if(n.status!=="running"){zt(s,["",w.info(` \u8FDB\u7A0B ${t} \u5DF2\u7ECF\u7ED3\u675F (\u72B6\u6001: ${n.status})`),""]);return}let r=["",w.warning(" \u5373\u5C06\u7EC8\u6B62\u8FDB\u7A0B:"),w.dim(` PID: ${n.pid}`),w.dim(` \u547D\u4EE4: ${n.command}`),w.dim(` \u7C7B\u578B: ${n.background?"\u540E\u53F0":"\u540C\u6B65"}`),""];zt(s,r);let{confirm:o}=await xl({type:"confirm",name:"confirm",message:"\u786E\u8BA4\u7EC8\u6B62\u6B64\u8FDB\u7A0B?",initial:true});o?(n.background?Bt.killProcessGroup(t):Bt.kill(t,"SIGTERM",true))?zt(s,["",w.success(` \u2713 \u5DF2\u7EC8\u6B62\u8FDB\u7A0B ${t}`),""]):zt(s,["",w.error(` \u2717 \u65E0\u6CD5\u7EC8\u6B62\u8FDB\u7A0B ${t}`),""]):zt(s,[w.dim(" \u5DF2\u53D6\u6D88")]);}bl();Xt();xi();cs();Jy();te();function $F(s){let e=s.getProviders();if(!e||e.length===0){s.logInfo("No provider configured","Add a provider before managing models.");return}OF(s,e);}function OF(s,e){let t=[];t.push(""),t.push(w.highlight(" Available Models")),t.push("");for(let r of e){let o=In[r.protocol]||"OpenAI",i=r.id===s.providerId,a=i?w.success(" [current]"):"";t.push(w.primary(` \u25B8 ${r.name} (${r.id})`)+a),t.push(w.dim(` Protocol: ${o}`)),r.models.length===0?t.push(w.dim(" No models configured")):r.models.forEach((l,c)=>{let u=[];i&&l.name===s.model&&u.push("current"),l.name===r.defaultModel&&u.push("default"),t.push(` ${w.dim(`${c+1}.`)} ${l.name}${gl(u)}`);}),t.push("");}if(t.push(w.dim(" Commands:")),t.push(w.dim(" /model use [providerId] <name> switch model")),t.push(w.dim(" /model add add model")),t.push(w.dim(" /model remove <name> remove model")),t.push(w.dim(" /model default <name> set default model")),t.push(w.dim(" /model list <providerId> list provider models")),t.push(""),s.outputFn){for(let r of t)s.outputFn(r);return}let n=t.slice(1,-1);s.logInfo("Available models",n.join(`
|
|
3901
3901
|
`));}function P_(s,e){if(!e||e.models.length===0){s.logInfo(`No models for ${e?.name||"provider"}`,"Use /model add to register a model.");return}let t=e.defaultModel,n=In[e.protocol]||"OpenAI",r=[];if(r.push(""),r.push(w.highlight(` Available Models - ${e.name} (${e.id})`)),r.push(w.dim(` Protocol: ${n}`)),r.push(""),e.models.forEach((i,a)=>{let l=[];e.id===s.providerId&&i.name===s.model&&l.push("current"),i.name===t&&l.push("default"),r.push(` ${w.primary(`${a+1}.`)} ${i.name}${gl(l)}`);}),r.push(""),r.push(w.dim(" Commands:")),r.push(w.dim(" /model use [providerId] <name> switch model")),r.push(w.dim(" /model add add model")),r.push(w.dim(" /model remove <name> remove model")),r.push(w.dim(" /model default <name> set default model")),r.push(w.dim(" /model list <providerId> list other provider models")),r.push(""),s.outputFn){for(let i of r)s.outputFn(i);return}let o=r.slice(1,-1);s.logInfo("Available models",o.join(`
|
|
3902
3902
|
`));}async function M_(s,e){if(e){let t=s.getProvider(e);if(!t){s.logInfo("Provider not found",`Unknown provider "${e}".`);return}P_(s,t);return}$F(s);}async function Qy(s,e){if(!s.providerSettings){s.logInfo("No provider configured","Set up a provider before selecting models.");return}if(!s.providerSettings.models.some(t=>t.name===e)){let t=s.providerSettings.models.map(n=>n.name).join(", ");s.logInfo("Invalid model",t?`Available models: ${t}`:"No models configured.");return}if(e===s.model){s.logInfo("Model unchanged",`${e} is already active.`);return}try{s.setLastSelectedModel(s.providerId,e),await s.applyProviderState({providerId:s.providerId,provider:s.provider,model:e,providerSettings:s.providerSettings}),s.updateProviderDisplay(s.getProviderDisplayName(),e),s.logInfo("Model updated",`Model set to ${e}`);}catch(t){s.logInfo("Failed to change model",t.message);}}function BF(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(0)}K`:`${s}`}function FF(s){return [...sp(s).slice(0,15).map(t=>{let n=on.getModel(t);if(!n)return {name:t,description:t};let r=BF(n.maxInputTokens),o=[];n.supportsVision&&o.push("\u{1F441}\uFE0F"),n.supportsThinking&&o.push("\u{1F4AD}");let i=o.length>0?`${o.join(" ")} `:"";return {name:t,description:`${n.displayName} ${i}(${r} ctx)`}}),{name:"__custom__",description:"Enter custom model name"}]}async function R_(s,e){if(!(e.protocol==="openai-responses"||e.protocol==="openai"&&e.baseUrl?.includes("responses"))||!await s.promptYesNo("Configure OpenAI Responses API reasoning settings?",false))return;let r=await s.promptSelect("Reasoning effort level",[{label:"Low",value:"low",description:"Minimal reasoning overhead"},{label:"Medium",value:"medium",description:"Balanced reasoning"},{label:"High",value:"high",description:"Deep thinking (slower, more thorough)"}],"low"),o=await s.promptSelect("Summary mode",[{label:"Auto",value:"auto",description:"Automatic summary generation"},{label:"Concise",value:"concise",description:"Brief summaries"},{label:"Detailed",value:"detailed",description:"Comprehensive summaries"}],"auto"),i=await s.promptYesNo("Configure verbosity level? (advanced)",false),a;return i&&(a=await s.promptSelect("Verbosity level",[{label:"Low",value:"low",description:"Minimal output detail"},{label:"Medium",value:"medium",description:"Standard detail"},{label:"High",value:"high",description:"Maximum detail"}],"low")),{effort:r,summary:o,...a&&{verbosity:a}}}async function cp(s,e,t=false){let n=s.getProviders();if(!n||n.length===0){s.logInfo("No provider configured","Add a provider before managing models.");return}try{for(;;){let r,o;if(t&&e){let g=s.getProvider(e);if(!g){s.logInfo("Provider not found",`Unknown provider "${e}".`);return}r=g,o=void 0;}else if(e?.trim()&&!t){if(!s.providerSettings){s.logInfo("No provider configured","Add a provider before managing models.");return}r=s.providerSettings,o=e.trim();}else {if(n.length===1)r=n[0];else {let g=await s.selectProviderFromList("Select provider to add model to");if(!g)return;if(g.id==="__add__"){let{handleProviderAddCommand:h}=await Promise.resolve().then(()=>(bl(),lp));await h(s);let y=s.getProviders();if(!y||y.length===0)return;continue}r=g;}o=void 0;}let i;if(o)i=o;else {let g=FF(r.protocol);p.debug("MODEL_ADD","Getting model presets",{protocol:r.protocol,presetCount:g.length,firstThree:g.slice(0,3)});let h=[{label:"\u2190 Back",value:"__back__",description:"Return to provider selection"},...g.map(b=>({label:b.name==="__custom__"?"\u270F\uFE0F Custom model name":b.name,value:b.name,description:b.description}))],y=await s.promptSelect(`Select a model to add to ${r.name}`,h);if(!y||y==="__back__"){if(n.length===1||t)return;continue}y==="__custom__"?i=await s.promptText("Enter custom model name",{}):i=y;}if(r.models.find(g=>g.name===i)){if(s.logInfo("Model already exists",`Model "${i}" is already added to provider ${r.name}.`),o||n.length===1||t)return;continue}let l=await s.promptYesNo("Set as default model?",!1),c=await R_(s,r),u={};c&&(u.reasoning=c);let d=s.addModel(r.id,i,l,u),m=!1;r.id===s.providerId?m=await s.promptYesNo("Use this model immediately?",!0):m=await s.promptYesNo(`Switch to ${r.name} with this model?`,!1),s.refreshProviderSettings(),s.logInfo("Model added",`Model "${i}" added to provider ${d.name}.`),(m||l)&&(r.id!==s.providerId?(s.setLastSelectedModel(r.id,i),s.setDefaultProvider(r.id),await s.applyProviderState({providerId:r.id,provider:r.protocol,model:i,providerSettings:d}),s.updateProviderDisplay(s.getProviderDisplayName(),i),s.logInfo("Provider and model updated",`${s.getProviderDisplayName()} / ${i}`)):await Qy(s,i));break}}catch(r){r.message==="cancelled"?s.logInfo("Model addition cancelled"):s.logInfo("Failed to add model",r.message);}}async function Zy(s,e,t){let n=null,r=t;if(e){let o=s.getProvider(e);if(o)n=o;else if(!r)r=e;else {s.logInfo("Provider not found",`Unknown provider "${e}".`);return}}if(!n)if(s.getProviderCount()<=1&&s.providerSettings)n=s.providerSettings;else {let o=await s.selectProviderFromList("Select provider for model");if(!o)return;if(o.id==="__add__"){let{handleProviderAddCommand:i}=await Promise.resolve().then(()=>(bl(),lp));await i(s);return}n=o;}if(r){if(!n.models.some(i=>i.name===r)){s.logInfo("Model not found",`Model "${r}" does not exist for ${n.name}.`);return}}else {if(r=await s.selectModelFromProvider(n,`Select model for ${n.name}`)||void 0,!r)return;if(r==="__add__"){await cp(s,n.id,true);return}if(r==="__delete__"){await up(s,void 0,n.id);return}}if(n.id!==s.providerId){if(!s.resolveModel(n.id)){s.logInfo("Provider has no models",`Configure models for ${n.name} via /model add.`);return}s.setLastSelectedModel(n.id,r),s.setDefaultProvider(n.id),await s.applyProviderState({providerId:n.id,provider:n.protocol,model:r,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),r),s.logInfo("Provider and model updated",`Provider: ${s.getProviderDisplayName()}
|
|
3903
3903
|
Model: ${r}`);}else await Qy(s,r);P_(s,n);}async function up(s,e,t){let n=t||s.providerId,r=s.getProvider(n);if(!r){s.logInfo("No provider configured","Add a provider before managing models.");return}let o=e?e.trim():"";if(!(!o&&(o=await s.selectModelFromProvider(r,`Select a model to remove from ${r.name}`),!o||o==="__back__"||o==="__add__"||o==="__delete__"))){if(!r.models.some(i=>i.name===o)){s.logInfo("Model not found",`Model "${o}" does not exist for ${r.name}.`);return}try{if(!await s.promptConfirmKeyword(`Type REMOVE to delete model "${o}" from ${r.name}`,"remove")){s.logInfo("Model removal cancelled");return}let a=s.removeModel(n,o);if(s.providerId===n&&s.model===o){let c=s.resolveModel(n);if(!c){s.logInfo("Model removed",`Removed ${o}. Add another model with /model add.`);return}s.setLastSelectedModel(n,c),await s.applyProviderState({providerId:n,provider:s.provider,model:c,providerSettings:a}),s.updateProviderDisplay(s.getProviderDisplayName(),c),s.logInfo("Model removed",`Removed ${o}. Switched to ${c}.`);}else s.refreshProviderSettings(),s.logInfo("Model removed",`Removed ${o} from ${r.name}.`);}catch(i){i.message==="cancelled"?s.logInfo("Model removal cancelled"):s.logInfo("Failed to remove model",i.message);}}}async function D_(s,e){if(!s.providerSettings){s.logInfo("No provider configured","Add a provider before managing models.");return}let t=e?e.trim():"";if(!(!t&&(t=await s.selectModelFromCurrentProvider("Select a model to set as default"),!t))){if(!s.providerSettings.models.some(n=>n.name===t)){s.logInfo("Model not found",`Model "${t}" does not exist for ${s.providerSettings.name}.`);return}try{let n=s.updateProvider(s.providerId,{defaultModel:t});s.setLastSelectedModel(s.providerId,t),await s.applyProviderState({providerId:s.providerId,provider:s.provider,model:t,providerSettings:n}),s.updateProviderDisplay(s.getProviderDisplayName(),t),s.logInfo("Default model updated",`${t} is now default for ${n.name}.`);}catch(n){s.logInfo("Failed to set default model",n.message);}}}async function L_(s){let e=s.getProviders();if(!e||e.length===0){s.logInfo("No provider configured","Add a provider with /provider add first.");return}try{for(;;){let t;if(e.length===1)t=e[0];else {let r=await s.selectProviderFromList("Select provider");if(!r)return;if(r.id==="__add__"){let{handleProviderAddCommand:o}=await Promise.resolve().then(()=>(bl(),lp));await o(s);return}t=r;}if(t.models.length===0){s.logInfo("No models",`Provider "${t.name}" has no models. Use /model add to add one.`);return}let n=await s.selectModelFromProvider(t,`Select model (${t.name})`);if(!n){if(e.length===1)return;continue}if(n==="__add__"){await cp(s,t.id,!0);return}if(n==="__delete__"){await up(s,void 0,t.id);return}t.id!==s.providerId?(s.setLastSelectedModel(t.id,n),s.setDefaultProvider(t.id),await s.applyProviderState({providerId:t.id,provider:t.protocol,model:n,providerSettings:t}),s.updateProviderDisplay(s.getProviderDisplayName(),n),s.logInfo("Provider and model updated",`${s.getProviderDisplayName()} / ${n}`)):await Qy(s,n);break}}catch(t){t.message==="cancelled"?s.logInfo("Selection cancelled"):s.logInfo("Selection failed",t.message);}}async function N_(s,e,t){let n=s.providerId,r=s.getProvider(n);if(!r){s.logInfo("No provider configured","Add a provider before configuring models.");return}let o=e?.trim()||"";if(!o&&(o=await s.selectModelFromProvider(r,`Select a model to configure (${r.name})`)||"",!o||o.startsWith("__")))return;if(!r.models.find(a=>a.name===o)){s.logInfo("Model not found",`Model "${o}" does not exist for ${r.name}.`);return}try{s.logInfo(`Configuring model: ${o}`,`Provider: ${r.name} (${r.protocol})`);let a=await R_(s,r);if(!a){s.logInfo("Configuration cancelled","No changes made.");return}let l=s.updateModelConfig(n,o,{reasoning:a});n===s.providerId&&s.refreshProviderSettings(),s.logInfo("Model configuration updated",`Updated reasoning settings for ${o}`);}catch(a){a.message==="cancelled"?s.logInfo("Configuration cancelled"):s.logInfo("Failed to configure model",a.message);}}Xt();Tn();function UF(s,e){s.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}function jF(s){return s.includes("gemini-3")||s.includes("preview")}async function $_(s,e){let n=(e.trim().split(/\s+/)[1]||"").toLowerCase(),r=s.logInfo||((g,h)=>{let y=["",w.info(` ${g}`)];h&&y.push(w.dim(` ${h}`)),y.push(""),UF(s,y);}),o=s.providerSettings.protocol==="anthropic",i=s.providerSettings.protocol==="gemini",a=o||i,l=o?s.model.includes("opus-4-6")||s.model.includes("opus-4.6")||s.model.includes("opus-4-5")||s.model.includes("opus-4.5")||s.model.endsWith("-thinking"):i?jF(s.model):false;if(!a){r("Extended thinking","\u4EC5\u9002\u7528\u4E8E Claude (Anthropic) \u6216 Gemini \u6A21\u578B");return}let c=()=>{s.setThinkingMode("enabled"),s.llmProvider&&"setThinking"in s.llmProvider&&(o?s.llmProvider.setThinking({type:"enabled"}):i&&s.llmProvider.setThinking({type:"enabled"}));let g=o?"Claude":"Gemini",h=l?"":`
|
|
@@ -3908,8 +3908,8 @@ Model: ${r}`);}else await Qy(s,r);P_(s,n);}async function up(s,e,t){let n=t||s.p
|
|
|
3908
3908
|
`));let l={...s.userConfig,smartRead:{...s.userConfig.smartRead,enabled:true}};s.updateConfig(l),Me(l);}async function zF(s,e){if(!(await e.getStats()).hasIndex){s.logInfo("\u7D22\u5F15\u4E0D\u5B58\u5728","\u65E0\u9700\u6E05\u9664");return}try{if(await s.promptSelect("\u26A0\uFE0F \u786E\u5B9A\u8981\u6E05\u9664\u6240\u6709\u7D22\u5F15\u6587\u4EF6\u5417?",[{label:"\u53D6\u6D88",value:"no",description:"\u4FDD\u7559\u7D22\u5F15\u6587\u4EF6"},{label:"\u786E\u5B9A\u6E05\u9664",value:"yes",description:"\u5220\u9664\u6240\u6709\u7D22\u5F15\u6587\u4EF6"}],"no","\u6309 \u2191\u2193 \u9009\u62E9")!=="yes"){s.logInfo("\u64CD\u4F5C\u5DF2\u53D6\u6D88");return}await e.clear(),s.logInfo(w.success("\u2713 \u7D22\u5F15\u5DF2\u6E05\u9664"));}catch(n){n?.message!=="cancelled"&&s.logInfo("\u6E05\u9664\u5931\u8D25",n?.message);}}async function HF(s){let e=s.userConfig.smartRead||{enabled:true},t=[{label:"Web \u5F00\u53D1 (TS + JS)",value:"web",languages:["typescript","javascript"]},{label:"Full Stack (TS + JS + Python)",value:"fullstack",languages:["typescript","javascript","python"]},{label:"\u5168\u90E8\u8BED\u8A00",value:"all",languages:["typescript","javascript","python","java","go","rust"]},{label:"\u4EC5 TypeScript",value:"ts",languages:["typescript"]},{label:"\u4EC5 Python",value:"python",languages:["python"]},{label:"\u4EC5 Go",value:"go",languages:["go"]}];try{let n=await s.promptSelect("\u9009\u62E9\u8981\u7D22\u5F15\u7684\u8BED\u8A00",t.map(i=>({label:i.label,value:i.value,description:i.languages.join(", ")})),"fullstack","\u6309 \u2191\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4"),r=t.find(i=>i.value===n);if(!r){s.logInfo("\u914D\u7F6E\u5DF2\u53D6\u6D88");return}let o={...s.userConfig,smartRead:{...e,enabled:!0,languages:r.languages}};s.updateConfig(o),Me(o),s.logInfo(w.success("\u2713 \u914D\u7F6E\u5DF2\u4FDD\u5B58"),`\u8BED\u8A00: ${r.languages.join(", ")}
|
|
3909
3909
|
\u8FD0\u884C /index rebuild \u4EE5\u5E94\u7528\u65B0\u914D\u7F6E`);}catch(n){n?.message!=="cancelled"&&s.logInfo("\u914D\u7F6E\u5931\u8D25",n?.message);}}wt();function qF(s){if(s===0)return {systemTokens:0,toolTokens:0,messageTokens:0};let e=Math.floor(s*.125),t=Math.floor(s*.25),n=s-e-t;return {systemTokens:e,toolTokens:t,messageTokens:Math.max(0,n)}}function KF(s){return {compressionMode:s.context?.compressionMode??"sync",thresholdPercent:s.context?.thresholdPercent??85}}async function fr(s,e){let t=KF(s.userConfig);if(!e)try{e=await s.promptSelect("\u4E0A\u4E0B\u6587\u7BA1\u7406",[{label:"\u25CF \u67E5\u770B\u8BE6\u7EC6\u72B6\u6001",value:"show",description:"\u663E\u793A context \u4F7F\u7528\u60C5\u51B5\u548C\u5206\u7C7B\u5360\u6BD4"},{label:"\u25CF \u8BBE\u7F6E\u538B\u7F29\u9608\u503C",value:"threshold",description:`\u5F53\u524D: ${t.thresholdPercent}% - \u89E6\u53D1\u538B\u7F29\u7684 token \u4F7F\u7528\u7387`},{label:"\u25CF \u5207\u6362\u538B\u7F29\u6A21\u5F0F",value:"mode",description:t.compressionMode==="sync"?"\u5F53\u524D: \u540C\u6B65LLM\u538B\u7F29":"\u5F53\u524D: \u5F02\u6B65LLM\u538B\u7F29"}],"show","\u6309 \u2191\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CESC \u53D6\u6D88");}catch(n){n?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",n?.message);return}switch(e){case "show":await JF(s,t);break;case "threshold":await YF(s,t);break;case "mode":await VF(s,t);break;default:s.logInfo("\u65E0\u6548\u7684\u64CD\u4F5C","\u4F7F\u7528 /context \u67E5\u770B\u53EF\u7528\u64CD\u4F5C");}}async function JF(s,e){if(s.uiController&&"showContextMenu"in s.uiController){await s.uiController.showContextMenu(),await fr(s);return}let t=i=>i>=1e3?`${(i/1e3).toFixed(1)}k`:i.toString(),n=[];n.push("\u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E"),n.push("\u2502 Context Window Details \u2502"),n.push("\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F"),n.push("");let r=false;if(s.memoryPressure){let i=s.memoryPressure.getSnapshot();if(i&&i.profile&&i.pressure!==void 0){r=true;let{profile:a,tokensUsed:l,pressure:c}=i,u=Math.round(c*100),d=a.contextWindow||0,m=d-l,g=Math.floor(d*(e.thresholdPercent/100)),h=Math.max(0,g-l);n.push(`Total: ${t(l)} / ${t(d)} tokens (${u}%)`),n.push(`Remaining: ${t(m)} tokens`),n.push("");let y=e.compressionMode==="sync"?"Sync LLM":"Async LLM";n.push(`Compression: ${y} (${e.thresholdPercent}% threshold)`),n.push(""),h>0?n.push(`Compaction in: ${t(h)} tokens`):n.push("\u26A0\uFE0F Compaction threshold reached!"),n.push("");let b=qF(l);if(b.systemTokens>0||b.toolTokens>0||b.messageTokens>0){n.push("Context Breakdown:"),n.push("");let C=l>0?Math.round(b.systemTokens/l*100):0,T=l>0?Math.round(b.toolTokens/l*100):0,S=l>0?Math.round(b.messageTokens/l*100):0;n.push(` \u25A0 System: ${t(b.systemTokens)} (${C}%)`),n.push(` \u25A0 Tools: ${t(b.toolTokens)} (${T}%)`),n.push(` \u25A0 Messages: ${t(b.messageTokens)} (${S}%)`),n.push("");}}}if(!r){n.push("Total: 0 / -- tokens (0%)"),n.push("Remaining: -- tokens"),n.push("");let i=e.compressionMode==="sync"?"Sync LLM":"Async LLM";n.push(`Compression: ${i} (${e.thresholdPercent}% threshold)`),n.push(""),n.push("\u{1F4A1} Send a message to see context usage details"),n.push("");}let o=n.join(`
|
|
3910
3910
|
`);s.logInfo("Context Details",o);try{await s.promptSelect("",[{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E0A\u4E0B\u6587\u7BA1\u7406\u83DC\u5355"}],"back","\u6309 Enter \u8FD4\u56DE")==="back"&&await fr(s);}catch{}}async function VF(s,e){try{let t=await s.promptSelect("\u9009\u62E9\u538B\u7F29\u6A21\u5F0F",[{label:"\u25B8 \u540C\u6B65LLM\u538B\u7F29 (\u63A8\u8350)",value:"sync",description:"\u963B\u585E\u5F0FLLM\u538B\u7F29\uFF0C\u538B\u7F29\u65F6\u6682\u505C\u5BF9\u8BDD"},{label:"\u25B8 \u5F02\u6B65LLM\u538B\u7F29",value:"async",description:"\u540E\u53F0LLM\u538B\u7F29\uFF0C\u538B\u7F29\u65F6\u53EF\u7EE7\u7EED\u5BF9\u8BDD"},{label:"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",value:"separator",description:""},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E0A\u4E0B\u6587\u7BA1\u7406\u83DC\u5355"}],e.compressionMode,"\u6309 \u2191\u2193 \u9009\u62E9\uFF0CESC \u53D6\u6D88");if(t==="back"){await fr(s);return}if(t==="separator"){await fr(s);return}if(t===e.compressionMode)s.logInfo("\u538B\u7F29\u6A21\u5F0F\u672A\u6539\u53D8");else {let n={...s.userConfig,context:{...e,compressionMode:t}};s.updateConfig(n),Me(n),s.runner&&s.runner.setCompressionMode(t),s.uiController&&"setCompressionMode"in s.uiController&&s.uiController.setCompressionMode(t),s.updateCompressionMode&&s.updateCompressionMode(t),s.logInfo(`\u2713 \u538B\u7F29\u6A21\u5F0F\u5DF2\u5207\u6362\u4E3A: ${t==="sync"?"\u540C\u6B65LLM\u538B\u7F29":"\u5F02\u6B65LLM\u538B\u7F29"}`);}await fr(s);}catch(t){t?.message!=="cancelled"&&s.logInfo("\u5207\u6362\u5931\u8D25",t?.message);}}async function YF(s,e){try{let t=await s.promptSelect("\u9009\u62E9\u89E6\u53D1\u538B\u7F29\u7684\u9608\u503C",[{label:"20% (\u6D4B\u8BD5)",value:"20",description:"\u6D4B\u8BD5\u81EA\u52A8\u538B\u7F29\u529F\u80FD"},{label:"70%",value:"70",description:"\u8F83\u65E9\u89E6\u53D1\uFF0C\u66F4\u79EF\u6781\u7684\u538B\u7F29"},{label:"80%",value:"80",description:"\u5E73\u8861\u9009\u62E9"},{label:"85% (\u9ED8\u8BA4)",value:"85",description:"\u63A8\u8350\u8BBE\u7F6E"},{label:"90%",value:"90",description:"\u5EF6\u8FDF\u89E6\u53D1\uFF0C\u4FDD\u7559\u66F4\u591A\u4E0A\u4E0B\u6587"},{label:"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",value:"separator",description:""},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E0A\u4E0B\u6587\u7BA1\u7406\u83DC\u5355"}],String(e.thresholdPercent),"\u6309 \u2191\u2193 \u9009\u62E9\uFF0CESC \u53D6\u6D88");if(t==="back"){await fr(s);return}if(t==="separator"){await fr(s);return}let n=parseInt(t,10);if(n===e.thresholdPercent)s.logInfo("\u9608\u503C\u672A\u6539\u53D8");else {let r={...s.userConfig,context:{...e,thresholdPercent:n}};s.updateConfig(r),Me(r),s.uiController&&"setCompactionThreshold"in s.uiController&&s.uiController.setCompactionThreshold(n),s.updateCompactionThreshold&&s.updateCompactionThreshold(n),s.logInfo(`\u2713 \u538B\u7F29\u9608\u503C\u5DF2\u8BBE\u7F6E\u4E3A: ${n}%`);}await fr(s);}catch(t){t?.message!=="cancelled"&&s.logInfo("\u8BBE\u7F6E\u5931\u8D25",t?.message);}}Xt();Tn();ou();wt();function pp(s){return s.modelPricing||[]}function K_(s){let e=s.cachedInputPrice!==void 0?` / cached: $${s.cachedInputPrice}`:"";return `${s.pattern}: in $${s.inputPrice} / out $${s.outputPrice}${e}`}async function W_(s){let e=pp(s.userConfig);if(e.length===0){s.logInfo(G().pricing.noPricing,G().pricing.noPricingHint);return}let t=["",`\u{1F4CA} ${G().pricing.title}`,""];for(let n of e)t.push(` \u2022 ${n.pattern}`),t.push(` Input: $${n.inputPrice} ${G().pricing.perMillionTokens}`),t.push(` Output: $${n.outputPrice} ${G().pricing.perMillionTokens}`),n.cachedInputPrice!==void 0&&t.push(` Cached: $${n.cachedInputPrice} ${G().pricing.perMillionTokens}`),t.push("");s.logInfo(t.join(`
|
|
3911
|
-
`));}async function z_(s){try{let e=await s.promptInput(`${G().pricing.modelPattern} (${G().pricing.modelPatternHint})`,"");if(!e.trim())return;let t=await s.promptInput(G().pricing.inputPrice,""),n=parseFloat(t);if(isNaN(n)||n<0){s.logInfo(G().pricing.invalidNumber);return}let r=await s.promptInput(G().pricing.outputPrice,""),o=parseFloat(r);if(isNaN(o)||o<0){s.logInfo(G().pricing.invalidNumber);return}let i=await s.promptInput(G().pricing.cachedPrice+" "+G().pricing.cachedPriceHint,""),a;if(i.trim()&&(a=parseFloat(i),isNaN(a)||a<0)){s.logInfo(G().pricing.invalidNumber);return}let l=pp(s.userConfig),c={pattern:e.trim(),inputPrice:n,outputPrice:o,cachedInputPrice:a,currency:"USD"},u=l.findIndex(m=>m.pattern===e.trim());u>=0?l[u]=c:l.push(c);let d={...s.userConfig,modelPricing:l};s.updateConfig(d),Me(d),s.logInfo(G().pricing.pricingAdded,K_(c));}catch(e){e?.message!=="cancelled"&&s.logInfo("Error",e?.message);}}async function H_(s){let e=pp(s.userConfig);if(e.length===0){s.logInfo(G().pricing.noPricing,G().pricing.noPricingHint);return}try{let t=e.map(m=>({label:m.pattern,value:m.pattern,description:`in: $${m.inputPrice} / out: $${m.outputPrice}`}));t.push({label:G().pricing.back,value:"__back__"});let n=await s.promptSelect(G().pricing.selectToEdit,t);if(n==="__back__")return;let r=e.find(m=>m.pattern===n);if(!r)return;let o=await s.promptInput(G().pricing.inputPrice,r.inputPrice.toString()),i=parseFloat(o);if(isNaN(i)||i<0){s.logInfo(G().pricing.invalidNumber);return}let a=await s.promptInput(G().pricing.outputPrice,r.outputPrice.toString()),l=parseFloat(a);if(isNaN(l)||l<0){s.logInfo(G().pricing.invalidNumber);return}let c=await s.promptInput(G().pricing.cachedPrice,r.cachedInputPrice?.toString()||""),u;if(c.trim()&&(u=parseFloat(c),isNaN(u)||u<0)){s.logInfo(G().pricing.invalidNumber);return}r.inputPrice=i,r.outputPrice=l,r.cachedInputPrice=u;let d={...s.userConfig,modelPricing:e};s.updateConfig(d),Me(d),s.logInfo(G().pricing.pricingUpdated,K_(r));}catch(t){t?.message!=="cancelled"&&s.logInfo("Error",t?.message);}}async function q_(s){let e=pp(s.userConfig);if(e.length===0){s.logInfo(G().pricing.noPricing);return}try{let t=e.map(a=>({label:a.pattern,value:a.pattern,description:`in: $${a.inputPrice} / out: $${a.outputPrice}`}));t.push({label:G().pricing.back,value:"__back__"});let n=await s.promptSelect(G().pricing.selectToDelete,t);if(n==="__back__"||await s.promptSelect(G().pricing.confirmDelete,[{label:G().common.yes,value:"yes"},{label:G().common.no,value:"no"}],"no")!=="yes")return;let o=e.filter(a=>a.pattern!==n),i={...s.userConfig,modelPricing:o};s.updateConfig(i),Me(i),s.logInfo(G().pricing.pricingDeleted,n);}catch(t){t?.message!=="cancelled"&&s.logInfo("Error",t?.message);}}async function J_(s,e){if(e)switch(e.toLowerCase()){case "view":case "list":await W_(s);return;case "add":await z_(s);return;case "edit":await H_(s);return;case "delete":case "remove":await q_(s);return}try{let t=await s.promptSelect(G().pricing.title,[{label:G().pricing.viewPricing,value:"view",description:G().pricing.viewPricingDesc},{label:G().pricing.addPricing,value:"add",description:G().pricing.addPricingDesc},{label:G().pricing.editPricing,value:"edit",description:G().pricing.editPricingDesc},{label:G().pricing.deletePricing,value:"delete",description:G().pricing.deletePricingDesc},{label:G().pricing.back,value:"back"}],"view",G().pricing.hint);if(t==="back")return;switch(t){case "view":await W_(s);break;case "add":await z_(s);break;case "edit":await H_(s);break;case "delete":await q_(s);break}}catch(t){t?.message!=="cancelled"&&s.logInfo("Selection cancelled",t?.message);}}function V_(s,e){let t=s.modelPricing||[],n=t.find(r=>r.pattern===e);if(n)return n;for(let r of t)if(r.pattern.includes("*")&&new RegExp("^"+r.pattern.replace(/\*/g,".*")+"$").test(e))return r;return null}function Y_(s,e,t,n){let r=e/1e6*s.inputPrice,o=t/1e6*s.outputPrice,i=0;return n&&s.cachedInputPrice!==void 0&&(i=n/1e6*s.cachedInputPrice),r+o+i}function It(s){return s>=1e6?(s/1e6).toFixed(1)+"M":s>=1e3?(s/1e3).toFixed(1)+"K":s.toString()}function Cs(s,e){s.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}function Z_(s){let e=new Date(s),n=new Date().getTime()-s;return n<6e4?xn()?"\u521A\u521A":"just now":n<36e5?xn()?`${Math.floor(n/6e4)} \u5206\u949F\u524D`:`${Math.floor(n/6e4)}m ago`:n<864e5?xn()?`${Math.floor(n/36e5)} \u5C0F\u65F6\u524D`:`${Math.floor(n/36e5)}h ago`:n<6048e5?xn()?`${Math.floor(n/864e5)} \u5929\u524D`:`${Math.floor(n/864e5)}d ago`:e.toLocaleString(xn()?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}async function XF(s){let e={totalCost:0,modelCount:0,unmatchedModels:[]};try{let t=await rn.getProviderStats(),n=new Set,r=new Set;for(let o of t){let i=await rn.getProviderRecords(o.provider),a=new Map;for(let l of i){let c=a.get(l.model)||{input:0,output:0,cached:0};c.input+=l.inputTokens,c.output+=l.outputTokens,c.cached+=l.cachedTokens||0,a.set(l.model,c);}for(let[l,c]of a){let u=V_(s,l);if(u){let d=Y_(u,c.input,c.output,c.cached);e.totalCost+=d,n.has(l)||(n.add(l),e.modelCount++);}else n.has(l)||(n.add(l),r.add(l));}}e.unmatchedModels=Array.from(r);}catch{}return e}async function X_(s){try{s.clearOutputLines&&s.clearOutputLines();let e=await rn.getSummary();if(e.totalRequests===0){s.logInfo("\u6682\u65E0\u4F7F\u7528\u8BB0\u5F55");return}let t=[];if(t.push(""),t.push(w.highlight("\u{1F4CA} Token \u4F7F\u7528\u7EDF\u8BA1\u603B\u89C8")),t.push(""),t.push(w.primary(" \u603B\u8BF7\u6C42\u6570: ")+w.success(It(e.totalRequests)+" \u6B21")),t.push(w.primary(" \u603B Tokens: ")+w.success(It(e.totalTokens))),t.push(w.primary(" Input: ")+w.dim(It(e.totalInputTokens))),t.push(w.primary(" Output: ")+w.dim(It(e.totalOutputTokens))),e.totalCachedTokens>0){t.push(""),t.push(w.highlight(" \u7F13\u5B58\u7EDF\u8BA1:"));let r=(e.cacheHitRate*100).toFixed(1);t.push(w.primary(" \u603B\u7F13\u5B58\u547D\u4E2D: ")+w.success(It(e.totalCachedTokens))+w.dim(` (${r}% \u547D\u4E2D\u7387)`)),e.totalOpenaiCachedTokens>0&&t.push(w.primary(" OpenAI \u7F13\u5B58: ")+w.dim(It(e.totalOpenaiCachedTokens))+w.success(" (50% \u8282\u7701)")),e.totalAnthropicCacheReadTokens>0&&t.push(w.primary(" Claude Read: ")+w.dim(It(e.totalAnthropicCacheReadTokens))+w.success(" (90% \u8282\u7701)")),e.totalAnthropicCacheCreationTokens>0&&t.push(w.primary(" Claude Write: ")+w.dim(It(e.totalAnthropicCacheCreationTokens))+w.warning(" (+25% \u6210\u672C)"));}if(t.push(""),t.push(w.primary(" Provider \u6570: ")+w.dim(e.providerCount.toString())),t.push(w.primary(" \u6700\u540E\u8BF7\u6C42: ")+w.dim(Z_(e.lastRequestTime))),s.userConfig?.modelPricing&&s.userConfig.modelPricing.length>0){let r=await XF(s.userConfig);r.totalCost>0&&(t.push(""),t.push(w.highlight(xn()?" \u{1F4B0} \u8D39\u7528\u7EDF\u8BA1:":" \u{1F4B0} Cost Summary:")),t.push(w.primary(xn()?" \u9884\u4F30\u603B\u8D39\u7528: ":" Estimated: ")+w.success(`$${r.totalCost.toFixed(4)}`)),r.modelCount>0&&t.push(w.dim(xn()?` (${r.modelCount} \u4E2A\u6A21\u578B\u6709\u5B9A\u4EF7\u914D\u7F6E)`:` (${r.modelCount} models with pricing)`)),r.unmatchedModels.length>0&&r.unmatchedModels.length<=3?t.push(w.dim(xn()?` \u672A\u914D\u7F6E\u5B9A\u4EF7: ${r.unmatchedModels.join(", ")}`:` No pricing: ${r.unmatchedModels.join(", ")}`)):r.unmatchedModels.length>3&&t.push(w.dim(xn()?` \u672A\u914D\u7F6E\u5B9A\u4EF7: ${r.unmatchedModels.length} \u4E2A\u6A21\u578B`:` No pricing: ${r.unmatchedModels.length} models`)));}t.push(""),Cs(s,t);let n=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",[{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u67E5\u770B\u5404\u4E2A Provider \u7684\u8BE6\u7EC6\u7EDF\u8BA1"},{label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"}],"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(n==="back"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}n==="providers"?await mp(s):n==="records"&&await Cl(s);}catch(e){s.clearOutputLines&&s.clearOutputLines(),e.message!=="cancelled"&&e.message!=="User cancelled"&&Cs(s,[w.error("\u52A0\u8F7D\u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}function QF(s){let e=[];e.push(w.success("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")),e.push(w.primary(`${s.provider}`)+w.dim(` (${s.totalRequests} \u6B21\u8BF7\u6C42)`)),e.push(""),e.push(w.dim("Input: ")+w.primary(It(s.totalInputTokens).padEnd(8))+w.dim("Output: ")+w.success(It(s.totalOutputTokens).padEnd(8))+w.dim("Total: ")+w.warning(It(s.totalTokens))),s.totalCachedTokens>0&&(e.push(""),s.totalOpenaiCachedTokens>0&&e.push(w.dim("OpenAI \u7F13\u5B58: ")+w.code(It(s.totalOpenaiCachedTokens))+w.success(" (50% \u8282\u7701)")),s.totalAnthropicCacheReadTokens>0&&e.push(w.dim("Claude Read: ")+w.info(It(s.totalAnthropicCacheReadTokens))+w.success(" (90% \u8282\u7701)")),s.totalAnthropicCacheCreationTokens>0&&e.push(w.dim("Claude Write: ")+w.code(It(s.totalAnthropicCacheCreationTokens))+w.warning(" (+25% \u6210\u672C)")));let t=s.totalRequests>0?(s.successRequests/s.totalRequests*100).toFixed(1):"0";e.push(""),e.push(w.dim("\u6210\u529F\u7387: ")+w.success(t+"%")+w.dim(" \u5E73\u5747\u8017\u65F6: ")+w.warning(s.avgDuration+"ms"));let n=Object.entries(s.models);if(n.length>0){e.push(""),e.push(w.dim("\u6A21\u578B\u5206\u5E03:"));for(let[r,o]of n.slice(0,3)){let i=r.length>30?r.slice(0,27)+"...":r;e.push(w.dim(` ${i.padEnd(30)} `)+w.primary(It(o.totalTokens).padEnd(8))+w.dim(` (${o.requests} \u6B21)`));}n.length>3&&e.push(w.dim(` ... \u8FD8\u6709 ${n.length-3} \u4E2A\u6A21\u578B`));}return e.push(""),e}async function mp(s){try{let e=await rn.getProviderStats();if(e.length===0){s.logInfo("\u6682\u65E0 Provider \u7EDF\u8BA1");return}let t=2,n=Math.ceil(e.length/t),r=0;for(;;){s.clearOutputLines&&s.clearOutputLines();let o=r*t,i=Math.min(o+t,e.length),a=e.slice(o,i),l=[];l.push(""),l.push(w.highlight("\u{1F4C8} Provider \u7EDF\u8BA1")+w.dim(` (\u7B2C ${r+1}/${n} \u9875)`)),l.push("");for(let d of a)l.push(...QF(d));l.push(w.success("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")),l.push(""),Cs(s,l);let c=[];r>0&&c.push({label:"\u2190 \u4E0A\u4E00\u9875",value:"prev",description:`\u67E5\u770B\u7B2C ${r} \u9875`}),r<n-1&&c.push({label:"\u2192 \u4E0B\u4E00\u9875",value:"next",description:`\u67E5\u770B\u7B2C ${r+2} \u9875`}),c.push({label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"}),c.push({label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"});let u=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",c,"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(u==="prev"){r--;continue}else if(u==="next"){r++;continue}if(u==="back"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}if(u==="records"){await Cl(s);return}}}catch(e){s.clearOutputLines&&s.clearOutputLines(),e.message!=="cancelled"&&e.message!=="User cancelled"&&Cs(s,[w.error("\u52A0\u8F7D Provider \u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}async function Cl(s){try{s.clearOutputLines&&s.clearOutputLines();let e=await rn.getProviderStats();if(e.length===0){s.logInfo("\u6682\u65E0 Provider \u7EDF\u8BA1");return}let t=e.map(i=>({label:i.provider,value:i.provider,description:`${i.totalRequests} \u6B21\u8BF7\u6C42, ${It(i.totalTokens)} tokens`}));t.push({label:"\u2190 \u8FD4\u56DE",value:"__back__",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"});let n=await s.promptSelect("\u9009\u62E9 Provider \u67E5\u770B\u8BE6\u7EC6\u8BB0\u5F55",t,e[0].provider,"\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(n==="__back__"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}s.clearOutputLines&&s.clearOutputLines();let r=await rn.getProviderRecords(n,50);if(r.length===0){s.logInfo("\u8BE5 Provider \u6682\u65E0\u8BB0\u5F55");return}let o=[];o.push(""),o.push(w.highlight(`\u{1F4DD} ${n} - \u6700\u8FD1 ${r.length} \u6761\u8BB0\u5F55`)),o.push(""),o.push(w.dim(" \u7C7B\u578B ")+w.dim("\u6A21\u578B ")+w.dim("Input ")+w.dim("Output ")+w.dim("Cache ")+w.dim("\u8017\u65F6 ")+w.dim("\u72B6\u6001 ")+w.dim("\u65F6\u95F4")),o.push(w.dim(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));for(let i of r){let a=i.requestType==="health-check"?"\u6D4B\u8BD5":"\u5BF9\u8BDD",l=i.model.length>14?i.model.slice(0,11)+"...":i.model,c=It(i.inputTokens).padEnd(7),u=It(i.outputTokens).padEnd(7),d=i.cachedTokens?It(i.cachedTokens).padEnd(7):"-".padEnd(7),m=(i.duration+"ms").padEnd(7),g=i.success?w.success("\u2713"):w.error("\u2717"),h=Z_(i.timestamp);o.push(w.dim(" "+a.padEnd(8))+w.primary(l.padEnd(16))+w.dim(c)+w.success(u)+w.code(d)+w.warning(m)+g+" "+w.dim(h));}o.push(""),Cs(s,o);try{let i=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",[{label:"\u2190 \u8FD4\u56DE\u4E3B\u83DC\u5355",value:"back",description:"\u8FD4\u56DE\u7EDF\u8BA1\u4E3B\u83DC\u5355"},{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u8FD4\u56DE Provider \u7EDF\u8BA1\u5217\u8868"},{label:"\u25CF \u67E5\u770B\u5176\u4ED6 Provider",value:"other",description:"\u67E5\u770B\u5176\u4ED6 Provider \u7684\u8BE6\u7EC6\u8BB0\u5F55"}],"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");s.clearOutputLines&&s.clearOutputLines(),i==="other"?await Cl(s):i==="providers"?await mp(s):i==="back"&&await Si(s);}catch{s.clearOutputLines&&s.clearOutputLines();}}catch(e){e.message==="cancelled"||e.message==="User cancelled"?s.clearOutputLines&&s.clearOutputLines():s.logInfo("\u52A0\u8F7D\u8BE6\u7EC6\u8BB0\u5F55\u5931\u8D25",e.message);}}async function Q_(s){try{let e=await rn.getProviderStats(),t=[{label:"\u6E05\u9664\u6240\u6709\u7EDF\u8BA1",value:"all",description:"\u26A0\uFE0F \u6E05\u9664\u6240\u6709 Provider \u7684\u7EDF\u8BA1\u6570\u636E"}];if(e.length>0)for(let r of e)t.push({label:`\u6E05\u9664 ${r.provider}`,value:r.provider,description:`\u6E05\u9664\u8BE5 Provider \u7684 ${r.totalRequests} \u6761\u8BB0\u5F55`});t.push({label:"\u53D6\u6D88",value:"cancel",description:"\u8FD4\u56DE\u4E0A\u4E00\u7EA7"});let n=await s.promptSelect("\u6E05\u9664\u7EDF\u8BA1\u6570\u636E",t,"cancel","\u26A0\uFE0F \u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D");if(n==="cancel")return;n==="all"?(await rn.clearAll(),s.logInfo("\u5DF2\u6E05\u9664\u6240\u6709\u7EDF\u8BA1\u6570\u636E")):(await rn.clearProvider(n),s.logInfo(`\u5DF2\u6E05\u9664 ${n} \u7684\u7EDF\u8BA1\u6570\u636E`));}catch(e){Cs(s,[w.error("\u6E05\u9664\u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}async function Si(s,e){if(e)switch(e){case "summary":await X_(s);return;case "providers":await mp(s);return;case "records":await Cl(s);return;case "clear":await Q_(s);return;default:Cs(s,[w.error(`\u672A\u77E5\u64CD\u4F5C: ${e}`),w.dim("\u53EF\u7528\u64CD\u4F5C: summary, providers, records, clear")]);return}try{let t=await s.promptSelect("Token \u4F7F\u7528\u7EDF\u8BA1",[{label:"\u25CF \u67E5\u770B\u603B\u89C8",value:"summary",description:"\u663E\u793A\u6574\u4F53 Token \u4F7F\u7528\u7EDF\u8BA1"},{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u67E5\u770B\u5404\u4E2A Provider \u7684\u8BE6\u7EC6\u7EDF\u8BA1"},{label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"},{label:"\u25CF \u6E05\u9664\u7EDF\u8BA1",value:"clear",description:"\u6E05\u9664\u7EDF\u8BA1\u6570\u636E"},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E0A\u4E00\u7EA7"}],"summary","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u9000\u51FA");if(t==="back")return;switch(t){case "summary":await X_(s);break;case "providers":await mp(s);break;case "records":await Cl(s);break;case "clear":await Q_(s);break}}catch(t){t.message!=="User cancelled"&&t.message!=="cancelled"&&Cs(s,[w.error("\u7EDF\u8BA1\u547D\u4EE4\u5931\u8D25: "+t.message)]);}}Xt();Tn();wt();cr();async function eI(s,e){let t=e?.toLowerCase();if(!t)try{t=await s.promptSelect("\u8BB0\u5FC6\u7CFB\u7EDF",[{label:"\u25CF \u67E5\u770B\u8BB0\u5FC6\u7EDF\u8BA1",value:"show",description:"\u77ED\u671F/\u4E2D\u671F/\u957F\u671F/\u6C38\u4E45 \u6761\u6570\u4E0E\u5927\u5C0F"},{label:"\u25CF \u67E5\u770B\u8DEF\u5F84",value:"paths",description:"\u663E\u793A\u8BB0\u5FC6\u6587\u4EF6\u8DEF\u5F84"},{label:"\u25CF \u914D\u7F6E\u6458\u8981\u6A21\u578B",value:"config",description:"\u5F00\u5173\u8BB0\u5FC6\u6458\u8981\u4E0E\u9009\u62E9\u6A21\u578B"},{label:"\u25CF \u8C03\u8BD5\u6CE8\u5165\u5185\u5BB9",value:"debug",description:"\u663E\u793A\u5F53\u524D\u4F1A\u6CE8\u5165\u7684\u8BB0\u5FC6\u6458\u8981"}],"show","\u6309 \u2191\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CESC \u53D6\u6D88");}catch(n){n?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",n?.message);return}switch(t){case "show":case "stats":await nU(s);break;case "paths":await rU(s);break;case "config":case "configure":await ZF(s);break;case "debug":await sU(s);break;default:s.logInfo("\u65E0\u6548\u7684\u64CD\u4F5C","\u4F7F\u7528 /memory \u67E5\u770B\u53EF\u7528\u64CD\u4F5C");}}async function ZF(s){let e=s.userConfig.memory??{},t=e.summarizerEnabled??true,n=e.summarizerModel??"",r=e.summarizerProviderId??"",o;try{o=await s.promptSelect("\u8BB0\u5FC6\u6458\u8981\u8BBE\u7F6E",[{label:`\u25CF \u6458\u8981\u5F00\u5173: ${t?"\u5F00\u542F":"\u5173\u95ED"}`,value:"toggle",description:"\u63A7\u5236\u81EA\u52A8\u8BB0\u5FC6\u6458\u8981"},{label:`\u25CF \u6458\u8981\u6A21\u578B: ${n||"\u9ED8\u8BA4"}`,value:"model",description:"\u9009\u62E9\u6458\u8981\u6A21\u578B\uFF08\u5982 haiku/gpt\uFF09"},{label:`\u25CF \u6458\u8981 Provider: ${r||"\u81EA\u52A8"}`,value:"provider",description:"\u6307\u5B9A\u6458\u8981\u4F7F\u7528\u7684 Provider\uFF08\u53EF\u9009\uFF09"},{label:"\u25CF \u8FD4\u56DE",value:"back"}],"toggle","Enter \u9009\u62E9\uFF0CESC \u53D6\u6D88");}catch(i){i?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",i?.message);return}if(o!=="back"){if(o==="toggle"){let i=await s.promptSelect("\u662F\u5426\u542F\u7528\u8BB0\u5FC6\u6458\u8981",[{label:"\u5F00\u542F",value:"on"},{label:"\u5173\u95ED",value:"off"}],t?"on":"off");wl(s,{summarizerEnabled:i==="on"}),s.logInfo("\u8BB0\u5FC6\u6458\u8981\u5DF2\u66F4\u65B0",i==="on"?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED");return}if(o==="model"){let i;try{i=await eU(s,n);}catch(c){c?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",c?.message);return}let{model:a,existsInConfig:l}=i;if(a==="__cancel__")return;if(a==="__default__"){wl(s,{summarizerModel:void 0}),s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u66F4\u65B0","\u4F7F\u7528\u9ED8\u8BA4\u6A21\u578B");return}if(wl(s,{summarizerModel:a}),!l){s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u8BBE\u7F6E",`\u6A21\u578B "${a}" \u672A\u5728 provider \u914D\u7F6E\u4E2D\u627E\u5230\uFF0C\u53EF\u80FD\u65E0\u6CD5\u751F\u6548`);return}s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u8BBE\u7F6E",a);return}if(o==="provider"){let i;try{i=await tU(s,r);}catch(a){a?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",a?.message);return}if(!i)return;if(i==="__auto__"){wl(s,{summarizerProviderId:void 0}),s.logInfo("\u6458\u8981 Provider \u5DF2\u66F4\u65B0","\u81EA\u52A8\u9009\u62E9");return}wl(s,{summarizerProviderId:i}),s.logInfo("\u6458\u8981 Provider \u5DF2\u8BBE\u7F6E",i);}}}async function eU(s,e){let t=new nt(s.userConfig),n=new Set;for(let l of t.getProviders())for(let c of l.models??[])c?.name&&n.add(c.name);let r=["claude-haiku-4-5-20251001","claude-haiku","gpt-4o-mini","gpt-4.1-mini","gpt-4o","gemini-1.5-flash","gemini-2.0-flash"],o=Array.from(new Set([...r,...n])),i=[{label:"\u9ED8\u8BA4\uFF08\u81EA\u52A8\u9009\u62E9\uFF09",value:"__default__",description:"\u4F7F\u7528\u9ED8\u8BA4\u6458\u8981\u6A21\u578B"},...o.map(l=>({label:l,value:l,description:n.has(l)?void 0:"\u672A\u5728 provider \u914D\u7F6E\u4E2D\u627E\u5230"})),{label:"\u81EA\u5B9A\u4E49\u6A21\u578B",value:"__custom__",description:"\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0"}],a=await s.promptSelect("\u9009\u62E9\u6458\u8981\u6A21\u578B",i,e||"__default__");if(a==="__custom__"){let c=(await s.promptText("\u8F93\u5165\u6A21\u578B\u540D\u79F0",{allowEmpty:false})).trim();return {model:c||"__cancel__",existsInConfig:n.has(c)}}return {model:a||"__cancel__",existsInConfig:n.has(a)}}async function tU(s,e){let n=new nt(s.userConfig).getProviders();if(n.length===0)return s.logInfo("\u672A\u914D\u7F6E Provider","\u8BF7\u5148\u901A\u8FC7 /provider \u6DFB\u52A0"),null;let r=[{label:"\u81EA\u52A8\u9009\u62E9",value:"__auto__",description:"\u6839\u636E\u6A21\u578B\u81EA\u52A8\u5339\u914D"},...n.map(i=>({label:i.id,value:i.id,description:i.name}))];return await s.promptSelect("\u9009\u62E9\u6458\u8981 Provider",r,e||"__auto__")}function wl(s,e){let t={...s.userConfig.memory??{}};"summarizerEnabled"in e&&(t.summarizerEnabled=e.summarizerEnabled),"summarizerModel"in e&&(e.summarizerModel?t.summarizerModel=e.summarizerModel:delete t.summarizerModel),"summarizerProviderId"in e&&(e.summarizerProviderId?t.summarizerProviderId=e.summarizerProviderId:delete t.summarizerProviderId);let n={...s.userConfig,memory:t};s.updateConfig(n),Me(n);}async function nU(s){let e=await s.actionLog.getMemoryStats(),t=oU(e);tb(s,t);}async function rU(s){let e=await s.actionLog.getMemoryStats(),t=iU(e);tb(s,t);}async function sU(s){let e=await s.actionLog.getMemoryInjectionSummary({language:s.userConfig.language??"zh",includePersistent:true,includeLastRun:true}),t=[];t.push(""),t.push(w.highlight(" \u8BB0\u5FC6\u6CE8\u5165\u9884\u89C8")),t.push(""),e?e.split(`
|
|
3912
|
-
`).forEach(n=>{t.push(w.info(` ${n}`));}):t.push(w.dim(" (\u65E0\u53EF\u7528\u8BB0\u5FC6)")),t.push(""),tb(s,t);}function oU(s){let e=o=>o.toLocaleString("en-US"),t=o=>{if(o<1024)return `${o} B`;let i=o/1024;if(i<1024)return `${i.toFixed(1)} KB`;let a=i/1024;return a<1024?`${a.toFixed(2)} MB`:`${(a/1024).toFixed(2)} GB`},n=s.longTerm.total,r=[];return r.push(""),r.push(w.highlight(" \u8BB0\u5FC6\u7EDF\u8BA1")),r.push(""),r.push(w.dim(" \u77ED\u671F (recent): ")+w.info(`${e(s.shortTerm.count)} \u6761, ${t(s.shortTerm.sizeBytes)}`)),r.push(w.dim(" \u4E2D\u671F (session): ")+w.info(`${e(s.session.count)} \u6761, ${t(s.session.sizeBytes)}`)),r.push(w.dim(" \u957F\u671F (progress/standard/lesson): ")+w.info(`${e(n.count)} \u6761, ${t(n.sizeBytes)}`)),r.push(w.dim(" - progress: ")+w.info(`${e(s.longTerm.progress.count)} \u6761, ${t(s.longTerm.progress.sizeBytes)}`)),r.push(w.dim(" - standard: ")+w.info(`${e(s.longTerm.standard.count)} \u6761, ${t(s.longTerm.standard.sizeBytes)}`)),r.push(w.dim(" - lesson: ")+w.info(`${e(s.longTerm.lesson.count)} \u6761, ${t(s.longTerm.lesson.sizeBytes)}`)),r.push(w.dim(" \u6C38\u4E45 (pinned): ")+w.info(`${e(s.pinned.count)} \u6761, ${t(s.pinned.sizeBytes)}`)),r.push(""),r.push(w.dim(" \u603B\u8BA1: ")+w.info(`${e(s.totals.count)} \u6761, ${t(s.totals.sizeBytes)}`)),r.push(""),r}function iU(s){let e=[];return e.push(""),e.push(w.highlight(" \u8BB0\u5FC6\u8DEF\u5F84")),e.push(""),s.shortTerm.path&&e.push(w.dim(" \u77ED\u671F: ")+w.info(s.shortTerm.path)),s.session.path&&e.push(w.dim(" \u4E2D\u671F: ")+w.info(s.session.path)),s.longTerm.progress.path&&e.push(w.dim(" \u8FDB\u5EA6: ")+w.info(s.longTerm.progress.path)),s.longTerm.standard.path&&e.push(w.dim(" \u89C4\u8303: ")+w.info(s.longTerm.standard.path)),s.longTerm.lesson.path&&e.push(w.dim(" \u6559\u8BAD: ")+w.info(s.longTerm.lesson.path)),s.pinned.path&&e.push(w.dim(" \u6C38\u4E45: ")+w.info(s.pinned.path)),e.push(""),e}function tb(s,e){if(s.uiController){let t=s.uiController;if(typeof t.setCommandOutputLines=="function"){t.setCommandOutputLines(e);return}if(typeof t.printCommandOutput=="function"){for(let n of e)t.printCommandOutput(n);return}}for(let t of e)Q(t);}wt();qr();var tI="0.0.0.0",nI=4399;async function cU(s){try{let{renderUnicodeCompact:e}=await import('uqr');return {qr:e(s,{ecc:"M",border:1})}}catch(e){return {qr:null,error:e instanceof Error?e.message:String(e)}}}async function uU(s){try{let e=await import('qrcode'),t=e.default??e;if(!t||typeof t.toFile!="function")return {filePath:null,error:"QRCode module missing or invalid."};let n=Date.now(),r=join(tmpdir(),`neox-qr-${n}.png`);await t.toFile(r,s,{type:"png",errorCorrectionLevel:"H",margin:4,scale:10,color:{dark:"#000000",light:"#FFFFFF"}});let{exec:o}=await import('child_process'),{promisify:i}=await import('util'),a=i(o),l=process.platform,c;return l==="darwin"?c=`open "${r}"`:l==="win32"?c=`start "" "${r}"`:ht()?c=`explorer.exe "${
|
|
3911
|
+
`));}async function z_(s){try{let e=await s.promptInput(`${G().pricing.modelPattern} (${G().pricing.modelPatternHint})`,"");if(!e.trim())return;let t=await s.promptInput(G().pricing.inputPrice,""),n=parseFloat(t);if(isNaN(n)||n<0){s.logInfo(G().pricing.invalidNumber);return}let r=await s.promptInput(G().pricing.outputPrice,""),o=parseFloat(r);if(isNaN(o)||o<0){s.logInfo(G().pricing.invalidNumber);return}let i=await s.promptInput(G().pricing.cachedPrice+" "+G().pricing.cachedPriceHint,""),a;if(i.trim()&&(a=parseFloat(i),isNaN(a)||a<0)){s.logInfo(G().pricing.invalidNumber);return}let l=pp(s.userConfig),c={pattern:e.trim(),inputPrice:n,outputPrice:o,cachedInputPrice:a,currency:"USD"},u=l.findIndex(m=>m.pattern===e.trim());u>=0?l[u]=c:l.push(c);let d={...s.userConfig,modelPricing:l};s.updateConfig(d),Me(d),s.logInfo(G().pricing.pricingAdded,K_(c));}catch(e){e?.message!=="cancelled"&&s.logInfo("Error",e?.message);}}async function H_(s){let e=pp(s.userConfig);if(e.length===0){s.logInfo(G().pricing.noPricing,G().pricing.noPricingHint);return}try{let t=e.map(m=>({label:m.pattern,value:m.pattern,description:`in: $${m.inputPrice} / out: $${m.outputPrice}`}));t.push({label:G().pricing.back,value:"__back__"});let n=await s.promptSelect(G().pricing.selectToEdit,t);if(n==="__back__")return;let r=e.find(m=>m.pattern===n);if(!r)return;let o=await s.promptInput(G().pricing.inputPrice,r.inputPrice.toString()),i=parseFloat(o);if(isNaN(i)||i<0){s.logInfo(G().pricing.invalidNumber);return}let a=await s.promptInput(G().pricing.outputPrice,r.outputPrice.toString()),l=parseFloat(a);if(isNaN(l)||l<0){s.logInfo(G().pricing.invalidNumber);return}let c=await s.promptInput(G().pricing.cachedPrice,r.cachedInputPrice?.toString()||""),u;if(c.trim()&&(u=parseFloat(c),isNaN(u)||u<0)){s.logInfo(G().pricing.invalidNumber);return}r.inputPrice=i,r.outputPrice=l,r.cachedInputPrice=u;let d={...s.userConfig,modelPricing:e};s.updateConfig(d),Me(d),s.logInfo(G().pricing.pricingUpdated,K_(r));}catch(t){t?.message!=="cancelled"&&s.logInfo("Error",t?.message);}}async function q_(s){let e=pp(s.userConfig);if(e.length===0){s.logInfo(G().pricing.noPricing);return}try{let t=e.map(a=>({label:a.pattern,value:a.pattern,description:`in: $${a.inputPrice} / out: $${a.outputPrice}`}));t.push({label:G().pricing.back,value:"__back__"});let n=await s.promptSelect(G().pricing.selectToDelete,t);if(n==="__back__"||await s.promptSelect(G().pricing.confirmDelete,[{label:G().common.yes,value:"yes"},{label:G().common.no,value:"no"}],"no")!=="yes")return;let o=e.filter(a=>a.pattern!==n),i={...s.userConfig,modelPricing:o};s.updateConfig(i),Me(i),s.logInfo(G().pricing.pricingDeleted,n);}catch(t){t?.message!=="cancelled"&&s.logInfo("Error",t?.message);}}async function J_(s,e){if(e)switch(e.toLowerCase()){case "view":case "list":await W_(s);return;case "add":await z_(s);return;case "edit":await H_(s);return;case "delete":case "remove":await q_(s);return}try{let t=await s.promptSelect(G().pricing.title,[{label:G().pricing.viewPricing,value:"view",description:G().pricing.viewPricingDesc},{label:G().pricing.addPricing,value:"add",description:G().pricing.addPricingDesc},{label:G().pricing.editPricing,value:"edit",description:G().pricing.editPricingDesc},{label:G().pricing.deletePricing,value:"delete",description:G().pricing.deletePricingDesc},{label:G().pricing.back,value:"back"}],"view",G().pricing.hint);if(t==="back")return;switch(t){case "view":await W_(s);break;case "add":await z_(s);break;case "edit":await H_(s);break;case "delete":await q_(s);break}}catch(t){t?.message!=="cancelled"&&s.logInfo("Selection cancelled",t?.message);}}function V_(s,e){let t=s.modelPricing||[],n=t.find(r=>r.pattern===e);if(n)return n;for(let r of t)if(r.pattern.includes("*")&&new RegExp("^"+r.pattern.replace(/\*/g,".*")+"$").test(e))return r;return null}function Y_(s,e,t,n){let r=e/1e6*s.inputPrice,o=t/1e6*s.outputPrice,i=0;return n&&s.cachedInputPrice!==void 0&&(i=n/1e6*s.cachedInputPrice),r+o+i}function It(s){return s>=1e6?(s/1e6).toFixed(1)+"M":s>=1e3?(s/1e3).toFixed(1)+"K":s.toString()}function vs(s,e){s.outputLines?s.outputLines(e):e.forEach(t=>Q(t));}function Z_(s){let e=new Date(s),n=new Date().getTime()-s;return n<6e4?xn()?"\u521A\u521A":"just now":n<36e5?xn()?`${Math.floor(n/6e4)} \u5206\u949F\u524D`:`${Math.floor(n/6e4)}m ago`:n<864e5?xn()?`${Math.floor(n/36e5)} \u5C0F\u65F6\u524D`:`${Math.floor(n/36e5)}h ago`:n<6048e5?xn()?`${Math.floor(n/864e5)} \u5929\u524D`:`${Math.floor(n/864e5)}d ago`:e.toLocaleString(xn()?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}async function XF(s){let e={totalCost:0,modelCount:0,unmatchedModels:[]};try{let t=await rn.getProviderStats(),n=new Set,r=new Set;for(let o of t){let i=await rn.getProviderRecords(o.provider),a=new Map;for(let l of i){let c=a.get(l.model)||{input:0,output:0,cached:0};c.input+=l.inputTokens,c.output+=l.outputTokens,c.cached+=l.cachedTokens||0,a.set(l.model,c);}for(let[l,c]of a){let u=V_(s,l);if(u){let d=Y_(u,c.input,c.output,c.cached);e.totalCost+=d,n.has(l)||(n.add(l),e.modelCount++);}else n.has(l)||(n.add(l),r.add(l));}}e.unmatchedModels=Array.from(r);}catch{}return e}async function X_(s){try{s.clearOutputLines&&s.clearOutputLines();let e=await rn.getSummary();if(e.totalRequests===0){s.logInfo("\u6682\u65E0\u4F7F\u7528\u8BB0\u5F55");return}let t=[];if(t.push(""),t.push(w.highlight("\u{1F4CA} Token \u4F7F\u7528\u7EDF\u8BA1\u603B\u89C8")),t.push(""),t.push(w.primary(" \u603B\u8BF7\u6C42\u6570: ")+w.success(It(e.totalRequests)+" \u6B21")),t.push(w.primary(" \u603B Tokens: ")+w.success(It(e.totalTokens))),t.push(w.primary(" Input: ")+w.dim(It(e.totalInputTokens))),t.push(w.primary(" Output: ")+w.dim(It(e.totalOutputTokens))),e.totalCachedTokens>0){t.push(""),t.push(w.highlight(" \u7F13\u5B58\u7EDF\u8BA1:"));let r=(e.cacheHitRate*100).toFixed(1);t.push(w.primary(" \u603B\u7F13\u5B58\u547D\u4E2D: ")+w.success(It(e.totalCachedTokens))+w.dim(` (${r}% \u547D\u4E2D\u7387)`)),e.totalOpenaiCachedTokens>0&&t.push(w.primary(" OpenAI \u7F13\u5B58: ")+w.dim(It(e.totalOpenaiCachedTokens))+w.success(" (50% \u8282\u7701)")),e.totalAnthropicCacheReadTokens>0&&t.push(w.primary(" Claude Read: ")+w.dim(It(e.totalAnthropicCacheReadTokens))+w.success(" (90% \u8282\u7701)")),e.totalAnthropicCacheCreationTokens>0&&t.push(w.primary(" Claude Write: ")+w.dim(It(e.totalAnthropicCacheCreationTokens))+w.warning(" (+25% \u6210\u672C)"));}if(t.push(""),t.push(w.primary(" Provider \u6570: ")+w.dim(e.providerCount.toString())),t.push(w.primary(" \u6700\u540E\u8BF7\u6C42: ")+w.dim(Z_(e.lastRequestTime))),s.userConfig?.modelPricing&&s.userConfig.modelPricing.length>0){let r=await XF(s.userConfig);r.totalCost>0&&(t.push(""),t.push(w.highlight(xn()?" \u{1F4B0} \u8D39\u7528\u7EDF\u8BA1:":" \u{1F4B0} Cost Summary:")),t.push(w.primary(xn()?" \u9884\u4F30\u603B\u8D39\u7528: ":" Estimated: ")+w.success(`$${r.totalCost.toFixed(4)}`)),r.modelCount>0&&t.push(w.dim(xn()?` (${r.modelCount} \u4E2A\u6A21\u578B\u6709\u5B9A\u4EF7\u914D\u7F6E)`:` (${r.modelCount} models with pricing)`)),r.unmatchedModels.length>0&&r.unmatchedModels.length<=3?t.push(w.dim(xn()?` \u672A\u914D\u7F6E\u5B9A\u4EF7: ${r.unmatchedModels.join(", ")}`:` No pricing: ${r.unmatchedModels.join(", ")}`)):r.unmatchedModels.length>3&&t.push(w.dim(xn()?` \u672A\u914D\u7F6E\u5B9A\u4EF7: ${r.unmatchedModels.length} \u4E2A\u6A21\u578B`:` No pricing: ${r.unmatchedModels.length} models`)));}t.push(""),vs(s,t);let n=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",[{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u67E5\u770B\u5404\u4E2A Provider \u7684\u8BE6\u7EC6\u7EDF\u8BA1"},{label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"}],"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(n==="back"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}n==="providers"?await mp(s):n==="records"&&await Cl(s);}catch(e){s.clearOutputLines&&s.clearOutputLines(),e.message!=="cancelled"&&e.message!=="User cancelled"&&vs(s,[w.error("\u52A0\u8F7D\u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}function QF(s){let e=[];e.push(w.success("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")),e.push(w.primary(`${s.provider}`)+w.dim(` (${s.totalRequests} \u6B21\u8BF7\u6C42)`)),e.push(""),e.push(w.dim("Input: ")+w.primary(It(s.totalInputTokens).padEnd(8))+w.dim("Output: ")+w.success(It(s.totalOutputTokens).padEnd(8))+w.dim("Total: ")+w.warning(It(s.totalTokens))),s.totalCachedTokens>0&&(e.push(""),s.totalOpenaiCachedTokens>0&&e.push(w.dim("OpenAI \u7F13\u5B58: ")+w.code(It(s.totalOpenaiCachedTokens))+w.success(" (50% \u8282\u7701)")),s.totalAnthropicCacheReadTokens>0&&e.push(w.dim("Claude Read: ")+w.info(It(s.totalAnthropicCacheReadTokens))+w.success(" (90% \u8282\u7701)")),s.totalAnthropicCacheCreationTokens>0&&e.push(w.dim("Claude Write: ")+w.code(It(s.totalAnthropicCacheCreationTokens))+w.warning(" (+25% \u6210\u672C)")));let t=s.totalRequests>0?(s.successRequests/s.totalRequests*100).toFixed(1):"0";e.push(""),e.push(w.dim("\u6210\u529F\u7387: ")+w.success(t+"%")+w.dim(" \u5E73\u5747\u8017\u65F6: ")+w.warning(s.avgDuration+"ms"));let n=Object.entries(s.models);if(n.length>0){e.push(""),e.push(w.dim("\u6A21\u578B\u5206\u5E03:"));for(let[r,o]of n.slice(0,3)){let i=r.length>30?r.slice(0,27)+"...":r;e.push(w.dim(` ${i.padEnd(30)} `)+w.primary(It(o.totalTokens).padEnd(8))+w.dim(` (${o.requests} \u6B21)`));}n.length>3&&e.push(w.dim(` ... \u8FD8\u6709 ${n.length-3} \u4E2A\u6A21\u578B`));}return e.push(""),e}async function mp(s){try{let e=await rn.getProviderStats();if(e.length===0){s.logInfo("\u6682\u65E0 Provider \u7EDF\u8BA1");return}let t=2,n=Math.ceil(e.length/t),r=0;for(;;){s.clearOutputLines&&s.clearOutputLines();let o=r*t,i=Math.min(o+t,e.length),a=e.slice(o,i),l=[];l.push(""),l.push(w.highlight("\u{1F4C8} Provider \u7EDF\u8BA1")+w.dim(` (\u7B2C ${r+1}/${n} \u9875)`)),l.push("");for(let d of a)l.push(...QF(d));l.push(w.success("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")),l.push(""),vs(s,l);let c=[];r>0&&c.push({label:"\u2190 \u4E0A\u4E00\u9875",value:"prev",description:`\u67E5\u770B\u7B2C ${r} \u9875`}),r<n-1&&c.push({label:"\u2192 \u4E0B\u4E00\u9875",value:"next",description:`\u67E5\u770B\u7B2C ${r+2} \u9875`}),c.push({label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"}),c.push({label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"});let u=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",c,"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(u==="prev"){r--;continue}else if(u==="next"){r++;continue}if(u==="back"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}if(u==="records"){await Cl(s);return}}}catch(e){s.clearOutputLines&&s.clearOutputLines(),e.message!=="cancelled"&&e.message!=="User cancelled"&&vs(s,[w.error("\u52A0\u8F7D Provider \u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}async function Cl(s){try{s.clearOutputLines&&s.clearOutputLines();let e=await rn.getProviderStats();if(e.length===0){s.logInfo("\u6682\u65E0 Provider \u7EDF\u8BA1");return}let t=e.map(i=>({label:i.provider,value:i.provider,description:`${i.totalRequests} \u6B21\u8BF7\u6C42, ${It(i.totalTokens)} tokens`}));t.push({label:"\u2190 \u8FD4\u56DE",value:"__back__",description:"\u8FD4\u56DE\u4E3B\u83DC\u5355"});let n=await s.promptSelect("\u9009\u62E9 Provider \u67E5\u770B\u8BE6\u7EC6\u8BB0\u5F55",t,e[0].provider,"\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");if(n==="__back__"){s.clearOutputLines&&s.clearOutputLines(),await Si(s);return}s.clearOutputLines&&s.clearOutputLines();let r=await rn.getProviderRecords(n,50);if(r.length===0){s.logInfo("\u8BE5 Provider \u6682\u65E0\u8BB0\u5F55");return}let o=[];o.push(""),o.push(w.highlight(`\u{1F4DD} ${n} - \u6700\u8FD1 ${r.length} \u6761\u8BB0\u5F55`)),o.push(""),o.push(w.dim(" \u7C7B\u578B ")+w.dim("\u6A21\u578B ")+w.dim("Input ")+w.dim("Output ")+w.dim("Cache ")+w.dim("\u8017\u65F6 ")+w.dim("\u72B6\u6001 ")+w.dim("\u65F6\u95F4")),o.push(w.dim(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));for(let i of r){let a=i.requestType==="health-check"?"\u6D4B\u8BD5":"\u5BF9\u8BDD",l=i.model.length>14?i.model.slice(0,11)+"...":i.model,c=It(i.inputTokens).padEnd(7),u=It(i.outputTokens).padEnd(7),d=i.cachedTokens?It(i.cachedTokens).padEnd(7):"-".padEnd(7),m=(i.duration+"ms").padEnd(7),g=i.success?w.success("\u2713"):w.error("\u2717"),h=Z_(i.timestamp);o.push(w.dim(" "+a.padEnd(8))+w.primary(l.padEnd(16))+w.dim(c)+w.success(u)+w.code(d)+w.warning(m)+g+" "+w.dim(h));}o.push(""),vs(s,o);try{let i=await s.promptSelect("\u7EE7\u7EED\u67E5\u770B",[{label:"\u2190 \u8FD4\u56DE\u4E3B\u83DC\u5355",value:"back",description:"\u8FD4\u56DE\u7EDF\u8BA1\u4E3B\u83DC\u5355"},{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u8FD4\u56DE Provider \u7EDF\u8BA1\u5217\u8868"},{label:"\u25CF \u67E5\u770B\u5176\u4ED6 Provider",value:"other",description:"\u67E5\u770B\u5176\u4ED6 Provider \u7684\u8BE6\u7EC6\u8BB0\u5F55"}],"back","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u8FD4\u56DE");s.clearOutputLines&&s.clearOutputLines(),i==="other"?await Cl(s):i==="providers"?await mp(s):i==="back"&&await Si(s);}catch{s.clearOutputLines&&s.clearOutputLines();}}catch(e){e.message==="cancelled"||e.message==="User cancelled"?s.clearOutputLines&&s.clearOutputLines():s.logInfo("\u52A0\u8F7D\u8BE6\u7EC6\u8BB0\u5F55\u5931\u8D25",e.message);}}async function Q_(s){try{let e=await rn.getProviderStats(),t=[{label:"\u6E05\u9664\u6240\u6709\u7EDF\u8BA1",value:"all",description:"\u26A0\uFE0F \u6E05\u9664\u6240\u6709 Provider \u7684\u7EDF\u8BA1\u6570\u636E"}];if(e.length>0)for(let r of e)t.push({label:`\u6E05\u9664 ${r.provider}`,value:r.provider,description:`\u6E05\u9664\u8BE5 Provider \u7684 ${r.totalRequests} \u6761\u8BB0\u5F55`});t.push({label:"\u53D6\u6D88",value:"cancel",description:"\u8FD4\u56DE\u4E0A\u4E00\u7EA7"});let n=await s.promptSelect("\u6E05\u9664\u7EDF\u8BA1\u6570\u636E",t,"cancel","\u26A0\uFE0F \u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D");if(n==="cancel")return;n==="all"?(await rn.clearAll(),s.logInfo("\u5DF2\u6E05\u9664\u6240\u6709\u7EDF\u8BA1\u6570\u636E")):(await rn.clearProvider(n),s.logInfo(`\u5DF2\u6E05\u9664 ${n} \u7684\u7EDF\u8BA1\u6570\u636E`));}catch(e){vs(s,[w.error("\u6E05\u9664\u7EDF\u8BA1\u5931\u8D25: "+e.message)]);}}async function Si(s,e){if(e)switch(e){case "summary":await X_(s);return;case "providers":await mp(s);return;case "records":await Cl(s);return;case "clear":await Q_(s);return;default:vs(s,[w.error(`\u672A\u77E5\u64CD\u4F5C: ${e}`),w.dim("\u53EF\u7528\u64CD\u4F5C: summary, providers, records, clear")]);return}try{let t=await s.promptSelect("Token \u4F7F\u7528\u7EDF\u8BA1",[{label:"\u25CF \u67E5\u770B\u603B\u89C8",value:"summary",description:"\u663E\u793A\u6574\u4F53 Token \u4F7F\u7528\u7EDF\u8BA1"},{label:"\u25CF Provider \u7EDF\u8BA1",value:"providers",description:"\u67E5\u770B\u5404\u4E2A Provider \u7684\u8BE6\u7EC6\u7EDF\u8BA1"},{label:"\u25CF \u8BE6\u7EC6\u8BB0\u5F55",value:"records",description:"\u67E5\u770B\u6307\u5B9A Provider \u7684\u8BF7\u6C42\u8BB0\u5F55"},{label:"\u25CF \u6E05\u9664\u7EDF\u8BA1",value:"clear",description:"\u6E05\u9664\u7EDF\u8BA1\u6570\u636E"},{label:"\u2190 \u8FD4\u56DE",value:"back",description:"\u8FD4\u56DE\u4E0A\u4E00\u7EA7"}],"summary","\u4E0A\u4E0B\u952E\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF0CESC \u9000\u51FA");if(t==="back")return;switch(t){case "summary":await X_(s);break;case "providers":await mp(s);break;case "records":await Cl(s);break;case "clear":await Q_(s);break}}catch(t){t.message!=="User cancelled"&&t.message!=="cancelled"&&vs(s,[w.error("\u7EDF\u8BA1\u547D\u4EE4\u5931\u8D25: "+t.message)]);}}Xt();Tn();wt();cr();async function eI(s,e){let t=e?.toLowerCase();if(!t)try{t=await s.promptSelect("\u8BB0\u5FC6\u7CFB\u7EDF",[{label:"\u25CF \u67E5\u770B\u8BB0\u5FC6\u7EDF\u8BA1",value:"show",description:"\u77ED\u671F/\u4E2D\u671F/\u957F\u671F/\u6C38\u4E45 \u6761\u6570\u4E0E\u5927\u5C0F"},{label:"\u25CF \u67E5\u770B\u8DEF\u5F84",value:"paths",description:"\u663E\u793A\u8BB0\u5FC6\u6587\u4EF6\u8DEF\u5F84"},{label:"\u25CF \u914D\u7F6E\u6458\u8981\u6A21\u578B",value:"config",description:"\u5F00\u5173\u8BB0\u5FC6\u6458\u8981\u4E0E\u9009\u62E9\u6A21\u578B"},{label:"\u25CF \u8C03\u8BD5\u6CE8\u5165\u5185\u5BB9",value:"debug",description:"\u663E\u793A\u5F53\u524D\u4F1A\u6CE8\u5165\u7684\u8BB0\u5FC6\u6458\u8981"}],"show","\u6309 \u2191\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CESC \u53D6\u6D88");}catch(n){n?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",n?.message);return}switch(t){case "show":case "stats":await nU(s);break;case "paths":await rU(s);break;case "config":case "configure":await ZF(s);break;case "debug":await sU(s);break;default:s.logInfo("\u65E0\u6548\u7684\u64CD\u4F5C","\u4F7F\u7528 /memory \u67E5\u770B\u53EF\u7528\u64CD\u4F5C");}}async function ZF(s){let e=s.userConfig.memory??{},t=e.summarizerEnabled??true,n=e.summarizerModel??"",r=e.summarizerProviderId??"",o;try{o=await s.promptSelect("\u8BB0\u5FC6\u6458\u8981\u8BBE\u7F6E",[{label:`\u25CF \u6458\u8981\u5F00\u5173: ${t?"\u5F00\u542F":"\u5173\u95ED"}`,value:"toggle",description:"\u63A7\u5236\u81EA\u52A8\u8BB0\u5FC6\u6458\u8981"},{label:`\u25CF \u6458\u8981\u6A21\u578B: ${n||"\u9ED8\u8BA4"}`,value:"model",description:"\u9009\u62E9\u6458\u8981\u6A21\u578B\uFF08\u5982 haiku/gpt\uFF09"},{label:`\u25CF \u6458\u8981 Provider: ${r||"\u81EA\u52A8"}`,value:"provider",description:"\u6307\u5B9A\u6458\u8981\u4F7F\u7528\u7684 Provider\uFF08\u53EF\u9009\uFF09"},{label:"\u25CF \u8FD4\u56DE",value:"back"}],"toggle","Enter \u9009\u62E9\uFF0CESC \u53D6\u6D88");}catch(i){i?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",i?.message);return}if(o!=="back"){if(o==="toggle"){let i=await s.promptSelect("\u662F\u5426\u542F\u7528\u8BB0\u5FC6\u6458\u8981",[{label:"\u5F00\u542F",value:"on"},{label:"\u5173\u95ED",value:"off"}],t?"on":"off");wl(s,{summarizerEnabled:i==="on"}),s.logInfo("\u8BB0\u5FC6\u6458\u8981\u5DF2\u66F4\u65B0",i==="on"?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED");return}if(o==="model"){let i;try{i=await eU(s,n);}catch(c){c?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",c?.message);return}let{model:a,existsInConfig:l}=i;if(a==="__cancel__")return;if(a==="__default__"){wl(s,{summarizerModel:void 0}),s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u66F4\u65B0","\u4F7F\u7528\u9ED8\u8BA4\u6A21\u578B");return}if(wl(s,{summarizerModel:a}),!l){s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u8BBE\u7F6E",`\u6A21\u578B "${a}" \u672A\u5728 provider \u914D\u7F6E\u4E2D\u627E\u5230\uFF0C\u53EF\u80FD\u65E0\u6CD5\u751F\u6548`);return}s.logInfo("\u6458\u8981\u6A21\u578B\u5DF2\u8BBE\u7F6E",a);return}if(o==="provider"){let i;try{i=await tU(s,r);}catch(a){a?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",a?.message);return}if(!i)return;if(i==="__auto__"){wl(s,{summarizerProviderId:void 0}),s.logInfo("\u6458\u8981 Provider \u5DF2\u66F4\u65B0","\u81EA\u52A8\u9009\u62E9");return}wl(s,{summarizerProviderId:i}),s.logInfo("\u6458\u8981 Provider \u5DF2\u8BBE\u7F6E",i);}}}async function eU(s,e){let t=new nt(s.userConfig),n=new Set;for(let l of t.getProviders())for(let c of l.models??[])c?.name&&n.add(c.name);let r=["claude-haiku-4-5-20251001","claude-haiku","gpt-4o-mini","gpt-4.1-mini","gpt-4o","gemini-1.5-flash","gemini-2.0-flash"],o=Array.from(new Set([...r,...n])),i=[{label:"\u9ED8\u8BA4\uFF08\u81EA\u52A8\u9009\u62E9\uFF09",value:"__default__",description:"\u4F7F\u7528\u9ED8\u8BA4\u6458\u8981\u6A21\u578B"},...o.map(l=>({label:l,value:l,description:n.has(l)?void 0:"\u672A\u5728 provider \u914D\u7F6E\u4E2D\u627E\u5230"})),{label:"\u81EA\u5B9A\u4E49\u6A21\u578B",value:"__custom__",description:"\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u578B\u540D\u79F0"}],a=await s.promptSelect("\u9009\u62E9\u6458\u8981\u6A21\u578B",i,e||"__default__");if(a==="__custom__"){let c=(await s.promptText("\u8F93\u5165\u6A21\u578B\u540D\u79F0",{allowEmpty:false})).trim();return {model:c||"__cancel__",existsInConfig:n.has(c)}}return {model:a||"__cancel__",existsInConfig:n.has(a)}}async function tU(s,e){let n=new nt(s.userConfig).getProviders();if(n.length===0)return s.logInfo("\u672A\u914D\u7F6E Provider","\u8BF7\u5148\u901A\u8FC7 /provider \u6DFB\u52A0"),null;let r=[{label:"\u81EA\u52A8\u9009\u62E9",value:"__auto__",description:"\u6839\u636E\u6A21\u578B\u81EA\u52A8\u5339\u914D"},...n.map(i=>({label:i.id,value:i.id,description:i.name}))];return await s.promptSelect("\u9009\u62E9\u6458\u8981 Provider",r,e||"__auto__")}function wl(s,e){let t={...s.userConfig.memory??{}};"summarizerEnabled"in e&&(t.summarizerEnabled=e.summarizerEnabled),"summarizerModel"in e&&(e.summarizerModel?t.summarizerModel=e.summarizerModel:delete t.summarizerModel),"summarizerProviderId"in e&&(e.summarizerProviderId?t.summarizerProviderId=e.summarizerProviderId:delete t.summarizerProviderId);let n={...s.userConfig,memory:t};s.updateConfig(n),Me(n);}async function nU(s){let e=await s.actionLog.getMemoryStats(),t=oU(e);tb(s,t);}async function rU(s){let e=await s.actionLog.getMemoryStats(),t=iU(e);tb(s,t);}async function sU(s){let e=await s.actionLog.getMemoryInjectionSummary({language:s.userConfig.language??"zh",includePersistent:true,includeLastRun:true}),t=[];t.push(""),t.push(w.highlight(" \u8BB0\u5FC6\u6CE8\u5165\u9884\u89C8")),t.push(""),e?e.split(`
|
|
3912
|
+
`).forEach(n=>{t.push(w.info(` ${n}`));}):t.push(w.dim(" (\u65E0\u53EF\u7528\u8BB0\u5FC6)")),t.push(""),tb(s,t);}function oU(s){let e=o=>o.toLocaleString("en-US"),t=o=>{if(o<1024)return `${o} B`;let i=o/1024;if(i<1024)return `${i.toFixed(1)} KB`;let a=i/1024;return a<1024?`${a.toFixed(2)} MB`:`${(a/1024).toFixed(2)} GB`},n=s.longTerm.total,r=[];return r.push(""),r.push(w.highlight(" \u8BB0\u5FC6\u7EDF\u8BA1")),r.push(""),r.push(w.dim(" \u77ED\u671F (recent): ")+w.info(`${e(s.shortTerm.count)} \u6761, ${t(s.shortTerm.sizeBytes)}`)),r.push(w.dim(" \u4E2D\u671F (session): ")+w.info(`${e(s.session.count)} \u6761, ${t(s.session.sizeBytes)}`)),r.push(w.dim(" \u957F\u671F (progress/standard/lesson): ")+w.info(`${e(n.count)} \u6761, ${t(n.sizeBytes)}`)),r.push(w.dim(" - progress: ")+w.info(`${e(s.longTerm.progress.count)} \u6761, ${t(s.longTerm.progress.sizeBytes)}`)),r.push(w.dim(" - standard: ")+w.info(`${e(s.longTerm.standard.count)} \u6761, ${t(s.longTerm.standard.sizeBytes)}`)),r.push(w.dim(" - lesson: ")+w.info(`${e(s.longTerm.lesson.count)} \u6761, ${t(s.longTerm.lesson.sizeBytes)}`)),r.push(w.dim(" \u6C38\u4E45 (pinned): ")+w.info(`${e(s.pinned.count)} \u6761, ${t(s.pinned.sizeBytes)}`)),r.push(""),r.push(w.dim(" \u603B\u8BA1: ")+w.info(`${e(s.totals.count)} \u6761, ${t(s.totals.sizeBytes)}`)),r.push(""),r}function iU(s){let e=[];return e.push(""),e.push(w.highlight(" \u8BB0\u5FC6\u8DEF\u5F84")),e.push(""),s.shortTerm.path&&e.push(w.dim(" \u77ED\u671F: ")+w.info(s.shortTerm.path)),s.session.path&&e.push(w.dim(" \u4E2D\u671F: ")+w.info(s.session.path)),s.longTerm.progress.path&&e.push(w.dim(" \u8FDB\u5EA6: ")+w.info(s.longTerm.progress.path)),s.longTerm.standard.path&&e.push(w.dim(" \u89C4\u8303: ")+w.info(s.longTerm.standard.path)),s.longTerm.lesson.path&&e.push(w.dim(" \u6559\u8BAD: ")+w.info(s.longTerm.lesson.path)),s.pinned.path&&e.push(w.dim(" \u6C38\u4E45: ")+w.info(s.pinned.path)),e.push(""),e}function tb(s,e){if(s.uiController){let t=s.uiController;if(typeof t.setCommandOutputLines=="function"){t.setCommandOutputLines(e);return}if(typeof t.printCommandOutput=="function"){for(let n of e)t.printCommandOutput(n);return}}for(let t of e)Q(t);}wt();qr();var tI="0.0.0.0",nI=4399;async function cU(s){try{let{renderUnicodeCompact:e}=await import('uqr');return {qr:e(s,{ecc:"M",border:1})}}catch(e){return {qr:null,error:e instanceof Error?e.message:String(e)}}}async function uU(s){try{let e=await import('qrcode'),t=e.default??e;if(!t||typeof t.toFile!="function")return {filePath:null,error:"QRCode module missing or invalid."};let n=Date.now(),r=join(tmpdir(),`neox-qr-${n}.png`);await t.toFile(r,s,{type:"png",errorCorrectionLevel:"H",margin:4,scale:10,color:{dark:"#000000",light:"#FFFFFF"}});let{exec:o}=await import('child_process'),{promisify:i}=await import('util'),a=i(o),l=process.platform,c;return l==="darwin"?c=`open "${r}"`:l==="win32"?c=`start "" "${r}"`:ht()?c=`explorer.exe "${Ss(r)}"`:c=`xdg-open "${r}"`,await a(c),{filePath:r}}catch(e){return {filePath:null,error:e instanceof Error?e.message:String(e)}}}function dU(s){let e=s.urls[0],t=e?new URL(e).hostname:s.host&&s.host!==tI?s.host:"127.0.0.1";return {payload:`neox://pair?${new URLSearchParams({mode:s.networkMode,host:t,port:String(s.port),token:s.token||""}).toString()}`,lanUrl:`http://${t}:${s.port}`}}function pU(s){return s.remote??{}}function rI(s){return s==="vps"?"vps":"lan"}async function sI(s,e){let t=s.getStatus(),n=s.userConfig.remoteServer,r=!!n?.url,o=e?.toLowerCase();if(!o)try{o=await s.promptSelect("\u8FDC\u7A0B\u8BBF\u95EE (Remote Access)",[{label:r?`\u25CF \u8FDC\u7A0B\u670D\u52A1\u5668: ${n.url}`:"\u25CF \u8FDE\u63A5\u8FDC\u7A0B\u670D\u52A1\u5668",value:"connect",description:r?"\u5DF2\u8FDE\u63A5\u8FDC\u7A0B Server\uFF0C\u70B9\u51FB\u7BA1\u7406":"\u8FDE\u63A5 Docker \u90E8\u7F72\u7684 Neox Server"},{label:`\u25CF \u5F00\u5173: ${t.enabled?"\u5F00\u542F":"\u5173\u95ED"}`,value:"toggle",description:"\u542F\u7528\u6216\u5173\u95ED\u8FDC\u7A0B\u8BBF\u95EE\uFF08\u672C\u673A\u4F5C\u4E3A Server\uFF09"},{label:`\u25CF \u7F51\u7EDC\u6A21\u5F0F: ${t.networkMode.toUpperCase()}`,value:"network",description:"LAN \u6216 VPS \u4E2D\u8F6C"},{label:`\u25CF \u7AEF\u53E3: ${t.port}`,value:"port",description:"\u672C\u5730\u670D\u52A1\u76D1\u542C\u7AEF\u53E3"},{label:"\u25CF \u663E\u793A\u4E8C\u7EF4\u7801",value:"qr",description:"\u624B\u673A\u626B\u7801\u5FEB\u901F\u914D\u5BF9"},{label:"\u25CF \u663E\u793A\u914D\u5BF9\u4FE1\u606F",value:"pair",description:"\u67E5\u770B\u8FDE\u63A5\u5730\u5740\u4E0E Token"},{label:"\u25CF \u91CD\u65B0\u751F\u6210 Token",value:"token",description:"\u66F4\u65B0\u914D\u5BF9 Token"},{label:"\u25CF \u8FD4\u56DE",value:"back"}],r?"connect":"toggle","\u6309 \u2191\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CESC \u53D6\u6D88");}catch(i){i?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",i?.message);return}if(o!=="back"){if(o==="connect"){await mU(s);return}if(o==="on"||o==="off"||o==="toggle"){let i=o==="on"?true:o==="off"?false:!t.enabled;if(nb(s,{enabled:i}),i){await s.startRemote();let a=s.getStatus(),l=[`\u6A21\u5F0F: ${a.networkMode.toUpperCase()}`,`\u5730\u5740: ${a.host}:${a.port}`,`Token: ${a.token||"(\u672A\u751F\u6210)"}`];if(a.urls.length>0){l.push("LAN \u5730\u5740:");for(let c of a.urls)l.push(`- ${c}`);}s.logInfo("\u8FDC\u7A0B\u8BBF\u95EE\u5DF2\u5F00\u542F",l.join(`
|
|
3913
3913
|
`));}else await s.stopRemote(),s.logInfo("\u8FDC\u7A0B\u8BBF\u95EE\u5DF2\u5173\u95ED","\u5DF2\u65AD\u5F00\u8FDC\u7A0B\u8FDE\u63A5");return}if(o==="network"){let i;try{i=await s.promptSelect("\u9009\u62E9\u7F51\u7EDC\u6A21\u5F0F",[{label:"LAN (\u5C40\u57DF\u7F51)",value:"lan",description:"\u540C\u4E00\u5185\u7F51\u8FDE\u63A5"},{label:"VPS (\u516C\u7F51\u4E2D\u8F6C)",value:"vps",description:"\u9700\u8981 VPS \u4E2D\u8F6C"}],t.networkMode);}catch(l){l?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",l?.message);return}let a=rI(i);nb(s,{networkMode:a}),a==="vps"?s.logInfo("\u5DF2\u5207\u6362\u5230 VPS \u6A21\u5F0F","\u76F4\u63A5\u90E8\u7F72 Neox Server \u5230 VPS\uFF0C\u624B\u673A\u901A\u8FC7\u516C\u7F51 IP \u8FDE\u63A5"):s.logInfo("\u5DF2\u5207\u6362\u5230 LAN \u6A21\u5F0F","\u540C\u4E00\u5C40\u57DF\u7F51\u5185\u8FDE\u63A5"),await s.startRemote();return}if(o==="port"){let i="";try{i=await s.promptText("\u8F93\u5165\u76D1\u542C\u7AEF\u53E3",{defaultValue:String(t.port||nI),allowEmpty:!1});}catch(l){l?.message!=="cancelled"&&s.logInfo("\u64CD\u4F5C\u53D6\u6D88",l?.message);return}let a=parseInt(i,10);if(!Number.isFinite(a)||a<1||a>65535){s.logInfo("\u65E0\u6548\u7AEF\u53E3","\u8BF7\u8F93\u5165 1-65535 \u4E4B\u95F4\u7684\u7AEF\u53E3");return}nb(s,{port:a}),await s.startRemote(),s.logInfo("\u7AEF\u53E3\u5DF2\u66F4\u65B0",`\u5F53\u524D\u7AEF\u53E3: ${a}`);return}if(o==="token"){let i=s.regenerateToken();s.logInfo("Token \u5DF2\u66F4\u65B0",`\u65B0\u7684 Token: ${i}`),await s.startRemote();return}if(o==="pair"||o==="status"){let i=s.getStatus();i.token||(s.regenerateToken(),i=s.getStatus());let a=[`\u72B6\u6001: ${i.enabled?"\u5F00\u542F":"\u5173\u95ED"} / ${i.running?"\u8FD0\u884C\u4E2D":"\u672A\u8FD0\u884C"}`,`\u6A21\u5F0F: ${i.networkMode.toUpperCase()}`,`\u5730\u5740: ${i.host}:${i.port}`,`Token: ${i.token||"(\u672A\u751F\u6210)"}`];if(i.urls.length>0){a.push("LAN \u5730\u5740:");for(let l of i.urls)a.push(`- ${l}`);}s.logInfo("\u8FDC\u7A0B\u914D\u5BF9\u4FE1\u606F",a.join(`
|
|
3914
3914
|
`));return}if(o==="qr"){let i=s.getStatus();i.token||(s.regenerateToken(),i=s.getStatus());let a=dU(i);s.clearOutputLines&&s.clearOutputLines();let l=await uU(a.payload),c=await cU(a.payload),u=[`LAN \u5730\u5740: ${a.lanUrl}`,`Token: ${i.token||"(\u672A\u751F\u6210)"}`,`\u534F\u8BAE: ${a.payload}`];l.filePath?(u.push(`\u4E8C\u7EF4\u7801\u56FE\u7247: ${l.filePath}`),u.push("(\u5DF2\u5728\u65B0\u7A97\u53E3\u6253\u5F00\uFF0C\u8BF7\u4F7F\u7528\u624B\u673A\u626B\u63CF)")):l.error&&u.push(`\u56FE\u7247\u751F\u6210\u5931\u8D25: ${l.error}`);let d=c.qr?u:[...u,c.error?`\u7EC8\u7AEF\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25: ${c.error}`:"\u7EC8\u7AEF\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25: \u672A\u77E5\u9519\u8BEF"];if(c.qr){let m=c.qr.split(`
|
|
3915
3915
|
`);m[m.length-1]===""&&m.pop();let g=typeof process.stdout?.rows=="number"?process.stdout.rows:0,h=g>0?Math.max(8,g-10):24,y=m.length>h,b=`\u7EC8\u7AEF\u4E8C\u7EF4\u7801\u8FC7\u5927(${m.length}\u884C)\uFF0C\u5DF2\u7701\u7565\uFF08\u8BF7\u626B\u56FE\u7247\uFF09`;s.outputLines?(y?s.outputLines([...u,b]):s.outputLines([...m,"",...u]),s.logInfo("\u8FDC\u7A0B\u914D\u5BF9\u4E8C\u7EF4\u7801",u.join(`
|
|
@@ -3972,6 +3972,6 @@ API Key: ${c}`);return}case "on":case "enable":{o.webSearch={...o.webSearch||{},
|
|
|
3972
3972
|
`));}}async rebuildAgentAndRunner(){if(!this.providerSettings)throw new Error("No provider configured.");this.sdkClient?.clearMemory("cli").catch(()=>{}),this.baseTools=await zn(this.workDir,this.platformServices),await this.loadMcpTools({refresh:true}),this.resetMemoryPressureMonitor(),this.sessionEnabled&&this.currentSession&&p.info("MODEL","Model switched, server will reload session"),p.info("MODEL","Agent rebuilt for new model");}logInfo(e,t){this.uiController?this.uiController.addInfo(e,t):(Q(""),Q(w.highlight(` ${e}`)),t&&Q(w.dim(t)),Q(""));}normalizeWorkspacePath(e){let t=e.trim();if(!t)throw new Error("Empty workspace path");if(t==="~")return process.env.HOME||t;if(t.startsWith("~/")){let n=process.env.HOME||"";return Ie.join(n,t.slice(2))}return Ie.resolve(t)}formatWorkspaceLabel(e){let t=process.env.HOME||"";return t&&e.startsWith(t)?`~${e.slice(t.length)}`:e}getWorkspaceHistory(){let e=Array.isArray(this.userConfig.recentWorkspaces)?this.userConfig.recentWorkspaces:[],t=[],n=new Set,r=o=>{try{let i=this.normalizeWorkspacePath(o);n.has(i)||(n.add(i),t.push(i));}catch{}};r(this.workDir);for(let o of e)r(o);return t}saveWorkspaceHistory(e){let t=Array.from(new Set(e)),n=this.userConfig.recentWorkspaces||[];n.length===t.length&&n.every((o,i)=>o===t[i])||(this.userConfig={...this.userConfig,recentWorkspaces:t},Me(this.userConfig));}showWorkspaceList(e){let t=[];if(t.push(""),t.push(w.highlight(" Workspaces")),t.push(""),e.length===0?t.push(w.dim(" (none)")):e.forEach((n,r)=>{let o=Ie.resolve(n)===this.workDir,i=this.formatWorkspaceLabel(n),a=o?w.success("*"):w.dim(" ");t.push(`${w.dim(` ${r+1}.`)} ${a} ${w.info(i)}`);}),t.push(""),this.uiController&&typeof this.uiController.setCommandOutputLines=="function"){this.uiController.setCommandOutputLines(t);return}for(let n of t)Q(n);}async promptWorkspaceSelection(){let e=this.getWorkspaceHistory(),t=this.workDir,n=e.map(o=>({label:this.formatWorkspaceLabel(o),value:o,description:o===t?"current":void 0}));n.push({label:"+ Add workspace",value:"__add__"}),n.push({label:"Show list",value:"__list__"});let r=await this.promptSelect("Workspace",n,t);if(r==="__list__"){this.showWorkspaceList(e);return}if(r==="__add__"){let o=await this.promptText("Workspace path",{allowEmpty:false});await this.switchWorkspace(o);return}await this.switchWorkspace(r);}async switchWorkspace(e){if(this.isTaskRunning){this.logInfo("\u5F53\u524D\u4EFB\u52A1\u8FD0\u884C\u4E2D\uFF0C\u65E0\u6CD5\u5207\u6362\u5DE5\u4F5C\u533A");return}let t;try{t=this.normalizeWorkspacePath(e);}catch(r){this.logInfo("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u65E0\u6548",r?.message||String(r));return}if(!Ct.existsSync(t)){this.logInfo("\u5DE5\u4F5C\u533A\u4E0D\u5B58\u5728",t);return}if(!Ct.statSync(t).isDirectory()){this.logInfo("\u76EE\u6807\u4E0D\u662F\u76EE\u5F55",t);return}if(Ie.resolve(t)===this.workDir){this.logInfo("\u5DF2\u5728\u5F53\u524D\u5DE5\u4F5C\u533A",this.formatWorkspaceLabel(t));return}let n=[t,...this.getWorkspaceHistory()];if(this.saveWorkspaceHistory(n),this.workDir=t,process.chdir(this.workDir),process.env.NEOX_WORKDIR=this.workDir,await this.actionLog.setWorkspace(this.workDir),this.sdkClient?.setWorkspace(this.workDir).catch(()=>{}),this.baseTools=await zn(this.workDir,this.platformServices),this.mcpManager?this.mcpManager.setWorkDir(this.workDir):this.mcpManager=new lr({workDir:this.workDir}),await this.loadMcpTools({refresh:true}),this.sdkClient?.clearMemory("cli").catch(()=>{}),this.sessionEnabled){let r=await this.sessionManager.createSession({model:this.model});await this.activateSession(r,{loadHistory:false});}this.uiController&&(this.uiController.updateWorkDir(this.formatWorkspaceLabel(this.workDir)),this.uiController.updateStatus("Workspace switched","complete")),this.logInfo("\u5DF2\u5207\u6362\u5DE5\u4F5C\u533A",this.formatWorkspaceLabel(this.workDir));}async handleWorkspaceCommand(e){let t=e[0]?.toLowerCase();if(!t){await this.promptWorkspaceSelection();return}if(t==="list"){this.showWorkspaceList(this.getWorkspaceHistory());return}if(t==="current"){this.logInfo("\u5F53\u524D\u5DE5\u4F5C\u533A",this.formatWorkspaceLabel(this.workDir));return}if(t==="add"){let n=e.slice(1).join(" ")||await this.promptText("Workspace path",{allowEmpty:false});try{let r=this.normalizeWorkspacePath(n),o=[r,...this.getWorkspaceHistory()];this.saveWorkspaceHistory(o),this.logInfo("\u5DF2\u6DFB\u52A0\u5DE5\u4F5C\u533A",this.formatWorkspaceLabel(r));}catch(r){this.logInfo("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u65E0\u6548",r?.message||String(r));}return}if(t==="switch"){let n=e.slice(1).join(" ");if(!n){await this.promptWorkspaceSelection();return}await this.switchWorkspace(n);return}await this.switchWorkspace(e.join(" "));}getRuntimeHostConfigKey(e,t){return JSON.stringify({providerId:e.id,protocol:e.protocol,baseUrl:e.baseUrl,model:t.model,useResponsesAPI:e.useResponsesAPI??false,maxInputTokens:t.maxInputTokens??e.maxInputTokens??null})}getCommandContext(){return {runtimeHost:null,uiController:this.uiController,colors:w,sessionEnabled:this.sessionEnabled,sessionManager:this.sessionManager,sessionSync:null,currentSession:this.currentSession,compatProfile:this.compatProfile,autoCompactionInProgress:this.autoCompactionInProgress,isRunning:this.isTaskRunning,logInfo:(e,t)=>this.logInfo(e,t),activateSession:(e,t)=>this.activateSession(e,t),normalizeCheckpoints:f_,withRuntimeEvents:e=>this.withRuntimeEvents(e),promptSelect:(e,t,n)=>this.promptSelect(e,t,n),promptText:(e,t)=>this.promptText(e,t),outputLines:this.uiController&&typeof this.uiController.setCommandOutputLines=="function"?e=>{this.uiController.setCommandOutputLines(e);}:void 0,clearOutputLines:this.uiController&&typeof this.uiController.clearCommandOutputLines=="function"?()=>{this.uiController.clearCommandOutputLines();}:void 0}}async withRuntimeEvents(e){return await e()}getProviderCommandContext(){return {providerId:this.providerId,provider:this.provider,model:this.model,providerSettings:this.providerSettings,getProviders:()=>this.providerStore.getProviders(),getProvider:e=>this.providerStore.getProvider(e),getDefaultProvider:()=>this.providerStore.getDefaultProvider(),getProviderCount:()=>this.providerStore.getProviderCount(),resolveModel:e=>this.providerStore.resolveModel(e),addProvider:e=>this.providerStore.addProvider(e),updateProvider:(e,t)=>this.providerStore.updateProvider(e,t),deleteProvider:e=>this.providerStore.deleteProvider(e),renameProvider:(e,t)=>this.providerStore.renameProvider(e,t),setDefaultProvider:e=>this.providerStore.setDefaultProvider(e),setLastSelectedModel:(e,t)=>this.providerStore.setLastSelectedModel(e,t),addModel:(e,t,n,r)=>this.providerStore.addModel(e,t,n,r),removeModel:(e,t)=>this.providerStore.removeModel(e,t),updateModelConfig:(e,t,n)=>this.providerStore.updateModelConfig(e,t,n),promptText:(e,t)=>this.promptText(e,t),promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),promptYesNo:(e,t)=>this.promptYesNo(e,t),promptConfirmKeyword:(e,t)=>this.promptConfirmKeyword(e,t),selectProviderFromList:e=>this.selectProviderFromList(e),selectModelFromProvider:(e,t)=>this.selectModelFromProvider(e,t),selectModelFromCurrentProvider:e=>this.selectModelFromCurrentProvider(e),getProviderByIdentifier:e=>this.getProviderByIdentifier(e),applyProviderState:async e=>{this.providerId=e.providerId,this.provider=e.provider,this.model=e.model,this.providerSettings=e.providerSettings,this.refreshProviderSettings(),this.rebuildCompatProfile(),await this.rebuildAgentAndRunner(),this.updateContextWindowDisplay();},refreshProviderSettings:()=>this.refreshProviderSettings(),getProviderDisplayName:()=>this.getProviderDisplayName(),logInfo:(e,t)=>this.logInfo(e,t),updateProviderDisplay:(e,t)=>{this.uiController&&this.uiController.updateProvider(e,t);},outputFn:this.uiController?e=>this.uiController.printCommandOutput(e):void 0}}getThinkingCommandContext(){return {model:this.model,providerSettings:this.providerSettings,thinkingMode:this.thinkingMode,llmProvider:this.providerControls?.anthropic||null,setThinkingMode:e=>{this.thinkingMode=e;},promptSelect:(e,t,n)=>this.promptSelect(e,t,n),logInfo:(e,t)=>this.logInfo(e,t)}}getConfigCommandContext(){return {approvalMode:this.approvalMode,userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),logInfo:(e,t)=>this.logInfo(e,t),cleanup:()=>this.cleanup(),setApprovalMode:e=>{this.approvalMode=e,e==="dangerous"?(this.currentMode="auto",this.sdkClient?.setApprovalMode("cli","auto").catch(()=>{})):(this.currentMode="agent",this.sdkClient?.setApprovalMode("cli","manual").catch(()=>{}));},updateConfig:e=>{this.userConfig=e;}}}getNotifyCommandContext(){return {userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;}}}getMcpCommandContext(){return this.mcpManager?this.mcpManager.setWorkDir(this.workDir):this.mcpManager=new lr({workDir:this.workDir}),{workDir:this.workDir,mcpManager:this.mcpManager,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),promptText:(e,t)=>this.promptText(e,t),logInfo:(e,t)=>this.logInfo(e,t),refreshMcpTools:async()=>{await this.rebuildAgentAndRunner();},outputLines:e=>this.uiController?.setCommandOutputLines(e)}}getIndexCommandContext(){return {userConfig:this.userConfig,workspacePath:this.workDir,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;}}}getContextCommandContext(){return {userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;},runner:null,uiController:this.uiController,memoryPressure:this.memoryPressure,updateCompactionThreshold:e=>this.updateCompactionThreshold(e),updateCompressionMode:e=>{this.sdkClient?.setCompressionMode("cli",e).catch(()=>{});}}}getMemoryCommandContext(){return {actionLog:this.actionLog,userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),promptText:(e,t)=>this.promptText(e,t),logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;},uiController:this.uiController}}async showOnboardingIfNeeded(){if(this.userConfig.hasSeenOnboarding||!this.uiController)return;let e=G();console.log(),console.log(Oe.cyan.bold(` \u25CF ${e.onboarding.welcome}`)),console.log(Oe.dim(` ${e.onboarding.welcomeDesc}`)),console.log(),console.log(Oe.yellow(` \u25CB ${e.onboarding.selectLanguage}`)),console.log(Oe.dim(` ${e.onboarding.selectLanguageDesc}`)),console.log();let t=[{label:"\u25CB \u4E2D\u6587",value:"zh",description:"\u4F7F\u7528\u4E2D\u6587\u754C\u9762"},{label:"\u25CB English",value:"en",description:"Use English interface"}],n=await this.promptSelect(e.onboarding.selectLanguage,t,void 0,e.onboarding.selectLanguageDesc);n&&Ch(n),this.userConfig.hasSeenOnboarding=true,Me(this.userConfig);let r=G();console.log(),console.log(Oe.green.bold(` \u2713 ${r.onboarding.setupComplete}`)),console.log(Oe.dim(` ${r.onboarding.setupCompleteDesc}`)),console.log();}async showLanguageMenu(){if(!this.uiController){console.log(Oe.yellow("Language settings is only available in interactive mode"));return}let e=G(),t=HT(),n=[{label:e.languageMenu.chinese,value:"zh",description:t==="zh"?`\u2713 ${e.languageMenu.current}`:e.languageMenu.chineseDesc},{label:e.languageMenu.english,value:"en",description:t==="en"?`\u2713 ${e.languageMenu.current}`:e.languageMenu.englishDesc}],r=await this.promptSelect(e.languageMenu.title,n,void 0,e.languageMenu.hint);if(r&&r!==t){Ch(r);let o=G(),i=r==="zh"?"\u4E2D\u6587":"English";this.logInfo(lt(o.languageMenu.changed,{lang:i}));}}async showSkillsScreen(){if(!this.uiController){console.log(Oe.yellow("Skills list is only available in interactive mode"));return}for(;;){let e=G(),t=et.list(),n=[{label:e.skillsMenu.viewAll,value:"list",description:lt(e.skillsMenu.viewAllDesc,{count:t.length})},{label:e.skillsMenu.import,value:"import",description:e.skillsMenu.importDesc},{label:e.skillsMenu.create,value:"create",description:e.skillsMenu.createDesc},{label:e.skillsMenu.refresh,value:"refresh",description:e.skillsMenu.refreshDesc}],r=await this.promptSelect(e.skillsMenu.title,n,void 0,e.skillsMenu.hint);if(!r)break;switch(r){case "list":await this.showSkillsList();break;case "import":await this.showImportSkillMenu();break;case "create":await this.showCreateSkillMenu();break;case "refresh":await et.refresh(this.workDir),this.logInfo(lt(e.skillsMenu.refreshSuccess,{count:et.size}));break}}}async showSkillsList(){let e=G(),t=et.list();if(t.length===0){this.logInfo(e.skillsMenu.noSkills);return}let n=t.filter(l=>l.source==="builtin"),r=t.filter(l=>l.source==="user"),o=t.filter(l=>l.source==="workspace"),i=[];if(n.length>0){i.push({label:e.skillsMenu.builtIn,value:"",description:""});for(let l of n){let c=l.metadata.neox?.aliases?.length?` (${l.metadata.neox.aliases.join(", ")})`:"";i.push({label:`/${l.id}${c}`,value:l.id,description:l.metadata.description});}}if(r.length>0){i.push({label:e.skillsMenu.user,value:"",description:""});for(let l of r){let c=l.metadata.neox?.aliases?.length?` (${l.metadata.neox.aliases.join(", ")})`:"";i.push({label:`/${l.id}${c}`,value:l.id,description:l.metadata.description});}}if(o.length>0){i.push({label:e.skillsMenu.workspace,value:"",description:""});for(let l of o){let c=l.metadata.neox?.aliases?.length?` (${l.metadata.neox.aliases.join(", ")})`:"";i.push({label:`/${l.id}${c}`,value:l.id,description:l.metadata.description});}}let a=await this.promptSelect(e.skillsMenu.title,i,void 0,e.skillsMenu.selectToExecute);a&&a!==""&&await this.handleUserInput(`/${a}`,void 0,"local");}async showImportSkillMenu(){let e=G(),t=await this.promptSelect(e.skillsMenu.importMethod,[{label:e.skillsMenu.fromUrl,value:"url",description:e.skillsMenu.fromUrlDesc},{label:e.skillsMenu.fromPath,value:"path",description:e.skillsMenu.fromPathDesc}],void 0,e.skillsMenu.importMethod);if(!t)return;let n=await this.promptSelect(e.skillsMenu.saveLocation,[{label:e.skillsMenu.userGlobal,value:"user",description:"~/.neox/skills/"},{label:e.skillsMenu.workspaceLocal,value:"workspace",description:".neox/skills/"}],void 0,e.skillsMenu.saveLocation);if(!n)return;let r=await this.promptText(t==="url"?e.skillsMenu.enterUrl:e.skillsMenu.enterPath,{hint:t==="url"?"https://...":"./path/to/skill \u6216 ./SKILL.md"});if(!r)return;this.logInfo(e.skillsMenu.importing);let o=t==="url"?await et.importFromUrl(r,n,this.workDir):await et.importFromPath(r,n,this.workDir);o.success?this.logInfo(lt(e.skillsMenu.importSuccess,{id:o.skillId||""})):this.logInfo(lt(e.skillsMenu.importFailed,{error:o.error||""}));}async showCreateSkillMenu(){let e=G(),t=await this.promptText(e.skillsMenu.enterId,{hint:"e.g., my-tool, code-review"});if(!t)return;if(!/^[a-z][a-z0-9-]*$/.test(t)){this.logInfo(e.skillsMenu.idFormatError);return}if(et.has(t)){this.logInfo(lt(e.skillsMenu.skillExists,{id:t}));return}let n=await this.promptText(e.skillsMenu.enterName,{hint:"e.g., My Custom Tool"});if(!n)return;let r=await this.promptText(e.skillsMenu.enterDescription,{hint:"e.g., Perform code review and provide suggestions"});if(!r)return;let o=await this.promptSelect(e.skillsMenu.selectCategory,[{label:"git",value:"git",description:e.skillsMenu.categoryGit},{label:"code",value:"code",description:e.skillsMenu.categoryCode},{label:"docs",value:"docs",description:e.skillsMenu.categoryDocs},{label:"test",value:"test",description:e.skillsMenu.categoryTest},{label:"custom",value:"custom",description:e.skillsMenu.categoryCustom}],"custom",e.skillsMenu.selectCategory),i=await this.promptSelect(e.skillsMenu.saveLocation,[{label:e.skillsMenu.userGlobal,value:"user",description:"~/.neox/skills/"},{label:e.skillsMenu.workspaceLocal,value:"workspace",description:".neox/skills/"}],void 0,e.skillsMenu.saveLocation);if(!i)return;let a=await et.createSkill({id:t,name:n,description:r,category:o||"custom",target:i,workDir:this.workDir});a.success?this.logInfo(lt(e.skillsMenu.createSuccess,{path:a.path||""})):this.logInfo(lt(e.skillsMenu.createFailed,{error:a.error||""}));}getRemoteCommandContext(){return {userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),promptText:(e,t)=>this.promptText(e,t),logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;},startRemote:()=>this.startRemoteServer(),stopRemote:()=>this.stopRemoteServer(),regenerateToken:()=>this.regenerateRemoteToken(),getStatus:()=>this.getRemoteStatus(),outputLines:this.uiController&&typeof this.uiController.setCommandOutputLines=="function"?e=>{this.uiController.setCommandOutputLines(e);}:void 0,clearOutputLines:this.uiController&&typeof this.uiController.clearCommandOutputLines=="function"?()=>{this.uiController.clearCommandOutputLines();}:void 0}}getSupervisorCommandContext(){return {userConfig:this.userConfig,logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;}}}getRunConfigCommandContext(){return {userConfig:this.userConfig,promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),promptText:(e,t)=>this.promptText(e,t),getProviders:()=>this.providerStore.getProviders(),activeProviderId:this.providerId,logInfo:(e,t)=>this.logInfo(e,t),updateConfig:e=>{this.userConfig=e;},workDir:this.workDir,llmCall:async(e,t)=>{if(!this.providerStore.getProviders().find(r=>r.id===this.providerId)?.models?.[0])throw new Error("\u672A\u914D\u7F6E\u53EF\u7528\u7684 LLM \u6A21\u578B");if(!this.remoteAdapter)throw new Error("Server not connected");return await this.remoteAdapter.chat({sessionId:`llm-call-${Date.now()}`,prompt:`${e}
|
|
3973
3973
|
|
|
3974
3974
|
${t}`,mode:"single",providerId:this.providerId,modelName:this.model}),""},readFile:async e=>{try{return await(await import('fs/promises')).readFile(e,"utf-8")}catch{return null}},listDir:async e=>{try{return await(await import('fs/promises')).readdir(e)}catch{return []}}}}getStatisticCommandContext(){return {promptSelect:(e,t,n,r)=>this.promptSelect(e,t,n,r),logInfo:(e,t)=>this.logInfo(e,t),outputLines:this.uiController&&typeof this.uiController.setCommandOutputLines=="function"?e=>{this.uiController.setCommandOutputLines(e);}:void 0,clearOutputLines:this.uiController&&typeof this.uiController.clearCommandOutputLines=="function"?()=>{this.uiController.clearCommandOutputLines();}:void 0,userConfig:this.userConfig}}async handlePricingCommand(e){let t={userConfig:this.userConfig,promptSelect:(n,r,o,i)=>this.promptSelect(n,r,o,i),promptInput:(n,r)=>this.promptInput(n,r),logInfo:(n,r)=>this.logInfo(n,r),updateConfig:n=>{this.userConfig=n;}};await J_(t,e);}getProcessCommandContext(){return {outputLines:this.uiController&&typeof this.uiController.setCommandOutputLines=="function"?e=>{this.uiController.setCommandOutputLines(e);}:void 0,clearOutputLines:this.uiController&&typeof this.uiController.clearCommandOutputLines=="function"?()=>{this.uiController.clearCommandOutputLines();}:void 0}}async addPendingAttachment(e){let t=e.trim();if(!t){this.logInfo("\u9644\u4EF6\u65E0\u6548","\u8BF7\u8F93\u5165\u672C\u5730\u56FE\u7247\u8DEF\u5F84\u6216 https \u94FE\u63A5");return}if(/^https?:\/\//i.test(t)){try{let i=new URL(t);this.pendingAttachments.push({type:"url",data:t,name:i.hostname}),this.logInfo("\u5DF2\u6DFB\u52A0\u94FE\u63A5\u9644\u4EF6",t);}catch{this.logInfo("\u65E0\u6548\u7684 URL",t);}return}let n=Ie.isAbsolute(t)?t:Ie.resolve(process.cwd(),t);if(!Ct.existsSync(n)){this.logInfo("\u6587\u4EF6\u4E0D\u5B58\u5728",n);return}let r=Ie.extname(n).toLowerCase(),o=Yd[r];if(!o){this.logInfo("\u4EC5\u652F\u6301\u56FE\u7247\u9644\u4EF6",`\u5141\u8BB8\u7684\u7C7B\u578B: ${Object.keys(Yd).join(", ")}`);return}try{let i=await Ct.promises.readFile(n),a=`data:${o};base64,${i.toString("base64")}`;this.pendingAttachments.push({type:"image",data:a,name:Ie.basename(n)}),this.logInfo("\u5DF2\u6DFB\u52A0\u56FE\u7247\u9644\u4EF6",Ie.basename(n));}catch(i){this.logInfo("\u8BFB\u53D6\u9644\u4EF6\u5931\u8D25",i?.message||"\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6");}}listPendingAttachments(){if(this.pendingAttachments.length===0){this.logInfo("\u9644\u4EF6\u5217\u8868","\u6CA1\u6709\u5F85\u53D1\u9001\u7684\u9644\u4EF6\u3002");return}Q(""),Q(w.highlight(" Pending attachments:")),this.pendingAttachments.forEach((e,t)=>{let n=e.type==="url"?e.data:e.name||`Image ${t+1}`;Q(w.dim(` ${t+1}. `)+w.info(n));}),Q("");}clearPendingAttachments(){if(this.pendingAttachments.length===0){this.logInfo("\u9644\u4EF6\u5217\u8868","\u6CA1\u6709\u53EF\u6E05\u9664\u7684\u9644\u4EF6\u3002");return}this.pendingAttachments=[],this.logInfo("\u9644\u4EF6\u5DF2\u6E05\u9664","\u6240\u6709\u5F85\u53D1\u9001\u9644\u4EF6\u5DF2\u79FB\u9664\u3002");}removePendingAttachment(e){if(e<0||e>=this.pendingAttachments.length){this.logInfo("\u9644\u4EF6\u7D22\u5F15\u65E0\u6548",`\u5F53\u524D\u5171\u6709 ${this.pendingAttachments.length} \u4E2A\u9644\u4EF6\u3002`);return}let[t]=this.pendingAttachments.splice(e,1),n=t.type==="url"?t.data:t.name||`Attachment #${e+1}`;this.logInfo("\u5DF2\u79FB\u9664\u9644\u4EF6",n);}};function vj(){if(process.platform==="win32"){let e=process.env.USERPROFILE,t=process.env.APPDATA;if(e){let n=Ie.join(e,".codex","config.toml");if(Ct.existsSync(n))return n}if(t){let n=Ie.join(t,"codex","config.toml");if(Ct.existsSync(n))return n}return null}else {let e=process.env.HOME;if(!e)return null;let t=Ie.join(e,".codex","config.toml");return Ct.existsSync(t)?t:null}}function Cj(s){let e={providers:{}},t=s.split(`
|
|
3975
|
-
`),n="",r="";for(let o of t){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.match(/^\[model_providers\.([^\]]+)\]$/);if(a){n="model_providers",r=a[1],e.providers[r]={name:r};continue}if(i.startsWith("[")&&i.endsWith("]")){n="",r="";continue}let l=i.match(/^(\w+)\s*=\s*"?([^"]*)"?$/);if(l&&!n){let[,c,u]=l;c==="model_provider"?e.defaultProvider=u:c==="model"&&(e.defaultModel=u);continue}if(n==="model_providers"&&r){let c=i.match(/^(\w+)\s*=\s*(.+)$/);if(c){let[,u,d]=c,m=d.trim();m.startsWith('"')&&m.endsWith('"')?m=m.slice(1,-1):m==="true"?m=true:m==="false"&&(m=false);let g=e.providers[r];switch(u){case "name":g.name=m;break;case "base_url":g.base_url=m;break;case "wire_api":g.wire_api=m;break;case "env_key":g.env_key=m;break;case "temp_env_key":g.temp_env_key=m;break;case "requires_openai_auth":g.requires_openai_auth=m;break;case "model":g.model=m;break}}}}return e}function wj(){let s=[],e=vj();if(!e)return s;try{let t=Ct.readFileSync(e,"utf-8"),n=Cj(t),r=Ie.join(Ie.dirname(e),"auth.json"),o={};if(Ct.existsSync(r))try{o=JSON.parse(Ct.readFileSync(r,"utf-8"));}catch{}let i=n.defaultProvider;for(let[a,l]of Object.entries(n.providers)){let c;if(l.env_key&&process.env[l.env_key]&&(c=process.env[l.env_key]),!c&&l.temp_env_key&&process.env[l.temp_env_key]&&(c=process.env[l.temp_env_key]),!c&&l.temp_env_key&&o[l.temp_env_key]&&(c=o[l.temp_env_key]),!c&&l.env_key&&o[l.env_key]&&(c=o[l.env_key]),!c&&l.requires_openai_auth&&(c=o.OPENAI_API_KEY||process.env.OPENAI_API_KEY),c||(c=process.env.CODEX_API_KEY||process.env[`${a.toUpperCase()}_API_KEY`]),!c||!c.trim())continue;let u="openai";l.wire_api==="responses"&&(u="openai-responses");let d=[];l.model?d.push(l.model):n.defaultModel?d.push(n.defaultModel):d.push("gpt-5.2-codex","gpt-5.1-codex"),s.push({name:`Codex (${l.name||a})`,protocol:u,apiKey:c.trim(),baseUrl:l.base_url,models:d});}}catch(t){process.env.CLI_DEBUG==="1"&&console.error(`Failed to read Codex config: ${t}`);}return s}function LI(){let s=[],e=process.env.ANTHROPIC_API_KEY||process.env.ANTHROPIC_AUTH_TOKEN;e&&e.trim()&&s.push({name:"Anthropic",protocol:"anthropic",apiKey:e.trim(),baseUrl:process.env.ANTHROPIC_BASE_URL?.trim(),models:["claude-opus-4-6","claude-sonnet-4-5-20250929","claude-3-5-sonnet-20241022"]});let t=process.env.OPENAI_API_KEY,n=process.env.OPENAI_BASE_URL?.trim();if(t&&t.trim()){let l=process.env.OPENAI_PROTOCOL==="responses"||process.env.OPENAI_PROTOCOL==="openai-responses"?"openai-responses":process.env.OPENAI_PROTOCOL==="anthropic"||process.env.OPENAI_PROTOCOL==="anthropic-openai"?"anthropic-openai":"openai",c=l==="openai-responses"?["gpt-5.1","o3-mini"]:["gpt-4o","gpt-4-turbo","gpt-3.5-turbo"];s.push({name:n?"OpenAI Proxy":"OpenAI",protocol:l,apiKey:t.trim(),baseUrl:n,models:c});}let r=process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY;r&&r.trim()&&s.push({name:"Gemini",protocol:"gemini",apiKey:r.trim(),baseUrl:process.env.GEMINI_BASE_URL?.trim(),models:["gemini-2.0-flash-exp","gemini-1.5-pro"]});let o=process.env.MOONSHOT_API_KEY||process.env.KIMI_API_KEY;o&&o.trim()&&s.push({name:"Kimi (Moonshot)",protocol:"kimi",apiKey:o.trim(),baseUrl:process.env.MOONSHOT_BASE_URL?.trim()||process.env.KIMI_BASE_URL?.trim(),models:["kimi-k2-0905-preview"]});let i=process.env.DOUBAO_API_KEY||process.env.VOLCENGINE_API_KEY;i&&i.trim()&&s.push({name:"Doubao",protocol:"doubao",apiKey:i.trim(),baseUrl:process.env.DOUBAO_BASE_URL?.trim(),models:["doubao-pro-256k"]});let a=wj();for(let l of a)s.push(l);if(a.length===0){let l=process.env.CODEX_API_KEY,c=process.env.CODEX_BASE_URL?.trim();l&&l.trim()&&s.push({name:"Codex",protocol:"openai-responses",apiKey:l.trim(),baseUrl:c,models:["gpt-5.2-codex","gpt-5.1-codex"]});}return s}function NI(){let s=He(),t=new nt(s).getDefaultProvider();return !(t&&t.apiKey&&t.apiKey.trim().length>0)}async function Tj(){let s=LI();return new Promise(e=>{let t=false,n=vo(A.createElement(Nx,{detectedProviders:s,onComplete:()=>{t||(t=true,n.unmount(),e("exit"));},onStartSetup:()=>{t||(t=true,n.unmount(),e("setup"));},onManualEdit:()=>{t||(t=true,n.unmount(),e("manual"));},onAutoCreate:()=>{t||(t=true,n.unmount(),e("auto"));}}),{stdout:process.stdout,stdin:process.stdin,exitOnCtrlC:false,patchConsole:false});})}function xj(){let s=LI();if(s.length===0)return false;let e=He(),t=new nt(e);for(let n of s)t.addProvider({name:n.name,protocol:n.protocol,apiKey:n.apiKey,baseUrl:n.baseUrl,models:n.models,defaultModel:n.models[0],setAsDefault:s.length===1});return console.log(),console.log(Oe.green(`\u2713 \u5DF2\u4ECE\u73AF\u5883\u53D8\u91CF\u521B\u5EFA ${s.length} \u4E2A Provider\uFF01`)),console.log(Oe.dim(` \u914D\u7F6E\u5DF2\u4FDD\u5B58\u5230: ${Ln}`)),console.log(),true}async function $I(){let s=He(),t=new nt(s).getDefaultProvider();if(t&&t.apiKey&&t.apiKey.trim().length>0)return;let n=await Sj();n||(console.log(),console.log(Oe.red("\u914D\u7F6E\u5DF2\u53D6\u6D88")),process.exit(1));let r=n.protocol,o=n.baseUrl?.trim()||
|
|
3975
|
+
`),n="",r="";for(let o of t){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.match(/^\[model_providers\.([^\]]+)\]$/);if(a){n="model_providers",r=a[1],e.providers[r]={name:r};continue}if(i.startsWith("[")&&i.endsWith("]")){n="",r="";continue}let l=i.match(/^(\w+)\s*=\s*"?([^"]*)"?$/);if(l&&!n){let[,c,u]=l;c==="model_provider"?e.defaultProvider=u:c==="model"&&(e.defaultModel=u);continue}if(n==="model_providers"&&r){let c=i.match(/^(\w+)\s*=\s*(.+)$/);if(c){let[,u,d]=c,m=d.trim();m.startsWith('"')&&m.endsWith('"')?m=m.slice(1,-1):m==="true"?m=true:m==="false"&&(m=false);let g=e.providers[r];switch(u){case "name":g.name=m;break;case "base_url":g.base_url=m;break;case "wire_api":g.wire_api=m;break;case "env_key":g.env_key=m;break;case "temp_env_key":g.temp_env_key=m;break;case "requires_openai_auth":g.requires_openai_auth=m;break;case "model":g.model=m;break}}}}return e}function wj(){let s=[],e=vj();if(!e)return s;try{let t=Ct.readFileSync(e,"utf-8"),n=Cj(t),r=Ie.join(Ie.dirname(e),"auth.json"),o={};if(Ct.existsSync(r))try{o=JSON.parse(Ct.readFileSync(r,"utf-8"));}catch{}let i=n.defaultProvider;for(let[a,l]of Object.entries(n.providers)){let c;if(l.env_key&&process.env[l.env_key]&&(c=process.env[l.env_key]),!c&&l.temp_env_key&&process.env[l.temp_env_key]&&(c=process.env[l.temp_env_key]),!c&&l.temp_env_key&&o[l.temp_env_key]&&(c=o[l.temp_env_key]),!c&&l.env_key&&o[l.env_key]&&(c=o[l.env_key]),!c&&l.requires_openai_auth&&(c=o.OPENAI_API_KEY||process.env.OPENAI_API_KEY),c||(c=process.env.CODEX_API_KEY||process.env[`${a.toUpperCase()}_API_KEY`]),!c||!c.trim())continue;let u="openai";l.wire_api==="responses"&&(u="openai-responses");let d=[];l.model?d.push(l.model):n.defaultModel?d.push(n.defaultModel):d.push("gpt-5.2-codex","gpt-5.1-codex"),s.push({name:`Codex (${l.name||a})`,protocol:u,apiKey:c.trim(),baseUrl:l.base_url,models:d});}}catch(t){process.env.CLI_DEBUG==="1"&&console.error(`Failed to read Codex config: ${t}`);}return s}function LI(){let s=[],e=process.env.ANTHROPIC_API_KEY||process.env.ANTHROPIC_AUTH_TOKEN;e&&e.trim()&&s.push({name:"Anthropic",protocol:"anthropic",apiKey:e.trim(),baseUrl:process.env.ANTHROPIC_BASE_URL?.trim(),models:["claude-opus-4-6","claude-sonnet-4-5-20250929","claude-3-5-sonnet-20241022"]});let t=process.env.OPENAI_API_KEY,n=process.env.OPENAI_BASE_URL?.trim();if(t&&t.trim()){let l=process.env.OPENAI_PROTOCOL==="responses"||process.env.OPENAI_PROTOCOL==="openai-responses"?"openai-responses":process.env.OPENAI_PROTOCOL==="anthropic"||process.env.OPENAI_PROTOCOL==="anthropic-openai"?"anthropic-openai":"openai",c=l==="openai-responses"?["gpt-5.1","o3-mini"]:["gpt-4o","gpt-4-turbo","gpt-3.5-turbo"];s.push({name:n?"OpenAI Proxy":"OpenAI",protocol:l,apiKey:t.trim(),baseUrl:n,models:c});}let r=process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY;r&&r.trim()&&s.push({name:"Gemini",protocol:"gemini",apiKey:r.trim(),baseUrl:process.env.GEMINI_BASE_URL?.trim(),models:["gemini-2.0-flash-exp","gemini-1.5-pro"]});let o=process.env.MOONSHOT_API_KEY||process.env.KIMI_API_KEY;o&&o.trim()&&s.push({name:"Kimi (Moonshot)",protocol:"kimi",apiKey:o.trim(),baseUrl:process.env.MOONSHOT_BASE_URL?.trim()||process.env.KIMI_BASE_URL?.trim(),models:["kimi-k2-0905-preview"]});let i=process.env.DOUBAO_API_KEY||process.env.VOLCENGINE_API_KEY;i&&i.trim()&&s.push({name:"Doubao",protocol:"doubao",apiKey:i.trim(),baseUrl:process.env.DOUBAO_BASE_URL?.trim(),models:["doubao-pro-256k"]});let a=wj();for(let l of a)s.push(l);if(a.length===0){let l=process.env.CODEX_API_KEY,c=process.env.CODEX_BASE_URL?.trim();l&&l.trim()&&s.push({name:"Codex",protocol:"openai-responses",apiKey:l.trim(),baseUrl:c,models:["gpt-5.2-codex","gpt-5.1-codex"]});}return s}function NI(){let s=He(),t=new nt(s).getDefaultProvider();return !(t&&t.apiKey&&t.apiKey.trim().length>0)}async function Tj(){let s=LI();return new Promise(e=>{let t=false,n=vo(A.createElement(Nx,{detectedProviders:s,onComplete:()=>{t||(t=true,n.unmount(),e("exit"));},onStartSetup:()=>{t||(t=true,n.unmount(),e("setup"));},onManualEdit:()=>{t||(t=true,n.unmount(),e("manual"));},onAutoCreate:()=>{t||(t=true,n.unmount(),e("auto"));}}),{stdout:process.stdout,stdin:process.stdin,exitOnCtrlC:false,patchConsole:false});})}function xj(){let s=LI();if(s.length===0)return false;let e=He(),t=new nt(e);for(let n of s)t.addProvider({name:n.name,protocol:n.protocol,apiKey:n.apiKey,baseUrl:n.baseUrl,models:n.models,defaultModel:n.models[0],setAsDefault:s.length===1});return console.log(),console.log(Oe.green(`\u2713 \u5DF2\u4ECE\u73AF\u5883\u53D8\u91CF\u521B\u5EFA ${s.length} \u4E2A Provider\uFF01`)),console.log(Oe.dim(` \u914D\u7F6E\u5DF2\u4FDD\u5B58\u5230: ${Ln}`)),console.log(),true}async function $I(){let s=He(),t=new nt(s).getDefaultProvider();if(t&&t.apiKey&&t.apiKey.trim().length>0)return;let n=await Sj();n||(console.log(),console.log(Oe.red("\u914D\u7F6E\u5DF2\u53D6\u6D88")),process.exit(1));let r=n.protocol,o=n.baseUrl?.trim()||hs[r],i=[n.model],a={providers:{}};new nt(a).addProvider({name:n.name.trim(),protocol:r,apiKey:n.apiKey.trim(),baseUrl:o,defaultModel:n.model,models:i,setAsDefault:true}),console.log(),console.log(Oe.green(`\u2713 Provider "${n.name.trim()}" \u914D\u7F6E\u6210\u529F!`)),console.log(Oe.dim(` \u914D\u7F6E\u5DF2\u4FDD\u5B58\u5230: ${Ln}`)),console.log();}async function Sj(){return new Promise(s=>{let e=false,t=vo(A.createElement($x,{onComplete:n=>{e||(e=true,t.unmount(),s(n));},onCancel:()=>{e||(e=true,t.unmount(),s(null));}}),{stdout:process.stdout,stdin:process.stdin,exitOnCtrlC:false,patchConsole:false});})}async function kj(){let s=process.argv.slice(2);if(s[0]==="mcp"){let t=Ie.resolve(process.cwd()),n=await fI(s.slice(1),{workDir:t});process.exit(n);}if(s[0]==="daemon"){let{handleDaemonCommand:t}=await Promise.resolve().then(()=>(xI(),TI));await t(s.slice(1)),process.exit(0);}let e=Py();if(e.debug&&(process.env.CLI_DEBUG="1"),(e.debug||e.debugConsole)&&(process.env.CLI_DEBUG_CONSOLE="1"),p.info("CLI","Arguments parsed",{model:e.model,provider:e.provider,workDir:e.workDir,debug:process.env.CLI_DEBUG==="1",debugConsole:process.env.CLI_DEBUG_CONSOLE==="1"}),e.unknownArgs&&e.unknownArgs.length>0&&(console.error(Oe.red(`\u9519\u8BEF: \u4E0D\u652F\u6301\u7684\u53C2\u6570: ${e.unknownArgs.join(", ")}`)),console.error(Oe.yellow("\u4F7F\u7528 'neox --help' \u67E5\u770B\u652F\u6301\u7684\u53C2\u6570\u5217\u8868")),process.exit(1)),e.help&&(g0(Jd),process.exit(0)),e.version&&(h0(Jd),process.exit(0)),e._[0]==="update"){let{handleUpdateCommand:t}=await Promise.resolve().then(()=>(fp(),sb));await t(),process.exit(0);}try{if(p.debug("BOOT","main() try block entered"),NI()){p.debug("BOOT","needsProviderConfiguration=true, showing wizard");let n=await Tj();if(p.debug("BOOT",`wizard action=${n}`),n==="exit"&&process.exit(0),n==="auto"&&xj(),n==="manual"){console.log(),console.log(Oe.yellow("\u8BF7\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6\u5E76\u586B\u5165\u60A8\u7684 API Key:")),console.log(Oe.cyan(` ${Ln}`)),console.log();let{spawn:r}=await import('child_process'),{isWSL:o}=await Promise.resolve().then(()=>(qr(),rv)),i;process.env.EDITOR||process.env.VISUAL?i=process.env.EDITOR||process.env.VISUAL:process.platform==="darwin"?i="open":o()?i="wslview":i="xdg-open",console.log(Oe.dim(` \u4F7F\u7528 ${i} \u6253\u5F00\u914D\u7F6E\u6587\u4EF6...`)),r(i,[Ln],{detached:!0,stdio:"ignore"}).unref(),console.log(),console.log(Oe.dim("\u7F16\u8F91\u5B8C\u6210\u540E\uFF0C\u8BF7\u91CD\u65B0\u8FD0\u884C CLI\u3002")),console.log(),process.exit(0);}}p.debug("BOOT","ensureProviderConfigured..."),await $I(),p.debug("BOOT","creating NeoxCLI...");let t=new ub(e.model,e.workDir,e.provider,e);p.debug("BOOT","cli.init()..."),await t.init(),p.debug("BOOT","cli.init() done, runInteractive()..."),p.info("CLI","CLI initialized successfully"),await t.runInteractive();}catch(t){throw p.error("BOOT",`FATAL: ${t.message}`,{stack:t.stack}),p.error("CLI","Fatal error in main",{error:t.message,stack:t.stack}),t}}process.on("SIGINT",()=>{Bt.getBackgroundRunning().length>0&&Bt.killAll(true),bp||process.exit(0);});var PI=Date.now(),_j=1e3,Ij=5e3,Ej=6e4,Aj=setInterval(()=>{let s=Date.now(),e=s-PI;PI=s,e>Ij&&e<Ej&&p.warn("EVENT_LOOP",`\u26A0\uFE0F Event loop blocked for ${Math.round(e/1e3)}s`,{elapsedMs:e,elapsedSec:Math.round(e/1e3)});},_j);Aj.unref();process.on("SIGTERM",()=>{p.debug("TTY_STATE","\u{1F534} [CRITICAL] SIGTERM received"),Bt.killAll(true),process.stdin.isTTY&&(p.debug("TTY_STATE","\u{1F534} [CRITICAL] About to call setRawMode(false) in SIGTERM handler"),p.debug("TTY_STATE",` Stack: ${new Error().stack?.split(`
|
|
3976
3976
|
`).slice(1,4).join(" -> ")}`),process.stdin.setRawMode(false),p.debug("TTY_STATE","\u2705 setRawMode(false) completed in SIGTERM")),process.exit(0);});try{p.debug("TTY_STATE","\u{1F6E1}\uFE0F Registering SIGTSTP ignore handler"),process.on("SIGTSTP",()=>{p.error("TTY_STATE","\u{1F6A8}\u{1F6A8}\u{1F6A8} SIGTSTP (Ctrl+Z) RECEIVED! This should have been ignored!"),p.error("TTY_STATE",` Stack: ${new Error().stack}`);}),p.debug("TTY_STATE","\u2705 SIGTSTP monitoring handler registered");}catch{p.debug("TTY_STATE","\u26A0\uFE0F SIGTSTP not supported on this platform");}try{p.debug("TTY_STATE","\u{1F6E1}\uFE0F [CRITICAL] Registering SIGTTIN ignore handler"),process.on("SIGTTIN",()=>{p.error("TTY_STATE","\u{1F6A8}\u{1F6A8}\u{1F6A8} SIGTTIN RECEIVED! This should have been ignored!"),p.error("TTY_STATE",` stdin.isTTY: ${process.stdin.isTTY}`),p.error("TTY_STATE",` stdin.isRaw: ${process.stdin.isRaw}`),p.error("TTY_STATE",` stdin.destroyed: ${process.stdin.destroyed}`),p.error("TTY_STATE",` Stack: ${new Error().stack}`);}),p.debug("TTY_STATE","\u2705 SIGTTIN monitoring handler registered");}catch{p.debug("TTY_STATE","\u26A0\uFE0F SIGTTIN not supported on this platform");}try{p.debug("TTY_STATE","\u{1F6E1}\uFE0F [CRITICAL] Registering SIGTTOU ignore handler"),process.on("SIGTTOU",()=>{p.error("TTY_STATE","\u{1F6A8}\u{1F6A8}\u{1F6A8} SIGTTOU RECEIVED! This should have been ignored!"),p.error("TTY_STATE",` stdout.isTTY: ${process.stdout.isTTY}`),p.error("TTY_STATE",` Stack: ${new Error().stack}`);}),p.debug("TTY_STATE","\u2705 SIGTTOU monitoring handler registered");}catch{p.debug("TTY_STATE","\u26A0\uFE0F SIGTTOU not supported on this platform");}process.on("SIGCONT",()=>{if(p.debug("TTY_STATE","\u{1F504} [CRITICAL] SIGCONT received (process resumed)"),process.stdin.isTTY&&!process.stdin.destroyed)try{let s=process.stdin.isRaw;p.debug("TTY_STATE",` wasRaw: ${s}`),s!==!1&&(p.debug("TTY_STATE","\u{1F534} About to call setRawMode(true) in SIGCONT"),process.stdin.setRawMode(!0),p.debug("TTY_STATE","\u2705 setRawMode(true) completed in SIGCONT")),process.stdin.resume(),p.debug("SIGNAL","SIGCONT: stdin recovered after resume");}catch(s){p.warn("SIGNAL","SIGCONT: failed to recover stdin",{error:s});}});process.on("exit",s=>{p.debug("BOOT",`process.exit event, code=${s}`),p.debug("TTY_STATE","\u{1F534} [CRITICAL] exit event triggered"),process.stdin.isTTY&&(p.debug("TTY_STATE","\u{1F534} [CRITICAL] About to call setRawMode(false) in exit handler"),process.stdin.setRawMode(false),p.debug("TTY_STATE","\u2705 setRawMode(false) completed in exit"));});if(process.env.NEOX_WORKER==="execute_shell"){let{runExecuteShellWorker:s}=await Promise.resolve().then(()=>(II(),_I));await s(),process.exit(0);}kj().catch(s=>{p.error("BOOT",`main() top-level catch: ${s.message}`,{stack:s.stack}),p.debug("TTY_STATE","\u{1F534} [CRITICAL] Unhandled error in main()"),process.stdin.isTTY&&(p.debug("TTY_STATE","\u{1F534} [CRITICAL] About to call setRawMode(false) in main() catch"),p.debug("TTY_STATE",` Error: ${s.message}`),process.stdin.setRawMode(false),p.debug("TTY_STATE","\u2705 setRawMode(false) completed in main() catch")),console.error(Oe.red(`
|
|
3977
3977
|
[x] Unexpected error:`),s.message),process.exit(1);});export{lb as originalConsole};
|