niumagents-cli 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/nium.js +557 -379
  2. package/package.json +97 -97
package/dist/nium.js CHANGED
@@ -1,15 +1,11 @@
1
1
  #!/usr/bin/env node
2
- var al=Object.defineProperty;var S=(o,e)=>()=>(o&&(e=o(o=0)),e);var j=(o,e)=>{for(var t in e)al(o,t,{get:e[t],enumerable:!0})};import{existsSync as ke,mkdirSync as Qt,copyFileSync as ui,writeFileSync as cl}from"fs";import{join as se,dirname as gi}from"path";import{fileURLToPath as ll}from"url";import oe from"chalk";function pi(){let o=[se(Zt,"..","..","examples"),se(Zt,"..","examples"),se(Zt,"examples"),se(Zt,"..","..","..","examples")];for(let e of o)if(ke(e))return gi(e);return se(Zt,"..")}function mi(){return vo||(vo=se(process.cwd(),".nium")),vo}function ul(){if(!To){let o=pi();To=se(o,"examples","config.example.json")}return To}function gl(){if(!bo){let o=pi();bo=se(o,"examples",".env.example")}return bo}function di(){let o=mi(),e=ul();try{if(!ke(o)){console.log(oe.blue("\u{1F527} \u521D\u59CB\u5316\u5DE5\u4F5C\u76EE\u5F55...")),Qt(o,{recursive:!0}),console.log(oe.green("\u2713 \u521B\u5EFA .nium \u76EE\u5F55"));let c=se(o,"config.json");ke(e)?(ui(e,c),console.log(oe.green("\u2713 \u590D\u5236 config.example.json \u5230 .nium/config.json")),console.log(oe.yellow(`
3
- \u26A0\uFE0F \u8BF7\u7F16\u8F91 .nium/config.json \u6587\u4EF6\u914D\u7F6E API \u5BC6\u94A5\u548C\u6A21\u578B
4
- `))):(console.log(oe.yellow(`\u26A0\uFE0F \u672A\u627E\u5230 config.example.json: ${e}`)),cl(c,JSON.stringify({models:{defaultModel:{apiKey:"your-api-key-here",baseURL:"https://api.openai.com/v1",model:"gpt-4o",provider:"openai",maxToken:128e3},liteModel:{apiKey:"your-api-key-here",baseURL:"https://api.openai.com/v1",model:"gpt-3.5-turbo",provider:"openai",maxToken:16385}},mcpServers:[]},null,2)),console.log(oe.green("\u2713 \u521B\u5EFA\u9ED8\u8BA4\u7684 .nium/config.json \u6587\u4EF6")),console.log(oe.yellow(`
5
- \u26A0\uFE0F \u8BF7\u7F16\u8F91 .nium/config.json \u6587\u4EF6\u914D\u7F6E API \u5BC6\u94A5\u548C\u6A21\u578B
6
- `)))}let t=se(o,"agents");ke(t)||(Qt(t,{recursive:!0}),console.log(oe.green("\u2713 \u521B\u5EFA .nium/agents \u76EE\u5F55")));let n=se(o,"docs");ke(n)||(Qt(n,{recursive:!0}),console.log(oe.green("\u2713 \u521B\u5EFA .nium/docs \u76EE\u5F55")));let r=se(o,"archives");ke(r)||(Qt(r,{recursive:!0}),console.log(oe.green("\u2713 \u521B\u5EFA .nium/archives \u76EE\u5F55")));let s=se(o,"logs");ke(s)||(Qt(s,{recursive:!0}),console.log(oe.green("\u2713 \u521B\u5EFA .nium/logs \u76EE\u5F55")));let i=gl(),a=se(o,".env");return ke(a)||(ke(i)?(ui(i,a),console.log(oe.green("\u2713 \u590D\u5236 examples/.env.example \u5230 .nium/.env"))):(console.log(oe.yellow(`\u26A0\uFE0F \u672A\u627E\u5230 .env.example: ${i}`)),console.log(oe.yellow(" \u5C06\u4F7F\u7528\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF\u914D\u7F6E")))),o}catch(t){console.log(oe.red(`\u274C \u521D\u59CB\u5316\u5DE5\u4F5C\u76EE\u5F55\u5931\u8D25: ${t.message}`)),process.exit(1)}}function le(o){return se(mi(),o)}var Zt,vo,bo,To,Le=S(()=>{Zt=typeof __dirname<"u"?__dirname:gi(ll(import.meta.url)),vo=null,bo=null,To=null});var ko,gr,Po=S(()=>{ko={level:"INFO",debugMode:!1,consoleOutput:!0,fileOutput:!0,enableTimestamp:!0,rotationStrategy:"daily",maxFileSize:10485760,maxFiles:30},gr={ERROR:0,WARN:1,INFO:2,SUCCESS:2,DEBUG:3,TRACE:4}});import gt from"chalk";var en,D,tn=S(()=>{en=class{colors;constructor(){this.colors={INFO:gt.blue,WARN:gt.yellow,ERROR:gt.red,SUCCESS:gt.green,DEBUG:gt.magenta,TRACE:gt.gray}}format(e){let t="";if(e.timestamp){let n=new Date(e.timestamp).toLocaleString("zh-CN");t+=`[${n}] `}return t+=`[${e.level.padEnd(7)}] ${e.message}`,e.context&&(t+=` ${JSON.stringify(e.context)}`),t}colorize(e,t){let n=this.colors[t];return n(e)}},D=new en});import{existsSync as pl,readFileSync as ml,appendFileSync as fi,writeFileSync as dl,createReadStream as fl}from"fs";import{createInterface as hl}from"readline";var pe,me,nn=S(()=>{pe=class{filePath;constructor(e){this.filePath=e}append(e){try{let t=JSON.stringify(e)+`
7
- `;fi(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to append to JSONL file: ${t.message}`)}}appendBatch(e){try{let t=e.map(n=>JSON.stringify(n)).join(`
2
+ var Fl=Object.defineProperty;var $r=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var C=(o,e)=>()=>(o&&(e=o(o=0)),e);var j=(o,e)=>{for(var t in e)Fl(o,t,{get:e[t],enumerable:!0})};import ne from"chalk";function jl(o){ht={...ht,...o}}function _o(o){ht.enableDebug=o}function sn(o,e,t,n=!0){let r=[],s=/^[✓✗⚠ℹ◆●]/.test(t);return n&&ht.enableSymbol&&o!=="INFO"&&!s&&r.push(ki[o](Ol[o])),e&&ht.enablePrefix&&r.push(ne.gray(`[${e}]`)),r.push(ki[o](t)),r.join(" ")}function ke(o,e=null){console.error(sn("ERROR",e,o))}function W(o,e=null){console.warn(sn("WARN",e,o))}function se(o,e=null){console.log(sn("INFO",e,o,!1))}function _(o,e=null){console.log(sn("SUCCESS",e,o))}function No(o,e=null){ht.enableDebug&&console.log(sn("DEBUG",e,o))}function an(o){console.log(o)}function Mr(o="\u2500",e=50){console.log(ne.gray(o.repeat(e)))}function _l(o,e="\u2550",t=50){let n=Math.max(0,Math.floor((t-o.length-2)/2)),r=e.repeat(t),s=e.repeat(n)+` ${o} `+e.repeat(n);console.log(ne.cyan(r)),console.log(ne.cyan(s)),console.log(ne.cyan(r))}function Nl(o,e,t){let n=Math.round(o/e*100),r="\u2588".repeat(Math.floor(n/5))+"\u2591".repeat(20-Math.floor(n/5));console.log(ne.blue(`[${o}/${e}]`)+" "+ne.cyan(r)+" "+ne.white(`${n}%`)+" "+ne.gray(t))}function Ul(o){for(let[e,t]of Object.entries(o))console.log(ne.cyan(` ${e}: `)+ne.white(t))}function Uo(){console.clear()}var Ol,ki,ht,cn=C(()=>{Ol={SUCCESS:"\u2713",ERROR:"\u2717",WARN:"\u26A0",INFO:"\u2139",DEBUG:"\u25C6"},ki={ERROR:ne.red,WARN:ne.yellow,INFO:ne.blue,SUCCESS:ne.green,DEBUG:ne.magenta},ht={enableDebug:!1,enablePrefix:!0,enableSymbol:!0}});import{existsSync as Me,mkdirSync as ln,copyFileSync as Ei,writeFileSync as Wl}from"fs";import{join as ie,dirname as Pi}from"path";import{fileURLToPath as Vl}from"url";function $i(){let o=[ie(un,"..","..","examples"),ie(un,"..","examples"),ie(un,"examples"),ie(un,"..","..","..","examples")];for(let e of o)if(Me(e))return Pi(e);return ie(un,"..")}function Mi(){return Wo||(Wo=ie(process.cwd(),".nium")),Wo}function zl(){if(!zo){let o=$i();zo=ie(o,"examples","config.example.json")}return zo}function Hl(){if(!Vo){let o=$i();Vo=ie(o,"examples",".env.example")}return Vo}function Ii(){let o=Mi(),e=zl();try{if(!Me(o)){se("\u521D\u59CB\u5316\u5DE5\u4F5C\u76EE\u5F55...","Init"),ln(o,{recursive:!0}),_("\u521B\u5EFA .nium \u76EE\u5F55","Init");let c=ie(o,"config.json");Me(e)?(Ei(e,c),_("\u590D\u5236 config.example.json \u5230 .nium/config.json","Init"),W("\u8BF7\u7F16\u8F91 .nium/config.json \u6587\u4EF6\u914D\u7F6E API \u5BC6\u94A5\u548C\u6A21\u578B","Init")):(W(`\u672A\u627E\u5230 config.example.json: ${e}`,"Init"),Wl(c,JSON.stringify({models:{defaultModel:{apiKey:"your-api-key-here",baseURL:"https://api.openai.com/v1",model:"gpt-4o",provider:"openai",maxToken:128e3},liteModel:{apiKey:"your-api-key-here",baseURL:"https://api.openai.com/v1",model:"gpt-3.5-turbo",provider:"openai",maxToken:16385}},mcpServers:[]},null,2)),_("\u521B\u5EFA\u9ED8\u8BA4\u7684 .nium/config.json \u6587\u4EF6","Init"),W("\u8BF7\u7F16\u8F91 .nium/config.json \u6587\u4EF6\u914D\u7F6E API \u5BC6\u94A5\u548C\u6A21\u578B","Init"))}let t=ie(o,"agents");Me(t)||(ln(t,{recursive:!0}),_("\u521B\u5EFA .nium/agents \u76EE\u5F55","Init"));let n=ie(o,"docs");Me(n)||(ln(n,{recursive:!0}),_("\u521B\u5EFA .nium/docs \u76EE\u5F55","Init"));let r=ie(o,"archives");Me(r)||(ln(r,{recursive:!0}),_("\u521B\u5EFA .nium/archives \u76EE\u5F55","Init"));let s=ie(o,"logs");Me(s)||(ln(s,{recursive:!0}),_("\u521B\u5EFA .nium/logs \u76EE\u5F55","Init"));let i=Hl(),a=ie(o,".env");return Me(a)||(Me(i)?(Ei(i,a),_("\u590D\u5236 examples/.env.example \u5230 .nium/.env","Init")):(W(`\u672A\u627E\u5230 .env.example: ${i}`,"Init"),W("\u5C06\u4F7F\u7528\u9ED8\u8BA4\u73AF\u5883\u53D8\u91CF\u914D\u7F6E","Init"))),o}catch(t){ke(`\u521D\u59CB\u5316\u5DE5\u4F5C\u76EE\u5F55\u5931\u8D25: ${t.message}`,"Init"),process.exit(1)}}function ge(o){return ie(Mi(),o)}var un,Wo,Vo,zo,je=C(()=>{cn();un=typeof __dirname<"u"?__dirname:Pi(Vl(import.meta.url)),Wo=null,Vo=null,zo=null});var Ho,Ir,Jo=C(()=>{Ho={level:"INFO",debugMode:!1,consoleOutput:!0,fileOutput:!0,enableTimestamp:!0,rotationStrategy:"daily",maxFileSize:10485760,maxFiles:30},Ir={ERROR:0,WARN:1,INFO:2,SUCCESS:2,DEBUG:3,TRACE:4}});import yt from"chalk";var gn,D,pn=C(()=>{gn=class{colors;constructor(){this.colors={INFO:yt.blue,WARN:yt.yellow,ERROR:yt.red,SUCCESS:yt.green,DEBUG:yt.magenta,TRACE:yt.gray}}format(e){let t="";if(e.timestamp){let i=new Date(e.timestamp).toLocaleString("zh-CN");t+=`[${i}] `}let n={INFO:"",WARN:"\u26A0",ERROR:"\u2717",SUCCESS:"\u2713",DEBUG:"\u25C6",TRACE:"\u25CF"},r=/^[✓✗⚠ℹ◆●]/.test(e.message),s=e.level==="INFO"||r?"":`${n[e.level]} `;return t+=`[${e.level.padEnd(7)}] ${s}${e.message}`,e.context&&(t+=` ${JSON.stringify(e.context)}`),t}colorize(e,t){let n=this.colors[t];return n(e)}},D=new gn});import{existsSync as Jl,readFileSync as Gl,appendFileSync as Ai,writeFileSync as Bl,createReadStream as ql}from"fs";import{createInterface as Kl}from"readline";var me,fe,dn=C(()=>{me=class{filePath;constructor(e){this.filePath=e}append(e){try{let t=JSON.stringify(e)+`
3
+ `;Ai(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to append to JSONL file: ${t.message}`)}}appendBatch(e){try{let t=e.map(n=>JSON.stringify(n)).join(`
8
4
  `)+`
9
- `;fi(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to append batch to JSONL file: ${t.message}`)}}create(e){try{let t=JSON.stringify(e)+`
10
- `;dl(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to create JSONL file: ${t.message}`)}}getFilePath(){return this.filePath}},me=class{filePath;constructor(e){this.filePath=e}exists(){return pl(this.filePath)}readAllSync(e={}){if(!this.exists())return[];try{let n=ml(this.filePath,"utf-8").split(`
11
- `).filter(c=>c.trim().length>0),r=[],s=e.startLine||0,i=e.limit?s+e.limit:n.length,a=n.slice(s,i);for(let c of a)try{let l=JSON.parse(c);(!e.filter||e.filter(l))&&r.push(l)}catch{console.warn(`Invalid JSON line in ${this.filePath}: ${c.substring(0,50)}...`)}return r}catch(t){throw new Error(`Failed to read JSONL file: ${t.message}`)}}async readStream(e,t={}){if(this.exists())return new Promise((n,r)=>{let s=fl(this.filePath,{encoding:"utf-8"}),i=hl({input:s,crlfDelay:1/0}),a=0,c=0,l=t.startLine||0,{limit:g}=t;i.on("line",async p=>{try{if(p.trim().length===0)return;if(a<l){a++;return}if(g&&c>=g){i.close();return}let u=JSON.parse(p);(!t.filter||t.filter(u))&&(await e(u,a),c++),a++}catch{console.warn(`Invalid JSON line at line ${a}: ${p.substring(0,50)}...`),a++}}),i.on("close",()=>{n()}),i.on("error",p=>{r(new Error(`Failed to read JSONL stream: ${p.message}`))})})}async count(){if(!this.exists())return 0;let e=0;return await this.readStream(()=>{e++}),e}getFilePath(){return this.filePath}}});import{existsSync as $o,mkdirSync as yl,renameSync as Cl,writeFileSync as hi}from"fs";import{join as rn}from"path";function pr(){return ne.initLogger()}function yi(o){ne.configureLogger(o)}function mr(o){ne.setDebugMode(o)}function Ci(o){ne.setLogLevel(o)}function Si(o){ne.setFormatter(o)}var on,ne,Eo=S(()=>{Le();nn();Po();tn();on=class{config;logsDir;currentLogPath;logDatePath;isInitialized=!1;formatter;constructor(){this.config={...ko},this.logsDir=le("logs"),this.currentLogPath=rn(this.logsDir,"current.jsonl"),this.logDatePath=rn(this.logsDir,".current_date"),this.formatter=D}getTodayDateString(){let e=new Date,t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${r}`}async getLogFileDate(){try{return $o(this.logDatePath)&&new me(this.logDatePath).readAllSync()[0]?.date||null}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(D.colorize(`\u8BFB\u53D6\u65E5\u5FD7\u6587\u4EF6\u65E5\u671F\u5931\u8D25: ${t}`,"ERROR")),null}}async archiveLogFile(e){try{let t=rn(this.logsDir,`${e}.jsonl`);if($o(t)){let r=new me(this.currentLogPath).readAllSync();await new pe(t).appendBatch(r),console.log(D.colorize(`\u2713 \u65E5\u5FD7\u5DF2\u8FFD\u52A0\u5230\u5F52\u6863\u6587\u4EF6: ${e}.jsonl`,"SUCCESS"))}else Cl(this.currentLogPath,t),console.log(D.colorize(`\u2713 \u65E5\u5FD7\u5DF2\u5F52\u6863: ${e}.jsonl`,"SUCCESS"))}catch(t){let n=t instanceof Error?t.message:String(t);console.error(D.colorize(`\u5F52\u6863\u65E5\u5FD7\u5931\u8D25: ${n}`,"ERROR"))}}async createNewLogFile(e){try{hi(this.currentLogPath,"","utf-8"),hi(this.logDatePath,JSON.stringify({date:e})+`
12
- `,"utf-8");let t=new pe(this.currentLogPath),n={timestamp:new Date().toISOString(),level:"INFO",message:`\u65E5\u5FD7\u6587\u4EF6\u521B\u5EFA - \u65E5\u671F: ${e}`,date:e};await t.append(n)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(D.colorize(`\u521B\u5EFA\u65E5\u5FD7\u6587\u4EF6\u5931\u8D25: ${n}`,"ERROR"))}}async initLogger(){try{$o(this.logsDir)||(yl(this.logsDir,{recursive:!0}),console.log(D.colorize("\u521B\u5EFA\u65E5\u5FD7\u76EE\u5F55: .nium/logs","DEBUG")));let e=this.getTodayDateString(),t=await this.getLogFileDate();(!t||t!==e)&&(t&&(console.log(D.colorize(`\u68C0\u6D4B\u5230\u65E7\u65E5\u5FD7\u6587\u4EF6 (${t})\uFF0C\u6B63\u5728\u5F52\u6863...`,"WARN")),await this.archiveLogFile(t)),await this.createNewLogFile(e),console.log(D.colorize(`\u2713 \u521B\u5EFA\u65B0\u65E5\u5FD7\u6587\u4EF6: ${e}`,"SUCCESS"))),this.isInitialized=!0}catch(e){let t=e instanceof Error?e.message:String(e);console.error(D.colorize(`\u521D\u59CB\u5316\u65E5\u5FD7\u7CFB\u7EDF\u5931\u8D25: ${t}`,"ERROR"))}}configureLogger(e){this.config={...this.config,...e},e.logDir&&(this.logsDir=e.logDir,this.currentLogPath=rn(this.logsDir,"current.jsonl"),this.logDatePath=rn(this.logsDir,".current_date")),e.formatter&&(this.formatter=e.formatter)}setFormatter(e){this.formatter=e}shouldLog(e){let t=this.config.debugMode?"DEBUG":this.config.level;return gr[e]<=gr[t]}extractSessionId(e){if(e&&typeof e=="object")return e.sessionId||e.id}hasContextLogMethod(e,t){return e&&typeof e[t]=="function"}async writeLog(e,t,n=null){try{if(!this.shouldLog(e))return;this.isInitialized||await this.initLogger();let r=typeof t=="string"?t:JSON.stringify(t),s=e.toLowerCase();if(this.hasContextLogMethod(n,s)){n[s](t);return}let i=new Date().toISOString(),a=this.getTodayDateString(),c={timestamp:i,level:e,message:r,sessionId:this.extractSessionId(n),date:a};if(this.config.consoleOutput){let l=this.formatter.format(c),g=this.formatter.colorize(l,e);console.log(g)}this.config.fileOutput&&await new pe(this.currentLogPath).append(c)}catch(r){let s=r instanceof Error?r.message:String(r);console.error(D.colorize(`\u5199\u5165\u65E5\u5FD7\u5931\u8D25: ${s}`,"ERROR"))}}setDebugMode(e){this.config.debugMode=e}setLogLevel(e){this.config.level=e}},ne=new on});import{join as xi}from"path";async function wi(o){try{let e=le("logs"),t=xi(e,"current.jsonl"),n=new me(t);return await n.exists()?await n.readAllSync({filter:o?.level?s=>s.level===o.level:void 0,limit:o?.limit}):[]}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(D.colorize(`\u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${t}`,"ERROR")),[]}}async function vi(o,e){try{let t=le("logs"),n=xi(t,`${o}.jsonl`),r=new me(n);return await r.exists()?await r.readAllSync({filter:e?.level?i=>i.level===e.level:void 0,limit:e?.limit}):[]}catch(t){let n=t instanceof Error?t.message:String(t);return console.error(D.colorize(`\u8BFB\u53D6\u5F52\u6863\u65E5\u5FD7\u5931\u8D25: ${n}`,"ERROR")),[]}}function bi(o){return`[${new Date(o.timestamp).toLocaleString("zh-CN")}] [${o.level.padEnd(7)}] ${o.message}`}function Ti(o){let e={total:o.length,byLevel:{INFO:0,WARN:0,ERROR:0,SUCCESS:0,DEBUG:0,TRACE:0}};for(let t of o)t.level in e.byLevel&&e.byLevel[t.level]++;return e}var ki=S(()=>{Le();nn();tn()});async function Pi(o,e=null){await ne.writeLog("INFO",o,e)}async function $(o,e=null){await ne.writeLog("INFO",o,e)}async function $i(o,e=null){await ne.writeLog("SUCCESS",o,e)}async function Mo(o,e=null){await ne.writeLog("WARN",o,e)}async function H(o,e=null){await Mo(o,e)}async function K(o,e=null){await ne.writeLog("ERROR",o,e)}async function C(o,e=null){await ne.writeLog("DEBUG",o,e)}async function Ei(o,e=null){await ne.writeLog("TRACE",o,e)}function J(o,e=null){Pi(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Be(o,e=null){$(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function sn(o,e=null){$i(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function pt(o,e=null){Mo(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Io(o,e=null){H(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function de(o,e=null){K(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Z(o,e=null){C(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Sl(o,e=null){Ei(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}var Mi=S(()=>{Eo();tn()});var Ao={};j(Ao,{ChalkFormatter:()=>en,DEFAULT_CONFIG:()=>ko,LOG_LEVEL_PRIORITIES:()=>gr,LoggerManager:()=>on,configureLogger:()=>yi,default:()=>ne,defaultFormatter:()=>D,formatLogEntry:()=>bi,getLogStats:()=>Ti,initLogger:()=>pr,log:()=>Pi,logDebug:()=>C,logDebugSync:()=>Z,logError:()=>K,logErrorSync:()=>de,logInfo:()=>$,logInfoSync:()=>Be,logSuccess:()=>$i,logSuccessSync:()=>sn,logSync:()=>J,logTrace:()=>Ei,logTraceSync:()=>Sl,logWarn:()=>H,logWarnSync:()=>Io,logWarning:()=>Mo,logWarningSync:()=>pt,loggerManager:()=>ne,readArchivedLogs:()=>vi,readCurrentLogs:()=>wi,setDebugMode:()=>mr,setFormatter:()=>Si,setLogLevel:()=>Ci});var Y=S(()=>{Po();tn();Eo();ki();Mi()});import{existsSync as Ii,mkdirSync as xl,readdirSync as wl}from"fs";import{join as Ai}from"path";function Li(){Ii(mt)||xl(mt,{recursive:!0})}function Ri(o){if(!o||!o.messages||o.messages.length===0)return null;Li();let e=new Date().toISOString().replace(/[:.]/g,"-"),t=o.sessionId?o.sessionId.substring(0,8):"unknown",n=o.currentTask?o.currentTask.substring(0,30).replace(/[^\w\u4e00-\u9fa5]/g,"_"):"unnamed",r=`session_${t}_${e}_${n}.jsonl`,s=Ai(mt,r),i={type:"session_metadata",data:{sessionId:o.sessionId,currentTask:o.currentTask,createdAt:o.createdAt,archivedAt:new Date().toISOString(),messageCount:o.messages.length,taskCount:o.tasks?o.tasks.length:0}};try{let a=new pe(s);if(a.create(i),o.tasks&&o.tasks.length>0){let c={type:"tasks_data",data:o.tasks};a.append(c)}o.messages&&o.messages.length>0&&o.messages.map(l=>({...l,id:l.id||`msg_${Date.now()}_${Math.random().toString(36).substr(2,9)}`})).forEach(l=>{a.append({type:"message",data:l})})}catch(a){return console.error("\u5F52\u6863\u4F1A\u8BDD\u5931\u8D25:",a),null}return s}function vl(){return Li(),Ii(mt)?wl(mt).filter(e=>e.endsWith(".jsonl")).map(e=>{let t=Ai(mt,e);try{let r=new me(t).readAllSync({limit:1})[0];return!r||r.type!=="session_metadata"?null:{fileName:e,filePath:t,sessionId:r.data.sessionId,sessionIdShort:r.data.sessionId?r.data.sessionId.substring(0,8):"unknown",currentTask:r.data.currentTask||"\u672A\u547D\u540D\u4EFB\u52A1",timestamp:r.data.archivedAt,archivedAt:r.data.archivedAt,messageCount:r.data.messageCount||0,taskCount:r.data.taskCount||0}}catch(n){return console.error(`\u8BFB\u53D6\u5F52\u6863\u6587\u4EF6\u5931\u8D25: ${e}`,n),null}}).filter(e=>e!==null).sort((e,t)=>new Date(t.archivedAt).getTime()-new Date(e.archivedAt).getTime()):[]}function Di(){let o=vl();if(o.length===0)return"\u6682\u65E0\u5F52\u6863\u4F1A\u8BDD";let e=`
5
+ `;Ai(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to append batch to JSONL file: ${t.message}`)}}create(e){try{let t=JSON.stringify(e)+`
6
+ `;Bl(this.filePath,t,"utf-8")}catch(t){throw new Error(`Failed to create JSONL file: ${t.message}`)}}getFilePath(){return this.filePath}},fe=class{filePath;constructor(e){this.filePath=e}exists(){return Jl(this.filePath)}readAllSync(e={}){if(!this.exists())return[];try{let n=Gl(this.filePath,"utf-8").split(`
7
+ `).filter(c=>c.trim().length>0),r=[],s=e.startLine||0,i=e.limit?s+e.limit:n.length,a=n.slice(s,i);for(let c of a)try{let l=JSON.parse(c);(!e.filter||e.filter(l))&&r.push(l)}catch{console.warn(`Invalid JSON line in ${this.filePath}: ${c.substring(0,50)}...`)}return r}catch(t){throw new Error(`Failed to read JSONL file: ${t.message}`)}}async readStream(e,t={}){if(this.exists())return new Promise((n,r)=>{let s=ql(this.filePath,{encoding:"utf-8"}),i=Kl({input:s,crlfDelay:1/0}),a=0,c=0,l=t.startLine||0,{limit:u}=t;i.on("line",async p=>{try{if(p.trim().length===0)return;if(a<l){a++;return}if(u&&c>=u){i.close();return}let g=JSON.parse(p);(!t.filter||t.filter(g))&&(await e(g,a),c++),a++}catch{console.warn(`Invalid JSON line at line ${a}: ${p.substring(0,50)}...`),a++}}),i.on("close",()=>{n()}),i.on("error",p=>{r(new Error(`Failed to read JSONL stream: ${p.message}`))})})}async count(){if(!this.exists())return 0;let e=0;return await this.readStream(()=>{e++}),e}getFilePath(){return this.filePath}}});import{existsSync as Go,mkdirSync as Yl,renameSync as Xl,writeFileSync as Li}from"fs";import{join as mn}from"path";function Ar(){return re.initLogger()}function Ri(o){re.configureLogger(o)}function Lr(o){re.setDebugMode(o)}function Di(o){re.setLogLevel(o)}function Fi(o){re.setFormatter(o)}var fn,re,Bo=C(()=>{je();dn();Jo();pn();fn=class{config;logsDir;currentLogPath;logDatePath;isInitialized=!1;formatter;constructor(){this.config={...Ho},this.logsDir=ge("logs"),this.currentLogPath=mn(this.logsDir,"current.jsonl"),this.logDatePath=mn(this.logsDir,".current_date"),this.formatter=D}getTodayDateString(){let e=new Date,t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${r}`}async getLogFileDate(){try{return Go(this.logDatePath)&&new fe(this.logDatePath).readAllSync()[0]?.date||null}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(D.colorize(`\u8BFB\u53D6\u65E5\u5FD7\u6587\u4EF6\u65E5\u671F\u5931\u8D25: ${t}`,"ERROR")),null}}async archiveLogFile(e){try{let t=mn(this.logsDir,`${e}.jsonl`);if(Go(t)){let r=new fe(this.currentLogPath).readAllSync();await new me(t).appendBatch(r),console.log(D.colorize(`\u2713 \u65E5\u5FD7\u5DF2\u8FFD\u52A0\u5230\u5F52\u6863\u6587\u4EF6: ${e}.jsonl`,"SUCCESS"))}else Xl(this.currentLogPath,t),console.log(D.colorize(`\u2713 \u65E5\u5FD7\u5DF2\u5F52\u6863: ${e}.jsonl`,"SUCCESS"))}catch(t){let n=t instanceof Error?t.message:String(t);console.error(D.colorize(`\u5F52\u6863\u65E5\u5FD7\u5931\u8D25: ${n}`,"ERROR"))}}async createNewLogFile(e){try{Li(this.currentLogPath,"","utf-8"),Li(this.logDatePath,JSON.stringify({date:e})+`
8
+ `,"utf-8");let t=new me(this.currentLogPath),n={timestamp:new Date().toISOString(),level:"INFO",message:`\u65E5\u5FD7\u6587\u4EF6\u521B\u5EFA - \u65E5\u671F: ${e}`,date:e};await t.append(n)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(D.colorize(`\u521B\u5EFA\u65E5\u5FD7\u6587\u4EF6\u5931\u8D25: ${n}`,"ERROR"))}}async initLogger(){try{Go(this.logsDir)||(Yl(this.logsDir,{recursive:!0}),console.log(D.colorize("\u521B\u5EFA\u65E5\u5FD7\u76EE\u5F55: .nium/logs","DEBUG")));let e=this.getTodayDateString(),t=await this.getLogFileDate();(!t||t!==e)&&(t&&(console.log(D.colorize(`\u68C0\u6D4B\u5230\u65E7\u65E5\u5FD7\u6587\u4EF6 (${t})\uFF0C\u6B63\u5728\u5F52\u6863...`,"WARN")),await this.archiveLogFile(t)),await this.createNewLogFile(e),console.log(D.colorize(`\u2713 \u521B\u5EFA\u65B0\u65E5\u5FD7\u6587\u4EF6: ${e}`,"SUCCESS"))),this.isInitialized=!0}catch(e){let t=e instanceof Error?e.message:String(e);console.error(D.colorize(`\u521D\u59CB\u5316\u65E5\u5FD7\u7CFB\u7EDF\u5931\u8D25: ${t}`,"ERROR"))}}configureLogger(e){this.config={...this.config,...e},e.logDir&&(this.logsDir=e.logDir,this.currentLogPath=mn(this.logsDir,"current.jsonl"),this.logDatePath=mn(this.logsDir,".current_date")),e.formatter&&(this.formatter=e.formatter)}setFormatter(e){this.formatter=e}shouldLog(e){let t=this.config.debugMode?"DEBUG":this.config.level;return Ir[e]<=Ir[t]}extractSessionId(e){if(e&&typeof e=="object")return e.sessionId||e.id}hasContextLogMethod(e,t){return e&&typeof e[t]=="function"}async writeLog(e,t,n=null){try{if(!this.shouldLog(e))return;this.isInitialized||await this.initLogger();let r=typeof t=="string"?t:JSON.stringify(t),s=e.toLowerCase();if(this.hasContextLogMethod(n,s)){n[s](t);return}let i=new Date().toISOString(),a=this.getTodayDateString(),c={timestamp:i,level:e,message:r,sessionId:this.extractSessionId(n),date:a};if(this.config.consoleOutput){let l=this.formatter.format(c),u=this.formatter.colorize(l,e);console.log(u)}this.config.fileOutput&&await new me(this.currentLogPath).append(c)}catch(r){let s=r instanceof Error?r.message:String(r);console.error(D.colorize(`\u5199\u5165\u65E5\u5FD7\u5931\u8D25: ${s}`,"ERROR"))}}setDebugMode(e){this.config.debugMode=e}setLogLevel(e){this.config.level=e}},re=new fn});import{join as Oi}from"path";async function ji(o){try{let e=ge("logs"),t=Oi(e,"current.jsonl"),n=new fe(t);return await n.exists()?await n.readAllSync({filter:o?.level?s=>s.level===o.level:void 0,limit:o?.limit}):[]}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(D.colorize(`\u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${t}`,"ERROR")),[]}}async function _i(o,e){try{let t=ge("logs"),n=Oi(t,`${o}.jsonl`),r=new fe(n);return await r.exists()?await r.readAllSync({filter:e?.level?i=>i.level===e.level:void 0,limit:e?.limit}):[]}catch(t){let n=t instanceof Error?t.message:String(t);return console.error(D.colorize(`\u8BFB\u53D6\u5F52\u6863\u65E5\u5FD7\u5931\u8D25: ${n}`,"ERROR")),[]}}function Ni(o){return`[${new Date(o.timestamp).toLocaleString("zh-CN")}] [${o.level.padEnd(7)}] ${o.message}`}function Ui(o){let e={total:o.length,byLevel:{INFO:0,WARN:0,ERROR:0,SUCCESS:0,DEBUG:0,TRACE:0}};for(let t of o)t.level in e.byLevel&&e.byLevel[t.level]++;return e}var Wi=C(()=>{je();dn();pn()});async function Vi(o,e=null){await re.writeLog("INFO",o,e)}async function M(o,e=null){await re.writeLog("INFO",o,e)}async function zi(o,e=null){await re.writeLog("SUCCESS",o,e)}async function qo(o,e=null){await re.writeLog("WARN",o,e)}async function G(o,e=null){await qo(o,e)}async function X(o,e=null){await re.writeLog("ERROR",o,e)}async function x(o,e=null){await re.writeLog("DEBUG",o,e)}async function Hi(o,e=null){await re.writeLog("TRACE",o,e)}function B(o,e=null){Vi(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Qe(o,e=null){M(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function hn(o,e=null){zi(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Ct(o,e=null){qo(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Ko(o,e=null){G(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function he(o,e=null){X(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Z(o,e=null){x(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}function Ql(o,e=null){Hi(o,e).catch(t=>console.error(D.colorize(`\u65E5\u5FD7\u5199\u5165\u5931\u8D25: ${t}`,"ERROR")))}var Ji=C(()=>{Bo();pn()});var Yo={};j(Yo,{ChalkFormatter:()=>gn,DEFAULT_CONFIG:()=>Ho,LOG_LEVEL_PRIORITIES:()=>Ir,LoggerManager:()=>fn,configureLogger:()=>Ri,consoleClear:()=>Uo,consoleDebug:()=>No,consoleError:()=>ke,consoleInfo:()=>se,consolePlain:()=>an,consoleProgress:()=>Nl,consoleSeparator:()=>Mr,consoleStats:()=>Ul,consoleSuccess:()=>_,consoleTitle:()=>_l,consoleWarn:()=>W,default:()=>re,defaultFormatter:()=>D,formatLogEntry:()=>Ni,getLogStats:()=>Ui,initLogger:()=>Ar,log:()=>Vi,logDebug:()=>x,logDebugSync:()=>Z,logError:()=>X,logErrorSync:()=>he,logInfo:()=>M,logInfoSync:()=>Qe,logSuccess:()=>zi,logSuccessSync:()=>hn,logSync:()=>B,logTrace:()=>Hi,logTraceSync:()=>Ql,logWarn:()=>G,logWarnSync:()=>Ko,logWarning:()=>qo,logWarningSync:()=>Ct,loggerManager:()=>re,readArchivedLogs:()=>_i,readCurrentLogs:()=>ji,setConsoleDebugMode:()=>_o,setConsoleLoggerConfig:()=>jl,setDebugMode:()=>Lr,setFormatter:()=>Fi,setLogLevel:()=>Di});var Y=C(()=>{Jo();pn();Bo();Wi();Ji();cn()});import{existsSync as Gi,mkdirSync as Zl,readdirSync as eu}from"fs";import{join as Bi}from"path";function qi(){Gi(xt)||Zl(xt,{recursive:!0})}function Ki(o){if(!o||!o.messages||o.messages.length===0)return null;qi();let e=new Date().toISOString().replace(/[:.]/g,"-"),t=o.sessionId?o.sessionId.substring(0,8):"unknown",n=o.currentTask?o.currentTask.substring(0,30).replace(/[^\w\u4e00-\u9fa5]/g,"_"):"unnamed",r=`session_${t}_${e}_${n}.jsonl`,s=Bi(xt,r),i={type:"session_metadata",data:{sessionId:o.sessionId,currentTask:o.currentTask,createdAt:o.createdAt,archivedAt:new Date().toISOString(),messageCount:o.messages.length,taskCount:o.tasks?o.tasks.length:0}};try{let a=new me(s);if(a.create(i),o.tasks&&o.tasks.length>0){let c={type:"tasks_data",data:o.tasks};a.append(c)}o.messages&&o.messages.length>0&&o.messages.map(l=>({...l,id:l.id||`msg_${Date.now()}_${Math.random().toString(36).substr(2,9)}`})).forEach(l=>{a.append({type:"message",data:l})})}catch(a){return console.error("\u5F52\u6863\u4F1A\u8BDD\u5931\u8D25:",a),null}return s}function tu(){return qi(),Gi(xt)?eu(xt).filter(e=>e.endsWith(".jsonl")).map(e=>{let t=Bi(xt,e);try{let r=new fe(t).readAllSync({limit:1})[0];return!r||r.type!=="session_metadata"?null:{fileName:e,filePath:t,sessionId:r.data.sessionId,sessionIdShort:r.data.sessionId?r.data.sessionId.substring(0,8):"unknown",currentTask:r.data.currentTask||"\u672A\u547D\u540D\u4EFB\u52A1",timestamp:r.data.archivedAt,archivedAt:r.data.archivedAt,messageCount:r.data.messageCount||0,taskCount:r.data.taskCount||0}}catch(n){return console.error(`\u8BFB\u53D6\u5F52\u6863\u6587\u4EF6\u5931\u8D25: ${e}`,n),null}}).filter(e=>e!==null).sort((e,t)=>new Date(t.archivedAt).getTime()-new Date(e.archivedAt).getTime()):[]}function Yi(){let o=tu();if(o.length===0)return"\u6682\u65E0\u5F52\u6863\u4F1A\u8BDD";let e=`
13
9
  === \u5F52\u6863\u4F1A\u8BDD\u5217\u8868 ===
14
10
 
15
11
  `;return o.forEach((t,n)=>{let s=new Date(t.archivedAt).toLocaleString("zh-CN");e+=`[${n+1}] ${t.currentTask}
@@ -19,8 +15,7 @@ var al=Object.defineProperty;var S=(o,e)=>()=>(o&&(e=o(o=0)),e);var j=(o,e)=>{fo
19
15
  `,e+=` \u6D88\u606F\u6570\u91CF: ${t.messageCount}
20
16
  `,e+=` \u6587\u4EF6\u540D: ${t.fileName}
21
17
 
22
- `}),e}var mt,Lo=S(()=>{Le();nn();mt=le("archives")});function qe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){let e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)})}function Ro(){return"S"+qe()}function dr(){return"T"+qe()}var fr=S(()=>{});var ji={};j(ji,{SESSION_FILE:()=>Re,archiveSession:()=>Ke,associateMessageWithTask:()=>Fi,completeCurrentTask:()=>ht,loadSession:()=>Oo,saveSession:()=>ie,sessionState:()=>v,setCurrentTaskId:()=>ft,startNewTask:()=>hr});import{writeFileSync as bl,existsSync as Oi}from"fs";import dt from"chalk";function Do(){return{sessionId:Ro(),messages:[],tasks:[],currentTask:null,currentTaskId:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}function Tl(){try{v.messages&&v.messages.length>0&&Ri(v)&&C("\u4F1A\u8BDD\u5DF2\u5F52\u6863"),v=Do(),new pe(Re).create(v)}catch(o){let e=o instanceof Error?o.message:String(o);console.log(dt.yellow(`Warning: Failed to archive session - ${e}`)),v=Do();try{new pe(Re).create(v)}catch{}}}function Oo(){try{if(Oi(Re)){let e=new me(Re).readAllSync(),t=e.length>0?e[0]:null;return v={sessionId:t&&t.sessionId||Ro(),messages:t&&t.messages||[],tasks:t&&t.tasks||[],currentTask:t&&t.currentTask||null,currentTaskId:t&&t.currentTaskId||null,createdAt:t&&t.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()},!0}}catch(o){let e=o instanceof Error?o.message:String(o);console.log(dt.yellow(`Warning: Could not load session - ${e}`))}return!1}function hr(o){let e=dr(),t={id:e,description:o,createdAt:new Date().toISOString(),messageIds:[]};return v.tasks.push(t),v.currentTask=o,v.currentTaskId=e,e}function Fi(o){if(v.currentTaskId&&o){let e=v.currentTaskId;o.taskId=e;let t=v.tasks.find(n=>n.id===e);if(t&&!o.id){let n=qe();o.id=n,t.messageIds.push(n)}}return o}function ft(o){v.currentTaskId=o,v.updatedAt=new Date().toISOString(),ie(),console.log(dt.blue(`[\u4F1A\u8BDD\u7BA1\u7406] \u5F53\u524D\u4EFB\u52A1ID\u5DF2\u8BBE\u7F6E\u4E3A: ${o}`))}function ie(o,e=null){try{if(e&&e!==v.currentTask&&hr(e),o){let n=o.map(r=>Fi({...r}));v={...v,messages:n,updatedAt:new Date().toISOString()}}else v={...v,updatedAt:new Date().toISOString()};Oi(Re)&&bl(Re,"","utf-8"),new pe(Re).create(v)}catch(t){let n=t instanceof Error?t.message:String(t);console.log(dt.yellow(`Warning: Could not save session - ${n}`))}}function Ke(){return Tl()}function kl(){if(v.currentTask&&v.currentTaskId){let o=v.tasks.find(e=>e.id===v.currentTaskId);if(o){let e=o.tokenCount||0;console.log(dt.green(`
23
- \u2705 \u4EFB\u52A1\u5B8C\u6210: ${v.currentTask}`)),console.log(dt.blue(`\u{1F4CA} Token\u603B\u5F00\u9500: ${e.toLocaleString()} tokens`))}v.currentTask=null,v.currentTaskId=null,ie()}}function ht(){return kl()}var Re,v,De=S(()=>{Y();Le();Lo();nn();fr();Re=le("session.jsonl");v=Do()});var Fo,_i=S(()=>{Fo={name:"coder",description:"\u4EE3\u7801\u7F16\u5199\u548C\u5F00\u53D1\uFF0C\u5305\u62EC\u65B0\u6587\u4EF6\u521B\u5EFA\u548C\u73B0\u6709\u6587\u4EF6\u4FEE\u6539\uFF0C\u652F\u6301\u591A\u8BED\u8A00\u9879\u76EE",keywords:["code","\u4EE3\u7801","\u7F16\u7A0B","\u5F00\u53D1","\u5199\u4EE3\u7801","\u4EE3\u7801\u4FEE\u6539","\u65B0\u5EFA\u6587\u4EF6","\u4F9D\u8D56\u68C0\u67E5","\u5B9E\u73B0\u529F\u80FD","\u6DFB\u52A0\u7279\u6027","\u4FEE\u590Dbug","\u91CD\u6784","\u5B9E\u73B0","\u5F00\u53D1","\u7F16\u5199","\u521B\u5EFA\u7C7B","\u521B\u5EFA\u51FD\u6570","\u6DFB\u52A0\u65B9\u6CD5","\u5199\u4E00\u4E2A","\u751F\u6210\u4EE3\u7801","\u65B0\u589E\u529F\u80FD","feature","implement","develop","create","add function","add","method","write code","generate code","refactor code","fix code","update code","modify code","\u7F16\u7801","\u5199\u529F\u80FD","\u52A0\u529F\u80FD","\u6539\u4EE3\u7801","\u5199\u63A5\u53E3","\u5199API","\u5F00\u53D1\u63A5\u53E3","\u5B9E\u73B0\u63A5\u53E3"],prompt:`\u4F60\u662F\u4E00\u4F4D\u8DE8\u8BED\u8A00\u4EE3\u7801\u7F16\u5199\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u6839\u636E\u7528\u6237\u9700\u6C42\u7F16\u5199\u9AD8\u8D28\u91CF\u3001\u53EF\u7EF4\u62A4\u7684\u4EE3\u7801\uFF0C\u652F\u6301\u591A\u79CD\u7F16\u7A0B\u8BED\u8A00\u548C\u9879\u76EE\u7C7B\u578B\u3002
18
+ `}),e}var xt,Xo=C(()=>{je();dn();xt=ge("archives")});function Ze(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){let e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)})}function Qo(){return"S"+Ze()}function Rr(){return"T"+Ze()}var Dr=C(()=>{});var Zi={};j(Zi,{SESSION_FILE:()=>_e,archiveSession:()=>et,associateMessageWithTask:()=>Qi,completeCurrentTask:()=>vt,loadSession:()=>es,saveSession:()=>ce,sessionState:()=>b,setCurrentTaskId:()=>St,startNewTask:()=>Fr});import{writeFileSync as nu,existsSync as Xi}from"fs";function Zo(){return{sessionId:Qo(),messages:[],tasks:[],currentTask:null,currentTaskId:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}function ru(){try{b.messages&&b.messages.length>0&&Ki(b)&&x("\u4F1A\u8BDD\u5DF2\u5F52\u6863"),b=Zo(),new me(_e).create(b)}catch(o){let e=o instanceof Error?o.message:String(o);W(`Failed to archive session - ${e}`,"Session"),b=Zo();try{new me(_e).create(b)}catch{}}}function es(){try{if(Xi(_e)){let e=new fe(_e).readAllSync(),t=e.length>0?e[0]:null;return b={sessionId:t&&t.sessionId||Qo(),messages:t&&t.messages||[],tasks:t&&t.tasks||[],currentTask:t&&t.currentTask||null,currentTaskId:t&&t.currentTaskId||null,createdAt:t&&t.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()},!0}}catch(o){let e=o instanceof Error?o.message:String(o);W(`Could not load session - ${e}`,"Session")}return!1}function Fr(o){let e=Rr(),t={id:e,description:o,createdAt:new Date().toISOString(),messageIds:[]};return b.tasks.push(t),b.currentTask=o,b.currentTaskId=e,e}function Qi(o){if(b.currentTaskId&&o){let e=b.currentTaskId;o.taskId=e;let t=b.tasks.find(n=>n.id===e);if(t&&!o.id){let n=Ze();o.id=n,t.messageIds.push(n)}}return o}function St(o){b.currentTaskId=o,b.updatedAt=new Date().toISOString(),ce(),se(`\u5F53\u524D\u4EFB\u52A1ID\u5DF2\u8BBE\u7F6E\u4E3A: ${o}`,"Session")}function ce(o,e=null){try{if(e&&e!==b.currentTask&&Fr(e),o){let n=o.map(r=>Qi({...r}));b={...b,messages:n,updatedAt:new Date().toISOString()}}else b={...b,updatedAt:new Date().toISOString()};Xi(_e)&&nu(_e,"","utf-8"),new me(_e).create(b)}catch(t){let n=t instanceof Error?t.message:String(t);W(`Could not save session - ${n}`,"Session")}}function et(){return ru()}function ou(){if(b.currentTask&&b.currentTaskId){let o=b.tasks.find(e=>e.id===b.currentTaskId);if(o){let e=o.tokenCount||0;_(`\u4EFB\u52A1\u5B8C\u6210: ${b.currentTask}`,"Session"),se(`Token\u603B\u5F00\u9500: ${e.toLocaleString()} tokens`,"Session")}b.currentTask=null,b.currentTaskId=null,ce()}}function vt(){return ou()}var _e,b,Ne=C(()=>{cn();Y();je();Xo();dn();Dr();_e=ge("session.jsonl");b=Zo()});var ts,ea=C(()=>{ts={name:"coder",description:"\u4EE3\u7801\u7F16\u5199\u548C\u5F00\u53D1\uFF0C\u5305\u62EC\u65B0\u6587\u4EF6\u521B\u5EFA\u548C\u73B0\u6709\u6587\u4EF6\u4FEE\u6539\uFF0C\u652F\u6301\u591A\u8BED\u8A00\u9879\u76EE",keywords:["code","\u4EE3\u7801","\u7F16\u7A0B","\u5F00\u53D1","\u5199\u4EE3\u7801","\u4EE3\u7801\u4FEE\u6539","\u65B0\u5EFA\u6587\u4EF6","\u4F9D\u8D56\u68C0\u67E5","\u5B9E\u73B0\u529F\u80FD","\u6DFB\u52A0\u7279\u6027","\u4FEE\u590Dbug","\u91CD\u6784","\u5B9E\u73B0","\u5F00\u53D1","\u7F16\u5199","\u521B\u5EFA\u7C7B","\u521B\u5EFA\u51FD\u6570","\u6DFB\u52A0\u65B9\u6CD5","\u5199\u4E00\u4E2A","\u751F\u6210\u4EE3\u7801","\u65B0\u589E\u529F\u80FD","feature","implement","develop","create","add function","add","method","write code","generate code","refactor code","fix code","update code","modify code","\u7F16\u7801","\u5199\u529F\u80FD","\u52A0\u529F\u80FD","\u6539\u4EE3\u7801","\u5199\u63A5\u53E3","\u5199API","\u5F00\u53D1\u63A5\u53E3","\u5B9E\u73B0\u63A5\u53E3"],prompt:`\u4F60\u662F\u4E00\u4F4D\u8DE8\u8BED\u8A00\u4EE3\u7801\u7F16\u5199\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u6839\u636E\u7528\u6237\u9700\u6C42\u7F16\u5199\u9AD8\u8D28\u91CF\u3001\u53EF\u7EF4\u62A4\u7684\u4EE3\u7801\uFF0C\u652F\u6301\u591A\u79CD\u7F16\u7A0B\u8BED\u8A00\u548C\u9879\u76EE\u7C7B\u578B\u3002
24
19
 
25
20
  ## \u6838\u5FC3\u89C4\u5219
26
21
 
@@ -127,12 +122,22 @@ var al=Object.defineProperty;var S=(o,e)=>()=>(o&&(e=o(o=0)),e);var j=(o,e)=>{fo
127
122
  - \u91CD\u547D\u540D\u6807\u8BC6\u7B26\u6216\u6279\u91CF\u66FF\u6362 \u2192 \u4F7F\u7528 \`searchReplace()\`
128
123
  - \u7B80\u5355\u5B57\u7B26\u4E32\u66FF\u6362 \u2192 \u4F7F\u7528 \`searchReplace()\`
129
124
 
130
- 6. **\u4F9D\u8D56\u68C0\u67E5**\uFF1A
125
+ 6. **\u4EE3\u7801\u9A8C\u8BC1**\uFF08\u63A8\u8350\uFF09\uFF1A
126
+ - \u5728\u5199\u5165\u6587\u4EF6\u540E\uFF0C\u4F7F\u7528 \`validate()\` \u5DE5\u5177\u9A8C\u8BC1\u4EE3\u7801\u8D28\u91CF
127
+ - \u9A8C\u8BC1\u4F1A\u68C0\u67E5\u8BED\u6CD5\u9519\u8BEF\u3001\u7C7B\u578B\u9519\u8BEF\u548C\u4EE3\u7801\u89C4\u8303\u95EE\u9898
128
+ - \u652F\u6301\u7684\u8BED\u8A00\uFF1A
129
+ - **TypeScript**: \u4F7F\u7528 tsc \u8FDB\u884C\u7C7B\u578B\u68C0\u67E5
130
+ - **JavaScript**: \u4F7F\u7528 ESLint \u8FDB\u884C\u4EE3\u7801\u89C4\u8303\u68C0\u67E5
131
+ - **Python**: \u4F7F\u7528 py_compile\u3001Flake8\u3001Mypy \u8FDB\u884C\u9A8C\u8BC1
132
+ - \u5982\u679C\u9A8C\u8BC1\u5931\u8D25\uFF0C\u6839\u636E\u9519\u8BEF\u4FE1\u606F\u4FEE\u590D\u4EE3\u7801
133
+ - \u793A\u4F8B\uFF1A\`validate({ path: "src/utils/helper.ts" })\`
134
+
135
+ 7. **\u4F9D\u8D56\u68C0\u67E5**\uFF1A
131
136
  - \u9A8C\u8BC1\u6240\u6709\u4F9D\u8D56\u90FD\u5DF2\u6B63\u786E\u5F15\u5165\u5230\u4F9D\u8D56\u58F0\u660E\u6587\u4EF6
132
137
  - \u4F7F\u7528 \`read()\` \u68C0\u67E5\u4F9D\u8D56\u6587\u4EF6\uFF08package.json, pom.xml \u7B49\uFF09
133
138
  - \u5982\u679C\u7F3A\u5C11\u4F9D\u8D56\uFF0C\u63D0\u793A\u7528\u6237\u6DFB\u52A0\u6216\u4F7F\u7528\u5305\u7BA1\u7406\u547D\u4EE4\u6DFB\u52A0
134
139
 
135
- 7. **\u9A8C\u8BC1\u5B8C\u6210**\uFF1A\u786E\u4FDD\u4EE3\u7801\u7B26\u5408\u6240\u6709\u8981\u6C42
140
+ 8. **\u9A8C\u8BC1\u5B8C\u6210**\uFF1A\u786E\u4FDD\u4EE3\u7801\u7B26\u5408\u6240\u6709\u8981\u6C42
136
141
 
137
142
  ## \u6587\u4EF6\u64CD\u4F5C\u5B89\u5168\u7EA6\u675F
138
143
 
@@ -205,15 +210,15 @@ var al=Object.defineProperty;var S=(o,e)=>()=>(o&&(e=o(o=0)),e);var j=(o,e)=>{fo
205
210
  - \u4F7F\u7528 \`grep()\` \u6216 \`search\` \u5DE5\u5177\u67E5\u627E\u6240\u6709\u5F15\u7528
206
211
  - \u5236\u5B9A\u5168\u9762\u7684\u66F4\u65B0\u8BA1\u5212\uFF0C\u786E\u4FDD\u6240\u6709\u4F9D\u8D56\u90FD\u5F97\u5230\u9002\u5F53\u5904\u7406
207
212
 
208
- \u786E\u4FDD\u5728\u5B8C\u6210\u4EE3\u7801\u7F16\u5199\u548C\u6587\u4EF6\u5199\u5165\u4E4B\u540E\uFF0C\u5FC5\u987B\u6267\u884C\u4F9D\u8D56\u68C0\u67E5\u6B65\u9AA4\uFF01`}});var yt={};j(yt,{LITE_MODEL:()=>Pe,MODEL:()=>fe,getDefaultModelConfig:()=>Ye,getLiteModelConfig:()=>an,getLiteModelMaxToken:()=>No,getMCPServerConfigs:()=>Uo,getMaxToken:()=>_o,getProvider:()=>El});import{readFileSync as Pl}from"fs";function jo(){if(!yr)try{let o=le("config.json"),e=Pl(o,"utf-8");yr=JSON.parse(e)}catch(o){console.error("Failed to load config.json:",o.message),yr={models:{defaultModel:{apiKey:"",authToken:"",baseURL:"https://api.openai.com/v1",model:"gpt-4o-mini",provider:"openai"}}}}return yr}function Ye(){let o=jo(),e={apiKey:"",authToken:"",baseURL:"https://api.openai.com/v1",model:"gpt-4o-mini",provider:"openai",maxToken:128e3},t=o.models?.defaultModel||e;return t.provider==="anthropic"&&t.disableExperimentalBetas===void 0&&(t.disableExperimentalBetas=!0),t}function an(){let e=jo().models?.liteModel||Ye();return e.provider==="anthropic"&&e.disableExperimentalBetas===void 0&&(e.disableExperimentalBetas=!0),e}function Ni(){return Ye().model||"gpt-4o-mini"}function $l(){return an().model||Ni()}function El(){return Ye().provider||"openai"}function fe(){return Ni()}function Pe(){return $l()}function _o(){return Ye().maxToken||128e3}function No(){return an().maxToken||16385}function Uo(){return jo().mcpServers||[]}var yr,ae=S(()=>{Le();yr=null});var Xe,Cr=S(()=>{Xe=class{config;constructor(e){this.config=e}getModelName(){return this.config.model}getProviderType(){return this.config.provider}_getApiKey(){return this.config.apiKey}_getAuthToken(){return this.config.authToken}_getBaseURL(){return this.config.baseURL}}});import Ml from"openai";var Wo,Ui,Wi=S(()=>{Cr();Wo=class extends Xe{client=null;constructor(e){super(e)}_initClient(){if(!this.client){let e={baseURL:this.config.baseURL||"https://api.openai.com/v1",defaultHeaders:{}};this.config.apiKey?e.apiKey=this.config.apiKey:this.config.authToken&&(this.config.authToken.startsWith("Bearer ")?e.apiKey=this.config.authToken.slice(7):e.apiKey=this.config.authToken),this.client=new Ml(e)}return this.client}async callModel(e){let{model:t=this.getModelName(),messages:n,temperature:r=.1,max_tokens:s,tools:i,tool_choice:a}=e,c=this._initClient(),l=[...n],g={model:t,messages:l,temperature:r,max_tokens:s};i&&i.length>0&&(g.tools=i.map(u=>({type:"function",function:{name:u.name,description:u.description,parameters:u.input_schema}})),a&&(a.type==="any"||(g.tool_choice=a)));let p=await c.chat.completions.create(g);return this._processReasoningContent(p),p}_processReasoningContent(e){if(e.choices&&e.choices[0]&&e.choices[0].message&&e.choices[0].message.reasoning_content){let{message:t}=e.choices[0],n=t.reasoning_content;if(t.tool_calls&&t.tool_calls.length>0){t.content?typeof t.content=="string"&&(t.content=`${n}
213
+ \u786E\u4FDD\u5728\u5B8C\u6210\u4EE3\u7801\u7F16\u5199\u548C\u6587\u4EF6\u5199\u5165\u4E4B\u540E\uFF0C\u5FC5\u987B\u6267\u884C\u4F9D\u8D56\u68C0\u67E5\u6B65\u9AA4\uFF01`}});var wt={};j(wt,{LITE_MODEL:()=>Ie,MODEL:()=>ye,getDefaultModelConfig:()=>tt,getLiteModelConfig:()=>yn,getLiteModelMaxToken:()=>os,getMCPServerConfigs:()=>ss,getMaxToken:()=>rs,getProvider:()=>au});import{readFileSync as su}from"fs";function ns(){if(!Or)try{let o=ge("config.json"),e=su(o,"utf-8");Or=JSON.parse(e)}catch(o){console.error("Failed to load config.json:",o.message),Or={models:{defaultModel:{apiKey:"",authToken:"",baseURL:"https://api.openai.com/v1",model:"gpt-4o-mini",provider:"openai"}}}}return Or}function tt(){let o=ns(),e={apiKey:"",authToken:"",baseURL:"https://api.openai.com/v1",model:"gpt-4o-mini",provider:"openai",maxToken:128e3},t=o.models?.defaultModel||e;return t.provider==="anthropic"&&t.disableExperimentalBetas===void 0&&(t.disableExperimentalBetas=!0),t}function yn(){let e=ns().models?.liteModel||tt();return e.provider==="anthropic"&&e.disableExperimentalBetas===void 0&&(e.disableExperimentalBetas=!0),e}function ta(){return tt().model||"gpt-4o-mini"}function iu(){return yn().model||ta()}function au(){return tt().provider||"openai"}function ye(){return ta()}function Ie(){return iu()}function rs(){return tt().maxToken||128e3}function os(){return yn().maxToken||16385}function ss(){return ns().mcpServers||[]}var Or,le=C(()=>{je();Or=null});var nt,jr=C(()=>{nt=class{config;constructor(e){this.config=e}getModelName(){return this.config.model}getProviderType(){return this.config.provider}_getApiKey(){return this.config.apiKey}_getAuthToken(){return this.config.authToken}_getBaseURL(){return this.config.baseURL}}});import cu from"openai";var is,na,ra=C(()=>{jr();is=class extends nt{client=null;constructor(e){super(e)}_initClient(){if(!this.client){let e={baseURL:this.config.baseURL||"https://api.openai.com/v1",defaultHeaders:{}};this.config.apiKey?e.apiKey=this.config.apiKey:this.config.authToken&&(this.config.authToken.startsWith("Bearer ")?e.apiKey=this.config.authToken.slice(7):e.apiKey=this.config.authToken),this.client=new cu(e)}return this.client}async callModel(e){let{model:t=this.getModelName(),messages:n,temperature:r=.1,max_tokens:s,tools:i,tool_choice:a}=e,c=this._initClient(),l=[...n],u={model:t,messages:l,temperature:r,max_tokens:s};i&&i.length>0&&(u.tools=i.map(g=>({type:"function",function:{name:g.name,description:g.description,parameters:g.input_schema}})),a&&(a.type==="any"||(u.tool_choice=a)));let p=await c.chat.completions.create(u);return this._processReasoningContent(p),p}_processReasoningContent(e){if(e.choices&&e.choices[0]&&e.choices[0].message&&e.choices[0].message.reasoning_content){let{message:t}=e.choices[0],n=t.reasoning_content;if(t.tool_calls&&t.tool_calls.length>0){t.content?typeof t.content=="string"&&(t.content=`${n}
209
214
 
210
- ${t.content}`):t.content=n;return}try{let r=[];try{let s=JSON.parse(n);Array.isArray(s)&&s.length>0?(r=s.filter(i=>i&&i.name).map(i=>({id:`call_${i.name}_${Date.now()}`,type:"function",function:{name:i.name,arguments:JSON.stringify(i.parameters||{})}})),t.tool_calls=r):t.content||(t.content=n)}catch{t.content||(t.content=n)}}catch(r){console.warn("Failed to process reasoning_content:",r)}}}},Ui=Wo});var zo,zi,Vi=S(()=>{Cr();Y();zo=class extends Xe{client=null;constructor(e){super(e)}async _initClient(){if(!this.client){let{Anthropic:e}=await import("@anthropic-ai/sdk"),t={};this.config.apiKey?t.apiKey=this.config.apiKey:this.config.authToken&&(this.config.authToken.startsWith("Bearer ")?t.apiKey=this.config.authToken.slice(7):t.apiKey=this.config.authToken),this.config.disableExperimentalBetas!==!1&&(t.defaultHeaders={...t.defaultHeaders,"anthropic-beta":""}),this.client=new e(t)}return this.client}async callModel(e){let{model:t=this.getModelName(),messages:n,temperature:r=.1,max_tokens:s=4096,tools:i,tool_choice:a}=e,c=await this._initClient(),l=[...n],g="",p=l.filter(f=>f.role==="system");p.length>0&&(g=p.map(f=>f.content).join(`
215
+ ${t.content}`):t.content=n;return}try{let r=[];try{let s=JSON.parse(n);Array.isArray(s)&&s.length>0?(r=s.filter(i=>i&&i.name).map(i=>({id:`call_${i.name}_${Date.now()}`,type:"function",function:{name:i.name,arguments:JSON.stringify(i.parameters||{})}})),t.tool_calls=r):t.content||(t.content=n)}catch{t.content||(t.content=n)}}catch(r){console.warn("Failed to process reasoning_content:",r)}}}},na=is});var as,oa,sa=C(()=>{jr();Y();as=class extends nt{client=null;constructor(e){super(e)}async _initClient(){if(!this.client){let{Anthropic:e}=await import("@anthropic-ai/sdk"),t={};this.config.apiKey?t.apiKey=this.config.apiKey:this.config.authToken&&(this.config.authToken.startsWith("Bearer ")?t.apiKey=this.config.authToken.slice(7):t.apiKey=this.config.authToken),this.config.disableExperimentalBetas!==!1&&(t.defaultHeaders={...t.defaultHeaders,"anthropic-beta":""}),this.client=new e(t)}return this.client}async callModel(e){let{model:t=this.getModelName(),messages:n,temperature:r=.1,max_tokens:s=4096,tools:i,tool_choice:a}=e,c=await this._initClient(),l=[...n],u="",p=l.filter(f=>f.role==="system");p.length>0&&(u=p.map(f=>f.content).join(`
211
216
 
212
- `)),l=l.filter(f=>f.role!=="system");let u=[],m=0;for(;m<l.length;){let f=l[m];if(f.role==="assistant"){let T=[];if(f.content&&typeof f.content=="string"&&T.push({type:"text",text:f.content}),f.tool_calls&&f.tool_calls.length>0)for(let x of f.tool_calls)T.push({type:"tool_use",id:x.id,name:x.function.name,input:JSON.parse(x.function.arguments)});T.length>0&&u.push({role:"assistant",content:T}),m++}else if(f.role==="tool"){let T=[];for(;m<l.length&&l[m].role==="tool";){let x=l[m];T.push({type:"tool_result",tool_use_id:x.tool_call_id,content:x.content||"No result"}),m++}T.length>0&&u.push({role:"user",content:T})}else if(f.role==="user"){let T=typeof f.content=="string"?[{type:"text",text:f.content}]:Array.isArray(f.content)?f.content:[{type:"text",text:String(f.content)}];u.push({role:"user",content:T}),m++}else m++}let d={model:t,max_tokens:s,temperature:r,system:g||"You are a helpful assistant.",messages:u};i&&i.length>0&&(d.tools=i,a&&(d.tool_choice=a));let y=await c.messages.create(d);C(`[Anthropic Provider] Response content blocks: ${JSON.stringify(y.content,null,2)}`);let w=[],h="";for(let f of y.content)if(f.type==="text")h+=f.text;else if(f.type==="tool_use")C(`[Anthropic Provider] Tool use block: ${JSON.stringify({id:f.id,name:f.name,input:f.input,inputKeys:Object.keys(f.input||{})},null,2)}`),w.push({id:f.id,type:"function",function:{name:f.name,arguments:JSON.stringify(f.input)}});else if(f.type==="thinking"){let T=f.thinking||"";T&&(h=T+(h?`
217
+ `)),l=l.filter(f=>f.role!=="system");let g=[],d=0;for(;d<l.length;){let f=l[d];if(f.role==="assistant"){let y=[];if(f.content&&typeof f.content=="string"&&y.push({type:"text",text:f.content}),f.tool_calls&&f.tool_calls.length>0)for(let S of f.tool_calls)y.push({type:"tool_use",id:S.id,name:S.function.name,input:JSON.parse(S.function.arguments)});y.length>0&&g.push({role:"assistant",content:y}),d++}else if(f.role==="tool"){let y=[];for(;d<l.length&&l[d].role==="tool";){let S=l[d];y.push({type:"tool_result",tool_use_id:S.tool_call_id,content:S.content||"No result"}),d++}y.length>0&&g.push({role:"user",content:y})}else if(f.role==="user"){let y=typeof f.content=="string"?[{type:"text",text:f.content}]:Array.isArray(f.content)?f.content:[{type:"text",text:String(f.content)}];g.push({role:"user",content:y}),d++}else d++}let m={model:t,max_tokens:s,temperature:r,system:u||"You are a helpful assistant.",messages:g};i&&i.length>0&&(m.tools=i,a&&(m.tool_choice=a));let h=await c.messages.create(m);x(`[Anthropic Provider] Response content blocks: ${JSON.stringify(h.content,null,2)}`);let w=[],v="";for(let f of h.content)if(f.type==="text")v+=f.text;else if(f.type==="tool_use")x(`[Anthropic Provider] Tool use block: ${JSON.stringify({id:f.id,name:f.name,input:f.input,inputKeys:Object.keys(f.input||{})},null,2)}`),w.push({id:f.id,type:"function",function:{name:f.name,arguments:JSON.stringify(f.input)}});else if(f.type==="thinking"){let y=f.thinking||"";y&&(v=y+(v?`
213
218
 
214
- `+h:""))}return{choices:[{message:{content:h||null,tool_calls:w.length>0?w:void 0},finish_reason:y.stop_reason==="end_turn"?"stop":y.stop_reason}]}}},zi=zo});var cn,Hi=S(()=>{ae();Cr();Wi();Vi();cn=class{static async getProvider(){let e=Ye();return this.createProvider(e)}static async getLiteProvider(){let e=an();return this.createProvider(e)}static async createProvider(e){switch(e.provider||"openai"){case"anthropic":return new zi(e);case"openai":default:return new Ui(e)}}}});function Ct(o){return o&&typeof o=="object"&&o.__tool_result===!0}function ln(o){return Ct(o)?o.result:o}var E,q=S(()=>{E=class{get name(){return this.getDefinition().name}get description(){return this.getDefinition().description}get inputSchema(){return this.getDefinition().input_schema}createToolResult(e,t=null,n=!0){return{__tool_result:!0,result:e,display:t!==null?t:e,shouldPrint:n}}formatError(e,t){let n=t instanceof Error?t.message:String(t);return`Error: ${e} failed - ${n}`}formatAction(e){let t=this.name,n=Object.entries(e).map(([r,s])=>{let i=s;return typeof s=="string"&&s.length>50&&(i=s.substring(0,50)+"..."),`${r}=${JSON.stringify(i)}`}).join(", ");return`${t}(${n})`}formatObservation(e){if(Ct(e)){let{display:t}=e;return Array.isArray(t)?t.join(`
219
+ `+v:""))}return{choices:[{message:{content:v||null,tool_calls:w.length>0?w:void 0},finish_reason:h.stop_reason==="end_turn"?"stop":h.stop_reason}]}}},oa=as});var Cn,ia=C(()=>{le();jr();ra();sa();Cn=class{static async getProvider(){let e=tt();return this.createProvider(e)}static async getLiteProvider(){let e=yn();return this.createProvider(e)}static async createProvider(e){switch(e.provider||"openai"){case"anthropic":return new oa(e);case"openai":default:return new na(e)}}}});function bt(o){return o&&typeof o=="object"&&o.__tool_result===!0}function xn(o){return bt(o)?o.result:o}var $,V=C(()=>{$=class{get name(){return this.getDefinition().name}get description(){return this.getDefinition().description}get inputSchema(){return this.getDefinition().input_schema}createToolResult(e,t=null,n=!0){return{__tool_result:!0,result:e,display:t!==null?t:e,shouldPrint:n}}formatError(e,t){let n=t instanceof Error?t.message:String(t);return`Error: ${e} failed - ${n}`}formatAction(e){let t=this.name,n=Object.entries(e).map(([r,s])=>{let i=s;return typeof s=="string"&&s.length>50&&(i=s.substring(0,50)+"..."),`${r}=${JSON.stringify(i)}`}).join(", ");return`${t}(${n})`}formatObservation(e){if(bt(e)){let{display:t}=e;return Array.isArray(t)?t.join(`
215
220
  `):String(t)}return Array.isArray(e)?e.join(`
216
- `):String(e)}shouldPrintObservation(e){return Ct(e)?e.shouldPrint:!0}}});var he,un=S(()=>{q();he=class extends E{getDefinition(){let e=this.getBaseDefinition(),t="IMPORTANT: User confirmation is automatically required - DO NOT call askUser tool before calling this tool.",{description:n}=e;if(!n.includes("User confirmation is automatically required"))if(n.trim().startsWith("IMPORTANT:"))if(n.match(/^IMPORTANT:[^\n]*(\n[^\n]*)*?\n\n/)){let s=n.indexOf(`
221
+ `):String(e)}shouldPrintObservation(e){return bt(e)?e.shouldPrint:!0}}});var Ce,Sn=C(()=>{V();Ce=class extends ${getDefinition(){let e=this.getBaseDefinition(),t="IMPORTANT: User confirmation is automatically required - DO NOT call askUser tool before calling this tool.",{description:n}=e;if(!n.includes("User confirmation is automatically required"))if(n.trim().startsWith("IMPORTANT:"))if(n.match(/^IMPORTANT:[^\n]*(\n[^\n]*)*?\n\n/)){let s=n.indexOf(`
217
222
  `);n=n.slice(0,s)+`
218
223
  - User confirmation is automatically required - DO NOT call askUser tool before calling this tool`+n.slice(s)}else{let s=n.indexOf(`
219
224
  `);s!==-1?n=n.slice(0,s)+`
@@ -221,7 +226,7 @@ ${t.content}`):t.content=n;return}try{let r=[];try{let s=JSON.parse(n);Array.isA
221
226
 
222
227
  `+n}else n=t+`
223
228
 
224
- `+n;return{...e,description:n,requiresConfirmation:!0}}getConfirmationMessage(e){return null}}});var Vo={};j(Vo,{BaseTool:()=>E,ConfirmableTool:()=>he,extractToolResult:()=>ln,isToolResult:()=>Ct});var Ho=S(()=>{q();un()});import{readFileSync as Ji,statSync as Il}from"fs";import{resolve as Al}from"path";function gn(o){return Gi.execute(o)}var St,Gi,pn,Bi=S(()=>{q();St=class extends E{lastReadPath="";getDefinition(){return{name:"read",description:`Read content from a specified file path.
229
+ `+n;return{...e,description:n,requiresConfirmation:!0}}getConfirmationMessage(e){return null}}});var cs={};j(cs,{BaseTool:()=>$,ConfirmableTool:()=>Ce,extractToolResult:()=>xn,isToolResult:()=>bt});var ls=C(()=>{V();Sn()});import{readFileSync as aa,statSync as lu}from"fs";import{resolve as uu}from"path";function vn(o){return ca.execute(o)}var Tt,ca,wn,la=C(()=>{V();Tt=class extends ${lastReadPath="";getDefinition(){return{name:"read",description:`Read content from a specified file path.
225
230
 
226
231
  \u{1F4CB} USE CASES:
227
232
  - View file content for analysis or editing
@@ -243,17 +248,17 @@ ${t.content}`):t.content=n;return}try{let r=[];try{let s=JSON.parse(n);Array.isA
243
248
  \u{1F4DD} RETURN VALUE:
244
249
  - Complete file content as string (for small files)
245
250
  - Array of file chunks (for large files with chunking)
246
- - Success message (with silent: true)`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to read (relative or absolute)"},silent:{type:"boolean",description:"If true, returns success message instead of full content"},chunkSize:{type:"number",description:"Return content in chunks of specified bytes (optional)"},autoChunk:{type:"boolean",description:"Automatically split large files into chunks (optional)"}},required:["path"]}}}execute(e){try{let t=e.path.trim(),n=Al(t);if(this.lastReadPath=t,e.silent)return Ji(n,"utf-8"),this.createToolResult("file content",`\u6587\u4EF6 ${t} \u8BFB\u53D6\u6210\u529F\uFF08\u9759\u9ED8\u6A21\u5F0F\uFF0C\u5185\u5BB9\u672A\u663E\u793A\uFF09`,!0);let r=Ji(n,"utf-8");if(e.chunkSize||e.autoChunk){let a=Il(n).size,c=1024*1024,l=5*1024*1024,g=e.chunkSize||c;if(e.autoChunk&&a<=l)return r;g=Math.max(1,g);let p=[];for(let u=0;u<r.length;u+=g)p.push(r.slice(u,u+g));return this.createToolResult(p,`\u6587\u4EF6 ${t} \u5DF2\u5206\u5757\u8BFB\u53D6\uFF0C\u5171 ${p.length} \u5757\uFF0C\u6BCF\u5757 ${g} \u5B57\u8282`,!0)}return r}catch(t){let r=`Error: Cannot read file ${e.path.trim()} - ${t instanceof Error?t.message:String(t)}`;return this.createToolResult(r,r,!0)}}formatObservation(e){if(typeof e=="object"&&e.__tool_result)return super.formatObservation(e);if(Array.isArray(e)&&this.lastReadPath)return`\u8BFB\u53D6\u6587\u4EF6 ${this.lastReadPath}\uFF0C\u5171 ${e.length} \u5757`;if(typeof e=="string"&&this.lastReadPath){let n=e.split(`
247
- `).length;return`\u8BFB\u53D6\u6587\u4EF6 ${this.lastReadPath}\uFF0C\u5171 ${n} \u884C`}return super.formatObservation(e)}},Gi=new St;pn=Gi});function qi(o){if(typeof o!="string")return o;let e=o.replace(/\\n/g,`
251
+ - Success message (with silent: true)`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to read (relative or absolute)"},silent:{type:"boolean",description:"If true, returns success message instead of full content"},chunkSize:{type:"number",description:"Return content in chunks of specified bytes (optional)"},autoChunk:{type:"boolean",description:"Automatically split large files into chunks (optional)"}},required:["path"]}}}execute(e){try{let t=e.path.trim(),n=uu(t);if(this.lastReadPath=t,e.silent)return aa(n,"utf-8"),this.createToolResult("file content",`\u6587\u4EF6 ${t} \u8BFB\u53D6\u6210\u529F\uFF08\u9759\u9ED8\u6A21\u5F0F\uFF0C\u5185\u5BB9\u672A\u663E\u793A\uFF09`,!0);let r=aa(n,"utf-8");if(e.chunkSize||e.autoChunk){let a=lu(n).size,c=1024*1024,l=5*1024*1024,u=e.chunkSize||c;if(e.autoChunk&&a<=l)return r;u=Math.max(1,u);let p=[];for(let g=0;g<r.length;g+=u)p.push(r.slice(g,g+u));return this.createToolResult(p,`\u6587\u4EF6 ${t} \u5DF2\u5206\u5757\u8BFB\u53D6\uFF0C\u5171 ${p.length} \u5757\uFF0C\u6BCF\u5757 ${u} \u5B57\u8282`,!0)}return r}catch(t){let r=`Error: Cannot read file ${e.path.trim()} - ${t instanceof Error?t.message:String(t)}`;return this.createToolResult(r,r,!0)}}formatObservation(e){if(typeof e=="object"&&e.__tool_result)return super.formatObservation(e);if(Array.isArray(e)&&this.lastReadPath)return`\u8BFB\u53D6\u6587\u4EF6 ${this.lastReadPath}\uFF0C\u5171 ${e.length} \u5757`;if(typeof e=="string"&&this.lastReadPath){let n=e.split(`
252
+ `).length;return`\u8BFB\u53D6\u6587\u4EF6 ${this.lastReadPath}\uFF0C\u5171 ${n} \u884C`}return super.formatObservation(e)}},ca=new Tt;wn=ca});function ua(o){if(typeof o!="string")return o;let e=o.replace(/\\n/g,`
248
253
  `).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\'/g,"'");return e=e.replace(/\r\n/g,`
249
254
  `).replace(/\r/g,`
250
- `),e}function Sr(o){return o.includes(`\r
255
+ `),e}function _r(o){return o.includes(`\r
251
256
  `)?`\r
252
257
  `:o.includes(`
253
258
  `)?`
254
- `:o.includes("\r")?"\r":Jo}var Jo,Go=S(()=>{Jo=process.platform==="win32"?`\r
259
+ `:o.includes("\r")?"\r":us}var us,gs=C(()=>{us=process.platform==="win32"?`\r
255
260
  `:`
256
- `});import{mkdirSync as Ll}from"fs";import{resolve as Rl}from"path";function mn(o){return Ki.execute(o)}var xt,Ki,Qe,Bo=S(()=>{q();xt=class extends E{getDefinition(){return{name:"mkdir",description:"Create a directory and all necessary parent directories (like mkdir -p). Returns a confirmation message.",input_schema:{type:"object",properties:{path:{type:"string",description:"The directory path to create"}},required:["path"]}}}execute(e){try{let t=Rl(e.path);return Ll(t,{recursive:!0}),`Directory created: ${e.path}`}catch(t){return this.formatError(`Cannot create directory ${e.path}`,t)}}},Ki=new xt;Qe=Ki});import{readFileSync as Dl,writeFileSync as Yi,existsSync as Ol}from"fs";import{resolve as Fl,dirname as jl}from"path";function dn(o){return Xi.execute(o)}var wt,Xi,fn,Qi=S(()=>{Go();Bo();q();wt=class extends E{getDefinition(){return{name:"write",description:`Write content to a file - ONLY for creating NEW files.
261
+ `});import{mkdirSync as gu}from"fs";import{resolve as pu}from"path";function bn(o){return ga.execute(o)}var kt,ga,rt,ps=C(()=>{V();kt=class extends ${getDefinition(){return{name:"mkdir",description:"Create a directory and all necessary parent directories (like mkdir -p). Returns a confirmation message.",input_schema:{type:"object",properties:{path:{type:"string",description:"The directory path to create"}},required:["path"]}}}execute(e){try{let t=pu(e.path);return gu(t,{recursive:!0}),`Directory created: ${e.path}`}catch(t){return this.formatError(`Cannot create directory ${e.path}`,t)}}},ga=new kt;rt=ga});import{readFileSync as du,writeFileSync as pa,existsSync as mu}from"fs";import{resolve as fu,dirname as hu}from"path";function Tn(o){return da.execute(o)}var Et,da,kn,ma=C(()=>{gs();ps();V();Et=class extends ${getDefinition(){return{name:"write",description:`Write content to a file - ONLY for creating NEW files.
257
262
 
258
263
  \u{1F4CB} USE CASES:
259
264
  - Create brand new files that don't exist yet
@@ -286,9 +291,9 @@ echo 'test'" }) - Create new shell script
286
291
 
287
292
  \u{1F4DD} RETURN VALUE:
288
293
  - "done" on successful write
289
- - Error message if write fails`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to write to"},content:{type:"string",description:"Complete file content to write (required, cannot be empty)"}},required:["path","content"]}}}execute(e){try{let t=Fl(e.path),n=jl(t),r=Qe.execute({path:n});if(r.startsWith("Error:"))return r;let s=qi(e.content);typeof s!="string"&&(s=String(s||""));let i=Jo;if(Ol(t)){let a=Dl(t,"utf-8");i=Sr(a);let c=`${t}.base`;Yi(c,a,"utf-8")}return i===`\r
294
+ - Error message if write fails`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to write to"},content:{type:"string",description:"Complete file content to write (required, cannot be empty)"}},required:["path","content"]}}}execute(e){try{let t=fu(e.path),n=hu(t),r=rt.execute({path:n});if(r.startsWith("Error:"))return r;let s=ua(e.content);typeof s!="string"&&(s=String(s||""));let i=us;if(mu(t)){let a=du(t,"utf-8");i=_r(a);let c=`${t}.base`;pa(c,a,"utf-8")}return i===`\r
290
295
  `&&(s=s.replace(/\n/g,`\r
291
- `)),Yi(t,s,"utf-8"),"done"}catch(t){return this.formatError(`Cannot write ${e.path}`,t)}}},Xi=new wt;fn=Xi});import{unlinkSync as _l,existsSync as Nl,statSync as Ul,rmdirSync as Wl}from"fs";import{resolve as zl}from"path";function hn(o){return typeof o=="object"&&o!==null&&"path"in o?qo.execute(o):qo.execute({path:o})}var vt,qo,yn,Zi=S(()=>{un();vt=class extends he{getBaseDefinition(){return{name:"delete",description:`Delete a file, multiple files or directories at the specified path(s).
296
+ `)),pa(t,s,"utf-8"),"done"}catch(t){return this.formatError(`Cannot write ${e.path}`,t)}}},da=new Et;kn=da});import{unlinkSync as yu,existsSync as Cu,statSync as xu,rmdirSync as Su}from"fs";import{resolve as vu}from"path";function En(o){return typeof o=="object"&&o!==null&&"path"in o?ds.execute(o):ds.execute({path:o})}var Pt,ds,Pn,fa=C(()=>{Sn();Pt=class extends Ce{getBaseDefinition(){return{name:"delete",description:`Delete a file, multiple files or directories at the specified path(s).
292
297
 
293
298
  IMPORTANT:
294
299
  - This action cannot be undone
@@ -300,31 +305,31 @@ Examples:
300
305
  - deleteFile("temp.txt") - delete a single file named temp.txt
301
306
  - deleteFile("temp_dir") - delete a single empty directory named temp_dir
302
307
  - deleteFile({ path: "temp.txt" }) - delete a single file
303
- - deleteFile({ path: ["file1.txt", "dir1", "file2.txt"] }) - delete multiple files and directories`,input_schema:{type:"object",properties:{path:{type:"string",description:"The file path to delete (relative or absolute), or an array of file paths",oneOf:[{type:"string",description:"The file path to delete (relative or absolute)"},{type:"array",items:{type:"string",description:"A file path to delete"},description:"Array of file paths to delete"}]}},required:["path"]}}}getConfirmationMessage(e){let t=Array.isArray(e.path)?e.path:[e.path];return t.length===1?`\u5220\u9664: ${t[0]}`:`\u5220\u9664 ${t.length} \u4E2A\u6587\u4EF6/\u76EE\u5F55`}execute(e){try{let t=Array.isArray(e.path)?e.path:[e.path],n=[];for(let l of t)try{let g=zl(l);if(!Nl(g)){n.push(`Warning: Path not found - ${l}`);continue}Ul(g).isDirectory()?(Wl(g),n.push(`Directory deleted: ${l}`)):(_l(g),n.push(`File deleted: ${l}`))}catch(g){n.push(`Error: Cannot delete ${l} - ${g instanceof Error?g.message:"Unknown error"}`)}if(t.length===1)return n[0];let r=n.filter(l=>l.startsWith("File deleted")).length,s=n.filter(l=>l.startsWith("Directory deleted")).length,i=n.filter(l=>l.startsWith("Error")).length,a=n.filter(l=>l.startsWith("Warning")).length,c=r+s;return`${n.join(`
308
+ - deleteFile({ path: ["file1.txt", "dir1", "file2.txt"] }) - delete multiple files and directories`,input_schema:{type:"object",properties:{path:{type:"string",description:"The file path to delete (relative or absolute), or an array of file paths",oneOf:[{type:"string",description:"The file path to delete (relative or absolute)"},{type:"array",items:{type:"string",description:"A file path to delete"},description:"Array of file paths to delete"}]}},required:["path"]}}}getConfirmationMessage(e){let t=Array.isArray(e.path)?e.path:[e.path];return t.length===1?`\u5220\u9664: ${t[0]}`:`\u5220\u9664 ${t.length} \u4E2A\u6587\u4EF6/\u76EE\u5F55`}execute(e){try{let t=Array.isArray(e.path)?e.path:[e.path],n=[];for(let l of t)try{let u=vu(l);if(!Cu(u)){n.push(`Warning: Path not found - ${l}`);continue}xu(u).isDirectory()?(Su(u),n.push(`Directory deleted: ${l}`)):(yu(u),n.push(`File deleted: ${l}`))}catch(u){n.push(`Error: Cannot delete ${l} - ${u instanceof Error?u.message:"Unknown error"}`)}if(t.length===1)return n[0];let r=n.filter(l=>l.startsWith("File deleted")).length,s=n.filter(l=>l.startsWith("Directory deleted")).length,i=n.filter(l=>l.startsWith("Error")).length,a=n.filter(l=>l.startsWith("Warning")).length,c=r+s;return`${n.join(`
304
309
  `)}
305
310
 
306
- Summary: ${c} items deleted (${r} files, ${s} directories), ${a} warnings, ${i} errors`}catch(t){return this.formatError("Cannot process delete operation",t)}}},qo=new vt;yn=qo});import{renameSync as Vl,existsSync as xr,statSync as Hl,mkdirSync as Jl}from"fs";import{resolve as ea,dirname as Gl}from"path";function Cn(o){return o&&typeof o=="object"&&"source"in o&&"destination"in o?ta.execute(o):"Error: Invalid input format. Expected { source: string, destination: string }"}var bt,ta,Sn,na=S(()=>{un();bt=class extends he{getBaseDefinition(){return{name:"move",description:`Move or rename a file or directory from source to destination.
311
+ Summary: ${c} items deleted (${r} files, ${s} directories), ${a} warnings, ${i} errors`}catch(t){return this.formatError("Cannot process delete operation",t)}}},ds=new Pt;Pn=ds});import{renameSync as wu,existsSync as Nr,statSync as bu,mkdirSync as Tu}from"fs";import{resolve as ha,dirname as ku}from"path";function $n(o){return o&&typeof o=="object"&&"source"in o&&"destination"in o?ya.execute(o):"Error: Invalid input format. Expected { source: string, destination: string }"}var $t,ya,Mn,Ca=C(()=>{Sn();$t=class extends Ce{getBaseDefinition(){return{name:"move",description:`Move or rename a file or directory from source to destination.
307
312
 
308
313
  Examples:
309
314
  - moveFile({ source: "old.txt", destination: "new.txt" }) - rename a file
310
315
  - moveFile({ source: "file.txt", destination: "folder/file.txt" }) - move a file to a different directory
311
316
  - moveFile({ source: "old_folder", destination: "new_folder" }) - rename a directory
312
- - moveFile({ source: "folder/file.txt", destination: "new_location/file.txt" }) - move a file with rename`,input_schema:{type:"object",properties:{source:{type:"string",description:"The source file or directory path to move"},destination:{type:"string",description:"The destination path (new name or location)"}},required:["source","destination"]}}}getConfirmationMessage(e){return`\u79FB\u52A8/\u91CD\u547D\u540D: ${e.source} \u2192 ${e.destination}`}execute(e){try{let{source:t,destination:n}=e,r=ea(t),s=ea(n);if(!xr(r))return`Error: Source path does not exist - ${t}`;if(xr(s))return`Error: Destination already exists - ${n}`;let i=Gl(s);return xr(i)||Jl(i,{recursive:!0}),Vl(r,s),xr(s)?`${Hl(r).isDirectory()?"Directory":"File"} moved successfully from "${t}" to "${n}"`:`Error: Failed to move ${t} to ${n}`}catch(t){return this.formatError("Move operation",t)}}},ta=new bt;Sn=ta});import{existsSync as wr,statSync as ra,readFileSync as oa,writeFileSync as sa,mkdirSync as ia,readdirSync as Bl}from"fs";import{resolve as aa,join as ca,dirname as ql}from"path";function xn(o){return o&&typeof o=="object"&&"source"in o&&"destination"in o?la.execute(o):"Error: Invalid input format. Expected { source: string, destination: string }"}var Tt,la,wn,ua=S(()=>{un();Tt=class extends he{getBaseDefinition(){return{name:"copy",description:`Copy a file or directory from source to destination.
317
+ - moveFile({ source: "folder/file.txt", destination: "new_location/file.txt" }) - move a file with rename`,input_schema:{type:"object",properties:{source:{type:"string",description:"The source file or directory path to move"},destination:{type:"string",description:"The destination path (new name or location)"}},required:["source","destination"]}}}getConfirmationMessage(e){return`\u79FB\u52A8/\u91CD\u547D\u540D: ${e.source} \u2192 ${e.destination}`}execute(e){try{let{source:t,destination:n}=e,r=ha(t),s=ha(n);if(!Nr(r))return`Error: Source path does not exist - ${t}`;if(Nr(s))return`Error: Destination already exists - ${n}`;let i=ku(s);return Nr(i)||Tu(i,{recursive:!0}),wu(r,s),Nr(s)?`${bu(r).isDirectory()?"Directory":"File"} moved successfully from "${t}" to "${n}"`:`Error: Failed to move ${t} to ${n}`}catch(t){return this.formatError("Move operation",t)}}},ya=new $t;Mn=ya});import{existsSync as Ur,statSync as xa,readFileSync as Sa,writeFileSync as va,mkdirSync as wa,readdirSync as Eu}from"fs";import{resolve as ba,join as Ta,dirname as Pu}from"path";function In(o){return o&&typeof o=="object"&&"source"in o&&"destination"in o?ka.execute(o):"Error: Invalid input format. Expected { source: string, destination: string }"}var Mt,ka,An,Ea=C(()=>{Sn();Mt=class extends Ce{getBaseDefinition(){return{name:"copy",description:`Copy a file or directory from source to destination.
313
318
 
314
319
  Examples:
315
320
  - copyFile({ source: "file.txt", destination: "file_copy.txt" }) - copy a file
316
321
  - copyFile({ source: "file.txt", destination: "folder/file.txt" }) - copy a file to a different directory
317
322
  - copyFile({ source: "folder", destination: "folder_copy" }) - copy an entire directory (recursively)
318
- - copyFile({ source: "folder/subdir", destination: "new_location/subdir" }) - copy a subdirectory`,input_schema:{type:"object",properties:{source:{type:"string",description:"The source file or directory path to copy"},destination:{type:"string",description:"The destination path (new location)"}},required:["source","destination"]}}}getConfirmationMessage(e){return`\u590D\u5236: ${e.source} \u2192 ${e.destination}`}execute(e){try{let{source:t,destination:n}=e,r=aa(t),s=aa(n);if(!wr(r))return`Error: Source path does not exist - ${t}`;if(r===s)return"Error: Source and destination paths are identical";let i=ra(r),a=0,c=0;if(i.isDirectory())return this.copyDirectory(r,s,a,c),`Directory copied successfully from "${t}" to "${n}" (${a} files, ${c} directories)`;{let l=ql(s);return wr(l)||ia(l,{recursive:!0}),sa(s,oa(r)),wr(s)?`File copied successfully from "${t}" to "${n}"`:`Error: Failed to copy file from "${t}" to "${n}"`}}catch(t){return this.formatError("Copy operation",t)}}copyDirectory(e,t,n,r){wr(t)||(ia(t,{recursive:!0}),r++),Bl(e).forEach(i=>{let a=ca(e,i),c=ca(t,i);ra(a).isDirectory()?this.copyDirectory(a,c,n,r):(sa(c,oa(a)),n++)})}},la=new Tt;wn=la});import{diff3Merge as Kl}from"node-diff3";function ga(o,e,t){let n=o.split(`
323
+ - copyFile({ source: "folder/subdir", destination: "new_location/subdir" }) - copy a subdirectory`,input_schema:{type:"object",properties:{source:{type:"string",description:"The source file or directory path to copy"},destination:{type:"string",description:"The destination path (new location)"}},required:["source","destination"]}}}getConfirmationMessage(e){return`\u590D\u5236: ${e.source} \u2192 ${e.destination}`}execute(e){try{let{source:t,destination:n}=e,r=ba(t),s=ba(n);if(!Ur(r))return`Error: Source path does not exist - ${t}`;if(r===s)return"Error: Source and destination paths are identical";let i=xa(r),a=0,c=0;if(i.isDirectory())return this.copyDirectory(r,s,a,c),`Directory copied successfully from "${t}" to "${n}" (${a} files, ${c} directories)`;{let l=Pu(s);return Ur(l)||wa(l,{recursive:!0}),va(s,Sa(r)),Ur(s)?`File copied successfully from "${t}" to "${n}"`:`Error: Failed to copy file from "${t}" to "${n}"`}}catch(t){return this.formatError("Copy operation",t)}}copyDirectory(e,t,n,r){Ur(t)||(wa(t,{recursive:!0}),r++),Eu(e).forEach(i=>{let a=Ta(e,i),c=Ta(t,i);xa(a).isDirectory()?this.copyDirectory(a,c,n,r):(va(c,Sa(a)),n++)})}},ka=new Mt;An=ka});import{diff3Merge as $u}from"node-diff3";function Pa(o,e,t){let n=o.split(`
319
324
  `),r=e.split(`
320
325
  `),s=t.split(`
321
- `);console.log(` [merge] \u5F00\u59CB\u4E09\u8DEF\u5408\u5E76: base=${n.length}\u884C, current=${r.length}\u884C, incoming=${s.length}\u884C`);let i=Date.now(),a=Kl(r,n,s,{excludeFalseConflicts:!0}),c=((Date.now()-i)/1e3).toFixed(2);console.log(` [merge] diff3Merge \u5B8C\u6210\uFF0C\u8017\u65F6 ${c}s\uFF0C\u7ED3\u679C\u533A\u57DF\u6570: ${a.length}`);let l=[],g=[];for(let p of a)if(p.ok)l.push(...p.ok);else if(p.conflict){let u=l.length+1,m=p.conflict.a||[],d=p.conflict.o||[],y=p.conflict.b||[];g.push({lineNumber:u,base:d.join(`
322
- `),current:m.join(`
323
- `),incoming:y.join(`
324
- `)}),l.push("<<<<<<< CURRENT"),l.push(...m),l.push("======="),l.push(...y),l.push(">>>>>>> INCOMING")}return{merged:l.join(`
325
- `),hasConflicts:g.length>0,conflicts:g}}var pa=S(()=>{});import{readFileSync as ma,writeFileSync as vr,existsSync as Ko,unlinkSync as Yo}from"fs";import{resolve as Yl}from"path";function Xo(o){return o.replace(/\r\n/g,`
326
+ `);console.log(` [merge] \u5F00\u59CB\u4E09\u8DEF\u5408\u5E76: base=${n.length}\u884C, current=${r.length}\u884C, incoming=${s.length}\u884C`);let i=Date.now(),a=$u(r,n,s,{excludeFalseConflicts:!0}),c=((Date.now()-i)/1e3).toFixed(2);console.log(` [merge] diff3Merge \u5B8C\u6210\uFF0C\u8017\u65F6 ${c}s\uFF0C\u7ED3\u679C\u533A\u57DF\u6570: ${a.length}`);let l=[],u=[];for(let p of a)if(p.ok)l.push(...p.ok);else if(p.conflict){let g=l.length+1,d=p.conflict.a||[],m=p.conflict.o||[],h=p.conflict.b||[];u.push({lineNumber:g,base:m.join(`
327
+ `),current:d.join(`
328
+ `),incoming:h.join(`
329
+ `)}),l.push("<<<<<<< CURRENT"),l.push(...d),l.push("======="),l.push(...h),l.push(">>>>>>> INCOMING")}return{merged:l.join(`
330
+ `),hasConflicts:u.length>0,conflicts:u}}var $a=C(()=>{});import{readFileSync as Ma,writeFileSync as Wr,existsSync as ms,unlinkSync as fs}from"fs";import{resolve as Mu}from"path";function hs(o){return o.replace(/\r\n/g,`
326
331
  `).replace(/\r/g,`
327
- `)}function vn(o){return da.execute(o)}var Xl,kt,da,bn,fa=S(()=>{Go();pa();q();Xl={lineRatioThreshold:.5,minLineDiff:100},kt=class extends E{getDefinition(){return{name:"merge",description:`Smart file merge tool - THE SAFE CHOICE for modifying existing files.
332
+ `)}function Ln(o){return Ia.execute(o)}var Iu,It,Ia,Rn,Aa=C(()=>{gs();$a();V();Iu={lineRatioThreshold:.5,minLineDiff:100},It=class extends ${getDefinition(){return{name:"merge",description:`Smart file merge tool - THE SAFE CHOICE for modifying existing files.
328
333
 
329
334
  \u{1F4CB} USE CASES:
330
335
  - Update existing files without losing concurrent changes
@@ -367,7 +372,7 @@ Examples:
367
372
  \u{1F4DD} RETURN VALUE:
368
373
  - "Merge successful" messages on success
369
374
  - Conflict details with markers if merge conflicts exist
370
- - Warning message for large deletions requiring confirmation`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to merge/modify"},newContent:{type:"string",description:"Complete new version of the entire file content"},confirmLargeChange:{type:"boolean",description:"Set to true to confirm large deletions (>50% difference)"}},required:["path","newContent"]}}}execute(e){try{return!e.newContent||e.newContent.trim().length===0?this.formatError("Merge","newContent parameter is required"):this.performThreeWayMerge(e)}catch(t){return this.formatError("Merge",t)}}checkLargeDeletion(e,t,n=Xl){if(t>=e)return{isLargeDeletion:!1,deletionRatio:0,message:""};let r=e-t,s=e>0?r/e:0,i=r>=n.minLineDiff&&s>=n.lineRatioThreshold,a="";if(i){let c=Math.round(s*100);a=`\u26A0\uFE0F LARGE DELETION DETECTED: ${e} \u2192 ${t} lines (${c}% deleted, ${r} lines removed).
375
+ - Warning message for large deletions requiring confirmation`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to merge/modify"},newContent:{type:"string",description:"Complete new version of the entire file content"},confirmLargeChange:{type:"boolean",description:"Set to true to confirm large deletions (>50% difference)"}},required:["path","newContent"]}}}execute(e){try{return!e.newContent||e.newContent.trim().length===0?this.formatError("Merge","newContent parameter is required"):this.performThreeWayMerge(e)}catch(t){return this.formatError("Merge",t)}}checkLargeDeletion(e,t,n=Iu){if(t>=e)return{isLargeDeletion:!1,deletionRatio:0,message:""};let r=e-t,s=e>0?r/e:0,i=r>=n.minLineDiff&&s>=n.lineRatioThreshold,a="";if(i){let c=Math.round(s*100);a=`\u26A0\uFE0F LARGE DELETION DETECTED: ${e} \u2192 ${t} lines (${c}% deleted, ${r} lines removed).
371
376
 
372
377
  This may indicate:
373
378
  - Incomplete content (missing parts of the file)
@@ -375,30 +380,30 @@ This may indicate:
375
380
  - Wrong file content
376
381
 
377
382
  To proceed, call merge() again with confirmLargeChange=true.
378
- Or review your newContent to ensure it's complete.`}return{isLargeDeletion:i,deletionRatio:s,message:a}}performThreeWayMerge(e){try{console.log(` [MergeTool] \u5F00\u59CB\u667A\u80FD\u5408\u5E76: ${e.path}`);let t=Yl(e.path),n=`${t}.base`;if(!Ko(t))return console.log(" [MergeTool] \u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u521B\u5EFA\u65B0\u6587\u4EF6"),this.writeNewFile(t,n,e.newContent);console.log(" [MergeTool] \u8BFB\u53D6\u5F53\u524D\u6587\u4EF6\u5185\u5BB9...");let r=ma(t,"utf-8");console.log(` [MergeTool] \u5F53\u524D\u6587\u4EF6\u5927\u5C0F: ${r.length} \u5B57\u7B26`);let s=Sr(r);console.log(` [MergeTool] \u68C0\u6D4B\u5230\u884C\u7ED3\u675F\u7B26: ${s===`\r
379
- `?"CRLF":"LF"}`);let i=Xo(r),a=Xo(e.newContent),c=i.split(`
383
+ Or review your newContent to ensure it's complete.`}return{isLargeDeletion:i,deletionRatio:s,message:a}}performThreeWayMerge(e){try{console.log(` [MergeTool] \u5F00\u59CB\u667A\u80FD\u5408\u5E76: ${e.path}`);let t=Mu(e.path),n=`${t}.base`;if(!ms(t))return console.log(" [MergeTool] \u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u521B\u5EFA\u65B0\u6587\u4EF6"),this.writeNewFile(t,n,e.newContent);console.log(" [MergeTool] \u8BFB\u53D6\u5F53\u524D\u6587\u4EF6\u5185\u5BB9...");let r=Ma(t,"utf-8");console.log(` [MergeTool] \u5F53\u524D\u6587\u4EF6\u5927\u5C0F: ${r.length} \u5B57\u7B26`);let s=_r(r);console.log(` [MergeTool] \u68C0\u6D4B\u5230\u884C\u7ED3\u675F\u7B26: ${s===`\r
384
+ `?"CRLF":"LF"}`);let i=hs(r),a=hs(e.newContent),c=i.split(`
380
385
  `).length,l=a.split(`
381
- `).length;if(!e.confirmLargeChange){let h=this.checkLargeDeletion(c,l);if(h.isLargeDeletion)return console.log(` [MergeTool] \u68C0\u6D4B\u5230\u5927\u5E45\u5220\u51CF\uFF08${c} \u2192 ${l}\u884C\uFF09\uFF0C\u9700\u8981\u786E\u8BA4`),h.message}let g=r,p=!1;Ko(n)&&(console.log(" [MergeTool] \u53D1\u73B0\u57FA\u7840\u7248\u672C\u6587\u4EF6\uFF0C\u8BFB\u53D6\u4E2D..."),g=ma(n,"utf-8"),p=!0,console.log(` [MergeTool] \u57FA\u7840\u7248\u672C\u5927\u5C0F: ${g.length} \u5B57\u7B26`));let u=Xo(g);if(u===i){console.log(" [MergeTool] \u65E0\u5E76\u53D1\u4FEE\u6539\uFF08base === current\uFF09\uFF0C\u76F4\u63A5\u5199\u5165");let h=a;if(s===`\r
382
- `&&(h=h.replace(/\n/g,`\r
383
- `)),vr(t,h,"utf-8"),p)try{Yo(n)}catch{}return"Merge successful (direct write, no concurrent edits)."}console.log(" [MergeTool] \u68C0\u6D4B\u5230\u5E76\u53D1\u4FEE\u6539\uFF0C\u6267\u884C\u4E09\u8DEF\u5408\u5E76..."),console.log(` [MergeTool] base=${u.split(`
384
- `).length}\u884C, current=${c}\u884C, incoming=${l}\u884C`);let m=Date.now(),d=ga(u,i,a),y=((Date.now()-m)/1e3).toFixed(2);console.log(` [MergeTool] threeWayMerge \u5B8C\u6210\uFF0C\u8017\u65F6 ${y}s, \u6709\u51B2\u7A81: ${d.hasConflicts}`);let w=d.merged;if(s===`\r
386
+ `).length;if(!e.confirmLargeChange){let v=this.checkLargeDeletion(c,l);if(v.isLargeDeletion)return console.log(` [MergeTool] \u68C0\u6D4B\u5230\u5927\u5E45\u5220\u51CF\uFF08${c} \u2192 ${l}\u884C\uFF09\uFF0C\u9700\u8981\u786E\u8BA4`),v.message}let u=r,p=!1;ms(n)&&(console.log(" [MergeTool] \u53D1\u73B0\u57FA\u7840\u7248\u672C\u6587\u4EF6\uFF0C\u8BFB\u53D6\u4E2D..."),u=Ma(n,"utf-8"),p=!0,console.log(` [MergeTool] \u57FA\u7840\u7248\u672C\u5927\u5C0F: ${u.length} \u5B57\u7B26`));let g=hs(u);if(g===i){console.log(" [MergeTool] \u65E0\u5E76\u53D1\u4FEE\u6539\uFF08base === current\uFF09\uFF0C\u76F4\u63A5\u5199\u5165");let v=a;if(s===`\r
387
+ `&&(v=v.replace(/\n/g,`\r
388
+ `)),Wr(t,v,"utf-8"),p)try{fs(n)}catch{}return"Merge successful (direct write, no concurrent edits)."}console.log(" [MergeTool] \u68C0\u6D4B\u5230\u5E76\u53D1\u4FEE\u6539\uFF0C\u6267\u884C\u4E09\u8DEF\u5408\u5E76..."),console.log(` [MergeTool] base=${g.split(`
389
+ `).length}\u884C, current=${c}\u884C, incoming=${l}\u884C`);let d=Date.now(),m=Pa(g,i,a),h=((Date.now()-d)/1e3).toFixed(2);console.log(` [MergeTool] threeWayMerge \u5B8C\u6210\uFF0C\u8017\u65F6 ${h}s, \u6709\u51B2\u7A81: ${m.hasConflicts}`);let w=m.merged;if(s===`\r
385
390
  `&&(w=w.replace(/\n/g,`\r
386
- `)),d.hasConflicts)return vr(t,w,"utf-8"),`Merge completed with CONFLICTS. File saved with conflict markers.
391
+ `)),m.hasConflicts)return Wr(t,w,"utf-8"),`Merge completed with CONFLICTS. File saved with conflict markers.
387
392
  Conflicts:
388
- ${d.conflicts.map(b=>`Line ${b.lineNumber}: BASE="${b.base.substring(0,50)}..." | CURRENT="${b.current.substring(0,50)}..." | INCOMING="${b.incoming.substring(0,50)}..."`).join(`
393
+ ${m.conflicts.map(T=>`Line ${T.lineNumber}: BASE="${T.base.substring(0,50)}..." | CURRENT="${T.current.substring(0,50)}..." | INCOMING="${T.incoming.substring(0,50)}..."`).join(`
389
394
  `)}
390
395
 
391
- Please resolve conflicts manually or use write() to overwrite.`;if(vr(t,w,"utf-8"),p)try{Yo(n)}catch{}return"Merge successful (three-way merge, concurrent edits preserved)."}catch(t){return this.formatError("Merge",t)}}writeNewFile(e,t,n){try{let r=typeof n=="string"?n:String(n||"");if(vr(e,r,"utf-8"),Ko(t))try{Yo(t)}catch{}return`File created: ${e}`}catch(r){return this.formatError("Failed to create file",r)}}},da=new kt;bn=da});import{EOL as Qo}from"os";function ha(o,e={}){let{preserveEscapes:t=!1,targetFormat:n="lf"}=e,r=o;if(t||(r=r.replace(/\\n/g,`
396
+ Please resolve conflicts manually or use write() to overwrite.`;if(Wr(t,w,"utf-8"),p)try{fs(n)}catch{}return"Merge successful (three-way merge, concurrent edits preserved)."}catch(t){return this.formatError("Merge",t)}}writeNewFile(e,t,n){try{let r=typeof n=="string"?n:String(n||"");if(Wr(e,r,"utf-8"),ms(t))try{fs(t)}catch{}return`File created: ${e}`}catch(r){return this.formatError("Failed to create file",r)}}},Ia=new It;Rn=Ia});import{EOL as ys}from"os";function La(o,e={}){let{preserveEscapes:t=!1,targetFormat:n="lf"}=e,r=o;if(t||(r=r.replace(/\\n/g,`
392
397
  `).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\'/g,"'")),r=r.replace(/\r\n/g,`
393
398
  `).replace(/\r/g,`
394
399
  `),n!=="preserve"&&n!=="lf")switch(n){case"crlf":r=r.replace(/\n/g,`\r
395
- `);break;case"cr":r=r.replace(/\n/g,"\r");break;case"platform":Qo===`\r
400
+ `);break;case"cr":r=r.replace(/\n/g,"\r");break;case"platform":ys===`\r
396
401
  `&&(r=r.replace(/\n/g,`\r
397
- `));break}return r}function Ql(o){if(!o)return{style:"none",dominant:Qo,statistics:{crlf:0,lf:0,cr:0},confidence:0};let e={crlf:(o.match(/\r\n/g)||[]).length,lf:(o.match(/(?<!\r)\n/g)||[]).length,cr:(o.match(/\r(?!\n)/g)||[]).length},t=e.crlf+e.lf+e.cr;if(t===0)return{style:"none",dominant:Qo,statistics:e,confidence:0};let n=`
402
+ `));break}return r}function Au(o){if(!o)return{style:"none",dominant:ys,statistics:{crlf:0,lf:0,cr:0},confidence:0};let e={crlf:(o.match(/\r\n/g)||[]).length,lf:(o.match(/(?<!\r)\n/g)||[]).length,cr:(o.match(/\r(?!\n)/g)||[]).length},t=e.crlf+e.lf+e.cr;if(t===0)return{style:"none",dominant:ys,statistics:e,confidence:0};let n=`
398
403
  `,r=e.lf,s="lf";e.crlf>r&&(n=`\r
399
- `,r=e.crlf,s="crlf"),e.cr>r&&(n="\r",r=e.cr,s="cr");let i=r/t,a;return i===1||i>.8?a=s:a="mixed",{style:a,dominant:n,statistics:e,confidence:i}}var br,ya=S(()=>{br=class{originalContent;normalizedContent;originalStyle;constructor(e){this.originalContent=e,this.originalStyle=Ql(e),this.normalizedContent=ha(e,{preserveEscapes:!0,targetFormat:"lf"})}getNormalizedContent(){return this.normalizedContent}getOriginalStyle(){return this.originalStyle}restoreLineEndings(e){return this.originalStyle.style==="crlf"||this.originalStyle.dominant===`\r
404
+ `,r=e.crlf,s="crlf"),e.cr>r&&(n="\r",r=e.cr,s="cr");let i=r/t,a;return i===1||i>.8?a=s:a="mixed",{style:a,dominant:n,statistics:e,confidence:i}}var Vr,Ra=C(()=>{Vr=class{originalContent;normalizedContent;originalStyle;constructor(e){this.originalContent=e,this.originalStyle=Au(e),this.normalizedContent=La(e,{preserveEscapes:!0,targetFormat:"lf"})}getNormalizedContent(){return this.normalizedContent}getOriginalStyle(){return this.originalStyle}restoreLineEndings(e){return this.originalStyle.style==="crlf"||this.originalStyle.dominant===`\r
400
405
  `?e.replace(/\n/g,`\r
401
- `):this.originalStyle.style==="cr"||this.originalStyle.dominant==="\r"?e.replace(/\n/g,"\r"):e}convertTo(e){return ha(this.originalContent,{preserveEscapes:!0,targetFormat:e})}}});import{existsSync as Zl,readFileSync as eu,writeFileSync as tu}from"fs";import{resolve as nu}from"path";function Tn(o){return Ca.execute(o)}var Pt,Ca,kn,Sa=S(()=>{q();ya();Pt=class extends E{getDefinition(){return{name:"searchReplace",description:`Perform TARGETED SEARCH & REPLACE operations on files.
406
+ `):this.originalStyle.style==="cr"||this.originalStyle.dominant==="\r"?e.replace(/\n/g,"\r"):e}convertTo(e){return La(this.originalContent,{preserveEscapes:!0,targetFormat:e})}}});import{existsSync as Lu,readFileSync as Ru,writeFileSync as Du}from"fs";import{resolve as Fu}from"path";function Dn(o){return Da.execute(o)}var At,Da,Fn,Fa=C(()=>{V();Ra();At=class extends ${getDefinition(){return{name:"searchReplace",description:`Perform TARGETED SEARCH & REPLACE operations on files.
402
407
 
403
408
  \u{1F3AF} PERFECT FOR:
404
409
  - Small configuration updates (port numbers, URLs, etc.)
@@ -419,21 +424,65 @@ Please resolve conflicts manually or use write() to overwrite.`;if(vr(t,w,"utf-8
419
424
  \u{1F4A1} TIPS:
420
425
  - Use precise search text to avoid unintended replacements
421
426
  - Test with small changes first
422
- - For complex modifications, consider using merge() tool instead`,input_schema:{type:"object",properties:{path:{type:"string",description:"The file path to perform search/replace operations on"},operations:{type:"array",description:"Array of search/replace operations. Each operation replaces search text with replace text.",items:{type:"object",properties:{search:{type:"string",description:"Exact text to search for"},replace:{type:"string",description:"Text to replace the search text with"}},required:["search","replace"]}}},required:["path","operations"]}}}execute(e){try{if(!e.path||e.path.trim().length===0)return this.formatError("SearchReplace","Path parameter is required");if(!e.operations||!Array.isArray(e.operations)||e.operations.length===0)return this.formatError("SearchReplace","Operations array is required and must not be empty");let t=nu(e.path);if(!Zl(t))return this.formatError("SearchReplace",`File not found: ${t}`);let n=eu(t,"utf-8"),r=new br(n),s=r.getOriginalStyle(),i=r.getNormalizedContent(),a=0,c=[];for(let[p,u]of e.operations.entries()){let{search:m,replace:d}=u;if(!m||m.trim().length===0){c.push(`\u274C Operation ${p+1}: empty search text`);continue}try{i.includes(m)?(i=i.replace(m,d),a++,c.push(`\u2705 Operation ${p+1}: "${m.substring(0,30)}..." \u2192 "${d.substring(0,30)}..."`)):c.push(`\u274C Operation ${p+1}: search text not found "${m.substring(0,30)}..."`)}catch(y){c.push(`\u274C Operation ${p+1}: ${y instanceof Error?y.message:String(y)}`)}}if(a>0){let p=r.restoreLineEndings(i);(s.style==="crlf"||s.dominant===`\r
423
- `)&&(p=p.replace(/\n/g,`\r
424
- `)),tu(t,p,"utf-8")}let l=`Search/replace completed. ${a} of ${e.operations.length} operations applied successfully.`,g=c.length>0?`
427
+ - For complex modifications, consider using merge() tool instead`,input_schema:{type:"object",properties:{path:{type:"string",description:"The file path to perform search/replace operations on"},operations:{type:"array",description:"Array of search/replace operations. Each operation replaces search text with replace text.",items:{type:"object",properties:{search:{type:"string",description:"Exact text to search for"},replace:{type:"string",description:"Text to replace the search text with"}},required:["search","replace"]}}},required:["path","operations"]}}}execute(e){try{if(!e.path||e.path.trim().length===0)return this.formatError("SearchReplace","Path parameter is required");if(!e.operations||!Array.isArray(e.operations)||e.operations.length===0)return this.formatError("SearchReplace","Operations array is required and must not be empty");let t=Fu(e.path);if(!Lu(t))return this.formatError("SearchReplace",`File not found: ${t}`);let n=Ru(t,"utf-8"),r=new Vr(n),s=r.getOriginalStyle(),i=r.getNormalizedContent(),a=0,c=[];for(let[p,g]of e.operations.entries()){let{search:d,replace:m}=g;if(!d||d.trim().length===0){c.push(`\u274C Operation ${p+1}: empty search text`);continue}try{i.includes(d)?(i=i.replace(d,m),a++,c.push(`\u2705 Operation ${p+1}: "${d.substring(0,30)}..." \u2192 "${m.substring(0,30)}..."`)):c.push(`\u274C Operation ${p+1}: search text not found "${d.substring(0,30)}..."`)}catch(h){c.push(`\u274C Operation ${p+1}: ${h instanceof Error?h.message:String(h)}`)}}if(a>0){let p=r.restoreLineEndings(i);Du(t,p,"utf-8")}let l=`Search/replace completed. ${a} of ${e.operations.length} operations applied successfully.`,u=c.length>0?`
425
428
 
426
429
  Operation details:
427
430
  ${c.join(`
428
- `)}`:"";return l+g}catch(t){return this.formatError("SearchReplace",t)}}formatError(e,t){let n=t instanceof Error?t.message:String(t);return`[${e} Error] ${n}`}},Ca=new Pt;kn=Ca});var Zo={};j(Zo,{CopyTool:()=>Tt,DeleteTool:()=>vt,MergeTool:()=>kt,MkdirTool:()=>xt,MoveTool:()=>bt,ReadTool:()=>St,SearchReplaceTool:()=>Pt,WriteTool:()=>wt,copyFile:()=>xn,copyTool:()=>wn,deleteFile:()=>hn,deleteTool:()=>yn,merge:()=>vn,mergeTool:()=>bn,mkdir:()=>mn,mkdirTool:()=>Qe,moveFile:()=>Cn,moveTool:()=>Sn,read:()=>gn,readTool:()=>pn,searchReplace:()=>Tn,searchReplaceTool:()=>kn,write:()=>dn,writeTool:()=>fn});var Tr=S(()=>{Bi();Qi();Bo();Zi();na();ua();fa();Sa()});import{readFileSync as ru,existsSync as ou}from"fs";import{resolve as su}from"path";function au(o){let e=su(o,".niumignore"),t=[];if(ou(e))try{ru(e,"utf-8").split(`
429
- `).forEach(r=>{let s=r.trim();s&&!s.startsWith("#")&&t.push(cu(s))})}catch(n){console.warn(`Error reading .niumignore file: ${n instanceof Error?n.message:"Unknown error"}`)}return t}function $t(o,e=!0){let t=au(o);return e?[...iu,...t]:t}function cu(o){if(o.startsWith("!")){let e=o.slice(1);return e.includes("/")||e.includes("\\")?o:`!**/${e}`}return o.includes("*")||o.includes("?")||o.includes("{")||o.includes("[")?o:o.endsWith("/")?`**/${o.slice(0,-1)}/**`:o.startsWith("*.")?o:!o.includes("/")&&!o.includes("\\")?`**/${o}/**`:o}var iu,kr=S(()=>{iu=["**/.git/**","**/.svn/**","**/.hg/**","**/node_modules/**","**/vendor/**","**/.pnpm/**","**/bower_components/**","**/dist/**","**/build/**","**/out/**","**/target/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.idea/**","**/.vscode/**","**/.vs/**","**/*.swp","**/*.swo","**/*~","**/.DS_Store","**/Thumbs.db","**/desktop.ini","**/.cache/**","**/tmp/**","**/temp/**","**/__pycache__/**","**/*.pyc","**/.pytest_cache/**","**/*.log","**/logs/**","**/.nium/archives/**","**/.nium/session.json","**/package-lock.json","**/yarn.lock","**/pnpm-lock.yaml","**/Gemfile.lock","**/Pipfile.lock","**/poetry.lock","**/Cargo.lock"]});import{globSync as xa}from"glob";function Pn(o){return wa.execute(o)}var Et,wa,$n,va=S(()=>{q();kr();Et=class extends E{getDefinition(){return{name:"glob",description:`Search for files matching a glob pattern.
431
+ `)}`:"";return l+u}catch(t){return this.formatError("SearchReplace",t)}}formatError(e,t){let n=t instanceof Error?t.message:String(t);return`[${e} Error] ${n}`}},Da=new At;Fn=Da});var Q,Ae=C(()=>{Q=class{getCommonDirectoryDescriptions(){return{src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",components:"\u7EC4\u4EF6\u76EE\u5F55",pages:"\u9875\u9762\u76EE\u5F55",public:"\u516C\u5171\u8D44\u6E90\u76EE\u5F55",assets:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55",utils:"\u5DE5\u5177\u51FD\u6570\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",services:"\u670D\u52A1\u5C42\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",plugins:"\u63D2\u4EF6\u76EE\u5F55",hooks:"\u94A9\u5B50\u51FD\u6570\u76EE\u5F55",types:"\u7C7B\u578B\u5B9A\u4E49\u76EE\u5F55",interfaces:"\u63A5\u53E3\u5B9A\u4E49\u76EE\u5F55",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49\u76EE\u5F55"}}findEntryPoints(e,t){return[]}findEntryPointsByConfig(e,t,n){let r=new Set,{existsSync:s,readFileSync:i}=$r("fs"),{resolve:a}=$r("path");if(n.commonEntries&&n.commonEntries.forEach(c=>{if(e.includes(c))r.add(c);else if(c.includes("*")){let l=new RegExp(c.replace(/\*/g,"[^/]+").replace(/\/\*\*/g,".+"));e.forEach(u=>{l.test(u)&&r.add(u)})}}),n.configFileChecks)for(let c of n.configFileChecks){let l=a(t,c.filePath);if(s(l))try{let u=i(l,"utf-8");c.parseFn(u,e).forEach(g=>r.add(g))}catch{}}if(n.contentChecks)for(let c of n.contentChecks)e.forEach(l=>{if(!c.filter||c.filter(l))try{let u=i(a(t,l),"utf-8");c.pattern.test(u)&&r.add(l)}catch{}});return Array.from(r)}detectCodeStandards(e){return[]}detectCodeStandardsByFiles(e,t){let n=[],{existsSync:r,readFileSync:s}=$r("fs"),{resolve:i}=$r("path");for(let[a,c]of Object.entries(t)){let l=!1;if(Array.isArray(c)){for(let u of c)if(r(i(e,u))){l=!0;break}}else for(let u of c.files){let p=i(e,u);if(r(p))if(c.contentCheck)try{let g=s(p,"utf-8");if(c.contentCheck(g)){l=!0;break}}catch{}else{l=!0;break}}l&&n.push(a)}return n}async validateCode(e,t){return{valid:!0,message:`No validator available for ${this.getLanguageName()}`}}}});import{existsSync as Cs,readFileSync as Ou}from"fs";import{resolve as xs}from"path";var zr,Oa=C(()=>{Ae();zr=class extends Q{getLanguageName(){return"JavaScript/TypeScript"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684 JavaScript/TypeScript \u4EE3\u7801",lib:"\u7F16\u8BD1\u540E\u7684\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u6253\u5305\u540E\u7684\u751F\u4EA7\u4EE3\u7801",public:"\u516C\u5171\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u9759\u6001\u6587\u4EF6",assets:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u56FE\u7247\u3001\u6837\u5F0F\u7B49",components:"React/Vue \u7EC4\u4EF6\u76EE\u5F55",pages:"\u9875\u9762\u7EC4\u4EF6\u76EE\u5F55",hooks:"React \u94A9\u5B50\u51FD\u6570\u76EE\u5F55",context:"React \u4E0A\u4E0B\u6587\u76EE\u5F55",redux:"Redux \u72B6\u6001\u7BA1\u7406\u76EE\u5F55",store:"\u72B6\u6001\u7BA1\u7406\u76EE\u5F55",actions:"Redux \u52A8\u4F5C\u76EE\u5F55",reducers:"Redux \u5F52\u7EA6\u5668\u76EE\u5F55",slices:"Redux Toolkit \u5207\u7247\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",utils:"\u5DE5\u5177\u51FD\u6570\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",services:"API \u670D\u52A1\u76EE\u5F55",api:"API \u63A5\u53E3\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",types:"TypeScript \u7C7B\u578B\u5B9A\u4E49\u76EE\u5F55",interfaces:"TypeScript \u63A5\u53E3\u5B9A\u4E49\u76EE\u5F55",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u6D4B\u8BD5\u7B49\u811A\u672C",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",__tests__:"Jest \u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55",spec:"Jasmine/Mocha \u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=xs(e,"package.json");if(Cs(r))try{let s=Ou(r,"utf-8"),i=JSON.parse(s);i.engines&&(i.engines.node&&(n["Node.js"]=i.engines.node),i.engines.npm&&(n.npm=i.engines.npm),i.engines.yarn&&(n.yarn=i.engines.yarn),i.engines.pnpm&&(n.pnpm=i.engines.pnpm))}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["index.js","index.ts","index.mjs","index.cjs","app.js","app.ts","main.js","main.ts","server.js","server.ts","src/index.js","src/index.ts","src/main.js","src/main.ts","src/app.js","src/app.ts","next.config.js","vite.config.js","webpack.config.js","rollup.config.js"],configFileChecks:[{filePath:"package.json",parseFn:(n,r)=>{let s=[],i=JSON.parse(n);return i.main&&s.push(i.main),i.bin&&(typeof i.bin=="string"?s.push(i.bin):s.push(...Object.values(i.bin))),s}}]})}detectCodeStandards(e){let t={ESLint:[".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc"],Prettier:[".prettierrc",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.js","prettier.config.js"],EditorConfig:[".editorconfig"],TypeScript:["tsconfig.json"],Flow:[".flowconfig"],Jest:["jest.config.js","jest.config.ts","jest.config.json"],Vitest:["vitest.config.js","vitest.config.ts"],Mocha:["mocha.opts",".mocharc.js"],Jasmine:["jasmine.json"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".js",".mjs",".cjs",".jsx",".ts",".tsx",".vue",".svelte",".astro"]}getCommonTestExtensions(){return[".test.js",".test.ts",".test.jsx",".test.tsx",".spec.js",".spec.ts",".spec.jsx",".spec.tsx"]}getCommonConfigFiles(){return["package.json","tsconfig.json","tsconfig.node.json","jsconfig.json",".eslintrc.js",".eslintrc.json",".prettierrc",".prettierrc.json",".editorconfig","vite.config.js","vite.config.ts","webpack.config.js","webpack.config.ts","rollup.config.js","rollup.config.ts","next.config.js","next.config.mjs","nuxt.config.js","nuxt.config.ts","astro.config.mjs","astro.config.ts"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}async validateCode(e,t){let{execSync:n}=await import("child_process"),{extname:r}=await import("path"),s=r(e);return s===".ts"||s===".tsx"?await this.validateTypeScript(e,t,n):await this.validateJavaScript(e,t,n)}async validateTypeScript(e,t,n){try{let r=xs(t,"tsconfig.json");if(!Cs(r))return{valid:!0,message:"No tsconfig.json found, skipping TypeScript validation"};let s=n(`npx tsc --noEmit --pretty false --skipLibCheck --noResolve "${e}"`,{encoding:"utf-8",stdio:"pipe",cwd:t,timeout:3e4});return{valid:!0,message:"TypeScript validation passed"}}catch(r){let s=r.stderr||r.stdout||r.message,i=this.parseTypeScriptErrors(s);return i.length===0?{valid:!1,message:`TypeScript validation failed:
432
+ ${s}`}:{valid:!1,message:`TypeScript validation failed with ${i.length} error(s)`,errors:i}}}async validateJavaScript(e,t,n){try{if(![".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc"].some(c=>Cs(xs(t,c))))return{valid:!0,message:"No ESLint configuration found, skipping JavaScript validation"};let i=n(`npx eslint --format json ${e}`,{encoding:"utf-8",stdio:"pipe",cwd:t,timeout:3e4}),a=JSON.parse(i);return a.length===0||a[0].errorCount===0?{valid:!0,message:"ESLint validation passed",warnings:a[0]?.warningCount>0?this.parseEslintMessages(a[0].messages,"warning"):void 0}:{valid:!1,message:`ESLint validation failed with ${a[0].errorCount} error(s)`,errors:this.parseEslintMessages(a[0].messages,"error"),warnings:this.parseEslintMessages(a[0].messages,"warning")}}catch(r){if(r.message?.includes("not found")||r.code==="ENOENT")return{valid:!0,message:"ESLint not available, skipping JavaScript validation"};try{let s=JSON.parse(r.stdout||"[]");if(s.length>0&&s[0].errorCount>0)return{valid:!1,message:`ESLint validation failed with ${s[0].errorCount} error(s)`,errors:this.parseEslintMessages(s[0].messages,"error"),warnings:this.parseEslintMessages(s[0].messages,"warning")}}catch{}return{valid:!1,message:`JavaScript validation failed: ${r.message}`}}}parseTypeScriptErrors(e){let t=[],n=e.split(`
433
+ `);for(let r of n){let s=r.match(/\((\d+),(\d+)\):\s+(error|warning)\s+TS(\d+):\s+(.+)/);s&&t.push({line:parseInt(s[1]),column:parseInt(s[2]),severity:s[3],code:`TS${s[4]}`,message:s[5]})}return t}parseEslintMessages(e,t){return e.filter(n=>n.severity===(t==="error"?2:1)).map(n=>({line:n.line,column:n.column,severity:t,code:n.ruleId,message:n.message}))}}});import{existsSync as Le,readFileSync as On,writeFileSync as ju,mkdirSync as _u}from"fs";import{resolve as Lt,dirname as Nu}from"path";var Hr,ja=C(()=>{Ae();Hr=class extends Q{getLanguageName(){return"Java"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u6839\u76EE\u5F55","src/main/java":"\u4E3B\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u751F\u4EA7\u4EE3\u7801","src/main/resources":"\u4E3B\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u914D\u7F6E\u6587\u4EF6\u548C\u9759\u6001\u8D44\u6E90","src/test/java":"\u6D4B\u8BD5\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5","src/test/resources":"\u6D4B\u8BD5\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u6D4B\u8BD5\u914D\u7F6E\u6587\u4EF6",target:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u7C7B\u6587\u4EF6\u548C\u6253\u5305\u4EA7\u7269",lib:"\u5916\u90E8\u4F9D\u8D56\u5E93\u76EE\u5F55",libs:"\u5916\u90E8\u4F9D\u8D56\u5E93\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",gradle:"Gradle \u6784\u5EFA\u7CFB\u7EDF\u76EE\u5F55",maven:"Maven \u6784\u5EFA\u7CFB\u7EDF\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C"}}async detectVersions(e,t){let n={},r=Lt(e,"pom.xml");if(Le(r))try{let a=On(r,"utf-8"),c=a.match(/<java\.version>([^<]+)<\/java\.version>/)||a.match(/<maven\.compiler\.source>([^<]+)<\/maven\.compiler\.source>/);c&&(n.Java=c[1])}catch{}let s=Lt(e,"build.gradle"),i=Lt(e,"build.gradle.kts");if(Le(s))try{let a=On(s,"utf-8"),c=a.match(/sourceCompatibility\s*=\s*['"]?([^'"\\s]+)['"]?/)||a.match(/targetCompatibility\s*=\s*['"]?([^'"\\s]+)['"]?/);c&&(n.Java=c[1])}catch{}else if(Le(i))try{let a=On(i,"utf-8"),c=a.match(/sourceCompatibility\s*=\s*JavaVersion\.VERSION_(\d+_\d+)/)||a.match(/targetCompatibility\s*=\s*JavaVersion\.VERSION_(\d+_\d+)/);c&&(n.Java=c[1].replace("_","."))}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["src/main/java/**/Main.java","src/main/java/**/Application.java","src/main/java/**/App.java","src/main/java/**/Bootstrap.java","src/main/java/**/Launcher.java"],contentChecks:[{pattern:/public static void main\(String\[\] args\)/,filter:n=>n.endsWith(".java")}]})}detectCodeStandards(e){let t={Checkstyle:["checkstyle.xml","google_checks.xml","sun_checks.xml"],PMD:["pmd.xml",".pmd"],FindBugs:["findbugs.xml",".findbugs"],SpotBugs:["spotbugs.xml",".spotbugs"],SonarQube:["sonar-project.properties"],EditorConfig:[".editorconfig"],Maven:["pom.xml"],Gradle:["build.gradle","build.gradle.kts"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".java",".class",".jar",".war",".ear"]}getCommonTestExtensions(){return["Test.java","Tests.java"]}getCommonConfigFiles(){return["pom.xml","build.gradle","build.gradle.kts","settings.gradle","gradle.properties","checkstyle.xml","pmd.xml","spotbugs.xml","sonar-project.properties",".editorconfig"]}async analyzeDependencies(e,t){let n={dependencies:[],conflicts:[],recommendations:[]};try{let r=Lt(e,"pom.xml"),s=Lt(e,"build.gradle"),i=Lt(e,"build.gradle.kts");if(!Le(r)&&!Le(s)&&!Le(i))return n;Le(r)?await this.analyzeMavenDependencies(r,n):Le(s)?this.analyzeGradleDependencies(s,n):Le(i)&&this.analyzeGradleDependencies(i,n),this.detectDependencyConflicts(n),this.generateRecommendations(n)}catch(r){console.error("\u4F9D\u8D56\u5206\u6790\u5931\u8D25:",r)}return n}async analyzeMavenDependencies(e,t){let n=On(e,"utf-8"),r=await import("xml2js");return new Promise((s,i)=>{r.parseString(n,{explicitArray:!1},(a,c)=>{if(a){i(a);return}let{project:l}=c;if(!l){s();return}let u=l.dependencies?.dependency;u&&(Array.isArray(u)?u:[u]).forEach(g=>{t.dependencies.push({groupId:g.groupId,artifactId:g.artifactId,version:g.version||"unknown",scope:g.scope||"compile",type:g.type||"jar"})}),s()})})}analyzeGradleDependencies(e,t){let n=On(e,"utf-8");[/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*['"]([^:'"]+):([^:'"]+):([^:'"]+)['"]/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*['"]([^:'"]+):([^:'"]+)['"]/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"],\s*version\s*:\s*['"]([^'"]+)['"][^)]*\)/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*\(\s*["']([^"']+):([^"']+):([^"']+)["']\s*\)/gms].forEach(s=>{let i;for(;(i=s.exec(n))!==null;){let a,c,l,u;if(i.length===5)[,a,c,l,u]=i;else if(i.length===4)[,a,c,l]=i,u="managed";else continue;t.dependencies.push({groupId:c,artifactId:l,version:u,scope:a.toLowerCase(),type:"jar"})}})}detectDependencyConflicts(e){let t=new Map;e.dependencies.forEach(n=>{if(n.groupId&&n.artifactId){let r=`${n.groupId}:${n.artifactId}`;t.has(r)||t.set(r,new Set),t.get(r)?.add(n.version)}}),t.forEach((n,r)=>{if(n.size>1){let[s,i]=r.split(":");e.conflicts.push({groupId:s,artifactId:i,versions:Array.from(n),severity:this.calculateConflictSeverity(Array.from(n))})}})}calculateConflictSeverity(e){let t=e.map(r=>{let s=r.match(/^(\d+)/);return s?parseInt(s[1]):0});return new Set(t).size>1?"high":e.length>2?"medium":"low"}generateRecommendations(e){let t=[];e.conflicts.length>0&&t.push(`${e.conflicts.length} \u4E2A\u4F9D\u8D56\u5B58\u5728\u7248\u672C\u51B2\u7A81\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u7248\u672C`),e.dependencies.some(s=>s.groupId==="org.springframework.boot")&&t.push("\u9879\u76EE\u4F7F\u7528Spring Boot\uFF0C\u5EFA\u8BAE\u4F7F\u7528Spring Dependency Management\u63D2\u4EF6\u7BA1\u7406\u4F9D\u8D56\u7248\u672C");let r=this.detectJavaVersion(e);if(r){let s=parseInt(r);s<11?t.push("Java\u7248\u672C\u8F83\u65E7\uFF0C\u5EFA\u8BAE\u5347\u7EA7\u5230Java 11\u6216\u66F4\u9AD8\u7248\u672C"):s>=17&&t.push("\u4F7F\u7528\u73B0\u4EE3Java\u7248\u672C\uFF0C\u53EF\u4EE5\u4EAB\u53D7\u6700\u65B0\u7279\u6027")}e.recommendations=t}detectJavaVersion(e){}saveDependencyAnalysis(e,t){try{let n=`${t}/.nium/java-dependency-analysis.json`;_u(Nu(n),{recursive:!0}),ju(n,JSON.stringify({scanTime:new Date().toISOString(),dependencies:e.dependencies,conflicts:e.conflicts,recommendations:e.recommendations},null,2))}catch(n){console.error("\u4FDD\u5B58\u4F9D\u8D56\u5206\u6790\u7ED3\u679C\u5931\u8D25:",n)}}}});import{existsSync as jn,readFileSync as Ss}from"fs";import{resolve as _n}from"path";var Jr,_a=C(()=>{Ae();Jr=class extends Q{getLanguageName(){return"Python"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Python \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",main:"\u4E3B\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",__pycache__:"Python \u7F16\u8BD1\u7F13\u5B58\u76EE\u5F55",venv:"\u865A\u62DF\u73AF\u5883\u76EE\u5F55",".venv":"\u865A\u62DF\u73AF\u5883\u76EE\u5F55",env:"\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",data:"\u6570\u636E\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",dist:"\u6253\u5305\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u53D1\u5E03\u7684\u5305\u6587\u4EF6",requirements:"\u4F9D\u8D56\u7BA1\u7406\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=_n(e,".python-version");if(jn(r))try{let a=Ss(r,"utf-8");n.Python=a.trim()}catch{}let s=_n(e,"pyproject.toml");if(jn(s))try{let c=Ss(s,"utf-8").match(/python\s*=\s*['"]([^'"]+)['"]/);c&&(n.Python=c[1])}catch{}let i=_n(e,"setup.py");if(jn(i))try{let c=Ss(i,"utf-8").match(/python_requires\s*=\s*['"]([^'"]+)['"]/);c&&(n.Python=c[1])}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["main.py","__main__.py","app.py","run.py","manage.py","server.py","cli.py","setup.py","src/main.py","src/__main__.py","src/app.py"],configFileChecks:[{filePath:"setup.py",parseFn:(n,r)=>{let s=[],i=n.match(/entry_points\s*=\s*\{[^}]+\}/s);if(i){let c=i[0].match(/console_scripts\s*:\s*\[([^\]]+)\]/s);if(c){let u=c[1].match(/([^=]+)\s*=\s*([^,]+)/g);u&&u.forEach(p=>{let[g,d]=p.split("=").map(h=>h.trim()),m=d.replace(/\./g,"/").replace(":","/")+".py";s.push(m)})}}return s}}]})}detectCodeStandards(e){let t={Black:{files:["pyproject.toml","setup.cfg"],contentCheck:n=>n.includes("[tool.black]")},Pylint:[".pylintrc","pylintrc","setup.cfg"],Flake8:[".flake8","flake8.cfg","setup.cfg"],Mypy:["mypy.ini",".mypy.ini","setup.cfg","pyproject.toml"],isort:[".isort.cfg","setup.cfg","pyproject.toml"],Bandit:[".bandit","bandit.yml"],Pytest:["pytest.ini","setup.cfg","conftest.py"],EditorConfig:[".editorconfig"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".py",".pyc",".pyo",".pyd",".pyx",".pxd",".pxi"]}getCommonTestExtensions(){return[".test.py",".spec.py","_test.py","test_*.py","*_test.py"]}getCommonConfigFiles(){return["pyproject.toml","setup.py","setup.cfg","requirements.txt","requirements-dev.txt","Pipfile","Pipfile.lock","poetry.lock",".pylintrc",".flake8","mypy.ini",".isort.cfg","pytest.ini","conftest.py",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}async validateCode(e,t){let{execSync:n}=await import("child_process"),r=await Promise.all([this.validatePythonSyntax(e,t,n),this.validateWithFlake8(e,t,n),this.validateWithMypy(e,t,n)]),s=r.find(a=>!a.valid);if(s)return s;let i=r.flatMap(a=>a.warnings||[]).filter((a,c,l)=>l.findIndex(u=>u.message===a.message)===c);return{valid:!0,message:"Python validation passed",warnings:i.length>0?i:void 0}}async validatePythonSyntax(e,t,n){try{let r="python3";try{n("python3 --version",{stdio:"pipe"})}catch{r="python"}return n(`${r} -m py_compile "${e}"`,{encoding:"utf-8",stdio:"pipe",cwd:t,timeout:1e4}),{valid:!0,message:"Python syntax check passed"}}catch(r){if(r.message?.includes("not found")||r.message?.includes("not recognized")||r.code==="ENOENT"||r.message?.includes("Command failed"))return{valid:!0,message:"Python not available, skipping validation"};let s=r.stderr||r.stdout||r.message,i=this.parsePythonSyntaxErrors(s);return{valid:!1,message:"Python syntax errors found",errors:i.length>0?i:[{severity:"error",message:s}]}}}async validateWithFlake8(e,t,n){try{if(![".flake8","setup.cfg","tox.ini"].some(a=>jn(_n(t,a))))return{valid:!0,message:"No Flake8 configuration found, skipping"};let i="python3";try{n("python3 --version",{stdio:"pipe"})}catch{i="python"}return n(`${i} -m flake8 --format=json "${e}"`,{encoding:"utf-8",stdio:"pipe",cwd:t,timeout:15e3}),{valid:!0,message:"Flake8 validation passed"}}catch(r){if(r.message?.includes("No module named")||r.code==="ENOENT")return{valid:!0,message:"Flake8 not available, skipping"};let s=r.stdout||r.stderr||"",i=this.parseFlake8Errors(s);return i.length===0?{valid:!0,message:"Flake8 validation completed"}:{valid:!1,message:`Flake8 found ${i.length} issue(s)`,errors:i.filter(a=>a.severity==="error"),warnings:i.filter(a=>a.severity==="warning")}}}async validateWithMypy(e,t,n){try{if(!["mypy.ini",".mypy.ini","setup.cfg","pyproject.toml"].some(a=>jn(_n(t,a))))return{valid:!0,message:"No Mypy configuration found, skipping"};let i="python3";try{n("python3 --version",{stdio:"pipe"})}catch{i="python"}return n(`${i} -m mypy --show-column-numbers "${e}"`,{encoding:"utf-8",stdio:"pipe",cwd:t,timeout:2e4}),{valid:!0,message:"Mypy type checking passed"}}catch(r){if(r.message?.includes("No module named")||r.code==="ENOENT")return{valid:!0,message:"Mypy not available, skipping"};let s=r.stdout||r.stderr||"",i=this.parseMypyErrors(s);return i.length===0?{valid:!0,message:"Mypy validation completed"}:{valid:!1,message:`Mypy found ${i.length} type error(s)`,errors:i}}}parsePythonSyntaxErrors(e){let t=[],n=e.split(`
434
+ `);for(let r of n){let s=r.match(/File "([^"]+)", line (\d+)/);if(s){let i=n[n.indexOf(r)+1];t.push({line:parseInt(s[2]),severity:"error",message:i?.trim()||"Syntax error"})}}return t}parseFlake8Errors(e){let t=[],n=e.split(`
435
+ `);for(let r of n){let s=r.match(/([^:]+):(\d+):(\d+):\s+([A-Z]\d+)\s+(.+)/);if(s){let i=s[4],a=i.startsWith("E")||i.startsWith("F")?"error":"warning";t.push({line:parseInt(s[2]),column:parseInt(s[3]),severity:a,code:i,message:s[5]})}}return t}parseMypyErrors(e){let t=[],n=e.split(`
436
+ `);for(let r of n){let s=r.match(/([^:]+):(\d+):(\d+):\s+(error|warning|note):\s+(.+)/);if(s){let i=s[4]==="error"?"error":s[4]==="warning"?"warning":"info";t.push({line:parseInt(s[2]),column:parseInt(s[3]),severity:i,message:s[5]})}}return t}}});import{existsSync as Na,readFileSync as Ua}from"fs";import{resolve as Wa}from"path";var Gr,Va=C(()=>{Ae();Gr=class extends Q{getLanguageName(){return"Go"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF08\u4F20\u7EDF Go \u9879\u76EE\u7ED3\u6784\uFF09",cmd:"\u547D\u4EE4\u884C\u5DE5\u5177\u76EE\u5F55\uFF0C\u5305\u542B\u53EF\u6267\u884C\u7A0B\u5E8F\u7684\u5165\u53E3\u70B9",internal:"\u5185\u90E8\u5305\u76EE\u5F55\uFF0C\u4EC5\u672C\u9879\u76EE\u53EF\u4F7F\u7528",pkg:"\u53EF\u5BFC\u51FA\u5305\u76EE\u5F55\uFF0C\u4F9B\u5176\u4ED6\u9879\u76EE\u4F7F\u7528",api:"API \u5B9A\u4E49\u76EE\u5F55",web:"Web \u5E94\u7528\u76F8\u5173\u4EE3\u7801\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",handlers:"\u8BF7\u6C42\u5904\u7406\u5668\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Wa(e,"go.mod");if(Na(r))try{let a=Ua(r,"utf-8").match(/^go\s+(\d+\.\d+)/m);a&&(n.Go=a[1])}catch{}let s=Wa(e,"go.sum");if(Na(s))try{let a=Ua(s,"utf-8").match(/^golang\.org\/x\/sys\/v\d+\/[^\s]+\s+go(\d+\.\d+)/);a&&!n.Go&&(n.Go=a[1])}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["main.go","cmd/main.go","cmd/app/main.go","cmd/server/main.go","cmd/cli/main.go","src/main.go"],contentChecks:[{pattern:/func main\(\)/,filter:n=>n.endsWith(".go")}]})}detectCodeStandards(e){let t={GoFmt:[".gofmt"],GoLint:[".golint"],"GolangCI-Lint":[".golangci.yml",".golangci.yaml"],EditorConfig:[".editorconfig"],GoMod:["go.mod"],GoSum:["go.sum"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".go",".mod",".sum"]}getCommonTestExtensions(){return["_test.go",".test.go"]}getCommonConfigFiles(){return["go.mod","go.sum",".golangci.yml",".golangci.yaml",".editorconfig","Makefile"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as Uu,readFileSync as Wu}from"fs";import{resolve as Vu}from"path";var Br,za=C(()=>{Ae();Br=class extends Q{getLanguageName(){return"Rust"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Rust \u4EE3\u7801","src/bin":"\u4E8C\u8FDB\u5236\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u591A\u4E2A\u53EF\u6267\u884C\u7A0B\u5E8F","src/lib.rs":"\u5E93\u9879\u76EE\u7684\u4E3B\u5165\u53E3\u6587\u4EF6","src/main.rs":"\u4E8C\u8FDB\u5236\u9879\u76EE\u7684\u4E3B\u5165\u53E3\u6587\u4EF6",target:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6\u548C\u4F9D\u8D56",tests:"\u96C6\u6210\u6D4B\u8BD5\u76EE\u5F55\uFF0C\u5305\u542B\u96C6\u6210\u6D4B\u8BD5\u4EE3\u7801",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",benches:"\u57FA\u51C6\u6D4B\u8BD5\u76EE\u5F55\uFF0C\u5305\u542B\u6027\u80FD\u6D4B\u8BD5\u4EE3\u7801",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",".cargo":"Cargo \u914D\u7F6E\u76EE\u5F55",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Vu(e,"Cargo.toml");if(Uu(r))try{let i=Wu(r,"utf-8").match(/rust-version\s*=\s*['"]([^'"]+)['"]/);i&&(n.Rust=i[1])}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["src/main.rs","src/lib.rs","src/bin/main.rs","src/bin/*.rs"]})}detectCodeStandards(e){let t={Rustfmt:["rustfmt.toml",".rustfmt.toml"],Clippy:["clippy.toml",".clippy.toml"],EditorConfig:[".editorconfig"],Cargo:["Cargo.toml","Cargo.lock"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".rs",".toml",".lock"]}getCommonTestExtensions(){return["_test.rs",".test.rs","tests/*.rs"]}getCommonConfigFiles(){return["Cargo.toml","Cargo.lock","rustfmt.toml","clippy.toml",".editorconfig","Makefile"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as Ha,readFileSync as Ja}from"fs";import{resolve as Ga}from"path";var qr,Ba=C(()=>{Ae();qr=class extends Q{getLanguageName(){return"PHP"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 PHP \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",public:"\u516C\u5171\u8BBF\u95EE\u76EE\u5F55\uFF0C\u5305\u542B\u5165\u53E3\u6587\u4EF6\u548C\u9759\u6001\u8D44\u6E90","index.php":"\u7F51\u7AD9\u5165\u53E3\u6587\u4EF6",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",vendor:"Composer \u4F9D\u8D56\u5E93\u76EE\u5F55",composer:"Composer \u76F8\u5173\u6587\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Ga(e,"composer.json");if(Ha(r))try{let i=Ja(r,"utf-8"),a=JSON.parse(i);a.require&&a.require.php&&(n.PHP=a.require.php)}catch{}let s=Ga(e,".php-version");if(Ha(s))try{let i=Ja(s,"utf-8");n.PHP=i.trim()}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["index.php","public/index.php","app/index.php","src/index.php","cli.php","artisan","bin/console","composer.json"]})}detectCodeStandards(e){let t={PHP_CodeSniffer:["phpcs.xml","phpcs.xml.dist",".phpcs.xml",".phpcs.xml.dist"],PHPStan:["phpstan.neon","phpstan.neon.dist","phpstan.yml","phpstan.yml.dist"],Psalm:["psalm.xml","psalm.xml.dist","psalm.yml","psalm.yml.dist"],"PHP-CS-Fixer":[".php-cs-fixer.php",".php-cs-fixer.dist.php"],EditorConfig:[".editorconfig"],PHPUnit:["phpunit.xml","phpunit.xml.dist"],Composer:["composer.json","composer.lock"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".php",".phtml",".phar",".json",".lock"]}getCommonTestExtensions(){return[".test.php",".spec.php","Test.php","Tests.php","tests/*.php"]}getCommonConfigFiles(){return["composer.json","composer.lock","phpcs.xml","phpstan.neon","psalm.xml",".php-cs-fixer.php","phpunit.xml",".editorconfig",".php-version"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as qa,readFileSync as Ka}from"fs";import{resolve as Ya}from"path";var Kr,Xa=C(()=>{Ae();Kr=class extends Q{getLanguageName(){return"Ruby"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Ruby \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",spec:"RSpec \u6D4B\u8BD5\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",Gemfile:"RubyGems \u4F9D\u8D56\u914D\u7F6E\u6587\u4EF6"}}async detectVersions(e,t){let n={},r=Ya(e,".ruby-version");if(qa(r))try{let i=Ka(r,"utf-8");n.Ruby=i.trim()}catch{}let s=Ya(e,"Gemfile");if(qa(s))try{let a=Ka(s,"utf-8").match(/ruby\s+['"]([^'"]+)['"]/);a&&!n.Ruby&&(n.Ruby=a[1])}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["main.rb","app.rb","bin/rails","bin/rake","bin/console","config.ru","Rakefile","Gemfile"]})}detectCodeStandards(e){let t={RuboCop:[".rubocop.yml",".rubocop.yaml",".rubocop_todo.yml"],RSpec:["spec/spec_helper.rb","spec/rails_helper.rb"],Minitest:["test/test_helper.rb"],EditorConfig:[".editorconfig"],Bundler:["Gemfile","Gemfile.lock"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".rb",".gemspec",".rake",".ru",".lock"]}getCommonTestExtensions(){return["_test.rb",".test.rb","test_*.rb","*_test.rb","spec/**/*.rb","test/**/*.rb"]}getCommonConfigFiles(){return["Gemfile","Gemfile.lock",".rubocop.yml",".ruby-version",".ruby-gemset","Rakefile","config.ru",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as zu,readFileSync as Qa}from"fs";import{resolve as Za}from"path";import{globSync as vs}from"glob";var Yr,ec=C(()=>{Ae();Yr=class extends Q{getLanguageName(){return".NET"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 .NET \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",bin:"\u7F16\u8BD1\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",obj:"\u4E2D\u95F4\u7F16\u8BD1\u8F93\u51FA\u76EE\u5F55",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",packages:"NuGet \u5305\u76EE\u5F55",nuget:"NuGet \u76F8\u5173\u6587\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",Controllers:"\u63A7\u5236\u5668\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",Models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",Views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55\uFF08ASP.NET MVC \u9879\u76EE\uFF09",Pages:"Razor Pages \u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",wwwroot:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=[...vs("*.csproj",{cwd:e}),...vs("*.vbproj",{cwd:e}),...vs("*.fsproj",{cwd:e})];for(let i of r)try{let a=Za(e,i),c=Qa(a,"utf-8"),l=c.match(/<TargetFramework>([^<]+)<\/TargetFramework>/)||c.match(/<TargetFrameworks>([^<]+)<\/TargetFrameworks>/);if(l){n[".NET Framework"]=l[1];break}let u=c.match(/<LangVersion>([^<]+)<\/LangVersion>/);u&&(n["C# Version"]=u[1])}catch{}let s=Za(e,"global.json");if(zu(s))try{let i=Qa(s,"utf-8"),a=JSON.parse(i);a.sdk&&a.sdk.version&&(n[".NET SDK"]=a.sdk.version)}catch{}return n}findEntryPoints(e,t){return this.findEntryPointsByConfig(e,t,{commonEntries:["Program.cs","Startup.cs","App.xaml.cs","MainWindow.xaml.cs","Program.vb","Startup.vb","App.xaml.vb","MainWindow.xaml.vb","Program.fs","Startup.fs"]})}detectCodeStandards(e){let t={StyleCop:[".stylecop","stylecop.json","stylecop.ruleset"],EditorConfig:[".editorconfig"],xUnit:["xunit.runner.json"],NUnit:["nunit.config","nunit3.config"],MSTest:["app.config","web.config"],NuGet:["nuget.config","packages.config"]};return this.detectCodeStandardsByFiles(e,t)}getCommonSourceExtensions(){return[".cs",".vb",".fs",".csproj",".vbproj",".fsproj",".config",".json",".xml"]}getCommonTestExtensions(){return["Test.cs","Tests.cs","Test.vb","Tests.vb","Test.fs","Tests.fs","*Test.csproj","*Tests.csproj"]}getCommonConfigFiles(){return["*.csproj","*.vbproj","*.fsproj","appsettings.json","app.config","web.config","nuget.config","packages.config","global.json",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});var ws,Ue,bs=C(()=>{Oa();ja();_a();Va();za();Ba();Xa();ec();ws=class o{static instance;handlers=new Map;constructor(){this.registerHandlers()}static getInstance(){return o.instance||(o.instance=new o),o.instance}registerHandlers(){[new zr,new Hr,new Jr,new Gr,new Br,new qr,new Kr,new Yr].forEach(t=>{let n=t.getLanguageName();this.handlers.set(n.toLowerCase(),t),this.registerLanguageAliases(n,t)})}registerLanguageAliases(e,t){let n={"javascript/typescript":["javascript","typescript","node.js","nodejs"],java:["java","jdk","jvm"],python:["python","py"],go:["go","golang"],rust:["rust","rs"],php:["php"],ruby:["ruby","rb"],".net":["c#/.net","csharp","dotnet",".net","vb.net","f#"]},r=e.toLowerCase();n[r]&&n[r].forEach(s=>{this.handlers.set(s.toLowerCase(),t)})}getHandler(e){if(!e)return null;let t=e.toLowerCase();return this.handlers.get(t)||null}getSupportedLanguages(){return Array.from(new Set(Array.from(this.handlers.values()).map(e=>e.getLanguageName())))}getDirectoryDescriptions(e){let t=this.getHandler(e);return t?t.getDirectoryDescriptions():{src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55"}}async detectVersions(e,t,n){let r=this.getHandler(e);return r?await r.detectVersions(t,n):{}}findEntryPoints(e,t,n){let r=this.getHandler(e);return r?r.findEntryPoints(t,n):[]}detectCodeStandards(e,t){let n=this.getHandler(e);return n?n.detectCodeStandards(t):[]}getCommonSourceExtensions(e){let t=this.getHandler(e);return t?t.getCommonSourceExtensions():[]}getCommonTestExtensions(e){let t=this.getHandler(e);return t?t.getCommonTestExtensions():[]}getCommonConfigFiles(e){let t=this.getHandler(e);return t?t.getCommonConfigFiles():[]}getDirectoryDescriptionsForLanguages(e){let t={};return e.forEach(n=>{let r=this.getDirectoryDescriptions(n);Object.assign(t,r)}),t}async detectVersionsForLanguages(e,t,n){let r={};for(let s of e){let i=await this.detectVersions(s,t,n);Object.assign(r,i)}return r}findEntryPointsForLanguages(e,t,n){let r=[];for(let s of e){let i=this.findEntryPoints(s,t,n);r.push(...i)}return[...new Set(r)]}detectCodeStandardsForLanguages(e,t){let n=[];for(let r of e){let s=this.detectCodeStandards(r,t);n.push(...s)}return[...new Set(n)]}async validateCode(e,t,n){n||(n=this.detectLanguageFromFile(e));let r=this.getHandler(n);return r?await r.validateCode(e,t):{valid:!0,message:`No language handler found for: ${n}`}}detectLanguageFromFile(e){let t=e.split(".").pop()?.toLowerCase()||"";return{js:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",mjs:"javascript",cjs:"javascript",py:"python",java:"java",go:"go",rs:"rust",php:"php",rb:"ruby",cs:"csharp",vb:"vb.net",fs:"f#"}[t]||"unknown"}},Ue=ws.getInstance()});import{resolve as Hu}from"path";import{existsSync as Ju}from"fs";async function Nn(o){return await tc.execute(o)}var Rt,tc,Un,nc=C(()=>{V();bs();Rt=class extends ${getDefinition(){return{name:"validate",description:`Validate code files for syntax errors, type errors, and code style issues.
437
+
438
+ \u{1F4CB} USE CASES:
439
+ - Verify generated code has no syntax errors
440
+ - Check TypeScript type correctness
441
+ - Validate Python code style with Flake8/Mypy
442
+ - Ensure code quality before committing
443
+
444
+ \u{1F511} PARAMETERS:
445
+ - path: File path to validate (relative or absolute)
446
+ - language: Programming language (optional, auto-detected from file extension)
447
+
448
+ \u{1F4A1} EXAMPLES:
449
+ - validate({ path: "src/utils/helper.ts" }) - Validate TypeScript file
450
+ - validate({ path: "lib/api.py", language: "python" }) - Validate Python file
451
+ - validate({ path: "app.js" }) - Validate JavaScript file
452
+
453
+ \u{1F4DD} RETURN VALUE:
454
+ - Success message if validation passes
455
+ - Detailed error messages with line numbers if validation fails
456
+
457
+ \u{1F3AF} SUPPORTED LANGUAGES:
458
+ - JavaScript/TypeScript: tsc type checking, ESLint
459
+ - Python: syntax check, Flake8, Mypy
460
+ - Other languages: gracefully skipped if no validator available
461
+
462
+ \u{1F517} RELATED TOOLS:
463
+ - read: View the content of files before or after validation
464
+ - merge: Modify files to fix validation errors
465
+ - searchReplace: Batch fix validation errors across multiple files
466
+ - shell: Run custom validation commands for unsupported languages`,input_schema:{type:"object",properties:{path:{type:"string",description:"File path to validate"},language:{type:"string",description:"Programming language (optional, auto-detected)"}},required:["path"]}}}async execute(e){try{let t=Hu(e.path);if(!Ju(t))return`Error: File not found: ${e.path}`;let n=process.cwd(),r=await Ue.validateCode(t,n,e.language);return this.formatValidationResult(r,e.path)}catch(t){return this.formatError(`Cannot validate ${e.path}`,t)}}formatValidationResult(e,t){if(e.valid){let n=`\u2705 Validation passed: ${t}
467
+ ${e.message}`;return e.warnings&&e.warnings.length>0&&(n+=`
468
+
469
+ \u26A0\uFE0F Warnings (${e.warnings.length}):`,e.warnings.forEach((r,s)=>{let i=r.line?`Line ${r.line}${r.column?`:${r.column}`:""}`:"Unknown location";n+=`
470
+ ${s+1}. [${i}] ${r.message}`,r.code&&(n+=` (${r.code})`)})),n}else{let n=`\u274C Validation failed: ${t}
471
+ ${e.message}`;return e.errors&&e.errors.length>0&&(n+=`
472
+
473
+ Errors (${e.errors.length}):`,e.errors.forEach((r,s)=>{let i=r.line?`Line ${r.line}${r.column?`:${r.column}`:""}`:"Unknown location";n+=`
474
+ ${s+1}. [${i}] ${r.message}`,r.code&&(n+=` (${r.code})`)})),e.warnings&&e.warnings.length>0&&(n+=`
475
+
476
+ Warnings (${e.warnings.length}):`,e.warnings.forEach((r,s)=>{let i=r.line?`Line ${r.line}${r.column?`:${r.column}`:""}`:"Unknown location";n+=`
477
+ ${s+1}. [${i}] ${r.message}`,r.code&&(n+=` (${r.code})`)})),n}}},tc=new Rt;Un=tc});var Ts={};j(Ts,{CopyTool:()=>Mt,DeleteTool:()=>Pt,MergeTool:()=>It,MkdirTool:()=>kt,MoveTool:()=>$t,ReadTool:()=>Tt,SearchReplaceTool:()=>At,ValidateTool:()=>Rt,WriteTool:()=>Et,copyFile:()=>In,copyTool:()=>An,deleteFile:()=>En,deleteTool:()=>Pn,merge:()=>Ln,mergeTool:()=>Rn,mkdir:()=>bn,mkdirTool:()=>rt,moveFile:()=>$n,moveTool:()=>Mn,read:()=>vn,readTool:()=>wn,searchReplace:()=>Dn,searchReplaceTool:()=>Fn,validate:()=>Nn,validateTool:()=>Un,write:()=>Tn,writeTool:()=>kn});var Xr=C(()=>{la();ma();ps();fa();Ca();Ea();Aa();Fa();nc()});import{readFileSync as Gu,existsSync as Bu}from"fs";import{resolve as qu}from"path";function Yu(o){let e=qu(o,".niumignore"),t=[];if(Bu(e))try{Gu(e,"utf-8").split(`
478
+ `).forEach(r=>{let s=r.trim();s&&!s.startsWith("#")&&t.push(Xu(s))})}catch(n){console.warn(`Error reading .niumignore file: ${n instanceof Error?n.message:"Unknown error"}`)}return t}function Ee(o,e=!0){let t=Yu(o);return e?[...Ku,...t]:t}function Xu(o){if(o.startsWith("!")){let e=o.slice(1);return e.includes("/")||e.includes("\\")?o:`!**/${e}`}return o.includes("*")||o.includes("?")||o.includes("{")||o.includes("[")?o:o.endsWith("/")?`**/${o.slice(0,-1)}/**`:o.startsWith("*.")?o:!o.includes("/")&&!o.includes("\\")?`**/${o}/**`:o}var Ku,Dt=C(()=>{Ku=["**/.git/**","**/.svn/**","**/.hg/**","**/node_modules/**","**/vendor/**","**/.pnpm/**","**/bower_components/**","**/dist/**","**/build/**","**/out/**","**/target/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.idea/**","**/.vscode/**","**/.vs/**","**/*.swp","**/*.swo","**/*~","**/.DS_Store","**/Thumbs.db","**/desktop.ini","**/.cache/**","**/tmp/**","**/temp/**","**/__pycache__/**","**/*.pyc","**/.pytest_cache/**","**/*.log","**/logs/**","**/.nium/archives/**","**/.nium/session.json","**/package-lock.json","**/yarn.lock","**/pnpm-lock.yaml","**/Gemfile.lock","**/Pipfile.lock","**/poetry.lock","**/Cargo.lock"]});import{globSync as rc}from"glob";function Wn(o){return oc.execute(o)}var Ft,oc,Vn,sc=C(()=>{V();Dt();Ft=class extends ${getDefinition(){return{name:"glob",description:`Search for files matching a glob pattern.
430
479
 
431
480
  Examples:
432
481
  - glob("*.js") - all .js files in current directory
433
482
  - glob("**/*.ts") - all .ts files recursively
434
483
  - glob("src/**/*.{js,ts}") - all .js and .ts files under src/
435
484
 
436
- Returns an array of matching file paths.`,input_schema:{type:"object",properties:{pattern:{type:"string",description:'The glob pattern to match (e.g., "*.js", "**/*.ts")'},cwd:{type:"string",description:"Optional: the directory to search in (defaults to current directory)"}},required:["pattern"]}}}execute(e){try{let t=e.cwd||process.cwd(),n=$t(t),r=xa(e.pattern,{nodir:!0,cwd:e.cwd,ignore:n});if(r.length===0&&!e.pattern.startsWith("*")&&!e.pattern.startsWith("**")){let s=`**/${e.pattern}`;r=xa(s,{nodir:!0,cwd:e.cwd,ignore:n})}return r.length>0?r:`No files matching pattern: ${e.pattern}`}catch(t){return this.formatError("Glob pattern",t)}}},wa=new Et;$n=wa});import{readFileSync as ba}from"fs";import{dirname as lu}from"path";import{globSync as uu}from"glob";function En(o){return Ta.execute(o)}var Mt,Ta,Mn,ka=S(()=>{q();kr();Mt=class extends E{getDefinition(){return{name:"grep",description:`Search for text patterns in files using regular expressions with glob support.
485
+ Returns an array of matching file paths.`,input_schema:{type:"object",properties:{pattern:{type:"string",description:'The glob pattern to match (e.g., "*.js", "**/*.ts")'},cwd:{type:"string",description:"Optional: the directory to search in (defaults to current directory)"}},required:["pattern"]}}}execute(e){try{let t=e.cwd||process.cwd(),n=Ee(t),r=rc(e.pattern,{nodir:!0,cwd:e.cwd,ignore:n});if(r.length===0&&!e.pattern.startsWith("*")&&!e.pattern.startsWith("**")){let s=`**/${e.pattern}`;r=rc(s,{nodir:!0,cwd:e.cwd,ignore:n})}return r.length>0?r:`No files matching pattern: ${e.pattern}`}catch(t){return this.formatError("Glob pattern",t)}}},oc=new Ft;Vn=oc});import{readFileSync as ic}from"fs";import{dirname as Qu}from"path";import{globSync as Zu}from"glob";function zn(o){return ac.execute(o)}var Ot,ac,Hn,cc=C(()=>{V();Dt();Y();Ot=class extends ${getDefinition(){return{name:"grep",description:`Search for text patterns in files using regular expressions with glob support.
437
486
 
438
487
  \u{1F4CB} USE CASES:
439
488
  - Find code patterns and function definitions
@@ -464,8 +513,62 @@ Returns an array of matching file paths.`,input_schema:{type:"object",properties
464
513
  - Cross-platform glob pattern matching
465
514
  - Ignores system and gitignore files
466
515
  - Case-sensitive matching (use regex flags for case-insensitive)
467
- - Handles large files efficiently`,input_schema:{type:"object",properties:{pattern:{type:"string",description:"Regular expression pattern to search for"},path:{type:"string",description:"File path or glob pattern (e.g., 'src/main.js' or '**/*.js')"}},required:["pattern","path"]}}}execute(e){try{let t=[];try{let i=e.path.includes("/")||e.path.includes("\\")?lu(e.path):process.cwd(),c={nodir:!0,windowsPathsNoEscape:!0,absolute:!1,ignore:$t(i)};if(e.path.includes("*")||e.path.includes("?")||e.path.includes("{")){if(console.log(`Processing glob pattern: ${e.path}`),t=uu(e.path,c),t.length===0)return`No files found matching pattern: ${e.path}`;console.log(`Found ${t.length} files matching pattern`)}else try{let g=ba(e.path,"utf-8");t=[e.path]}catch(g){return g instanceof Error?`Error: ${g.message}`:`Error: Could not read file: ${e.path}`}}catch(i){return console.error("Glob error:",i),i instanceof Error?`Error: Grep failed - ${i.message}`:`Error: Grep failed - Unknown error processing glob pattern: ${e.path}`}if(t.length===0)return`No files found matching pattern: ${e.path}`;let n=new RegExp(e.pattern),r=[],s=0;return t.forEach(i=>{try{let c=ba(i,"utf-8").split(`
468
- `),l=[];c.forEach((g,p)=>{n.test(g)&&(l.push(`${i}:${p+1}: ${g}`),s++)}),l.length>0&&r.push(...l)}catch(a){r.push(`Error reading file ${i}: ${a instanceof Error?a.message:"Unknown error"}`)}}),s>0?(t.length>1&&r.unshift(`Found ${s} matches in ${t.length} files`),r):`No matches found for pattern: ${e.pattern} in ${t.length} files`}catch(t){return this.formatError("Grep",t)}}},Ta=new Mt;Mn=Ta});var es={};j(es,{GlobTool:()=>Et,GrepTool:()=>Mt,glob:()=>Pn,globTool:()=>$n,grep:()=>En,grepTool:()=>Mn});var Pr=S(()=>{va();ka()});import{execSync as gu,exec as pu,spawnSync as mu}from"child_process";import*as $r from"os";async function $a(){if(Pa)return ts;Pa=!0;try{let o=await import("iconv-lite");return ts=o.default||o,ts}catch{return console.warn("iconv-lite not available, using utf8 fallback for Windows encoding"),null}}function In(o){return Promise.resolve(At.execute(o))}var ts,Pa,It,At,Ea=S(()=>{q();ts=null,Pa=!1;It=class o extends E{static HIGH_RISK_COMMANDS=["rm -rf","rm -r","del /q /s","erase /f /s","format","mkfs","dd if=","mv /force","shred","wipe","truncate -s 0","> filename","chmod -R 000","chown -R root:root"];isHighRiskCommand(e){if(!e)return!1;let t=e.toLowerCase().trim();return o.HIGH_RISK_COMMANDS.some(n=>t.includes(n.toLowerCase()))}isUnixCommand(e){return["ls","pwd","which","cat","rm","cp","mv","mkdir","grep","find","head","tail","touch","chmod","chown","ps","kill","ifconfig","netstat","top","df","du","wc","awk","sed","tar","gzip","ssh"].includes(e.toLowerCase())}convertUnixToWindowsCommand(e){let t={ls:"dir","ls -la":"dir","ls -l":"dir","ls -a":"dir /a",pwd:"cd",which:"where",cat:"type",rm:"del","rm -rf":"rmdir /s /q","rm -r":"rmdir /s /q",cp:"copy","cp -r":"xcopy /e /i /y",mv:"move",mkdir:"mkdir","mkdir -p":"mkdir",grep:"findstr",find:"findstr",head:"more",tail:"more +n",touch:"type nul >",chmod:"attrib",chown:"attrib",ps:"tasklist",kill:"taskkill",ifconfig:"ipconfig",netstat:"netstat",top:"tasklist /v",df:"wmic logicaldisk get size,freespace,caption",du:"dir /s",wc:'find /c /v ""'};if(t[e])return t[e];let n=Object.entries(t).sort((r,s)=>s[0].length-r[0].length);for(let[r,s]of n)if(e.startsWith(r+" ")){if(r==="rm -rf"||r==="rm -r"){let i=e.substring(r.length).trim();return`${s} ${i}`}return e.replace(r,s)}return e}getShellCommand(e){let t=$r.platform(),n=e||"";return t==="win32"&&n&&(n=this.convertUnixToWindowsCommand(n)),t==="win32"?{shell:"cmd.exe",args:[],cmd:n}:{shell:"/bin/sh",args:["-c"],cmd:n}}getDefinition(){return{name:"shell",description:`Execute shell commands on the system with intelligent cross-platform support.
516
+ - Handles large files efficiently`,input_schema:{type:"object",properties:{pattern:{type:"string",description:"Regular expression pattern to search for"},path:{type:"string",description:"File path or glob pattern (e.g., 'src/main.js' or '**/*.js')"}},required:["pattern","path"]}}}execute(e){try{let t=[];try{let i=e.path.includes("/")||e.path.includes("\\")?Qu(e.path):process.cwd(),c={nodir:!0,windowsPathsNoEscape:!0,absolute:!1,ignore:Ee(i)};if(e.path.includes("*")||e.path.includes("?")||e.path.includes("{")){if(x(`Processing glob pattern: ${e.path}`),t=Zu(e.path,c),t.length===0)return`No files found matching pattern: ${e.path}`;x(`Found ${t.length} files matching pattern`)}else try{let u=ic(e.path,"utf-8");t=[e.path]}catch(u){return u instanceof Error?`Error: ${u.message}`:`Error: Could not read file: ${e.path}`}}catch(i){return console.error("Glob error:",i),i instanceof Error?`Error: Grep failed - ${i.message}`:`Error: Grep failed - Unknown error processing glob pattern: ${e.path}`}if(t.length===0)return`No files found matching pattern: ${e.path}`;let n=new RegExp(e.pattern),r=[],s=0;return t.forEach(i=>{try{let c=ic(i,"utf-8").split(`
517
+ `),l=[];c.forEach((u,p)=>{n.test(u)&&(l.push(`${i}:${p+1}: ${u}`),s++)}),l.length>0&&r.push(...l)}catch(a){r.push(`Error reading file ${i}: ${a instanceof Error?a.message:"Unknown error"}`)}}),s>0?(t.length>1&&r.unshift(`Found ${s} matches in ${t.length} files`),r):`No matches found for pattern: ${e.pattern} in ${t.length} files`}catch(t){return this.formatError("Grep",t)}}},ac=new Ot;Hn=ac});import{readFileSync as eg,existsSync as tg}from"fs";import{join as ng}from"path";import{globSync as rg}from"glob";function Jn(o){return lc.execute(o)}var jt,lc,Gn,uc=C(()=>{V();Dt();jt=class extends ${getDefinition(){return{name:"search-docs",description:`Search for content in documentation files using keywords and regular expressions.
518
+
519
+ \u{1F4CB} USE CASES:
520
+ - Find information in project documentation
521
+ - Search for specific topics across multiple docs
522
+ - Locate configuration guidelines in docs
523
+ - Find usage examples and tutorials
524
+ - Search for API documentation
525
+
526
+ \u{1F511} PARAMETERS:
527
+ - query: Search query string or regular expression pattern (required)
528
+ - path: Documentation directory or file path (default: ".niums/docs")
529
+ - maxResults: Maximum number of results to return (default: 10)
530
+
531
+ \u{1F4A1} EXAMPLES:
532
+ - search-docs({ query: "API", path: ".niums/docs" }) - Search for API in docs
533
+ - search-docs({ query: "configuration", maxResults: 5 }) - Get top 5 results for configuration
534
+ - search-docs({ query: "function.*example", path: ".niums/docs/examples" }) - Regex search in examples
535
+
536
+ \u{1F4DD} RETURN VALUE:
537
+ - Array of matching results with file paths, line numbers, and content
538
+ - Results sorted by relevance score
539
+ - Each result formatted as: "path:line: content"
540
+ - Summary statistics for multiple files
541
+ - Helpful error messages for invalid queries or no matches
542
+
543
+ \u{1F517} RELATED TOOLS:
544
+ - read: View the full content of files found in search results
545
+ - grep: Search for code patterns in source files (complementary to documentation search)
546
+ - glob: Find specific documentation files by pattern before searching`,input_schema:{type:"object",properties:{query:{type:"string",description:"Search query string or regular expression pattern"},path:{type:"string",description:"Documentation directory or file path (default: .niums/docs)"},maxResults:{type:"number",description:"Maximum number of results to return (default: 10)"}},required:["query"]}}}execute(e){try{let t=e.path||".niums/docs",n=e.maxResults||10,{query:r}=e;if(!tg(t))return`Documentation directory not found: ${t}`;let s=process.cwd(),a={nodir:!0,windowsPathsNoEscape:!0,absolute:!1,ignore:Ee(s),cwd:s},c=ng(t,"**/*.{md,markdown,txt,rst,html,htm}"),l=rg(c,a);if(l.length===0)return`No documentation files found in: ${t}`;let u=new RegExp(r,"i"),p=[];if(l.forEach(m=>{try{eg(m,"utf-8").split(`
547
+ `).forEach((v,T)=>{if(u.test(v)){let f=this.calculateMatchScore(v,r,T);p.push({path:m,line:T+1,content:v.trim(),score:f})}})}catch{}}),p.length===0)return`No matches found for query: ${r} in ${l.length} files`;p.sort((m,h)=>h.score-m.score);let g=p.slice(0,n),d=[];return d.push(`Found ${p.length} matches in ${l.length} files, showing top ${g.length} results:`),g.forEach(m=>{d.push(`${m.path}:${m.line}: ${m.content}`)}),d}catch(t){return this.formatError("Search Docs",t)}}calculateMatchScore(e,t,n){let r=100/(e.length+1);return e.toLowerCase().startsWith(t.toLowerCase())&&(r+=50),e.toLowerCase()===t.toLowerCase()&&(r+=100),r+=100/(n+1),r}},lc=new jt;Gn=lc});import{readFileSync as gc,writeFileSync as og,existsSync as sg,mkdirSync as ig}from"fs";import{join as Bn}from"path";import{globSync as ag}from"glob";function qn(o={}){return pc.execute(o)}var _t,pc,Kn,dc=C(()=>{V();Dt();_t=class extends ${getDefinition(){return{name:"build-doc-index",description:`Build and update documentation index for efficient search.
548
+
549
+ \u{1F4CB} USE CASES:
550
+ - Create initial documentation index
551
+ - Update index when docs are added or modified
552
+ - Refresh index to ensure search accuracy
553
+ - Maintain up-to-date metadata for docs
554
+
555
+ \u{1F511} PARAMETERS:
556
+ - path: Documentation directory path (default: ".niums/docs")
557
+
558
+ \u{1F4A1} EXAMPLES:
559
+ - build-doc-index() - Build index for default docs directory
560
+ - build-doc-index({ path: ".niums/docs" }) - Build index for specific docs directory
561
+ - build-doc-index({ path: "docs/" }) - Build index for custom docs location
562
+
563
+ \u{1F4DD} RETURN VALUE:
564
+ - Success message with index statistics
565
+ - Path to generated index file
566
+ - Number of documents indexed
567
+ - Any warnings or errors encountered`,input_schema:{type:"object",properties:{path:{type:"string",description:"Documentation directory path (default: .niums/docs)"}}}}}execute(e){try{let t=e.path||".niums/docs",n=process.cwd(),r=Bn(n,t);if(!sg(r))return`Documentation directory not found: ${r}`;let i={nodir:!0,windowsPathsNoEscape:!0,absolute:!1,ignore:Ee(n),cwd:n},a=Bn(t,"**/*.{md,markdown,txt,rst,html,htm}"),c=ag(a,i);if(c.length===0)return`No documentation files found in: ${t}`;let l=[];c.forEach(d=>{try{let m=Bn(n,d),h=gc(m,"utf-8"),w=gc(m,"utf-8").length,v=this.extractDocMetadata(d,h,w);l.push(v)}catch{}});let u={documents:l,lastIndexed:new Date().toISOString(),totalDocuments:l.length},p=Bn(n,t);ig(p,{recursive:!0});let g=Bn(p,".index.json");return og(g,JSON.stringify(u,null,2),"utf-8"),`Successfully built documentation index:
568
+ - Index file: ${g}
569
+ - Total documents indexed: ${u.totalDocuments}
570
+ - Last indexed: ${u.lastIndexed}
571
+ - Documentation directory: ${t}`}catch(t){return this.formatError("Build Doc Index",t)}}extractDocMetadata(e,t,n){let r=this.extractTitle(e,t),s=this.extractSummary(t),i=this.extractKeywords(t),a=new Date().toISOString();return{path:e,title:r,summary:s,keywords:i,lastModified:a,size:n}}extractTitle(e,t){let n=t.match(/^#\s+(.+)$/m);if(n&&n[1])return n[1].trim();let r=t.match(/<h1[^>]*>(.+?)<\/h1>/i);return r&&r[1]?r[1].trim():(e.split(/[\\/]/).pop()||e).replace(/\.(md|markdown|txt|rst|html|htm)$/i,"").replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase())}extractSummary(e){let t=e.replace(/\s+/g," ").replace(/[#*_~`]|\[|\]|\(|\)|<[^>]*>|\n/g," ").trim();return t.length>150?t.substring(0,150)+"...":t}extractKeywords(e){let t=e.replace(/\s+/g," ").replace(/[#*_~`]|\[|\]|\(|\)|<[^>]*>|\n/g," ").toLowerCase(),r=["api","configuration","usage","example","tutorial","guide","documentation","setup","installation","usage","examples","howto","faq","reference","overview","introduction","concept","architecture","design","implementation","deployment","testing","troubleshooting","best practices","tips","tricks"].filter(u=>t.includes(u)),s=t.split(/\s+/).filter(u=>u.length>3),i={};s.forEach(u=>{i[u]=(i[u]||0)+1});let a=Object.entries(i).sort(([,u],[,p])=>p-u).map(([u])=>u).slice(0,5),c=[...r,...a];return Array.from(new Set(c))}},pc=new _t;Kn=pc});var ks={};j(ks,{BuildDocIndexTool:()=>_t,GlobTool:()=>Ft,GrepTool:()=>Ot,SearchDocsTool:()=>jt,buildDocIndex:()=>qn,buildDocIndexTool:()=>Kn,glob:()=>Wn,globTool:()=>Vn,grep:()=>zn,grepTool:()=>Hn,searchDocs:()=>Jn,searchDocsTool:()=>Gn});var Qr=C(()=>{sc();cc();uc();dc()});import{execSync as cg,exec as lg,spawnSync as ug}from"child_process";import*as Zr from"os";async function fc(){if(mc)return Es;mc=!0;try{let o=await import("iconv-lite");return Es=o.default||o,Es}catch{return console.warn("iconv-lite not available, using utf8 fallback for Windows encoding"),null}}function Yn(o){return Promise.resolve(Ut.execute(o))}var Es,mc,Nt,Ut,hc=C(()=>{V();Es=null,mc=!1;Nt=class o extends ${static HIGH_RISK_COMMANDS=["rm -rf","rm -r","del /q /s","erase /f /s","format","mkfs","dd if=","mv /force","shred","wipe","truncate -s 0","> filename","chmod -R 000","chown -R root:root"];isHighRiskCommand(e){if(!e)return!1;let t=e.toLowerCase().trim();return o.HIGH_RISK_COMMANDS.some(n=>t.includes(n.toLowerCase()))}isUnixCommand(e){return["ls","pwd","which","cat","rm","cp","mv","mkdir","grep","find","head","tail","touch","chmod","chown","ps","kill","ifconfig","netstat","top","df","du","wc","awk","sed","tar","gzip","ssh"].includes(e.toLowerCase())}convertUnixToWindowsCommand(e){let t={ls:"dir","ls -la":"dir","ls -l":"dir","ls -a":"dir /a",pwd:"cd",which:"where",cat:"type",rm:"del","rm -rf":"rmdir /s /q","rm -r":"rmdir /s /q",cp:"copy","cp -r":"xcopy /e /i /y",mv:"move",mkdir:"mkdir","mkdir -p":"mkdir",grep:"findstr",find:"findstr",head:"more",tail:"more +n",touch:"type nul >",chmod:"attrib",chown:"attrib",ps:"tasklist",kill:"taskkill",ifconfig:"ipconfig",netstat:"netstat",top:"tasklist /v",df:"wmic logicaldisk get size,freespace,caption",du:"dir /s",wc:'find /c /v ""'};if(t[e])return t[e];let n=Object.entries(t).sort((r,s)=>s[0].length-r[0].length);for(let[r,s]of n)if(e.startsWith(r+" ")){if(r==="rm -rf"||r==="rm -r"){let i=e.substring(r.length).trim();return`${s} ${i}`}return e.replace(r,s)}return e}getShellCommand(e){let t=Zr.platform(),n=e||"";return t==="win32"&&n&&(n=this.convertUnixToWindowsCommand(n)),t==="win32"?{shell:"cmd.exe",args:[],cmd:n}:{shell:"/bin/sh",args:["-c"],cmd:n}}getDefinition(){return{name:"shell",description:`Execute shell commands on the system with intelligent cross-platform support.
469
572
 
470
573
  \u{1F30D} **\u667A\u80FD\u73AF\u5883\u611F\u77E5**
471
574
  \u6B64\u5DE5\u5177\u4F1A\u6839\u636E\u5F53\u524D\u8FD0\u884C\u5E73\u53F0\u81EA\u52A8\u4F18\u5316\u547D\u4EE4\u6267\u884C\uFF1A
@@ -557,38 +660,38 @@ Returns an array of matching file paths.`,input_schema:{type:"object",properties
557
660
  `,i+=` - dnf: sudo dnf install <package-name> (Fedora)
558
661
  `))),i+=`
559
662
  \u26A0\uFE0F Please install the required command before proceeding.
560
- `,i+=" The AI assistant cannot continue without this tool being available.",i}async execute(e){try{let{command:t,timeout:n=6e4,captureOutput:r=!0}=e;if(!t){let u=$r.platform(),d=`Running on ${u} with ${u==="win32"?"cmd.exe":"/bin/sh"}`,y=`Executing command: ${t}`;return console.error("[SHELL TOOL ERROR] Command is undefined or null"),console.error("[SHELL TOOL ERROR] Input received:",JSON.stringify(e,null,2)),console.error("[SHELL TOOL ERROR] Stack trace:",new Error().stack),this.createToolResult({error:"Command is undefined or null",success:!1},`${d}
561
- ${y}
663
+ `,i+=" The AI assistant cannot continue without this tool being available.",i}async execute(e){try{let{command:t,timeout:n=6e4,captureOutput:r=!0}=e;if(!t){let g=Zr.platform(),m=`Running on ${g} with ${g==="win32"?"cmd.exe":"/bin/sh"}`,h=`Executing command: ${t}`;return console.error("[SHELL TOOL ERROR] Command is undefined or null"),console.error("[SHELL TOOL ERROR] Input received:",JSON.stringify(e,null,2)),console.error("[SHELL TOOL ERROR] Stack trace:",new Error().stack),this.createToolResult({error:"Command is undefined or null",success:!1},`${m}
664
+ ${h}
562
665
 
563
666
  Command failed with error:
564
- TypeError: Command is undefined or null`)}let s=$r.platform(),{shell:i,args:a,cmd:c}=this.getShellCommand(t),l={shell:i,timeout:n,encoding:"utf8",windowsHide:!0,windowsVerbatimArguments:s==="win32"},g=`Running on ${s} with ${i}`,p=`Executing command: ${t}`;if(r)try{let u="";if(s==="win32"){let m=`chcp 65001 >nul 2>&1 && ${c}`,d=mu("cmd.exe",["/c",m],{stdio:"pipe",windowsHide:!0,encoding:"buffer"}),y=d.stdout||Buffer.alloc(0),w=d.stderr||Buffer.alloc(0),h=Buffer.concat([y,w]);try{let b=await $a();if(b){let f=["cp936","gbk","utf8","gb2312","big5"],T=!1;for(let x of f)try{if(u=b.decode(h,x),/[\u4e00-\u9fff]/.test(u)||u.length>0){T=!0;break}}catch{continue}T||(u=h.toString("utf8"))}else u=h.toString("utf8");d.status===0&&u&&u.trim()&&(u+=`
667
+ TypeError: Command is undefined or null`)}let s=Zr.platform(),{shell:i,args:a,cmd:c}=this.getShellCommand(t),l={shell:i,timeout:n,encoding:"utf8",windowsHide:!0,windowsVerbatimArguments:s==="win32"},u=`Running on ${s} with ${i}`,p=`Executing command: ${t}`;if(r)try{let g="";if(s==="win32"){let d=`chcp 65001 >nul 2>&1 && ${c}`,m=ug("cmd.exe",["/c",d],{stdio:"pipe",windowsHide:!0,encoding:"buffer"}),h=m.stdout||Buffer.alloc(0),w=m.stderr||Buffer.alloc(0),v=Buffer.concat([h,w]);try{let T=await fc();if(T){let f=["cp936","gbk","utf8","gb2312","big5"],y=!1;for(let S of f)try{if(g=T.decode(v,S),/[\u4e00-\u9fff]/.test(g)||g.length>0){y=!0;break}}catch{continue}y||(g=v.toString("utf8"))}else g=v.toString("utf8");m.status===0&&g&&g.trim()&&(g+=`
565
668
 
566
- \u2705 Windows\u7F16\u7801\u5DF2\u4F18\u5316\u5904\u7406`)}catch{u=h.toString("utf8")}}else{let m=[...a,c].join(" ");u=gu(m,l).toString()}if(this.isCommandNotFoundError(u,s)){let m=this.extractCommandName(t),d=this.generateCommandNotFoundMessage(m,s);return this.createToolResult({error:u,success:!1,commandNotFound:!0},`${g}
669
+ \u2705 Windows\u7F16\u7801\u5DF2\u4F18\u5316\u5904\u7406`)}catch{g=v.toString("utf8")}}else{let d=[...a,c].join(" ");g=cg(d,l).toString()}if(this.isCommandNotFoundError(g,s)){let d=this.extractCommandName(t),m=this.generateCommandNotFoundMessage(d,s);return this.createToolResult({error:g,success:!1,commandNotFound:!0},`${u}
567
670
  ${p}
568
671
 
569
- ${d}
672
+ ${m}
570
673
 
571
674
  Original error:
572
- ${u}`,!0)}return this.createToolResult(u,`${g}
675
+ ${g}`,!0)}return this.createToolResult(g,`${u}
573
676
  ${p}
574
677
 
575
678
  Command output:
576
- ${u}`)}catch(u){let m="";if(s==="win32"&&u.stderr){let d=Buffer.isBuffer(u.stderr)?u.stderr:Buffer.from(u.stderr),y=await $a();if(y)try{let w=["cp936","gbk","utf8","gb2312"],h="";for(let b of w)try{if(h=y.decode(d,b),h.length>0){m+=h;break}}catch{continue}h||(m+=d.toString("utf8"))}catch{m+=d.toString("utf8")}else m+=d.toString("utf8")}else u.stderr&&(m+=u.stderr),u.stdout&&(m+=u.stdout),m||(m=String(u));if(this.isCommandNotFoundError(m,s)){let d=this.extractCommandName(t),y=this.generateCommandNotFoundMessage(d,s),w=y;return s==="win32"&&this.isUnixCommand(d)&&(w=`\u{1F504} Command Auto-Conversion: Unix command '${d}' was automatically converted to Windows equivalent
679
+ ${g}`)}catch(g){let d="";if(s==="win32"&&g.stderr){let m=Buffer.isBuffer(g.stderr)?g.stderr:Buffer.from(g.stderr),h=await fc();if(h)try{let w=["cp936","gbk","utf8","gb2312"],v="";for(let T of w)try{if(v=h.decode(m,T),v.length>0){d+=v;break}}catch{continue}v||(d+=m.toString("utf8"))}catch{d+=m.toString("utf8")}else d+=m.toString("utf8")}else g.stderr&&(d+=g.stderr),g.stdout&&(d+=g.stdout),d||(d=String(g));if(this.isCommandNotFoundError(d,s)){let m=this.extractCommandName(t),h=this.generateCommandNotFoundMessage(m,s),w=h;return s==="win32"&&this.isUnixCommand(m)&&(w=`\u{1F504} Command Auto-Conversion: Unix command '${m}' was automatically converted to Windows equivalent
577
680
 
578
- ${y}`),this.createToolResult({error:m,success:!1,commandNotFound:!0},`${g}
681
+ ${h}`),this.createToolResult({error:d,success:!1,commandNotFound:!0},`${u}
579
682
  ${p}
580
683
 
581
684
  ${w}
582
685
 
583
686
  Original error:
584
- ${m}`,!0)}return this.createToolResult({error:m,success:!1},`${g}
687
+ ${d}`,!0)}return this.createToolResult({error:d,success:!1},`${u}
585
688
  ${p}
586
689
 
587
690
  Command failed with error:
588
- ${m}`,!0)}else{let u=t;s==="win32"?u=`chcp 65001 > nul && ${c}`:u=[...a,c].join(" ");let m=pu(u,l);return this.createToolResult({success:!0,message:"Command started in background"},`${g}
691
+ ${d}`,!0)}else{let g=t;s==="win32"?g=`chcp 65001 > nul && ${c}`:g=[...a,c].join(" ");let d=lg(g,l);return this.createToolResult({success:!0,message:"Command started in background"},`${u}
589
692
  ${p}
590
693
 
591
- Command started in background. No output will be captured.`,!0)}}catch(t){return this.formatError("Cannot execute shell command",t)}}formatAction(e){let t=super.formatAction(e);return this.isHighRiskCommand(e.command)?`${t} \u26A0\uFE0F HIGH RISK COMMAND - Requires confirmation!`:t}},At=new It});var ns={};j(ns,{ShellTool:()=>It,shell:()=>In,shellTool:()=>At});var Er=S(()=>{Ea()});var os={};j(os,{THINK_TOOL:()=>Mr,ThinkTool:()=>Ze,extractThought:()=>Ir,isThinkTool:()=>Dt,think:()=>Lt,thinkTool:()=>Rt});function Lt(o){return rs.execute(o)}function Dt(o){return o==="think"}function Ir(o){if(!o||!o.function||o.function.name!=="think")return null;try{return JSON.parse(o.function.arguments).thought||null}catch{return null}}var Ze,rs,Rt,Mr,An=S(()=>{q();Ze=class extends E{getDefinition(){return{name:"think",description:`Use this tool to think, reason, and reflect before taking actions.
694
+ Command started in background. No output will be captured.`,!0)}}catch(t){return this.formatError("Cannot execute shell command",t)}}formatAction(e){let t=super.formatAction(e);return this.isHighRiskCommand(e.command)?`${t} \u26A0\uFE0F HIGH RISK COMMAND - Requires confirmation!`:t}},Ut=new Nt});var Ps={};j(Ps,{ShellTool:()=>Nt,shell:()=>Yn,shellTool:()=>Ut});var eo=C(()=>{hc()});var Ms={};j(Ms,{THINK_TOOL:()=>to,ThinkTool:()=>ot,extractThought:()=>no,isThinkTool:()=>zt,think:()=>Wt,thinkTool:()=>Vt});function Wt(o){return $s.execute(o)}function zt(o){return o==="think"}function no(o){if(!o||!o.function||o.function.name!=="think")return null;try{return JSON.parse(o.function.arguments).thought||null}catch{return null}}var ot,$s,Vt,to,Xn=C(()=>{V();ot=class extends ${getDefinition(){return{name:"think",description:`Use this tool to think, reason, and reflect before taking actions.
592
695
  This is a zero-side-effect tool that makes your thinking process observable.
593
696
 
594
697
  IMPORTANT: You should call this tool:
@@ -596,12 +699,175 @@ IMPORTANT: You should call this tool:
596
699
  - AFTER receiving an Observation (to reflect on the result)
597
700
  - When you need to analyze complex situations
598
701
 
599
- The thought content will be logged but won't change any data or state.`,input_schema:{type:"object",properties:{thought:{type:"string",description:"Your internal reasoning, analysis, or reflection. Be detailed and explicit about your thought process."}},required:["thought"]}}}execute(e){return"Noted. Continue with your action."}},rs=new Ze;Rt=rs,Mr=rs.getDefinition()});var us={};j(us,{SYSTEM_PROMPT:()=>et,generateAgentMatchingPrompt:()=>ls,generateSystemPrompt:()=>Ma,generateTaskComplexityEvaluationPrompt:()=>ss,generateTaskPlanningConversionPrompt:()=>cs,generateTaskPlanningMarkdownPrompt:()=>as,generateTaskPlanningPrompt:()=>is});function Ma(o=Ln()){return`You are an expert code assistant that follows the ReAct (Reasoning + Acting) pattern with enhanced thinking capabilities. Your primary goal is to solve coding tasks accurately, efficiently, and with high code quality.
702
+ The thought content will be logged but won't change any data or state.`,input_schema:{type:"object",properties:{thought:{type:"string",description:"Your internal reasoning, analysis, or reflection. Be detailed and explicit about your thought process."}},required:["thought"]}}}execute(e){return"Noted. Continue with your action."}},$s=new ot;Vt=$s,to=$s.getDefinition()});var Fs={};j(Fs,{SYSTEM_PROMPT:()=>st,generateAgentMatchingPrompt:()=>Ds,generateSystemPrompt:()=>Cc,generateTaskComplexityEvaluationPrompt:()=>Is,generateTaskPlanningConversionPrompt:()=>Rs,generateTaskPlanningMarkdownPrompt:()=>Ls,generateTaskPlanningPrompt:()=>As});function Cc(o=Qn(),e="all"){let t=o.map(a=>`- ${a.name}: ${a.description}`).join(`
703
+ `),n=yc.all,r=yc[e]||[];return`<instructions>
704
+ ${[...new Set([...n,...r])].map(a=>gg[a]).join(`
705
+ `)}
706
+
707
+ <available_tools>
708
+ You have access to the following tools (detailed schemas are provided separately):
709
+
710
+ ${t}
711
+
712
+ The system will provide you with the exact parameter schemas for each tool. When using tools, pay special attention to required parameters and their formats.
713
+ Use the tool definitions to understand what parameters each tool requires.
714
+ </available_tools>
715
+ </instructions>`}function Is(o){return`\u4F60\u662F\u4E00\u4E2A\u4EFB\u52A1\u590D\u6742\u5EA6\u8BC4\u4F30\u4E13\u5BB6\u3002\u8BF7\u8BC4\u4F30\u4EE5\u4E0B\u4EFB\u52A1\u7684\u590D\u6742\u5EA6\u3002
716
+
717
+ \u4EFB\u52A1\u63CF\u8FF0\uFF1A
718
+ ${o}
600
719
 
601
- <instructions>
602
- You have access to a comprehensive set of tools, with the 'think' tool being specially designed for observable reasoning.
720
+ \u8BC4\u4F30\u6807\u51C6\uFF1A
721
+ - SIMPLE\uFF08\u7B80\u5355\u4EFB\u52A1\uFF09\uFF1A\u5355\u4E00\u660E\u786E\u7684\u64CD\u4F5C\uFF0C\u6BD4\u5982\u8BFB\u53D6\u6587\u4EF6\u3001\u521B\u5EFA\u7B80\u5355\u6587\u4EF6\u3001\u6267\u884C\u5355\u4E2A\u547D\u4EE4\u7B49\uFF0C\u4E0D\u9700\u8981\u590D\u6742\u601D\u8003\u6216\u89C4\u5212
722
+ - MEDIUM\uFF08\u4E2D\u7B49\u4EFB\u52A1\uFF09\uFF1A\u9700\u89812-3\u4E2A\u6B65\u9AA4\u7684\u64CD\u4F5C\uFF0C\u53EF\u80FD\u6D89\u53CA\u7B80\u5355\u7684\u6587\u4EF6\u4FEE\u6539\u6216\u57FA\u672C\u903B\u8F91
723
+ - COMPLEX\uFF08\u590D\u6742\u4EFB\u52A1\uFF09\uFF1A\u9700\u8981\u591A\u4E2A\u6B65\u9AA4\uFF083\u4E2A\u4EE5\u4E0A\uFF09\u3001\u6D89\u53CA\u591A\u4E2A\u6587\u4EF6\u4FEE\u6539\u3001\u9700\u8981\u8BE6\u7EC6\u89C4\u5212\u6216\u903B\u8F91\u63A8\u7406\u7684\u4EFB\u52A1
724
+
725
+ \u8BF7\u53EA\u56DE\u590D "SIMPLE"\u3001"MEDIUM" \u6216 "COMPLEX"\uFF0C\u4E0D\u8981\u6709\u5176\u4ED6\u5185\u5BB9\u3002`}function As(o,e=[]){let t=e.length>0?e.map(r=>`${r.name}(${r.description})`).join(", "):"default",n=e.length>0?`
726
+
727
+ \u53EF\u7528\u7684\u5B50\u667A\u80FD\u4F53\uFF1A
728
+ ${e.map(r=>`- ${r.name}: ${r.description}`).join(`
729
+ `)}`:"";return`\u4F60\u662F\u4E00\u4F4D\u4EFB\u52A1\u89C4\u5212\u4E13\u5BB6\u3002\u8BF7\u4E3A\u4EE5\u4E0B\u7528\u6237\u8BF7\u6C42\u751F\u6210\u4E00\u4E2A\u9AD8\u8D28\u91CF\u7684\u6267\u884C\u8BA1\u5212\u3002
730
+
731
+ \u7528\u6237\u8BF7\u6C42\uFF1A
732
+ ${o}
733
+ ${n}
734
+
735
+ ## \u89C4\u5212\u8981\u6C42
736
+
737
+ 1. **\u6B65\u9AA4\u9897\u7C92\u5EA6**: \u6BCF\u4E2A\u6B65\u9AA4\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206(2-4\u4E2A\u6B65\u9AA4)
738
+
739
+ 2. **\u5DE5\u5177\u6743\u9650\u63A7\u5236** (\u91CD\u8981):
740
+ - \u5F53\u6B65\u9AA4\u4F7F\u7528 **default \u901A\u7528\u667A\u80FD\u4F53** \u65F6\uFF0C\u5FC5\u987B\u6307\u5B9A \`allowedTools\` \u5217\u8868
741
+ - \u5F53\u6B65\u9AA4\u4F7F\u7528 **\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53** \u65F6\uFF0C\`allowedTools\` \u53EF\u4EE5\u7701\u7565(\u5B50\u667A\u80FD\u4F53\u6709\u5B8C\u6574\u6743\u9650)
742
+
743
+ 3. **\u5E38\u89C1\u6B65\u9AA4\u7684\u5DE5\u5177\u914D\u7F6E**:
744
+
745
+ | \u6B65\u9AA4\u6027\u8D28 | allowedTools \u914D\u7F6E | \u793A\u4F8B\u573A\u666F |
746
+ |---------|------------------|---------|
747
+ | \u7EAF\u5206\u6790\u89C4\u5212 | \`["read", "glob", "grep", "quickProjectScan", "think", "askUser"]\` | \u9700\u6C42\u5206\u6790\u3001\u6280\u672F\u9009\u578B\u3001\u65B9\u6848\u8BBE\u8BA1 |
748
+ | \u4EE3\u7801\u63A2\u7D22 | \`["read", "glob", "grep", "quickProjectScan", "shell", "think"]\` | \u5206\u6790\u73B0\u6709\u67B6\u6784\u3001\u67E5\u627E\u6A21\u5757 |
749
+ | \u4EE3\u7801\u5B9E\u73B0 | \`["read", "write", "merge", "delete", "mkdir", "glob", "grep", "shell", "think"]\` | \u521B\u5EFA\u6587\u4EF6\u3001\u5B9E\u73B0\u529F\u80FD |
750
+ | \u6D4B\u8BD5\u9A8C\u8BC1 | \`["read", "shell", "glob", "grep", "think"]\` | \u8FD0\u884C\u6D4B\u8BD5\u3001\u67E5\u770B\u7ED3\u679C |
751
+
752
+ 4. **\u5B50\u667A\u80FD\u4F53\u9009\u62E9**:
753
+ \u53EF\u7528\u5B50\u667A\u80FD\u4F53: ${t}
754
+ - explorer: \u4E13\u95E8\u7528\u4E8E\u9879\u76EE\u63A2\u7D22\uFF0C\u9ED8\u8BA4\u6709\u5B8C\u6574\u53EA\u8BFB\u6743\u9650
755
+ - coder: \u4E13\u95E8\u7528\u4E8E\u4EE3\u7801\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u6709\u5B8C\u6574\u8BFB\u5199\u6743\u9650
756
+ - default: \u901A\u7528\u667A\u80FD\u4F53\uFF0C\u9700\u8981\u660E\u786E\u6307\u5B9A allowedTools
757
+
758
+ ## \u793A\u4F8B\u89C4\u5212
759
+
760
+ ### \u274C \u9519\u8BEF\u793A\u4F8B
761
+ \`\`\`json
762
+ {
763
+ "steps": [
764
+ {
765
+ "description": "\u5B8C\u6210\u9700\u6C42\u5206\u6790\u4E0E\u6280\u672F\u9009\u578B",
766
+ "subAgent": "default"
767
+ // \u274C \u7F3A\u5C11 allowedTools\uFF0C\u667A\u80FD\u4F53\u53EF\u80FD\u6EE5\u7528\u5199\u5DE5\u5177
768
+ }
769
+ ]
770
+ }
771
+ \`\`\`
772
+
773
+ ### \u2705 \u6B63\u786E\u793A\u4F8B1: \u4F7F\u7528 default \u667A\u80FD\u4F53 + \u660E\u786E\u5DE5\u5177\u6743\u9650
774
+ \`\`\`json
775
+ {
776
+ "overview": "\u521D\u59CB\u5316\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF",
777
+ "steps": [
778
+ {
779
+ "description": "\u5206\u6790\u5F53\u524D\u9879\u76EE\u6280\u672F\u6808(\u901A\u8FC7\u8BFB\u53D6 project.json)\uFF0C\u8F93\u51FA\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF\u7684\u6280\u672F\u65B9\u6848\u6587\u6863\uFF0C\u5305\u62EC\u6570\u636E\u5E93\u8BBE\u8BA1\u3001API\u63A5\u53E3\u89C4\u8303\u3001\u8BA4\u8BC1\u65B9\u6848",
780
+ "subAgent": "default",
781
+ "allowedTools": ["read", "glob", "grep", "quickProjectScan", "think", "askUser"]
782
+ },
783
+ {
784
+ "description": "\u57FA\u4E8E\u65B9\u6848\u6587\u6863\uFF0C\u5B9E\u73B0\u7528\u6237\u6A21\u578B\u3001CRUD API\u3001JWT\u8BA4\u8BC1\u4E2D\u95F4\u4EF6\u7B49\u6838\u5FC3\u529F\u80FD",
785
+ "subAgent": "default",
786
+ "allowedTools": ["read", "write", "merge", "mkdir", "glob", "grep", "shell", "think"]
787
+ },
788
+ {
789
+ "description": "\u8FD0\u884C\u9879\u76EE\u6D4B\u8BD5\u5957\u4EF6\uFF0C\u9A8C\u8BC1\u7528\u6237\u6CE8\u518C\u3001\u767B\u5F55\u3001\u6743\u9650\u9A8C\u8BC1\u529F\u80FD\u662F\u5426\u6B63\u5E38",
790
+ "subAgent": "default",
791
+ "allowedTools": ["read", "shell", "glob", "grep", "think"]
792
+ }
793
+ ],
794
+ "expectedResult": "\u5B8C\u6210\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF\u7684\u5B8C\u6574\u5B9E\u73B0\u5E76\u901A\u8FC7\u6D4B\u8BD5"
795
+ }
796
+ \`\`\`
797
+
798
+ ### \u2705 \u6B63\u786E\u793A\u4F8B2: \u4F7F\u7528\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53(\u65E0\u9700\u6307\u5B9A allowedTools)
799
+ \`\`\`json
800
+ {
801
+ "overview": "\u91CD\u6784\u9879\u76EE\u67B6\u6784",
802
+ "steps": [
803
+ {
804
+ "description": "\u63A2\u7D22\u73B0\u6709\u9879\u76EE\u7ED3\u6784\uFF0C\u5206\u6790\u6A21\u5757\u4F9D\u8D56\u5173\u7CFB\u548C\u4EE3\u7801\u7EC4\u7EC7\u65B9\u5F0F",
805
+ "subAgent": "explorer"
806
+ // \u2705 \u4F7F\u7528 explorer \u5B50\u667A\u80FD\u4F53\uFF0C\u4E0D\u9700\u8981 allowedTools
807
+ },
808
+ {
809
+ "description": "\u6839\u636E\u5206\u6790\u7ED3\u679C\uFF0C\u91CD\u6784\u4EE3\u7801\u7ED3\u6784\uFF0C\u4F18\u5316\u6A21\u5757\u5212\u5206",
810
+ "subAgent": "coder"
811
+ // \u2705 \u4F7F\u7528 coder \u5B50\u667A\u80FD\u4F53\uFF0C\u4E0D\u9700\u8981 allowedTools
812
+ }
813
+ ],
814
+ "expectedResult": "\u5B8C\u6210\u67B6\u6784\u91CD\u6784\u5E76\u4FDD\u6301\u529F\u80FD\u5B8C\u6574\u6027"
815
+ }
816
+ \`\`\`
817
+
818
+ \u8BF7\u4F7F\u7528 create_task_plan \u5DE5\u5177\u8FD4\u56DE\u7ED3\u6784\u5316\u7684\u4EFB\u52A1\u89C4\u5212\u3002`}function Ls(o,e=[]){let t=e.length>0?`
819
+ \u53EF\u7528\u7684\u5B50\u667A\u80FD\u4F53\uFF1A
820
+ ${e.map(n=>`- ${n.name}: ${n.description}`).join(`
821
+ `)}`:"";return`\u4F60\u662F\u4E00\u4E2A\u4EFB\u52A1\u89C4\u5212\u4E13\u5BB6\u3002\u8BF7\u4E3A\u4EE5\u4E0B\u4EFB\u52A1\u751F\u6210\u8BE6\u7EC6\u3001\u7ED3\u6784\u5316\u7684\u6267\u884C\u8BA1\u5212\u3002
822
+
823
+ \u4EFB\u52A1\u63CF\u8FF0\uFF1A
824
+ ${o}
825
+ ${t}
826
+
827
+ \u8BF7\u6309\u7167\u4EE5\u4E0BMarkdown\u683C\u5F0F\u8F93\u51FA\u4EFB\u52A1\u89C4\u5212\uFF1A
828
+
829
+ # \u4EFB\u52A1\u89C4\u5212
830
+
831
+ ## \u4EFB\u52A1\u6982\u8FF0
832
+ [\u7B80\u8981\u63CF\u8FF0\u4EFB\u52A1\u76EE\u6807\uFF0C\u5305\u62EC\u8F93\u5165\u3001\u5904\u7406\u548C\u9884\u671F\u8F93\u51FA]
833
+
834
+ ## \u6267\u884C\u6B65\u9AA4
835
+ 1. [\u6B65\u9AA41\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
836
+ 2. [\u6B65\u9AA42\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
837
+ 3. [\u6B65\u9AA43\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
838
+ ...
839
+
840
+ ## \u9884\u671F\u7ED3\u679C
841
+ [\u8BE6\u7EC6\u63CF\u8FF0\u5B8C\u6210\u540E\u7684\u9884\u671F\u7ED3\u679C\uFF0C\u5305\u62EC\u5177\u4F53\u4EA4\u4ED8\u7269\u3001\u529F\u80FD\u7279\u6027\u6216\u4EE3\u7801\u53D8\u66F4]
842
+
843
+ ## \u6CE8\u610F\u4E8B\u9879
844
+ [\u5217\u51FA\u6267\u884C\u8FC7\u7A0B\u4E2D\u9700\u8981\u7279\u522B\u6CE8\u610F\u7684\u4E8B\u9879\u3001\u6F5C\u5728\u98CE\u9669\u6216\u6280\u672F\u8003\u91CF]
845
+
846
+ \u91CD\u8981\u89C4\u5219\uFF1A
847
+ - \u6267\u884C\u6B65\u9AA4\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206\uFF0C\u5173\u6CE8\u4E3B\u8981\u9636\u6BB5\u548C\u76EE\u6807
848
+ - \u5FC5\u987B\u5305\u542B2-4\u4E2A\u903B\u8F91\u6B65\u9AA4\uFF0C\u786E\u4FDD\u8986\u76D6\u6240\u6709\u5FC5\u8981\u5DE5\u4F5C
849
+ - \u6B65\u9AA4\u4E4B\u95F4\u5FC5\u987B\u6709\u660E\u786E\u7684\u4F9D\u8D56\u5173\u7CFB\u548C\u987A\u5E8F\u903B\u8F91
850
+ - \u6BCF\u4E2A\u6B65\u9AA4\u5FC5\u987B\u6807\u6CE8\u6700\u9002\u5408\u7684\u63A8\u8350\u5B50\u667A\u80FD\u4F53
851
+ - \u4EFB\u52A1\u6982\u8FF0\u5E94\u8BE5\u7B80\u660E\u627C\u8981\u5730\u6982\u62EC\u6574\u4E2A\u4EFB\u52A1\u7684\u76EE\u7684\u548C\u8303\u56F4
852
+ - \u9884\u671F\u7ED3\u679C\u5E94\u8BE5\u5177\u4F53\u3001\u53EF\u8861\u91CF\uFF0C\u660E\u786E\u8BF4\u660E\u5B8C\u6210\u540E\u7684\u72B6\u6001`}function Rs(o){return`\u8BF7\u5C06\u4EE5\u4E0B Markdown \u683C\u5F0F\u7684\u4EFB\u52A1\u89C4\u5212\u8F6C\u6362\u4E3A\u7ED3\u6784\u5316\u683C\u5F0F\u3002
853
+
854
+ ${o}
855
+
856
+ \u8BF7\u4F7F\u7528 create_task_plan \u5DE5\u5177\u8FD4\u56DE\u7ED3\u6784\u5316\u7684\u4EFB\u52A1\u89C4\u5212\u6570\u636E\u3002`}function Ds(o,e){return`\u4F60\u662F\u4E00\u4E2A\u667A\u80FD\u4F53\u5339\u914D\u4E13\u5BB6\u3002\u8BF7\u4ED4\u7EC6\u5206\u6790\u4EE5\u4E0B\u4EFB\u52A1\u63CF\u8FF0\uFF0C\u5E76\u4ECE\u63D0\u4F9B\u7684\u667A\u80FD\u4F53\u5217\u8868\u4E2D\u9009\u62E9\u6700\u5339\u914D\u3001\u6700\u9AD8\u6548\u7684\u4E00\u4E2A\u3002
857
+
858
+ \u4EFB\u52A1\u63CF\u8FF0\uFF1A
859
+ ${o}
860
+
861
+ \u53EF\u7528\u667A\u80FD\u4F53\uFF1A
862
+ ${e}
863
+
864
+ \u5339\u914D\u6807\u51C6\uFF1A
865
+ 1. \u667A\u80FD\u4F53\u7684\u4E13\u4E1A\u9886\u57DF\u4E0E\u4EFB\u52A1\u9700\u6C42\u7684\u5339\u914D\u5EA6
866
+ 2. \u667A\u80FD\u4F53\u7684\u80FD\u529B\u8303\u56F4\u662F\u5426\u6DB5\u76D6\u4EFB\u52A1\u6240\u9700\u7684\u6240\u6709\u6280\u80FD
867
+ 3. \u667A\u80FD\u4F53\u7684\u4E13\u957F\u662F\u5426\u80FD\u591F\u89E3\u51B3\u4EFB\u52A1\u4E2D\u7684\u6838\u5FC3\u6311\u6218
868
+ 4. \u8003\u8651\u4EFB\u52A1\u7684\u590D\u6742\u5EA6\u548C\u667A\u80FD\u4F53\u7684\u5904\u7406\u80FD\u529B
603
869
 
604
- <environment_awareness>
870
+ \u8BF7\u53EA\u8FD4\u56DE\u6700\u4F73\u5339\u914D\u7684\u667A\u80FD\u4F53\u540D\u79F0\uFF08\u5B8C\u5168\u5339\u914D\u667A\u80FD\u4F53\u540D\u79F0\u5B57\u7B26\u4E32\uFF09\uFF0C\u5982\u679C\u6CA1\u6709\u5408\u9002\u7684\u5339\u914D\u6216\u5339\u914D\u5EA6\u4E0D\u8DB360%\uFF0C\u8BF7\u8FD4\u56DE"default"\u3002`}var gg,yc,st,it=C(()=>{Ht();gg={core:"You are an expert code assistant that follows the ReAct (Reasoning + Acting) pattern with enhanced thinking capabilities. Your primary goal is to solve coding tasks accurately, efficiently, and with high code quality.",environment_awareness:`
605
871
  \u{1F30D} **\u6838\u5FC3\u539F\u5219\uFF1A\u4F60\u5FC5\u987B\u59CB\u7EC8\u611F\u77E5\u5E76\u9002\u5E94\u8FD0\u884C\u73AF\u5883**
606
872
 
607
873
  **\u73AF\u5883\u611F\u77E5\u662F\u4F60\u7684\u7B2C\u4E00\u4F18\u5148\u7EA7**\uFF1A\u5728\u601D\u8003\u3001\u89C4\u5212\u548C\u6267\u884C\u4EFB\u4F55\u4EFB\u52A1\u4E4B\u524D\uFF0C\u4F60\u5FC5\u987B\uFF1A
@@ -618,9 +884,7 @@ You have access to a comprehensive set of tools, with the 'think' tool being spe
618
884
  1. \u8BC6\u522B\u7528\u6237\u8BF7\u6C42\u7684\u6F5C\u5728\u5E73\u53F0\u4F9D\u8D56\u6027
619
885
  2. \u9009\u62E9\u6700\u9002\u5408\u5F53\u524D\u5E73\u53F0\u7684\u5B9E\u73B0\u65B9\u6848
620
886
  3. \u5982\u679C\u6D89\u53CAshell\u547D\u4EE4\uFF0C\u4F7F\u7528\u5E73\u53F0\u539F\u751F\u547D\u4EE4
621
- 4. \u4E3B\u52A8\u8BF4\u660E\u8DE8\u5E73\u53F0\u8003\u8651\u56E0\u7D20
622
- </environment_awareness>
623
-
887
+ 4. \u4E3B\u52A8\u8BF4\u660E\u8DE8\u5E73\u53F0\u8003\u8651\u56E0\u7D20`,workflow:`
624
888
  <workflow>
625
889
  You must follow this strict thinking pattern for EVERY response:
626
890
 
@@ -646,18 +910,7 @@ You must follow this strict thinking pattern for EVERY response:
646
910
  - Decide on the next appropriate action
647
911
 
648
912
  This cycle continues: think \u2192 act \u2192 observe \u2192 think \u2192 act \u2192 ... until task completion.
649
- </workflow>
650
-
651
- <available_tools>
652
- You have access to the following tools (detailed schemas are provided separately):
653
-
654
- ${o.map(t=>`- ${t.name}: ${t.description}`).join(`
655
- `)}
656
-
657
- The system will provide you with the exact parameter schemas for each tool. When using tools, pay special attention to required parameters and their formats.
658
- Use the tool definitions to understand what parameters each tool requires.
659
- </available_tools>
660
-
913
+ </workflow>`,critical_rules:`
661
914
  <critical_rules>
662
915
  1. ALWAYS call 'think' tool FIRST before taking any action
663
916
  2. ALWAYS call 'think' tool AFTER receiving an Observation to reflect
@@ -674,8 +927,7 @@ Use the tool definitions to understand what parameters each tool requires.
674
927
  6. Think deeply and systematically: analyze context, plan actions, reflect on results
675
928
  7. If you encounter errors or unexpected results, use 'think' to analyze the problem and determine the best next step
676
929
  8. ALWAYS maintain high code quality standards - follow project conventions, add appropriate comments, and write clean code
677
- </critical_rules>
678
-
930
+ </critical_rules>`,code_modification:`
679
931
  <code_modification_workflow>
680
932
  When modifying existing code:
681
933
  1. Call think() to plan your approach and identify risks
@@ -721,8 +973,7 @@ FILE PATH SAFETY CONSTRAINTS:
721
973
  - If user requests writing outside project directory, politely refuse and explain the security constraint
722
974
  - Valid paths: "src/...", "lib/...", "config/...", "tests/...", "docs/...", etc.
723
975
  - Invalid paths: "/etc/...", "../../../...", "C:Windows...", "/usr/local/..."
724
- </code_modification_workflow>
725
-
976
+ </code_modification_workflow>`,language_constraints:`
726
977
  <language_constraints>
727
978
  - ALWAYS analyze the project's primary programming language and file context before generating code
728
979
  - Check .nium/project/project.json for language documentation
@@ -735,8 +986,7 @@ FILE PATH SAFETY CONSTRAINTS:
735
986
  - For multi-language projects, follow the specific context of the file layer you're modifying
736
987
  - When unsure, use glob() to explore file extensions and project structure first
737
988
  - Maintain consistent code style within each language layer
738
- </language_constraints>
739
-
989
+ </language_constraints>`,specialized_task_routing:`
740
990
  <specialized_task_routing>
741
991
  For coding tasks that involve:
742
992
  - Implementing new features or functions
@@ -759,8 +1009,7 @@ Example routing:
759
1009
  - User: "\u91CD\u6784\u8FD9\u4E2A\u6A21\u5757\u63D0\u9AD8\u6027\u80FD" \u2192 Call plan() to route to coder agent
760
1010
 
761
1011
  For simple tasks that don't involve code generation (reading files, exploring structure, running commands), you can handle them directly.
762
- </specialized_task_routing>
763
-
1012
+ </specialized_task_routing>`,project_exploration:`
764
1013
  <project_exploration_guidelines>
765
1014
  IMPORTANT: Avoid redundant project exploration in plan mode
766
1015
 
@@ -790,8 +1039,7 @@ When working within a plan/task context:
790
1039
  Example:
791
1040
  \u274C Bad: Call quickProjectScan() in every step of a plan task
792
1041
  \u2705 Good: Call read('.nium/project/project.json') to get project info
793
- </project_exploration_guidelines>
794
-
1042
+ </project_exploration_guidelines>`,project_type_detection:`
795
1043
  <project_type_detection>
796
1044
  IMPORTANT: Identify project build system before making assumptions
797
1045
 
@@ -833,8 +1081,7 @@ Example 2 - Adding a dependency:
833
1081
  2. Call think to plan based on detected build system
834
1082
  3. Read the appropriate file
835
1083
  4. Add dependency using correct syntax for that build system
836
- </project_type_detection>
837
-
1084
+ </project_type_detection>`,best_practices:`
838
1085
  <best_practices>
839
1086
  - Write modular, reusable code where appropriate
840
1087
  - Add clear comments explaining complex logic or non-obvious implementation details
@@ -842,8 +1089,7 @@ Example 2 - Adding a dependency:
842
1089
  - Follow language-specific coding standards and conventions
843
1090
  - When modifying existing code, preserve the original author's intent while making improvements
844
1091
  - Test your solutions conceptually before implementation
845
- </best_practices>
846
-
1092
+ </best_practices>`,examples:`
847
1093
  <examples>
848
1094
  <example>
849
1095
  <scenario>User asks: Create a config.json file</scenario>
@@ -895,171 +1141,32 @@ Step 6 - Final answer:
895
1141
  "Successfully added the new function to utils.js using safe merge, maintaining consistency with existing code style."
896
1142
  </correct_response>
897
1143
  </example>
898
- </examples>
899
-
1144
+ </examples>`,final_note:`
900
1145
  <final_note>
901
1146
  The key difference from traditional tool calling:
902
1147
  - OLD: You called tools directly and reasoned implicitly
903
1148
  - NEW: You call think() to make reasoning explicit, THEN call tools
904
1149
 
905
1150
  This makes your decision-making process transparent, debuggable, and more reliable. Always prioritize clarity and thoroughness in your thinking process.
906
- </final_note>
907
- </instructions>`}function ss(o){return`\u4F60\u662F\u4E00\u4E2A\u4EFB\u52A1\u590D\u6742\u5EA6\u8BC4\u4F30\u4E13\u5BB6\u3002\u8BF7\u8BC4\u4F30\u4EE5\u4E0B\u4EFB\u52A1\u7684\u590D\u6742\u5EA6\u3002
908
-
909
- \u4EFB\u52A1\u63CF\u8FF0\uFF1A
910
- ${o}
911
-
912
- \u8BC4\u4F30\u6807\u51C6\uFF1A
913
- - SIMPLE\uFF08\u7B80\u5355\u4EFB\u52A1\uFF09\uFF1A\u5355\u4E00\u660E\u786E\u7684\u64CD\u4F5C\uFF0C\u6BD4\u5982\u8BFB\u53D6\u6587\u4EF6\u3001\u521B\u5EFA\u7B80\u5355\u6587\u4EF6\u3001\u6267\u884C\u5355\u4E2A\u547D\u4EE4\u7B49\uFF0C\u4E0D\u9700\u8981\u590D\u6742\u601D\u8003\u6216\u89C4\u5212
914
- - MEDIUM\uFF08\u4E2D\u7B49\u4EFB\u52A1\uFF09\uFF1A\u9700\u89812-3\u4E2A\u6B65\u9AA4\u7684\u64CD\u4F5C\uFF0C\u53EF\u80FD\u6D89\u53CA\u7B80\u5355\u7684\u6587\u4EF6\u4FEE\u6539\u6216\u57FA\u672C\u903B\u8F91
915
- - COMPLEX\uFF08\u590D\u6742\u4EFB\u52A1\uFF09\uFF1A\u9700\u8981\u591A\u4E2A\u6B65\u9AA4\uFF083\u4E2A\u4EE5\u4E0A\uFF09\u3001\u6D89\u53CA\u591A\u4E2A\u6587\u4EF6\u4FEE\u6539\u3001\u9700\u8981\u8BE6\u7EC6\u89C4\u5212\u6216\u903B\u8F91\u63A8\u7406\u7684\u4EFB\u52A1
916
-
917
- \u8BF7\u53EA\u56DE\u590D "SIMPLE"\u3001"MEDIUM" \u6216 "COMPLEX"\uFF0C\u4E0D\u8981\u6709\u5176\u4ED6\u5185\u5BB9\u3002`}function is(o,e=[]){let t=e.length>0?e.map(r=>`${r.name}(${r.description})`).join(", "):"default",n=e.length>0?`
918
-
919
- \u53EF\u7528\u7684\u5B50\u667A\u80FD\u4F53\uFF1A
920
- ${e.map(r=>`- ${r.name}: ${r.description}`).join(`
921
- `)}`:"";return`\u4F60\u662F\u4E00\u4F4D\u4EFB\u52A1\u89C4\u5212\u4E13\u5BB6\u3002\u8BF7\u4E3A\u4EE5\u4E0B\u7528\u6237\u8BF7\u6C42\u751F\u6210\u4E00\u4E2A\u9AD8\u8D28\u91CF\u7684\u6267\u884C\u8BA1\u5212\u3002
922
-
923
- \u7528\u6237\u8BF7\u6C42\uFF1A
924
- ${o}
925
- ${n}
926
-
927
- ## \u89C4\u5212\u8981\u6C42
928
-
929
- 1. **\u6B65\u9AA4\u9897\u7C92\u5EA6**: \u6BCF\u4E2A\u6B65\u9AA4\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206(2-4\u4E2A\u6B65\u9AA4)
930
-
931
- 2. **\u5DE5\u5177\u6743\u9650\u63A7\u5236** (\u91CD\u8981):
932
- - \u5F53\u6B65\u9AA4\u4F7F\u7528 **default \u901A\u7528\u667A\u80FD\u4F53** \u65F6\uFF0C\u5FC5\u987B\u6307\u5B9A \`allowedTools\` \u5217\u8868
933
- - \u5F53\u6B65\u9AA4\u4F7F\u7528 **\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53** \u65F6\uFF0C\`allowedTools\` \u53EF\u4EE5\u7701\u7565(\u5B50\u667A\u80FD\u4F53\u6709\u5B8C\u6574\u6743\u9650)
934
-
935
- 3. **\u5E38\u89C1\u6B65\u9AA4\u7684\u5DE5\u5177\u914D\u7F6E**:
936
-
937
- | \u6B65\u9AA4\u6027\u8D28 | allowedTools \u914D\u7F6E | \u793A\u4F8B\u573A\u666F |
938
- |---------|------------------|---------|
939
- | \u7EAF\u5206\u6790\u89C4\u5212 | \`["read", "glob", "grep", "quickProjectScan", "think", "askUser"]\` | \u9700\u6C42\u5206\u6790\u3001\u6280\u672F\u9009\u578B\u3001\u65B9\u6848\u8BBE\u8BA1 |
940
- | \u4EE3\u7801\u63A2\u7D22 | \`["read", "glob", "grep", "quickProjectScan", "shell", "think"]\` | \u5206\u6790\u73B0\u6709\u67B6\u6784\u3001\u67E5\u627E\u6A21\u5757 |
941
- | \u4EE3\u7801\u5B9E\u73B0 | \`["read", "write", "merge", "delete", "mkdir", "glob", "grep", "shell", "think"]\` | \u521B\u5EFA\u6587\u4EF6\u3001\u5B9E\u73B0\u529F\u80FD |
942
- | \u6D4B\u8BD5\u9A8C\u8BC1 | \`["read", "shell", "glob", "grep", "think"]\` | \u8FD0\u884C\u6D4B\u8BD5\u3001\u67E5\u770B\u7ED3\u679C |
943
-
944
- 4. **\u5B50\u667A\u80FD\u4F53\u9009\u62E9**:
945
- \u53EF\u7528\u5B50\u667A\u80FD\u4F53: ${t}
946
- - explorer: \u4E13\u95E8\u7528\u4E8E\u9879\u76EE\u63A2\u7D22\uFF0C\u9ED8\u8BA4\u6709\u5B8C\u6574\u53EA\u8BFB\u6743\u9650
947
- - coder: \u4E13\u95E8\u7528\u4E8E\u4EE3\u7801\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u6709\u5B8C\u6574\u8BFB\u5199\u6743\u9650
948
- - default: \u901A\u7528\u667A\u80FD\u4F53\uFF0C\u9700\u8981\u660E\u786E\u6307\u5B9A allowedTools
949
-
950
- ## \u793A\u4F8B\u89C4\u5212
951
-
952
- ### \u274C \u9519\u8BEF\u793A\u4F8B
953
- \`\`\`json
954
- {
955
- "steps": [
956
- {
957
- "description": "\u5B8C\u6210\u9700\u6C42\u5206\u6790\u4E0E\u6280\u672F\u9009\u578B",
958
- "subAgent": "default"
959
- // \u274C \u7F3A\u5C11 allowedTools\uFF0C\u667A\u80FD\u4F53\u53EF\u80FD\u6EE5\u7528\u5199\u5DE5\u5177
960
- }
961
- ]
962
- }
963
- \`\`\`
964
-
965
- ### \u2705 \u6B63\u786E\u793A\u4F8B1: \u4F7F\u7528 default \u667A\u80FD\u4F53 + \u660E\u786E\u5DE5\u5177\u6743\u9650
966
- \`\`\`json
967
- {
968
- "overview": "\u521D\u59CB\u5316\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF",
969
- "steps": [
970
- {
971
- "description": "\u5206\u6790\u5F53\u524D\u9879\u76EE\u6280\u672F\u6808(\u901A\u8FC7\u8BFB\u53D6 project.json)\uFF0C\u8F93\u51FA\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF\u7684\u6280\u672F\u65B9\u6848\u6587\u6863\uFF0C\u5305\u62EC\u6570\u636E\u5E93\u8BBE\u8BA1\u3001API\u63A5\u53E3\u89C4\u8303\u3001\u8BA4\u8BC1\u65B9\u6848",
972
- "subAgent": "default",
973
- "allowedTools": ["read", "glob", "grep", "quickProjectScan", "think", "askUser"]
974
- },
975
- {
976
- "description": "\u57FA\u4E8E\u65B9\u6848\u6587\u6863\uFF0C\u5B9E\u73B0\u7528\u6237\u6A21\u578B\u3001CRUD API\u3001JWT\u8BA4\u8BC1\u4E2D\u95F4\u4EF6\u7B49\u6838\u5FC3\u529F\u80FD",
977
- "subAgent": "default",
978
- "allowedTools": ["read", "write", "merge", "mkdir", "glob", "grep", "shell", "think"]
979
- },
980
- {
981
- "description": "\u8FD0\u884C\u9879\u76EE\u6D4B\u8BD5\u5957\u4EF6\uFF0C\u9A8C\u8BC1\u7528\u6237\u6CE8\u518C\u3001\u767B\u5F55\u3001\u6743\u9650\u9A8C\u8BC1\u529F\u80FD\u662F\u5426\u6B63\u5E38",
982
- "subAgent": "default",
983
- "allowedTools": ["read", "shell", "glob", "grep", "think"]
984
- }
985
- ],
986
- "expectedResult": "\u5B8C\u6210\u7528\u6237\u7BA1\u7406\u7CFB\u7EDF\u7684\u5B8C\u6574\u5B9E\u73B0\u5E76\u901A\u8FC7\u6D4B\u8BD5"
987
- }
988
- \`\`\`
989
-
990
- ### \u2705 \u6B63\u786E\u793A\u4F8B2: \u4F7F\u7528\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53(\u65E0\u9700\u6307\u5B9A allowedTools)
991
- \`\`\`json
992
- {
993
- "overview": "\u91CD\u6784\u9879\u76EE\u67B6\u6784",
994
- "steps": [
995
- {
996
- "description": "\u63A2\u7D22\u73B0\u6709\u9879\u76EE\u7ED3\u6784\uFF0C\u5206\u6790\u6A21\u5757\u4F9D\u8D56\u5173\u7CFB\u548C\u4EE3\u7801\u7EC4\u7EC7\u65B9\u5F0F",
997
- "subAgent": "explorer"
998
- // \u2705 \u4F7F\u7528 explorer \u5B50\u667A\u80FD\u4F53\uFF0C\u4E0D\u9700\u8981 allowedTools
999
- },
1000
- {
1001
- "description": "\u6839\u636E\u5206\u6790\u7ED3\u679C\uFF0C\u91CD\u6784\u4EE3\u7801\u7ED3\u6784\uFF0C\u4F18\u5316\u6A21\u5757\u5212\u5206",
1002
- "subAgent": "coder"
1003
- // \u2705 \u4F7F\u7528 coder \u5B50\u667A\u80FD\u4F53\uFF0C\u4E0D\u9700\u8981 allowedTools
1004
- }
1005
- ],
1006
- "expectedResult": "\u5B8C\u6210\u67B6\u6784\u91CD\u6784\u5E76\u4FDD\u6301\u529F\u80FD\u5B8C\u6574\u6027"
1007
- }
1008
- \`\`\`
1009
-
1010
- \u8BF7\u4F7F\u7528 create_task_plan \u5DE5\u5177\u8FD4\u56DE\u7ED3\u6784\u5316\u7684\u4EFB\u52A1\u89C4\u5212\u3002`}function as(o,e=[]){let t=e.length>0?`
1011
- \u53EF\u7528\u7684\u5B50\u667A\u80FD\u4F53\uFF1A
1012
- ${e.map(n=>`- ${n.name}: ${n.description}`).join(`
1013
- `)}`:"";return`\u4F60\u662F\u4E00\u4E2A\u4EFB\u52A1\u89C4\u5212\u4E13\u5BB6\u3002\u8BF7\u4E3A\u4EE5\u4E0B\u4EFB\u52A1\u751F\u6210\u8BE6\u7EC6\u3001\u7ED3\u6784\u5316\u7684\u6267\u884C\u8BA1\u5212\u3002
1014
-
1015
- \u4EFB\u52A1\u63CF\u8FF0\uFF1A
1016
- ${o}
1017
- ${t}
1018
-
1019
- \u8BF7\u6309\u7167\u4EE5\u4E0BMarkdown\u683C\u5F0F\u8F93\u51FA\u4EFB\u52A1\u89C4\u5212\uFF1A
1020
-
1021
- # \u4EFB\u52A1\u89C4\u5212
1022
-
1023
- ## \u4EFB\u52A1\u6982\u8FF0
1024
- [\u7B80\u8981\u63CF\u8FF0\u4EFB\u52A1\u76EE\u6807\uFF0C\u5305\u62EC\u8F93\u5165\u3001\u5904\u7406\u548C\u9884\u671F\u8F93\u51FA]
1025
-
1026
- ## \u6267\u884C\u6B65\u9AA4
1027
- 1. [\u6B65\u9AA41\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
1028
- 2. [\u6B65\u9AA42\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
1029
- 3. [\u6B65\u9AA43\u63CF\u8FF0 - \u6E05\u6670\u8BF4\u660E\u8981\u5B8C\u6210\u7684\u5DE5\u4F5C\u548C\u76EE\u6807] (\u63A8\u8350\u5B50\u667A\u80FD\u4F53: [\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u6216"default"])
1030
- ...
1031
-
1032
- ## \u9884\u671F\u7ED3\u679C
1033
- [\u8BE6\u7EC6\u63CF\u8FF0\u5B8C\u6210\u540E\u7684\u9884\u671F\u7ED3\u679C\uFF0C\u5305\u62EC\u5177\u4F53\u4EA4\u4ED8\u7269\u3001\u529F\u80FD\u7279\u6027\u6216\u4EE3\u7801\u53D8\u66F4]
1034
-
1035
- ## \u6CE8\u610F\u4E8B\u9879
1036
- [\u5217\u51FA\u6267\u884C\u8FC7\u7A0B\u4E2D\u9700\u8981\u7279\u522B\u6CE8\u610F\u7684\u4E8B\u9879\u3001\u6F5C\u5728\u98CE\u9669\u6216\u6280\u672F\u8003\u91CF]
1037
-
1038
- \u91CD\u8981\u89C4\u5219\uFF1A
1039
- - \u6267\u884C\u6B65\u9AA4\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206\uFF0C\u5173\u6CE8\u4E3B\u8981\u9636\u6BB5\u548C\u76EE\u6807
1040
- - \u5FC5\u987B\u5305\u542B2-4\u4E2A\u903B\u8F91\u6B65\u9AA4\uFF0C\u786E\u4FDD\u8986\u76D6\u6240\u6709\u5FC5\u8981\u5DE5\u4F5C
1041
- - \u6B65\u9AA4\u4E4B\u95F4\u5FC5\u987B\u6709\u660E\u786E\u7684\u4F9D\u8D56\u5173\u7CFB\u548C\u987A\u5E8F\u903B\u8F91
1042
- - \u6BCF\u4E2A\u6B65\u9AA4\u5FC5\u987B\u6807\u6CE8\u6700\u9002\u5408\u7684\u63A8\u8350\u5B50\u667A\u80FD\u4F53
1043
- - \u4EFB\u52A1\u6982\u8FF0\u5E94\u8BE5\u7B80\u660E\u627C\u8981\u5730\u6982\u62EC\u6574\u4E2A\u4EFB\u52A1\u7684\u76EE\u7684\u548C\u8303\u56F4
1044
- - \u9884\u671F\u7ED3\u679C\u5E94\u8BE5\u5177\u4F53\u3001\u53EF\u8861\u91CF\uFF0C\u660E\u786E\u8BF4\u660E\u5B8C\u6210\u540E\u7684\u72B6\u6001`}function cs(o){return`\u8BF7\u5C06\u4EE5\u4E0B Markdown \u683C\u5F0F\u7684\u4EFB\u52A1\u89C4\u5212\u8F6C\u6362\u4E3A\u7ED3\u6784\u5316\u683C\u5F0F\u3002
1045
-
1046
- ${o}
1047
-
1048
- \u8BF7\u4F7F\u7528 create_task_plan \u5DE5\u5177\u8FD4\u56DE\u7ED3\u6784\u5316\u7684\u4EFB\u52A1\u89C4\u5212\u6570\u636E\u3002`}function ls(o,e){return`\u4F60\u662F\u4E00\u4E2A\u667A\u80FD\u4F53\u5339\u914D\u4E13\u5BB6\u3002\u8BF7\u4ED4\u7EC6\u5206\u6790\u4EE5\u4E0B\u4EFB\u52A1\u63CF\u8FF0\uFF0C\u5E76\u4ECE\u63D0\u4F9B\u7684\u667A\u80FD\u4F53\u5217\u8868\u4E2D\u9009\u62E9\u6700\u5339\u914D\u3001\u6700\u9AD8\u6548\u7684\u4E00\u4E2A\u3002
1049
-
1050
- \u4EFB\u52A1\u63CF\u8FF0\uFF1A
1051
- ${o}
1052
-
1053
- \u53EF\u7528\u667A\u80FD\u4F53\uFF1A
1054
- ${e}
1055
-
1056
- \u5339\u914D\u6807\u51C6\uFF1A
1057
- 1. \u667A\u80FD\u4F53\u7684\u4E13\u4E1A\u9886\u57DF\u4E0E\u4EFB\u52A1\u9700\u6C42\u7684\u5339\u914D\u5EA6
1058
- 2. \u667A\u80FD\u4F53\u7684\u80FD\u529B\u8303\u56F4\u662F\u5426\u6DB5\u76D6\u4EFB\u52A1\u6240\u9700\u7684\u6240\u6709\u6280\u80FD
1059
- 3. \u667A\u80FD\u4F53\u7684\u4E13\u957F\u662F\u5426\u80FD\u591F\u89E3\u51B3\u4EFB\u52A1\u4E2D\u7684\u6838\u5FC3\u6311\u6218
1060
- 4. \u8003\u8651\u4EFB\u52A1\u7684\u590D\u6742\u5EA6\u548C\u667A\u80FD\u4F53\u7684\u5904\u7406\u80FD\u529B
1061
-
1062
- \u8BF7\u53EA\u8FD4\u56DE\u6700\u4F73\u5339\u914D\u7684\u667A\u80FD\u4F53\u540D\u79F0\uFF08\u5B8C\u5168\u5339\u914D\u667A\u80FD\u4F53\u540D\u79F0\u5B57\u7B26\u4E32\uFF09\uFF0C\u5982\u679C\u6CA1\u6709\u5408\u9002\u7684\u5339\u914D\u6216\u5339\u914D\u5EA6\u4E0D\u8DB360%\uFF0C\u8BF7\u8FD4\u56DE"default"\u3002`}var et,tt=S(()=>{Ot();et=Ma()});var Oe={};j(Oe,{TaskComplexity:()=>Ar,evaluateTaskComplexity:()=>du,generatePlanSummary:()=>Dn,generateTaskPlan:()=>Rn,getTaskFilePath:()=>xu,listTaskPlans:()=>vu,loadTaskPlan:()=>wu,updateTaskStatus:()=>nt});import R from"chalk";import ye from"fs";import ve from"path";async function du(o){let e=ss(o);try{let t=await ee({model:Pe(),messages:[{role:"user",content:e}],temperature:.1,max_tokens:10,useCompression:!0}),{content:n}=t.choices[0].message;return(n?n.trim():"").toUpperCase().includes("COMPLEX")?(console.log(R.yellow("[\u4EFB\u52A1\u8BC4\u4F30] \u68C0\u6D4B\u5230\u590D\u6742\u4EFB\u52A1\uFF0C\u5C06\u8FDB\u884C\u4EFB\u52A1\u89C4\u5212")),Ar.COMPLEX):(console.log(R.blue("[\u4EFB\u52A1\u8BC4\u4F30] \u68C0\u6D4B\u5230\u7B80\u5355\u4EFB\u52A1\uFF0C\u4F7F\u7528\u5355\u6B65\u9AA4\u6A21\u5F0F")),Ar.SIMPLE)}catch(t){return console.log(R.yellow(`[\u4EFB\u52A1\u8BC4\u4F30] \u8BC4\u4F30\u5931\u8D25\uFF0C\u9ED8\u8BA4\u4E3A\u7B80\u5355\u4EFB\u52A1: ${t.message}`)),Ar.SIMPLE}}function Ia(o=[]){let e=o.length>0?o.map(t=>t.name).join(", "):"default";return{name:"create_task_plan",description:"\u751F\u6210\u8BE6\u7EC6\u7684\u4EFB\u52A1\u6267\u884C\u89C4\u5212\uFF0C\u5305\u542B\u591A\u4E2A\u6B65\u9AA4\u548C\u63A8\u8350\u7684\u5B50\u667A\u80FD\u4F53",input_schema:{type:"object",properties:{overview:{type:"string",description:"\u4EFB\u52A1\u6982\u8FF0\uFF0C\u7B80\u8981\u63CF\u8FF0\u4EFB\u52A1\u76EE\u6807"},steps:{type:"array",description:"\u6267\u884C\u6B65\u9AA4\u5217\u8868\uFF0C\u5FC5\u987B\u5305\u542B2-4\u4E2A\u6B65\u9AA4",items:{type:"object",properties:{description:{type:"string",description:"\u6B65\u9AA4\u7684\u8BE6\u7EC6\u63CF\u8FF0\uFF0C\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206"},subAgent:{type:"string",description:`\u63A8\u8350\u4F7F\u7528\u7684\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u3002\u53EF\u7528\u9009\u9879: ${e}\u3002\u5982\u679C\u6CA1\u6709\u5408\u9002\u7684\u5B50\u667A\u80FD\u4F53\uFF0C\u4F7F\u7528"default"`},allowedTools:{type:"array",description:`\u8BE5\u6B65\u9AA4\u5141\u8BB8\u4F7F\u7528\u7684\u5DE5\u5177\u5217\u8868\uFF08\u4EC5\u5F53 subAgent \u4E3A "default" \u65F6\u751F\u6548\uFF09\u3002
1151
+ </final_note>`,error_handling:`
1152
+ <error_handling_strategies>
1153
+ **\u9047\u5230\u9519\u8BEF\u65F6\u7684\u5904\u7406\u7B56\u7565**\uFF1A
1154
+ 1. **\u5206\u6790\u9519\u8BEF\u4FE1\u606F**\uFF1A\u4ED4\u7EC6\u9605\u8BFB\u9519\u8BEF\u63D0\u793A\uFF0C\u5B9A\u4F4D\u9519\u8BEF\u7C7B\u578B\u548C\u4F4D\u7F6E
1155
+ 2. **\u5206\u7C7B\u5904\u7406**\uFF1A
1156
+ - \u5DE5\u5177\u8C03\u7528\u9519\u8BEF\uFF1A\u68C0\u67E5\u53C2\u6570\u683C\u5F0F\u3001\u8DEF\u5F84\u6B63\u786E\u6027\u3001\u6743\u9650\u95EE\u9898
1157
+ - \u4EE3\u7801\u7F16\u8BD1\u9519\u8BEF\uFF1A\u68C0\u67E5\u8BED\u6CD5\u3001\u4F9D\u8D56\u5173\u7CFB\u3001\u7C7B\u578B\u5B9A\u4E49
1158
+ - \u547D\u4EE4\u6267\u884C\u9519\u8BEF\uFF1A\u68C0\u67E5\u547D\u4EE4\u8BED\u6CD5\u3001\u5E73\u53F0\u517C\u5BB9\u6027\u3001\u73AF\u5883\u914D\u7F6E
1159
+ 3. **\u91CD\u8BD5\u673A\u5236**\uFF1A
1160
+ - \u4E34\u65F6\u7F51\u7EDC\u6216\u8D44\u6E90\u95EE\u9898\uFF1A\u53EF\u91CD\u8BD51-2\u6B21
1161
+ - \u660E\u786E\u7684\u9519\u8BEF\uFF1A\u4E0D\u91CD\u8BD5\uFF0C\u76F4\u63A5\u5206\u6790\u5E76\u4FEE\u590D
1162
+ 4. **\u964D\u7EA7\u65B9\u6848**\uFF1A\u5F53\u9996\u9009\u5DE5\u5177\u6216\u65B9\u6CD5\u5931\u8D25\u65F6\uFF0C\u51C6\u5907\u66FF\u4EE3\u65B9\u6848
1163
+ 5. **\u7528\u6237\u6C9F\u901A**\uFF1A\u5F53\u65E0\u6CD5\u72EC\u7ACB\u89E3\u51B3\u95EE\u9898\u65F6\uFF0C\u6E05\u6670\u63CF\u8FF0\u95EE\u9898\u5E76\u8BF7\u6C42\u5FC5\u8981\u4FE1\u606F
1164
+
1165
+ **\u5E38\u89C1\u9519\u8BEF\u5904\u7406\u793A\u4F8B**\uFF1A
1166
+ - \u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E\uFF0C\u6587\u4EF6\u662F\u5426\u5B58\u5728
1167
+ - \u547D\u4EE4\u6267\u884C\u5931\u8D25\uFF1A\u68C0\u67E5\u547D\u4EE4\u8BED\u6CD5\uFF0C\u662F\u5426\u9002\u5408\u5F53\u524D\u5E73\u53F0
1168
+ - \u5DE5\u5177\u8C03\u7528\u53C2\u6570\u9519\u8BEF\uFF1A\u68C0\u67E5\u53C2\u6570\u7C7B\u578B\u548C\u683C\u5F0F\u662F\u5426\u7B26\u5408\u5DE5\u5177\u5B9A\u4E49
1169
+ </error_handling_strategies>`},yc={all:["core","environment_awareness","workflow","critical_rules","error_handling"],code:["code_modification","language_constraints","specialized_task_routing","best_practices"],exploration:["project_exploration","project_type_detection"],simple:["best_practices"]};st=Cc()});var We={};j(We,{TaskComplexity:()=>xe,evaluateTaskComplexity:()=>mg,generatePlanSummary:()=>er,generateTaskPlan:()=>Zn,getTaskFilePath:()=>Sg,listTaskPlans:()=>wg,loadTaskPlan:()=>vg,updateTaskStatus:()=>at});import Se from"fs";import Pe from"path";function pg(o){let e=o.toLowerCase(),t=[/^(读取|查看|显示|打开|列出)/,/^(解释|说明|介绍)/,/文件.*内容/,/^帮我.*查/,/^(read|view|show|open|list)/i,/^(explain|describe|introduce)/i,/file.*content/i,/^help me.*check/i,/^search/i],n=[/实现.*功能/,/(重构|优化).*代码库/,/生成.*并.*测试/,/修复.*并.*验证/,/(创建|添加).*多个/,/implement.*feature/i,/(refactor|optimize).*codebase/i,/generate.*and.*test/i,/fix.*and.*verify/i,/(create|add).*multiple/i,/build.*system/i];for(let s of t)if(s.test(e))return{result:xe.SIMPLE,confidence:.9};for(let s of n)if(s.test(e))return{result:xe.COMPLEX,confidence:.85};let r=e.match(/[\u4e00-\u9fa5a-z]+/gi)||[];return r.length<5&&o.length<50?{result:xe.SIMPLE,confidence:.7}:r.length>20||o.length>200?{result:xe.COMPLEX,confidence:.75}:{result:xe.SIMPLE,confidence:.5}}async function dg(o){let e=Is(o);try{let t=await ee({model:Ie(),messages:[{role:"user",content:e}],temperature:.1,max_tokens:10,useCompression:!0,tools:[]}),{content:n}=t.choices[0].message,r=(n?n.trim():"").toUpperCase();return r==="COMPLEX"||r==="MEDIUM"?xe.COMPLEX:xe.SIMPLE}catch(t){return W(`LLM\u8BC4\u4F30\u5931\u8D25\uFF0C\u9ED8\u8BA4\u4E3A\u7B80\u5355\u4EFB\u52A1: ${t.message}`,"Task"),xe.SIMPLE}}async function mg(o){let e=pg(o);if(e.confidence>.8)return se(`\u5FEB\u901F\u542F\u53D1\u5F0F\u8BC4\u4F30: ${e.result}, \u7F6E\u4FE1\u5EA6: ${e.confidence.toFixed(2)}`,"Task"),e.result;se(`\u542F\u53D1\u5F0F\u8BC4\u4F30\u4E0D\u786E\u5B9A\uFF08\u7F6E\u4FE1\u5EA6: ${e.confidence.toFixed(2)}\uFF09\uFF0C\u4F7F\u7528LLM\u7CBE\u786E\u8BC4\u4F30`,"Task");let t=await dg(o);return t===xe.COMPLEX?W("LLM\u68C0\u6D4B\u5230\u590D\u6742\u4EFB\u52A1\uFF0C\u5C06\u8FDB\u884C\u4EFB\u52A1\u89C4\u5212","Task"):se("LLM\u68C0\u6D4B\u5230\u7B80\u5355\u4EFB\u52A1\uFF0C\u4F7F\u7528\u5355\u6B65\u9AA4\u6A21\u5F0F","Task"),t}function xc(o=[]){let e=o.length>0?o.map(t=>t.name).join(", "):"default";return{name:"create_task_plan",description:"\u751F\u6210\u8BE6\u7EC6\u7684\u4EFB\u52A1\u6267\u884C\u89C4\u5212\uFF0C\u5305\u542B\u591A\u4E2A\u6B65\u9AA4\u548C\u63A8\u8350\u7684\u5B50\u667A\u80FD\u4F53",input_schema:{type:"object",properties:{overview:{type:"string",description:"\u4EFB\u52A1\u6982\u8FF0\uFF0C\u7B80\u8981\u63CF\u8FF0\u4EFB\u52A1\u76EE\u6807"},steps:{type:"array",description:"\u6267\u884C\u6B65\u9AA4\u5217\u8868\uFF0C\u5FC5\u987B\u5305\u542B2-4\u4E2A\u6B65\u9AA4",items:{type:"object",properties:{description:{type:"string",description:"\u6B65\u9AA4\u7684\u8BE6\u7EC6\u63CF\u8FF0\uFF0C\u5E94\u8BE5\u662F\u5927\u9897\u7C92\u5EA6\u7684\u4EFB\u52A1\u62C6\u5206"},subAgent:{type:"string",description:`\u63A8\u8350\u4F7F\u7528\u7684\u5B50\u667A\u80FD\u4F53\u540D\u79F0\u3002\u53EF\u7528\u9009\u9879: ${e}\u3002\u5982\u679C\u6CA1\u6709\u5408\u9002\u7684\u5B50\u667A\u80FD\u4F53\uFF0C\u4F7F\u7528"default"`},allowedTools:{type:"array",description:`\u8BE5\u6B65\u9AA4\u5141\u8BB8\u4F7F\u7528\u7684\u5DE5\u5177\u5217\u8868\uFF08\u4EC5\u5F53 subAgent \u4E3A "default" \u65F6\u751F\u6548\uFF09\u3002
1063
1170
  \u5E38\u7528\u5DE5\u5177\u7EC4\u5408\uFF1A
1064
1171
  - \u53EA\u8BFB\u5206\u6790: ["read", "glob", "grep", "quickProjectScan", "think", "askUser"]
1065
1172
  - \u4EE3\u7801\u63A2\u7D22: ["read", "glob", "grep", "quickProjectScan", "shell", "think"]
@@ -1067,7 +1174,7 @@ ${e}
1067
1174
  - \u6D4B\u8BD5\u9A8C\u8BC1: ["read", "shell", "glob", "grep", "think"]
1068
1175
 
1069
1176
  \u5982\u679C\u4E3A\u7A7A\u6570\u7EC4\u6216\u4E0D\u6307\u5B9A\uFF0C\u5219\u4F7F\u7528\u6240\u6709\u53EF\u7528\u5DE5\u5177\u3002
1070
- \u5982\u679C\u4F7F\u7528\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53(\u975Edefault)\uFF0C\u6B64\u5B57\u6BB5\u4F1A\u88AB\u5FFD\u7565\u3002`,items:{type:"string"}}},required:["description","subAgent"]},minItems:2,maxItems:4},expectedResult:{type:"string",description:"\u9884\u671F\u7ED3\u679C\uFF0C\u63CF\u8FF0\u5B8C\u6210\u540E\u7684\u9884\u671F\u6548\u679C"}},required:["overview","steps","expectedResult"]}}}async function fu(o,e=[]){console.log(R.blue("[\u4EFB\u52A1\u89C4\u5212] \u5C1D\u8BD5\u65B9\u68481: Function Calling"));let t=is(o,e),n=Ia(e),s=(await ee({model:fe(),messages:[{role:"user",content:t}],temperature:.3,max_tokens:2e3,tools:[n],tool_choice:{type:"function",function:{name:"create_task_plan"}}}))?.choices?.[0]?.message?.tool_calls;if(!s||s.length===0)throw new Error("\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE function call");let i=JSON.parse(s[0].function.arguments);if(!i.steps||i.steps.length<2)throw new Error(`\u6B65\u9AA4\u6570\u91CF\u4E0D\u8DB3: ${i.steps?.length||0}`);return i}async function hu(o,e=[]){console.log(R.yellow("[\u4EFB\u52A1\u89C4\u5212] \u5C1D\u8BD5\u65B9\u68482: Markdown + Function Call \u8F6C\u6362"));let t=as(o,e),r=(await ee({model:fe(),messages:[{role:"user",content:t}],temperature:.3,max_tokens:2e3}))?.choices?.[0]?.message?.content||"";if(!r)throw new Error("\u65E0\u6CD5\u751F\u6210 Markdown \u89C4\u5212");let s=cs(r),i=Ia(e),c=(await ee({model:fe(),messages:[{role:"user",content:s}],temperature:.1,max_tokens:1500,tools:[i],tool_choice:{type:"function",function:{name:"create_task_plan"}}}))?.choices?.[0]?.message?.tool_calls;if(!c||c.length===0)throw new Error("\u65E0\u6CD5\u8F6C\u6362 Markdown \u4E3A\u7ED3\u6784\u5316\u6570\u636E");let l=JSON.parse(c[0].function.arguments);return l.markdown=r,l}function yu(o){return console.log(R.yellow("[\u4EFB\u52A1\u89C4\u5212] \u4F7F\u7528\u9ED8\u8BA4\u964D\u7EA7\u65B9\u6848")),{overview:o,steps:[{description:"\u9700\u6C42\u5206\u6790\u4E0E\u6280\u672F\u65B9\u6848\u8BBE\u8BA1",subAgent:"default"},{description:"\u6838\u5FC3\u529F\u80FD\u5B9E\u73B0",subAgent:"default"},{description:"\u6D4B\u8BD5\u9A8C\u8BC1\u4E0E\u4EE3\u7801\u4F18\u5316",subAgent:"default"}],expectedResult:"\u5B8C\u6210\u4EFB\u52A1\u7684\u6240\u6709\u6B65\u9AA4\uFF0C\u8FBE\u5230\u9884\u671F\u7684\u529F\u80FD\u76EE\u6807"}}function Cu(o){let e=o.steps.map((t,n)=>`- [ ] ${t.description}
1177
+ \u5982\u679C\u4F7F\u7528\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53(\u975Edefault)\uFF0C\u6B64\u5B57\u6BB5\u4F1A\u88AB\u5FFD\u7565\u3002`,items:{type:"string"}}},required:["description","subAgent"]},minItems:2,maxItems:4},expectedResult:{type:"string",description:"\u9884\u671F\u7ED3\u679C\uFF0C\u63CF\u8FF0\u5B8C\u6210\u540E\u7684\u9884\u671F\u6548\u679C"}},required:["overview","steps","expectedResult"]}}}async function fg(o,e=[]){se("\u5C1D\u8BD5\u65B9\u68481: Function Calling","Task");let t=As(o,e),n=xc(e),s=(await ee({model:ye(),messages:[{role:"user",content:t}],temperature:.3,max_tokens:2e3,tools:[n],tool_choice:{type:"function",function:{name:"create_task_plan"}}}))?.choices?.[0]?.message?.tool_calls;if(!s||s.length===0)throw new Error("\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE function call");let i=JSON.parse(s[0].function.arguments);if(!i.steps||i.steps.length<2)throw new Error(`\u6B65\u9AA4\u6570\u91CF\u4E0D\u8DB3: ${i.steps?.length||0}`);return i}async function hg(o,e=[]){W("\u5C1D\u8BD5\u65B9\u68482: Markdown + Function Call \u8F6C\u6362","Task");let t=Ls(o,e),r=(await ee({model:ye(),messages:[{role:"user",content:t}],temperature:.3,max_tokens:2e3,tools:[]}))?.choices?.[0]?.message?.content||"";if(!r)throw new Error("\u65E0\u6CD5\u751F\u6210 Markdown \u89C4\u5212");let s=Rs(r),i=xc(e),c=(await ee({model:ye(),messages:[{role:"user",content:s}],temperature:.1,max_tokens:1500,tools:[i],tool_choice:{type:"function",function:{name:"create_task_plan"}}}))?.choices?.[0]?.message?.tool_calls;if(!c||c.length===0)throw new Error("\u65E0\u6CD5\u8F6C\u6362 Markdown \u4E3A\u7ED3\u6784\u5316\u6570\u636E");let l=JSON.parse(c[0].function.arguments);return l.markdown=r,l}function yg(o){return W("\u4F7F\u7528\u9ED8\u8BA4\u964D\u7EA7\u65B9\u6848","Task"),{overview:o,steps:[{description:"\u9700\u6C42\u5206\u6790\u4E0E\u6280\u672F\u65B9\u6848\u8BBE\u8BA1",subAgent:"default"},{description:"\u6838\u5FC3\u529F\u80FD\u5B9E\u73B0",subAgent:"default"},{description:"\u6D4B\u8BD5\u9A8C\u8BC1\u4E0E\u4EE3\u7801\u4F18\u5316",subAgent:"default"}],expectedResult:"\u5B8C\u6210\u4EFB\u52A1\u7684\u6240\u6709\u6B65\u9AA4\uFF0C\u8FBE\u5230\u9884\u671F\u7684\u529F\u80FD\u76EE\u6807"}}function Cg(o){let e=o.steps.map((t,n)=>`- [ ] ${t.description}
1071
1178
  - \u63A8\u8350\u5B50\u667A\u80FD\u4F53: ${t.subAgent}`).join(`
1072
1179
 
1073
1180
  `);return`# \u4EFB\u52A1\u89C4\u5212
@@ -1079,29 +1186,27 @@ ${o.overview}
1079
1186
  ${e}
1080
1187
 
1081
1188
  ## \u9884\u671F\u7ED3\u679C
1082
- ${o.expectedResult}`}async function Rn(o,e=[]){if(!o||typeof o!="string")throw new Error("\u65E0\u6548\u7684\u7528\u6237\u8BF7\u6C42");console.log(R.blue("[\u4EFB\u52A1\u89C4\u5212] \u6B63\u5728\u751F\u6210\u4EFB\u52A1\u89C4\u5212..."));let t=null,n="unknown";try{t=await fu(o,e),n="Function Calling",console.log(R.green("[\u4EFB\u52A1\u89C4\u5212] \u2713 Function Calling \u65B9\u6848\u6210\u529F"))}catch(c){console.log(R.yellow(`[\u4EFB\u52A1\u89C4\u5212] Function Calling \u5931\u8D25: ${c.message}`));try{t=await hu(o,e),n="Markdown + Conversion",console.log(R.green("[\u4EFB\u52A1\u89C4\u5212] \u2713 Markdown \u8F6C\u6362\u65B9\u6848\u6210\u529F"))}catch(l){console.log(R.yellow(`[\u4EFB\u52A1\u89C4\u5212] Markdown \u8F6C\u6362\u5931\u8D25: ${l.message}`)),t=yu(o),n="Default Fallback",console.log(R.yellow("[\u4EFB\u52A1\u89C4\u5212] \u26A0 \u4F7F\u7528\u9ED8\u8BA4\u964D\u7EA7\u65B9\u6848"))}}let r=t.markdown||Cu(t),s=t.steps.map((c,l)=>({step:l+1,description:c.description,status:"pending",subAgent:c.subAgent||"default",allowedTools:c.allowedTools||void 0})),i=dr(),a={markdown:r,tasks:s,taskId:i,strategy:n};return await Su(r,i,a),console.log(R.green(`[\u4EFB\u52A1\u89C4\u5212] \u2713 \u4EFB\u52A1\u89C4\u5212\u751F\u6210\u5B8C\u6210 (\u7B56\u7565: ${n})`)),console.log(R.cyan(`[\u4EFB\u52A1\u89C4\u5212] \u5171\u5305\u542B ${s.length} \u4E2A\u4EFB\u52A1\u6B65\u9AA4`)),console.log(R.gray("\u2500".repeat(50))),console.log(r),console.log(R.gray("\u2500".repeat(50))),a}async function Su(o,e,t){let n=ve.join(process.cwd(),".nium","tasks");ye.existsSync(n)||ye.mkdirSync(n,{recursive:!0});let r=`# \u4EFB\u52A1\u89C4\u5212 (ID: ${e})
1189
+ ${o.expectedResult}`}async function Zn(o,e=[]){if(!o||typeof o!="string")throw new Error("\u65E0\u6548\u7684\u7528\u6237\u8BF7\u6C42");se("\u6B63\u5728\u751F\u6210\u4EFB\u52A1\u89C4\u5212...","Task");let t=null,n="unknown";try{t=await fg(o,e),n="Function Calling",_("Function Calling \u65B9\u6848\u6210\u529F","Task")}catch(c){W(`Function Calling \u5931\u8D25: ${c.message}`,"Task");try{t=await hg(o,e),n="Markdown + Conversion",_("Markdown \u8F6C\u6362\u65B9\u6848\u6210\u529F","Task")}catch(l){W(`Markdown \u8F6C\u6362\u5931\u8D25: ${l.message}`,"Task"),t=yg(o),n="Default Fallback",W("\u4F7F\u7528\u9ED8\u8BA4\u964D\u7EA7\u65B9\u6848","Task")}}let r=t.markdown||Cg(t),s=t.steps.map((c,l)=>({step:l+1,description:c.description,status:"pending",subAgent:c.subAgent||"default",allowedTools:c.allowedTools||void 0})),i=Rr(),a={markdown:r,tasks:s,taskId:i,strategy:n};return await xg(r,i,a),_(`\u4EFB\u52A1\u89C4\u5212\u751F\u6210\u5B8C\u6210 (\u7B56\u7565: ${n})`,"Task"),se(`\u5171\u5305\u542B ${s.length} \u4E2A\u4EFB\u52A1\u6B65\u9AA4`,"Task"),Mr(),an(r),Mr(),a}async function xg(o,e,t){let n=Pe.join(process.cwd(),".nium","tasks");Se.existsSync(n)||Se.mkdirSync(n,{recursive:!0});let r=`# \u4EFB\u52A1\u89C4\u5212 (ID: ${e})
1083
1190
 
1084
1191
  ## \u4EFB\u52A1\u6982\u8FF0
1085
1192
  ${o.substring(o.indexOf("## \u4EFB\u52A1\u6982\u8FF0")+7)}
1086
1193
 
1087
1194
  ## \u66F4\u65B0\u65F6\u95F4
1088
- ${new Date().toLocaleString()}`,s=ve.join(n,`${e}.md`);if(ye.writeFileSync(s,r,"utf8"),console.log(R.green(`[\u4EFB\u52A1\u6587\u4EF6] \u4EFB\u52A1\u89C4\u5212\u5DF2\u4FDD\u5B58\u5230: ${s}`)),t){let i={taskId:t.taskId,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),status:"pending",currentStep:0,totalSteps:t.tasks.length,strategy:t.strategy,markdown:t.markdown,tasks:t.tasks.map(c=>({step:c.step,description:c.description,status:c.status,subAgent:c.subAgent,startTime:null,endTime:null,duration:null,error:null}))},a=ve.join(n,`${e}.json`);ye.writeFileSync(a,JSON.stringify(i,null,2),"utf8"),console.log(R.green(`[\u4EFB\u52A1\u6587\u4EF6] JSON \u6570\u636E\u5DF2\u4FDD\u5B58\u5230: ${a}`))}}async function nt(o,e,t){let n=ve.join(process.cwd(),".nium","tasks"),r=ve.join(n,`${o}.md`);if(!ye.existsSync(r))return console.log(R.red(`[\u4EFB\u52A1\u66F4\u65B0] \u4EFB\u52A1\u6587\u4EF6\u4E0D\u5B58\u5728: ${r}`)),!1;try{let i=ye.readFileSync(r,"utf8").split(`
1089
- `),a=!1,c=1,l=[];for(let g of i){if(g.trim().includes("## \u6267\u884C\u6B65\u9AA4")||g.trim().includes("##\u6267\u884C\u6B65\u9AA4")){a=!0,l.push(g);continue}if(g.trim().includes("## \u66F4\u65B0\u65F6\u95F4")){l.push("## \u66F4\u65B0\u65F6\u95F4"),l.push(new Date().toLocaleString());continue}if(a&&g.trim().startsWith("##")&&!g.trim().includes("\u66F4\u65B0\u65F6\u95F4")){a=!1,l.push(g);continue}if(a){let p=g.trim().match(/^-\s*\[(.)\]\s*(.+)/);if(p&&c===e){let u=" ";t==="in_progress"&&(u="-"),t==="completed"&&(u="x"),l.push(`- [${u}] ${p[2]}`),c++;continue}p&&c++}l.push(g)}return ye.writeFileSync(r,l.join(`
1090
- `),"utf8"),console.log(R.green(`[\u4EFB\u52A1\u66F4\u65B0] \u4EFB\u52A1 ${o} \u6B65\u9AA4 ${e} \u72B6\u6001\u5DF2\u66F4\u65B0\u4E3A ${t}`)),!0}catch(s){return console.log(R.red(`[\u4EFB\u52A1\u66F4\u65B0] \u66F4\u65B0\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: ${s.message}`)),!1}}function xu(o){let e=ve.join(process.cwd(),".nium","tasks");return ve.join(e,`${o}.md`)}function wu(o){let e=ve.join(process.cwd(),".nium","tasks"),t=ve.join(e,`${o}.json`);if(!ye.existsSync(t))return console.log(R.red(`[\u4EFB\u52A1\u52A0\u8F7D] \u4EFB\u52A1\u6587\u4EF6\u4E0D\u5B58\u5728: ${t}`)),null;try{let n=ye.readFileSync(t,"utf8"),r=JSON.parse(n);return console.log(R.green(`[\u4EFB\u52A1\u52A0\u8F7D] \u6210\u529F\u52A0\u8F7D\u4EFB\u52A1: ${o}`)),r}catch(n){return console.log(R.red(`[\u4EFB\u52A1\u52A0\u8F7D] \u89E3\u6790\u4EFB\u52A1\u6587\u4EF6\u5931\u8D25: ${n.message}`)),null}}function vu(){let o=ve.join(process.cwd(),".nium","tasks");return ye.existsSync(o)?ye.readdirSync(o).filter(n=>n.endsWith(".json")).map(n=>n.replace(".json","")):[]}function Dn(o){if(!o||!o.tasks||o.tasks.length===0)return"\u65E0\u6709\u6548\u4EFB\u52A1\u6B65\u9AA4";let e=R.cyan(`
1091
- \u{1F4CB} \u4EFB\u52A1\u89C4\u5212\u6458\u8981:
1092
- `);e+=R.gray("\u2500".repeat(50))+`
1093
- `;for(let t of o.tasks){let n=t.subAgent!=="default"?R.green(`[${t.subAgent}]`):R.gray("[\u9ED8\u8BA4\u667A\u80FD\u4F53]");e+=`${t.step}. ${t.description} ${n}
1094
- `}return e+=R.gray("\u2500".repeat(50)),e}var Ar,be=S(()=>{ae();Ce();fr();tt();Ar={SIMPLE:"simple",COMPLEX:"complex"}});function On(o,e={format:"markdown"}){let{format:t,maxSections:n=100,detailed:r=!0,customTitle:s}=e;switch(t){case"markdown":return Aa(o,r,s);case"text":return bu(o,r);case"summary":return Tu(o,n);default:return Aa(o,r,s)}}function Aa(o,e,t){let n=[];return n.push(t||`# \u9879\u76EE\u7ED3\u6784\u4FE1\u606F
1095
- `),ku(n,o,e),Pu(n,o,e),$u(n,o,e),Eu(n,o,e),Mu(n,o,e),Iu(n,o,e),Au(n,o,e),n.length<=1?"\u6682\u65E0\u8BE6\u7EC6\u9879\u76EE\u7ED3\u6784\u4FE1\u606F\u3002":n.join(`
1096
- `)}function bu(o,e){let t=[];if(t.push("\u{1F4CA} \u9879\u76EE\u57FA\u7840\u4FE1\u606F\u6458\u8981"),t.push("\u2550".repeat(50)),t.push(""),t.push(`\u{1F4E6} \u9879\u76EE\u540D\u79F0: ${o.projectName||"\u672A\u77E5"}`),t.push(`\u{1F4CC} \u7248\u672C: ${o.version||"\u672A\u77E5"}`),o.description&&t.push(`\u{1F4DD} \u63CF\u8FF0: ${o.description}`),t.push(""),t.push(`\u{1F310} \u4E3B\u8981\u8BED\u8A00: ${o.primaryLanguage||"\u672A\u77E5"}`),o.buildTool&&t.push(`\u{1F527} \u6784\u5EFA\u5DE5\u5177: ${o.buildTool}`),o.packageManager&&t.push(`\u{1F4E6} \u5305\u7BA1\u7406\u5668: ${o.packageManager}`),o.runtime&&t.push(`\u2699\uFE0F \u8FD0\u884C\u65F6: ${o.runtime}`),t.push(""),o.fileStats){t.push("\u{1F4C1} \u6587\u4EF6\u7EDF\u8BA1:");let n=o.fileStats;t.push(` \u603B\u6587\u4EF6\u6570: ${n.totalFiles||0}`),t.push(` \u6E90\u4EE3\u7801\u6587\u4EF6: ${n.sourceFiles||0}`),t.push(` \u914D\u7F6E\u6587\u4EF6: ${n.configFiles||0}`),t.push(` \u6587\u6863\u6587\u4EF6: ${n.docFiles||0}`),t.push(` \u6D4B\u8BD5\u6587\u4EF6: ${n.testFiles||0}`),t.push("")}return o.dependencyCount&&(t.push("\u{1F4DA} \u4F9D\u8D56\u7EDF\u8BA1:"),t.push(` \u751F\u4EA7\u4F9D\u8D56: ${o.dependencyCount.production||0} \u4E2A`),t.push(` \u5F00\u53D1\u4F9D\u8D56: ${o.dependencyCount.development||0} \u4E2A`),t.push("")),o.languages&&o.languages.length>0&&(t.push("\u{1F30D} \u8BED\u8A00\u5206\u5E03:"),o.languages.slice(0,5).forEach(n=>{t.push(` ${n.language}: ${n.count} \u4E2A\u6587\u4EF6 (${n.percentage})`)}),t.push("")),t.join(`
1097
- `)}function Tu(o,e){let t=[],n=0;if((o.projectName||o.version||o.description)&&(o.projectName&&t.push(`**\u9879\u76EE\u540D\u79F0**: ${o.projectName}`),o.version&&t.push(`**\u7248\u672C**: ${o.version}`),o.description&&t.push(`**\u63CF\u8FF0**: ${o.description}`),n++),n>=e||((o.primaryLanguage||o.buildTool)&&(t.push(""),o.primaryLanguage&&t.push(`**\u4E3B\u8981\u8BED\u8A00**: ${o.primaryLanguage}`),o.buildTool&&t.push(`**\u6784\u5EFA\u5DE5\u5177**: ${o.buildTool}`),o.packageManager&&t.push(`**\u5305\u7BA1\u7406\u5668**: ${o.packageManager}`),o.runtime&&t.push(`**\u8FD0\u884C\u65F6**: ${o.runtime}`),n++),n>=e))return t.join(`
1195
+ ${new Date().toLocaleString()}`,s=Pe.join(n,`${e}.md`);if(Se.writeFileSync(s,r,"utf8"),_(`\u4EFB\u52A1\u89C4\u5212\u5DF2\u4FDD\u5B58\u5230: ${s}`,"Task"),t){let i={taskId:t.taskId,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),status:"pending",currentStep:0,totalSteps:t.tasks.length,strategy:t.strategy,markdown:t.markdown,tasks:t.tasks.map(c=>({step:c.step,description:c.description,status:c.status,subAgent:c.subAgent,startTime:null,endTime:null,duration:null,error:null}))},a=Pe.join(n,`${e}.json`);Se.writeFileSync(a,JSON.stringify(i,null,2),"utf8"),_(`JSON \u6570\u636E\u5DF2\u4FDD\u5B58\u5230: ${a}`,"Task")}}async function at(o,e,t){let n=Pe.join(process.cwd(),".nium","tasks"),r=Pe.join(n,`${o}.md`);if(!Se.existsSync(r))return ke(`\u4EFB\u52A1\u6587\u4EF6\u4E0D\u5B58\u5728: ${r}`,"Task"),!1;try{let i=Se.readFileSync(r,"utf8").split(`
1196
+ `),a=!1,c=1,l=[];for(let u of i){if(u.trim().includes("## \u6267\u884C\u6B65\u9AA4")||u.trim().includes("##\u6267\u884C\u6B65\u9AA4")){a=!0,l.push(u);continue}if(u.trim().includes("## \u66F4\u65B0\u65F6\u95F4")){l.push("## \u66F4\u65B0\u65F6\u95F4"),l.push(new Date().toLocaleString());continue}if(a&&u.trim().startsWith("##")&&!u.trim().includes("\u66F4\u65B0\u65F6\u95F4")){a=!1,l.push(u);continue}if(a){let p=u.trim().match(/^-\s*\[(.)\]\s*(.+)/);if(p&&c===e){let g=" ";t==="in_progress"&&(g="-"),t==="completed"&&(g="x"),l.push(`- [${g}] ${p[2]}`),c++;continue}p&&c++}l.push(u)}return Se.writeFileSync(r,l.join(`
1197
+ `),"utf8"),_(`\u4EFB\u52A1 ${o} \u6B65\u9AA4 ${e} \u72B6\u6001\u5DF2\u66F4\u65B0\u4E3A ${t}`,"Task"),!0}catch(s){return ke(`\u66F4\u65B0\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: ${s.message}`,"Task"),!1}}function Sg(o){let e=Pe.join(process.cwd(),".nium","tasks");return Pe.join(e,`${o}.md`)}function vg(o){let e=Pe.join(process.cwd(),".nium","tasks"),t=Pe.join(e,`${o}.json`);if(!Se.existsSync(t))return ke(`\u4EFB\u52A1\u6587\u4EF6\u4E0D\u5B58\u5728: ${t}`,"Task"),null;try{let n=Se.readFileSync(t,"utf8"),r=JSON.parse(n);return _(`\u6210\u529F\u52A0\u8F7D\u4EFB\u52A1: ${o}`,"Task"),r}catch(n){return ke(`\u89E3\u6790\u4EFB\u52A1\u6587\u4EF6\u5931\u8D25: ${n.message}`,"Task"),null}}function wg(){let o=Pe.join(process.cwd(),".nium","tasks");return Se.existsSync(o)?Se.readdirSync(o).filter(n=>n.endsWith(".json")).map(n=>n.replace(".json","")):[]}function er(o){if(!o||!o.tasks||o.tasks.length===0)return"\u65E0\u6709\u6548\u4EFB\u52A1\u6B65\u9AA4";let e=[];e.push(`
1198
+ \u4EFB\u52A1\u89C4\u5212\u6458\u8981:`),e.push("\u2500".repeat(50));for(let t of o.tasks){let n=t.subAgent!=="default"?`[${t.subAgent}]`:"[\u9ED8\u8BA4\u667A\u80FD\u4F53]";e.push(`${t.step}. ${t.description} ${n}`)}return e.push("\u2500".repeat(50)),e.join(`
1199
+ `)}var xe,$e=C(()=>{le();ve();Dr();it();cn();xe={SIMPLE:"simple",COMPLEX:"complex"}});function tr(o,e={format:"markdown"}){let{format:t,maxSections:n=100,detailed:r=!0,customTitle:s}=e;switch(t){case"markdown":return Sc(o,r,s);case"text":return bg(o,r);case"summary":return Tg(o,n);default:return Sc(o,r,s)}}function Sc(o,e,t){let n=[];return n.push(t||`# \u9879\u76EE\u7ED3\u6784\u4FE1\u606F
1200
+ `),kg(n,o,e),Eg(n,o,e),Pg(n,o,e),$g(n,o,e),Mg(n,o,e),Ig(n,o,e),Ag(n,o,e),n.length<=1?"\u6682\u65E0\u8BE6\u7EC6\u9879\u76EE\u7ED3\u6784\u4FE1\u606F\u3002":n.join(`
1201
+ `)}function bg(o,e){let t=[];if(t.push("\u{1F4CA} \u9879\u76EE\u57FA\u7840\u4FE1\u606F\u6458\u8981"),t.push("\u2550".repeat(50)),t.push(""),t.push(`\u{1F4E6} \u9879\u76EE\u540D\u79F0: ${o.projectName||"\u672A\u77E5"}`),t.push(`\u{1F4CC} \u7248\u672C: ${o.version||"\u672A\u77E5"}`),o.description&&t.push(`\u{1F4DD} \u63CF\u8FF0: ${o.description}`),t.push(""),t.push(`\u{1F310} \u4E3B\u8981\u8BED\u8A00: ${o.primaryLanguage||"\u672A\u77E5"}`),o.buildTool&&t.push(`\u{1F527} \u6784\u5EFA\u5DE5\u5177: ${o.buildTool}`),o.packageManager&&t.push(`\u{1F4E6} \u5305\u7BA1\u7406\u5668: ${o.packageManager}`),o.runtime&&t.push(`\u2699\uFE0F \u8FD0\u884C\u65F6: ${o.runtime}`),t.push(""),o.fileStats){t.push("\u{1F4C1} \u6587\u4EF6\u7EDF\u8BA1:");let n=o.fileStats;t.push(` \u603B\u6587\u4EF6\u6570: ${n.totalFiles||0}`),t.push(` \u6E90\u4EE3\u7801\u6587\u4EF6: ${n.sourceFiles||0}`),t.push(` \u914D\u7F6E\u6587\u4EF6: ${n.configFiles||0}`),t.push(` \u6587\u6863\u6587\u4EF6: ${n.docFiles||0}`),t.push(` \u6D4B\u8BD5\u6587\u4EF6: ${n.testFiles||0}`),t.push("")}return o.dependencyCount&&(t.push("\u{1F4DA} \u4F9D\u8D56\u7EDF\u8BA1:"),t.push(` \u751F\u4EA7\u4F9D\u8D56: ${o.dependencyCount.production||0} \u4E2A`),t.push(` \u5F00\u53D1\u4F9D\u8D56: ${o.dependencyCount.development||0} \u4E2A`),t.push("")),o.languages&&o.languages.length>0&&(t.push("\u{1F30D} \u8BED\u8A00\u5206\u5E03:"),o.languages.slice(0,5).forEach(n=>{t.push(` ${n.language}: ${n.count} \u4E2A\u6587\u4EF6 (${n.percentage})`)}),t.push("")),t.join(`
1202
+ `)}function Tg(o,e){let t=[],n=0;if((o.projectName||o.version||o.description)&&(o.projectName&&t.push(`**\u9879\u76EE\u540D\u79F0**: ${o.projectName}`),o.version&&t.push(`**\u7248\u672C**: ${o.version}`),o.description&&t.push(`**\u63CF\u8FF0**: ${o.description}`),n++),n>=e||((o.primaryLanguage||o.buildTool)&&(t.push(""),o.primaryLanguage&&t.push(`**\u4E3B\u8981\u8BED\u8A00**: ${o.primaryLanguage}`),o.buildTool&&t.push(`**\u6784\u5EFA\u5DE5\u5177**: ${o.buildTool}`),o.packageManager&&t.push(`**\u5305\u7BA1\u7406\u5668**: ${o.packageManager}`),o.runtime&&t.push(`**\u8FD0\u884C\u65F6**: ${o.runtime}`),n++),n>=e))return t.join(`
1098
1203
  `);if(o.fileStats){t.push("");let r=o.fileStats;r.totalFiles&&t.push(`**\u603B\u6587\u4EF6\u6570**: ${r.totalFiles}`),r.sourceFiles&&t.push(`**\u6E90\u6587\u4EF6**: ${r.sourceFiles}`),r.configFiles&&t.push(`**\u914D\u7F6E\u6587\u4EF6**: ${r.configFiles}`),r.testFiles&&t.push(`**\u6D4B\u8BD5\u6587\u4EF6**: ${r.testFiles}`),n++}return n>=e||(o.languages&&o.languages.length>0&&(t.push(""),t.push("**\u8BED\u8A00\u5206\u5E03**:"),o.languages.slice(0,5).forEach(r=>{t.push(`- ${r.language}: ${r.percentage}%`)}),n++),n>=e)||(o.dependencies&&Object.keys(o.dependencies).length>0&&(t.push(""),t.push("**\u4E3B\u8981\u4F9D\u8D56**:"),Object.entries(o.dependencies).slice(0,5).forEach(([s,i])=>{t.push(`- ${s}: ${i}`)}),n++),n>=e)?t.join(`
1099
1204
  `):(o.codeStandards&&o.codeStandards.length>0&&(t.push(""),t.push("**\u4EE3\u7801\u89C4\u8303**:"),o.codeStandards.slice(0,3).forEach(r=>{t.push(`- ${r}`)})),t.length>0?t.join(`
1100
- `):"\u6682\u65E0\u9879\u76EE\u4FE1\u606F\u3002")}function ku(o,e,t){!e.projectName&&!e.version&&!e.description||(o.push("## \u9879\u76EE\u57FA\u672C\u4FE1\u606F"),e.projectName&&o.push(`**\u9879\u76EE\u540D\u79F0**: ${e.projectName}`),e.version&&o.push(`**\u7248\u672C**: ${e.version}`),e.description&&o.push(`**\u63CF\u8FF0**: ${e.description}`),o.push(""))}function Pu(o,e,t){!e.primaryLanguage&&!e.buildTool&&!e.packageManager&&!e.runtime||(o.push("## \u6280\u672F\u6808\u4FE1\u606F"),e.primaryLanguage&&o.push(`**\u4E3B\u8981\u7F16\u7A0B\u8BED\u8A00**: ${e.primaryLanguage}`),e.buildTool&&o.push(`**\u6784\u5EFA\u5DE5\u5177**: ${e.buildTool}`),e.packageManager&&o.push(`**\u5305\u7BA1\u7406\u5668**: ${e.packageManager}`),e.runtime&&o.push(`**\u8FD0\u884C\u65F6**: ${e.runtime}`),o.push(""))}function $u(o,e,t){if(!e.fileStats)return;let n=e.fileStats;o.push("## \u6587\u4EF6\u7EDF\u8BA1"),n.totalFiles&&o.push(`- **\u603B\u6587\u4EF6\u6570**: ${n.totalFiles}`),n.sourceFiles&&o.push(`- **\u6E90\u6587\u4EF6**: ${n.sourceFiles}`),n.configFiles&&o.push(`- **\u914D\u7F6E\u6587\u4EF6**: ${n.configFiles}`),n.docFiles&&o.push(`- **\u6587\u6863\u6587\u4EF6**: ${n.docFiles}`),n.testFiles&&o.push(`- **\u6D4B\u8BD5\u6587\u4EF6**: ${n.testFiles}`),o.push("")}function Eu(o,e,t){!e.languages||e.languages.length===0||(o.push("## \u7F16\u7A0B\u8BED\u8A00\u5206\u6790"),t?e.languages.forEach(n=>{o.push(`- **${n.language}**: ${n.count} \u4E2A\u6587\u4EF6 (${n.percentage}%)`)}):e.languages.slice(0,5).forEach(n=>{o.push(`- **${n.language}**: ${n.percentage}%`)}),o.push(""))}function Mu(o,e,t){let n=e.dependencies&&Object.keys(e.dependencies).length>0,r=e.devDependencies&&Object.keys(e.devDependencies).length>0;!n&&!r||(o.push("## \u4F9D\u8D56\u5173\u7CFB"),n&&(o.push("### \u751F\u4EA7\u4F9D\u8D56"),(t?Object.entries(e.dependencies):Object.entries(e.dependencies).slice(0,10)).forEach(([i,a])=>{o.push(`- **${i}**: ${a}`)}),!t&&Object.keys(e.dependencies).length>10&&o.push(`
1205
+ `):"\u6682\u65E0\u9879\u76EE\u4FE1\u606F\u3002")}function kg(o,e,t){!e.projectName&&!e.version&&!e.description||(o.push("## \u9879\u76EE\u57FA\u672C\u4FE1\u606F"),e.projectName&&o.push(`**\u9879\u76EE\u540D\u79F0**: ${e.projectName}`),e.version&&o.push(`**\u7248\u672C**: ${e.version}`),e.description&&o.push(`**\u63CF\u8FF0**: ${e.description}`),o.push(""))}function Eg(o,e,t){!e.primaryLanguage&&!e.buildTool&&!e.packageManager&&!e.runtime||(o.push("## \u6280\u672F\u6808\u4FE1\u606F"),e.primaryLanguage&&o.push(`**\u4E3B\u8981\u7F16\u7A0B\u8BED\u8A00**: ${e.primaryLanguage}`),e.buildTool&&o.push(`**\u6784\u5EFA\u5DE5\u5177**: ${e.buildTool}`),e.packageManager&&o.push(`**\u5305\u7BA1\u7406\u5668**: ${e.packageManager}`),e.runtime&&o.push(`**\u8FD0\u884C\u65F6**: ${e.runtime}`),o.push(""))}function Pg(o,e,t){if(!e.fileStats)return;let n=e.fileStats;o.push("## \u6587\u4EF6\u7EDF\u8BA1"),n.totalFiles&&o.push(`- **\u603B\u6587\u4EF6\u6570**: ${n.totalFiles}`),n.sourceFiles&&o.push(`- **\u6E90\u6587\u4EF6**: ${n.sourceFiles}`),n.configFiles&&o.push(`- **\u914D\u7F6E\u6587\u4EF6**: ${n.configFiles}`),n.docFiles&&o.push(`- **\u6587\u6863\u6587\u4EF6**: ${n.docFiles}`),n.testFiles&&o.push(`- **\u6D4B\u8BD5\u6587\u4EF6**: ${n.testFiles}`),o.push("")}function $g(o,e,t){!e.languages||e.languages.length===0||(o.push("## \u7F16\u7A0B\u8BED\u8A00\u5206\u6790"),t?e.languages.forEach(n=>{o.push(`- **${n.language}**: ${n.count} \u4E2A\u6587\u4EF6 (${n.percentage}%)`)}):e.languages.slice(0,5).forEach(n=>{o.push(`- **${n.language}**: ${n.percentage}%`)}),o.push(""))}function Mg(o,e,t){let n=e.dependencies&&Object.keys(e.dependencies).length>0,r=e.devDependencies&&Object.keys(e.devDependencies).length>0;!n&&!r||(o.push("## \u4F9D\u8D56\u5173\u7CFB"),n&&(o.push("### \u751F\u4EA7\u4F9D\u8D56"),(t?Object.entries(e.dependencies):Object.entries(e.dependencies).slice(0,10)).forEach(([i,a])=>{o.push(`- **${i}**: ${a}`)}),!t&&Object.keys(e.dependencies).length>10&&o.push(`
1101
1206
  *...\u8FD8\u6709 ${Object.keys(e.dependencies).length-10} \u4E2A\u4F9D\u8D56*`),o.push("")),r&&(o.push("### \u5F00\u53D1\u4F9D\u8D56"),(t?Object.entries(e.devDependencies):Object.entries(e.devDependencies).slice(0,10)).forEach(([i,a])=>{o.push(`- **${i}**: ${a}`)}),!t&&Object.keys(e.devDependencies).length>10&&o.push(`
1102
- *...\u8FD8\u6709 ${Object.keys(e.devDependencies).length-10} \u4E2A\u4F9D\u8D56*`),o.push("")))}function Iu(o,e,t){if(!e.entryPoints||e.entryPoints.length===0)return;o.push("## \u5165\u53E3\u6587\u4EF6"),(t?e.entryPoints:e.entryPoints.slice(0,5)).forEach(r=>{o.push(`- \`${r}\``)}),!t&&e.entryPoints.length>5&&o.push(`
1103
- *...\u8FD8\u6709 ${e.entryPoints.length-5} \u4E2A\u5165\u53E3\u6587\u4EF6*`),o.push("")}function Au(o,e,t){if(!e.codeStandards||e.codeStandards.length===0)return;o.push("## \u4EE3\u7801\u89C4\u8303"),(t?e.codeStandards:e.codeStandards.slice(0,5)).forEach(r=>{o.push(`- ${r}`)}),!t&&e.codeStandards.length>5&&o.push(`
1104
- *...\u8FD8\u6709 ${e.codeStandards.length-5} \u4E2A\u89C4\u8303*`),o.push("")}var Lr=S(()=>{});import*as Ft from"os";var Fe,je,_e,Ne,La=S(()=>{Y();Lr();Fe=class{originalTask;plan;stepSummaries;sharedState;stepDependencies;explorationHistory;constructor(){this.originalTask=null,this.plan={tasks:[],currentStep:0,totalSteps:0},this.stepSummaries=new Map,this.sharedState={projectInfo:null,rules:null,dependencies:null,recentFiles:[],knownIssues:[]},this.stepDependencies=new Map,this.explorationHistory=null}initializeTask(e,t){this.originalTask=e,this.plan={tasks:t.tasks||[],currentStep:0,totalSteps:t.tasks?.length||0},$(`\u5168\u5C40\u4E0A\u4E0B\u6587\u521D\u59CB\u5316: ${this.plan.totalSteps} \u4E2A\u6B65\u9AA4`)}recordStepCompletion(e,t,n={}){this.stepSummaries.set(e,{summary:t,metadata:n,timestamp:new Date().toISOString()}),C(`\u6B65\u9AA4 ${e} \u6458\u8981\u5DF2\u8BB0\u5F55: ${t.substring(0,50)}...`)}getStepSummary(e){return this.stepSummaries.get(e)}updateSharedState(e,t){this.sharedState.hasOwnProperty(e)?(this.sharedState[e]=t,C(`\u5171\u4EAB\u72B6\u6001\u66F4\u65B0: ${e}`)):C(`\u8B66\u544A: \u672A\u77E5\u7684\u5171\u4EAB\u72B6\u6001\u952E: ${e}`)}addRecentFile(e){this.sharedState.recentFiles.unshift(e),this.sharedState.recentFiles.length>10&&this.sharedState.recentFiles.pop()}setStepDependencies(e,t){this.stepDependencies.set(e,t)}getCompactSummary(){return{task:this.originalTask,progress:`${this.plan.currentStep}/${this.plan.totalSteps}`,completedSteps:Array.from(this.stepSummaries.keys()),recentFiles:this.sharedState.recentFiles.slice(0,5)}}getPlan(){return this.plan}setCurrentStep(e){this.plan.currentStep=e}getSharedState(){return this.sharedState}getStepDependencies(){return this.stepDependencies}getOriginalTask(){return this.originalTask}recordExplorationResult(e){let t=e.length>200?e.substring(0,200)+"...":e;this.explorationHistory={timestamp:Date.now(),content:e,summary:t},$("\u5DF2\u8BB0\u5F55\u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5230\u5168\u5C40\u4E0A\u4E0B\u6587")}getExplorationHistory(){return this.explorationHistory}},je=class{globalContext;constructor(e){this.globalContext=e}async selectRelevantHistory(e,t,n){let r=[],s=this.globalContext.getStepDependencies().get(e)||[];for(let c of s){let l=this.globalContext.getStepSummary(c);l&&r.push({stepId:c,type:"dependency",content:l.summary,metadata:l.metadata})}let i=this.getRecentCompletedSteps(3);for(let c of i)if(!s.includes(c)){let l=this.globalContext.getStepSummary(c);l&&this.isLikelyRelevant(l.summary,t)&&r.push({stepId:c,type:"recent",content:l.summary,metadata:l.metadata})}if(n==="explorer")C("\u8DF3\u8FC7\u63A2\u7D22\u5386\u53F2\u6CE8\u5165 (\u5F53\u524D\u4E3A explorer \u667A\u80FD\u4F53)");else{let c=this.globalContext.getExplorationHistory();c&&(r.push({stepId:0,type:"exploration",content:c.content,metadata:{timestamp:c.timestamp,summary:c.summary}}),C(`\u5DF2\u6DFB\u52A0\u63A2\u7D22\u5386\u53F2\u5230\u4E0A\u4E0B\u6587 (\u667A\u80FD\u4F53: ${n||"unknown"})`))}return C(`\u4E3A\u6B65\u9AA4 ${e} \u9009\u62E9\u4E86 ${r.length} \u6761\u76F8\u5173\u5386\u53F2`),r}getRecentCompletedSteps(e){return Array.from(this.globalContext.getStepDependencies().keys()).slice(-e)}isLikelyRelevant(e,t){let n=a=>a.toLowerCase().split(/\s+/).filter(c=>c.length>3).slice(0,10),r=new Set(n(e));return n(t).filter(a=>r.has(a)).length>=2}async selectRelevantHistoryWithLLM(e,t,n){let{MODEL:r}=await Promise.resolve().then(()=>(ae(),yt)),{callModelAPI:s}=await Promise.resolve().then(()=>(Ce(),jt)),i=Array.from(this.globalContext.getStepDependencies().entries()).map(([c,l])=>{let g=this.globalContext.getStepSummary(c);return g?`\u6B65\u9AA4${c}: ${g.summary}`:""}).filter(Boolean).join(`
1207
+ *...\u8FD8\u6709 ${Object.keys(e.devDependencies).length-10} \u4E2A\u4F9D\u8D56*`),o.push("")))}function Ig(o,e,t){if(!e.entryPoints||e.entryPoints.length===0)return;o.push("## \u5165\u53E3\u6587\u4EF6"),(t?e.entryPoints:e.entryPoints.slice(0,5)).forEach(r=>{o.push(`- \`${r}\``)}),!t&&e.entryPoints.length>5&&o.push(`
1208
+ *...\u8FD8\u6709 ${e.entryPoints.length-5} \u4E2A\u5165\u53E3\u6587\u4EF6*`),o.push("")}function Ag(o,e,t){if(!e.codeStandards||e.codeStandards.length===0)return;o.push("## \u4EE3\u7801\u89C4\u8303"),(t?e.codeStandards:e.codeStandards.slice(0,5)).forEach(r=>{o.push(`- ${r}`)}),!t&&e.codeStandards.length>5&&o.push(`
1209
+ *...\u8FD8\u6709 ${e.codeStandards.length-5} \u4E2A\u89C4\u8303*`),o.push("")}var ro=C(()=>{});import*as Jt from"os";var Ve,ze,He,Je,vc=C(()=>{Y();ro();Ve=class{originalTask;plan;stepSummaries;sharedState;stepDependencies;explorationHistory;constructor(){this.originalTask=null,this.plan={tasks:[],currentStep:0,totalSteps:0},this.stepSummaries=new Map,this.sharedState={projectInfo:null,rules:null,dependencies:null,recentFiles:[],knownIssues:[]},this.stepDependencies=new Map,this.explorationHistory=null}initializeTask(e,t){this.originalTask=e,this.plan={tasks:t.tasks||[],currentStep:0,totalSteps:t.tasks?.length||0},M(`\u5168\u5C40\u4E0A\u4E0B\u6587\u521D\u59CB\u5316: ${this.plan.totalSteps} \u4E2A\u6B65\u9AA4`)}recordStepCompletion(e,t,n={},r){this.stepSummaries.set(e,{summary:t,metadata:n,timestamp:new Date().toISOString()}),r&&r.buildHistoryIndex(e,t,n),x(`\u6B65\u9AA4 ${e} \u6458\u8981\u5DF2\u8BB0\u5F55: ${t.substring(0,50)}...`)}getStepSummary(e){return this.stepSummaries.get(e)}updateSharedState(e,t){this.sharedState.hasOwnProperty(e)?(this.sharedState[e]=t,x(`\u5171\u4EAB\u72B6\u6001\u66F4\u65B0: ${e}`)):x(`\u8B66\u544A: \u672A\u77E5\u7684\u5171\u4EAB\u72B6\u6001\u952E: ${e}`)}addRecentFile(e){this.sharedState.recentFiles.unshift(e),this.sharedState.recentFiles.length>10&&this.sharedState.recentFiles.pop()}setStepDependencies(e,t){this.stepDependencies.set(e,t)}getCompactSummary(){return{task:this.originalTask,progress:`${this.plan.currentStep}/${this.plan.totalSteps}`,completedSteps:Array.from(this.stepSummaries.keys()),recentFiles:this.sharedState.recentFiles.slice(0,5)}}getPlan(){return this.plan}setCurrentStep(e){this.plan.currentStep=e}getSharedState(){return this.sharedState}getStepDependencies(){return this.stepDependencies}getOriginalTask(){return this.originalTask}recordExplorationResult(e){let t=e.length>200?e.substring(0,200)+"...":e;this.explorationHistory={timestamp:Date.now(),content:e,summary:t},M("\u5DF2\u8BB0\u5F55\u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5230\u5168\u5C40\u4E0A\u4E0B\u6587")}getExplorationHistory(){return this.explorationHistory}},ze=class{globalContext;historyIndex=new Map;constructor(e){this.globalContext=e}async selectRelevantHistory(e,t,n){let r=[],s=new Set,i=this.calculateTargetHistoryCount(t),a=Math.min(i*2,20);x(`\u4EFB\u52A1\u590D\u6742\u5EA6\u5206\u6790: \u76EE\u6807\u5386\u53F2\u6570\u91CF=${i}, \u6700\u5927\u7D22\u5F15\u7ED3\u679C=${a}`);let c=this.globalContext.getStepDependencies().get(e)||[];for(let g of c){let d=this.globalContext.getStepSummary(g);d&&(r.push({stepId:g,type:"dependency",content:d.summary,metadata:d.metadata}),s.add(g))}let l=this.findRelevantStepsWithIndex(t,a);for(let g of l){if(s.has(g)||g>=e)continue;let d=this.globalContext.getStepSummary(g);if(d&&(r.push({stepId:g,type:"recent",content:d.summary,metadata:d.metadata}),s.add(g),r.length>=i))break}let u=Math.max(3,Math.floor(i/2));if(r.length<u){let g=this.getRecentCompletedSteps(i);for(let d of g){if(s.has(d)||d>=e)continue;let m=this.globalContext.getStepSummary(d);if(m&&(r.push({stepId:d,type:"recent",content:m.summary,metadata:m.metadata}),s.add(d),r.length>=u))break}}if(n==="explorer")x("\u8DF3\u8FC7\u63A2\u7D22\u5386\u53F2\u6CE8\u5165 (\u5F53\u524D\u4E3A explorer \u667A\u80FD\u4F53)");else{let g=this.globalContext.getExplorationHistory();g&&(r.push({stepId:0,type:"exploration",content:g.content,metadata:{timestamp:g.timestamp,summary:g.summary}}),x(`\u5DF2\u6DFB\u52A0\u63A2\u7D22\u5386\u53F2\u5230\u4E0A\u4E0B\u6587 (\u667A\u80FD\u4F53: ${n||"unknown"})`))}return x(`\u4E3A\u6B65\u9AA4 ${e} \u9009\u62E9\u4E86 ${r.length} \u6761\u76F8\u5173\u5386\u53F2 (\u4F7F\u7528\u7D22\u5F15\u4F18\u5316)`),r}getRecentCompletedSteps(e){return Array.from(this.globalContext.getStepDependencies().keys()).slice(-e)}calculateTargetHistoryCount(e){let t=5;e.length>300?t+=5:e.length>150?t+=3:e.length>80&&(t+=1);let n=["\u91CD\u6784","refactor","\u4F18\u5316","optimize","\u8BBE\u8BA1","design","\u67B6\u6784","architecture","\u5B9E\u73B0","implement","\u5F00\u53D1","develop","\u96C6\u6210","integrate","\u8FC1\u79FB","migrate","\u4FEE\u590D","fix","\u8C03\u8BD5","debug","\u5206\u6790","analyze","\u8BC4\u4F30","evaluate"],r=["\u8BFB\u53D6","read","\u67E5\u770B","view","\u663E\u793A","display","\u6253\u5370","print","\u5217\u51FA","list","\u67E5\u627E","find","\u641C\u7D22","search"],s=e.toLowerCase(),i=n.filter(u=>s.includes(u)).length;t+=i*2;let a=r.filter(u=>s.includes(u)).length;t-=a;let c=e.match(/\.(ts|js|tsx|jsx|py|java|go|rs|cpp|c|h|md|json|yaml|yml)/gi);c&&c.length>3?t+=3:c&&c.length>1&&(t+=1);let l=e.match(/模块|组件|系统|服务|module|component|system|service/gi);return l&&l.length>2&&(t+=2),Math.max(5,Math.min(t,20))}buildHistoryIndex(e,t,n){let r=this.extractKeywords(t);n&&(n.toolsUsed&&Array.isArray(n.toolsUsed)&&n.toolsUsed.forEach(i=>{i&&i.length>0&&r.push(i.toLowerCase())}),n.filesAccessed&&Array.isArray(n.filesAccessed)&&n.filesAccessed.forEach(i=>{if(i){let a=i.split(/[/\\]/).pop()?.split(".")[0];a&&a.length>2&&r.push(a.toLowerCase()),i.split(/[/\\]/).filter(l=>l&&l.length>2).forEach(l=>{["src","dist","node_modules","test","tests","lib","bin"].includes(l.toLowerCase())||r.push(l.toLowerCase())})}}));let s=[...new Set(r)];s.forEach(i=>{this.historyIndex.has(i)||this.historyIndex.set(i,new Set),this.historyIndex.get(i).add(e)}),x(`\u4E3A\u6B65\u9AA4 ${e} \u6784\u5EFA\u4E86\u7D22\u5F15\uFF0C\u5305\u542B ${s.length} \u4E2A\u5173\u952E\u8BCD\uFF08\u6458\u8981: ${r.length-(s.length-r.length)}, \u5143\u6570\u636E: ${s.length-r.length}\uFF09`)}extractKeywords(e){let t=this.getStopWords();return e.toLowerCase().replace(/[^\w\s\u4e00-\u9fa5]/g," ").split(/[\s\u3000]+/).filter(n=>n.length<2?!1:!t.has(n)).slice(0,20)}getStopWords(){return new Set(["the","is","at","which","on","and","or","but","in","with","to","for","of","a","an","as","by","from","has","have","had","be","been","being","are","was","were","will","would","should","could","may","might","can","do","does","did","done","this","that","these","those","it","its","they","them","their","we","our","you","your","he","she","his","her","him","me","my","i","am","not","no","yes","all","any","some","each","every","both","few","more","most","into","through","during","before","after","above","below","up","down","out","off","over","under","again","further","then","once","here","there","when","where","why","how","what","who","whom","whose","which","about","against","between","into","through","\u7684","\u4E86","\u5728","\u662F","\u6211","\u6709","\u548C","\u5C31","\u4E0D","\u4EBA","\u90FD","\u4E00","\u4E00\u4E2A","\u4E0A","\u4E5F","\u5F88","\u5230","\u8BF4","\u8981","\u53BB","\u4F60","\u4F1A","\u7740","\u6CA1\u6709","\u770B","\u597D","\u81EA\u5DF1","\u8FD9","\u90A3","\u91CC","\u4E2A","\u5C31\u662F","\u554A","\u51FA","\u6765","\u4E48","\u5417","\u5462","\u5427","\u54E6","\u5566","\u5440","\u561B","\u54C8","\u54EA","\u4EC0\u4E48","\u600E\u4E48","\u4E3A\u4EC0\u4E48","\u591A\u5C11","\u51E0\u4E2A","\u8FD9\u4E2A","\u90A3\u4E2A","\u8FD9\u4E9B","\u90A3\u4E9B","\u8FD9\u6837","\u90A3\u6837","\u5982\u4F55","\u53EF\u4EE5","\u80FD\u591F","\u5E94\u8BE5","\u5FC5\u987B","\u9700\u8981","\u60F3\u8981","\u5E0C\u671B","\u89C9\u5F97","\u8BA4\u4E3A","\u77E5\u9053","\u660E\u767D","\u5DF2\u7ECF","\u6B63\u5728","\u5C06\u8981","\u66FE\u7ECF","\u4E00\u76F4","\u603B\u662F","\u7ECF\u5E38","\u6709\u65F6","\u5076\u5C14","\u4ECE\u6765","\u6C38\u8FDC","\u975E\u5E38","\u5F88\u591A","\u4E00\u4E9B","\u6240\u6709","\u6BCF\u4E2A","\u4EFB\u4F55","\u67D0\u4E2A","\u53E6\u5916","\u5176\u4ED6","\u522B\u7684","\u5176\u5B83","\u56E0\u4E3A","\u6240\u4EE5","\u4F46\u662F","\u7136\u800C","\u867D\u7136","\u5982\u679C","\u5047\u5982","\u9664\u975E","\u53EA\u8981","\u65E0\u8BBA","\u4E0D\u7BA1","\u800C\u4E14","\u5E76\u4E14","\u6216\u8005","\u8FD8\u662F","\u4E0D\u4EC5","\u800C\u4E14","\u65E2\u7136","\u7531\u4E8E","\u4E3A\u4E86","\u4EE5\u4FBF","\u4EE5\u514D","step","task","action","result","success","failed","error","warning","info","\u6B65\u9AA4","\u4EFB\u52A1","\u64CD\u4F5C","\u7ED3\u679C","\u6210\u529F","\u5931\u8D25","\u9519\u8BEF","\u8B66\u544A","\u4FE1\u606F","\u5B8C\u6210","\u6267\u884C"])}findRelevantStepsWithIndex(e,t=5){let n=this.extractKeywords(e),r=new Map;return n.forEach(s=>{let i=this.historyIndex.get(s);i&&i.forEach(a=>{r.set(a,(r.get(a)||0)+1)})}),Array.from(r.entries()).sort((s,i)=>i[1]-s[1]).slice(0,t).map(([s])=>s)}isLikelyRelevant(e,t){let n=new Set(this.extractKeywords(e));return this.extractKeywords(t).filter(i=>n.has(i)).length>=2}async selectRelevantHistoryWithLLM(e,t,n){let{MODEL:r}=await Promise.resolve().then(()=>(le(),wt)),{callModelAPI:s}=await Promise.resolve().then(()=>(ve(),Gt)),i=Array.from(this.globalContext.getStepDependencies().entries()).map(([c,l])=>{let u=this.globalContext.getStepSummary(c);return u?`\u6B65\u9AA4${c}: ${u.summary}`:""}).filter(Boolean).join(`
1105
1210
  `);if(!i){if(!(n==="explorer")){let l=this.globalContext.getExplorationHistory();if(l)return[{stepId:0,type:"exploration",content:l.content,metadata:{timestamp:l.timestamp,summary:l.summary}}]}return[]}let a=`\u4EFB\u52A1: ${this.globalContext.getOriginalTask()||""}
1106
1211
 
1107
1212
  \u5DF2\u5B8C\u6210\u7684\u5386\u53F2\u6B65\u9AA4\u6458\u8981:
@@ -1111,7 +1216,7 @@ ${i}
1111
1216
 
1112
1217
  \u95EE\u9898: \u5F53\u524D\u6B65\u9AA4\u9700\u8981\u54EA\u4E9B\u5386\u53F2\u6B65\u9AA4\u7684\u4FE1\u606F\uFF1F\u8BF7\u5206\u6790\u4F9D\u8D56\u5173\u7CFB\u3002
1113
1218
  \u8F93\u51FA\u683C\u5F0F: \u8FD4\u56DEJSON\u6570\u7EC4\uFF0C\u5305\u542B\u76F8\u5173\u6B65\u9AA4ID\uFF0C\u4F8B\u5982 [1, 3]\u3002\u5982\u679C\u4E0D\u9700\u8981\u5386\u53F2\u4FE1\u606F\uFF0C\u8FD4\u56DE []\u3002
1114
- \u53EA\u8FD4\u56DEJSON\uFF0C\u4E0D\u8981\u5176\u4ED6\u89E3\u91CA\u3002`;try{let l=(await s({model:r(),messages:[{role:"user",content:a}],temperature:.1,max_tokens:100})).choices[0].message.content?.trim()||"[]",p=JSON.parse(l).map(m=>{let d=this.globalContext.getStepSummary(m);return d?{stepId:m,type:"llm_selected",content:d.summary,metadata:d.metadata}:null}).filter(m=>m!==null);if(n==="explorer")C("\u8DF3\u8FC7\u63A2\u7D22\u5386\u53F2\u6CE8\u5165 (LLM\u6A21\u5F0F, \u5F53\u524D\u4E3A explorer \u667A\u80FD\u4F53)");else{let m=this.globalContext.getExplorationHistory();m&&(p.push({stepId:0,type:"exploration",content:m.content,metadata:{timestamp:m.timestamp,summary:m.summary}}),C(`\u5DF2\u6DFB\u52A0\u63A2\u7D22\u5386\u53F2\u5230\u4E0A\u4E0B\u6587 (LLM\u6A21\u5F0F, \u667A\u80FD\u4F53: ${n||"unknown"})`))}return $(`LLM \u4E3A\u6B65\u9AA4 ${e} \u9009\u62E9\u4E86 ${p.length} \u6761\u76F8\u5173\u5386\u53F2`),p}catch(c){return C(`LLM \u9009\u62E9\u5386\u53F2\u5931\u8D25\uFF0C\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${c instanceof Error?c.message:String(c)}`),this.selectRelevantHistory(e,t,n)}}},_e=class{globalContext;disclosure;constructor(e,t){this.globalContext=e,this.disclosure=t}async buildIsolatedContext(e,t,n="",r=!1,s,i){let a=[];n&&a.push({role:"system",content:n});let c=await this.buildProjectEnvironmentContext();c&&a.push({role:"system",content:`## \u9879\u76EE\u73AF\u5883\u4FE1\u606F
1219
+ \u53EA\u8FD4\u56DEJSON\uFF0C\u4E0D\u8981\u5176\u4ED6\u89E3\u91CA\u3002`;try{let l=(await s({model:r(),messages:[{role:"user",content:a}],temperature:.1,max_tokens:100,tools:[]})).choices[0].message.content?.trim()||"[]",p=JSON.parse(l).map(d=>{let m=this.globalContext.getStepSummary(d);return m?{stepId:d,type:"llm_selected",content:m.summary,metadata:m.metadata}:null}).filter(d=>d!==null);if(n==="explorer")x("\u8DF3\u8FC7\u63A2\u7D22\u5386\u53F2\u6CE8\u5165 (LLM\u6A21\u5F0F, \u5F53\u524D\u4E3A explorer \u667A\u80FD\u4F53)");else{let d=this.globalContext.getExplorationHistory();d&&(p.push({stepId:0,type:"exploration",content:d.content,metadata:{timestamp:d.timestamp,summary:d.summary}}),x(`\u5DF2\u6DFB\u52A0\u63A2\u7D22\u5386\u53F2\u5230\u4E0A\u4E0B\u6587 (LLM\u6A21\u5F0F, \u667A\u80FD\u4F53: ${n||"unknown"})`))}return M(`LLM \u4E3A\u6B65\u9AA4 ${e} \u9009\u62E9\u4E86 ${p.length} \u6761\u76F8\u5173\u5386\u53F2`),p}catch(c){return x(`LLM \u9009\u62E9\u5386\u53F2\u5931\u8D25\uFF0C\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${c instanceof Error?c.message:String(c)}`),this.selectRelevantHistory(e,t,n)}}},He=class{globalContext;disclosure;platformInfoCache=null;projectInfoCache=null;projectInfoCacheTime=0;PROJECT_INFO_CACHE_TTL=300*1e3;constructor(e,t){this.globalContext=e,this.disclosure=t}async buildIsolatedContext(e,t,n="",r=!1,s,i){let a=[];n&&a.push({role:"system",content:n});let c=await this.buildProjectEnvironmentContext();c&&a.push({role:"system",content:`## \u9879\u76EE\u73AF\u5883\u4FE1\u606F
1115
1220
 
1116
1221
  ${c}`}),a.push({role:"user",content:`\u539F\u59CB\u4EFB\u52A1: ${this.globalContext.getOriginalTask()||""}`}),this.globalContext.getSharedState().rules&&a.push({role:"system",content:`\u26A0\uFE0F \u3010\u91CD\u8981\u3011\u9879\u76EE\u89C4\u5219 - \u6A21\u578B\u5FC5\u987B\u4E25\u683C\u9075\u5B88
1117
1222
 
@@ -1122,10 +1227,10 @@ ${c}`}),a.push({role:"user",content:`\u539F\u59CB\u4EFB\u52A1: ${this.globalCont
1122
1227
  ${this.globalContext.getSharedState().rules}
1123
1228
 
1124
1229
  ===============================
1125
- \u26A0\uFE0F \u91CD\u8981\u63D0\u9192\uFF1A\u5728\u6267\u884C\u6240\u6709\u4EFB\u52A1\u65F6\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u4E0A\u8FF0\u9879\u76EE\u89C4\u5219\u548C\u7EA6\u5B9A\uFF0C\u786E\u4FDD\u751F\u6210\u7684\u4EE3\u7801\u3001\u6587\u4EF6\u7ED3\u6784\u548C\u5B9E\u73B0\u65B9\u5F0F\u7B26\u5408\u9879\u76EE\u8981\u6C42\u3002\u5982\u679C\u8FDD\u53CD\u89C4\u5219\uFF0C\u53EF\u80FD\u5BFC\u81F4\u4EFB\u52A1\u5931\u8D25\u6216\u9700\u8981\u91CD\u65B0\u6267\u884C\u3002`});let l;if(r?l=await this.disclosure.selectRelevantHistoryWithLLM(e,t,i):l=await this.disclosure.selectRelevantHistory(e,t,i),l.length>0){let g=l.map(p=>`[\u6B65\u9AA4${p.stepId}] ${p.content}`).join(`
1230
+ \u26A0\uFE0F \u91CD\u8981\u63D0\u9192\uFF1A\u5728\u6267\u884C\u6240\u6709\u4EFB\u52A1\u65F6\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u4E0A\u8FF0\u9879\u76EE\u89C4\u5219\u548C\u7EA6\u5B9A\uFF0C\u786E\u4FDD\u751F\u6210\u7684\u4EE3\u7801\u3001\u6587\u4EF6\u7ED3\u6784\u548C\u5B9E\u73B0\u65B9\u5F0F\u7B26\u5408\u9879\u76EE\u8981\u6C42\u3002\u5982\u679C\u8FDD\u53CD\u89C4\u5219\uFF0C\u53EF\u80FD\u5BFC\u81F4\u4EFB\u52A1\u5931\u8D25\u6216\u9700\u8981\u91CD\u65B0\u6267\u884C\u3002`});let l;if(r?l=await this.disclosure.selectRelevantHistoryWithLLM(e,t,i):l=await this.disclosure.selectRelevantHistory(e,t,i),l.length>0){let u=l.map(p=>`[\u6B65\u9AA4${p.stepId}] ${p.content}`).join(`
1126
1231
 
1127
1232
  `);a.push({role:"user",content:`\u76F8\u5173\u5386\u53F2\u4FE1\u606F:
1128
- ${g}`})}return a.push({role:"user",content:`\u5F53\u524D\u4EFB\u52A1 (\u6B65\u9AA4 ${e}/${this.globalContext.getPlan().totalSteps}):
1233
+ ${u}`})}return a.push({role:"user",content:`\u5F53\u524D\u4EFB\u52A1 (\u6B65\u9AA4 ${e}/${this.globalContext.getPlan().totalSteps}):
1129
1234
  ${t}`}),s&&s.length>0&&a.push({role:"system",content:`\u26A0\uFE0F \u672C\u6B65\u9AA4\u5DE5\u5177\u4F7F\u7528\u9650\u5236:
1130
1235
  \u4F60\u53EA\u80FD\u4F7F\u7528\u4EE5\u4E0B\u5DE5\u5177: ${s.join(", ")}
1131
1236
 
@@ -1135,7 +1240,9 @@ ${t}`}),s&&s.length>0&&a.push({role:"system",content:`\u26A0\uFE0F \u672C\u6B65\
1135
1240
  - You MUST use Action: merge(path, content) to modify existing files
1136
1241
  - NEVER just output code without saving it using Action:
1137
1242
  - Follow the exact format: "Thought: ..." then "Action: tool_name(args)"
1138
- - When task is done, use "Answer: ..." to finish`}),$(`\u4E3A\u6B65\u9AA4 ${e} \u6784\u5EFA\u4E86\u9694\u79BB\u4E0A\u4E0B\u6587\uFF0C\u5305\u542B ${a.length} \u6761\u6D88\u606F`),s&&$(`\u5DE5\u5177\u9650\u5236: ${s.join(", ")}`),C(`\u4E0A\u4E0B\u6587\u8BE6\u60C5: \u5386\u53F2 ${l.length} \u6761, \u6587\u4EF6 ${this.globalContext.getSharedState().recentFiles.length} \u4E2A`),a}buildSimpleContext(e,t=""){let n=[];return t&&n.push({role:"system",content:t}),n.push({role:"user",content:e}),$("\u6784\u5EFA\u4E86\u7B80\u5316\u4E0A\u4E0B\u6587\uFF08\u7B80\u5355\u4EFB\u52A1\u6A21\u5F0F\uFF09"),n}async buildProjectEnvironmentContext(){try{let e=Ft.platform(),t=Ft.arch(),n=Ft.version(),r=process.cwd(),s=`\u{1F30D} **\u667A\u80FD\u73AF\u5883\u611F\u77E5\u7CFB\u7EDF**
1243
+ - When task is done, use "Answer: ..." to finish`}),M(`\u4E3A\u6B65\u9AA4 ${e} \u6784\u5EFA\u4E86\u9694\u79BB\u4E0A\u4E0B\u6587\uFF0C\u5305\u542B ${a.length} \u6761\u6D88\u606F`),s&&M(`\u5DE5\u5177\u9650\u5236: ${s.join(", ")}`),x(`\u4E0A\u4E0B\u6587\u8BE6\u60C5: \u5386\u53F2 ${l.length} \u6761, \u6587\u4EF6 ${this.globalContext.getSharedState().recentFiles.length} \u4E2A`),a}buildSimpleContext(e,t=""){let n=[];return t&&n.push({role:"system",content:t}),n.push({role:"user",content:e}),M("\u6784\u5EFA\u4E86\u7B80\u5316\u4E0A\u4E0B\u6587\uFF08\u7B80\u5355\u4EFB\u52A1\u6A21\u5F0F\uFF09"),n}async buildProjectEnvironmentContext(){try{this.platformInfoCache||(this.platformInfoCache=this.buildPlatformInfo(),x("\u5E73\u53F0\u4FE1\u606F\u5DF2\u7F13\u5B58"));let e=Date.now();(!this.projectInfoCache||e-this.projectInfoCacheTime>this.PROJECT_INFO_CACHE_TTL)&&(this.projectInfoCache=await this.buildProjectInfo(),this.projectInfoCacheTime=e,x("\u9879\u76EE\u4FE1\u606F\u5DF2\u66F4\u65B0\u7F13\u5B58"));let t=this.platformInfoCache;return this.projectInfoCache&&(t+=`
1244
+
1245
+ ${this.projectInfoCache}`),t}catch(e){return x(`\u6784\u5EFA\u9879\u76EE\u73AF\u5883\u4E0A\u4E0B\u6587\u5931\u8D25: ${e}`),null}}buildPlatformInfo(){let e=Jt.platform(),t=Jt.arch(),n=Jt.version(),r=process.cwd();return`\u{1F30D} **\u667A\u80FD\u73AF\u5883\u611F\u77E5\u7CFB\u7EDF**
1139
1246
 
1140
1247
  **\u91CD\u8981\u63D0\u9192\uFF1A\u4F60\u5FC5\u987B\u59CB\u7EC8\u8003\u8651\u5F53\u524D\u8FD0\u884C\u73AF\u5883\uFF0C\u8FD9\u76F4\u63A5\u5F71\u54CD\u4F60\u7684\u547D\u4EE4\u9009\u62E9\u548C\u4EE3\u7801\u751F\u6210\u7B56\u7565\u3002**
1141
1248
 
@@ -1152,7 +1259,7 @@ ${t}`}),s&&s.length>0&&a.push({role:"system",content:`\u26A0\uFE0F \u672C\u6B65\
1152
1259
  ${e==="win32"?`
1153
1260
  **Windows\u7279\u5B9A\u6CE8\u610F\u4E8B\u9879\uFF1A**
1154
1261
  - \u4F7F\u7528Windows\u7B49\u4EF7\u547D\u4EE4\uFF1Adir(\u4EE3\u66FFls), where(\u4EE3\u66FFwhich), type(\u4EE3\u66FFcat)
1155
- - \u8DEF\u5F84\u5206\u9694\u7B26\u4F7F\u7528\u53CD\u659C\u6760()\uFF0C\u4F46Node.js\u901A\u5E38\u652F\u6301\u6B63\u659C\u6760(/)
1262
+ - \u8DEF\u5F84\u5206\u9694\u7B26\u4F7F\u7528\u53CD\u659C\u6760(\\)\uFF0C\u4F46Node.js\u901A\u5E38\u652F\u6301\u6B63\u659C\u6760(/)
1156
1263
  - \u73AF\u5883\u53D8\u91CF\u4F7F\u7528%VAR%\u683C\u5F0F\uFF0C\u4F46PowerShell\u4F7F\u7528$env:VAR
1157
1264
  - \u63A8\u8350\u4F7F\u7528PowerShell\u6216CMD\uFF0C\u907F\u514DUnix\u7279\u6709\u547D\u4EE4
1158
1265
  - \u6587\u4EF6\u7F16\u7801\u6CE8\u610FUTF-8\u4E0EGBK\u7684\u533A\u522B
@@ -1176,9 +1283,7 @@ ${e==="win32"?`
1176
1283
  - **\u73AF\u5883\u53D8\u91CF\uFF1A** \u4F7F\u7528process.env\u8BBF\u95EE\uFF0C\u907F\u514D\u5E73\u53F0\u7279\u5B9A\u8BED\u6CD5
1177
1284
  - **\u547D\u4EE4\u6267\u884C\uFF1A** \u4F18\u5148\u4F7F\u7528Node.js API\uFF0C\u5FC5\u8981\u65F6\u4F7F\u7528\u8DE8\u5E73\u53F0\u547D\u4EE4
1178
1285
  - **\u6587\u4EF6\u7CFB\u7EDF\uFF1A** \u6CE8\u610FWindows\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF0CUnix\u7CFB\u7EDF\u533A\u5206\u5927\u5C0F\u5199
1179
- - **\u884C\u5C3E\u7B26\uFF1A** Windows\u4F7F\u7528\r
1180
- \uFF0CUnix\u4F7F\u7528
1181
- \uFF0C\u4F7F\u7528os.EOL\u83B7\u53D6\u6B63\u786E\u683C\u5F0F
1286
+ - **\u884C\u5C3E\u7B26\uFF1A** Windows\u4F7F\u7528\\r\\n\uFF0CUnix\u4F7F\u7528\\n\uFF0C\u4F7F\u7528os.EOL\u83B7\u53D6\u6B63\u786E\u683C\u5F0F
1182
1287
 
1183
1288
  ### \u26A1 \u547D\u4EE4\u9009\u62E9\u7B56\u7565
1184
1289
  1. **\u6587\u4EF6\u64CD\u4F5C\uFF1A** ${e==="win32"?"\u4F7F\u7528dir\u3001copy\u3001move\u3001del":"\u4F7F\u7528ls\u3001cp\u3001mv\u3001rm"}
@@ -1190,18 +1295,16 @@ ${e==="win32"?`
1190
1295
  - \u5728\u6267\u884Cshell\u547D\u4EE4\u524D\uFF0C\u52A1\u5FC5\u8003\u8651\u5F53\u524D\u5E73\u53F0\u7279\u6027
1191
1296
  - \u5F53\u7528\u6237\u8BF7\u6C42\u4F7F\u7528Unix\u547D\u4EE4\u65F6\uFF0C${e==="win32"?"\u81EA\u52A8\u8F6C\u6362\u4E3AWindows\u7B49\u4EF7\u547D\u4EE4":"\u76F4\u63A5\u4F7F\u7528Unix\u547D\u4EE4"}
1192
1297
  - \u63D0\u4F9B\u547D\u4EE4\u5EFA\u8BAE\u65F6\uFF0C\u4F18\u5148\u63A8\u8350${e==="win32"?"Windows\u539F\u751F":"Unix\u539F\u751F"}\u65B9\u6848
1193
- - \u9047\u5230\u8DE8\u5E73\u53F0\u517C\u5BB9\u6027\u95EE\u9898\u65F6\uFF0C\u4E3B\u52A8\u63D0\u51FA\u89E3\u51B3\u65B9\u6848`;try{let i=await import("fs"),c=(await import("path")).join(r,".nium/project/project.json");if(i.existsSync(c)){let l=i.readFileSync(c,"utf-8");try{let g=JSON.parse(l),p=this.extractProjectSummaryFromJSON(g);s+=`
1194
- **\u9879\u76EE\u7ED3\u6784\u6458\u8981:**
1195
- ${p}
1298
+ - \u9047\u5230\u8DE8\u5E73\u53F0\u517C\u5BB9\u6027\u95EE\u9898\u65F6\uFF0C\u4E3B\u52A8\u63D0\u51FA\u89E3\u51B3\u65B9\u6848`}async buildProjectInfo(){try{let e=await import("fs"),t=await import("path"),n=process.cwd(),r=t.join(n,".nium/project/project.json");if(!e.existsSync(r))return null;let s=e.readFileSync(r,"utf-8");try{let i=JSON.parse(s);return`**\u9879\u76EE\u7ED3\u6784\u6458\u8981:**
1299
+ ${this.extractProjectSummaryFromJSON(i)}
1196
1300
 
1197
- **\u5B8C\u6574\u7ED3\u6784\u6587\u6863:** \u5982\u9700\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u4F7F\u7528 read('.nium/project/project.json')`}catch(g){C(`\u89E3\u6790project.json\u5931\u8D25\uFF0C\u4F7F\u7528\u6587\u672C\u6458\u8981: ${g}`);let p=this.extractProjectSummary(l);s+=`
1198
- **\u9879\u76EE\u7ED3\u6784\u6458\u8981:**
1199
- ${p}
1301
+ **\u5B8C\u6574\u7ED3\u6784\u6587\u6863:** \u5982\u9700\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u4F7F\u7528 read('.nium/project/project.json')`}catch(i){return x(`\u89E3\u6790project.json\u5931\u8D25\uFF0C\u4F7F\u7528\u6587\u672C\u6458\u8981: ${i}`),`**\u9879\u76EE\u7ED3\u6784\u6458\u8981:**
1302
+ ${this.extractProjectSummary(s)}
1200
1303
 
1201
- **\u5B8C\u6574\u7ED3\u6784\u6587\u6863:** \u5982\u9700\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u4F7F\u7528 read('.nium/project/project.json')`}}}catch(i){C(`\u83B7\u53D6\u9879\u76EE\u7ED3\u6784\u4FE1\u606F\u5931\u8D25: ${i}`)}return s}catch(e){return C(`\u6784\u5EFA\u9879\u76EE\u73AF\u5883\u4E0A\u4E0B\u6587\u5931\u8D25: ${e}`),null}}extractProjectSummaryFromJSON(e){return On(e,{format:"summary",maxSections:3})}extractProjectSummary(e){let t=e.split(`
1304
+ **\u5B8C\u6574\u7ED3\u6784\u6587\u6863:** \u5982\u9700\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u4F7F\u7528 read('.nium/project/project.json')`}}catch(e){return x(`\u83B7\u53D6\u9879\u76EE\u7ED3\u6784\u4FE1\u606F\u5931\u8D25: ${e}`),null}}extractProjectSummaryFromJSON(e){return tr(e,{format:"summary",maxSections:3})}extractProjectSummary(e){let t=e.split(`
1202
1305
  `),n=[],r=!1,s=0;for(let i of t){if(i.includes("## \u9879\u76EE\u6982\u8FF0")){r=!0;continue}if(r){if(i.startsWith("##")&&!i.includes("\u9879\u76EE\u6982\u8FF0"))break;if(i.trim()&&(n.push(i),s++,s>=15))break}}return n.join(`
1203
- `)}},Ne=class{async extractSummary(e){let t=[],n=[],r=null;for(let i of e)if(i.role==="assistant"){if(i.tool_calls&&i.tool_calls.length>0)for(let a of i.tool_calls){let c=a.function.name;c!=="think"&&t.push(c)}if(i.content&&i.content.includes("Answer:")){let a=i.content.match(/Answer:\s*(.+)/s);a&&(r=a[1].trim().substring(0,200))}}else i.role==="tool"&&i.content&&n.push(i.content.substring(0,100));let s="";return r?s=`\u5B8C\u6210: ${r}`:(s=`\u6267\u884C\u4E86 ${t.length} \u4E2A\u5DE5\u5177\u8C03\u7528`,t.length>0&&(s+=` (${t.slice(0,3).join(", ")})`)),C(`\u63D0\u53D6\u6458\u8981: ${s.substring(0,50)}...`),s}async extractSummaryWithLLM(e){let{LITE_MODEL:t}=await Promise.resolve().then(()=>(ae(),yt)),{callModelAPI:n}=await Promise.resolve().then(()=>(Ce(),jt)),r=e.filter(s=>s.content).map(s=>`${s.role}: ${s.content.substring(0,500)}`).join(`
1204
- `);if(r.length<100)return this.extractSummary(e);try{let i=(await n({model:t(),messages:[{role:"system",content:"\u4F60\u662F\u4E00\u4E2A\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4E0B\u9762\u7684\u4EFB\u52A1\u6267\u884C\u8FC7\u7A0B\u538B\u7F29\u6210\u7B80\u6D01\u7684\u6458\u8981\uFF08\u4E0D\u8D85\u8FC7100\u5B57\uFF09\uFF0C\u4FDD\u7559\u5173\u952E\u64CD\u4F5C\u548C\u7ED3\u679C\u3002"},{role:"user",content:r}],temperature:.1,max_tokens:150,useCompression:!0})).choices[0].message.content?.trim()||"\u6267\u884C\u5B8C\u6210";return $(`LLM \u751F\u6210\u6458\u8981: ${i.substring(0,50)}...`),i}catch(s){return C(`LLM \u6458\u8981\u5931\u8D25\uFF0C\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${s instanceof Error?s.message:String(s)}`),this.extractSummary(e)}}extractMetadata(e){let t={toolsUsed:[],filesAccessed:[],errors:[],iterations:0};for(let n of e)if(n.role==="assistant"){if(t.iterations++,n.tool_calls&&n.tool_calls.length>0)for(let r of n.tool_calls){let s=r.function.name;if(s!=="think"&&(t.toolsUsed.push(s),["read","write","merge"].includes(s)))try{let i=JSON.parse(r.function.arguments),a=i.path||i.newContent;a&&t.filesAccessed.push(a)}catch{}}}else n.role==="tool"&&n.content&&n.content.includes("Error:")&&t.errors.push(n.content.substring(0,100));return t}}});var Fn,gs=S(()=>{Fn=class{anchors=[];originalQuestion;modelClient;constructor(e,t){this.originalQuestion=e,this.modelClient=t,this.initializeAnchor()}initializeAnchor(){let e={originalQuestion:this.originalQuestion,keyConstraints:this.extractConstraints(this.originalQuestion),successCriteria:this.extractSuccessCriteria(this.originalQuestion),iterationAdded:0,semanticSignature:this.generateSemanticSignature(this.originalQuestion)};this.anchors.push(e)}extractConstraints(e){let t=[/必须\s*[::]\s*(.+?)(?=\n|$)/g,/需要\s*[::]\s*(.+?)(?=\n|$)/g,/要求\s*[::]\s*(.+?)(?=\n|$)/g,/不能\s*[::]\s*(.+?)(?=\n|$)/g],n=[];return t.forEach(r=>{let s=e.match(r);s&&n.push(...s)}),n.length>0?n:["\u5B8C\u6210\u7528\u6237\u8BF7\u6C42\u7684\u4EFB\u52A1"]}extractSuccessCriteria(e){let t=[/目标\s*[::]\s*(.+?)(?=\n|$)/g,/标准\s*[::]\s*(.+?)(?=\n|$)/g,/结果\s*[::]\s*(.+?)(?=\n|$)/g,/输出\s*[::]\s*(.+?)(?=\n|$)/g],n=[];return t.forEach(r=>{let s=e.match(r);s&&n.push(...s)}),n.length>0?n:["\u63D0\u4F9B\u51C6\u786E\u548C\u6709\u7528\u7684\u7B54\u6848"]}generateSemanticSignature(e){return this.extractKeywords(e).join("|")}extractKeywords(e){let t=e.toLowerCase().replace(/[^\u4e00-\u9fa5a-zA-Z\s]/g," ").split(/\s+/).filter(i=>i.length>2),n=["\u7684","\u4E86","\u5728","\u662F","\u6211","\u6709","\u548C","\u5C31","the","is","at","which","on","to","of","a","an"],r=t.filter(i=>!n.includes(i)),s=new Map;return r.forEach(i=>{s.set(i,(s.get(i)||0)+1)}),Array.from(s.entries()).sort((i,a)=>a[1]-i[1]).slice(0,10).map(([i])=>i)}async calculateSemanticSimilarity(e){let t=this.extractKeywords(e),r=this.anchors[0].semanticSignature.split("|"),s=t.filter(c=>r.some(l=>l===c||l.includes(c)||c.includes(l))),i=new Set([...t,...r]);return i.size>0?s.length/i.size:0}shouldInjectAnchor(e,t,n){if(t<.2)return!0;let r=this.getAnchorFrequency(t);return e%r===0?!0:t>=.2&&t<.6&&n&&n.length>1e3?e%Math.max(1,Math.floor(r/2))===0:!1}getAnchorFrequency(e){return e<.2?3:e<.4?5:e<.6?8:10}generateAnchorPrompt(e,t,n){let r=this.anchors[0],s=`\u{1F3AF} \u4E0A\u4E0B\u6587\u951A\u70B9\u63D0\u9192 (\u8FED\u4EE3 ${e}):
1306
+ `)}},Je=class{useLLMSummary;constructor(e=!0){this.useLLMSummary=e}setUseLLMSummary(e){this.useLLMSummary=e,x(`\u6458\u8981\u63D0\u53D6\u6A21\u5F0F\u5DF2\u8BBE\u7F6E\u4E3A: ${e?"LLM":"\u542F\u53D1\u5F0F"}`)}async extractSummary(e){return this.useLLMSummary?this.extractSummaryWithLLM(e):this.extractSummaryHeuristic(e)}async extractSummaryHeuristic(e){let t=[],n=[],r=null;for(let i of e)if(i.role==="assistant"){if(i.tool_calls&&i.tool_calls.length>0)for(let a of i.tool_calls){let c=a.function.name;c!=="think"&&t.push(c)}if(i.content&&i.content.includes("Answer:")){let a=i.content.match(/Answer:\s*(.+)/s);a&&(r=a[1].trim().substring(0,200))}}else i.role==="tool"&&i.content&&n.push(i.content.substring(0,100));let s="";return r?s=`\u5B8C\u6210: ${r}`:(s=`\u6267\u884C\u4E86 ${t.length} \u4E2A\u5DE5\u5177\u8C03\u7528`,t.length>0&&(s+=` (${t.slice(0,3).join(", ")})`)),x(`\u63D0\u53D6\u6458\u8981: ${s.substring(0,50)}...`),s}async extractSummaryWithLLM(e){let{LITE_MODEL:t}=await Promise.resolve().then(()=>(le(),wt)),{callModelAPI:n}=await Promise.resolve().then(()=>(ve(),Gt)),r=e.filter(s=>s.content).map(s=>`${s.role}: ${s.content.substring(0,500)}`).join(`
1307
+ `);if(r.length<100)return this.extractSummaryHeuristic(e);try{let i=(await n({model:t(),messages:[{role:"system",content:"\u4F60\u662F\u4E00\u4E2A\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4E0B\u9762\u7684\u4EFB\u52A1\u6267\u884C\u8FC7\u7A0B\u538B\u7F29\u6210\u7B80\u6D01\u7684\u6458\u8981\uFF08\u4E0D\u8D85\u8FC7100\u5B57\uFF09\uFF0C\u4FDD\u7559\u5173\u952E\u64CD\u4F5C\u548C\u7ED3\u679C\u3002"},{role:"user",content:r}],temperature:.1,max_tokens:150,useCompression:!0,tools:[]})).choices[0].message.content?.trim()||"\u6267\u884C\u5B8C\u6210";return M(`LLM \u751F\u6210\u6458\u8981: ${i.substring(0,50)}...`),i}catch(s){return x(`LLM \u6458\u8981\u5931\u8D25\uFF0C\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${s instanceof Error?s.message:String(s)}`),this.extractSummaryHeuristic(e)}}extractMetadata(e){let t={toolsUsed:[],filesAccessed:[],errors:[],iterations:0},n=[];for(let r=0;r<e.length;r++){let s=e[r];if(s.role==="assistant"){if(t.iterations++,s.tool_calls&&s.tool_calls.length>0)for(let i of s.tool_calls){let a=i.function.name;if(a!=="think"){t.toolsUsed.push(a);let c={};try{c=JSON.parse(i.function.arguments)}catch{}let l=c.path||c.file_path||c.newContent||c.file;l&&typeof l=="string"&&t.filesAccessed.push(l),n.push({tool:a,args:c})}}}else if(s.role==="tool"){if(n.length>0){let i=n[n.length-1];!i.result&&s.content&&(i.result=s.content.substring(0,200))}s.content&&s.content.includes("Error:")&&t.errors.push(s.content.substring(0,150))}}return t.toolCallDetails=n,t}}});var nr,Os=C(()=>{nr=class{anchors=[];originalQuestion;modelClient;constructor(e,t){this.originalQuestion=e,this.modelClient=t,this.initializeAnchor()}initializeAnchor(){let e={originalQuestion:this.originalQuestion,keyConstraints:this.extractConstraints(this.originalQuestion),successCriteria:this.extractSuccessCriteria(this.originalQuestion),iterationAdded:0,semanticSignature:this.generateSemanticSignature(this.originalQuestion)};this.anchors.push(e)}extractConstraints(e){let t=[/必须\s*[::]\s*(.+?)(?=\n|$)/g,/需要\s*[::]\s*(.+?)(?=\n|$)/g,/要求\s*[::]\s*(.+?)(?=\n|$)/g,/不能\s*[::]\s*(.+?)(?=\n|$)/g],n=[];return t.forEach(r=>{let s=e.match(r);s&&n.push(...s)}),n.length>0?n:["\u5B8C\u6210\u7528\u6237\u8BF7\u6C42\u7684\u4EFB\u52A1"]}extractSuccessCriteria(e){let t=[/目标\s*[::]\s*(.+?)(?=\n|$)/g,/标准\s*[::]\s*(.+?)(?=\n|$)/g,/结果\s*[::]\s*(.+?)(?=\n|$)/g,/输出\s*[::]\s*(.+?)(?=\n|$)/g],n=[];return t.forEach(r=>{let s=e.match(r);s&&n.push(...s)}),n.length>0?n:["\u63D0\u4F9B\u51C6\u786E\u548C\u6709\u7528\u7684\u7B54\u6848"]}generateSemanticSignature(e){return this.extractKeywords(e).join("|")}extractKeywords(e){let t=e.toLowerCase().replace(/[^\u4e00-\u9fa5a-zA-Z\s]/g," ").split(/\s+/).filter(i=>i.length>2),n=["\u7684","\u4E86","\u5728","\u662F","\u6211","\u6709","\u548C","\u5C31","the","is","at","which","on","to","of","a","an"],r=t.filter(i=>!n.includes(i)),s=new Map;return r.forEach(i=>{s.set(i,(s.get(i)||0)+1)}),Array.from(s.entries()).sort((i,a)=>a[1]-i[1]).slice(0,10).map(([i])=>i)}async calculateSemanticSimilarity(e){let t=this.extractKeywords(e),r=this.anchors[0].semanticSignature.split("|"),s=t.filter(c=>r.some(l=>l===c||l.includes(c)||c.includes(l))),i=new Set([...t,...r]);return i.size>0?s.length/i.size:0}shouldInjectAnchor(e,t,n){if(t<.2)return!0;let r=this.getAnchorFrequency(t);return e%r===0?!0:t>=.2&&t<.6&&n&&n.length>1e3?e%Math.max(1,Math.floor(r/2))===0:!1}getAnchorFrequency(e){return e<.2?3:e<.4?5:e<.6?8:10}generateAnchorPrompt(e,t,n){let r=this.anchors[0],s=`\u{1F3AF} \u4E0A\u4E0B\u6587\u951A\u70B9\u63D0\u9192 (\u8FED\u4EE3 ${e}):
1205
1308
 
1206
1309
  \u26A0\uFE0F \u91CD\u8981: \u8BF7\u4E25\u683C\u9075\u5FAA\u4EE5\u4E0B\u8981\u6C42\uFF0C\u8FD9\u662F\u89E3\u51B3\u7528\u6237\u95EE\u9898\u7684\u6838\u5FC3\u6307\u5BFC\uFF1A
1207
1310
 
@@ -1224,7 +1327,7 @@ ${r.successCriteria.map(i=>` \u2022 ${i}`).join(`
1224
1327
  4. \u786E\u4FDD\u6BCF\u4E00\u6B65\u90FD\u671D\u7740\u6700\u7EC8\u76EE\u6807\u524D\u8FDB
1225
1328
  5. \u6700\u7EC8\u7B54\u6848\u5FC5\u987B\u76F4\u63A5\u56DE\u5E94\u539F\u59CB\u95EE\u9898\u7684\u8981\u6C42
1226
1329
 
1227
- \u26A1 \u5F3A\u5236\u6267\u884C: \u8FD9\u662F\u6700\u9AD8\u4F18\u5148\u7EA7\u6307\u4EE4\uFF0C\u8986\u76D6\u5176\u4ED6\u6240\u6709\u4E00\u822C\u6027\u5EFA\u8BAE\u3002`,s}createAnchorMessage(e,t,n,r,s){let i=this.generateAnchorPrompt(e,r,s),a="medium";t<.3||n==="severe"?a="high":t>.7&&(!n||n==="none")&&(a="low");let c={type:"context_anchor",iteration:e,similarity:t,priority:a,driftLevel:n,timestamp:new Date().toISOString()};return{role:"system",content:i,metadata:c}}addMidwayAnchor(e,t,n){let r={originalQuestion:this.originalQuestion,keyConstraints:this.extractConstraints(t),successCriteria:this.extractSuccessCriteria(t),iterationAdded:e,semanticSignature:this.generateSemanticSignature(t+" "+n)};this.anchors.push(r)}getOriginalQuestion(){return this.originalQuestion}getAnchors(){return this.anchors}}});var jn,ps=S(()=>{ae();jn=class{modelClient;constructor(e){this.modelClient=e}async analyzeSemanticDrift(e,t,n){let r=`\u5206\u6790\u4EE5\u4E0B\u4E24\u4E2A\u6587\u672C\u7684\u8BED\u4E49\u76F8\u4F3C\u5EA6\u548C\u504F\u79BB\u7A0B\u5EA6\uFF1A
1330
+ \u26A1 \u5F3A\u5236\u6267\u884C: \u8FD9\u662F\u6700\u9AD8\u4F18\u5148\u7EA7\u6307\u4EE4\uFF0C\u8986\u76D6\u5176\u4ED6\u6240\u6709\u4E00\u822C\u6027\u5EFA\u8BAE\u3002`,s}createAnchorMessage(e,t,n,r,s){let i=this.generateAnchorPrompt(e,r,s),a="medium";t<.3||n==="severe"?a="high":t>.7&&(!n||n==="none")&&(a="low");let c={type:"context_anchor",iteration:e,similarity:t,priority:a,driftLevel:n,timestamp:new Date().toISOString()};return{role:"system",content:i,metadata:c}}addMidwayAnchor(e,t,n){let r={originalQuestion:this.originalQuestion,keyConstraints:this.extractConstraints(t),successCriteria:this.extractSuccessCriteria(t),iterationAdded:e,semanticSignature:this.generateSemanticSignature(t+" "+n)};this.anchors.push(r)}getOriginalQuestion(){return this.originalQuestion}getAnchors(){return this.anchors}}});var rr,js=C(()=>{le();rr=class{modelClient;constructor(e){this.modelClient=e}async analyzeSemanticDrift(e,t,n){let r=`\u5206\u6790\u4EE5\u4E0B\u4E24\u4E2A\u6587\u672C\u7684\u8BED\u4E49\u76F8\u4F3C\u5EA6\u548C\u504F\u79BB\u7A0B\u5EA6\uFF1A
1228
1331
 
1229
1332
  \u539F\u59CB\u6587\u672C: "${e}"
1230
1333
 
@@ -1236,7 +1339,7 @@ ${r.successCriteria.map(i=>` \u2022 ${i}`).join(`
1236
1339
  3. keyTopics: \u4E24\u4E2A\u6587\u672C\u7684\u5173\u952E\u4E3B\u9898\u5217\u8868
1237
1340
  4. deviationFactors: \u5BFC\u81F4\u504F\u79BB\u7684\u56E0\u7D20\u5217\u8868
1238
1341
 
1239
- \u53EA\u8FD4\u56DEJSON\uFF0C\u4E0D\u8981\u5176\u4ED6\u89E3\u91CA\u3002`;try{let i=(await this.modelClient({model:Pe(),messages:[{role:"user",content:r}],temperature:.1,max_tokens:200})).choices[0].message.content?.trim();if(i)return JSON.parse(i);throw new Error("Empty response from model")}catch{return this.simpleSemanticAnalysis(e,t)}}simpleSemanticAnalysis(e,t){let n=this.extractKeywords(e),r=this.extractKeywords(t),i=n.filter(c=>r.some(l=>l.includes(c)||c.includes(l))).length/Math.max(n.length,r.length),a;return i>.6?a="none":i>.4?a="minor":i>.2?a="moderate":a="severe",{similarityScore:i,driftLevel:a,keyTopics:[...new Set([...n,...r])],deviationFactors:this.identifyDeviationFactors(n,r)}}extractKeywords(e){let t=e.toLowerCase().replace(/[^\u4e00-\u9fa5a-zA-Z\s]/g," ").split(/\s+/).filter(r=>r.length>2),n=["\u7684","\u4E86","\u5728","\u662F","\u6211","\u6709","\u548C","\u5C31","the","is","at","which","on","to","of","a","an"];return[...new Set(t.filter(r=>!n.includes(r)))]}identifyDeviationFactors(e,t){let n=[],r=e.filter(i=>!t.some(a=>a.includes(i)||i.includes(a))),s=t.filter(i=>!e.some(a=>a.includes(i)||i.includes(a)));return r.length>0&&n.push(`\u4E22\u5931\u4E86\u5173\u952E\u4E3B\u9898: ${r.slice(0,3).join(", ")}`),s.length>0&&n.push(`\u5F15\u5165\u4E86\u65B0\u7684\u4E3B\u9898: ${s.slice(0,3).join(", ")}`),n.length===0&&n.push("\u8BED\u4E49\u76F8\u5173\u6027\u8F83\u4F4E"),n}generateCorrectionPrompt(e,t,n){let r=`\u26A0\uFE0F \u504F\u79BB\u68C0\u6D4B\u8B66\u544A
1342
+ \u53EA\u8FD4\u56DEJSON\uFF0C\u4E0D\u8981\u5176\u4ED6\u89E3\u91CA\u3002`;try{let i=(await this.modelClient({model:Ie(),messages:[{role:"user",content:r}],temperature:.1,max_tokens:200})).choices[0].message.content?.trim();if(i)return JSON.parse(i);throw new Error("Empty response from model")}catch{return this.simpleSemanticAnalysis(e,t)}}simpleSemanticAnalysis(e,t){let n=this.extractKeywords(e),r=this.extractKeywords(t),i=n.filter(c=>r.some(l=>l.includes(c)||c.includes(l))).length/Math.max(n.length,r.length),a;return i>.6?a="none":i>.4?a="minor":i>.2?a="moderate":a="severe",{similarityScore:i,driftLevel:a,keyTopics:[...new Set([...n,...r])],deviationFactors:this.identifyDeviationFactors(n,r)}}extractKeywords(e){let t=e.toLowerCase().replace(/[^\u4e00-\u9fa5a-zA-Z\s]/g," ").split(/\s+/).filter(r=>r.length>2),n=["\u7684","\u4E86","\u5728","\u662F","\u6211","\u6709","\u548C","\u5C31","the","is","at","which","on","to","of","a","an"];return[...new Set(t.filter(r=>!n.includes(r)))]}identifyDeviationFactors(e,t){let n=[],r=e.filter(i=>!t.some(a=>a.includes(i)||i.includes(a))),s=t.filter(i=>!e.some(a=>a.includes(i)||i.includes(a)));return r.length>0&&n.push(`\u4E22\u5931\u4E86\u5173\u952E\u4E3B\u9898: ${r.slice(0,3).join(", ")}`),s.length>0&&n.push(`\u5F15\u5165\u4E86\u65B0\u7684\u4E3B\u9898: ${s.slice(0,3).join(", ")}`),n.length===0&&n.push("\u8BED\u4E49\u76F8\u5173\u6027\u8F83\u4F4E"),n}generateCorrectionPrompt(e,t,n){let r=`\u26A0\uFE0F \u504F\u79BB\u68C0\u6D4B\u8B66\u544A
1240
1343
 
1241
1344
  \u68C0\u6D4B\u5230${t==="severe"?"\u4E25\u91CD":"\u8F7B\u5FAE"}\u504F\u79BB\u539F\u59CB\u95EE\u9898\u3002
1242
1345
 
@@ -1248,11 +1351,11 @@ ${n.map(s=>`\u2022 ${s}`).join(`
1248
1351
 
1249
1352
  \u8BF7\u7ACB\u5373\u8C03\u6574\u601D\u8DEF\uFF0C\u91CD\u65B0\u805A\u7126\u4E8E\u539F\u59CB\u95EE\u9898\u7684\u6838\u5FC3\u8981\u6C42\u3002`;return t==="severe"&&(r+=`
1250
1353
 
1251
- \u{1F3AF} \u91CD\u8981\u63D0\u9192\uFF1A\u8BF7\u91CD\u65B0\u5F00\u59CB\u5206\u6790\u539F\u59CB\u95EE\u9898\uFF0C\u5FFD\u7565\u4E4B\u524D\u7684\u8FB9\u7F18\u63A2\u7D22\u3002`),r}}});function Ra(o){let e=Lu[o],t=process.env[o]||e.defaultValue;switch(e.type){case"boolean":return t.toLowerCase()==="true";case"number":return parseFloat(t);case"string":default:return t}}function Ue(o){let e=Ra(o);return typeof e=="number"?e:parseFloat(String(e))}function ms(o){let e=Ra(o);return typeof e=="boolean"?e:String(e).toLowerCase()==="true"}var Lu,ds=S(()=>{Lu={USE_LLM_DISCLOSURE:{name:"USE_LLM_DISCLOSURE",defaultValue:"true",description:"\u662F\u5426\u4F7F\u7528 LLM \u667A\u80FD\u62AB\u9732\u5386\u53F2\u4FE1\u606F\u3002\u542F\u7528\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u4F7F\u7528 LLM \u5206\u6790\u5E76\u7B5B\u9009\u76F8\u5173\u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u63D0\u9AD8\u4EFB\u52A1\u6267\u884C\u7CBE\u51C6\u5EA6",type:"boolean",category:"LLM \u914D\u7F6E",example:"true"},USE_LLM_SUMMARY:{name:"USE_LLM_SUMMARY",defaultValue:"true",description:"\u662F\u5426\u4F7F\u7528 LLM \u751F\u6210\u4EFB\u52A1\u6458\u8981\u3002\u542F\u7528\u540E\uFF0C\u6BCF\u4E2A\u6B65\u9AA4\u5B8C\u6210\u65F6\u4F1A\u751F\u6210\u7B80\u6D01\u6458\u8981\u4F9B\u540E\u7EED\u6B65\u9AA4\u53C2\u8003",type:"boolean",category:"LLM \u914D\u7F6E",example:"true"},CONTEXT_COMPRESSION_INTERVAL:{name:"CONTEXT_COMPRESSION_INTERVAL",defaultValue:"15",description:"\u4E0A\u4E0B\u6587\u538B\u7F29\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u6267\u884C\u4E00\u6B21\u4E0A\u4E0B\u6587\u538B\u7F29\uFF0C\u907F\u514D\u4E0A\u4E0B\u6587\u8FC7\u957F",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"15"},CONTEXT_SEMANTIC_CHECK_INTERVAL:{name:"CONTEXT_SEMANTIC_CHECK_INTERVAL",defaultValue:"5",description:"\u8BED\u4E49\u68C0\u67E5\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u68C0\u67E5\u4E00\u6B21\u8BED\u4E49\u504F\u79BB\u60C5\u51B5",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"5"},CONTEXT_ANCHOR_INTERVAL:{name:"CONTEXT_ANCHOR_INTERVAL",defaultValue:"10",description:"\u951A\u70B9\u6CE8\u5165\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u6CE8\u5165\u4E00\u6B21\u539F\u59CB\u4EFB\u52A1\u951A\u70B9\uFF0C\u9632\u6B62\u4EFB\u52A1\u504F\u79BB",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"10"},CONTEXT_SIMILARITY_THRESHOLD:{name:"CONTEXT_SIMILARITY_THRESHOLD",defaultValue:"0.3",description:"\u8BED\u4E49\u76F8\u4F3C\u5EA6\u9608\u503C\uFF080-1\uFF09\u3002\u4F4E\u4E8E\u6B64\u9608\u503C\u8BA4\u4E3A\u8BED\u4E49\u504F\u79BB\uFF0C\u9700\u8981\u89E6\u53D1\u7EA0\u6B63\u673A\u5236",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.3"},CONTEXT_MAX_MESSAGES:{name:"CONTEXT_MAX_MESSAGES",defaultValue:"50",description:"\u538B\u7F29\u524D\u6700\u5927\u6D88\u606F\u6570\u3002\u4E0A\u4E0B\u6587\u6D88\u606F\u6570\u8D85\u8FC7\u6B64\u503C\u65F6\u89E6\u53D1\u538B\u7F29",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"50"},CONTEXT_DRIFT_THRESHOLD:{name:"CONTEXT_DRIFT_THRESHOLD",defaultValue:"0.25",description:"\u4E0A\u4E0B\u6587\u504F\u79BB\u7EA0\u6B63\u9608\u503C\uFF080-1\uFF09\u3002\u8BED\u4E49\u504F\u79BB\u5EA6\u8D85\u8FC7\u6B64\u503C\u65F6\u89E6\u53D1\u504F\u79BB\u7EA0\u6B63",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.25"},CONTEXT_COMPRESSION_RATIO:{name:"CONTEXT_COMPRESSION_RATIO",defaultValue:"0.7",description:"\u76EE\u6807\u538B\u7F29\u7387\uFF080-1\uFF09\u3002\u538B\u7F29\u540E\u7684\u4E0A\u4E0B\u6587\u76EE\u6807\u5927\u5C0F\u76F8\u5BF9\u4E8E\u539F\u59CB\u5927\u5C0F\u7684\u6BD4\u4F8B",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.7"}}});function Rr(){return{...Du,compressionInterval:Ue("CONTEXT_COMPRESSION_INTERVAL"),semanticCheckInterval:Ue("CONTEXT_SEMANTIC_CHECK_INTERVAL"),anchorInjectionInterval:Ue("CONTEXT_ANCHOR_INTERVAL"),similarityThreshold:Ue("CONTEXT_SIMILARITY_THRESHOLD"),maxMessagesBeforeCompression:Ue("CONTEXT_MAX_MESSAGES"),driftCorrectionThreshold:Ue("CONTEXT_DRIFT_THRESHOLD"),compressionRatioTarget:Ue("CONTEXT_COMPRESSION_RATIO")}}var Du,fs=S(()=>{ds();Du={compressionInterval:15,semanticCheckInterval:5,anchorInjectionInterval:10,similarityThreshold:.3,maxMessagesBeforeCompression:50,enableSmartCompression:!0,enableSemanticAnalysis:!0,enableAnchorSystem:!0,driftCorrectionThreshold:.25,maxContextLength:100,compressionRatioTarget:.7}});var Fa={};j(Fa,{getGitDiff:()=>Nn,getGitStatus:()=>_n,gitAddAll:()=>hs,gitCommit:()=>ys,hasUncommittedChanges:()=>Un,isGitAvailable:()=>_u});import{execSync as rt}from"child_process";import{existsSync as Da,writeFileSync as Ou,unlinkSync as Fu}from"fs";import{join as Oa}from"path";import{tmpdir as ju}from"os";function _u(){try{let o=Oa(process.cwd(),".git");return Da(o)?(rt("git --version",{stdio:"ignore"}),C("Git is available"),!0):(C("Git not available: .git directory not found"),!1)}catch(o){return C(`Git not available: ${o.message}`),!1}}function _n(){try{return rt("git status",{encoding:"utf-8"})}catch(o){return H(`Failed to get git status: ${o.message}`),""}}function Nn(){try{let o=rt("git diff --cached",{encoding:"utf-8"}),e=rt("git diff",{encoding:"utf-8"}),t="";return o&&(t+=`=== Staged Changes ===
1354
+ \u{1F3AF} \u91CD\u8981\u63D0\u9192\uFF1A\u8BF7\u91CD\u65B0\u5F00\u59CB\u5206\u6790\u539F\u59CB\u95EE\u9898\uFF0C\u5FFD\u7565\u4E4B\u524D\u7684\u8FB9\u7F18\u63A2\u7D22\u3002`),r}}});function wc(o){let e=Lg[o],t=process.env[o]||e.defaultValue;switch(e.type){case"boolean":return t.toLowerCase()==="true";case"number":return parseFloat(t);case"string":default:return t}}function Ge(o){let e=wc(o);return typeof e=="number"?e:parseFloat(String(e))}function _s(o){let e=wc(o);return typeof e=="boolean"?e:String(e).toLowerCase()==="true"}var Lg,Ns=C(()=>{Lg={USE_LLM_DISCLOSURE:{name:"USE_LLM_DISCLOSURE",defaultValue:"true",description:"\u662F\u5426\u4F7F\u7528 LLM \u667A\u80FD\u62AB\u9732\u5386\u53F2\u4FE1\u606F\u3002\u542F\u7528\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u4F7F\u7528 LLM \u5206\u6790\u5E76\u7B5B\u9009\u76F8\u5173\u5386\u53F2\u4E0A\u4E0B\u6587\uFF0C\u63D0\u9AD8\u4EFB\u52A1\u6267\u884C\u7CBE\u51C6\u5EA6",type:"boolean",category:"LLM \u914D\u7F6E",example:"true"},USE_LLM_SUMMARY:{name:"USE_LLM_SUMMARY",defaultValue:"true",description:"\u662F\u5426\u4F7F\u7528 LLM \u751F\u6210\u4EFB\u52A1\u6458\u8981\u3002\u542F\u7528\u540E\uFF0C\u6BCF\u4E2A\u6B65\u9AA4\u5B8C\u6210\u65F6\u4F1A\u751F\u6210\u7B80\u6D01\u6458\u8981\u4F9B\u540E\u7EED\u6B65\u9AA4\u53C2\u8003",type:"boolean",category:"LLM \u914D\u7F6E",example:"true"},CONTEXT_COMPRESSION_INTERVAL:{name:"CONTEXT_COMPRESSION_INTERVAL",defaultValue:"15",description:"\u4E0A\u4E0B\u6587\u538B\u7F29\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u6267\u884C\u4E00\u6B21\u4E0A\u4E0B\u6587\u538B\u7F29\uFF0C\u907F\u514D\u4E0A\u4E0B\u6587\u8FC7\u957F",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"15"},CONTEXT_SEMANTIC_CHECK_INTERVAL:{name:"CONTEXT_SEMANTIC_CHECK_INTERVAL",defaultValue:"5",description:"\u8BED\u4E49\u68C0\u67E5\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u68C0\u67E5\u4E00\u6B21\u8BED\u4E49\u504F\u79BB\u60C5\u51B5",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"5"},CONTEXT_ANCHOR_INTERVAL:{name:"CONTEXT_ANCHOR_INTERVAL",defaultValue:"10",description:"\u951A\u70B9\u6CE8\u5165\u95F4\u9694\uFF08\u8FED\u4EE3\u6B21\u6570\uFF09\u3002\u6BCF\u9694\u591A\u5C11\u6B21\u8FED\u4EE3\u6CE8\u5165\u4E00\u6B21\u539F\u59CB\u4EFB\u52A1\u951A\u70B9\uFF0C\u9632\u6B62\u4EFB\u52A1\u504F\u79BB",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"10"},CONTEXT_SIMILARITY_THRESHOLD:{name:"CONTEXT_SIMILARITY_THRESHOLD",defaultValue:"0.3",description:"\u8BED\u4E49\u76F8\u4F3C\u5EA6\u9608\u503C\uFF080-1\uFF09\u3002\u4F4E\u4E8E\u6B64\u9608\u503C\u8BA4\u4E3A\u8BED\u4E49\u504F\u79BB\uFF0C\u9700\u8981\u89E6\u53D1\u7EA0\u6B63\u673A\u5236",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.3"},CONTEXT_MAX_MESSAGES:{name:"CONTEXT_MAX_MESSAGES",defaultValue:"50",description:"\u538B\u7F29\u524D\u6700\u5927\u6D88\u606F\u6570\u3002\u4E0A\u4E0B\u6587\u6D88\u606F\u6570\u8D85\u8FC7\u6B64\u503C\u65F6\u89E6\u53D1\u538B\u7F29",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"50"},CONTEXT_DRIFT_THRESHOLD:{name:"CONTEXT_DRIFT_THRESHOLD",defaultValue:"0.25",description:"\u4E0A\u4E0B\u6587\u504F\u79BB\u7EA0\u6B63\u9608\u503C\uFF080-1\uFF09\u3002\u8BED\u4E49\u504F\u79BB\u5EA6\u8D85\u8FC7\u6B64\u503C\u65F6\u89E6\u53D1\u504F\u79BB\u7EA0\u6B63",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.25"},CONTEXT_COMPRESSION_RATIO:{name:"CONTEXT_COMPRESSION_RATIO",defaultValue:"0.7",description:"\u76EE\u6807\u538B\u7F29\u7387\uFF080-1\uFF09\u3002\u538B\u7F29\u540E\u7684\u4E0A\u4E0B\u6587\u76EE\u6807\u5927\u5C0F\u76F8\u5BF9\u4E8E\u539F\u59CB\u5927\u5C0F\u7684\u6BD4\u4F8B",type:"number",category:"\u4E0A\u4E0B\u6587\u4F18\u5316",example:"0.7"}}});function oo(){return{...Dg,compressionInterval:Ge("CONTEXT_COMPRESSION_INTERVAL"),semanticCheckInterval:Ge("CONTEXT_SEMANTIC_CHECK_INTERVAL"),anchorInjectionInterval:Ge("CONTEXT_ANCHOR_INTERVAL"),similarityThreshold:Ge("CONTEXT_SIMILARITY_THRESHOLD"),maxMessagesBeforeCompression:Ge("CONTEXT_MAX_MESSAGES"),driftCorrectionThreshold:Ge("CONTEXT_DRIFT_THRESHOLD"),compressionRatioTarget:Ge("CONTEXT_COMPRESSION_RATIO")}}var Dg,Us=C(()=>{Ns();Dg={compressionInterval:15,semanticCheckInterval:5,anchorInjectionInterval:10,similarityThreshold:.3,maxMessagesBeforeCompression:50,enableSmartCompression:!0,enableSemanticAnalysis:!0,enableAnchorSystem:!0,driftCorrectionThreshold:.25,maxContextLength:100,compressionRatioTarget:.7}});var kc={};j(kc,{getGitDiff:()=>sr,getGitStatus:()=>or,gitAddAll:()=>Ws,gitCommit:()=>Vs,hasUncommittedChanges:()=>ir,isGitAvailable:()=>_g});import{execSync as ct}from"child_process";import{existsSync as bc,writeFileSync as Fg,unlinkSync as Og}from"fs";import{join as Tc}from"path";import{tmpdir as jg}from"os";function _g(){try{let o=Tc(process.cwd(),".git");return bc(o)?(ct("git --version",{stdio:"ignore"}),x("Git is available"),!0):(x("Git not available: .git directory not found"),!1)}catch(o){return x(`Git not available: ${o.message}`),!1}}function or(){try{return ct("git status",{encoding:"utf-8"})}catch(o){return G(`Failed to get git status: ${o.message}`),""}}function sr(){try{let o=ct("git diff --cached",{encoding:"utf-8"}),e=ct("git diff",{encoding:"utf-8"}),t="";return o&&(t+=`=== Staged Changes ===
1252
1355
  `+o+`
1253
1356
  `),e&&(t+=`=== Unstaged Changes ===
1254
- `+e),t||"No changes detected"}catch(o){return H(`Failed to get git diff: ${o.message}`),""}}function hs(){try{rt("git add .",{stdio:"inherit"})}catch(o){throw new Error(`Failed to stage changes: ${o.message}`)}}function ys(o){let e=Oa(ju(),`git-commit-${Date.now()}.txt`);try{Ou(e,o,"utf-8"),rt(`git commit -F "${e}"`,{stdio:"inherit"})}catch(t){throw new Error(`Failed to commit: ${t.message}`)}finally{try{Da(e)&&Fu(e)}catch(t){H(`Failed to cleanup temporary file: ${t.message}`)}}}function Un(){try{return rt("git status --porcelain",{encoding:"utf-8"}).trim().length>0}catch(o){return H(`Failed to check for uncommitted changes: ${o.message}`),!1}}var Dr=S(()=>{Y()});var Ss={};j(Ss,{FileChangeTracker:()=>We,createFileChangeTracker:()=>Or,detectFileChanges:()=>jr,generateChangeSummary:()=>_r,getCurrentSessionFileChanges:()=>zr,getFileChangeTracker:()=>ce,getSessionFileChanges:()=>Wr,handleGitCommit:()=>Ur,recordFileChange:()=>Nr,resetFileChangeTracker:()=>Fr});import{execSync as Cs}from"child_process";function ce(o){return _t||(_t=new We(o)),_t}function Or(o){return new We(o)}function Fr(){_t&&(_t.stopWatching(),_t=null)}async function jr(o,e){return ce(e).detectFileChanges(o)}function _r(o="text"){return ce().generateChangeSummaryText(o)}function Nr(o){let e={id:qe(),filePath:o.filePath,changeType:o.changeType,timestamp:new Date().toISOString(),source:o.source||"manual",content:o.content,size:o.size};return ce().trackSessionFileChange("default-session",void 0,[e]),e}async function Ur(o){return ce().handleGitCommit(o)}function Wr(o){return ce().getSessionFileChanges(o)}function zr(){return ce().getCurrentSessionFileChanges()}var Nu,We,_t,ot=S(()=>{fr();Dr();Nu={maxCommitHistory:50,enableGitIntegration:!0,trackSessionChanges:!0,autoDetectChanges:!0,excludePatterns:["node_modules",".git","dist","build","*.log",".DS_Store","*.tmp","*.temp"],maxFileSize:1024*1024,enableFileHashing:!0,gitStatusCheckInterval:5e3,maxContentLength:1e3,maxHistoryEntries:100,enableRealTimeMonitoring:!1,sessionTimeoutMinutes:60,enableChangeNotifications:!1,logLevel:"info"},We=class{config;sessionChanges=new Map;commitHistory=[];gitStatusCache=new Map;changeCallbacks=[];isWatching=!1;gitStatusTimer;constructor(e){this.config={...Nu,...e}}async detectFileChanges(e){try{let t=[];if(this.config.enableGitIntegration){let s=await this.detectGitChanges();t.push(...s)}let n=await this.detectFilesystemChanges();t.push(...n);let r={hasChanges:t.length>0,changes:t,summary:this.generateChangeSummary(t)};return t.length>0&&this.triggerChangeCallbacks(t),r}catch(t){return console.error("\u68C0\u6D4B\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),{hasChanges:!1,changes:[],summary:{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}}}}async detectGitChanges(){let e=[];try{if(!Un())return e;let t=_n(),n=Nn(),r=this.parseGitStatus(t),s=this.getCurrentGitHash(),i=this.getCurrentBranch(),a=new Date().toISOString();for(let c of r){let l;switch(c.status){case"A":l="added";break;case"M":l="modified";break;case"D":l="deleted";break;case"R":l="renamed";break;default:continue}let g={id:qe(),filePath:c.filePath,changeType:l,timestamp:a,source:"git-status",diff:this.config.enableFileHashing?n:void 0,commitHash:s,branch:i,checksum:this.config.enableFileHashing?await this.generateFileChecksum(c.filePath):void 0};e.push(g),this.gitStatusCache.set(c.filePath,c.status)}}catch(t){console.error("\u68C0\u6D4BGit\u53D8\u66F4\u65F6\u51FA\u9519:",t)}return e}parseGitStatus(e){let t=[];try{let n=Cs("git status --porcelain",{encoding:"utf-8"});for(let r of n.trim().split(`
1255
- `))if(r.length>=3){let s=r.substring(0,2).trim(),i=r.substring(3).trim();t.push({filePath:i,status:s})}}catch(n){console.warn("\u89E3\u6790Git\u72B6\u6001\u5931\u8D25:",n)}return t}getCurrentGitHash(){try{return Cs("git rev-parse HEAD",{encoding:"utf-8"}).trim()}catch{return"unknown"}}getCurrentBranch(){try{return Cs("git rev-parse --abbrev-ref HEAD",{encoding:"utf-8"}).trim()}catch{return"unknown"}}async detectFilesystemChanges(){return[]}generateChangeSummary(e){let t={totalFiles:e.length,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0};for(let n of e){switch(n.changeType){case"added":t.addedFiles++;break;case"modified":t.modifiedFiles++;break;case"deleted":t.deletedFiles++;break;case"renamed":t.renamedFiles++;break}n.size&&(t.totalSize+=n.size)}return t}async generateFileChecksum(e){try{return`sha256:${e}:${Date.now()}`}catch(t){return console.error("\u751F\u6210\u6587\u4EF6\u6821\u9A8C\u548C\u65F6\u51FA\u9519:",t),""}}triggerChangeCallbacks(e){for(let t of this.changeCallbacks)try{t(e)}catch(n){console.error("\u6267\u884C\u53D8\u66F4\u56DE\u8C03\u65F6\u51FA\u9519:",n)}}trackSessionFileChange(e,t,n){if(!this.config.trackSessionChanges)return;let r=this.sessionChanges.get(e),s=new Date().toISOString();if(r){let i=[...r.changes];for(let a of n){let c=i.findIndex(l=>l.filePath===a.filePath&&l.changeType===a.changeType);c>=0?i[c]=a:i.push(a)}r.changes=i,r.updatedAt=s,r.totalFiles=i.length,r.totalSize=i.reduce((a,c)=>a+(c.size||0),0)}else this.sessionChanges.set(e,{sessionId:e,taskId:t,changes:[...n],committed:!1,createdAt:s,updatedAt:s,totalFiles:n.length,totalSize:n.reduce((i,a)=>i+(a.size||0),0)})}getSessionFileChanges(e){return this.sessionChanges.get(e)}getAllSessionFileChanges(){return new Map(this.sessionChanges)}getCurrentSessionFileChanges(){let e,t="";for(let n of this.sessionChanges.values())n.updatedAt>t&&(t=n.updatedAt,e=n);return e}async handleGitCommit(e){if(!this.config.enableGitIntegration)return null;try{let t={hash:e.hash||this.getCurrentGitHash(),message:e.commitMessage,author:e.author||"Unknown",timestamp:new Date().toISOString(),branch:e.branch||this.getCurrentBranch(),files:[]};return this.commitHistory.unshift(t),this.commitHistory.length>this.config.maxCommitHistory&&(this.commitHistory=this.commitHistory.slice(0,this.config.maxCommitHistory)),this.markSessionChangesAsCommitted(t),t}catch(t){return console.error("\u5904\u7406Git\u63D0\u4EA4\u4E8B\u4EF6\u65F6\u51FA\u9519:",t),null}}markSessionChangesAsCommitted(e){for(let t of this.sessionChanges.values())!t.committed&&t.updatedAt>e.timestamp&&(t.committed=!0)}onChange(e){this.changeCallbacks.push(e)}removeChangeCallback(e){let t=this.changeCallbacks.indexOf(e);t>=0&&this.changeCallbacks.splice(t,1)}startWatching(){this.isWatching||(this.isWatching=!0,this.config.enableGitIntegration&&(this.gitStatusTimer=setInterval(async()=>{try{await this.detectFileChanges()}catch(e){console.error("\u76D1\u63A7Git\u72B6\u6001\u65F6\u51FA\u9519:",e)}},this.config.gitStatusCheckInterval)))}stopWatching(){this.isWatching&&(this.isWatching=!1,this.gitStatusTimer&&(clearInterval(this.gitStatusTimer),this.gitStatusTimer=void 0))}getCommitHistory(){return[...this.commitHistory]}cleanup(e=30){let t=new Date;t.setDate(t.getDate()-e);let n=t.toISOString();for(let[r,s]of this.sessionChanges.entries())s.updatedAt<n&&s.committed&&this.sessionChanges.delete(r);this.commitHistory=this.commitHistory.filter(r=>r.timestamp>n)}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}generateChangeSummaryText(e="text"){let t=[];for(let s of this.sessionChanges.values())t.push(...s.changes);if(e==="json")return JSON.stringify(this.generateChangeSummary(t),null,2);let n=this.generateChangeSummary(t),r=`\u{1F4CA} \u6587\u4EF6\u53D8\u52A8\u6458\u8981
1357
+ `+e),t||"No changes detected"}catch(o){return G(`Failed to get git diff: ${o.message}`),""}}function Ws(){try{ct("git add .",{stdio:"inherit"})}catch(o){throw new Error(`Failed to stage changes: ${o.message}`)}}function Vs(o){let e=Tc(jg(),`git-commit-${Date.now()}.txt`);try{Fg(e,o,"utf-8"),ct(`git commit -F "${e}"`,{stdio:"inherit"})}catch(t){throw new Error(`Failed to commit: ${t.message}`)}finally{try{bc(e)&&Og(e)}catch(t){G(`Failed to cleanup temporary file: ${t.message}`)}}}function ir(){try{return ct("git status --porcelain",{encoding:"utf-8"}).trim().length>0}catch(o){return G(`Failed to check for uncommitted changes: ${o.message}`),!1}}var so=C(()=>{Y()});var Hs={};j(Hs,{FileChangeTracker:()=>Be,createFileChangeTracker:()=>io,detectFileChanges:()=>co,generateChangeSummary:()=>lo,getCurrentSessionFileChanges:()=>mo,getFileChangeTracker:()=>ue,getSessionFileChanges:()=>po,handleGitCommit:()=>go,recordFileChange:()=>uo,resetFileChangeTracker:()=>ao});import{execSync as zs}from"child_process";function ue(o){return Bt||(Bt=new Be(o)),Bt}function io(o){return new Be(o)}function ao(){Bt&&(Bt.stopWatching(),Bt=null)}async function co(o,e){return ue(e).detectFileChanges(o)}function lo(o="text"){return ue().generateChangeSummaryText(o)}function uo(o){let e={id:Ze(),filePath:o.filePath,changeType:o.changeType,timestamp:new Date().toISOString(),source:o.source||"manual",content:o.content,size:o.size};return ue().trackSessionFileChange("default-session",void 0,[e]),e}async function go(o){return ue().handleGitCommit(o)}function po(o){return ue().getSessionFileChanges(o)}function mo(){return ue().getCurrentSessionFileChanges()}var Ng,Be,Bt,lt=C(()=>{Dr();so();Ng={maxCommitHistory:50,enableGitIntegration:!0,trackSessionChanges:!0,autoDetectChanges:!0,excludePatterns:["node_modules",".git","dist","build","*.log",".DS_Store","*.tmp","*.temp"],maxFileSize:1024*1024,enableFileHashing:!0,gitStatusCheckInterval:5e3,maxContentLength:1e3,maxHistoryEntries:100,enableRealTimeMonitoring:!1,sessionTimeoutMinutes:60,enableChangeNotifications:!1,logLevel:"info"},Be=class{config;sessionChanges=new Map;commitHistory=[];gitStatusCache=new Map;changeCallbacks=[];isWatching=!1;gitStatusTimer;constructor(e){this.config={...Ng,...e}}async detectFileChanges(e){try{let t=[];if(this.config.enableGitIntegration){let s=await this.detectGitChanges();t.push(...s)}let n=await this.detectFilesystemChanges();t.push(...n);let r={hasChanges:t.length>0,changes:t,summary:this.generateChangeSummary(t)};return t.length>0&&this.triggerChangeCallbacks(t),r}catch(t){return console.error("\u68C0\u6D4B\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),{hasChanges:!1,changes:[],summary:{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}}}}async detectGitChanges(){let e=[];try{if(!ir())return e;let t=or(),n=sr(),r=this.parseGitStatus(t),s=this.getCurrentGitHash(),i=this.getCurrentBranch(),a=new Date().toISOString();for(let c of r){let l;switch(c.status){case"A":l="added";break;case"M":l="modified";break;case"D":l="deleted";break;case"R":l="renamed";break;default:continue}let u={id:Ze(),filePath:c.filePath,changeType:l,timestamp:a,source:"git-status",diff:this.config.enableFileHashing?n:void 0,commitHash:s,branch:i,checksum:this.config.enableFileHashing?await this.generateFileChecksum(c.filePath):void 0};e.push(u),this.gitStatusCache.set(c.filePath,c.status)}}catch(t){console.error("\u68C0\u6D4BGit\u53D8\u66F4\u65F6\u51FA\u9519:",t)}return e}parseGitStatus(e){let t=[];try{let n=zs("git status --porcelain",{encoding:"utf-8"});for(let r of n.trim().split(`
1358
+ `))if(r.length>=3){let s=r.substring(0,2).trim(),i=r.substring(3).trim();t.push({filePath:i,status:s})}}catch(n){console.warn("\u89E3\u6790Git\u72B6\u6001\u5931\u8D25:",n)}return t}getCurrentGitHash(){try{return zs("git rev-parse HEAD",{encoding:"utf-8"}).trim()}catch{return"unknown"}}getCurrentBranch(){try{return zs("git rev-parse --abbrev-ref HEAD",{encoding:"utf-8"}).trim()}catch{return"unknown"}}async detectFilesystemChanges(){return[]}generateChangeSummary(e){let t={totalFiles:e.length,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0};for(let n of e){switch(n.changeType){case"added":t.addedFiles++;break;case"modified":t.modifiedFiles++;break;case"deleted":t.deletedFiles++;break;case"renamed":t.renamedFiles++;break}n.size&&(t.totalSize+=n.size)}return t}async generateFileChecksum(e){try{return`sha256:${e}:${Date.now()}`}catch(t){return console.error("\u751F\u6210\u6587\u4EF6\u6821\u9A8C\u548C\u65F6\u51FA\u9519:",t),""}}triggerChangeCallbacks(e){for(let t of this.changeCallbacks)try{t(e)}catch(n){console.error("\u6267\u884C\u53D8\u66F4\u56DE\u8C03\u65F6\u51FA\u9519:",n)}}trackSessionFileChange(e,t,n){if(!this.config.trackSessionChanges)return;let r=this.sessionChanges.get(e),s=new Date().toISOString();if(r){let i=[...r.changes];for(let a of n){let c=i.findIndex(l=>l.filePath===a.filePath&&l.changeType===a.changeType);c>=0?i[c]=a:i.push(a)}r.changes=i,r.updatedAt=s,r.totalFiles=i.length,r.totalSize=i.reduce((a,c)=>a+(c.size||0),0)}else this.sessionChanges.set(e,{sessionId:e,taskId:t,changes:[...n],committed:!1,createdAt:s,updatedAt:s,totalFiles:n.length,totalSize:n.reduce((i,a)=>i+(a.size||0),0)})}getSessionFileChanges(e){return this.sessionChanges.get(e)}getAllSessionFileChanges(){return new Map(this.sessionChanges)}getCurrentSessionFileChanges(){let e,t="";for(let n of this.sessionChanges.values())n.updatedAt>t&&(t=n.updatedAt,e=n);return e}async handleGitCommit(e){if(!this.config.enableGitIntegration)return null;try{let t={hash:e.hash||this.getCurrentGitHash(),message:e.commitMessage,author:e.author||"Unknown",timestamp:new Date().toISOString(),branch:e.branch||this.getCurrentBranch(),files:[]};return this.commitHistory.unshift(t),this.commitHistory.length>this.config.maxCommitHistory&&(this.commitHistory=this.commitHistory.slice(0,this.config.maxCommitHistory)),this.markSessionChangesAsCommitted(t),t}catch(t){return console.error("\u5904\u7406Git\u63D0\u4EA4\u4E8B\u4EF6\u65F6\u51FA\u9519:",t),null}}markSessionChangesAsCommitted(e){for(let t of this.sessionChanges.values())!t.committed&&t.updatedAt>e.timestamp&&(t.committed=!0)}onChange(e){this.changeCallbacks.push(e)}removeChangeCallback(e){let t=this.changeCallbacks.indexOf(e);t>=0&&this.changeCallbacks.splice(t,1)}startWatching(){this.isWatching||(this.isWatching=!0,this.config.enableGitIntegration&&(this.gitStatusTimer=setInterval(async()=>{try{await this.detectFileChanges()}catch(e){console.error("\u76D1\u63A7Git\u72B6\u6001\u65F6\u51FA\u9519:",e)}},this.config.gitStatusCheckInterval)))}stopWatching(){this.isWatching&&(this.isWatching=!1,this.gitStatusTimer&&(clearInterval(this.gitStatusTimer),this.gitStatusTimer=void 0))}getCommitHistory(){return[...this.commitHistory]}cleanup(e=30){let t=new Date;t.setDate(t.getDate()-e);let n=t.toISOString();for(let[r,s]of this.sessionChanges.entries())s.updatedAt<n&&s.committed&&this.sessionChanges.delete(r);this.commitHistory=this.commitHistory.filter(r=>r.timestamp>n)}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}generateChangeSummaryText(e="text"){let t=[];for(let s of this.sessionChanges.values())t.push(...s.changes);if(e==="json")return JSON.stringify(this.generateChangeSummary(t),null,2);let n=this.generateChangeSummary(t),r=`\u{1F4CA} \u6587\u4EF6\u53D8\u52A8\u6458\u8981
1256
1359
 
1257
1360
  `;return r+=`\u{1F4C1} \u603B\u6587\u4EF6\u6570: ${n.totalFiles}
1258
1361
  `,r+=`\u2795 \u65B0\u589E\u6587\u4EF6: ${n.addedFiles}
@@ -1261,7 +1364,7 @@ ${n.map(s=>`\u2022 ${s}`).join(`
1261
1364
  `,r+=`\u{1F504} \u91CD\u547D\u540D\u6587\u4EF6: ${n.renamedFiles}
1262
1365
  `,r+=`\u{1F4E6} \u603B\u5927\u5C0F: ${(n.totalSize/1024).toFixed(2)} KB
1263
1366
  `,r+=`
1264
- \u{1F550} \u751F\u6210\u65F6\u95F4: ${new Date().toLocaleString()}`,r}},_t=null});function ze(o,e){if(!Vr){let t=o||new We;Vr=new Hr(t,e)}return Vr}function ja(o,e){return new Hr(o,e)}function _a(){Vr=null}var Uu,Hr,Vr,Wn=S(()=>{ot();Uu={promptIntegration:{enabled:!0,maxSummaryLength:500,includeFileList:!0,includeChangeDetails:!1,priority:"low"},anchorIntegration:{enabled:!0,anchorPrefix:"workspace-change-",includeAllChanges:!1},toolIntegration:{enabled:!0,maxResultsPerQuery:20},workspaceAuxiliary:{enabled:!0,role:"helper",maxContextRatio:.2}},Hr=class{fileChangeTracker;config;anchors=new Map;constructor(e,t){this.fileChangeTracker=e,this.config={...Uu,...t}}generatePromptIntegrationContent(){if(!this.config.promptIntegration.enabled)return"";try{let e=this.fileChangeTracker.getCurrentSessionFileChanges();if(!e||e.changes.length===0)return"";let t=`\u{1F4A1} \u5DE5\u4F5C\u533A\u6587\u4EF6\u53D8\u66F4\u4FE1\u606F\uFF08\u4EC5\u4F5C\u8F85\u52A9\u53C2\u8003\uFF09\uFF1A
1367
+ \u{1F550} \u751F\u6210\u65F6\u95F4: ${new Date().toLocaleString()}`,r}},Bt=null});function qe(o,e){if(!fo){let t=o||new Be;fo=new ho(t,e)}return fo}function Ec(o,e){return new ho(o,e)}function Pc(){fo=null}var Ug,ho,fo,ar=C(()=>{lt();Ug={promptIntegration:{enabled:!0,maxSummaryLength:500,includeFileList:!0,includeChangeDetails:!1,priority:"low"},anchorIntegration:{enabled:!0,anchorPrefix:"workspace-change-",includeAllChanges:!1},toolIntegration:{enabled:!0,maxResultsPerQuery:20},workspaceAuxiliary:{enabled:!0,role:"helper",maxContextRatio:.2}},ho=class{fileChangeTracker;config;anchors=new Map;constructor(e,t){this.fileChangeTracker=e,this.config={...Ug,...t}}generatePromptIntegrationContent(){if(!this.config.promptIntegration.enabled)return"";try{let e=this.fileChangeTracker.getCurrentSessionFileChanges();if(!e||e.changes.length===0)return"";let t=`\u{1F4A1} \u5DE5\u4F5C\u533A\u6587\u4EF6\u53D8\u66F4\u4FE1\u606F\uFF08\u4EC5\u4F5C\u8F85\u52A9\u53C2\u8003\uFF09\uFF1A
1265
1368
 
1266
1369
  `,n=this.config.promptIntegration.maxSummaryLength-t.length,s=this.fileChangeTracker.generateChangeSummaryText("text").split(`
1267
1370
  `),i="";for(let a of s)if(i.length+a.length<n)i+=a+`
@@ -1272,21 +1375,21 @@ ${n.map(s=>`\u2022 ${s}`).join(`
1272
1375
  `;break}t+=`
1273
1376
  `}return this.config.promptIntegration.includeChangeDetails&&n>100&&(t+=`\u{1F4DD} \u53D8\u66F4\u8BE6\u60C5\u9884\u89C8\uFF1A
1274
1377
  `),t+=`\u26A0\uFE0F \u4EE5\u4E0A\u5DE5\u4F5C\u533A\u4FE1\u606F\u4EC5\u4F5C\u4E3A\u8F85\u52A9\u53C2\u8003\uFF0C\u60A8\u5E94\u4E13\u6CE8\u4E8E\u89E3\u51B3\u5F53\u524D\u4E3B\u8981\u4EFB\u52A1\u3002
1275
- `,t}catch(e){return console.error("\u751F\u6210\u63D0\u793A\u8BCD\u96C6\u6210\u5185\u5BB9\u65F6\u51FA\u9519:",e),""}}generateChangeAnchors(){if(!this.config.anchorIntegration.enabled)return new Map;try{let e=new Map,t=this.fileChangeTracker.getCurrentSessionFileChanges();if(t&&t.changes.length>0)for(let n of t.changes){let r=`${this.config.anchorIntegration.anchorPrefix}${n.id}`;e.set(r,n.filePath),this.anchors.set(r,n.id)}return e}catch(e){return console.error("\u751F\u6210\u53D8\u66F4\u951A\u70B9\u65F6\u51FA\u9519:",e),new Map}}getChangeByAnchor(e){let t=this.anchors.get(e);if(!t)return;let n=this.fileChangeTracker.getCurrentSessionFileChanges();if(n)return n.changes.find(r=>r.id===t)}async searchFileChanges(e){if(!this.config.toolIntegration.enabled)return[];try{let t=this.fileChangeTracker.getCurrentSessionFileChanges();if(!t||t.changes.length===0)return[];let n=[...t.changes];e.filter&&(n=this.applyFilter(n,e.filter)),e.sortBy&&(n=this.applySort(n,e.sortBy,e.sortOrder||"desc"));let r=e.limit||this.config.toolIntegration.maxResultsPerQuery,s=e.offset||0;return n=n.slice(s,s+r),e.includeContent,n}catch(t){return console.error("\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),[]}}getChangeSummary(){try{let e=this.fileChangeTracker.getCurrentSessionFileChanges();return!e||e.changes.length===0?{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}:{totalFiles:e.changes.length,addedFiles:e.changes.filter(n=>n.changeType==="added").length,modifiedFiles:e.changes.filter(n=>n.changeType==="modified").length,deletedFiles:e.changes.filter(n=>n.changeType==="deleted").length,renamedFiles:e.changes.filter(n=>n.changeType==="renamed").length,totalSize:e.changes.reduce((n,r)=>n+(r.size||0),0)}}catch(e){return console.error("\u83B7\u53D6\u53D8\u66F4\u6458\u8981\u65F6\u51FA\u9519:",e),{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}}}applyFilter(e,t){return e.filter(n=>{if(t.changeTypes&&t.changeTypes.length>0&&!t.changeTypes.includes(n.changeType)||t.filePatterns&&t.filePatterns.length>0&&!t.filePatterns.some(s=>new RegExp(s.replace(/\*/g,".*").replace(/\?/g,".")).test(n.filePath)))return!1;if(t.dateRange){let r=new Date(n.timestamp),s=new Date(t.dateRange.start),i=new Date(t.dateRange.end);if(r<s||r>i)return!1}return!(t.author&&n.author!==t.author||t.branch&&n.branch!==t.branch||t.minFileSize&&(n.size||0)<t.minFileSize||t.maxFileSize&&(n.size||0)>t.maxFileSize||t.sessionId&&n.sessionId!==t.sessionId||t.taskId&&n.taskId!==t.taskId)})}applySort(e,t,n){return[...e].sort((r,s)=>{let i,a;switch(t){case"timestamp":i=new Date(r.timestamp).getTime(),a=new Date(s.timestamp).getTime();break;case"filePath":i=r.filePath,a=s.filePath;break;case"size":i=r.size||0,a=s.size||0;break;case"type":i=r.changeType,a=s.changeType;break;default:i=new Date(r.timestamp).getTime(),a=new Date(s.timestamp).getTime()}return i<a?n==="asc"?-1:1:i>a?n==="asc"?1:-1:0})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}shouldIncludeWorkspaceContext(e){return!!this.config.workspaceAuxiliary.enabled}getMaxWorkspaceContextLength(e){return this.config.workspaceAuxiliary.enabled?Math.floor(e*this.config.workspaceAuxiliary.maxContextRatio):0}},Vr=null});var xs={};j(xs,{AnchorInjector:()=>st,createAnchorInjector:()=>Na});function Na(o,e){return new st(o,e)}var st,zn=S(()=>{gs();ps();fs();Y();Wn();ot();st=class{anchorManager;semanticAnalyzer;contextConfig;constructor(e,t){this.anchorManager=new Fn(e),this.semanticAnalyzer=new jn(t),this.contextConfig=Rr()}async injectAnchors(e){let{taskDescription:t,iterations:n,messages:r,lastSemanticCheckIteration:s,session:i,logWarning:a}=e,c=s,l=[...r];if(this.contextConfig.enableAnchorSystem)try{let g=ce(),p=ze(g);await g.detectFileChanges();let u=p.generateChangeAnchors();if(u.size>0){let d={role:"system",content:`\u{1F4A1} \u5DE5\u4F5C\u533A\u6587\u4EF6\u53D8\u66F4\u951A\u70B9\uFF08\u4EC5\u4F5C\u8F85\u52A9\u53C2\u8003\uFF09\uFF1A
1276
- ${Array.from(u.entries()).map(([w,h])=>`${w}: ${h}`).join(`
1378
+ `,t}catch(e){return console.error("\u751F\u6210\u63D0\u793A\u8BCD\u96C6\u6210\u5185\u5BB9\u65F6\u51FA\u9519:",e),""}}generateChangeAnchors(){if(!this.config.anchorIntegration.enabled)return new Map;try{let e=new Map,t=this.fileChangeTracker.getCurrentSessionFileChanges();if(t&&t.changes.length>0)for(let n of t.changes){let r=`${this.config.anchorIntegration.anchorPrefix}${n.id}`;e.set(r,n.filePath),this.anchors.set(r,n.id)}return e}catch(e){return console.error("\u751F\u6210\u53D8\u66F4\u951A\u70B9\u65F6\u51FA\u9519:",e),new Map}}getChangeByAnchor(e){let t=this.anchors.get(e);if(!t)return;let n=this.fileChangeTracker.getCurrentSessionFileChanges();if(n)return n.changes.find(r=>r.id===t)}async searchFileChanges(e){if(!this.config.toolIntegration.enabled)return[];try{let t=this.fileChangeTracker.getCurrentSessionFileChanges();if(!t||t.changes.length===0)return[];let n=[...t.changes];e.filter&&(n=this.applyFilter(n,e.filter)),e.sortBy&&(n=this.applySort(n,e.sortBy,e.sortOrder||"desc"));let r=e.limit||this.config.toolIntegration.maxResultsPerQuery,s=e.offset||0;return n=n.slice(s,s+r),e.includeContent,n}catch(t){return console.error("\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),[]}}getChangeSummary(){try{let e=this.fileChangeTracker.getCurrentSessionFileChanges();return!e||e.changes.length===0?{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}:{totalFiles:e.changes.length,addedFiles:e.changes.filter(n=>n.changeType==="added").length,modifiedFiles:e.changes.filter(n=>n.changeType==="modified").length,deletedFiles:e.changes.filter(n=>n.changeType==="deleted").length,renamedFiles:e.changes.filter(n=>n.changeType==="renamed").length,totalSize:e.changes.reduce((n,r)=>n+(r.size||0),0)}}catch(e){return console.error("\u83B7\u53D6\u53D8\u66F4\u6458\u8981\u65F6\u51FA\u9519:",e),{totalFiles:0,addedFiles:0,modifiedFiles:0,deletedFiles:0,renamedFiles:0,totalSize:0}}}applyFilter(e,t){return e.filter(n=>{if(t.changeTypes&&t.changeTypes.length>0&&!t.changeTypes.includes(n.changeType)||t.filePatterns&&t.filePatterns.length>0&&!t.filePatterns.some(s=>new RegExp(s.replace(/\*/g,".*").replace(/\?/g,".")).test(n.filePath)))return!1;if(t.dateRange){let r=new Date(n.timestamp),s=new Date(t.dateRange.start),i=new Date(t.dateRange.end);if(r<s||r>i)return!1}return!(t.author&&n.author!==t.author||t.branch&&n.branch!==t.branch||t.minFileSize&&(n.size||0)<t.minFileSize||t.maxFileSize&&(n.size||0)>t.maxFileSize||t.sessionId&&n.sessionId!==t.sessionId||t.taskId&&n.taskId!==t.taskId)})}applySort(e,t,n){return[...e].sort((r,s)=>{let i,a;switch(t){case"timestamp":i=new Date(r.timestamp).getTime(),a=new Date(s.timestamp).getTime();break;case"filePath":i=r.filePath,a=s.filePath;break;case"size":i=r.size||0,a=s.size||0;break;case"type":i=r.changeType,a=s.changeType;break;default:i=new Date(r.timestamp).getTime(),a=new Date(s.timestamp).getTime()}return i<a?n==="asc"?-1:1:i>a?n==="asc"?1:-1:0})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}shouldIncludeWorkspaceContext(e){return!!this.config.workspaceAuxiliary.enabled}getMaxWorkspaceContextLength(e){return this.config.workspaceAuxiliary.enabled?Math.floor(e*this.config.workspaceAuxiliary.maxContextRatio):0}},fo=null});var Js={};j(Js,{AnchorInjector:()=>ut,createAnchorInjector:()=>$c});function $c(o,e){return new ut(o,e)}var ut,cr=C(()=>{Os();js();Us();Y();ar();lt();ut=class{anchorManager;semanticAnalyzer;contextConfig;constructor(e,t){this.anchorManager=new nr(e),this.semanticAnalyzer=new rr(t),this.contextConfig=oo()}async injectAnchors(e){let{taskDescription:t,iterations:n,messages:r,lastSemanticCheckIteration:s,session:i,logWarning:a}=e,c=s,l=[...r];if(this.contextConfig.enableAnchorSystem)try{let u=ue(),p=qe(u);await u.detectFileChanges();let g=p.generateChangeAnchors();if(g.size>0){let m={role:"system",content:`\u{1F4A1} \u5DE5\u4F5C\u533A\u6587\u4EF6\u53D8\u66F4\u951A\u70B9\uFF08\u4EC5\u4F5C\u8F85\u52A9\u53C2\u8003\uFF09\uFF1A
1379
+ ${Array.from(g.entries()).map(([w,v])=>`${w}: ${v}`).join(`
1277
1380
  `)}
1278
1381
 
1279
- \u26A0\uFE0F \u4EE5\u4E0A\u951A\u70B9\u4FE1\u606F\u4EC5\u4F5C\u4E3A\u8F85\u52A9\u53C2\u8003\uFF0C\u60A8\u5E94\u4E13\u6CE8\u4E8E\u89E3\u51B3\u5F53\u524D\u4E3B\u8981\u4EFB\u52A1\u3002`},y=l.findIndex(w=>w.role==="system");y!==-1&&l.splice(y+1,0,d),C(`\u5DF2\u6CE8\u5165 ${u.size} \u4E2A\u6587\u4EF6\u53D8\u66F4\u951A\u70B9`)}}catch(g){C(`\u751F\u6210\u6587\u4EF6\u53D8\u66F4\u951A\u70B9\u65F6\u51FA\u9519: ${g}`)}if(this.contextConfig.enableSemanticAnalysis&&n-c>=this.contextConfig.semanticCheckInterval)try{let g=l.map(u=>u.content).filter(Boolean).join(`
1280
- `),p=await this.semanticAnalyzer.analyzeSemanticDrift(t||this.anchorManager.getOriginalQuestion(),g,n);if(C(`\u8BED\u4E49\u5206\u6790 - \u76F8\u4F3C\u5EA6: ${p.similarityScore.toFixed(2)}, \u504F\u79BB\u7EA7\u522B: ${p.driftLevel}`),p.driftLevel==="severe"||p.driftLevel==="moderate"&&p.similarityScore<this.contextConfig.similarityThreshold){let u=`\u26A0\uFE0F \u68C0\u6D4B\u5230${p.driftLevel==="severe"?"\u4E25\u91CD":"\u4E2D\u5EA6"}\u504F\u79BB\uFF0C\u6B63\u5728\u7EA0\u6B63...`;a?a(u,i):C(u);let m=`\u68C0\u6D4B\u5230${p.driftLevel}\u504F\u79BB\uFF1A${p.deviationFactors.join("; ")}`,d=await this.anchorManager.createAnchorMessage(n,p.similarityScore,p.driftLevel,m,g);C(`\u{1F3AF} \u6CE8\u5165\u504F\u79BB\u7EA0\u6B63\u951A\u70B9\uFF08\u8FED\u4EE3 ${n}\uFF0C\u504F\u79BB\u7EA7\u522B: ${p.driftLevel}\uFF0C\u4F18\u5148\u7EA7: ${d.metadata?.priority}}`),l.push(d)}c=n}catch(g){H(`\u8BED\u4E49\u5206\u6790\u5931\u8D25: ${g.message}`)}if(this.contextConfig.enableAnchorSystem&&n%this.contextConfig.anchorInjectionInterval===0)try{let g=l.map(u=>u.content).filter(Boolean).join(`
1281
- `),p=await this.anchorManager.calculateSemanticSimilarity(g);if(await this.anchorManager.shouldInjectAnchor(n,p,g)){let u=await this.anchorManager.createAnchorMessage(n,p,void 0,void 0,g);C(`\u{1F3AF} \u6CE8\u5165\u4E0A\u4E0B\u6587\u951A\u70B9\uFF08\u8FED\u4EE3 ${n}\uFF0C\u76F8\u4F3C\u5EA6: ${p.toFixed(2)}\uFF0C\u4F18\u5148\u7EA7: ${u.metadata?.priority}}`),l.push(u)}}catch(g){H(`\u951A\u70B9\u6CE8\u5165\u5931\u8D25: ${g.message}`)}return{messages:l,lastSemanticCheckIteration:c}}}});var ws=S(()=>{La();gs();ps();zn()});var Ua={};j(Ua,{GradleBuildParser:()=>Vn,JavaDependencyAnalyzer:()=>qr,MavenPomParser:()=>Br,analyzeJavaProject:()=>bs});import{readFileSync as Jr,existsSync as Gr}from"fs";import{resolve as vs}from"path";import{parseString as Wu}from"xml2js";async function bs(o=process.cwd()){let e=vs(o,"pom.xml"),t=vs(o,"build.gradle"),n=vs(o,"build.gradle.kts"),r=null;try{if(Gr(e)){let i=Jr(e,"utf-8");r=await new Br(i,e).parse()}else if(Gr(t)){let i=Jr(t,"utf-8");r=new Vn(i,t).parse()}else if(Gr(n)){let i=Jr(n,"utf-8");r=new Vn(i,n).parse()}if(!r)return null;let s={project:r,conflicts:[],outdated:[],unused:[],recommendations:[]};return s.recommendations=qr.generateRecommendations(s),s}catch(s){return console.error("Error analyzing Java project:",s),null}}var Br,Vn,qr,Ts=S(()=>{Br=class{content;filePath;constructor(e,t){this.content=e,this.filePath=t}async parse(){try{return new Promise((e,t)=>{Wu(this.content,{explicitArray:!1},(n,r)=>{if(n){t(n);return}try{let{project:s}=r;if(!s){e(null);return}let i={name:s.artifactId||s.name||"unknown",version:s.version||"0.0.0",description:s.description||"",groupId:s.groupId||s.parent?.groupId,artifactId:s.artifactId,packaging:s.packaging||"jar",javaVersion:this.extractJavaVersion(s),buildToolVersion:this.extractMavenVersion(),parent:s.parent?{groupId:s.parent.groupId,artifactId:s.parent.artifactId,version:s.parent.version}:void 0,dependencies:this.extractDependencies(s.dependencies?.dependency),dependencyManagement:this.extractDependencies(s.dependencyManagement?.dependencies?.dependency),properties:this.extractProperties(s.properties),modules:s.modules?.module?Array.isArray(s.modules.module)?s.modules.module:[s.modules.module]:void 0,repositories:this.extractRepositories(s.repositories?.repository)};e(i)}catch(s){t(s)}})})}catch(e){return console.error("Error parsing POM XML:",e),null}}extractJavaVersion(e){return e.properties?.["java.version"]||e.properties?.["maven.compiler.source"]||e.properties?.["maven.compiler.target"]||e.build?.plugins?.plugin?.find(n=>n.artifactId==="maven-compiler-plugin")?.configuration?.source}extractMavenVersion(){let e=this.content.match(/modelVersion>([^<]+)</);return e?e[1]:void 0}extractDependencies(e){return e?(Array.isArray(e)?e:[e]).map(n=>({groupId:n.groupId,artifactId:n.artifactId,version:n.version||"unknown",scope:n.scope||"compile",type:n.type||"jar",classifier:n.classifier,optional:n.optional==="true",exclusions:n.exclusions?.exclusion?(Array.isArray(n.exclusions.exclusion)?n.exclusions.exclusion:[n.exclusions.exclusion]).map(r=>({groupId:r.groupId,artifactId:r.artifactId})):void 0})):[]}extractProperties(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{n!=="$"&&(t[n]=e[n])}),t}extractRepositories(e){return e?(Array.isArray(e)?e:[e]).map(n=>n.url).filter(Boolean):[]}},Vn=class{content;filePath;constructor(e,t){this.content=e,this.filePath=t}parse(){try{let e=this.filePath.endsWith(".kts");return{name:this.extractProjectName(),version:this.extractVersion(),description:this.extractDescription(),groupId:this.extractGroup(),artifactId:this.extractProjectName(),javaVersion:this.extractJavaVersion(),buildToolVersion:this.extractGradleVersion(),dependencies:this.extractDependencies(e),dependencyManagement:[],properties:this.extractProperties(e)}}catch(e){return console.error("Error parsing Gradle build file:",e),null}}extractProjectName(){let e=this.content.match(/rootProject\.name\s*=\s*['"]([^'"]+)['"]/)||this.content.match(/project\(['"]([^'"]+)['"]\)/)||this.content.match(/name\s*=\s*['"]([^'"]+)['"]/);if(e)return e[1];let t=this.filePath.split(/[/\\]/);return t[t.length-2]||"unknown"}extractVersion(){let e=this.content.match(/version\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:"0.0.0"}extractDescription(){let e=this.content.match(/description\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:""}extractGroup(){let e=this.content.match(/group\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:""}extractJavaVersion(){let e=this.content.match(/sourceCompatibility\s*=\s*['"]?([^'"\s]+)['"]?/)||this.content.match(/targetCompatibility\s*=\s*['"]?([^'"\s]+)['"]?/)||this.content.match(/java\.toolchain\.languageVersion\s*=\s*JavaLanguageVersion\.of\((\d+)\)/);return e?e[1]:void 0}extractGradleVersion(){let e=this.filePath.replace(/build\.gradle(\.kts)?$/,"gradle/wrapper/gradle-wrapper.properties");if(Gr(e))try{let n=Jr(e,"utf-8").match(/distributionUrl=.*gradle-(\d+\.\d+(?:\.\d+)?)-/);if(n)return n[1]}catch{}}extractDependencies(e){let t=[];return[/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*['"]([^:'"]+):([^:'"]+):([^:'"]+)['"]/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*['"]([^:'"]+):([^:'"]+)['"]/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"],\s*version\s*:\s*['"]([^'"]+)['"]\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"]\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*["']([^"']+):([^"']+):([^"']+)["']\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*["']([^"']+):([^"']+)["']\s*\)/g].forEach(r=>{let s;for(;(s=r.exec(this.content))!==null;){let i,a,c,l;if(s.length===5)[,i,a,c,l]=s;else if(s.length===4)[,i,a,c]=s,l="managed";else continue;t.push({groupId:a,artifactId:c,version:l,scope:i.toLowerCase(),type:"jar"})}}),t}extractProperties(e){let t={},n=e?/val\s+(\w+)\s*=\s*['"]([^'"]+)['"]/g:/(\w+)\s*=\s*['"]([^'"]+)['"]/g,r;for(;(r=n.exec(this.content))!==null;)t[r[1]]=r[2];return t}},qr=class{static analyzeConflicts(e){let t=new Map,n=new Map;e.forEach(s=>{s.dependencies.forEach(i=>{let a=`${i.groupId}:${i.artifactId}`;t.has(a)||(t.set(a,new Set),n.set(a,[])),t.get(a).add(i.version),n.get(a).push(`${s.name} (${i.scope})`)})});let r=[];return t.forEach((s,i)=>{if(s.size>1){let[a,c]=i.split(":"),l=Array.from(s);r.push({groupId:a,artifactId:c,versions:l,locations:n.get(i)||[],severity:this.calculateConflictSeverity(l)})}}),r}static calculateConflictSeverity(e){let t=e.map(r=>r.split(".")[0]).filter(r=>/^\d+$/.test(r));return new Set(t).size>1?"high":e.length>2?"medium":"low"}static generateRecommendations(e){let t=[];return e.conflicts.length>0&&t.push(`\u53D1\u73B0 ${e.conflicts.length} \u4E2A\u4F9D\u8D56\u51B2\u7A81\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u7248\u672C\u7BA1\u7406`),e.outdated.length>0&&t.push(`${e.outdated.length} \u4E2A\u4F9D\u8D56\u5B58\u5728\u66F4\u65B0\u7248\u672C`),e.unused.length>0&&t.push(`${e.unused.length} \u4E2A\u4F9D\u8D56\u53EF\u80FD\u672A\u88AB\u4F7F\u7528\uFF0C\u5EFA\u8BAE\u68C0\u67E5`),e.project.dependencies.some(r=>r.groupId==="org.springframework.boot")&&t.push("\u9879\u76EE\u4F7F\u7528Spring Boot\uFF0C\u5EFA\u8BAE\u4F7F\u7528Spring Dependency Management\u63D2\u4EF6"),t}}});import{existsSync as Wa,readFileSync as zu}from"fs";import{resolve as za,dirname as Vu}from"path";function Ha(o=process.cwd()){let e={name:"unknown",version:"0.0.0",description:"",languages:["Unknown"],primaryLanguage:"Unknown",configFiles:[]},t=new Set,n=[],r="Unknown",s,i=null;for(let[a,c]of Object.entries(Va))for(let l of c.files){if(l.includes("*"))continue;let g=za(o,l);if(Wa(g)&&(t.add(c.language),n.push(l),r==="Unknown")){r=c.language,s=a;try{let p=zu(g,"utf-8"),u=c.parser(p,g);u instanceof Promise?console.warn(`Async parser not supported in sync readProjectConfig: ${a}`):i=u}catch(p){console.warn(`Error parsing ${l}: ${p instanceof Error?p.message:"Unknown error"}`)}}}return t.size===0?e:{...e,...i||{},languages:Array.from(t),primaryLanguage:r,buildTool:s,configFiles:n}}function Hu(o,e){try{let t=JSON.parse(o);return{name:t.name||"unknown",version:t.version||"0.0.0",description:t.description||"",dependencies:t.dependencies||{},devDependencies:t.devDependencies||{},entryPoints:[t.main,...typeof t.bin=="string"?[t.bin]:Object.values(t.bin||{})].filter(Boolean)}}catch{return null}}function Ju(o,e){try{let t=o.match(/name\s*=\s*['"]([^'"]+)['"]/),n=o.match(/version\s*=\s*['"]([^'"]+)['"]/),r=o.match(/description\s*=\s*['"]([^'"]+)['"]/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Gu(o,e){try{let t=o.match(/name\s*=\s*"([^"]+)"/),n=o.match(/version\s*=\s*"([^"]+)"/),r=o.match(/description\s*=\s*"([^"]+)"/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Bu(o,e){try{return{name:e.split(/[/\\]/).slice(-2,-1)[0]||"unknown",version:"0.0.0",description:""}}catch{return null}}function qu(o,e){try{let t=o.match(/module\s+([^\s]+)/),n=o.match(/go\s+([^\s]+)/),r={},s=/require\s+([^\s]+)\s+([^\s]+)/g,i;for(;(i=s.exec(o))!==null;)r[i[1]]=i[2];return{name:t&&t[1].split("/").pop()||"unknown",version:n?n[1]:"0.0.0",description:"",dependencies:r}}catch{return null}}function Ku(o,e){try{let t=o.match(/name\s*=\s*"([^"]+)"/),n=o.match(/version\s*=\s*"([^"]+)"/),r=o.match(/description\s*=\s*"([^"]+)"/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Yu(o,e){try{return{name:e.split(/[/\\]/).slice(-2,-1)[0]||"unknown",version:"0.0.0",description:""}}catch{return null}}function Xu(o,e){try{let t=JSON.parse(o);return{name:t.name||"unknown",version:t.version||"0.0.0",description:t.description||"",dependencies:t.require||{},devDependencies:t["require-dev"]||{}}}catch{return null}}function Qu(o,e){try{let n=(e.split(/[/\\]/).pop()||"unknown").replace(/\.(cs|vb|fs)proj$/,""),r=o.match(/<Version>(.*?)<\/Version>/),s=o.match(/<Description>(.*?)<\/Description>/);return{name:n,version:r?r[1]:"0.0.0",description:s?s[1]:""}}catch{return null}}function Ja(o){let e=o.map(t=>`${t.groupId}:${t.artifactId}`);return e.some(t=>t.includes("spring-boot"))?"Spring Boot":e.some(t=>t.includes("spring"))?"Spring Framework":e.some(t=>t.includes("jakarta")||t.includes("javax"))?"Jakarta EE":e.some(t=>t.includes("hibernate"))?"Hibernate":e.some(t=>t.includes("mybatis"))?"MyBatis":e.some(t=>t.includes("struts"))?"Struts":"Java Standard"}async function Zu(o,e){try{let t=await bs(Vu(e));if(!t)return null;let n=t.project,r={};n.dependencies.forEach(i=>{r[`${i.groupId}:${i.artifactId}`]=i.version});let s=Ja(n.dependencies);return{name:n.name,version:n.version,description:n.description||"",dependencies:r,languageExtensionInfo:{javaDetails:n,framework:s,javaVersion:n.javaVersion,buildToolVersion:n.buildToolVersion||"Maven"},configFiles:["pom.xml"]}}catch(t){return console.error("Error parsing POM XML with enhanced parser:",t),null}}async function eg(o,e){try{let t=await Promise.resolve().then(()=>(Ts(),Ua)),r=new t.GradleBuildParser(o,e).parse();if(!r)return null;let s={};r.dependencies.forEach(a=>{s[`${a.groupId}:${a.artifactId}`]=a.version});let i=Ja(r.dependencies);return{name:r.name,version:r.version,description:r.description||"",dependencies:s,languageExtensionInfo:{javaDetails:r,framework:i,javaVersion:r.javaVersion,buildToolVersion:r.buildToolVersion||"Gradle"},configFiles:[e.split("/").pop()||"build.gradle"]}}catch(t){return console.error("Error parsing Gradle build file with enhanced parser:",t),null}}function Ga(o=process.cwd()){let e=[];for(let[t,n]of Object.entries(Va))for(let r of n.files){if(r.includes("*"))continue;let s=za(o,r);if(Wa(s)){e.push(t);break}}return e}var Va,Ba=S(()=>{Ts();Va={nodejs:{files:["package.json"],language:"JavaScript/TypeScript",parser:Hu},"java-maven":{files:["pom.xml"],language:"Java",parser:Zu},"java-gradle":{files:["build.gradle","build.gradle.kts"],language:"Java",parser:async(o,e)=>await eg(o,e)},"python-pip":{files:["setup.py","setup.cfg"],language:"Python",parser:Ju},"python-poetry":{files:["pyproject.toml"],language:"Python",parser:Gu},"python-pipenv":{files:["Pipfile"],language:"Python",parser:Bu},go:{files:["go.mod"],language:"Go",parser:qu},rust:{files:["Cargo.toml"],language:"Rust",parser:Ku},ruby:{files:["Gemfile"],language:"Ruby",parser:Yu},php:{files:["composer.json"],language:"PHP",parser:Xu},dotnet:{files:["*.csproj","*.vbproj","*.fsproj"],language:"C#/.NET",parser:Qu}}});import{writeFileSync as tg,existsSync as ng,mkdirSync as rg}from"fs";import{resolve as qa}from"path";function Ka(o,e=process.cwd()){let t=qa(e,".nium","project");ng(t)||rg(t,{recursive:!0});let r=qa(t,"project.json"),s=JSON.stringify(o,null,2);tg(r,s,"utf-8"),console.log(`\u2705 \u9879\u76EE\u4FE1\u606F\u5DF2\u4FDD\u5B58\u81F3: ${r}`)}function Ya(o){let e=o.reduce((t,n)=>t+n.count,0);return o.map(t=>({...t,percentage:e>0?(t.count/e*100).toFixed(1)+"%":"0%"}))}var Xa=S(()=>{Lr()});import{createHash as og}from"crypto";import{readFileSync as Qa,writeFileSync as sg,existsSync as ig,statSync as ag}from"fs";import{resolve as cg}from"path";function lg(o){try{let e=Qa(o),t=og("md5");return t.update(e),t.digest("hex")}catch(e){return console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u8BA1\u7B97\u6587\u4EF6 MD5: ${o}`,e),""}}function ug(o,e=process.cwd()){try{let t=cg(e,o),n=ag(t),r=lg(t);return{path:o,size:n.size,md5:r,updatedAt:n.mtime.toISOString(),description:""}}catch(t){return console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u83B7\u53D6\u6587\u4EF6\u4FE1\u606F: ${o}`,t),null}}function gg(o){let e=new Map;if(!ig(o))return e;try{let n=Qa(o,"utf-8").trim().split(`
1282
- `);for(let r of n)if(r.trim())try{let s=JSON.parse(r);e.set(s.path,s)}catch(s){console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u89E3\u6790 JSONL \u884C: ${r}`,s)}}catch(t){console.warn(`\u26A0\uFE0F \u8BFB\u53D6 JSONL \u6587\u4EF6\u5931\u8D25: ${o}`,t)}return e}function pg(o,e){try{let t=[],n=Array.from(o.entries()).sort((r,s)=>r[0].localeCompare(s[0]));for(let[,r]of n)t.push(JSON.stringify(r));sg(e,t.join(`
1382
+ \u26A0\uFE0F \u4EE5\u4E0A\u951A\u70B9\u4FE1\u606F\u4EC5\u4F5C\u4E3A\u8F85\u52A9\u53C2\u8003\uFF0C\u60A8\u5E94\u4E13\u6CE8\u4E8E\u89E3\u51B3\u5F53\u524D\u4E3B\u8981\u4EFB\u52A1\u3002`},h=l.findIndex(w=>w.role==="system");h!==-1&&l.splice(h+1,0,m),x(`\u5DF2\u6CE8\u5165 ${g.size} \u4E2A\u6587\u4EF6\u53D8\u66F4\u951A\u70B9`)}}catch(u){x(`\u751F\u6210\u6587\u4EF6\u53D8\u66F4\u951A\u70B9\u65F6\u51FA\u9519: ${u}`)}if(this.contextConfig.enableSemanticAnalysis&&n-c>=this.contextConfig.semanticCheckInterval)try{let u=l.map(g=>g.content).filter(Boolean).join(`
1383
+ `),p=await this.semanticAnalyzer.analyzeSemanticDrift(t||this.anchorManager.getOriginalQuestion(),u,n);if(x(`\u8BED\u4E49\u5206\u6790 - \u76F8\u4F3C\u5EA6: ${p.similarityScore.toFixed(2)}, \u504F\u79BB\u7EA7\u522B: ${p.driftLevel}`),p.driftLevel==="severe"||p.driftLevel==="moderate"&&p.similarityScore<this.contextConfig.similarityThreshold){let g=`\u26A0\uFE0F \u68C0\u6D4B\u5230${p.driftLevel==="severe"?"\u4E25\u91CD":"\u4E2D\u5EA6"}\u504F\u79BB\uFF0C\u6B63\u5728\u7EA0\u6B63...`;a?a(g,i):x(g);let d=`\u68C0\u6D4B\u5230${p.driftLevel}\u504F\u79BB\uFF1A${p.deviationFactors.join("; ")}`,m=await this.anchorManager.createAnchorMessage(n,p.similarityScore,p.driftLevel,d,u);x(`\u{1F3AF} \u6CE8\u5165\u504F\u79BB\u7EA0\u6B63\u951A\u70B9\uFF08\u8FED\u4EE3 ${n}\uFF0C\u504F\u79BB\u7EA7\u522B: ${p.driftLevel}\uFF0C\u4F18\u5148\u7EA7: ${m.metadata?.priority}}`),l.push(m)}c=n}catch(u){G(`\u8BED\u4E49\u5206\u6790\u5931\u8D25: ${u.message}`)}if(this.contextConfig.enableAnchorSystem&&n%this.contextConfig.anchorInjectionInterval===0)try{let u=l.map(g=>g.content).filter(Boolean).join(`
1384
+ `),p=await this.anchorManager.calculateSemanticSimilarity(u);if(await this.anchorManager.shouldInjectAnchor(n,p,u)){let g=await this.anchorManager.createAnchorMessage(n,p,void 0,void 0,u);x(`\u{1F3AF} \u6CE8\u5165\u4E0A\u4E0B\u6587\u951A\u70B9\uFF08\u8FED\u4EE3 ${n}\uFF0C\u76F8\u4F3C\u5EA6: ${p.toFixed(2)}\uFF0C\u4F18\u5148\u7EA7: ${g.metadata?.priority}}`),l.push(g)}}catch(u){G(`\u951A\u70B9\u6CE8\u5165\u5931\u8D25: ${u.message}`)}return{messages:l,lastSemanticCheckIteration:c}}}});var Gs=C(()=>{vc();Os();js();cr()});var Mc={};j(Mc,{GradleBuildParser:()=>lr,JavaDependencyAnalyzer:()=>So,MavenPomParser:()=>xo,analyzeJavaProject:()=>qs});import{readFileSync as yo,existsSync as Co}from"fs";import{resolve as Bs}from"path";import{parseString as Wg}from"xml2js";async function qs(o=process.cwd()){let e=Bs(o,"pom.xml"),t=Bs(o,"build.gradle"),n=Bs(o,"build.gradle.kts"),r=null;try{if(Co(e)){let i=yo(e,"utf-8");r=await new xo(i,e).parse()}else if(Co(t)){let i=yo(t,"utf-8");r=new lr(i,t).parse()}else if(Co(n)){let i=yo(n,"utf-8");r=new lr(i,n).parse()}if(!r)return null;let s={project:r,conflicts:[],outdated:[],unused:[],recommendations:[]};return s.recommendations=So.generateRecommendations(s),s}catch(s){return console.error("Error analyzing Java project:",s),null}}var xo,lr,So,Ks=C(()=>{xo=class{content;filePath;constructor(e,t){this.content=e,this.filePath=t}async parse(){try{return new Promise((e,t)=>{Wg(this.content,{explicitArray:!1},(n,r)=>{if(n){t(n);return}try{let{project:s}=r;if(!s){e(null);return}let i={name:s.artifactId||s.name||"unknown",version:s.version||"0.0.0",description:s.description||"",groupId:s.groupId||s.parent?.groupId,artifactId:s.artifactId,packaging:s.packaging||"jar",javaVersion:this.extractJavaVersion(s),buildToolVersion:this.extractMavenVersion(),parent:s.parent?{groupId:s.parent.groupId,artifactId:s.parent.artifactId,version:s.parent.version}:void 0,dependencies:this.extractDependencies(s.dependencies?.dependency),dependencyManagement:this.extractDependencies(s.dependencyManagement?.dependencies?.dependency),properties:this.extractProperties(s.properties),modules:s.modules?.module?Array.isArray(s.modules.module)?s.modules.module:[s.modules.module]:void 0,repositories:this.extractRepositories(s.repositories?.repository)};e(i)}catch(s){t(s)}})})}catch(e){return console.error("Error parsing POM XML:",e),null}}extractJavaVersion(e){return e.properties?.["java.version"]||e.properties?.["maven.compiler.source"]||e.properties?.["maven.compiler.target"]||e.build?.plugins?.plugin?.find(n=>n.artifactId==="maven-compiler-plugin")?.configuration?.source}extractMavenVersion(){let e=this.content.match(/modelVersion>([^<]+)</);return e?e[1]:void 0}extractDependencies(e){return e?(Array.isArray(e)?e:[e]).map(n=>({groupId:n.groupId,artifactId:n.artifactId,version:n.version||"unknown",scope:n.scope||"compile",type:n.type||"jar",classifier:n.classifier,optional:n.optional==="true",exclusions:n.exclusions?.exclusion?(Array.isArray(n.exclusions.exclusion)?n.exclusions.exclusion:[n.exclusions.exclusion]).map(r=>({groupId:r.groupId,artifactId:r.artifactId})):void 0})):[]}extractProperties(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{n!=="$"&&(t[n]=e[n])}),t}extractRepositories(e){return e?(Array.isArray(e)?e:[e]).map(n=>n.url).filter(Boolean):[]}},lr=class{content;filePath;constructor(e,t){this.content=e,this.filePath=t}parse(){try{let e=this.filePath.endsWith(".kts");return{name:this.extractProjectName(),version:this.extractVersion(),description:this.extractDescription(),groupId:this.extractGroup(),artifactId:this.extractProjectName(),javaVersion:this.extractJavaVersion(),buildToolVersion:this.extractGradleVersion(),dependencies:this.extractDependencies(e),dependencyManagement:[],properties:this.extractProperties(e)}}catch(e){return console.error("Error parsing Gradle build file:",e),null}}extractProjectName(){let e=this.content.match(/rootProject\.name\s*=\s*['"]([^'"]+)['"]/)||this.content.match(/project\(['"]([^'"]+)['"]\)/)||this.content.match(/name\s*=\s*['"]([^'"]+)['"]/);if(e)return e[1];let t=this.filePath.split(/[/\\]/);return t[t.length-2]||"unknown"}extractVersion(){let e=this.content.match(/version\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:"0.0.0"}extractDescription(){let e=this.content.match(/description\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:""}extractGroup(){let e=this.content.match(/group\s*=\s*['"]([^'"]+)['"]/);return e?e[1]:""}extractJavaVersion(){let e=this.content.match(/sourceCompatibility\s*=\s*['"]?([^'"\s]+)['"]?/)||this.content.match(/targetCompatibility\s*=\s*['"]?([^'"\s]+)['"]?/)||this.content.match(/java\.toolchain\.languageVersion\s*=\s*JavaLanguageVersion\.of\((\d+)\)/);return e?e[1]:void 0}extractGradleVersion(){let e=this.filePath.replace(/build\.gradle(\.kts)?$/,"gradle/wrapper/gradle-wrapper.properties");if(Co(e))try{let n=yo(e,"utf-8").match(/distributionUrl=.*gradle-(\d+\.\d+(?:\.\d+)?)-/);if(n)return n[1]}catch{}}extractDependencies(e){let t=[];return[/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*['"]([^:'"]+):([^:'"]+):([^:'"]+)['"]/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*['"]([^:'"]+):([^:'"]+)['"]/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"],\s*version\s*:\s*['"]([^'"]+)['"]\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"]\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*["']([^"']+):([^"']+):([^"']+)["']\s*\)/g,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation)\s*\(\s*["']([^"']+):([^"']+)["']\s*\)/g].forEach(r=>{let s;for(;(s=r.exec(this.content))!==null;){let i,a,c,l;if(s.length===5)[,i,a,c,l]=s;else if(s.length===4)[,i,a,c]=s,l="managed";else continue;t.push({groupId:a,artifactId:c,version:l,scope:i.toLowerCase(),type:"jar"})}}),t}extractProperties(e){let t={},n=e?/val\s+(\w+)\s*=\s*['"]([^'"]+)['"]/g:/(\w+)\s*=\s*['"]([^'"]+)['"]/g,r;for(;(r=n.exec(this.content))!==null;)t[r[1]]=r[2];return t}},So=class{static analyzeConflicts(e){let t=new Map,n=new Map;e.forEach(s=>{s.dependencies.forEach(i=>{let a=`${i.groupId}:${i.artifactId}`;t.has(a)||(t.set(a,new Set),n.set(a,[])),t.get(a).add(i.version),n.get(a).push(`${s.name} (${i.scope})`)})});let r=[];return t.forEach((s,i)=>{if(s.size>1){let[a,c]=i.split(":"),l=Array.from(s);r.push({groupId:a,artifactId:c,versions:l,locations:n.get(i)||[],severity:this.calculateConflictSeverity(l)})}}),r}static calculateConflictSeverity(e){let t=e.map(r=>r.split(".")[0]).filter(r=>/^\d+$/.test(r));return new Set(t).size>1?"high":e.length>2?"medium":"low"}static generateRecommendations(e){let t=[];return e.conflicts.length>0&&t.push(`\u53D1\u73B0 ${e.conflicts.length} \u4E2A\u4F9D\u8D56\u51B2\u7A81\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u7248\u672C\u7BA1\u7406`),e.outdated.length>0&&t.push(`${e.outdated.length} \u4E2A\u4F9D\u8D56\u5B58\u5728\u66F4\u65B0\u7248\u672C`),e.unused.length>0&&t.push(`${e.unused.length} \u4E2A\u4F9D\u8D56\u53EF\u80FD\u672A\u88AB\u4F7F\u7528\uFF0C\u5EFA\u8BAE\u68C0\u67E5`),e.project.dependencies.some(r=>r.groupId==="org.springframework.boot")&&t.push("\u9879\u76EE\u4F7F\u7528Spring Boot\uFF0C\u5EFA\u8BAE\u4F7F\u7528Spring Dependency Management\u63D2\u4EF6"),t}}});import{existsSync as Ic,readFileSync as Vg}from"fs";import{resolve as Ac,dirname as zg}from"path";function Rc(o=process.cwd()){let e={name:"unknown",version:"0.0.0",description:"",languages:["Unknown"],primaryLanguage:"Unknown",configFiles:[]},t=new Set,n=[],r="Unknown",s,i=null;for(let[a,c]of Object.entries(Lc))for(let l of c.files){if(l.includes("*"))continue;let u=Ac(o,l);if(Ic(u)&&(t.add(c.language),n.push(l),r==="Unknown")){r=c.language,s=a;try{let p=Vg(u,"utf-8"),g=c.parser(p,u);g instanceof Promise?console.warn(`Async parser not supported in sync readProjectConfig: ${a}`):i=g}catch(p){console.warn(`Error parsing ${l}: ${p instanceof Error?p.message:"Unknown error"}`)}}}return t.size===0?e:{...e,...i||{},languages:Array.from(t),primaryLanguage:r,buildTool:s,configFiles:n}}function Hg(o,e){try{let t=JSON.parse(o);return{name:t.name||"unknown",version:t.version||"0.0.0",description:t.description||"",dependencies:t.dependencies||{},devDependencies:t.devDependencies||{},entryPoints:[t.main,...typeof t.bin=="string"?[t.bin]:Object.values(t.bin||{})].filter(Boolean)}}catch{return null}}function Jg(o,e){try{let t=o.match(/name\s*=\s*['"]([^'"]+)['"]/),n=o.match(/version\s*=\s*['"]([^'"]+)['"]/),r=o.match(/description\s*=\s*['"]([^'"]+)['"]/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Gg(o,e){try{let t=o.match(/name\s*=\s*"([^"]+)"/),n=o.match(/version\s*=\s*"([^"]+)"/),r=o.match(/description\s*=\s*"([^"]+)"/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Bg(o,e){try{return{name:e.split(/[/\\]/).slice(-2,-1)[0]||"unknown",version:"0.0.0",description:""}}catch{return null}}function qg(o,e){try{let t=o.match(/module\s+([^\s]+)/),n=o.match(/go\s+([^\s]+)/),r={},s=/require\s+([^\s]+)\s+([^\s]+)/g,i;for(;(i=s.exec(o))!==null;)r[i[1]]=i[2];return{name:t&&t[1].split("/").pop()||"unknown",version:n?n[1]:"0.0.0",description:"",dependencies:r}}catch{return null}}function Kg(o,e){try{let t=o.match(/name\s*=\s*"([^"]+)"/),n=o.match(/version\s*=\s*"([^"]+)"/),r=o.match(/description\s*=\s*"([^"]+)"/);return{name:t?t[1]:"unknown",version:n?n[1]:"0.0.0",description:r?r[1]:""}}catch{return null}}function Yg(o,e){try{return{name:e.split(/[/\\]/).slice(-2,-1)[0]||"unknown",version:"0.0.0",description:""}}catch{return null}}function Xg(o,e){try{let t=JSON.parse(o);return{name:t.name||"unknown",version:t.version||"0.0.0",description:t.description||"",dependencies:t.require||{},devDependencies:t["require-dev"]||{}}}catch{return null}}function Qg(o,e){try{let n=(e.split(/[/\\]/).pop()||"unknown").replace(/\.(cs|vb|fs)proj$/,""),r=o.match(/<Version>(.*?)<\/Version>/),s=o.match(/<Description>(.*?)<\/Description>/);return{name:n,version:r?r[1]:"0.0.0",description:s?s[1]:""}}catch{return null}}function Dc(o){let e=o.map(t=>`${t.groupId}:${t.artifactId}`);return e.some(t=>t.includes("spring-boot"))?"Spring Boot":e.some(t=>t.includes("spring"))?"Spring Framework":e.some(t=>t.includes("jakarta")||t.includes("javax"))?"Jakarta EE":e.some(t=>t.includes("hibernate"))?"Hibernate":e.some(t=>t.includes("mybatis"))?"MyBatis":e.some(t=>t.includes("struts"))?"Struts":"Java Standard"}async function Zg(o,e){try{let t=await qs(zg(e));if(!t)return null;let n=t.project,r={};n.dependencies.forEach(i=>{r[`${i.groupId}:${i.artifactId}`]=i.version});let s=Dc(n.dependencies);return{name:n.name,version:n.version,description:n.description||"",dependencies:r,languageExtensionInfo:{javaDetails:n,framework:s,javaVersion:n.javaVersion,buildToolVersion:n.buildToolVersion||"Maven"},configFiles:["pom.xml"]}}catch(t){return console.error("Error parsing POM XML with enhanced parser:",t),null}}async function ep(o,e){try{let t=await Promise.resolve().then(()=>(Ks(),Mc)),r=new t.GradleBuildParser(o,e).parse();if(!r)return null;let s={};r.dependencies.forEach(a=>{s[`${a.groupId}:${a.artifactId}`]=a.version});let i=Dc(r.dependencies);return{name:r.name,version:r.version,description:r.description||"",dependencies:s,languageExtensionInfo:{javaDetails:r,framework:i,javaVersion:r.javaVersion,buildToolVersion:r.buildToolVersion||"Gradle"},configFiles:[e.split("/").pop()||"build.gradle"]}}catch(t){return console.error("Error parsing Gradle build file with enhanced parser:",t),null}}function Fc(o=process.cwd()){let e=[];for(let[t,n]of Object.entries(Lc))for(let r of n.files){if(r.includes("*"))continue;let s=Ac(o,r);if(Ic(s)){e.push(t);break}}return e}var Lc,Oc=C(()=>{Ks();Lc={nodejs:{files:["package.json"],language:"JavaScript/TypeScript",parser:Hg},"java-maven":{files:["pom.xml"],language:"Java",parser:Zg},"java-gradle":{files:["build.gradle","build.gradle.kts"],language:"Java",parser:async(o,e)=>await ep(o,e)},"python-pip":{files:["setup.py","setup.cfg"],language:"Python",parser:Jg},"python-poetry":{files:["pyproject.toml"],language:"Python",parser:Gg},"python-pipenv":{files:["Pipfile"],language:"Python",parser:Bg},go:{files:["go.mod"],language:"Go",parser:qg},rust:{files:["Cargo.toml"],language:"Rust",parser:Kg},ruby:{files:["Gemfile"],language:"Ruby",parser:Yg},php:{files:["composer.json"],language:"PHP",parser:Xg},dotnet:{files:["*.csproj","*.vbproj","*.fsproj"],language:"C#/.NET",parser:Qg}}});import{writeFileSync as tp,existsSync as np,mkdirSync as rp}from"fs";import{resolve as jc}from"path";function _c(o,e=process.cwd()){let t=jc(e,".nium","project");np(t)||rp(t,{recursive:!0});let r=jc(t,"project.json"),s=JSON.stringify(o,null,2);tp(r,s,"utf-8"),console.log(`\u2705 \u9879\u76EE\u4FE1\u606F\u5DF2\u4FDD\u5B58\u81F3: ${r}`)}function Nc(o){let e=o.reduce((t,n)=>t+n.count,0);return o.map(t=>({...t,percentage:e>0?(t.count/e*100).toFixed(1)+"%":"0%"}))}var Uc=C(()=>{ro()});import{createHash as op}from"crypto";import{readFileSync as Wc,writeFileSync as sp,existsSync as ip,statSync as ap}from"fs";import{resolve as cp}from"path";function lp(o){try{let e=Wc(o),t=op("md5");return t.update(e),t.digest("hex")}catch(e){return console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u8BA1\u7B97\u6587\u4EF6 MD5: ${o}`,e),""}}function up(o,e=process.cwd()){try{let t=cp(e,o),n=ap(t),r=lp(t);return{path:o,size:n.size,md5:r,updatedAt:n.mtime.toISOString(),description:""}}catch(t){return console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u83B7\u53D6\u6587\u4EF6\u4FE1\u606F: ${o}`,t),null}}function gp(o){let e=new Map;if(!ip(o))return e;try{let n=Wc(o,"utf-8").trim().split(`
1385
+ `);for(let r of n)if(r.trim())try{let s=JSON.parse(r);e.set(s.path,s)}catch(s){console.warn(`\u26A0\uFE0F \u65E0\u6CD5\u89E3\u6790 JSONL \u884C: ${r}`,s)}}catch(t){console.warn(`\u26A0\uFE0F \u8BFB\u53D6 JSONL \u6587\u4EF6\u5931\u8D25: ${o}`,t)}return e}function pp(o,e){try{let t=[],n=Array.from(o.entries()).sort((r,s)=>r[0].localeCompare(s[0]));for(let[,r]of n)t.push(JSON.stringify(r));sp(e,t.join(`
1283
1386
  `)+`
1284
- `,"utf-8")}catch(t){throw console.error(`\u274C \u5199\u5165 JSONL \u6587\u4EF6\u5931\u8D25: ${e}`,t),t}}function Za(o,e,t=process.cwd(),n=!0){n&&console.log(` \u{1F4D6} \u6B63\u5728\u8BFB\u53D6\u73B0\u6709\u6587\u4EF6\u4FE1\u606F: ${e}`);let r=gg(e),s={added:0,updated:0,deleted:0,unchanged:0},i=new Map,a=new Set(o),c=o.length,l=0,g=Date.now();n&&(console.log(` \u{1F4CB} \u8BFB\u53D6\u73B0\u6709\u6587\u4EF6\u4FE1\u606F\u5B8C\u6210\uFF0C\u5DF2\u6709 ${r.size} \u6761\u8BB0\u5F55`),console.log(` \u{1F680} \u5F00\u59CB\u5904\u7406 ${c} \u4E2A\u6587\u4EF6...`));for(let p of o){if(l++,n&&l===1&&console.log(` \u{1F504} \u5904\u7406\u7B2C 1 \u4E2A\u6587\u4EF6: ${p}`),n&&l%50===0){let d=(l/c*100).toFixed(1),y=((Date.now()-g)/1e3).toFixed(1);console.log(` \u{1F4CA} \u5904\u7406\u8FDB\u5EA6: ${l}/${c} (${d}%) - \u5DF2\u7528\u65F6 ${y}s`)}let u=r.get(p),m=ug(p,t);m&&(u?u.md5!==m.md5?(i.set(p,{...m,description:u.description}),s.updated++):(i.set(p,u),s.unchanged++):(i.set(p,m),s.added++))}if(n){let p=((Date.now()-g)/1e3).toFixed(1);console.log(` \u2705 \u6587\u4EF6\u5904\u7406\u5B8C\u6210: ${c} \u4E2A\u6587\u4EF6, \u603B\u7528\u65F6 ${p}s`)}n&&console.log(" \u{1F50D} \u6B63\u5728\u68C0\u6D4B\u5DF2\u5220\u9664\u7684\u6587\u4EF6...");for(let[p]of r)a.has(p)||s.deleted++;return n&&console.log(` \u{1F4CA} \u68C0\u6D4B\u5230 ${s.deleted} \u4E2A\u5DF2\u5220\u9664\u7684\u6587\u4EF6`),n&&console.log(` \u{1F4BE} \u6B63\u5728\u5199\u5165 ${i.size} \u6761\u6587\u4EF6\u4FE1\u606F\u5230 JSONL...`),pg(i,e),n&&console.log(" \u2705 JSONL \u6587\u4EF6\u5199\u5165\u5B8C\u6210"),s}function ec(o){let e=o.added+o.updated+o.deleted+o.unchanged,t=[];return t.push("\u{1F4C4} \u6587\u4EF6\u4FE1\u606F\u66F4\u65B0\u6458\u8981"),t.push("\u2500".repeat(40)),t.push(`\u603B\u6587\u4EF6\u6570: ${e}`),o.added>0&&t.push(`\u2795 \u65B0\u589E: ${o.added} \u4E2A\u6587\u4EF6`),o.updated>0&&t.push(`\u{1F504} \u66F4\u65B0: ${o.updated} \u4E2A\u6587\u4EF6`),o.deleted>0&&t.push(`\u2796 \u5220\u9664: ${o.deleted} \u4E2A\u6587\u4EF6`),o.unchanged>0&&t.push(`\u2705 \u672A\u53D8: ${o.unchanged} \u4E2A\u6587\u4EF6`),t.push("\u2500".repeat(40)),t.join(`
1285
- `)}var tc=S(()=>{});var X,$e=S(()=>{X=class{getCommonDirectoryDescriptions(){return{src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",components:"\u7EC4\u4EF6\u76EE\u5F55",pages:"\u9875\u9762\u76EE\u5F55",public:"\u516C\u5171\u8D44\u6E90\u76EE\u5F55",assets:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55",utils:"\u5DE5\u5177\u51FD\u6570\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",services:"\u670D\u52A1\u5C42\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",plugins:"\u63D2\u4EF6\u76EE\u5F55",hooks:"\u94A9\u5B50\u51FD\u6570\u76EE\u5F55",types:"\u7C7B\u578B\u5B9A\u4E49\u76EE\u5F55",interfaces:"\u63A5\u53E3\u5B9A\u4E49\u76EE\u5F55",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49\u76EE\u5F55"}}}});import{existsSync as ks,readFileSync as nc}from"fs";import{resolve as Ps}from"path";var Kr,rc=S(()=>{$e();Kr=class extends X{getLanguageName(){return"JavaScript/TypeScript"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684 JavaScript/TypeScript \u4EE3\u7801",lib:"\u7F16\u8BD1\u540E\u7684\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u6253\u5305\u540E\u7684\u751F\u4EA7\u4EE3\u7801",public:"\u516C\u5171\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u9759\u6001\u6587\u4EF6",assets:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u56FE\u7247\u3001\u6837\u5F0F\u7B49",components:"React/Vue \u7EC4\u4EF6\u76EE\u5F55",pages:"\u9875\u9762\u7EC4\u4EF6\u76EE\u5F55",hooks:"React \u94A9\u5B50\u51FD\u6570\u76EE\u5F55",context:"React \u4E0A\u4E0B\u6587\u76EE\u5F55",redux:"Redux \u72B6\u6001\u7BA1\u7406\u76EE\u5F55",store:"\u72B6\u6001\u7BA1\u7406\u76EE\u5F55",actions:"Redux \u52A8\u4F5C\u76EE\u5F55",reducers:"Redux \u5F52\u7EA6\u5668\u76EE\u5F55",slices:"Redux Toolkit \u5207\u7247\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",utils:"\u5DE5\u5177\u51FD\u6570\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",services:"API \u670D\u52A1\u76EE\u5F55",api:"API \u63A5\u53E3\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",types:"TypeScript \u7C7B\u578B\u5B9A\u4E49\u76EE\u5F55",interfaces:"TypeScript \u63A5\u53E3\u5B9A\u4E49\u76EE\u5F55",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u6D4B\u8BD5\u7B49\u811A\u672C",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",__tests__:"Jest \u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55",spec:"Jasmine/Mocha \u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Ps(e,"package.json");if(ks(r))try{let s=nc(r,"utf-8"),i=JSON.parse(s);i.engines&&(i.engines.node&&(n["Node.js"]=i.engines.node),i.engines.npm&&(n.npm=i.engines.npm),i.engines.yarn&&(n.yarn=i.engines.yarn),i.engines.pnpm&&(n.pnpm=i.engines.pnpm))}catch{}return n}findEntryPoints(e,t){let n=[],r=["index.js","index.ts","index.mjs","index.cjs","app.js","app.ts","main.js","main.ts","server.js","server.ts","src/index.js","src/index.ts","src/main.js","src/main.ts","src/app.js","src/app.ts","next.config.js","vite.config.js","webpack.config.js","rollup.config.js"],s=Ps(t,"package.json");if(ks(s))try{let i=nc(s,"utf-8"),a=JSON.parse(i);a.main&&n.push(a.main),a.bin&&(typeof a.bin=="string"?n.push(a.bin):n.push(...Object.values(a.bin)))}catch{}return r.forEach(i=>{e.includes(i)&&n.push(i)}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={ESLint:[".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc"],Prettier:[".prettierrc",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.js","prettier.config.js"],EditorConfig:[".editorconfig"],TypeScript:["tsconfig.json"],Flow:[".flowconfig"],Jest:["jest.config.js","jest.config.ts","jest.config.json"],Vitest:["vitest.config.js","vitest.config.ts"],Mocha:["mocha.opts",".mocharc.js"],Jasmine:["jasmine.json"]};for(let[r,s]of Object.entries(n))for(let i of s)if(ks(Ps(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".js",".mjs",".cjs",".jsx",".ts",".tsx",".vue",".svelte",".astro"]}getCommonTestExtensions(){return[".test.js",".test.ts",".test.jsx",".test.tsx",".spec.js",".spec.ts",".spec.jsx",".spec.tsx"]}getCommonConfigFiles(){return["package.json","tsconfig.json","tsconfig.node.json","jsconfig.json",".eslintrc.js",".eslintrc.json",".prettierrc",".prettierrc.json",".editorconfig","vite.config.js","vite.config.ts","webpack.config.js","webpack.config.ts","rollup.config.js","rollup.config.ts","next.config.js","next.config.mjs","nuxt.config.js","nuxt.config.ts","astro.config.mjs","astro.config.ts"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as Te,readFileSync as Nt,writeFileSync as mg,mkdirSync as dg}from"fs";import{resolve as Ve,dirname as fg}from"path";var Yr,oc=S(()=>{$e();Yr=class extends X{getLanguageName(){return"Java"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u6839\u76EE\u5F55","src/main/java":"\u4E3B\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u751F\u4EA7\u4EE3\u7801","src/main/resources":"\u4E3B\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u914D\u7F6E\u6587\u4EF6\u548C\u9759\u6001\u8D44\u6E90","src/test/java":"\u6D4B\u8BD5\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5","src/test/resources":"\u6D4B\u8BD5\u8D44\u6E90\u76EE\u5F55\uFF0C\u5305\u542B\u6D4B\u8BD5\u914D\u7F6E\u6587\u4EF6",target:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u7C7B\u6587\u4EF6\u548C\u6253\u5305\u4EA7\u7269",lib:"\u5916\u90E8\u4F9D\u8D56\u5E93\u76EE\u5F55",libs:"\u5916\u90E8\u4F9D\u8D56\u5E93\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",gradle:"Gradle \u6784\u5EFA\u7CFB\u7EDF\u76EE\u5F55",maven:"Maven \u6784\u5EFA\u7CFB\u7EDF\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C"}}async detectVersions(e,t){let n={},r=Ve(e,"pom.xml");if(Te(r))try{let a=Nt(r,"utf-8"),c=a.match(/<java\.version>([^<]+)<\/java\.version>/)||a.match(/<maven\.compiler\.source>([^<]+)<\/maven\.compiler\.source>/);c&&(n.Java=c[1])}catch{}let s=Ve(e,"build.gradle"),i=Ve(e,"build.gradle.kts");if(Te(s))try{let a=Nt(s,"utf-8"),c=a.match(/sourceCompatibility\s*=\s*['"]?([^'"\\s]+)['"]?/)||a.match(/targetCompatibility\s*=\s*['"]?([^'"\\s]+)['"]?/);c&&(n.Java=c[1])}catch{}else if(Te(i))try{let a=Nt(i,"utf-8"),c=a.match(/sourceCompatibility\s*=\s*JavaVersion\.VERSION_(\d+_\d+)/)||a.match(/targetCompatibility\s*=\s*JavaVersion\.VERSION_(\d+_\d+)/);c&&(n.Java=c[1].replace("_","."))}catch{}return n}findEntryPoints(e,t){let n=[],r=["src/main/java/**/Main.java","src/main/java/**/Application.java","src/main/java/**/App.java","src/main/java/**/Bootstrap.java","src/main/java/**/Launcher.java"];return e.forEach(s=>{if(s.endsWith(".java"))try{Nt(Ve(t,s),"utf-8").includes("public static void main(String[] args)")&&n.push(s)}catch{}}),r.forEach(s=>{let i=new RegExp(s.replace(/\*\*/g,".*").replace(/\*/g,"[^/]*"));e.forEach(a=>{i.test(a)&&n.push(a)})}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={Checkstyle:["checkstyle.xml","google_checks.xml","sun_checks.xml"],PMD:["pmd.xml",".pmd"],FindBugs:["findbugs.xml",".findbugs"],SpotBugs:["spotbugs.xml",".spotbugs"],SonarQube:["sonar-project.properties"],EditorConfig:[".editorconfig"],Maven:["pom.xml"],Gradle:["build.gradle","build.gradle.kts"]};for(let[r,s]of Object.entries(n))for(let i of s)if(Te(Ve(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".java",".class",".jar",".war",".ear"]}getCommonTestExtensions(){return["Test.java","Tests.java"]}getCommonConfigFiles(){return["pom.xml","build.gradle","build.gradle.kts","settings.gradle","gradle.properties","checkstyle.xml","pmd.xml","spotbugs.xml","sonar-project.properties",".editorconfig"]}async analyzeDependencies(e,t){let n={dependencies:[],conflicts:[],recommendations:[]};try{let r=Ve(e,"pom.xml"),s=Ve(e,"build.gradle"),i=Ve(e,"build.gradle.kts");if(!Te(r)&&!Te(s)&&!Te(i))return n;Te(r)?await this.analyzeMavenDependencies(r,n):Te(s)?this.analyzeGradleDependencies(s,n):Te(i)&&this.analyzeGradleDependencies(i,n),this.detectDependencyConflicts(n),this.generateRecommendations(n)}catch(r){console.error("\u4F9D\u8D56\u5206\u6790\u5931\u8D25:",r)}return n}async analyzeMavenDependencies(e,t){let n=Nt(e,"utf-8"),r=await import("xml2js");return new Promise((s,i)=>{r.parseString(n,{explicitArray:!1},(a,c)=>{if(a){i(a);return}let{project:l}=c;if(!l){s();return}let g=l.dependencies?.dependency;g&&(Array.isArray(g)?g:[g]).forEach(u=>{t.dependencies.push({groupId:u.groupId,artifactId:u.artifactId,version:u.version||"unknown",scope:u.scope||"compile",type:u.type||"jar"})}),s()})})}analyzeGradleDependencies(e,t){let n=Nt(e,"utf-8");[/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*['"]([^:'"]+):([^:'"]+):([^:'"]+)['"]/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*['"]([^:'"]+):([^:'"]+)['"]/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*\(\s*group\s*:\s*['"]([^'"]+)['"],\s*name\s*:\s*['"]([^'"]+)['"],\s*version\s*:\s*['"]([^'"]+)['"][^)]*\)/gms,/(implementation|compile|api|compileOnly|runtimeOnly|testImplementation|testCompile|testApi|testCompileOnly|testRuntimeOnly)\s*\(\s*["']([^"']+):([^"']+):([^"']+)["']\s*\)/gms].forEach(s=>{let i;for(;(i=s.exec(n))!==null;){let a,c,l,g;if(i.length===5)[,a,c,l,g]=i;else if(i.length===4)[,a,c,l]=i,g="managed";else continue;t.dependencies.push({groupId:c,artifactId:l,version:g,scope:a.toLowerCase(),type:"jar"})}})}detectDependencyConflicts(e){let t=new Map;e.dependencies.forEach(n=>{if(n.groupId&&n.artifactId){let r=`${n.groupId}:${n.artifactId}`;t.has(r)||t.set(r,new Set),t.get(r)?.add(n.version)}}),t.forEach((n,r)=>{if(n.size>1){let[s,i]=r.split(":");e.conflicts.push({groupId:s,artifactId:i,versions:Array.from(n),severity:this.calculateConflictSeverity(Array.from(n))})}})}calculateConflictSeverity(e){let t=e.map(r=>{let s=r.match(/^(\d+)/);return s?parseInt(s[1]):0});return new Set(t).size>1?"high":e.length>2?"medium":"low"}generateRecommendations(e){let t=[];e.conflicts.length>0&&t.push(`${e.conflicts.length} \u4E2A\u4F9D\u8D56\u5B58\u5728\u7248\u672C\u51B2\u7A81\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u7248\u672C`),e.dependencies.some(s=>s.groupId==="org.springframework.boot")&&t.push("\u9879\u76EE\u4F7F\u7528Spring Boot\uFF0C\u5EFA\u8BAE\u4F7F\u7528Spring Dependency Management\u63D2\u4EF6\u7BA1\u7406\u4F9D\u8D56\u7248\u672C");let r=this.detectJavaVersion(e);if(r){let s=parseInt(r);s<11?t.push("Java\u7248\u672C\u8F83\u65E7\uFF0C\u5EFA\u8BAE\u5347\u7EA7\u5230Java 11\u6216\u66F4\u9AD8\u7248\u672C"):s>=17&&t.push("\u4F7F\u7528\u73B0\u4EE3Java\u7248\u672C\uFF0C\u53EF\u4EE5\u4EAB\u53D7\u6700\u65B0\u7279\u6027")}e.recommendations=t}detectJavaVersion(e){}saveDependencyAnalysis(e,t){try{let n=`${t}/.nium/java-dependency-analysis.json`;dg(fg(n),{recursive:!0}),mg(n,JSON.stringify({scanTime:new Date().toISOString(),dependencies:e.dependencies,conflicts:e.conflicts,recommendations:e.recommendations},null,2))}catch(n){console.error("\u4FDD\u5B58\u4F9D\u8D56\u5206\u6790\u7ED3\u679C\u5931\u8D25:",n)}}}});import{existsSync as Hn,readFileSync as Jn}from"fs";import{resolve as Ut}from"path";var Xr,sc=S(()=>{$e();Xr=class extends X{getLanguageName(){return"Python"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Python \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",main:"\u4E3B\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",__pycache__:"Python \u7F16\u8BD1\u7F13\u5B58\u76EE\u5F55",venv:"\u865A\u62DF\u73AF\u5883\u76EE\u5F55",".venv":"\u865A\u62DF\u73AF\u5883\u76EE\u5F55",env:"\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",data:"\u6570\u636E\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",dist:"\u6253\u5305\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u53D1\u5E03\u7684\u5305\u6587\u4EF6",requirements:"\u4F9D\u8D56\u7BA1\u7406\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Ut(e,".python-version");if(Hn(r))try{let a=Jn(r,"utf-8");n.Python=a.trim()}catch{}let s=Ut(e,"pyproject.toml");if(Hn(s))try{let c=Jn(s,"utf-8").match(/python\s*=\s*['"]([^'"]+)['"]/);c&&(n.Python=c[1])}catch{}let i=Ut(e,"setup.py");if(Hn(i))try{let c=Jn(i,"utf-8").match(/python_requires\s*=\s*['"]([^'"]+)['"]/);c&&(n.Python=c[1])}catch{}return n}findEntryPoints(e,t){let n=[];["main.py","__main__.py","app.py","run.py","manage.py","server.py","cli.py","setup.py","src/main.py","src/__main__.py","src/app.py"].forEach(i=>{e.includes(i)&&n.push(i)});let s=Ut(t,"setup.py");if(Hn(s))try{let a=Jn(s,"utf-8").match(/entry_points\s*=\s*\{[^}]+\}/s);if(a){let l=a[0].match(/console_scripts\s*:\s*\[([^\]]+)\]/s);if(l){let p=l[1].match(/([^=]+)\s*=\s*([^,]+)/g);p&&p.forEach(u=>{let[m,d]=u.split("=").map(w=>w.trim()),y=d.replace(/\./g,"/").replace(":","/")+".py";n.push(y)})}}}catch{}return[...new Set(n)]}detectCodeStandards(e){let t=[],n={Black:["pyproject.toml","setup.cfg"],Pylint:[".pylintrc","pylintrc","setup.cfg"],Flake8:[".flake8","flake8.cfg","setup.cfg"],Mypy:["mypy.ini",".mypy.ini","setup.cfg","pyproject.toml"],isort:[".isort.cfg","setup.cfg","pyproject.toml"],Bandit:[".bandit","bandit.yml"],Pytest:["pytest.ini","setup.cfg","conftest.py"],EditorConfig:[".editorconfig"]};for(let[r,s]of Object.entries(n))for(let i of s)if(Hn(Ut(e,i)))if(r==="Black")try{if(Jn(Ut(e,i),"utf-8").includes("[tool.black]")){t.push(r);break}}catch{}else{t.push(r);break}return t}getCommonSourceExtensions(){return[".py",".pyc",".pyo",".pyd",".pyx",".pxd",".pxi"]}getCommonTestExtensions(){return[".test.py",".spec.py","_test.py","test_*.py","*_test.py"]}getCommonConfigFiles(){return["pyproject.toml","setup.py","setup.cfg","requirements.txt","requirements-dev.txt","Pipfile","Pipfile.lock","poetry.lock",".pylintrc",".flake8","mypy.ini",".isort.cfg","pytest.ini","conftest.py",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as $s,readFileSync as Es}from"fs";import{resolve as Qr}from"path";var Zr,ic=S(()=>{$e();Zr=class extends X{getLanguageName(){return"Go"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF08\u4F20\u7EDF Go \u9879\u76EE\u7ED3\u6784\uFF09",cmd:"\u547D\u4EE4\u884C\u5DE5\u5177\u76EE\u5F55\uFF0C\u5305\u542B\u53EF\u6267\u884C\u7A0B\u5E8F\u7684\u5165\u53E3\u70B9",internal:"\u5185\u90E8\u5305\u76EE\u5F55\uFF0C\u4EC5\u672C\u9879\u76EE\u53EF\u4F7F\u7528",pkg:"\u53EF\u5BFC\u51FA\u5305\u76EE\u5F55\uFF0C\u4F9B\u5176\u4ED6\u9879\u76EE\u4F7F\u7528",api:"API \u5B9A\u4E49\u76EE\u5F55",web:"Web \u5E94\u7528\u76F8\u5173\u4EE3\u7801\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",handlers:"\u8BF7\u6C42\u5904\u7406\u5668\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Qr(e,"go.mod");if($s(r))try{let a=Es(r,"utf-8").match(/^go\s+(\d+\.\d+)/m);a&&(n.Go=a[1])}catch{}let s=Qr(e,"go.sum");if($s(s))try{let a=Es(s,"utf-8").match(/^golang\.org\/x\/sys\/v\d+\/[^\s]+\s+go(\d+\.\d+)/);a&&!n.Go&&(n.Go=a[1])}catch{}return n}findEntryPoints(e,t){let n=[];return["main.go","cmd/main.go","cmd/app/main.go","cmd/server/main.go","cmd/cli/main.go","src/main.go"].forEach(s=>{e.includes(s)&&n.push(s)}),e.forEach(s=>{if(s.endsWith(".go"))try{Es(Qr(t,s),"utf-8").includes("func main()")&&n.push(s)}catch{}}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={GoFmt:[".gofmt"],GoLint:[".golint"],"GolangCI-Lint":[".golangci.yml",".golangci.yaml"],EditorConfig:[".editorconfig"],GoMod:["go.mod"],GoSum:["go.sum"]};for(let[r,s]of Object.entries(n))for(let i of s)if($s(Qr(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".go",".mod",".sum"]}getCommonTestExtensions(){return["_test.go",".test.go"]}getCommonConfigFiles(){return["go.mod","go.sum",".golangci.yml",".golangci.yaml",".editorconfig","Makefile"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as ac,readFileSync as hg}from"fs";import{resolve as cc}from"path";var eo,lc=S(()=>{$e();eo=class extends X{getLanguageName(){return"Rust"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Rust \u4EE3\u7801","src/bin":"\u4E8C\u8FDB\u5236\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u591A\u4E2A\u53EF\u6267\u884C\u7A0B\u5E8F","src/lib.rs":"\u5E93\u9879\u76EE\u7684\u4E3B\u5165\u53E3\u6587\u4EF6","src/main.rs":"\u4E8C\u8FDB\u5236\u9879\u76EE\u7684\u4E3B\u5165\u53E3\u6587\u4EF6",target:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6\u548C\u4F9D\u8D56",tests:"\u96C6\u6210\u6D4B\u8BD5\u76EE\u5F55\uFF0C\u5305\u542B\u96C6\u6210\u6D4B\u8BD5\u4EE3\u7801",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",benches:"\u57FA\u51C6\u6D4B\u8BD5\u76EE\u5F55\uFF0C\u5305\u542B\u6027\u80FD\u6D4B\u8BD5\u4EE3\u7801",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",".cargo":"Cargo \u914D\u7F6E\u76EE\u5F55",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=cc(e,"Cargo.toml");if(ac(r))try{let i=hg(r,"utf-8").match(/rust-version\s*=\s*['"]([^'"]+)['"]/);i&&(n.Rust=i[1])}catch{}return n}findEntryPoints(e,t){let n=[];return["src/main.rs","src/lib.rs","src/bin/main.rs","src/bin/*.rs"].forEach(s=>{if(s.includes("*")){let i=new RegExp(s.replace(/\*/g,"[^/]*"));e.forEach(a=>{i.test(a)&&n.push(a)})}else e.includes(s)&&n.push(s)}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={Rustfmt:["rustfmt.toml",".rustfmt.toml"],Clippy:["clippy.toml",".clippy.toml"],EditorConfig:[".editorconfig"],Cargo:["Cargo.toml","Cargo.lock"]};for(let[r,s]of Object.entries(n))for(let i of s)if(ac(cc(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".rs",".toml",".lock"]}getCommonTestExtensions(){return["_test.rs",".test.rs","tests/*.rs"]}getCommonConfigFiles(){return["Cargo.toml","Cargo.lock","rustfmt.toml","clippy.toml",".editorconfig","Makefile"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as Ms,readFileSync as uc}from"fs";import{resolve as Is}from"path";var to,gc=S(()=>{$e();to=class extends X{getLanguageName(){return"PHP"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 PHP \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",public:"\u516C\u5171\u8BBF\u95EE\u76EE\u5F55\uFF0C\u5305\u542B\u5165\u53E3\u6587\u4EF6\u548C\u9759\u6001\u8D44\u6E90","index.php":"\u7F51\u7AD9\u5165\u53E3\u6587\u4EF6",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",vendor:"Composer \u4F9D\u8D56\u5E93\u76EE\u5F55",composer:"Composer \u76F8\u5173\u6587\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55",views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=Is(e,"composer.json");if(Ms(r))try{let i=uc(r,"utf-8"),a=JSON.parse(i);a.require&&a.require.php&&(n.PHP=a.require.php)}catch{}let s=Is(e,".php-version");if(Ms(s))try{let i=uc(s,"utf-8");n.PHP=i.trim()}catch{}return n}findEntryPoints(e,t){let n=[];return["index.php","public/index.php","app/index.php","src/index.php","cli.php","artisan","bin/console","composer.json"].forEach(s=>{e.includes(s)&&n.push(s)}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={PHP_CodeSniffer:["phpcs.xml","phpcs.xml.dist",".phpcs.xml",".phpcs.xml.dist"],PHPStan:["phpstan.neon","phpstan.neon.dist","phpstan.yml","phpstan.yml.dist"],Psalm:["psalm.xml","psalm.xml.dist","psalm.yml","psalm.yml.dist"],"PHP-CS-Fixer":[".php-cs-fixer.php",".php-cs-fixer.dist.php"],EditorConfig:[".editorconfig"],PHPUnit:["phpunit.xml","phpunit.xml.dist"],Composer:["composer.json","composer.lock"]};for(let[r,s]of Object.entries(n))for(let i of s)if(Ms(Is(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".php",".phtml",".phar",".json",".lock"]}getCommonTestExtensions(){return[".test.php",".spec.php","Test.php","Tests.php","tests/*.php"]}getCommonConfigFiles(){return["composer.json","composer.lock","phpcs.xml","phpstan.neon","psalm.xml",".php-cs-fixer.php","phpunit.xml",".editorconfig",".php-version"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as As,readFileSync as pc}from"fs";import{resolve as Ls}from"path";var no,mc=S(()=>{$e();no=class extends X{getLanguageName(){return"Ruby"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 Ruby \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",vendor:"\u7B2C\u4E09\u65B9\u4F9D\u8D56\u5E93\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",controllers:"\u63A7\u5236\u5668\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",routes:"\u8DEF\u7531\u5B9A\u4E49\u76EE\u5F55\uFF08Rails \u9879\u76EE\uFF09",middleware:"\u4E2D\u95F4\u4EF6\u76EE\u5F55",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",spec:"RSpec \u6D4B\u8BD5\u76EE\u5F55",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",build:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",Gemfile:"RubyGems \u4F9D\u8D56\u914D\u7F6E\u6587\u4EF6"}}async detectVersions(e,t){let n={},r=Ls(e,".ruby-version");if(As(r))try{let i=pc(r,"utf-8");n.Ruby=i.trim()}catch{}let s=Ls(e,"Gemfile");if(As(s))try{let a=pc(s,"utf-8").match(/ruby\s+['"]([^'"]+)['"]/);a&&!n.Ruby&&(n.Ruby=a[1])}catch{}return n}findEntryPoints(e,t){let n=[];return["main.rb","app.rb","bin/rails","bin/rake","bin/console","config.ru","Rakefile","Gemfile"].forEach(s=>{e.includes(s)&&n.push(s)}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={RuboCop:[".rubocop.yml",".rubocop.yaml",".rubocop_todo.yml"],RSpec:["spec/spec_helper.rb","spec/rails_helper.rb"],Minitest:["test/test_helper.rb"],EditorConfig:[".editorconfig"],Bundler:["Gemfile","Gemfile.lock"]};for(let[r,s]of Object.entries(n))for(let i of s)if(As(Ls(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".rb",".gemspec",".rake",".ru",".lock"]}getCommonTestExtensions(){return["_test.rb",".test.rb","test_*.rb","*_test.rb","spec/**/*.rb","test/**/*.rb"]}getCommonConfigFiles(){return["Gemfile","Gemfile.lock",".rubocop.yml",".ruby-version",".ruby-gemset","Rakefile","config.ru",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});import{existsSync as dc,readFileSync as fc}from"fs";import{resolve as Rs}from"path";import{globSync as Ds}from"glob";var ro,hc=S(()=>{$e();ro=class extends X{getLanguageName(){return".NET"}getDirectoryDescriptions(){return{...this.getCommonDirectoryDescriptions(),src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4E3B\u8981\u7684 .NET \u4EE3\u7801",app:"\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801\u76EE\u5F55",bin:"\u7F16\u8BD1\u8F93\u51FA\u76EE\u5F55\uFF0C\u5305\u542B\u7F16\u8BD1\u540E\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6",obj:"\u4E2D\u95F4\u7F16\u8BD1\u8F93\u51FA\u76EE\u5F55",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",libs:"\u5E93\u6587\u4EF6\u76EE\u5F55",packages:"NuGet \u5305\u76EE\u5F55",nuget:"NuGet \u76F8\u5173\u6587\u4EF6\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55",Controllers:"\u63A7\u5236\u5668\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",Models:"\u6570\u636E\u6A21\u578B\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",Views:"\u89C6\u56FE\u6A21\u677F\u76EE\u5F55\uFF08ASP.NET MVC \u9879\u76EE\uFF09",Pages:"Razor Pages \u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",wwwroot:"\u9759\u6001\u8D44\u6E90\u76EE\u5F55\uFF08ASP.NET \u9879\u76EE\uFF09",services:"\u4E1A\u52A1\u903B\u8F91\u670D\u52A1\u76EE\u5F55",helpers:"\u8F85\u52A9\u51FD\u6570\u76EE\u5F55",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",scripts:"\u811A\u672C\u76EE\u5F55\uFF0C\u5305\u542B\u6784\u5EFA\u3001\u90E8\u7F72\u7B49\u811A\u672C",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55"}}async detectVersions(e,t){let n={},r=[...Ds("*.csproj",{cwd:e}),...Ds("*.vbproj",{cwd:e}),...Ds("*.fsproj",{cwd:e})];for(let i of r)try{let a=Rs(e,i),c=fc(a,"utf-8"),l=c.match(/<TargetFramework>([^<]+)<\/TargetFramework>/)||c.match(/<TargetFrameworks>([^<]+)<\/TargetFrameworks>/);if(l){n[".NET Framework"]=l[1];break}let g=c.match(/<LangVersion>([^<]+)<\/LangVersion>/);g&&(n["C# Version"]=g[1])}catch{}let s=Rs(e,"global.json");if(dc(s))try{let i=fc(s,"utf-8"),a=JSON.parse(i);a.sdk&&a.sdk.version&&(n[".NET SDK"]=a.sdk.version)}catch{}return n}findEntryPoints(e,t){let n=[];return["Program.cs","Startup.cs","App.xaml.cs","MainWindow.xaml.cs","Program.vb","Startup.vb","App.xaml.vb","MainWindow.xaml.vb","Program.fs","Startup.fs"].forEach(s=>{e.includes(s)&&n.push(s)}),[...new Set(n)]}detectCodeStandards(e){let t=[],n={StyleCop:[".stylecop","stylecop.json","stylecop.ruleset"],EditorConfig:[".editorconfig"],xUnit:["xunit.runner.json"],NUnit:["nunit.config","nunit3.config"],MSTest:["app.config","web.config"],NuGet:["nuget.config","packages.config"]};for(let[r,s]of Object.entries(n))for(let i of s)if(dc(Rs(e,i))){t.push(r);break}return t}getCommonSourceExtensions(){return[".cs",".vb",".fs",".csproj",".vbproj",".fsproj",".config",".json",".xml"]}getCommonTestExtensions(){return["Test.cs","Tests.cs","Test.vb","Tests.vb","Test.fs","Tests.fs","*Test.csproj","*Tests.csproj"]}getCommonConfigFiles(){return["*.csproj","*.vbproj","*.fsproj","appsettings.json","app.config","web.config","nuget.config","packages.config","global.json",".editorconfig"]}async analyzeDependencies(e,t){return{dependencies:[],conflicts:[],recommendations:[]}}}});var Os,Wt,yc=S(()=>{rc();oc();sc();ic();lc();gc();mc();hc();Os=class o{static instance;handlers=new Map;constructor(){this.registerHandlers()}static getInstance(){return o.instance||(o.instance=new o),o.instance}registerHandlers(){[new Kr,new Yr,new Xr,new Zr,new eo,new to,new no,new ro].forEach(t=>{let n=t.getLanguageName();this.handlers.set(n.toLowerCase(),t),this.registerLanguageAliases(n,t)})}registerLanguageAliases(e,t){let n={"javascript/typescript":["javascript","typescript","node.js","nodejs"],java:["java","jdk","jvm"],python:["python","py"],go:["go","golang"],rust:["rust","rs"],php:["php"],ruby:["ruby","rb"],".net":["c#/.net","csharp","dotnet",".net","vb.net","f#"]},r=e.toLowerCase();n[r]&&n[r].forEach(s=>{this.handlers.set(s.toLowerCase(),t)})}getHandler(e){if(!e)return null;let t=e.toLowerCase();return this.handlers.get(t)||null}getSupportedLanguages(){return Array.from(new Set(Array.from(this.handlers.values()).map(e=>e.getLanguageName())))}getDirectoryDescriptions(e){let t=this.getHandler(e);return t?t.getDirectoryDescriptions():{src:"\u6E90\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u6240\u6709\u4E3B\u8981\u7684\u5E94\u7528\u7A0B\u5E8F\u4EE3\u7801",test:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",tests:"\u6D4B\u8BD5\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5",docs:"\u6587\u6863\u76EE\u5F55\uFF0C\u5305\u542B\u9879\u76EE\u6587\u6863\u548C\u8BF4\u660E",examples:"\u793A\u4F8B\u4EE3\u7801\u76EE\u5F55\uFF0C\u5305\u542B\u4F7F\u7528\u793A\u4F8B",bin:"\u53EF\u6267\u884C\u6587\u4EF6\u76EE\u5F55\uFF0C\u5305\u542B CLI \u547D\u4EE4\u811A\u672C",lib:"\u5E93\u6587\u4EF6\u76EE\u5F55",dist:"\u6784\u5EFA\u8F93\u51FA\u76EE\u5F55",build:"\u6784\u5EFA\u811A\u672C\u548C\u914D\u7F6E\u76EE\u5F55",config:"\u914D\u7F6E\u6587\u4EF6\u76EE\u5F55"}}async detectVersions(e,t,n){let r=this.getHandler(e);return r?await r.detectVersions(t,n):{}}findEntryPoints(e,t,n){let r=this.getHandler(e);return r?r.findEntryPoints(t,n):[]}detectCodeStandards(e,t){let n=this.getHandler(e);return n?n.detectCodeStandards(t):[]}getCommonSourceExtensions(e){let t=this.getHandler(e);return t?t.getCommonSourceExtensions():[]}getCommonTestExtensions(e){let t=this.getHandler(e);return t?t.getCommonTestExtensions():[]}getCommonConfigFiles(e){let t=this.getHandler(e);return t?t.getCommonConfigFiles():[]}getDirectoryDescriptionsForLanguages(e){let t={};return e.forEach(n=>{let r=this.getDirectoryDescriptions(n);Object.assign(t,r)}),t}async detectVersionsForLanguages(e,t,n){let r={};for(let s of e){let i=await this.detectVersions(s,t,n);Object.assign(r,i)}return r}findEntryPointsForLanguages(e,t,n){let r=[];for(let s of e){let i=this.findEntryPoints(s,t,n);r.push(...i)}return[...new Set(r)]}detectCodeStandardsForLanguages(e,t){let n=[];for(let r of e){let s=this.detectCodeStandards(r,t);n.push(...s)}return[...new Set(n)]}},Wt=Os.getInstance()});var Sc={};j(Sc,{QuickProjectScanTool:()=>at,quickProjectScan:()=>zt,quickProjectScanTool:()=>Vt});import{existsSync as it}from"fs";import{globSync as yg}from"glob";async function zt(){return Cc.execute({})}var at,Cc,Vt,Fs=S(()=>{q();kr();Ba();Xa();tc();yc();at=class extends E{getDefinition(){return{name:"quickProjectScan",description:"Quickly scan the entire project structure, analyze directories, detect languages, and save project information to .nium/project/project.json. Use this when the user asks to explore or analyze the project structure.",input_schema:{type:"object",properties:{},required:[]}}}async execute(e){try{let t=[],n=process.cwd();t.push(`\u{1F50D} \u5F00\u59CB\u63A2\u7D22\u5DE5\u7A0B\u7ED3\u6784...
1286
- `),t.push("\u{1F4C2} \u626B\u63CF\u9879\u76EE\u6587\u4EF6...");let r=$t(n,!0);t.push(` - \u5E94\u7528 ${r.length} \u6761\u5FFD\u7565\u89C4\u5219`);let s=Date.now(),i=yg("**/*",{nodir:!0,ignore:r,cwd:n}),a=((Date.now()-s)/1e3).toFixed(1);t.push(`\u627E\u5230 ${i.length} \u4E2A\u76F8\u5173\u6587\u4EF6 (\u8017\u65F6 ${a}s)
1287
- `),t.push("\u{1F4CB} \u68C0\u6D4B\u9879\u76EE\u7C7B\u578B\u548C\u914D\u7F6E...");let c=Ga(n);c.length>0&&t.push(` - \u68C0\u6D4B\u5230\u9879\u76EE\u7C7B\u578B: ${c.join(", ")}`);let l=await Ha(n),g={name:l.name,version:l.version,description:l.description,dependencies:l.dependencies||{},devDependencies:l.devDependencies||{}};t.push(` - \u9879\u76EE\u540D\u79F0: ${g.name}`),t.push(` - \u7248\u672C: ${g.version}`),t.push(` - \u8BED\u8A00: ${l.primaryLanguage}`),l.buildTool&&t.push(` - \u6784\u5EFA\u5DE5\u5177: ${l.buildTool}`),t.push(""),t.push("\u{1F5C2}\uFE0F \u5206\u6790\u76EE\u5F55\u7ED3\u6784...");let p=this.analyzeDirectoryStructure(i);t.push(""),t.push("\u{1F310} \u68C0\u6D4B\u9879\u76EE\u7F16\u7A0B\u8BED\u8A00...");let u=this.detectProjectLanguages(i);t.push(`\u4E3B\u8981\u7F16\u7A0B\u8BED\u8A00: ${u.primaryLanguage||l.primaryLanguage||"\u672A\u77E5"}`),u.languages.length>0&&t.push(`\u68C0\u6D4B\u5230 ${u.languages.length} \u79CD\u7F16\u7A0B\u8BED\u8A00`),t.push(""),t.push("\u2699\uFE0F \u68C0\u6D4B\u8FD0\u884C\u65F6\u7248\u672C...");let m=await this.detectVersions(l,n);if(Object.keys(m).length>0)for(let[x,k]of Object.entries(m))t.push(` - ${x}: ${k}`);else t.push(" - \u672A\u68C0\u6D4B\u5230\u7248\u672C\u4FE1\u606F");t.push(""),t.push("\u{1F4D0} \u68C0\u6D4B\u4EE3\u7801\u89C4\u8303...");let d=this.detectCodeStandards(n,l.languages);d.length>0?t.push(` - \u68C0\u6D4B\u5230\u4EE3\u7801\u89C4\u8303: ${d.join(", ")}`):t.push(" - \u672A\u68C0\u6D4B\u5230\u4EE3\u7801\u89C4\u8303\u914D\u7F6E"),t.push(""),t.push("\u{1F4CB} \u5206\u6790\u9879\u76EE\u4F9D\u8D56...");let y=await this.analyzeDependencies(n,l.languages),w=Object.values(y).reduce((x,k)=>x+(k.dependencies?.length||0),0),h=Object.values(y).reduce((x,k)=>x+(k.conflicts?.length||0),0);t.push(` - \u4F9D\u8D56\u603B\u6570: ${w}`),h>0&&t.push(` - \u4F9D\u8D56\u51B2\u7A81: ${h}`),t.push(""),t.push("\u2705 \u9879\u76EE\u7ED3\u6784\u5206\u6790\u5B8C\u6210"),t.push(""),t.push("\u{1F4BE} \u4FDD\u5B58\u9879\u76EE\u57FA\u7840\u4FE1\u606F...");let b=this.buildProjectBasicInfo(g,p,i,u,l,m,d,y);try{Ka(b,n),t.push("\u2705 \u9879\u76EE\u57FA\u7840\u4FE1\u606F\u5DF2\u4FDD\u5B58\u81F3: .nium/project/"),t.push("")}catch(x){console.error(" \u274C \u4FDD\u5B58\u9879\u76EE\u4FE1\u606F\u5931\u8D25:",x),t.push(`\u26A0\uFE0F \u4FDD\u5B58\u9879\u76EE\u4FE1\u606F\u5931\u8D25: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`),t.push("")}t.push("\u{1F4DD} \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5217\u8868...");let f=`${n}/.nium/project/files.jsonl`;try{let x=Date.now(),k=Za(i,f,n),O=((Date.now()-x)/1e3).toFixed(1);t.push("\u2705 \u6587\u4EF6\u4FE1\u606F\u5DF2\u66F4\u65B0\u81F3: .nium/project/files.jsonl"),t.push("");let M=ec(k);t.push(M),t.push("")}catch(x){console.error(" \u274C \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5931\u8D25:",x),t.push(`\u26A0\uFE0F \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5931\u8D25: ${x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}`),t.push("")}let T=this.generateSummary(g,p,u,l);return t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push("\u9879\u76EE\u7ED3\u6784\u6982\u89C8"),t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push(T),t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push(""),t.join(`
1288
- `)}catch(t){return this.formatError("Quick project scan",t)}}detectProjectLanguages(e){let t={".js":"JavaScript",".mjs":"JavaScript (ES Modules)",".cjs":"JavaScript (CommonJS)",".jsx":"React JavaScript",".ts":"TypeScript",".tsx":"React TypeScript",".java":"Java",".class":"Java",".jar":"Java","pom.xml":"Java (Maven)","build.gradle":"Java (Gradle)",".py":"Python","requirements.txt":"Python","setup.py":"Python","pyproject.toml":"Python",".c":"C",".cpp":"C++",".h":"C/C++",".hpp":"C++","CMakeLists.txt":"C/C++ (CMake)",".go":"Go","go.mod":"Go",".rs":"Rust","Cargo.toml":"Rust",".php":"PHP","composer.json":"PHP (Composer)",".rb":"Ruby",Gemfile:"Ruby",".cs":"C#",".vb":"Visual Basic","packages.config":".NET",".html":"HTML",".css":"CSS",".scss":"SCSS",".less":"Less",".json":"JSON",".xml":"XML",".yml":"YAML",".yaml":"YAML",".md":"Markdown"},n={};e.forEach(a=>{if(t[a]){n[t[a]]=(n[t[a]]||0)+1;return}let c=a.lastIndexOf(".");if(c>-1){let l=a.substring(c);t[l]&&(n[t[l]]=(n[t[l]]||0)+1)}});let r=Object.entries(n).map(([a,c])=>({language:a,count:c})).sort((a,c)=>c.count-a.count),[s]=r;return{primaryLanguage:s?.language||null,languages:r,totalSourceFiles:r.reduce((a,c)=>a+c.count,0)}}analyzeDirectoryStructure(e){let t={directories:new Set,sourceFiles:[],configFiles:[],docFiles:[],testFiles:[]},n=[".js",".mjs",".cjs",".jsx",".ts",".tsx",".java",".py",".c",".cpp",".cc",".cxx",".h",".hpp",".go",".rs",".php",".rb",".cs",".kt",".kts",".scala",".swift",".m",".mm"],r=[".json",".yaml",".yml",".toml",".ini",".xml",".properties"],s=["package.json","tsconfig.json","pom.xml","build.gradle","settings.gradle","gradle.properties","Cargo.toml","go.mod","requirements.txt","setup.py","pyproject.toml","composer.json","Gemfile",".env",".env.example"];return e.forEach(i=>{let a=i.split("/");if(a.length>1&&t.directories.add(a[0]),i.includes("test")||i.includes("spec")||i.startsWith("test/")||i.startsWith("tests/")||i.includes("__tests__")||i.endsWith(".test.js")||i.endsWith(".test.ts")||i.endsWith(".spec.js")||i.endsWith(".spec.ts")||i.endsWith("Test.java")||i.endsWith("Tests.java")){t.testFiles.push(i);return}let c=i.split("/").pop()||"",l=c.includes(".")?"."+c.split(".").pop():"";i.startsWith("src/")||i.startsWith("lib/")||i.startsWith("app/"),n.includes(l)&&t.sourceFiles.push(i),(r.includes(l)||s.includes(c))&&t.configFiles.push(i),(l===".md"||l===".txt"||l===".rst"||c==="README"||c==="CHANGELOG"||c==="LICENSE"||c==="CONTRIBUTING")&&t.docFiles.push(i)}),{directories:Array.from(t.directories).sort(),sourceFiles:t.sourceFiles.sort(),configFiles:t.configFiles.sort(),docFiles:t.docFiles.sort(),testFiles:t.testFiles.sort()}}async detectVersions(e,t){try{return await Wt.detectVersionsForLanguages(e.languages,t,e.configFiles)}catch{return{}}}detectCodeStandards(e,t){try{return Wt.detectCodeStandardsForLanguages(t,e)}catch{return[]}}async analyzeDependencies(e,t){let n={};try{for(let r of t){let s=Wt.getHandler(r);if(s){let i=await s.analyzeDependencies(e);n[r.toLowerCase()]=i}}}catch(r){console.error("\u4F9D\u8D56\u5206\u6790\u5931\u8D25:",r)}return n}analyzeCoreModules(e){let t=[],n=new Map;e.sourceFiles.forEach(s=>{let i=s.split("/");if(i.length>=2){let a=i.slice(0,2).join("/");n.has(a)||n.set(a,[]),n.get(a).push(s)}});let r={core:"\u6838\u5FC3\u4E1A\u52A1\u903B\u8F91",domain:"\u9886\u57DF\u6A21\u578B\u548C\u4E1A\u52A1\u89C4\u5219",business:"\u4E1A\u52A1\u903B\u8F91\u5C42",service:"\u670D\u52A1\u5C42",services:"\u670D\u52A1\u5C42",model:"\u6570\u636E\u6A21\u578B",models:"\u6570\u636E\u6A21\u578B",entity:"\u5B9E\u4F53\u7C7B",entities:"\u5B9E\u4F53\u7C7B",dao:"\u6570\u636E\u8BBF\u95EE\u5BF9\u8C61",repository:"\u6570\u636E\u4ED3\u5E93\u5C42",repositories:"\u6570\u636E\u4ED3\u5E93\u5C42",db:"\u6570\u636E\u5E93\u64CD\u4F5C",database:"\u6570\u636E\u5E93\u64CD\u4F5C",persistence:"\u6301\u4E45\u5316\u5C42",api:"API \u63A5\u53E3",rest:"REST API",controller:"\u63A7\u5236\u5668",controllers:"\u63A7\u5236\u5668",handler:"\u8BF7\u6C42\u5904\u7406\u5668",handlers:"\u8BF7\u6C42\u5904\u7406\u5668",endpoint:"\u7AEF\u70B9\u5B9A\u4E49",endpoints:"\u7AEF\u70B9\u5B9A\u4E49",route:"\u8DEF\u7531\u5B9A\u4E49",routes:"\u8DEF\u7531\u5B9A\u4E49",view:"\u89C6\u56FE\u5C42",views:"\u89C6\u56FE\u5C42",component:"\u7EC4\u4EF6",components:"\u7EC4\u4EF6",ui:"\u7528\u6237\u754C\u9762",page:"\u9875\u9762",pages:"\u9875\u9762",layout:"\u5E03\u5C40",layouts:"\u5E03\u5C40",template:"\u6A21\u677F",templates:"\u6A21\u677F",util:"\u5DE5\u5177\u51FD\u6570",utils:"\u5DE5\u5177\u51FD\u6570",helper:"\u8F85\u52A9\u51FD\u6570",helpers:"\u8F85\u52A9\u51FD\u6570",lib:"\u5E93\u6587\u4EF6",libs:"\u5E93\u6587\u4EF6",common:"\u516C\u5171\u6A21\u5757",shared:"\u5171\u4EAB\u6A21\u5757",config:"\u914D\u7F6E\u7BA1\u7406",configuration:"\u914D\u7F6E\u7BA1\u7406",settings:"\u8BBE\u7F6E\u7BA1\u7406",constant:"\u5E38\u91CF\u5B9A\u4E49",constants:"\u5E38\u91CF\u5B9A\u4E49",enum:"\u679A\u4E3E\u5B9A\u4E49",enums:"\u679A\u4E3E\u5B9A\u4E49",middleware:"\u4E2D\u95F4\u4EF6",middlewares:"\u4E2D\u95F4\u4EF6",interceptor:"\u62E6\u622A\u5668",interceptors:"\u62E6\u622A\u5668",filter:"\u8FC7\u6EE4\u5668",filters:"\u8FC7\u6EE4\u5668",guard:"\u5B88\u536B",guards:"\u5B88\u536B",client:"\u5BA2\u6237\u7AEF",clients:"\u5BA2\u6237\u7AEF",adapter:"\u9002\u914D\u5668",adapters:"\u9002\u914D\u5668",provider:"\u63D0\u4F9B\u5546",providers:"\u63D0\u4F9B\u5546",integration:"\u5916\u90E8\u96C6\u6210",integrations:"\u5916\u90E8\u96C6\u6210",auth:"\u8BA4\u8BC1\u6388\u6743",authentication:"\u8BA4\u8BC1",authorization:"\u6388\u6743",security:"\u5B89\u5168\u6A21\u5757",cli:"\u547D\u4EE4\u884C\u63A5\u53E3",cmd:"\u547D\u4EE4\u884C\u5DE5\u5177",script:"\u811A\u672C",scripts:"\u811A\u672C",tool:"\u5DE5\u5177",tools:"\u5DE5\u5177\u96C6",test:"\u6D4B\u8BD5",tests:"\u6D4B\u8BD5",spec:"\u6D4B\u8BD5\u89C4\u8303",mock:"\u6A21\u62DF\u6570\u636E",mocks:"\u6A21\u62DF\u6570\u636E",fixture:"\u6D4B\u8BD5\u5939\u5177",fixtures:"\u6D4B\u8BD5\u5939\u5177",type:"\u7C7B\u578B\u5B9A\u4E49",types:"\u7C7B\u578B\u5B9A\u4E49",interface:"\u63A5\u53E3\u5B9A\u4E49",interfaces:"\u63A5\u53E3\u5B9A\u4E49",schema:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49",dto:"\u6570\u636E\u4F20\u8F93\u5BF9\u8C61",vo:"\u503C\u5BF9\u8C61",event:"\u4E8B\u4EF6",events:"\u4E8B\u4EF6",exception:"\u5F02\u5E38\u5904\u7406",exceptions:"\u5F02\u5E38\u5904\u7406",error:"\u9519\u8BEF\u5904\u7406",errors:"\u9519\u8BEF\u5904\u7406",validator:"\u9A8C\u8BC1\u5668",validators:"\u9A8C\u8BC1\u5668",decorator:"\u88C5\u9970\u5668",decorators:"\u88C5\u9970\u5668"};return n.forEach((s,i)=>{if(s.length>=2){let a=i.split("/").pop()||i,c=a.toLowerCase(),l=r[c]||`${a} \u6A21\u5757`;t.push({name:a.charAt(0).toUpperCase()+a.slice(1),description:l,files:s})}}),t.slice(0,10)}generateProjectStructureDoc(e,t,n,r,s,i,a){let c=new Date().toISOString(),l=this.analyzeCoreModules(t),g=Object.keys(i).length>0?Object.entries(i).map(([u,m])=>`**${u}**: ${m}`).join(`
1289
- `):"\u6682\u65E0\u7248\u672C\u4FE1\u606F",p=a.length>0?a.map(u=>`- ${u}`).join(`
1387
+ `,"utf-8")}catch(t){throw console.error(`\u274C \u5199\u5165 JSONL \u6587\u4EF6\u5931\u8D25: ${e}`,t),t}}function Vc(o,e,t=process.cwd(),n=!0){n&&console.log(` \u{1F4D6} \u6B63\u5728\u8BFB\u53D6\u73B0\u6709\u6587\u4EF6\u4FE1\u606F: ${e}`);let r=gp(e),s={added:0,updated:0,deleted:0,unchanged:0},i=new Map,a=new Set(o),c=o.length,l=0,u=Date.now();n&&(console.log(` \u{1F4CB} \u8BFB\u53D6\u73B0\u6709\u6587\u4EF6\u4FE1\u606F\u5B8C\u6210\uFF0C\u5DF2\u6709 ${r.size} \u6761\u8BB0\u5F55`),console.log(` \u{1F680} \u5F00\u59CB\u5904\u7406 ${c} \u4E2A\u6587\u4EF6...`));for(let p of o){if(l++,n&&l===1&&console.log(` \u{1F504} \u5904\u7406\u7B2C 1 \u4E2A\u6587\u4EF6: ${p}`),n&&l%50===0){let m=(l/c*100).toFixed(1),h=((Date.now()-u)/1e3).toFixed(1);console.log(` \u{1F4CA} \u5904\u7406\u8FDB\u5EA6: ${l}/${c} (${m}%) - \u5DF2\u7528\u65F6 ${h}s`)}let g=r.get(p),d=up(p,t);d&&(g?g.md5!==d.md5?(i.set(p,{...d,description:g.description}),s.updated++):(i.set(p,g),s.unchanged++):(i.set(p,d),s.added++))}if(n){let p=((Date.now()-u)/1e3).toFixed(1);console.log(` \u2705 \u6587\u4EF6\u5904\u7406\u5B8C\u6210: ${c} \u4E2A\u6587\u4EF6, \u603B\u7528\u65F6 ${p}s`)}n&&console.log(" \u{1F50D} \u6B63\u5728\u68C0\u6D4B\u5DF2\u5220\u9664\u7684\u6587\u4EF6...");for(let[p]of r)a.has(p)||s.deleted++;return n&&console.log(` \u{1F4CA} \u68C0\u6D4B\u5230 ${s.deleted} \u4E2A\u5DF2\u5220\u9664\u7684\u6587\u4EF6`),n&&console.log(` \u{1F4BE} \u6B63\u5728\u5199\u5165 ${i.size} \u6761\u6587\u4EF6\u4FE1\u606F\u5230 JSONL...`),pp(i,e),n&&console.log(" \u2705 JSONL \u6587\u4EF6\u5199\u5165\u5B8C\u6210"),s}function zc(o){let e=o.added+o.updated+o.deleted+o.unchanged,t=[];return t.push("\u{1F4C4} \u6587\u4EF6\u4FE1\u606F\u66F4\u65B0\u6458\u8981"),t.push("\u2500".repeat(40)),t.push(`\u603B\u6587\u4EF6\u6570: ${e}`),o.added>0&&t.push(`\u2795 \u65B0\u589E: ${o.added} \u4E2A\u6587\u4EF6`),o.updated>0&&t.push(`\u{1F504} \u66F4\u65B0: ${o.updated} \u4E2A\u6587\u4EF6`),o.deleted>0&&t.push(`\u2796 \u5220\u9664: ${o.deleted} \u4E2A\u6587\u4EF6`),o.unchanged>0&&t.push(`\u2705 \u672A\u53D8: ${o.unchanged} \u4E2A\u6587\u4EF6`),t.push("\u2500".repeat(40)),t.join(`
1388
+ `)}var Hc=C(()=>{});var Gc={};j(Gc,{QuickProjectScanTool:()=>pt,quickProjectScan:()=>qt,quickProjectScanTool:()=>Kt});import{existsSync as gt}from"fs";import{globSync as dp}from"glob";async function qt(){return Jc.execute({})}var pt,Jc,Kt,Ys=C(()=>{V();Dt();Oc();Uc();Hc();bs();pt=class extends ${getDefinition(){return{name:"quickProjectScan",description:"Quickly scan the entire project structure, analyze directories, detect languages, and save project information to .nium/project/project.json. Use this when the user asks to explore or analyze the project structure.",input_schema:{type:"object",properties:{},required:[]}}}async execute(e){try{let t=[],n=process.cwd();t.push(`\u{1F50D} \u5F00\u59CB\u63A2\u7D22\u5DE5\u7A0B\u7ED3\u6784...
1389
+ `),t.push("\u{1F4C2} \u626B\u63CF\u9879\u76EE\u6587\u4EF6...");let r=Ee(n,!0);t.push(` - \u5E94\u7528 ${r.length} \u6761\u5FFD\u7565\u89C4\u5219`);let s=Date.now(),i=dp("**/*",{nodir:!0,ignore:r,cwd:n}),a=((Date.now()-s)/1e3).toFixed(1);t.push(`\u627E\u5230 ${i.length} \u4E2A\u76F8\u5173\u6587\u4EF6 (\u8017\u65F6 ${a}s)
1390
+ `),t.push("\u{1F4CB} \u68C0\u6D4B\u9879\u76EE\u7C7B\u578B\u548C\u914D\u7F6E...");let c=Fc(n);c.length>0&&t.push(` - \u68C0\u6D4B\u5230\u9879\u76EE\u7C7B\u578B: ${c.join(", ")}`);let l=await Rc(n),u={name:l.name,version:l.version,description:l.description,dependencies:l.dependencies||{},devDependencies:l.devDependencies||{}};t.push(` - \u9879\u76EE\u540D\u79F0: ${u.name}`),t.push(` - \u7248\u672C: ${u.version}`),t.push(` - \u8BED\u8A00: ${l.primaryLanguage}`),l.buildTool&&t.push(` - \u6784\u5EFA\u5DE5\u5177: ${l.buildTool}`),t.push(""),t.push("\u{1F5C2}\uFE0F \u5206\u6790\u76EE\u5F55\u7ED3\u6784...");let p=this.analyzeDirectoryStructure(i);t.push(""),t.push("\u{1F310} \u68C0\u6D4B\u9879\u76EE\u7F16\u7A0B\u8BED\u8A00...");let g=this.detectProjectLanguages(i);t.push(`\u4E3B\u8981\u7F16\u7A0B\u8BED\u8A00: ${g.primaryLanguage||l.primaryLanguage||"\u672A\u77E5"}`),g.languages.length>0&&t.push(`\u68C0\u6D4B\u5230 ${g.languages.length} \u79CD\u7F16\u7A0B\u8BED\u8A00`),t.push(""),t.push("\u2699\uFE0F \u68C0\u6D4B\u8FD0\u884C\u65F6\u7248\u672C...");let d=await this.detectVersions(l,n);if(Object.keys(d).length>0)for(let[S,E]of Object.entries(d))t.push(` - ${S}: ${E}`);else t.push(" - \u672A\u68C0\u6D4B\u5230\u7248\u672C\u4FE1\u606F");t.push(""),t.push("\u{1F4D0} \u68C0\u6D4B\u4EE3\u7801\u89C4\u8303...");let m=this.detectCodeStandards(n,l.languages);m.length>0?t.push(` - \u68C0\u6D4B\u5230\u4EE3\u7801\u89C4\u8303: ${m.join(", ")}`):t.push(" - \u672A\u68C0\u6D4B\u5230\u4EE3\u7801\u89C4\u8303\u914D\u7F6E"),t.push(""),t.push("\u{1F4CB} \u5206\u6790\u9879\u76EE\u4F9D\u8D56...");let h=await this.analyzeDependencies(n,l.languages),w=Object.values(h).reduce((S,E)=>S+(E.dependencies?.length||0),0),v=Object.values(h).reduce((S,E)=>S+(E.conflicts?.length||0),0);t.push(` - \u4F9D\u8D56\u603B\u6570: ${w}`),v>0&&t.push(` - \u4F9D\u8D56\u51B2\u7A81: ${v}`),t.push(""),t.push("\u2705 \u9879\u76EE\u7ED3\u6784\u5206\u6790\u5B8C\u6210"),t.push(""),t.push("\u{1F4BE} \u4FDD\u5B58\u9879\u76EE\u57FA\u7840\u4FE1\u606F...");let T=this.buildProjectBasicInfo(u,p,i,g,l,d,m,h);try{_c(T,n),t.push("\u2705 \u9879\u76EE\u57FA\u7840\u4FE1\u606F\u5DF2\u4FDD\u5B58\u81F3: .nium/project/"),t.push("")}catch(S){console.error(" \u274C \u4FDD\u5B58\u9879\u76EE\u4FE1\u606F\u5931\u8D25:",S),t.push(`\u26A0\uFE0F \u4FDD\u5B58\u9879\u76EE\u4FE1\u606F\u5931\u8D25: ${S instanceof Error?S.message:"\u672A\u77E5\u9519\u8BEF"}`),t.push("")}t.push("\u{1F4DD} \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5217\u8868...");let f=`${n}/.nium/project/files.jsonl`;try{let S=Date.now(),E=Vc(i,f,n),P=((Date.now()-S)/1e3).toFixed(1);t.push("\u2705 \u6587\u4EF6\u4FE1\u606F\u5DF2\u66F4\u65B0\u81F3: .nium/project/files.jsonl"),t.push("");let L=zc(E);t.push(L),t.push("")}catch(S){console.error(" \u274C \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5931\u8D25:",S),t.push(`\u26A0\uFE0F \u66F4\u65B0\u6587\u4EF6\u4FE1\u606F\u5931\u8D25: ${S instanceof Error?S.message:"\u672A\u77E5\u9519\u8BEF"}`),t.push("")}let y=this.generateSummary(u,p,g,l);return t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push("\u9879\u76EE\u7ED3\u6784\u6982\u89C8"),t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push(y),t.push("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"),t.push(""),t.join(`
1391
+ `)}catch(t){return this.formatError("Quick project scan",t)}}detectProjectLanguages(e){let t={".js":"JavaScript",".mjs":"JavaScript (ES Modules)",".cjs":"JavaScript (CommonJS)",".jsx":"React JavaScript",".ts":"TypeScript",".tsx":"React TypeScript",".java":"Java",".class":"Java",".jar":"Java","pom.xml":"Java (Maven)","build.gradle":"Java (Gradle)",".py":"Python","requirements.txt":"Python","setup.py":"Python","pyproject.toml":"Python",".c":"C",".cpp":"C++",".h":"C/C++",".hpp":"C++","CMakeLists.txt":"C/C++ (CMake)",".go":"Go","go.mod":"Go",".rs":"Rust","Cargo.toml":"Rust",".php":"PHP","composer.json":"PHP (Composer)",".rb":"Ruby",Gemfile:"Ruby",".cs":"C#",".vb":"Visual Basic","packages.config":".NET",".html":"HTML",".css":"CSS",".scss":"SCSS",".less":"Less",".json":"JSON",".xml":"XML",".yml":"YAML",".yaml":"YAML",".md":"Markdown"},n={};e.forEach(a=>{if(t[a]){n[t[a]]=(n[t[a]]||0)+1;return}let c=a.lastIndexOf(".");if(c>-1){let l=a.substring(c);t[l]&&(n[t[l]]=(n[t[l]]||0)+1)}});let r=Object.entries(n).map(([a,c])=>({language:a,count:c})).sort((a,c)=>c.count-a.count),[s]=r;return{primaryLanguage:s?.language||null,languages:r,totalSourceFiles:r.reduce((a,c)=>a+c.count,0)}}analyzeDirectoryStructure(e){let t={directories:new Set,sourceFiles:[],configFiles:[],docFiles:[],testFiles:[]},n=[".js",".mjs",".cjs",".jsx",".ts",".tsx",".java",".py",".c",".cpp",".cc",".cxx",".h",".hpp",".go",".rs",".php",".rb",".cs",".kt",".kts",".scala",".swift",".m",".mm"],r=[".json",".yaml",".yml",".toml",".ini",".xml",".properties"],s=["package.json","tsconfig.json","pom.xml","build.gradle","settings.gradle","gradle.properties","Cargo.toml","go.mod","requirements.txt","setup.py","pyproject.toml","composer.json","Gemfile",".env",".env.example"];return e.forEach(i=>{let a=i.split("/");if(a.length>1&&t.directories.add(a[0]),i.includes("test")||i.includes("spec")||i.startsWith("test/")||i.startsWith("tests/")||i.includes("__tests__")||i.endsWith(".test.js")||i.endsWith(".test.ts")||i.endsWith(".spec.js")||i.endsWith(".spec.ts")||i.endsWith("Test.java")||i.endsWith("Tests.java")){t.testFiles.push(i);return}let c=i.split("/").pop()||"",l=c.includes(".")?"."+c.split(".").pop():"";i.startsWith("src/")||i.startsWith("lib/")||i.startsWith("app/"),n.includes(l)&&t.sourceFiles.push(i),(r.includes(l)||s.includes(c))&&t.configFiles.push(i),(l===".md"||l===".txt"||l===".rst"||c==="README"||c==="CHANGELOG"||c==="LICENSE"||c==="CONTRIBUTING")&&t.docFiles.push(i)}),{directories:Array.from(t.directories).sort(),sourceFiles:t.sourceFiles.sort(),configFiles:t.configFiles.sort(),docFiles:t.docFiles.sort(),testFiles:t.testFiles.sort()}}async detectVersions(e,t){try{return await Ue.detectVersionsForLanguages(e.languages,t,e.configFiles)}catch{return{}}}detectCodeStandards(e,t){try{return Ue.detectCodeStandardsForLanguages(t,e)}catch{return[]}}async analyzeDependencies(e,t){let n={};try{for(let r of t){let s=Ue.getHandler(r);if(s){let i=await s.analyzeDependencies(e);n[r.toLowerCase()]=i}}}catch(r){console.error("\u4F9D\u8D56\u5206\u6790\u5931\u8D25:",r)}return n}analyzeCoreModules(e){let t=[],n=new Map;e.sourceFiles.forEach(s=>{let i=s.split("/");if(i.length>=2){let a=i.slice(0,2).join("/");n.has(a)||n.set(a,[]),n.get(a).push(s)}});let r={core:"\u6838\u5FC3\u4E1A\u52A1\u903B\u8F91",domain:"\u9886\u57DF\u6A21\u578B\u548C\u4E1A\u52A1\u89C4\u5219",business:"\u4E1A\u52A1\u903B\u8F91\u5C42",service:"\u670D\u52A1\u5C42",services:"\u670D\u52A1\u5C42",model:"\u6570\u636E\u6A21\u578B",models:"\u6570\u636E\u6A21\u578B",entity:"\u5B9E\u4F53\u7C7B",entities:"\u5B9E\u4F53\u7C7B",dao:"\u6570\u636E\u8BBF\u95EE\u5BF9\u8C61",repository:"\u6570\u636E\u4ED3\u5E93\u5C42",repositories:"\u6570\u636E\u4ED3\u5E93\u5C42",db:"\u6570\u636E\u5E93\u64CD\u4F5C",database:"\u6570\u636E\u5E93\u64CD\u4F5C",persistence:"\u6301\u4E45\u5316\u5C42",api:"API \u63A5\u53E3",rest:"REST API",controller:"\u63A7\u5236\u5668",controllers:"\u63A7\u5236\u5668",handler:"\u8BF7\u6C42\u5904\u7406\u5668",handlers:"\u8BF7\u6C42\u5904\u7406\u5668",endpoint:"\u7AEF\u70B9\u5B9A\u4E49",endpoints:"\u7AEF\u70B9\u5B9A\u4E49",route:"\u8DEF\u7531\u5B9A\u4E49",routes:"\u8DEF\u7531\u5B9A\u4E49",view:"\u89C6\u56FE\u5C42",views:"\u89C6\u56FE\u5C42",component:"\u7EC4\u4EF6",components:"\u7EC4\u4EF6",ui:"\u7528\u6237\u754C\u9762",page:"\u9875\u9762",pages:"\u9875\u9762",layout:"\u5E03\u5C40",layouts:"\u5E03\u5C40",template:"\u6A21\u677F",templates:"\u6A21\u677F",util:"\u5DE5\u5177\u51FD\u6570",utils:"\u5DE5\u5177\u51FD\u6570",helper:"\u8F85\u52A9\u51FD\u6570",helpers:"\u8F85\u52A9\u51FD\u6570",lib:"\u5E93\u6587\u4EF6",libs:"\u5E93\u6587\u4EF6",common:"\u516C\u5171\u6A21\u5757",shared:"\u5171\u4EAB\u6A21\u5757",config:"\u914D\u7F6E\u7BA1\u7406",configuration:"\u914D\u7F6E\u7BA1\u7406",settings:"\u8BBE\u7F6E\u7BA1\u7406",constant:"\u5E38\u91CF\u5B9A\u4E49",constants:"\u5E38\u91CF\u5B9A\u4E49",enum:"\u679A\u4E3E\u5B9A\u4E49",enums:"\u679A\u4E3E\u5B9A\u4E49",middleware:"\u4E2D\u95F4\u4EF6",middlewares:"\u4E2D\u95F4\u4EF6",interceptor:"\u62E6\u622A\u5668",interceptors:"\u62E6\u622A\u5668",filter:"\u8FC7\u6EE4\u5668",filters:"\u8FC7\u6EE4\u5668",guard:"\u5B88\u536B",guards:"\u5B88\u536B",client:"\u5BA2\u6237\u7AEF",clients:"\u5BA2\u6237\u7AEF",adapter:"\u9002\u914D\u5668",adapters:"\u9002\u914D\u5668",provider:"\u63D0\u4F9B\u5546",providers:"\u63D0\u4F9B\u5546",integration:"\u5916\u90E8\u96C6\u6210",integrations:"\u5916\u90E8\u96C6\u6210",auth:"\u8BA4\u8BC1\u6388\u6743",authentication:"\u8BA4\u8BC1",authorization:"\u6388\u6743",security:"\u5B89\u5168\u6A21\u5757",cli:"\u547D\u4EE4\u884C\u63A5\u53E3",cmd:"\u547D\u4EE4\u884C\u5DE5\u5177",script:"\u811A\u672C",scripts:"\u811A\u672C",tool:"\u5DE5\u5177",tools:"\u5DE5\u5177\u96C6",test:"\u6D4B\u8BD5",tests:"\u6D4B\u8BD5",spec:"\u6D4B\u8BD5\u89C4\u8303",mock:"\u6A21\u62DF\u6570\u636E",mocks:"\u6A21\u62DF\u6570\u636E",fixture:"\u6D4B\u8BD5\u5939\u5177",fixtures:"\u6D4B\u8BD5\u5939\u5177",type:"\u7C7B\u578B\u5B9A\u4E49",types:"\u7C7B\u578B\u5B9A\u4E49",interface:"\u63A5\u53E3\u5B9A\u4E49",interfaces:"\u63A5\u53E3\u5B9A\u4E49",schema:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49",schemas:"\u6570\u636E\u7ED3\u6784\u5B9A\u4E49",dto:"\u6570\u636E\u4F20\u8F93\u5BF9\u8C61",vo:"\u503C\u5BF9\u8C61",event:"\u4E8B\u4EF6",events:"\u4E8B\u4EF6",exception:"\u5F02\u5E38\u5904\u7406",exceptions:"\u5F02\u5E38\u5904\u7406",error:"\u9519\u8BEF\u5904\u7406",errors:"\u9519\u8BEF\u5904\u7406",validator:"\u9A8C\u8BC1\u5668",validators:"\u9A8C\u8BC1\u5668",decorator:"\u88C5\u9970\u5668",decorators:"\u88C5\u9970\u5668"};return n.forEach((s,i)=>{if(s.length>=2){let a=i.split("/").pop()||i,c=a.toLowerCase(),l=r[c]||`${a} \u6A21\u5757`;t.push({name:a.charAt(0).toUpperCase()+a.slice(1),description:l,files:s})}}),t.slice(0,10)}generateProjectStructureDoc(e,t,n,r,s,i,a){let c=new Date().toISOString(),l=this.analyzeCoreModules(t),u=Object.keys(i).length>0?Object.entries(i).map(([g,d])=>`**${g}**: ${d}`).join(`
1392
+ `):"\u6682\u65E0\u7248\u672C\u4FE1\u606F",p=a.length>0?a.map(g=>`- ${g}`).join(`
1290
1393
  `):"\u6682\u65E0\u4EE3\u7801\u89C4\u8303\u914D\u7F6E";return`# ${e.name} - \u9879\u76EE\u7ED3\u6784\u6587\u6863
1291
1394
 
1292
1395
  > \u6700\u540E\u66F4\u65B0: ${c}
@@ -1301,7 +1404,7 @@ ${Array.from(u.entries()).map(([w,h])=>`${w}: ${h}`).join(`
1301
1404
  ${s.buildTool?`**\u6784\u5EFA\u5DE5\u5177**: ${s.buildTool}`:""}
1302
1405
 
1303
1406
  ### \u8FD0\u884C\u65F6\u7248\u672C
1304
- ${g}
1407
+ ${u}
1305
1408
 
1306
1409
  ### \u4EE3\u7801\u89C4\u8303
1307
1410
  ${p}
@@ -1319,7 +1422,7 @@ ${this.generateDirectoryTree(n)}
1319
1422
  ## \u7F16\u7A0B\u8BED\u8A00\u5206\u6790
1320
1423
 
1321
1424
  ### \u8BED\u8A00\u5206\u5E03
1322
- ${r.languages.length>0?r.languages.map(u=>`- **${u.language}**: ${u.count} \u4E2A\u6587\u4EF6`).join(`
1425
+ ${r.languages.length>0?r.languages.map(g=>`- **${g.language}**: ${g.count} \u4E2A\u6587\u4EF6`).join(`
1323
1426
  `):"\u6682\u65E0\u68C0\u6D4B\u5230\u7684\u7F16\u7A0B\u8BED\u8A00"}
1324
1427
 
1325
1428
  ---
@@ -1332,11 +1435,11 @@ ${this.generateDirectoryDescriptions(t.directories,s.languages)}
1332
1435
 
1333
1436
  ## \u6838\u5FC3\u6A21\u5757\u5206\u6790
1334
1437
 
1335
- ${l.length>0?l.map(u=>`### ${u.name}
1438
+ ${l.length>0?l.map(g=>`### ${g.name}
1336
1439
 
1337
- ${u.description}
1440
+ ${g.description}
1338
1441
 
1339
- **\u5305\u542B\u6587\u4EF6**: ${u.files.length} \u4E2A`).join(`
1442
+ **\u5305\u542B\u6587\u4EF6**: ${g.files.length} \u4E2A`).join(`
1340
1443
 
1341
1444
  `):"\u6682\u65E0\u6838\u5FC3\u6A21\u5757\u5206\u6790"}
1342
1445
 
@@ -1344,7 +1447,7 @@ ${u.description}
1344
1447
 
1345
1448
  ## \u6E90\u4EE3\u7801\u6587\u4EF6 (${t.sourceFiles.length} \u4E2A)
1346
1449
 
1347
- ${t.sourceFiles.length>0?t.sourceFiles.slice(0,50).map(u=>`- \`${u}\``).join(`
1450
+ ${t.sourceFiles.length>0?t.sourceFiles.slice(0,50).map(g=>`- \`${g}\``).join(`
1348
1451
  `)+(t.sourceFiles.length>50?`
1349
1452
 
1350
1453
  *...\u8FD8\u6709 ${t.sourceFiles.length-50} \u4E2A\u6587\u4EF6*`:""):"\u6682\u65E0\u6E90\u4EE3\u7801\u6587\u4EF6"}
@@ -1353,14 +1456,14 @@ ${t.sourceFiles.length>0?t.sourceFiles.slice(0,50).map(u=>`- \`${u}\``).join(`
1353
1456
 
1354
1457
  ## \u914D\u7F6E\u6587\u4EF6 (${t.configFiles.length} \u4E2A)
1355
1458
 
1356
- ${t.configFiles.length>0?t.configFiles.map(u=>`- \`${u}\``).join(`
1459
+ ${t.configFiles.length>0?t.configFiles.map(g=>`- \`${g}\``).join(`
1357
1460
  `):"\u6682\u65E0\u914D\u7F6E\u6587\u4EF6"}
1358
1461
 
1359
1462
  ---
1360
1463
 
1361
1464
  ## \u6587\u6863\u6587\u4EF6 (${t.docFiles.length} \u4E2A)
1362
1465
 
1363
- ${t.docFiles.length>0?t.docFiles.slice(0,20).map(u=>`- \`${u}\``).join(`
1466
+ ${t.docFiles.length>0?t.docFiles.slice(0,20).map(g=>`- \`${g}\``).join(`
1364
1467
  `)+(t.docFiles.length>20?`
1365
1468
 
1366
1469
  *...\u8FD8\u6709 ${t.docFiles.length-20} \u4E2A\u6587\u6863*`:""):"\u6682\u65E0\u6587\u6863\u6587\u4EF6"}
@@ -1369,7 +1472,7 @@ ${t.docFiles.length>0?t.docFiles.slice(0,20).map(u=>`- \`${u}\``).join(`
1369
1472
 
1370
1473
  ## \u6D4B\u8BD5\u6587\u4EF6 (${t.testFiles.length} \u4E2A)
1371
1474
 
1372
- ${t.testFiles.length>0?t.testFiles.slice(0,20).map(u=>`- \`${u}\``).join(`
1475
+ ${t.testFiles.length>0?t.testFiles.slice(0,20).map(g=>`- \`${g}\``).join(`
1373
1476
  `)+(t.testFiles.length>20?`
1374
1477
 
1375
1478
  *...\u8FD8\u6709 ${t.testFiles.length-20} \u4E2A\u6D4B\u8BD5\u6587\u4EF6*`:""):"\u6682\u65E0\u6D4B\u8BD5\u6587\u4EF6"}
@@ -1379,11 +1482,11 @@ ${t.testFiles.length>0?t.testFiles.slice(0,20).map(u=>`- \`${u}\``).join(`
1379
1482
  ## \u4F9D\u8D56\u5173\u7CFB
1380
1483
 
1381
1484
  ### \u751F\u4EA7\u4F9D\u8D56
1382
- ${e.dependencies?Object.entries(e.dependencies).map(([u,m])=>`- **${u}**: ${m}`).join(`
1485
+ ${e.dependencies?Object.entries(e.dependencies).map(([g,d])=>`- **${g}**: ${d}`).join(`
1383
1486
  `):"\u6682\u65E0\u751F\u4EA7\u4F9D\u8D56"}
1384
1487
 
1385
1488
  ### \u5F00\u53D1\u4F9D\u8D56
1386
- ${e.devDependencies?Object.entries(e.devDependencies).map(([u,m])=>`- **${u}**: ${m}`).join(`
1489
+ ${e.devDependencies?Object.entries(e.devDependencies).map(([g,d])=>`- **${g}**: ${d}`).join(`
1387
1490
  `):"\u6682\u65E0\u5F00\u53D1\u4F9D\u8D56"}
1388
1491
 
1389
1492
  ---
@@ -1391,22 +1494,22 @@ ${e.devDependencies?Object.entries(e.devDependencies).map(([u,m])=>`- **${u}**:
1391
1494
  ## \u5FEB\u901F\u5BFC\u822A
1392
1495
 
1393
1496
  ### \u5165\u53E3\u6587\u4EF6
1394
- ${this.findEntryPoints(e,n,s).map(u=>`- \`${u}\``).join(`
1497
+ ${this.findEntryPoints(e,n,s).map(g=>`- \`${g}\``).join(`
1395
1498
  `)}
1396
1499
 
1397
1500
  ### \u6838\u5FC3\u6A21\u5757
1398
- ${this.findCoreModules(t.sourceFiles).map(u=>`- \`${u}\``).join(`
1501
+ ${this.findCoreModules(t.sourceFiles).map(g=>`- \`${g}\``).join(`
1399
1502
  `)}
1400
1503
 
1401
1504
  ---
1402
1505
 
1403
1506
  **\u6587\u6863\u751F\u6210\u65F6\u95F4**: ${c}
1404
1507
  **\u6587\u6863\u751F\u6210\u5DE5\u5177**: quickProjectScan \u5DE5\u5177
1405
- `}generateDirectoryTree(e){let t={};e.forEach(s=>{let i=s.split("/"),a=t;i.forEach((c,l)=>{a[c]||(a[c]=l===i.length-1?null:{}),a[c]!==null&&(a=a[c])})});function n(s,i="",a=!0){let c=Object.entries(s),l="";return c.forEach(([g,p],u)=>{let m=u===c.length-1,d=m?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",y=m?" ":"\u2502 ";l+=i+d+g+`
1406
- `,p!==null&&typeof p=="object"&&(l+=n(p,i+y,m))}),l}let r=n(t);return r?r.trim():""}generateDirectoryDescriptions(e,t){let n=Wt.getDirectoryDescriptionsForLanguages(t);return e.map(r=>{let s=n[r]||"\u9879\u76EE\u76EE\u5F55";return`### \`${r}/\`
1508
+ `}generateDirectoryTree(e){let t={};e.forEach(s=>{let i=s.split("/"),a=t;i.forEach((c,l)=>{a[c]||(a[c]=l===i.length-1?null:{}),a[c]!==null&&(a=a[c])})});function n(s,i="",a=!0){let c=Object.entries(s),l="";return c.forEach(([u,p],g)=>{let d=g===c.length-1,m=d?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",h=d?" ":"\u2502 ";l+=i+m+u+`
1509
+ `,p!==null&&typeof p=="object"&&(l+=n(p,i+h,d))}),l}let r=n(t);return r?r.trim():""}generateDirectoryDescriptions(e,t){let n=Ue.getDirectoryDescriptionsForLanguages(t);return e.map(r=>{let s=n[r]||"\u9879\u76EE\u76EE\u5F55";return`### \`${r}/\`
1407
1510
  ${s}`}).join(`
1408
1511
 
1409
- `)}findEntryPoints(e,t,n){let r=[];n.entryPoints&&n.entryPoints.length>0&&r.push(...n.entryPoints),e.main&&r.push(e.main),e.bin&&(typeof e.bin=="string"?r.push(e.bin):r.push(...Object.values(e.bin)));let s=process.cwd(),i=Wt.findEntryPointsForLanguages(n.languages,t,s);return r.push(...i),[...new Set(r)]}findCoreModules(e){let t=new Set;return e.forEach(n=>{let r=n.match(/^src\/([^\/]+)\//);r&&t.add(`src/${r[1]}/`)}),Array.from(t).sort()}buildProjectBasicInfo(e,t,n,r,s,i,a,c){let l=Ya(r.languages),p=this.analyzeCoreModules(t).map(b=>({name:b.name,description:b.description,fileCount:b.files.length})),u;s.primaryLanguage.includes("JavaScript")||s.primaryLanguage.includes("TypeScript")?it("package-lock.json")?u="npm":it("yarn.lock")?u="yarn":it("pnpm-lock.yaml")?u="pnpm":u="npm":s.primaryLanguage.includes("Python")?it("poetry.lock")?u="poetry":it("Pipfile.lock")?u="pipenv":u="pip":s.primaryLanguage.includes("Java")?it("pom.xml")?u="maven":it("build.gradle")&&(u="gradle"):s.primaryLanguage.includes("Rust")?u="cargo":s.primaryLanguage.includes("Go")?u="go modules":s.primaryLanguage.includes("PHP")?u="composer":s.primaryLanguage.includes("Ruby")&&(u="bundler");let m={...e.dependencies||{}},d={...e.devDependencies||{}},y=Object.keys(m).length,w=Object.keys(d).length;if(c)for(let[b,f]of Object.entries(c))f.dependencies&&f.dependencies.forEach(T=>{let x=T.groupId&&T.artifactId?`${T.groupId}:${T.artifactId}`:T.name||"";x&&T.version&&(T.scope&&T.scope.toLowerCase().includes("test")?d[x]||(d[x]=T.version,w++):m[x]||(m[x]=T.version,y++))});return{projectName:e.name,version:e.version,description:e.description||"",primaryLanguage:r.primaryLanguage||s.primaryLanguage,languages:l,buildTool:s.buildTool,packageManager:u,runtime:s.primaryLanguage.includes("JavaScript")||s.primaryLanguage.includes("TypeScript")?"Node.js":s.primaryLanguage.includes("Java")?"JVM":s.primaryLanguage.includes("Python")?"Python":void 0,fileStats:{totalFiles:n.length,sourceFiles:t.sourceFiles.length,configFiles:t.configFiles.length,docFiles:t.docFiles.length,testFiles:t.testFiles.length},dependencies:m,devDependencies:d,dependencyCount:{production:y,development:w},detailedDependencies:c,runtimeVersions:Object.keys(i).length>0?i:void 0,codeStandards:a,entryPoints:this.findEntryPoints(e,n,s),configFiles:t.configFiles,coreModules:p.length>0?p:void 0,lastScanDate:new Date().toISOString()}}generateSummary(e,t,n,r){return`
1512
+ `)}findEntryPoints(e,t,n){let r=[];n.entryPoints&&n.entryPoints.length>0&&r.push(...n.entryPoints),e.main&&r.push(e.main),e.bin&&(typeof e.bin=="string"?r.push(e.bin):r.push(...Object.values(e.bin)));let s=process.cwd(),i=Ue.findEntryPointsForLanguages(n.languages,t,s);return r.push(...i),[...new Set(r)]}findCoreModules(e){let t=new Set;return e.forEach(n=>{let r=n.match(/^src\/([^\/]+)\//);r&&t.add(`src/${r[1]}/`)}),Array.from(t).sort()}buildProjectBasicInfo(e,t,n,r,s,i,a,c){let l=Nc(r.languages),p=this.analyzeCoreModules(t).map(T=>({name:T.name,description:T.description,fileCount:T.files.length})),g;s.primaryLanguage.includes("JavaScript")||s.primaryLanguage.includes("TypeScript")?gt("package-lock.json")?g="npm":gt("yarn.lock")?g="yarn":gt("pnpm-lock.yaml")?g="pnpm":g="npm":s.primaryLanguage.includes("Python")?gt("poetry.lock")?g="poetry":gt("Pipfile.lock")?g="pipenv":g="pip":s.primaryLanguage.includes("Java")?gt("pom.xml")?g="maven":gt("build.gradle")&&(g="gradle"):s.primaryLanguage.includes("Rust")?g="cargo":s.primaryLanguage.includes("Go")?g="go modules":s.primaryLanguage.includes("PHP")?g="composer":s.primaryLanguage.includes("Ruby")&&(g="bundler");let d={...e.dependencies||{}},m={...e.devDependencies||{}},h=Object.keys(d).length,w=Object.keys(m).length;if(c)for(let[T,f]of Object.entries(c))f.dependencies&&f.dependencies.forEach(y=>{let S=y.groupId&&y.artifactId?`${y.groupId}:${y.artifactId}`:y.name||"";S&&y.version&&(y.scope&&y.scope.toLowerCase().includes("test")?m[S]||(m[S]=y.version,w++):d[S]||(d[S]=y.version,h++))});return{projectName:e.name,version:e.version,description:e.description||"",primaryLanguage:r.primaryLanguage||s.primaryLanguage,languages:l,buildTool:s.buildTool,packageManager:g,runtime:s.primaryLanguage.includes("JavaScript")||s.primaryLanguage.includes("TypeScript")?"Node.js":s.primaryLanguage.includes("Java")?"JVM":s.primaryLanguage.includes("Python")?"Python":void 0,fileStats:{totalFiles:n.length,sourceFiles:t.sourceFiles.length,configFiles:t.configFiles.length,docFiles:t.docFiles.length,testFiles:t.testFiles.length},dependencies:d,devDependencies:m,dependencyCount:{production:h,development:w},detailedDependencies:c,runtimeVersions:Object.keys(i).length>0?i:void 0,codeStandards:a,entryPoints:this.findEntryPoints(e,n,s),configFiles:t.configFiles,coreModules:p.length>0?p:void 0,lastScanDate:new Date().toISOString()}}generateSummary(e,t,n,r){return`
1410
1513
  \u{1F4E6} \u9879\u76EE: ${e.name} (v${e.version})
1411
1514
  \u{1F310} \u4E3B\u8981\u8BED\u8A00: ${r.primaryLanguage}
1412
1515
  ${r.buildTool?`\u{1F527} \u6784\u5EFA\u5DE5\u5177: ${r.buildTool}`:""}
@@ -1415,7 +1518,7 @@ ${r.buildTool?`\u{1F527} \u6784\u5EFA\u5DE5\u5177: ${r.buildTool}`:""}
1415
1518
  \u2699\uFE0F \u914D\u7F6E\u6587\u4EF6: ${t.configFiles.length} \u4E2A
1416
1519
  \u{1F4DA} \u6587\u6863\u6587\u4EF6: ${t.docFiles.length} \u4E2A
1417
1520
  \u{1F9EA} \u6D4B\u8BD5\u6587\u4EF6: ${t.testFiles.length} \u4E2A
1418
- `}formatAction(e){return"quickProjectScan()"}formatObservation(e){return String(e)}},Cc=new at;Vt=Cc});var Us={};j(Us,{FINISH_TOOL:()=>xg,FinishTool:()=>oo,extractFinishInfo:()=>Ns,finish:()=>Cg,finishTool:()=>Sg,isFinishResult:()=>wg,isFinishTool:()=>_s});function Cg(o){return js.execute(o)}function _s(o){return o==="finish"}function Ns(o){if(!o||!o.function||o.function.name!=="finish")return null;try{let e=JSON.parse(o.function.arguments);return{answer:e.answer||"",success:e.success!==void 0?e.success:!0}}catch{return null}}function wg(o){return o&&typeof o=="object"&&o.completed===!0&&typeof o.answer=="string"}var oo,js,Sg,xg,so=S(()=>{q();oo=class extends E{getDefinition(){return{name:"finish",description:`Call this tool when you have completed the task and want to provide the final answer.
1521
+ `}formatAction(e){return"quickProjectScan()"}formatObservation(e){return String(e)}},Jc=new pt;Kt=Jc});var ei={};j(ei,{FINISH_TOOL:()=>hp,FinishTool:()=>vo,extractFinishInfo:()=>Zs,finish:()=>mp,finishTool:()=>fp,isFinishResult:()=>yp,isFinishTool:()=>Qs});function mp(o){return Xs.execute(o)}function Qs(o){return o==="finish"}function Zs(o){if(!o||!o.function||o.function.name!=="finish")return null;try{let e=JSON.parse(o.function.arguments);return{answer:e.answer||"",success:e.success!==void 0?e.success:!0}}catch{return null}}function yp(o){return o&&typeof o=="object"&&o.completed===!0&&typeof o.answer=="string"}var vo,Xs,fp,hp,wo=C(()=>{V();vo=class extends ${getDefinition(){return{name:"finish",description:`Call this tool when you have completed the task and want to provide the final answer.
1419
1522
 
1420
1523
  IMPORTANT: This is the RECOMMENDED way to signal task completion.
1421
1524
 
@@ -1435,10 +1538,10 @@ Example usage:
1435
1538
  finish({
1436
1539
  answer: "Successfully implemented the user authentication system. Created 3 new files: UserController.java, UserService.java, and SecurityConfig.java. Implemented JWT-based authentication with role-based access control. All tests are passing.",
1437
1540
  success: true
1438
- })`,input_schema:{type:"object",properties:{answer:{type:"string",description:"Comprehensive summary of what was accomplished, including key results and any important details"},success:{type:"boolean",description:"Whether the task completed successfully (defaults to true)",default:!0}},required:["answer"]}}}execute(e){return{completed:!0,answer:e.answer,success:e.success!==void 0?e.success:!0}}formatAction(e){let t=e.success!==!1?"\u6210\u529F\u5B8C\u6210":"\u5B8C\u6210\uFF08\u6709\u95EE\u9898\uFF09",n=e.answer.length>50?`${e.answer.substring(0,50)}...`:e.answer;return`finish(status=${t}, answer="${n}")`}formatObservation(e){return"\u4EFB\u52A1\u5DF2\u5B8C\u6210"}shouldPrintObservation(e){return!1}},js=new oo;Sg=js,xg=js.getDefinition()});var zs={};j(zs,{executePlanTask:()=>bg,getGlobalSession:()=>vg,resumePlanTask:()=>Tg,setGlobalSession:()=>Ws});import P from"chalk";function Ws(o){N=o}function vg(){return N}async function bg(o,e=1,t={}){let n=new Fe,r=new je(n),s=new _e(n,r),i=new Ne,{callModelAPI:a}=await Promise.resolve().then(()=>(Ce(),jt)),{AnchorInjector:c}=await Promise.resolve().then(()=>(zn(),xs)),l=new c(o,a),g=Ht(),p={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1},u=f=>{N?N.log(f):console.log(f)},m=f=>{N?N.info(f):console.log(P.blue(f))},d=f=>{N?N.success(f):console.log(P.green(f))},y=f=>{N?N.warning(f):console.log(P.yellow(f))},w=f=>{N?N.error(f):console.log(P.red(f))},h=" ".repeat(e-1),b=new io({log:u,info:m,success:d,warning:y,error:w});try{let f=await import("fs"),T=await import("path");try{let M=T.join(process.cwd(),".nium/project/project.json");if(f.existsSync(M)){let I=f.statSync(M);(Date.now()-I.mtimeMs)/(1e3*60*60)>24&&y("\u26A0\uFE0F \u9879\u76EE\u7ED3\u6784\u6587\u6863\u5DF2\u8D85\u8FC724\u5C0F\u65F6\uFF0C\u5EFA\u8BAE\u66F4\u65B0")}else{m("\u{1F4CB} \u9996\u6B21\u6267\u884C\u4EFB\u52A1\uFF0C\u6B63\u5728\u626B\u63CF\u9879\u76EE\u7ED3\u6784...");let{quickProjectScan:I}=await Promise.resolve().then(()=>(Fs(),Sc));await I(),d(`\u2705 \u9879\u76EE\u7ED3\u6784\u626B\u63CF\u5B8C\u6210
1439
- `)}}catch{y("\u9879\u76EE\u7ED3\u6784\u626B\u63CF\u5931\u8D25\uFF0C\u5C06\u7EE7\u7EED\u6267\u884C\u4EFB\u52A1")}u(""),u(`${h}${"\u2550".repeat(60-e*2)}`),m(`${h}\u{1F4CB} \u5F00\u59CB\u89C4\u5212\u4EFB\u52A1 (\u5D4C\u5957\u5C42\u7EA7: ${e})`),u(`${h}${"\u2550".repeat(60-e*2)}`),u("");let x=g.getAllSubAgents(),k=await Rn(o,x);n.initializeTask(o,k),k.taskId&&ft(k.taskId);let O=kg(Dn(k),e);u(O),u(""),b.showTaskStart(o,k.tasks.length,e);for(let M=0;M<k.tasks.length;M++){let I=k.tasks[M],B=I.step;b.showStepProgress(B,k.tasks.length,I,e),n.plan.currentStep=B,k.taskId&&await nt(k.taskId,B,"in_progress");try{let Q=xc(I,g),V=await s.buildIsolatedContext(B,I.description,Q?.prompt||"",p.useLLMDisclosure,I.allowedTools);Q?await wc(B,I.description,Q,V,n,i,g,p,{log:u,info:m,success:d,warning:y,error:w},I.allowedTools):await vc(I.description,V,n,{log:u,info:m},I.allowedTools),b.showStepComplete(B,k.tasks.length,I,e),k.taskId&&await nt(k.taskId,B,"completed")}catch(Q){let V=Q instanceof Error?Q.message:String(Q);throw b.showStepError(B,k.tasks.length,V,e),y(`${h}\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C`),n.recordStepCompletion(B,`\u5931\u8D25: ${V}`,{success:!1,error:V}),Q}}return b.showTaskComplete(k.tasks.length,k.tasks.length,e),ht(),{success:!0,taskId:k.taskId,completedSteps:k.tasks.length,plan:k,planMarkdown:k.markdown,tasks:k.tasks}}catch(f){ht();let T=f instanceof Error?f.message:String(f);throw w(`${h}\u274C \u89C4\u5212\u4EFB\u52A1\u6267\u884C\u5931\u8D25: ${T}`),f}}async function Tg(o,e=0,t={}){let{loadTaskPlan:n}=await Promise.resolve().then(()=>(be(),Oe)),r=n(o);if(!r)throw new Error(`\u65E0\u6CD5\u52A0\u8F7D\u4EFB\u52A1\u8BA1\u5212: ${o}`);let s=new Fe,i=new je(s),a=new _e(s,i),c=new Ne,l=Ht(),g={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1},p=f=>{N?N.log(f):console.log(f)},u=f=>{N?N.info(f):console.log(P.blue(f))},m=f=>{N?N.success(f):console.log(P.green(f))},d=f=>{N?N.warning(f):console.log(P.yellow(f))},y=f=>{N?N.error(f):console.log(P.red(f))};p(P.cyan(`[\u4EFB\u52A1\u6062\u590D] \u6B63\u5728\u6062\u590D\u4EFB\u52A1: ${o}`)),p(P.gray(`\u4ECE\u6B65\u9AA4 ${e||1} \u5F00\u59CB\u6267\u884C`));let w=1,h="",b=new io({log:p,info:u,success:m,warning:d,error:y});try{s.initializeTask(r.taskId,r),r.taskId&&ft(r.taskId),p(""),p(P.cyan("\u2550".repeat(60))),u("\u{1F4CB} \u6062\u590D\u4EFB\u52A1\u6267\u884C"),p(P.cyan("\u2550".repeat(60))),p(""),b.showTaskStart(r.taskId,r.tasks.length,w);let f=e>0?e-1:0;for(let T=f;T<r.tasks.length;T++){let x=r.tasks[T],k=x.step;if(b.showStepProgress(k,r.tasks.length,x,w),s.plan.currentStep=k,r.taskId){let{updateTaskStatus:O}=await Promise.resolve().then(()=>(be(),Oe));await O(r.taskId,k,"in_progress")}try{let O=xc(x,l),M=await a.buildIsolatedContext(k,x.description,O?.prompt||"",g.useLLMDisclosure,x.allowedTools);if(O?await wc(k,x.description,O,M,s,c,l,g,{log:p,info:u,success:m,warning:d,error:y},x.allowedTools):await vc(x.description,M,s,{log:p,info:u},x.allowedTools),b.showStepComplete(k,r.tasks.length,x,w),r.taskId){let{updateTaskStatus:I}=await Promise.resolve().then(()=>(be(),Oe));await I(r.taskId,k,"completed")}}catch(O){let M=O instanceof Error?O.message:String(O);throw b.showStepError(k,r.tasks.length,M,w),d(`${h}\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C`),s.recordStepCompletion(k,`\u5931\u8D25: ${M}`,{success:!1,error:M}),O}}return b.showTaskComplete(r.tasks.length,r.tasks.length,w),ht(),{success:!0,taskId:r.taskId,completedSteps:r.tasks.length-f,resumedFrom:e||1}}catch(f){ht();let T=f instanceof Error?f.message:String(f);throw y(`${h}\u274C \u4EFB\u52A1\u6062\u590D\u6267\u884C\u5931\u8D25: ${T}`),f}}function kg(o,e){return e<=1?o:o.split(`
1541
+ })`,input_schema:{type:"object",properties:{answer:{type:"string",description:"Comprehensive summary of what was accomplished, including key results and any important details"},success:{type:"boolean",description:"Whether the task completed successfully (defaults to true)",default:!0}},required:["answer"]}}}execute(e){return{completed:!0,answer:e.answer,success:e.success!==void 0?e.success:!0}}formatAction(e){let t=e.success!==!1?"\u6210\u529F\u5B8C\u6210":"\u5B8C\u6210\uFF08\u6709\u95EE\u9898\uFF09",n=e.answer.length>50?`${e.answer.substring(0,50)}...`:e.answer;return`finish(status=${t}, answer="${n}")`}formatObservation(e){return"\u4EFB\u52A1\u5DF2\u5B8C\u6210"}shouldPrintObservation(e){return!1}},Xs=new vo;fp=Xs,hp=Xs.getDefinition()});var ni={};j(ni,{executePlanTask:()=>xp,getGlobalSession:()=>Cp,resumePlanTask:()=>Sp,setGlobalSession:()=>ti});import k from"chalk";function ti(o){z=o}function Cp(){return z}async function xp(o,e=1,t={}){let n=t.useLLMSummary!==void 0?t.useLLMSummary:!0,r=new Ve,s=new ze(r),i=new He(r,s),a=new Je(n),{callModelAPI:c}=await Promise.resolve().then(()=>(ve(),Gt)),{AnchorInjector:l}=await Promise.resolve().then(()=>(cr(),Js)),u=new l(o,c),p=Yt(),g={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1},d=y=>{z?z.log(y):console.log(y)},m=y=>{z?z.info(y):console.log(k.blue(y))},h=y=>{z?z.success(y):console.log(k.green(y))},w=y=>{z?z.warning(y):console.log(k.yellow(y))},v=y=>{z?z.error(y):console.log(k.red(y))},T=" ".repeat(e-1),f=new bo({log:d,info:m,success:h,warning:w,error:v});try{let y=await import("fs"),S=await import("path");try{let R=S.join(process.cwd(),".nium/project/project.json");if(y.existsSync(R)){let O=y.statSync(R);(Date.now()-O.mtimeMs)/(1e3*60*60)>24&&w("\u26A0\uFE0F \u9879\u76EE\u7ED3\u6784\u6587\u6863\u5DF2\u8D85\u8FC724\u5C0F\u65F6\uFF0C\u5EFA\u8BAE\u66F4\u65B0")}else{m("\u{1F4CB} \u9996\u6B21\u6267\u884C\u4EFB\u52A1\uFF0C\u6B63\u5728\u626B\u63CF\u9879\u76EE\u7ED3\u6784...");let{quickProjectScan:O}=await Promise.resolve().then(()=>(Ys(),Gc));await O(),h(`\u2705 \u9879\u76EE\u7ED3\u6784\u626B\u63CF\u5B8C\u6210
1542
+ `)}}catch{w("\u9879\u76EE\u7ED3\u6784\u626B\u63CF\u5931\u8D25\uFF0C\u5C06\u7EE7\u7EED\u6267\u884C\u4EFB\u52A1")}d(""),d(`${T}${"\u2550".repeat(60-e*2)}`),m(`${T}\u{1F4CB} \u5F00\u59CB\u89C4\u5212\u4EFB\u52A1 (\u5D4C\u5957\u5C42\u7EA7: ${e})`),d(`${T}${"\u2550".repeat(60-e*2)}`),d("");let E=p.getAllSubAgents(),P=await Zn(o,E);r.initializeTask(o,P),P.taskId&&St(P.taskId);let L=vp(er(P),e);d(L),d(""),f.showTaskStart(o,P.tasks.length,e);for(let R=0;R<P.tasks.length;R++){let O=P.tasks[R],K=O.step;f.showStepProgress(K,P.tasks.length,O,e),r.plan.currentStep=K,P.taskId&&await at(P.taskId,K,"in_progress");try{let U=Bc(O,p),I=await i.buildIsolatedContext(K,O.description,U?.prompt||"",g.useLLMDisclosure,O.allowedTools);U?await qc(K,O.description,U,I,r,a,s,p,g,{log:d,info:m,success:h,warning:w,error:v},O.allowedTools):await Kc(O.description,I,r,{log:d,info:m},O.allowedTools),f.showStepComplete(K,P.tasks.length,O,e),P.taskId&&await at(P.taskId,K,"completed")}catch(U){let I=U instanceof Error?U.message:String(U);throw f.showStepError(K,P.tasks.length,I,e),w(`${T}\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C`),r.recordStepCompletion(K,`\u5931\u8D25: ${I}`,{success:!1,error:I}),U}}return f.showTaskComplete(P.tasks.length,P.tasks.length,e),vt(),{success:!0,taskId:P.taskId,completedSteps:P.tasks.length,plan:P,planMarkdown:P.markdown,tasks:P.tasks}}catch(y){vt();let S=y instanceof Error?y.message:String(y);throw v(`${T}\u274C \u89C4\u5212\u4EFB\u52A1\u6267\u884C\u5931\u8D25: ${S}`),y}}async function Sp(o,e=0,t={}){let{loadTaskPlan:n}=await Promise.resolve().then(()=>($e(),We)),r=n(o);if(!r)throw new Error(`\u65E0\u6CD5\u52A0\u8F7D\u4EFB\u52A1\u8BA1\u5212: ${o}`);let s=new Ve,i=new ze(s),a=new He(s,i),c=new Je,l=Yt(),u={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1},p=f=>{z?z.log(f):console.log(f)},g=f=>{z?z.info(f):console.log(k.blue(f))},d=f=>{z?z.success(f):console.log(k.green(f))},m=f=>{z?z.warning(f):console.log(k.yellow(f))},h=f=>{z?z.error(f):console.log(k.red(f))};p(k.cyan(`[\u4EFB\u52A1\u6062\u590D] \u6B63\u5728\u6062\u590D\u4EFB\u52A1: ${o}`)),p(k.gray(`\u4ECE\u6B65\u9AA4 ${e||1} \u5F00\u59CB\u6267\u884C`));let w=1,v="",T=new bo({log:p,info:g,success:d,warning:m,error:h});try{s.initializeTask(r.taskId,r),r.taskId&&St(r.taskId),p(""),p(k.cyan("\u2550".repeat(60))),g("\u{1F4CB} \u6062\u590D\u4EFB\u52A1\u6267\u884C"),p(k.cyan("\u2550".repeat(60))),p(""),T.showTaskStart(r.taskId,r.tasks.length,w);let f=e>0?e-1:0;for(let y=f;y<r.tasks.length;y++){let S=r.tasks[y],E=S.step;if(T.showStepProgress(E,r.tasks.length,S,w),s.plan.currentStep=E,r.taskId){let{updateTaskStatus:P}=await Promise.resolve().then(()=>($e(),We));await P(r.taskId,E,"in_progress")}try{let P=Bc(S,l),L=await a.buildIsolatedContext(E,S.description,P?.prompt||"",u.useLLMDisclosure,S.allowedTools);if(P?await qc(E,S.description,P,L,s,c,i,l,u,{log:p,info:g,success:d,warning:m,error:h},S.allowedTools):await Kc(S.description,L,s,{log:p,info:g},S.allowedTools),T.showStepComplete(E,r.tasks.length,S,w),r.taskId){let{updateTaskStatus:R}=await Promise.resolve().then(()=>($e(),We));await R(r.taskId,E,"completed")}}catch(P){let L=P instanceof Error?P.message:String(P);throw T.showStepError(E,r.tasks.length,L,w),m(`${v}\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C`),s.recordStepCompletion(E,`\u5931\u8D25: ${L}`,{success:!1,error:L}),P}}return T.showTaskComplete(r.tasks.length,r.tasks.length,w),vt(),{success:!0,taskId:r.taskId,completedSteps:r.tasks.length-f,resumedFrom:e||1}}catch(f){vt();let y=f instanceof Error?f.message:String(f);throw h(`${v}\u274C \u4EFB\u52A1\u6062\u590D\u6267\u884C\u5931\u8D25: ${y}`),f}}function vp(o,e){return e<=1?o:o.split(`
1440
1543
  `).map(r=>{if(r.trim().startsWith("#")){let s=r.match(/^#+/)?.[0].length||0,i=Math.min(s+e-1,6),a="#".repeat(i);return r.replace(/^#+/,a)}return r}).join(`
1441
- `)}function xc(o,e){return o.subAgent&&o.subAgent!=="default"?e.getSubAgent(o.subAgent):null}async function wc(o,e,t,n,r,s,i,a,c,l){let{log:g,info:p,error:u}=c,m=Date.now();p(`\u{1F527} \u4F7F\u7528\u5B50\u667A\u80FD\u4F53: ${t.name}`),g(P.gray(`\u63CF\u8FF0: ${t.description}`)),l&&l.length>0&&g(P.gray(`\u6CE8\u610F: \u5B50\u667A\u80FD\u4F53 ${t.name} \u4E0D\u53D7\u6B65\u9AA4\u5DE5\u5177\u9650\u5236\u5F71\u54CD`)),g("");try{let{SYSTEM_PROMPT:d}=await Promise.resolve().then(()=>(tt(),us)),y=[{role:"system",content:d},...n.filter(b=>b.role!=="system"),...n.filter(b=>b.role==="system"&&b!==n[0])],w=await bc(y,e,c,void 0,t);await Pg(o,w,r,s,a,c);let h=Date.now()-m;i.recordAgentPerformance(t.name,!0,h)}catch(d){let y=Date.now()-m;throw i.recordAgentPerformance(t.name,!1,y),d}}async function vc(o,e,t,n,r){let{log:s,info:i}=n;i("\u{1F916} \u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),r&&r.length>0&&s(P.gray(`\u5DE5\u5177\u9650\u5236: ${r.join(", ")}`)),s("");let{SYSTEM_PROMPT:a}=await Promise.resolve().then(()=>(tt(),us)),c=[{role:"system",content:a},...e.filter(l=>l.role!=="system"),...e.filter(l=>l.role==="system")];await bc(c,o,n,r)}async function bc(o,e,t,n,r=null){let{log:s,error:i}=t,{MODEL:a}=await Promise.resolve().then(()=>(ae(),yt)),{callModelAPI:c}=await Promise.resolve().then(()=>(Ce(),jt)),{isThinkTool:l,extractThought:g}=await Promise.resolve().then(()=>(An(),os)),{isFinishTool:p,extractFinishInfo:u}=await Promise.resolve().then(()=>(so(),Us)),{getToolDefinitions:m}=await Promise.resolve().then(()=>(Ot(),Vs)),{tools:d,toolInstances:y,extractToolResult:w}=await Promise.resolve().then(()=>(Ee(),Gn)),{saveSession:h}=await Promise.resolve().then(()=>(De(),ji)),{logDebug:b,logWarn:f}=await Promise.resolve().then(()=>(Y(),Ao)),{AnchorInjector:T}=await Promise.resolve().then(()=>(zn(),xs)),x=[...o],k=0,O=50,M=0,I=new T(e,c),B=m(),Q=n&&n.length>0?B.filter(V=>n.includes(V.name)):B;for(n&&n.length>0&&b(`\u672C\u6B65\u9AA4\u53EF\u7528\u5DE5\u5177: ${Q.map(V=>V.name).join(", ")}`);k<O;){k++,b(`Loop iteration ${k}`);try{let V=await I.injectAnchors({taskDescription:e,iterations:k,messages:x,lastSemanticCheckIteration:M,callModelAPI:c}),{messages:L,lastSemanticCheckIteration:re}=V;x=L,M=re,h(x,e);let te=await c({model:a(),messages:x,temperature:.1,tools:Q}),Xt=te.choices[0].message.tool_calls;if(te.choices[0].finish_reason==="stop"){let{content:F}=te.choices[0].message;if(F&&F.trim()){if(r?.finalAnswerCallback)try{await r.finalAnswerCallback(F)}catch(Ie){let{logError:Ae}=await Promise.resolve().then(()=>(Y(),Ao));Ae(`Error in finalAnswerCallback: ${Ie}`)}s(P.green("\u4EFB\u52A1\u5B8C\u6210:")),s(F),s("")}break}if(!Xt||Xt.length===0){let{content:F}=te.choices[0].message;F&&F.trim()&&(s(P.yellow(F)),s(""));continue}let z=Xt[0],we=z.function.name;if(n&&n.length>0&&!n.includes(we)){let F=`Error: \u5DE5\u5177 '${we}' \u672A\u5728\u672C\u6B65\u9AA4\u7684\u6388\u6743\u5217\u8868\u4E2D\u3002\u5141\u8BB8\u4F7F\u7528\u7684\u5DE5\u5177: ${n.join(", ")}`;i(F),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:F});continue}let cr;try{cr=JSON.parse(z.function.arguments)}catch{i(`\u89E3\u6790\u5DE5\u5177\u53C2\u6570\u5931\u8D25: ${z.function.arguments}`),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:"Error: Invalid JSON arguments"});continue}if(l(we)){let F=g(z);F&&(s(P.cyan(`\u{1F4AD} Think: ${F}`)),s("")),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:"Noted. Continue with your action."});continue}if(p(we)){let F=u(z);if(F){let{answer:Ie,success:Ae}=F;if(r?.finalAnswerCallback)try{await r.finalAnswerCallback(Ie)}catch(il){f(`Error in finalAnswerCallback: ${il}`)}let sl=Ae?"\u2705":"\u26A0\uFE0F";s(P.green(`${sl} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`)),s(Ie),s(""),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:"Task completed successfully."}),x.push({role:"assistant",content:Ie});break}}if(!d[we]){let F=`Error: Unknown tool '${we}'`;i(F),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:F});continue}let lr=m().find(F=>F.name===we);if(lr&&lr.input_schema&&lr.input_schema.required){let Ie=(lr.input_schema.required||[]).filter(Ae=>cr[Ae]===void 0);if(Ie.length>0){let Ae=`Error: Missing required parameters: ${Ie.join(", ")}`;i(Ae),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:Ae});continue}}let ut=y[we],tl=ut?ut.formatAction(cr):`${we}()`;s(P.blue(`\u{1F527} \u884C\u52A8: ${tl}`)),s("");let ur=await d[we](cr),nl=w(ur),rl=ut?ut.shouldPrintObservation(ur):!0,ol=ut?ut.formatObservation(ur):String(ur);rl&&(s(P.yellow(`\u{1F4CA} \u89C2\u5BDF: ${ol}`)),s("")),x.push({role:"assistant",content:null,tool_calls:[z]}),x.push({role:"tool",tool_call_id:z.id,content:String(nl)}),h(x,e)}catch(V){throw i(`\u9519\u8BEF: ${V.message}`),h(x,e),V}}if(k>=O)throw i("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570"),h(x,e),new Error("Maximum iterations reached");return x}async function Pg(o,e,t,n,r,s){let{info:i,log:a}=s,c;r.useLLMSummary?c=await n.extractSummaryWithLLM(e):c=await n.extractSummary(e);let l=n.extractMetadata(e);l.success=!0,t.recordStepCompletion(o,c,l),r.verbose&&(i(`\u6B65\u9AA4 ${o} \u6458\u8981\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587`),a(""),a(P.gray("\u2500\u2500\u2500 \u6B65\u9AA4\u6267\u884C\u6458\u8981 \u2500\u2500\u2500")),a(P.gray(`\u6458\u8981: ${c}`)),a(P.gray(`\u5DE5\u5177: ${l.toolsUsed.join(", ")}`)),a(P.gray(`\u6587\u4EF6: ${l.filesAccessed.join(", ")}`)),a(P.gray(`\u8FED\u4EE3: ${l.iterations} \u6B21`)))}var io,N,ao=S(()=>{be();co();De();ws();io=class{startTime;stepStartTime=null;log;info;success;warning;error;constructor(e){this.startTime=Date.now(),this.log=e.log,this.info=e.info,this.success=e.success,this.warning=e.warning,this.error=e.error}showTaskStart(e,t,n=1){let r=" ".repeat(n-1);this.log(""),this.log(P.cyan(`${r}\u2554${"\u2550".repeat(58-n*2)}\u2557`)),this.log(P.cyan(`${r}\u2551`)+P.bold.white(" \u{1F680} \u5F00\u59CB\u6267\u884C\u4EFB\u52A1\u8BA1\u5212")+P.cyan(` (\u5171${t}\u6B65)`.padEnd(58-n*2-13))+P.cyan("\u2551")),this.log(P.cyan(`${r}\u255A${"\u2550".repeat(58-n*2)}\u255D`)),this.log("")}showStepProgress(e,t,n,r=1){this.stepStartTime=Date.now();let s=" ".repeat(r-1),i=Math.round(e/t*100),a=this.createProgressBar(i,30);this.log(""),this.log(P.blue(`${s}\u250C${"\u2500".repeat(58-r*2)}\u2510`)),this.log(P.blue(`${s}\u2502`)+` \u6B65\u9AA4 ${e}/${t} (${i}%)`.padEnd(60-r*2)+P.blue("\u2502")),this.log(P.blue(`${s}\u2502`)+` ${a}`.padEnd(60-r*2)+P.blue("\u2502")),this.log(P.blue(`${s}\u2502`)+P.cyan(` \u{1F4CC} ${n.description}`.substring(0,58-r*2)).padEnd(60-r*2)+P.blue("\u2502")),this.log(P.blue(`${s}\u2502`)+P.gray(` \u{1F916} \u667A\u80FD\u4F53: ${n.subAgent}`.substring(0,58-r*2)).padEnd(60-r*2)+P.blue("\u2502")),this.log(P.blue(`${s}\u2514${"\u2500".repeat(58-r*2)}\u2518`)),this.log("")}showStepComplete(e,t,n,r=1){let s=" ".repeat(r-1),i=this.stepStartTime?this.formatDuration(Date.now()-this.stepStartTime):"",a=Math.round(e/t*100);this.success(`${s}\u2705 \u6B65\u9AA4 ${e}/${t} \u5B8C\u6210${P.gray(` (${i})`)}`),this.log("")}showTaskComplete(e,t,n=1){let r=" ".repeat(n-1),s=this.formatDuration(Date.now()-this.startTime),i=Math.round(e/t*100);this.log(""),this.log(P.green(`${r}\u2554${"\u2550".repeat(58-n*2)}\u2557`)),this.log(P.green(`${r}\u2551`)+P.bold.white(" \u{1F389} \u4EFB\u52A1\u6267\u884C\u5B8C\u6210!")+P.green("".padEnd(58-n*2-12))+P.green("\u2551")),this.log(P.green(`${r}\u2551`)+` \u5B8C\u6210\u8FDB\u5EA6: ${e}/${t} (${i}%)`.padEnd(60-n*2)+P.green("\u2551")),this.log(P.green(`${r}\u2551`)+` \u603B\u8017\u65F6: ${s}`.padEnd(60-n*2)+P.green("\u2551")),this.log(P.green(`${r}\u255A${"\u2550".repeat(58-n*2)}\u255D`)),this.log("")}showStepError(e,t,n,r=1){let s=" ".repeat(r-1);this.log(""),this.error(`${s}\u274C \u6B65\u9AA4 ${e}/${t} \u6267\u884C\u5931\u8D25`),this.error(`${s} \u9519\u8BEF: ${n.substring(0,100)}`),this.log("")}createProgressBar(e,t=30){let n=Math.round(e/100*t),r=t-n;return`${P.green("\u2588".repeat(n))+P.gray("\u2591".repeat(r))} ${e}%`}formatDuration(e){if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/6e4),n=(e%6e4/1e3).toFixed(0);return`${t}m ${n}s`}},N=null});import $g from"chalk";async function Bn(o){return await Tc.execute(o)}var Me,Tc,qn,Hs=S(()=>{q();Me=class o extends E{static nestingLevel=0;static MAX_NESTING_LEVEL=2;getDefinition(){let e=o.nestingLevel,t=o.MAX_NESTING_LEVEL,n="USE THIS TOOL FIRST for COMPLEX tasks! This is your PRIMARY tool for handling multi-step, cross-component work.";return e===t-1?n="USE THIS TOOL SPARINGLY for VERY COMPLEX sub-tasks! This is your last level of nesting.":e>=t&&(n="DO NOT USE THIS TOOL - maximum nesting level reached!"),{name:"plan",description:`${n}
1544
+ `)}function Bc(o,e){return o.subAgent&&o.subAgent!=="default"?e.getSubAgent(o.subAgent):null}async function qc(o,e,t,n,r,s,i,a,c,l,u){let{log:p,info:g,error:d}=l,m=Date.now();g(`\u{1F527} \u4F7F\u7528\u5B50\u667A\u80FD\u4F53: ${t.name}`),p(k.gray(`\u63CF\u8FF0: ${t.description}`)),u&&u.length>0&&p(k.gray(`\u6CE8\u610F: \u5B50\u667A\u80FD\u4F53 ${t.name} \u4E0D\u53D7\u6B65\u9AA4\u5DE5\u5177\u9650\u5236\u5F71\u54CD`)),p("");try{let{SYSTEM_PROMPT:h}=await Promise.resolve().then(()=>(it(),Fs)),w=[{role:"system",content:h},...n.filter(f=>f.role!=="system"),...n.filter(f=>f.role==="system"&&f!==n[0])],v=await Yc(w,e,l,void 0,t);await wp(o,v,r,s,i,c,l);let T=Date.now()-m;a.recordAgentPerformance(t.name,!0,T)}catch(h){let w=Date.now()-m;throw a.recordAgentPerformance(t.name,!1,w),h}}async function Kc(o,e,t,n,r){let{log:s,info:i}=n;i("\u{1F916} \u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),r&&r.length>0&&s(k.gray(`\u5DE5\u5177\u9650\u5236: ${r.join(", ")}`)),s("");let{SYSTEM_PROMPT:a}=await Promise.resolve().then(()=>(it(),Fs)),c=[{role:"system",content:a},...e.filter(l=>l.role!=="system"),...e.filter(l=>l.role==="system")];await Yc(c,o,n,r)}async function Yc(o,e,t,n,r=null){let{log:s,error:i}=t,{MODEL:a}=await Promise.resolve().then(()=>(le(),wt)),{callModelAPI:c}=await Promise.resolve().then(()=>(ve(),Gt)),{isThinkTool:l,extractThought:u}=await Promise.resolve().then(()=>(Xn(),Ms)),{isFinishTool:p,extractFinishInfo:g}=await Promise.resolve().then(()=>(wo(),ei)),{getToolDefinitions:d}=await Promise.resolve().then(()=>(Ht(),ri)),{tools:m,toolInstances:h,extractToolResult:w}=await Promise.resolve().then(()=>(Re(),ur)),{saveSession:v}=await Promise.resolve().then(()=>(Ne(),Zi)),{logDebug:T,logWarn:f}=await Promise.resolve().then(()=>(Y(),Yo)),{AnchorInjector:y}=await Promise.resolve().then(()=>(cr(),Js)),S=[...o],E=0,P=50,L=0,R=new y(e,c),O=d(),K=n&&n.length>0?O.filter(U=>n.includes(U.name)):O;for(n&&n.length>0&&T(`\u672C\u6B65\u9AA4\u53EF\u7528\u5DE5\u5177: ${K.map(U=>U.name).join(", ")}`);E<P;){E++,T(`Loop iteration ${E}`);try{let U=await R.injectAnchors({taskDescription:e,iterations:E,messages:S,lastSemanticCheckIteration:L,callModelAPI:c}),{messages:I,lastSemanticCheckIteration:oe}=U;S=I,L=oe,v(S,e);let te=await c({model:a(),messages:S,temperature:.1,tools:K}),on=te.choices[0].message.tool_calls;if(te.choices[0].finish_reason==="stop"){let{content:F}=te.choices[0].message;if(F&&F.trim()){if(r?.finalAnswerCallback)try{await r.finalAnswerCallback(F)}catch(Fe){let{logError:Oe}=await Promise.resolve().then(()=>(Y(),Yo));Oe(`Error in finalAnswerCallback: ${Fe}`)}s(k.green("\u4EFB\u52A1\u5B8C\u6210:")),s(F),s("")}break}if(!on||on.length===0){let{content:F}=te.choices[0].message;F&&F.trim()&&(s(k.yellow(F)),s(""));continue}let J=on[0],Te=J.function.name;if(n&&n.length>0&&!n.includes(Te)){let F=`Error: \u5DE5\u5177 '${Te}' \u672A\u5728\u672C\u6B65\u9AA4\u7684\u6388\u6743\u5217\u8868\u4E2D\u3002\u5141\u8BB8\u4F7F\u7528\u7684\u5DE5\u5177: ${n.join(", ")}`;i(F),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:F});continue}let kr;try{kr=JSON.parse(J.function.arguments)}catch{i(`\u89E3\u6790\u5DE5\u5177\u53C2\u6570\u5931\u8D25: ${J.function.arguments}`),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:"Error: Invalid JSON arguments"});continue}if(l(Te)){let F=u(J);F&&(s(k.cyan(`\u{1F4AD} Think: ${F}`)),s("")),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:"Noted. Continue with your action."});continue}if(p(Te)){let F=g(J);if(F){let{answer:Fe,success:Oe}=F;if(r?.finalAnswerCallback)try{await r.finalAnswerCallback(Fe)}catch(Dl){f(`Error in finalAnswerCallback: ${Dl}`)}let Rl=Oe?"\u2705":"\u26A0\uFE0F";s(k.green(`${Rl} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`)),s(Fe),s(""),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:"Task completed successfully."}),S.push({role:"assistant",content:Fe});break}}if(!m[Te]){let F=`Error: Unknown tool '${Te}'`;i(F),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:F});continue}let Er=d().find(F=>F.name===Te);if(Er&&Er.input_schema&&Er.input_schema.required){let Fe=(Er.input_schema.required||[]).filter(Oe=>kr[Oe]===void 0);if(Fe.length>0){let Oe=`Error: Missing required parameters: ${Fe.join(", ")}`;i(Oe),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:Oe});continue}}let ft=h[Te],Ml=ft?ft.formatAction(kr):`${Te}()`;s(k.blue(`\u{1F527} \u884C\u52A8: ${Ml}`)),s("");let Pr=await m[Te](kr),Il=w(Pr),Al=ft?ft.shouldPrintObservation(Pr):!0,Ll=ft?ft.formatObservation(Pr):String(Pr);Al&&(s(k.yellow(`\u{1F4CA} \u89C2\u5BDF: ${Ll}`)),s("")),S.push({role:"assistant",content:null,tool_calls:[J]}),S.push({role:"tool",tool_call_id:J.id,content:String(Il)}),v(S,e)}catch(U){throw i(`\u9519\u8BEF: ${U.message}`),v(S,e),U}}if(E>=P)throw i("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570"),v(S,e),new Error("Maximum iterations reached");return S}async function wp(o,e,t,n,r,s,i){let{info:a,log:c}=i,l=await n.extractSummary(e),u=n.extractMetadata(e);u.success=!0,t.recordStepCompletion(o,l,u,r),s.verbose&&(a(`\u6B65\u9AA4 ${o} \u6458\u8981\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587`),c(""),c(k.gray("\u2500\u2500\u2500 \u6B65\u9AA4\u6267\u884C\u6458\u8981 \u2500\u2500\u2500")),c(k.gray(`\u6458\u8981: ${l}`)),c(k.gray(`\u5DE5\u5177: ${u.toolsUsed.join(", ")}`)),c(k.gray(`\u6587\u4EF6: ${u.filesAccessed.join(", ")}`)),c(k.gray(`\u8FED\u4EE3: ${u.iterations} \u6B21`)))}var bo,z,To=C(()=>{$e();ko();Ne();Gs();bo=class{startTime;stepStartTime=null;log;info;success;warning;error;constructor(e){this.startTime=Date.now(),this.log=e.log,this.info=e.info,this.success=e.success,this.warning=e.warning,this.error=e.error}showTaskStart(e,t,n=1){let r=" ".repeat(n-1);this.log(""),this.log(k.cyan(`${r}\u2554${"\u2550".repeat(58-n*2)}\u2557`)),this.log(k.cyan(`${r}\u2551`)+k.bold.white(" \u{1F680} \u5F00\u59CB\u6267\u884C\u4EFB\u52A1\u8BA1\u5212")+k.cyan(` (\u5171${t}\u6B65)`.padEnd(58-n*2-13))+k.cyan("\u2551")),this.log(k.cyan(`${r}\u255A${"\u2550".repeat(58-n*2)}\u255D`)),this.log("")}showStepProgress(e,t,n,r=1){this.stepStartTime=Date.now();let s=" ".repeat(r-1),i=Math.round(e/t*100),a=this.createProgressBar(i,30);this.log(""),this.log(k.blue(`${s}\u250C${"\u2500".repeat(58-r*2)}\u2510`)),this.log(k.blue(`${s}\u2502`)+` \u6B65\u9AA4 ${e}/${t} (${i}%)`.padEnd(60-r*2)+k.blue("\u2502")),this.log(k.blue(`${s}\u2502`)+` ${a}`.padEnd(60-r*2)+k.blue("\u2502")),this.log(k.blue(`${s}\u2502`)+k.cyan(` \u{1F4CC} ${n.description}`.substring(0,58-r*2)).padEnd(60-r*2)+k.blue("\u2502")),this.log(k.blue(`${s}\u2502`)+k.gray(` \u{1F916} \u667A\u80FD\u4F53: ${n.subAgent}`.substring(0,58-r*2)).padEnd(60-r*2)+k.blue("\u2502")),this.log(k.blue(`${s}\u2514${"\u2500".repeat(58-r*2)}\u2518`)),this.log("")}showStepComplete(e,t,n,r=1){let s=" ".repeat(r-1),i=this.stepStartTime?this.formatDuration(Date.now()-this.stepStartTime):"",a=Math.round(e/t*100);this.success(`${s}\u2705 \u6B65\u9AA4 ${e}/${t} \u5B8C\u6210${k.gray(` (${i})`)}`),this.log("")}showTaskComplete(e,t,n=1){let r=" ".repeat(n-1),s=this.formatDuration(Date.now()-this.startTime),i=Math.round(e/t*100);this.log(""),this.log(k.green(`${r}\u2554${"\u2550".repeat(58-n*2)}\u2557`)),this.log(k.green(`${r}\u2551`)+k.bold.white(" \u{1F389} \u4EFB\u52A1\u6267\u884C\u5B8C\u6210!")+k.green("".padEnd(58-n*2-12))+k.green("\u2551")),this.log(k.green(`${r}\u2551`)+` \u5B8C\u6210\u8FDB\u5EA6: ${e}/${t} (${i}%)`.padEnd(60-n*2)+k.green("\u2551")),this.log(k.green(`${r}\u2551`)+` \u603B\u8017\u65F6: ${s}`.padEnd(60-n*2)+k.green("\u2551")),this.log(k.green(`${r}\u255A${"\u2550".repeat(58-n*2)}\u255D`)),this.log("")}showStepError(e,t,n,r=1){let s=" ".repeat(r-1);this.log(""),this.error(`${s}\u274C \u6B65\u9AA4 ${e}/${t} \u6267\u884C\u5931\u8D25`),this.error(`${s} \u9519\u8BEF: ${n.substring(0,100)}`),this.log("")}createProgressBar(e,t=30){let n=Math.round(e/100*t),r=t-n;return`${k.green("\u2588".repeat(n))+k.gray("\u2591".repeat(r))} ${e}%`}formatDuration(e){if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/6e4),n=(e%6e4/1e3).toFixed(0);return`${t}m ${n}s`}},z=null});import bp from"chalk";async function gr(o){return await Xc.execute(o)}var De,Xc,pr,oi=C(()=>{V();De=class o extends ${static nestingLevel=0;static MAX_NESTING_LEVEL=2;getDefinition(){let e=o.nestingLevel,t=o.MAX_NESTING_LEVEL,n="USE THIS TOOL FIRST for COMPLEX tasks! This is your PRIMARY tool for handling multi-step, cross-component work.";return e===t-1?n="USE THIS TOOL SPARINGLY for VERY COMPLEX sub-tasks! This is your last level of nesting.":e>=t&&(n="DO NOT USE THIS TOOL - maximum nesting level reached!"),{name:"plan",description:`${n}
1442
1545
 
1443
1546
  IDEAL USE CASES:
1444
1547
  - Building new features that span multiple files or components
@@ -1465,7 +1568,7 @@ AVOID FOR:
1465
1568
  RECOMMENDATION BASED ON CURRENT NESTING LEVEL (${e}/${t}):
1466
1569
  ${e===0?"- Feel free to use this tool for complex tasks.":e===t-1?"- Use this tool only if absolutely necessary for very complex sub-tasks.":"- DO NOT use this tool - maximum nesting level reached!"}
1467
1570
 
1468
- When you're uncertain if a task needs planning, default to using regular tools directly for sub-tasks!`,input_schema:{type:"object",properties:{task:{type:"string",description:"Detailed description of the complex task to plan and execute. Be specific about the goals and requirements."},planOnly:{type:"boolean",description:"If true, only generate the plan without executing it. The plan will be saved to ./.nium/tasks/ directory for later execution. Default: false"}},required:["task"]}}}async execute(e){let{task:t,planOnly:n=!1}=e;if(n)try{let{generateTaskPlan:r}=await Promise.resolve().then(()=>(be(),Oe)),{getSubAgentManager:s}=await Promise.resolve().then(()=>(co(),kc)),a=s().getAllSubAgents(),c=await r(t,a),l=`\u2705 \u4EFB\u52A1\u89C4\u5212\u5DF2\u751F\u6210\uFF08\u4EC5\u89C4\u5212\u6A21\u5F0F\uFF09
1571
+ When you're uncertain if a task needs planning, default to using regular tools directly for sub-tasks!`,input_schema:{type:"object",properties:{task:{type:"string",description:"Detailed description of the complex task to plan and execute. Be specific about the goals and requirements."},planOnly:{type:"boolean",description:"If true, only generate the plan without executing it. The plan will be saved to ./.nium/tasks/ directory for later execution. Default: false"}},required:["task"]}}}async execute(e){let{task:t,planOnly:n=!1}=e;if(n)try{let{generateTaskPlan:r}=await Promise.resolve().then(()=>($e(),We)),{getSubAgentManager:s}=await Promise.resolve().then(()=>(ko(),Qc)),a=s().getAllSubAgents(),c=await r(t,a),l=`\u2705 \u4EFB\u52A1\u89C4\u5212\u5DF2\u751F\u6210\uFF08\u4EC5\u89C4\u5212\u6A21\u5F0F\uFF09
1469
1572
 
1470
1573
  `;return l+=`**\u4EFB\u52A1 ID**: ${c.taskId}
1471
1574
  `,l+=`**\u603B\u6B65\u9AA4\u6570**: ${c.tasks.length}
@@ -1476,9 +1579,9 @@ When you're uncertain if a task needs planning, default to using regular tools d
1476
1579
  `,l+=`- JSON: ./.nium/tasks/${c.taskId}.json
1477
1580
 
1478
1581
  `,l+=`**\u6267\u884C\u6B65\u9AA4**:
1479
- `,c.tasks.forEach((g,p)=>{l+=`${p+1}. ${g.description} [${g.subAgent}]
1582
+ `,c.tasks.forEach((u,p)=>{l+=`${p+1}. ${u.description} [${u.subAgent}]
1480
1583
  `}),l+=`
1481
- \u{1F4A1} \u63D0\u793A: \u4F7F\u7528 todo \u5DE5\u5177\u7684 resume \u529F\u80FD\u6765\u6267\u884C\u6B64\u8BA1\u5212`,this.createToolResult(l,l,!0)}catch(r){let s=r instanceof Error?r.message:String(r);return this.createToolResult(`Error: Failed to generate plan - ${s}`,`Error: Failed to generate plan - ${s}`,!0)}if(o.nestingLevel>=o.MAX_NESTING_LEVEL)return this.createToolResult(`Error: Maximum nesting level (${o.MAX_NESTING_LEVEL}) reached. Please use regular tools directly instead of the plan tool.`,`Error: Maximum nesting level (${o.MAX_NESTING_LEVEL}) reached. Please use regular tools directly instead of the plan tool.`,!0);o.nestingLevel++;try{let r;try{r=await(await Promise.resolve().then(()=>(ao(),zs))).executePlanTask(t,o.nestingLevel)}catch{console.log($g.yellow("[Plan-Tool] \u8B66\u544A: \u65E0\u6CD5\u5BFC\u5165plan-executor.js\uFF0C\u8FD4\u56DE\u4EFB\u52A1\u89C4\u5212\u5EFA\u8BAE")),r={success:!0,message:"\u4EFB\u52A1\u89C4\u5212\u5DF2\u751F\u6210\uFF0C\u8BF7\u6839\u636E\u89C4\u5212\u6267\u884C\u4EFB\u52A1\u6B65\u9AA4",tasks:[{step:1,description:"\u5206\u6790\u9700\u6C42\u5E76\u786E\u8BA4\u6280\u672F\u6808",status:"pending"},{step:2,description:"\u5B9E\u73B0\u6838\u5FC3\u529F\u80FD\u6A21\u5757",status:"pending"},{step:3,description:"\u7F16\u5199\u6D4B\u8BD5\u7528\u4F8B",status:"pending"},{step:4,description:"\u4EE3\u7801\u5BA1\u67E5\u4E0E\u4F18\u5316",status:"pending"}]}}let s=`\u2705 Task planning and execution completed successfully!
1584
+ \u{1F4A1} \u63D0\u793A: \u4F7F\u7528 todo \u5DE5\u5177\u7684 resume \u529F\u80FD\u6765\u6267\u884C\u6B64\u8BA1\u5212`,this.createToolResult(l,l,!0)}catch(r){let s=r instanceof Error?r.message:String(r);return this.createToolResult(`Error: Failed to generate plan - ${s}`,`Error: Failed to generate plan - ${s}`,!0)}if(o.nestingLevel>=o.MAX_NESTING_LEVEL)return this.createToolResult(`Error: Maximum nesting level (${o.MAX_NESTING_LEVEL}) reached. Please use regular tools directly instead of the plan tool.`,`Error: Maximum nesting level (${o.MAX_NESTING_LEVEL}) reached. Please use regular tools directly instead of the plan tool.`,!0);o.nestingLevel++;try{let r;try{r=await(await Promise.resolve().then(()=>(To(),ni))).executePlanTask(t,o.nestingLevel)}catch{console.log(bp.yellow("[Plan-Tool] \u8B66\u544A: \u65E0\u6CD5\u5BFC\u5165plan-executor.js\uFF0C\u8FD4\u56DE\u4EFB\u52A1\u89C4\u5212\u5EFA\u8BAE")),r={success:!0,message:"\u4EFB\u52A1\u89C4\u5212\u5DF2\u751F\u6210\uFF0C\u8BF7\u6839\u636E\u89C4\u5212\u6267\u884C\u4EFB\u52A1\u6B65\u9AA4",tasks:[{step:1,description:"\u5206\u6790\u9700\u6C42\u5E76\u786E\u8BA4\u6280\u672F\u6808",status:"pending"},{step:2,description:"\u5B9E\u73B0\u6838\u5FC3\u529F\u80FD\u6A21\u5757",status:"pending"},{step:3,description:"\u7F16\u5199\u6D4B\u8BD5\u7528\u4F8B",status:"pending"},{step:4,description:"\u4EE3\u7801\u5BA1\u67E5\u4E0E\u4F18\u5316",status:"pending"}]}}let s=`\u2705 Task planning and execution completed successfully!
1482
1585
 
1483
1586
  `;return s+=`**Task ID**: ${r.taskId}
1484
1587
  `,s+=`**Completed Steps**: ${r.completedSteps}
@@ -1488,7 +1591,7 @@ ${r.planMarkdown}
1488
1591
 
1489
1592
  `),r.tasks&&r.tasks.length>0&&(s+=`**Executed Steps**:
1490
1593
  `,r.tasks.forEach((i,a)=>{s+=`${a+1}. \u2713 ${i.description}
1491
- `})),this.createToolResult(s,s,!0)}catch(r){let s=r instanceof Error?r.message:String(r);return this.createToolResult(`Error: Task execution failed - ${s}`,`Error: Task execution failed - ${s}`,!0)}finally{o.nestingLevel--}}static getCurrentNestingLevel(){return o.nestingLevel}static resetNestingLevel(){o.nestingLevel=0}formatAction(e){return`plan(task="${e.task.length>100?e.task.substring(0,100)+"...":e.task}", nesting_level=${o.nestingLevel+1})`}formatObservation(e){return typeof e=="string"&&e.includes("Error:")?e:"Task planning completed. Check logs above for details."}},Tc=new Me;qn=Tc});function $c(o){Pc=o}function Kn(){return Pc}var Pc,lo=S(()=>{Pc=null});import He from"readline";import ct from"chalk";async function Yn(o){return await Ec.execute(o)}var Jt,Ec,Xn,Mc=S(()=>{q();lo();Jt=class extends E{getDefinition(){return{name:"askUser",description:`Ask the user a question and wait for their response. This pauses the execution loop until the user provides input.
1594
+ `})),this.createToolResult(s,s,!0)}catch(r){let s=r instanceof Error?r.message:String(r);return this.createToolResult(`Error: Task execution failed - ${s}`,`Error: Task execution failed - ${s}`,!0)}finally{o.nestingLevel--}}static getCurrentNestingLevel(){return o.nestingLevel}static resetNestingLevel(){o.nestingLevel=0}formatAction(e){return`plan(task="${e.task.length>100?e.task.substring(0,100)+"...":e.task}", nesting_level=${o.nestingLevel+1})`}formatObservation(e){return typeof e=="string"&&e.includes("Error:")?e:"Task planning completed. Check logs above for details."}},Xc=new De;pr=Xc});function el(o){Zc=o}function dr(){return Zc}var Zc,Eo=C(()=>{Zc=null});import Ke from"readline";import dt from"chalk";async function mr(o){return await tl.execute(o)}var Xt,tl,fr,nl=C(()=>{V();Eo();Xt=class extends ${getDefinition(){return{name:"askUser",description:`Ask the user a question and wait for their response. This pauses the execution loop until the user provides input.
1492
1595
 
1493
1596
  Use this tool when you need:
1494
1597
  - User confirmation or decision
@@ -1505,7 +1608,7 @@ IMPORTANT:
1505
1608
  Examples:
1506
1609
  - askUser({ question: "Which file should I modify?" }) - Free text input
1507
1610
  - askUser({ question: "Proceed with deletion?", choices: ["Yes", "No"] }) - Multiple choice
1508
- - askUser({ question: "Select an option:", choices: ["Option 1", "Option 2"], allowFreeText: true }) - Choice with custom input allowed`,input_schema:{type:"object",properties:{question:{type:"string",description:"The question to ask the user. Be clear and specific."},choices:{type:"array",items:{type:"string"},description:"Optional: Predefined choices for the user to select from. If provided, user will see a menu."},allowFreeText:{type:"boolean",description:"Optional: If true, allows user to type a custom response even when choices are provided (default: false)",default:!1}},required:["question"]}}}async execute(e){let{question:t,choices:n,allowFreeText:r=!1}=e;try{let s;return n&&n.length>0?s=await this.showChoiceMenu(t,n,r):s=await this.showFreeTextInput(t),this.createToolResult(s,`User responded: ${s}`,!0)}catch(s){return this.formatError("Cannot get user input",s)}}showChoiceMenu(e,t,n){return new Promise(r=>{let s=0,i=t.map(p=>({text:p,value:p}));n&&i.push({text:"\u8F93\u5165\u81EA\u5B9A\u4E49\u7B54\u6848...",value:"__CUSTOM__"});let a=()=>{let p=i.length+5;for(let u=0;u<p;u++)u>0&&He.moveCursor(process.stdout,0,-1),He.clearLine(process.stdout,0);console.log(""),console.log(ct.cyan("\u{1F4AC} "+e)),console.log(""),console.log(ct.gray("\u8BF7\u9009\u62E9 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4):")),console.log(""),i.forEach((u,m)=>{let d=m===s,y=d?ct.green("> "):" ",w=d?ct.green.bold(u.text):ct.white(u.text);console.log(`${y}${w}`)}),console.log("")},c=process.stdin.isTTY?process.stdin.isRaw:!1;process.stdin.isTTY&&process.stdin.setRawMode(!0);let l=async(p,u)=>{if(u.name==="up"){s=Math.max(0,s-1),a();return}else if(u.name==="down"){s=Math.min(i.length-1,s+1),a();return}else if(u.name==="return"||u.name==="enter"){process.stdin.removeListener("keypress",l),process.stdin.isTTY&&process.stdin.setRawMode(c);let m=i.length+5;for(let y=0;y<m;y++)He.moveCursor(process.stdout,0,-1),He.clearLine(process.stdout,0);let d=i[s].value;if(d==="__CUSTOM__"){let y=await this.showFreeTextInput(e);r(y)}else r(d);return}else if(u.name==="escape"||u.ctrl&&u.name==="c"){let m=Kn();m?m.removeListener("keypress",l):(process.stdin.removeListener("keypress",l),process.stdin.isTTY&&process.stdin.setRawMode(c));let d=i.length+5;for(let y=0;y<d;y++)He.moveCursor(process.stdout,0,-1),He.clearLine(process.stdout,0);r("__CANCELLED__");return}},g=Kn();g?g.on("keypress",l):(He.emitKeypressEvents(process.stdin),process.stdin.on("keypress",l)),a()})}showFreeTextInput(e){return new Promise(t=>{let n=e||"\u8BF7\u8F93\u5165\u60A8\u7684\u7B54\u6848",r=process.stdin.listeners("keypress");process.stdin.removeAllListeners("keypress");let s=He.createInterface({input:process.stdin,output:process.stdout});console.log(""),console.log(ct.cyan("\u{1F4AC} "+n)),console.log(""),s.question(ct.gray("\u8BF7\u8F93\u5165\u7B54\u6848: "),i=>{s.removeAllListeners(),process.stdin.pause(),r.forEach(a=>{process.stdin.on("keypress",a)}),process.stdin.resume(),t(i.trim())})})}formatAction(e){let t=e.question||"";return e.choices&&e.choices.length>0?`askUser(question="${t}", choices=[${e.choices.join(", ")}])`:`askUser(question="${t}")`}formatObservation(e){return typeof e=="string"?e==="__CANCELLED__"?"User cancelled the input":`User response: ${e}`:super.formatObservation(e)}},Ec=new Jt;Xn=Ec});async function Qn(o){return await Ic.execute(o)}var Gt,Ic,Zn,Ac=S(()=>{q();Gt=class extends E{getDefinition(){return{name:"todo",description:`Execute and manage saved task plans. Use this tool to:
1611
+ - askUser({ question: "Select an option:", choices: ["Option 1", "Option 2"], allowFreeText: true }) - Choice with custom input allowed`,input_schema:{type:"object",properties:{question:{type:"string",description:"The question to ask the user. Be clear and specific."},choices:{type:"array",items:{type:"string"},description:"Optional: Predefined choices for the user to select from. If provided, user will see a menu."},allowFreeText:{type:"boolean",description:"Optional: If true, allows user to type a custom response even when choices are provided (default: false)",default:!1}},required:["question"]}}}async execute(e){let{question:t,choices:n,allowFreeText:r=!1}=e;try{let s;return n&&n.length>0?s=await this.showChoiceMenu(t,n,r):s=await this.showFreeTextInput(t),this.createToolResult(s,`User responded: ${s}`,!0)}catch(s){return this.formatError("Cannot get user input",s)}}showChoiceMenu(e,t,n){return new Promise(r=>{let s=0,i=t.map(p=>({text:p,value:p}));n&&i.push({text:"\u8F93\u5165\u81EA\u5B9A\u4E49\u7B54\u6848...",value:"__CUSTOM__"});let a=()=>{let p=i.length+5;for(let g=0;g<p;g++)g>0&&Ke.moveCursor(process.stdout,0,-1),Ke.clearLine(process.stdout,0);console.log(""),console.log(dt.cyan("\u{1F4AC} "+e)),console.log(""),console.log(dt.gray("\u8BF7\u9009\u62E9 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4):")),console.log(""),i.forEach((g,d)=>{let m=d===s,h=m?dt.green("> "):" ",w=m?dt.green.bold(g.text):dt.white(g.text);console.log(`${h}${w}`)}),console.log("")},c=process.stdin.isTTY?process.stdin.isRaw:!1;process.stdin.isTTY&&process.stdin.setRawMode(!0);let l=async(p,g)=>{if(g.name==="up"){s=Math.max(0,s-1),a();return}else if(g.name==="down"){s=Math.min(i.length-1,s+1),a();return}else if(g.name==="return"||g.name==="enter"){process.stdin.removeListener("keypress",l),process.stdin.isTTY&&process.stdin.setRawMode(c);let d=i.length+5;for(let h=0;h<d;h++)Ke.moveCursor(process.stdout,0,-1),Ke.clearLine(process.stdout,0);let m=i[s].value;if(m==="__CUSTOM__"){let h=await this.showFreeTextInput(e);r(h)}else r(m);return}else if(g.name==="escape"||g.ctrl&&g.name==="c"){let d=dr();d?d.removeListener("keypress",l):(process.stdin.removeListener("keypress",l),process.stdin.isTTY&&process.stdin.setRawMode(c));let m=i.length+5;for(let h=0;h<m;h++)Ke.moveCursor(process.stdout,0,-1),Ke.clearLine(process.stdout,0);r("__CANCELLED__");return}},u=dr();u?u.on("keypress",l):(Ke.emitKeypressEvents(process.stdin),process.stdin.on("keypress",l)),a()})}showFreeTextInput(e){return new Promise(t=>{let n=e||"\u8BF7\u8F93\u5165\u60A8\u7684\u7B54\u6848",r=process.stdin.listeners("keypress");process.stdin.removeAllListeners("keypress");let s=Ke.createInterface({input:process.stdin,output:process.stdout});console.log(""),console.log(dt.cyan("\u{1F4AC} "+n)),console.log(""),s.question(dt.gray("\u8BF7\u8F93\u5165\u7B54\u6848: "),i=>{s.removeAllListeners(),process.stdin.pause(),r.forEach(a=>{process.stdin.on("keypress",a)}),process.stdin.resume(),t(i.trim())})})}formatAction(e){let t=e.question||"";return e.choices&&e.choices.length>0?`askUser(question="${t}", choices=[${e.choices.join(", ")}])`:`askUser(question="${t}")`}formatObservation(e){return typeof e=="string"?e==="__CANCELLED__"?"User cancelled the input":`User response: ${e}`:super.formatObservation(e)}},tl=new Xt;fr=tl});async function hr(o){return await rl.execute(o)}var Qt,rl,yr,ol=C(()=>{V();Qt=class extends ${getDefinition(){return{name:"todo",description:`Execute and manage saved task plans. Use this tool to:
1509
1612
  - Resume execution of a previously generated plan
1510
1613
  - List all available task plans
1511
1614
  - View details of a specific task plan
@@ -1519,16 +1622,16 @@ WHEN TO USE:
1519
1622
  FEATURES:
1520
1623
  - Resume from any step (default: continue from last step)
1521
1624
  - View task progress and status
1522
- - List all available plans in ./.nium/tasks/ directory`,input_schema:{type:"object",properties:{action:{type:"string",enum:["resume","list","view"],description:"The action to perform: resume (execute a saved plan), list (show all plans), view (show plan details)"},taskId:{type:"string",description:"The task ID to resume or view. Required for resume and view actions. Format: task-YYYYMMDD-XXX"},resumeFrom:{type:"number",description:"Step number to resume from (1-based). If not specified, resumes from the first incomplete step. Use 1 to restart from the beginning."}},required:["action"]}}}async execute(e){let{action:t,taskId:n,resumeFrom:r}=e;try{switch(t){case"resume":return await this.executeResume(n,r);case"list":return await this.executeList();case"view":return await this.executeView(n);default:return this.createToolResult(`Error: Unknown action '${t}'`,`Error: Unknown action '${t}'`,!0)}}catch(s){let i=s instanceof Error?s.message:String(s);return this.createToolResult(`Error: ${i}`,`Error: ${i}`,!0)}}async executeResume(e,t){if(!e)return this.createToolResult("Error: taskId is required for resume action","Error: taskId is required for resume action",!0);try{let{resumePlanTask:n}=await Promise.resolve().then(()=>(ao(),zs)),r=await n(e,t||0),s=`\u2705 \u4EFB\u52A1\u6062\u590D\u6267\u884C\u5B8C\u6210\uFF01
1625
+ - List all available plans in ./.nium/tasks/ directory`,input_schema:{type:"object",properties:{action:{type:"string",enum:["resume","list","view"],description:"The action to perform: resume (execute a saved plan), list (show all plans), view (show plan details)"},taskId:{type:"string",description:"The task ID to resume or view. Required for resume and view actions. Format: task-YYYYMMDD-XXX"},resumeFrom:{type:"number",description:"Step number to resume from (1-based). If not specified, resumes from the first incomplete step. Use 1 to restart from the beginning."}},required:["action"]}}}async execute(e){let{action:t,taskId:n,resumeFrom:r}=e;try{switch(t){case"resume":return await this.executeResume(n,r);case"list":return await this.executeList();case"view":return await this.executeView(n);default:return this.createToolResult(`Error: Unknown action '${t}'`,`Error: Unknown action '${t}'`,!0)}}catch(s){let i=s instanceof Error?s.message:String(s);return this.createToolResult(`Error: ${i}`,`Error: ${i}`,!0)}}async executeResume(e,t){if(!e)return this.createToolResult("Error: taskId is required for resume action","Error: taskId is required for resume action",!0);try{let{resumePlanTask:n}=await Promise.resolve().then(()=>(To(),ni)),r=await n(e,t||0),s=`\u2705 \u4EFB\u52A1\u6062\u590D\u6267\u884C\u5B8C\u6210\uFF01
1523
1626
 
1524
1627
  `;return s+=`**\u4EFB\u52A1 ID**: ${r.taskId}
1525
1628
  `,s+=`**\u5B8C\u6210\u6B65\u9AA4**: ${r.completedSteps}
1526
1629
  `,s+=`**\u6062\u590D\u8D77\u70B9**: \u6B65\u9AA4 ${r.resumedFrom}
1527
1630
 
1528
- `,s+="\u6240\u6709\u6B65\u9AA4\u5DF2\u6210\u529F\u6267\u884C\u5B8C\u6BD5\u3002",this.createToolResult(s,s,!0)}catch(n){let r=n instanceof Error?n.message:String(n);return this.createToolResult(`Error: Failed to resume task - ${r}`,`Error: Failed to resume task - ${r}`,!0)}}async executeList(){try{let{listTaskPlans:e,loadTaskPlan:t}=await Promise.resolve().then(()=>(be(),Oe)),n=e();if(n.length===0)return this.createToolResult("No saved task plans found in ./.nium/tasks/ directory.","No saved task plans found in ./.nium/tasks/ directory.",!0);let r=`\u{1F4CB} \u5DF2\u4FDD\u5B58\u7684\u4EFB\u52A1\u8BA1\u5212 (\u5171 ${n.length} \u4E2A)
1631
+ `,s+="\u6240\u6709\u6B65\u9AA4\u5DF2\u6210\u529F\u6267\u884C\u5B8C\u6BD5\u3002",this.createToolResult(s,s,!0)}catch(n){let r=n instanceof Error?n.message:String(n);return this.createToolResult(`Error: Failed to resume task - ${r}`,`Error: Failed to resume task - ${r}`,!0)}}async executeList(){try{let{listTaskPlans:e,loadTaskPlan:t}=await Promise.resolve().then(()=>($e(),We)),n=e();if(n.length===0)return this.createToolResult("No saved task plans found in ./.nium/tasks/ directory.","No saved task plans found in ./.nium/tasks/ directory.",!0);let r=`\u{1F4CB} \u5DF2\u4FDD\u5B58\u7684\u4EFB\u52A1\u8BA1\u5212 (\u5171 ${n.length} \u4E2A)
1529
1632
  `;r+=`${"\u2550".repeat(60)}
1530
1633
 
1531
- `;for(let s of n){let i=t(s);if(i){let a=i.tasks.filter(g=>g.status==="completed").length,c=i.tasks.length,l=a===c?"\u2705 \u5DF2\u5B8C\u6210":a>0?`\u23F3 \u8FDB\u884C\u4E2D (${a}/${c})`:"\u{1F4CB} \u5F85\u6267\u884C";r+=`**${s}**
1634
+ `;for(let s of n){let i=t(s);if(i){let a=i.tasks.filter(u=>u.status==="completed").length,c=i.tasks.length,l=a===c?"\u2705 \u5DF2\u5B8C\u6210":a>0?`\u23F3 \u8FDB\u884C\u4E2D (${a}/${c})`:"\u{1F4CB} \u5F85\u6267\u884C";r+=`**${s}**
1532
1635
  `,r+=` \u72B6\u6001: ${l}
1533
1636
  `,r+=` \u6B65\u9AA4: ${c} \u4E2A
1534
1637
  `,r+=` \u7B56\u7565: ${i.strategy}
@@ -1536,7 +1639,7 @@ FEATURES:
1536
1639
  `,r+=`
1537
1640
  `}}return r+=`
1538
1641
  \u{1F4A1} \u4F7F\u7528 todo(action="view", taskId="...") \u67E5\u770B\u8BE6\u60C5`,r+=`
1539
- \u{1F4A1} \u4F7F\u7528 todo(action="resume", taskId="...") \u6062\u590D\u6267\u884C`,this.createToolResult(r,r,!0)}catch(e){let t=e instanceof Error?e.message:String(e);return this.createToolResult(`Error: Failed to list tasks - ${t}`,`Error: Failed to list tasks - ${t}`,!0)}}async executeView(e){if(!e)return this.createToolResult("Error: taskId is required for view action","Error: taskId is required for view action",!0);try{let{loadTaskPlan:t}=await Promise.resolve().then(()=>(be(),Oe)),n=t(e);if(!n)return this.createToolResult(`Error: Task plan '${e}' not found`,`Error: Task plan '${e}' not found`,!0);let r=`\u{1F4CB} \u4EFB\u52A1\u8BA1\u5212\u8BE6\u60C5
1642
+ \u{1F4A1} \u4F7F\u7528 todo(action="resume", taskId="...") \u6062\u590D\u6267\u884C`,this.createToolResult(r,r,!0)}catch(e){let t=e instanceof Error?e.message:String(e);return this.createToolResult(`Error: Failed to list tasks - ${t}`,`Error: Failed to list tasks - ${t}`,!0)}}async executeView(e){if(!e)return this.createToolResult("Error: taskId is required for view action","Error: taskId is required for view action",!0);try{let{loadTaskPlan:t}=await Promise.resolve().then(()=>($e(),We)),n=t(e);if(!n)return this.createToolResult(`Error: Task plan '${e}' not found`,`Error: Task plan '${e}' not found`,!0);let r=`\u{1F4CB} \u4EFB\u52A1\u8BA1\u5212\u8BE6\u60C5
1540
1643
  `;r+=`${"\u2550".repeat(60)}
1541
1644
 
1542
1645
  `,r+=`**\u4EFB\u52A1 ID**: ${n.taskId}
@@ -1558,7 +1661,7 @@ FEATURES:
1558
1661
  `),r+=`
1559
1662
  `}let s=n.tasks.find(i=>i.status!=="completed");return s?r+=`
1560
1663
  \u{1F4A1} \u4F7F\u7528 todo(action="resume", taskId="${e}", resumeFrom=${s.step}) \u4ECE\u6B65\u9AA4 ${s.step} \u7EE7\u7EED\u6267\u884C`:r+=`
1561
- \u2705 \u6240\u6709\u6B65\u9AA4\u5DF2\u5B8C\u6210\uFF01`,this.createToolResult(r,r,!0)}catch(t){let n=t instanceof Error?t.message:String(t);return this.createToolResult(`Error: Failed to view task - ${n}`,`Error: Failed to view task - ${n}`,!0)}}formatAction(e){let{action:t,taskId:n,resumeFrom:r}=e,s=`todo(action="${t}"`;return n&&(s+=`, taskId="${n}"`),r&&(s+=`, resumeFrom=${r}`),s+=")",s}},Ic=new Gt;Zn=Ic});var Js={};j(Js,{AskUserTool:()=>Jt,PlanTool:()=>Me,QuickProjectScanTool:()=>at,THINK_TOOL:()=>Mr,ThinkTool:()=>Ze,TodoTool:()=>Gt,askUser:()=>Yn,askUserTool:()=>Xn,extractThought:()=>Ir,isThinkTool:()=>Dt,plan:()=>Bn,planTool:()=>qn,quickProjectScan:()=>zt,quickProjectScanTool:()=>Vt,think:()=>Lt,thinkTool:()=>Rt,todo:()=>Qn,todoTool:()=>Zn});var uo=S(()=>{An();Hs();Mc();Fs();Ac()});async function Lc(o){return Bs.execute(o)}var Gs,Bs,Rc,Xy,Dc=S(()=>{q();Wn();Gs=class extends E{getDefinition(){return{name:"search_file_changes",description:`Use this tool to search and query file changes in the workspace. This tool provides auxiliary information to help you understand the current state of the workspace.
1664
+ \u2705 \u6240\u6709\u6B65\u9AA4\u5DF2\u5B8C\u6210\uFF01`,this.createToolResult(r,r,!0)}catch(t){let n=t instanceof Error?t.message:String(t);return this.createToolResult(`Error: Failed to view task - ${n}`,`Error: Failed to view task - ${n}`,!0)}}formatAction(e){let{action:t,taskId:n,resumeFrom:r}=e,s=`todo(action="${t}"`;return n&&(s+=`, taskId="${n}"`),r&&(s+=`, resumeFrom=${r}`),s+=")",s}},rl=new Qt;yr=rl});var si={};j(si,{AskUserTool:()=>Xt,PlanTool:()=>De,QuickProjectScanTool:()=>pt,THINK_TOOL:()=>to,ThinkTool:()=>ot,TodoTool:()=>Qt,askUser:()=>mr,askUserTool:()=>fr,extractThought:()=>no,isThinkTool:()=>zt,plan:()=>gr,planTool:()=>pr,quickProjectScan:()=>qt,quickProjectScanTool:()=>Kt,think:()=>Wt,thinkTool:()=>Vt,todo:()=>hr,todoTool:()=>yr});var Po=C(()=>{Xn();oi();nl();Ys();ol()});async function sl(o){return ai.execute(o)}var ii,ai,il,wx,al=C(()=>{V();ar();ii=class extends ${getDefinition(){return{name:"search_file_changes",description:`Use this tool to search and query file changes in the workspace. This tool provides auxiliary information to help you understand the current state of the workspace.
1562
1665
 
1563
1666
  IMPORTANT: This tool is for reference only. Your primary focus should be on solving the current task. Use this tool only when you need additional context about workspace changes.
1564
1667
 
@@ -1566,10 +1669,10 @@ Typical use cases:
1566
1669
  - When you need to check what files have been modified recently
1567
1670
  - When you want to understand the scope of changes in the workspace
1568
1671
  - When you need to verify if certain files have been changed
1569
- - When you want to get a summary of changes`,input_schema:{type:"object",properties:{query:{type:"string",description:"Search keywords to filter file changes"},filePatterns:{type:"array",items:{type:"string"},description:"File patterns to match (e.g., ['*.ts', '*.js'])",uniqueItems:!0},changeTypes:{type:"array",items:{type:"string",enum:["added","modified","deleted","renamed"]},description:"Types of changes to include",uniqueItems:!0},dateRange:{type:"object",properties:{start:{type:"string",format:"date-time",description:"Start date for filtering changes"},end:{type:"string",format:"date-time",description:"End date for filtering changes"}},description:"Time range to filter changes"},author:{type:"string",description:"Author to filter changes by"},branch:{type:"string",description:"Git branch to filter changes by"},sortBy:{type:"string",enum:["timestamp","filePath","size","type"],description:"Field to sort results by"},sortOrder:{type:"string",enum:["asc","desc"],description:"Sort order (ascending or descending)"},limit:{type:"integer",minimum:1,maximum:100,description:"Maximum number of results to return"},offset:{type:"integer",minimum:0,description:"Offset for pagination"},includeContent:{type:"boolean",description:"Whether to include file content previews"}}}}}async execute(e){try{let t=ze(),n={query:e.query,filter:{filePatterns:e.filePatterns,changeTypes:e.changeTypes,dateRange:e.dateRange,author:e.author,branch:e.branch},sortBy:e.sortBy,sortOrder:e.sortOrder,limit:e.limit,offset:e.offset,includeContent:e.includeContent};return await t.searchFileChanges(n)}catch(t){throw console.error("\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),new Error(`\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`)}}},Bs=new Gs;Rc=Bs,Xy=Bs.getDefinition()});var Gn={};j(Gn,{AgentTools:()=>Js,AskUserTool:()=>Jt,BaseTool:()=>E,ConfirmableTool:()=>he,CopyTool:()=>Tt,CoreTools:()=>Vo,DeleteTool:()=>vt,FileChangeTools:()=>Ss,FileChangeTracker:()=>We,FileOpsTools:()=>Zo,GlobTool:()=>Et,GrepTool:()=>Mt,MergeTool:()=>kt,MkdirTool:()=>xt,MoveTool:()=>bt,PlanTool:()=>Me,QuickProjectScanTool:()=>at,ReadTool:()=>St,SearchReplaceTool:()=>Pt,SearchTools:()=>es,ShellTool:()=>It,SystemTools:()=>ns,THINK_TOOL:()=>Mr,ThinkTool:()=>Ze,TodoTool:()=>Gt,WriteTool:()=>wt,aiContextManager:()=>Eg,askUser:()=>Yn,askUserTool:()=>Xn,copyFile:()=>xn,copyTool:()=>wn,createFileChangeTracker:()=>Or,createToolResult:()=>Ks,deleteFile:()=>hn,deleteTool:()=>yn,detectFileChanges:()=>jr,extractThought:()=>Ir,extractToolResult:()=>ln,fileChangeTracking:()=>Mg,generateChangeSummary:()=>_r,getCurrentSessionFileChanges:()=>zr,getFileChangeTracker:()=>ce,getSessionFileChanges:()=>Wr,glob:()=>Pn,globTool:()=>$n,grep:()=>En,grepTool:()=>Mn,handleGitCommit:()=>Ur,isThinkTool:()=>Dt,isToolResult:()=>Ct,merge:()=>vn,mergeTool:()=>bn,mkdir:()=>mn,mkdirTool:()=>Qe,moveFile:()=>Cn,moveTool:()=>Sn,plan:()=>Bn,planTool:()=>qn,quickProjectScan:()=>zt,quickProjectScanTool:()=>Vt,read:()=>gn,readTool:()=>pn,recordFileChange:()=>Nr,resetFileChangeTracker:()=>Fr,searchReplace:()=>Tn,searchReplaceTool:()=>kn,shell:()=>In,shellTool:()=>At,think:()=>Lt,thinkTool:()=>Rt,todo:()=>Qn,todoTool:()=>Zn,toolInstances:()=>U,tools:()=>qs,write:()=>dn,writeTool:()=>fn});function Ks(o,e=null,t=!0){return{__tool_result:!0,result:o,display:e!==null?e:o,shouldPrint:t}}var U,qs,Eg,Mg,Ee=S(()=>{Ho();Ho();Tr();Tr();Pr();Pr();Er();Er();uo();uo();ot();ot();Tr();Pr();Er();uo();Dc();ot();Wn();U={think:Rt,plan:qn,todo:Zn,askUser:Xn,quickProjectScan:Vt,read:pn,write:fn,mkdir:Qe,glob:$n,grep:Mn,shell:At,merge:bn,delete:yn,move:Sn,copy:wn,searchReplace:kn,search_file_changes:Rc},qs={think:Lt,plan:Bn,todo:Qn,askUser:Yn,quickProjectScan:zt,read:gn,write:dn,mkdir:mn,merge:vn,glob:Pn,grep:En,shell:In,delete:hn,move:Cn,copy:xn,searchReplace:Tn,searchFileChanges:Lc},Eg={getAIContextManager:ze,createAIContextManager:ja,resetAIContextManager:_a},Mg={detectFileChanges:jr,generateChangeSummary:_r,recordFileChange:Nr,handleGitCommit:Ur,getSessionFileChanges:Wr,getCurrentSessionFileChanges:zr,getFileChangeTracker:ce,createFileChangeTracker:Or,resetFileChangeTracker:Fr}});var Oc=S(()=>{});import{Client as Ig}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as Ag}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{StdioClientTransport as Lg}from"@modelcontextprotocol/sdk/client/stdio.js";var er,Ys=S(()=>{Y();er=class{client=null;config;connected=!1;tools=[];constructor(e){this.config={timeout:3e4,enabled:!0,...e}}async connect(){C(`Connecting to MCP server: ${this.config.name} (${this.config.transport})`);try{let e;if(this.config.transport==="http"||this.config.transport==="sse"){if(!this.config.url)throw new Error(`URL is required for ${this.config.transport} transport`);e=new Ag(new URL(this.config.url))}else if(this.config.transport==="stdio"){if(!this.config.command)throw new Error(`Command is required for ${this.config.transport} transport`);e=new Lg({command:this.config.command,args:this.config.args||[],env:this.config.env})}else throw new Error(`Unsupported transport type: ${this.config.transport}`);this.client=new Ig({name:"niumagents-cli",version:"0.1.0"}),await this.client.connect(e),this.connected=!0;let t=await this.client.listTools();this.tools=t.tools.map(n=>({name:n.name,description:n.description,inputSchema:n.inputSchema||{type:"object",properties:{}},serverName:this.config.name})),C(`Loaded ${this.tools.length} tools from ${this.config.name}`)}catch(e){throw C(`Failed to connect to MCP server ${this.config.name}: ${e.message}`),e}}async disconnect(){C(`Disconnecting from MCP server: ${this.config.name}`),this.client=null,this.connected=!1,this.tools=[]}async listTools(){if(!this.client||!this.connected)throw new Error("Not connected to MCP server");return(await this.client.listTools()).tools.map(t=>({name:t.name,description:t.description,inputSchema:t.inputSchema||{type:"object",properties:{}},serverName:this.config.name}))}async callTool(e,t){if(!this.client||!this.connected)return{success:!1,error:"Not connected to MCP server"};try{let n=await this.client.callTool({name:e,arguments:t});return{success:!n.isError,content:n.content||n.result,metadata:n.metadata||{}}}catch(n){return{success:!1,error:n.message}}}isConnected(){return this.connected}getConfig(){return this.config}getCachedTools(){return this.tools}}});var Fc=S(()=>{Ys()});function Bt(){return Xs.getInstance()}var Xs,Qs=S(()=>{Ys();Y();Xs=class o{static instance=null;clients=new Map;mcpTools=new Map;initialized=!1;constructor(){}static getInstance(){return o.instance||(o.instance=new o),o.instance}async initialize(e){if(this.initialized){H("MCP Manager already initialized");return}$(`Initializing ${e.length} MCP server(s)...`),e.length>0&&(C("MCP Server Configurations:"),e.forEach(t=>{C(` - Server: ${t.name} (${t.transport})`),C(` Enabled: ${t.enabled!==!1}`),t.url?C(` URL: ${t.url}`):t.command&&C(` Command: ${t.command}`)}));for(let t of e){if(t.enabled===!1){C(`Skipping disabled MCP server: ${t.name}`);continue}try{C(`Attempting to connect to MCP server ${t.name} with URL: ${t.url||"N/A"}`),await this.connectToServer(t)}catch(n){K(`Failed to connect to MCP server ${t.name}: ${n.message}`),C(`Error details for ${t.name}: ${n.message}
1570
- ${n.stack||""}`)}}this.initialized=!0,$(`MCP Manager initialized with ${this.clients.size} server(s) and ${this.mcpTools.size} tool(s)`)}async connectToServer(e){C(`Connecting to MCP server: ${e.name} (${e.transport})`);let t=this.createClient(e);await t.connect(),this.clients.set(e.name,t);let n=t.getCachedTools();for(let r of n)this.registerTool(r);$(`Connected to MCP server: ${e.name} (${n.length} tools)`)}createClient(e){return new er(e)}registerTool(e){let t=e.name;if(this.mcpTools.has(t)){H(`MCP tool ${t} already registered, skipping (using first registered)`);return}this.mcpTools.set(t,e),C(`Registered MCP tool: ${t} from ${e.serverName}`)}getAllTools(){return Array.from(this.mcpTools.values())}getTool(e){return this.mcpTools.get(e)}hasTool(e){return this.mcpTools.has(e)}async callTool(e,t){let n=this.mcpTools.get(e);if(!n)return{success:!1,error:`MCP tool not found: ${e}`};let r=this.clients.get(n.serverName);return r?r.isConnected()?r.callTool(e,t):{success:!1,error:`MCP server not connected: ${n.serverName}`}:{success:!1,error:`MCP server not connected: ${n.serverName}`}}async disconnectAll(){C("Disconnecting all MCP servers...");for(let[e,t]of this.clients.entries())try{await t.disconnect(),C(`Disconnected from MCP server: ${e}`)}catch(n){K(`Error disconnecting from ${e}: ${n.message}`)}this.clients.clear(),this.mcpTools.clear(),this.initialized=!1,$("All MCP servers disconnected")}getStatus(){let e=Array.from(this.clients.entries()).map(([t,n])=>({name:t,connected:n.isConnected(),toolCount:n.getCachedTools().length}));return{initialized:this.initialized,serversConnected:this.clients.size,toolsAvailable:this.mcpTools.size,servers:e}}}});function jc(o){let e={};for(let t of o)e[t.name]=new go(t);return e}function _c(o){let e={};for(let t of o){let n=new go(t);e[t.name]=async(...r)=>n.execute(...r)}return e}var go,Nc=S(()=>{Qs();q();Ee();Y();go=class extends E{mcpTool;constructor(e){super(),this.mcpTool=e}getDefinition(){return{name:this.mcpTool.name,description:`[MCP:${this.mcpTool.serverName}] ${this.mcpTool.description}`,input_schema:{type:"object",properties:this.mcpTool.inputSchema.properties||{},required:this.mcpTool.inputSchema.required}}}async execute(...e){C(`Executing MCP tool: ${this.mcpTool.name}`);let t=this.argsToParams(e),r=await Bt().callTool(this.mcpTool.name,t);if(!r.success)throw new Error(r.error||"MCP tool execution failed");let s=this.formatMCPResult(r.content);return Ks(s,s,!0)}argsToParams(e){if(e.length===1&&typeof e[0]=="object"&&!Array.isArray(e[0]))return e[0];let n=this.mcpTool.inputSchema.properties||{},r=Object.keys(n),s={};return e.forEach((i,a)=>{a<r.length&&(s[r[a]]=i)}),s}formatMCPResult(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>this.formatContentItem(t)).join(`
1672
+ - When you want to get a summary of changes`,input_schema:{type:"object",properties:{query:{type:"string",description:"Search keywords to filter file changes"},filePatterns:{type:"array",items:{type:"string"},description:"File patterns to match (e.g., ['*.ts', '*.js'])",uniqueItems:!0},changeTypes:{type:"array",items:{type:"string",enum:["added","modified","deleted","renamed"]},description:"Types of changes to include",uniqueItems:!0},dateRange:{type:"object",properties:{start:{type:"string",format:"date-time",description:"Start date for filtering changes"},end:{type:"string",format:"date-time",description:"End date for filtering changes"}},description:"Time range to filter changes"},author:{type:"string",description:"Author to filter changes by"},branch:{type:"string",description:"Git branch to filter changes by"},sortBy:{type:"string",enum:["timestamp","filePath","size","type"],description:"Field to sort results by"},sortOrder:{type:"string",enum:["asc","desc"],description:"Sort order (ascending or descending)"},limit:{type:"integer",minimum:1,maximum:100,description:"Maximum number of results to return"},offset:{type:"integer",minimum:0,description:"Offset for pagination"},includeContent:{type:"boolean",description:"Whether to include file content previews"}}}}}async execute(e){try{let t=qe(),n={query:e.query,filter:{filePatterns:e.filePatterns,changeTypes:e.changeTypes,dateRange:e.dateRange,author:e.author,branch:e.branch},sortBy:e.sortBy,sortOrder:e.sortOrder,limit:e.limit,offset:e.offset,includeContent:e.includeContent};return await t.searchFileChanges(n)}catch(t){throw console.error("\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u65F6\u51FA\u9519:",t),new Error(`\u641C\u7D22\u6587\u4EF6\u53D8\u66F4\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`)}}},ai=new ii;il=ai,wx=ai.getDefinition()});var ur={};j(ur,{AgentTools:()=>si,AskUserTool:()=>Xt,BaseTool:()=>$,BuildDocIndexTool:()=>_t,ConfirmableTool:()=>Ce,CopyTool:()=>Mt,CoreTools:()=>cs,DeleteTool:()=>Pt,FileChangeTools:()=>Hs,FileChangeTracker:()=>Be,FileOpsTools:()=>Ts,GlobTool:()=>Ft,GrepTool:()=>Ot,MergeTool:()=>It,MkdirTool:()=>kt,MoveTool:()=>$t,PlanTool:()=>De,QuickProjectScanTool:()=>pt,ReadTool:()=>Tt,SearchDocsTool:()=>jt,SearchReplaceTool:()=>At,SearchTools:()=>ks,ShellTool:()=>Nt,SystemTools:()=>Ps,THINK_TOOL:()=>to,ThinkTool:()=>ot,TodoTool:()=>Qt,ValidateTool:()=>Rt,WriteTool:()=>Et,aiContextManager:()=>Tp,askUser:()=>mr,askUserTool:()=>fr,buildDocIndex:()=>qn,buildDocIndexTool:()=>Kn,copyFile:()=>In,copyTool:()=>An,createFileChangeTracker:()=>io,createToolResult:()=>li,deleteFile:()=>En,deleteTool:()=>Pn,detectFileChanges:()=>co,extractThought:()=>no,extractToolResult:()=>xn,fileChangeTracking:()=>kp,generateChangeSummary:()=>lo,getCurrentSessionFileChanges:()=>mo,getFileChangeTracker:()=>ue,getSessionFileChanges:()=>po,glob:()=>Wn,globTool:()=>Vn,grep:()=>zn,grepTool:()=>Hn,handleGitCommit:()=>go,isThinkTool:()=>zt,isToolResult:()=>bt,merge:()=>Ln,mergeTool:()=>Rn,mkdir:()=>bn,mkdirTool:()=>rt,moveFile:()=>$n,moveTool:()=>Mn,plan:()=>gr,planTool:()=>pr,quickProjectScan:()=>qt,quickProjectScanTool:()=>Kt,read:()=>vn,readTool:()=>wn,recordFileChange:()=>uo,resetFileChangeTracker:()=>ao,searchDocs:()=>Jn,searchDocsTool:()=>Gn,searchReplace:()=>Dn,searchReplaceTool:()=>Fn,shell:()=>Yn,shellTool:()=>Ut,think:()=>Wt,thinkTool:()=>Vt,todo:()=>hr,todoTool:()=>yr,toolInstances:()=>H,tools:()=>ci,validate:()=>Nn,validateTool:()=>Un,write:()=>Tn,writeTool:()=>kn});function li(o,e=null,t=!0){return{__tool_result:!0,result:o,display:e!==null?e:o,shouldPrint:t}}var H,ci,Tp,kp,Re=C(()=>{ls();ls();Xr();Xr();Qr();Qr();eo();eo();Po();Po();lt();lt();Xr();Qr();eo();Po();al();lt();ar();H={think:Vt,plan:pr,todo:yr,askUser:fr,quickProjectScan:Kt,read:wn,write:kn,mkdir:rt,glob:Vn,grep:Hn,search_docs:Gn,build_doc_index:Kn,shell:Ut,merge:Rn,delete:Pn,move:Mn,copy:An,searchReplace:Fn,validate:Un,search_file_changes:il},ci={think:Wt,plan:gr,todo:hr,askUser:mr,quickProjectScan:qt,read:vn,write:Tn,mkdir:bn,merge:Ln,glob:Wn,grep:zn,search_docs:Jn,build_doc_index:qn,shell:Yn,delete:En,move:$n,copy:In,searchReplace:Dn,validate:Nn,searchFileChanges:sl},Tp={getAIContextManager:qe,createAIContextManager:Ec,resetAIContextManager:Pc},kp={detectFileChanges:co,generateChangeSummary:lo,recordFileChange:uo,handleGitCommit:go,getSessionFileChanges:po,getCurrentSessionFileChanges:mo,getFileChangeTracker:ue,createFileChangeTracker:io,resetFileChangeTracker:ao}});var cl=C(()=>{});import{Client as Ep}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as Pp}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{StdioClientTransport as $p}from"@modelcontextprotocol/sdk/client/stdio.js";var Cr,ui=C(()=>{Y();Cr=class{client=null;config;connected=!1;tools=[];constructor(e){this.config={timeout:3e4,enabled:!0,...e}}async connect(){x(`Connecting to MCP server: ${this.config.name} (${this.config.transport})`);try{let e;if(this.config.transport==="http"||this.config.transport==="sse"){if(!this.config.url)throw new Error(`URL is required for ${this.config.transport} transport`);e=new Pp(new URL(this.config.url))}else if(this.config.transport==="stdio"){if(!this.config.command)throw new Error(`Command is required for ${this.config.transport} transport`);e=new $p({command:this.config.command,args:this.config.args||[],env:this.config.env})}else throw new Error(`Unsupported transport type: ${this.config.transport}`);this.client=new Ep({name:"niumagents-cli",version:"0.1.0"}),await this.client.connect(e),this.connected=!0;let t=await this.client.listTools();this.tools=t.tools.map(n=>({name:n.name,description:n.description,inputSchema:n.inputSchema||{type:"object",properties:{}},serverName:this.config.name})),x(`Loaded ${this.tools.length} tools from ${this.config.name}`)}catch(e){throw x(`Failed to connect to MCP server ${this.config.name}: ${e.message}`),e}}async disconnect(){x(`Disconnecting from MCP server: ${this.config.name}`),this.client=null,this.connected=!1,this.tools=[]}async listTools(){if(!this.client||!this.connected)throw new Error("Not connected to MCP server");return(await this.client.listTools()).tools.map(t=>({name:t.name,description:t.description,inputSchema:t.inputSchema||{type:"object",properties:{}},serverName:this.config.name}))}async callTool(e,t){if(!this.client||!this.connected)return{success:!1,error:"Not connected to MCP server"};try{let n=await this.client.callTool({name:e,arguments:t});return{success:!n.isError,content:n.content||n.result,metadata:n.metadata||{}}}catch(n){return{success:!1,error:n.message}}}isConnected(){return this.connected}getConfig(){return this.config}getCachedTools(){return this.tools}}});var ll=C(()=>{ui()});function Zt(){return gi.getInstance()}var gi,pi=C(()=>{ui();Y();gi=class o{static instance=null;clients=new Map;mcpTools=new Map;initialized=!1;constructor(){}static getInstance(){return o.instance||(o.instance=new o),o.instance}async initialize(e){if(this.initialized){G("MCP Manager already initialized");return}if(M(`Initializing ${e.length} MCP server(s)...`),e.length>0){let t=e.map(n=>{let r=n.url||n.command||"N/A",s=n.enabled!==!1?"enabled":"disabled";return`${n.name} (${n.transport}, ${s}): ${r}`}).join(", ");x(`MCP Server Configurations: ${t}`)}for(let t of e){if(t.enabled===!1){x(`Skipping disabled MCP server: ${t.name}`);continue}try{x(`Attempting to connect to MCP server ${t.name} with URL: ${t.url||"N/A"}`),await this.connectToServer(t)}catch(n){X(`Failed to connect to MCP server ${t.name}: ${n.message}`),x(`Error details for ${t.name}: ${n.message}
1673
+ ${n.stack||""}`)}}this.initialized=!0,M(`MCP Manager initialized with ${this.clients.size} server(s) and ${this.mcpTools.size} tool(s)`)}async connectToServer(e){x(`Connecting to MCP server: ${e.name} (${e.transport})`);let t=this.createClient(e);await t.connect(),this.clients.set(e.name,t);let n=t.getCachedTools();for(let r of n)this.registerTool(r);M(`Connected to MCP server: ${e.name} (${n.length} tools)`)}createClient(e){return new Cr(e)}registerTool(e){let t=e.name;if(this.mcpTools.has(t)){G(`MCP tool ${t} already registered, skipping (using first registered)`);return}this.mcpTools.set(t,e),x(`Registered MCP tool: ${t} from ${e.serverName}`)}getAllTools(){return Array.from(this.mcpTools.values())}getTool(e){return this.mcpTools.get(e)}hasTool(e){return this.mcpTools.has(e)}async callTool(e,t){let n=this.mcpTools.get(e);if(!n)return{success:!1,error:`MCP tool not found: ${e}`};let r=this.clients.get(n.serverName);return r?r.isConnected()?r.callTool(e,t):{success:!1,error:`MCP server not connected: ${n.serverName}`}:{success:!1,error:`MCP server not connected: ${n.serverName}`}}async disconnectAll(){x("Disconnecting all MCP servers...");for(let[e,t]of this.clients.entries())try{await t.disconnect(),x(`Disconnected from MCP server: ${e}`)}catch(n){X(`Error disconnecting from ${e}: ${n.message}`)}this.clients.clear(),this.mcpTools.clear(),this.initialized=!1,M("All MCP servers disconnected")}getStatus(){let e=Array.from(this.clients.entries()).map(([t,n])=>({name:t,connected:n.isConnected(),toolCount:n.getCachedTools().length}));return{initialized:this.initialized,serversConnected:this.clients.size,toolsAvailable:this.mcpTools.size,servers:e}}}});function ul(o){let e={};for(let t of o)e[t.name]=new $o(t);return e}function gl(o){let e={};for(let t of o){let n=new $o(t);e[t.name]=async(...r)=>n.execute(...r)}return e}var $o,pl=C(()=>{pi();V();Re();Y();$o=class extends ${mcpTool;constructor(e){super(),this.mcpTool=e}getDefinition(){return{name:this.mcpTool.name,description:`[MCP:${this.mcpTool.serverName}] ${this.mcpTool.description}`,input_schema:{type:"object",properties:this.mcpTool.inputSchema.properties||{},required:this.mcpTool.inputSchema.required}}}async execute(...e){x(`Executing MCP tool: ${this.mcpTool.name}`);let t=this.argsToParams(e),r=await Zt().callTool(this.mcpTool.name,t);if(!r.success)throw new Error(r.error||"MCP tool execution failed");let s=this.formatMCPResult(r.content);return li(s,s,!0)}argsToParams(e){if(e.length===1&&typeof e[0]=="object"&&!Array.isArray(e[0]))return e[0];let n=this.mcpTool.inputSchema.properties||{},r=Object.keys(n),s={};return e.forEach((i,a)=>{a<r.length&&(s[r[a]]=i)}),s}formatMCPResult(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>this.formatContentItem(t)).join(`
1571
1674
 
1572
- `):JSON.stringify(e,null,2)}formatContentItem(e){return typeof e=="string"?e:e.type==="text"?e.text||"":e.type==="image"?`[Image: ${e.data?.substring(0,50)}...]`:e.type==="resource"?`[Resource: ${e.uri||"unknown"}]`:JSON.stringify(e)}formatAction(e){let t=typeof e=="object"?Object.entries(e).map(([n,r])=>`${n}=${JSON.stringify(r)}`).join(", "):JSON.stringify(e);return`${this.mcpTool.name}(${t}) [MCP:${this.mcpTool.serverName}]`}formatObservation(e){return e&&e.__tool_result?String(e.display||e.result):String(e)}shouldPrintObservation(e){return!0}}});var Zs=S(()=>{Oc();Fc();Qs();Nc()});async function po(){if(ei){C("Tools already loaded, skipping");return}$("Loading tools..."),qt={...U},Uc={...qs};let o=Object.keys(U);$(`Loaded ${o.length} local tools`);let t=Bt().getAllTools();if(t.length===0){C("No MCP tools available"),ei=!0;return}let n=jc(t),r=_c(t),s=0,i=0;for(let[a,c]of Object.entries(n)){if(qt[a]){C(`Skipping MCP tool ${a} (local tool has priority)`),i++;continue}qt[a]=c,Uc[a]=r[a],s++}$(`Added ${s} MCP tools, skipped ${i} (local priority)`),$(`Total tools available: ${Object.keys(qt).length}`),ei=!0}function Kt(){return qt}function Wc(){let o=Object.keys(U),e=Object.keys(qt),t=e.filter(n=>!o.includes(n));return{local:o.length,mcp:t.length,total:e.length,localTools:o,mcpTools:t}}var qt,Uc,ei,tr=S(()=>{Ee();Zs();Y();qt={},Uc={},ei=!1});var Vs={};j(Vs,{TOOL_DEFINITIONS:()=>mo,getRawToolDefinitions:()=>Ln,getToolDefinitions:()=>nr,getToolNames:()=>Vc,isRealTool:()=>Rg});function zc(o){return{name:o.name,description:o.description,input_schema:o.input_schema}}function nr(){let o=Kt();if(Object.keys(o).length===0)return mo.map(zc);let e=[],t=Me.getCurrentNestingLevel(),n=Me.MAX_NESTING_LEVEL,r=["think","todo","askUser"];t<n&&r.splice(1,0,"plan");for(let s of r)if(o[s]){let i=o[s].getDefinition();i&&e.push(i)}for(let[s,i]of Object.entries(o))if(!r.includes(s)&&i){let a=i.getDefinition();a&&e.push(a)}return e.filter(s=>s!=null).map(zc)}function Ln(){return mo}function Vc(){return mo.map(o=>o.name)}function Rg(o){return o!=="think"&&Vc().includes(o)}var mo,Ot=S(()=>{Ee();tr();Hs();mo=[U.think.getDefinition(),U.plan.getDefinition(),U.todo.getDefinition(),U.askUser.getDefinition(),U.quickProjectScan.getDefinition(),U.read.getDefinition(),U.write.getDefinition(),U.merge.getDefinition(),U.mkdir.getDefinition(),U.glob.getDefinition(),U.grep.getDefinition(),U.delete.getDefinition(),U.move.getDefinition(),U.copy.getDefinition(),U.searchReplace.getDefinition(),U.shell.getDefinition()]});function ti(o){return!o||typeof o!="string"?0:Math.ceil(o.length/4)}function Je(o){if(!Array.isArray(o))return 0;let e=0;for(let t of o){if(t.content&&typeof t.content=="string"&&(e+=ti(t.content)),t.tool_calls&&Array.isArray(t.tool_calls))for(let n of t.tool_calls)n.function&&(e+=ti(n.function.name||""),e+=ti(n.function.arguments||""));e+=4}return e}function fo(o,e){return!e||e<=0?0:o/e*100}function ni(o,e,t=80){return fo(o,e)>=t}function ri(o,e,t){return`\u26A0\uFE0F Token usage warning: ${o.toLocaleString()} / ${e.toLocaleString()} tokens (${t.toFixed(1)}%)`}var oi=S(()=>{});import rr from"chalk";var ho,Hc=S(()=>{oi();Y();ho=class{options;constructor(e={}){this.options={enabled:e.enabled??!0,threshold:e.threshold??.8,minKeepMessages:e.minKeepMessages??3,maxKeepMessages:e.maxKeepMessages??20,targetUsageAfterCompression:e.targetUsageAfterCompression??.6,useMixedSummary:e.useMixedSummary??!0,llmSummaryTokenThreshold:e.llmSummaryTokenThreshold??500}}shouldCompress(e,t){return this.options.enabled?Je(e)/t>=this.options.threshold:!1}async compress(e,t,n){let r=Je(e),s=e.length;$(`\u5F00\u59CB\u4E0A\u4E0B\u6587\u538B\u7F29: ${s} \u6761\u6D88\u606F, ${r} tokens`);let i=this.calculateDynamicWindowSize(e,t);C(`\u52A8\u6001\u7A97\u53E3\u5927\u5C0F: \u4FDD\u7559\u6700\u8FD1 ${i} \u6761\u5B8C\u6574\u6D88\u606F`);let a=e.slice(0,-i),c=e.slice(-i);if(a.length===0)return H("\u6CA1\u6709\u9700\u8981\u538B\u7F29\u7684\u6D88\u606F,\u8DF3\u8FC7\u538B\u7F29"),{messages:e,stats:{originalMessageCount:s,originalTokenCount:r,compressedMessageCount:s,compressedTokenCount:r,compressionRatio:1,llmSummaryCount:0,heuristicSummaryCount:0}};let{summaryMessage:l,llmCount:g,heuristicCount:p}=await this.createCompressedSummary(a,n),u=[l,...c],m=Je(u),d={originalMessageCount:s,originalTokenCount:r,compressedMessageCount:u.length,compressedTokenCount:m,compressionRatio:m/r,llmSummaryCount:g,heuristicSummaryCount:p};return this.logCompressionStats(d),{messages:u,stats:d}}calculateDynamicWindowSize(e,t){let r=Je(e)/t,s;return r>=.9?(s=this.options.minKeepMessages,C("Token\u538B\u529B\u6781\u9AD8 (>=90%), \u4F7F\u7528\u6700\u5C0F\u7A97\u53E3")):r>=.85?(s=Math.floor(this.options.minKeepMessages+(this.options.maxKeepMessages-this.options.minKeepMessages)*.25),C("Token\u538B\u529B\u9AD8 (>=85%), \u4F7F\u7528\u8F83\u5C0F\u7A97\u53E3")):r>=.8?(s=Math.floor(this.options.minKeepMessages+(this.options.maxKeepMessages-this.options.minKeepMessages)*.5),C("Token\u538B\u529B\u4E2D\u7B49 (>=80%), \u4F7F\u7528\u4E2D\u7B49\u7A97\u53E3")):(s=this.options.maxKeepMessages,C("Token\u538B\u529B\u6B63\u5E38, \u4F7F\u7528\u6700\u5927\u7A97\u53E3")),Math.min(s,e.length)}async createCompressedSummary(e,t){let n=[],r=0,s=0,i=this.groupMessages(e);for(let c of i){let l=Je(c),g=this.assessMessageImportance(c),p;this.options.useMixedSummary&&g==="important"&&l>=this.options.llmSummaryTokenThreshold&&t?(p=await this.generateLLMSummary(c,t),r++,C(`\u4F7F\u7528LLM\u6458\u8981 (${c.length}\u6761\u6D88\u606F, ${l} tokens)`)):(p=this.generateHeuristicSummary(c),s++,C(`\u4F7F\u7528\u542F\u53D1\u5F0F\u6458\u8981 (${c.length}\u6761\u6D88\u606F, ${l} tokens)`)),n.push(p)}return{summaryMessage:{role:"system",content:`[\u5386\u53F2\u4E0A\u4E0B\u6587\u6458\u8981]
1675
+ `):JSON.stringify(e,null,2)}formatContentItem(e){return typeof e=="string"?e:e.type==="text"?e.text||"":e.type==="image"?`[Image: ${e.data?.substring(0,50)}...]`:e.type==="resource"?`[Resource: ${e.uri||"unknown"}]`:JSON.stringify(e)}formatAction(e){let t=typeof e=="object"?Object.entries(e).map(([n,r])=>`${n}=${JSON.stringify(r)}`).join(", "):JSON.stringify(e);return`${this.mcpTool.name}(${t}) [MCP:${this.mcpTool.serverName}]`}formatObservation(e){return e&&e.__tool_result?String(e.display||e.result):String(e)}shouldPrintObservation(e){return!0}}});var di=C(()=>{cl();ll();pi();pl()});async function Mo(){if(mi){x("Tools already loaded, skipping");return}M("Loading tools..."),en={...H},dl={...ci};let o=Object.keys(H);M(`Loaded ${o.length} local tools`);let t=Zt().getAllTools();if(t.length===0){x("No MCP tools available"),mi=!0;return}let n=ul(t),r=gl(t),s=0,i=0;for(let[a,c]of Object.entries(n)){if(en[a]){x(`Skipping MCP tool ${a} (local tool has priority)`),i++;continue}en[a]=c,dl[a]=r[a],s++}M(`Added ${s} MCP tools, skipped ${i} (local priority)`),M(`Total tools available: ${Object.keys(en).length}`),mi=!0}function tn(){return en}function ml(){let o=Object.keys(H),e=Object.keys(en),t=e.filter(n=>!o.includes(n));return{local:o.length,mcp:t.length,total:e.length,localTools:o,mcpTools:t}}var en,dl,mi,xr=C(()=>{Re();di();Y();en={},dl={},mi=!1});var ri={};j(ri,{TOOL_DEFINITIONS:()=>Io,getRawToolDefinitions:()=>Qn,getToolDefinitions:()=>Sr,getToolNames:()=>hl,isRealTool:()=>Mp});function fl(o){return{name:o.name,description:o.description,input_schema:o.input_schema}}function Sr(){let o=tn();if(Object.keys(o).length===0)return Io.map(fl);let e=[],t=De.getCurrentNestingLevel(),n=De.MAX_NESTING_LEVEL,r=["think","todo","askUser"];t<n&&r.splice(1,0,"plan");for(let s of r)if(o[s]){let i=o[s].getDefinition();i&&e.push(i)}for(let[s,i]of Object.entries(o))if(!r.includes(s)&&i){let a=i.getDefinition();a&&e.push(a)}return e.filter(s=>s!=null).map(fl)}function Qn(){return Io}function hl(){return Io.map(o=>o.name)}function Mp(o){return o!=="think"&&hl().includes(o)}var Io,Ht=C(()=>{Re();xr();oi();Io=[H.think.getDefinition(),H.plan.getDefinition(),H.todo.getDefinition(),H.askUser.getDefinition(),H.quickProjectScan.getDefinition(),H.read.getDefinition(),H.write.getDefinition(),H.merge.getDefinition(),H.mkdir.getDefinition(),H.glob.getDefinition(),H.grep.getDefinition(),H.delete.getDefinition(),H.move.getDefinition(),H.copy.getDefinition(),H.searchReplace.getDefinition(),H.shell.getDefinition()]});function fi(o){return!o||typeof o!="string"?0:Math.ceil(o.length/4)}function Ye(o){if(!Array.isArray(o))return 0;let e=0;for(let t of o){if(t.content&&typeof t.content=="string"&&(e+=fi(t.content)),t.tool_calls&&Array.isArray(t.tool_calls))for(let n of t.tool_calls)n.function&&(e+=fi(n.function.name||""),e+=fi(n.function.arguments||""));e+=4}return e}function Ao(o,e){return!e||e<=0?0:o/e*100}function hi(o,e,t=80){return Ao(o,e)>=t}function yi(o,e,t){return`\u26A0\uFE0F Token usage warning: ${o.toLocaleString()} / ${e.toLocaleString()} tokens (${t.toFixed(1)}%)`}var Ci=C(()=>{});import vr from"chalk";var Lo,yl=C(()=>{Ci();Y();Lo=class{options;constructor(e={}){this.options={enabled:e.enabled??!0,threshold:e.threshold??.8,minKeepMessages:e.minKeepMessages??3,maxKeepMessages:e.maxKeepMessages??20,targetUsageAfterCompression:e.targetUsageAfterCompression??.6,useMixedSummary:e.useMixedSummary??!0,llmSummaryTokenThreshold:e.llmSummaryTokenThreshold??500}}shouldCompress(e,t){return this.options.enabled?Ye(e)/t>=this.options.threshold:!1}async compress(e,t,n){let r=Ye(e),s=e.length;M(`\u5F00\u59CB\u4E0A\u4E0B\u6587\u538B\u7F29: ${s} \u6761\u6D88\u606F, ${r} tokens`);let i=this.calculateDynamicWindowSize(e,t);x(`\u52A8\u6001\u7A97\u53E3\u5927\u5C0F: \u4FDD\u7559\u6700\u8FD1 ${i} \u6761\u5B8C\u6574\u6D88\u606F`);let a=e.slice(0,-i),c=e.slice(-i);if(a.length===0)return G("\u6CA1\u6709\u9700\u8981\u538B\u7F29\u7684\u6D88\u606F,\u8DF3\u8FC7\u538B\u7F29"),{messages:e,stats:{originalMessageCount:s,originalTokenCount:r,compressedMessageCount:s,compressedTokenCount:r,compressionRatio:1,llmSummaryCount:0,heuristicSummaryCount:0}};let{summaryMessage:l,llmCount:u,heuristicCount:p}=await this.createCompressedSummary(a,n),g=[l,...c],d=Ye(g),m={originalMessageCount:s,originalTokenCount:r,compressedMessageCount:g.length,compressedTokenCount:d,compressionRatio:d/r,llmSummaryCount:u,heuristicSummaryCount:p};return this.logCompressionStats(m),{messages:g,stats:m}}calculateDynamicWindowSize(e,t){let r=Ye(e)/t,s;return r>=.9?(s=this.options.minKeepMessages,x("Token\u538B\u529B\u6781\u9AD8 (>=90%), \u4F7F\u7528\u6700\u5C0F\u7A97\u53E3")):r>=.85?(s=Math.floor(this.options.minKeepMessages+(this.options.maxKeepMessages-this.options.minKeepMessages)*.25),x("Token\u538B\u529B\u9AD8 (>=85%), \u4F7F\u7528\u8F83\u5C0F\u7A97\u53E3")):r>=.8?(s=Math.floor(this.options.minKeepMessages+(this.options.maxKeepMessages-this.options.minKeepMessages)*.5),x("Token\u538B\u529B\u4E2D\u7B49 (>=80%), \u4F7F\u7528\u4E2D\u7B49\u7A97\u53E3")):(s=this.options.maxKeepMessages,x("Token\u538B\u529B\u6B63\u5E38, \u4F7F\u7528\u6700\u5927\u7A97\u53E3")),Math.min(s,e.length)}async createCompressedSummary(e,t){let n=[],r=0,s=0,i=this.groupMessages(e);for(let c of i){let l=Ye(c),u=this.assessMessageImportance(c),p;this.options.useMixedSummary&&u==="important"&&l>=this.options.llmSummaryTokenThreshold&&t?(p=await this.generateLLMSummary(c,t),r++,x(`\u4F7F\u7528LLM\u6458\u8981 (${c.length}\u6761\u6D88\u606F, ${l} tokens)`)):(p=this.generateHeuristicSummary(c),s++,x(`\u4F7F\u7528\u542F\u53D1\u5F0F\u6458\u8981 (${c.length}\u6761\u6D88\u606F, ${l} tokens)`)),n.push(p)}return{summaryMessage:{role:"system",content:`[\u5386\u53F2\u4E0A\u4E0B\u6587\u6458\u8981]
1573
1676
  \u4EE5\u4E0B\u662F\u4E4B\u524D\u7684\u5BF9\u8BDD\u6458\u8981,\u5DF2\u538B\u7F29\u4EE5\u8282\u7701token:
1574
1677
 
1575
1678
  ${n.join(`
@@ -1578,15 +1681,16 @@ ${n.join(`
1578
1681
 
1579
1682
  `)}
1580
1683
 
1581
- [\u6458\u8981\u7ED3\u675F]`},llmCount:r,heuristicCount:s}}groupMessages(e){let t=[];for(let r=0;r<e.length;r+=3)t.push(e.slice(r,r+3));return t}assessMessageImportance(e){for(let t of e){if(!t.content)continue;let n=t.content.toLowerCase();if(n.includes("error")||n.includes("warning")||n.includes("\u9519\u8BEF")||n.includes("\u8B66\u544A")||t.tool_calls&&t.tool_calls.length>0||t.role==="system"||t.content&&t.content.length>1e3)return"important"}return"normal"}async generateLLMSummary(e,t){try{let{LITE_MODEL:n}=await Promise.resolve().then(()=>(ae(),yt)),r=e.filter(a=>a.content).map(a=>`${a.role}: ${a.content}`).join(`
1582
- `);return`\u{1F4DD} ${(await t({model:n(),messages:[{role:"system",content:"\u4F60\u662F\u4E00\u4E2A\u5BF9\u8BDD\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4E0B\u9762\u7684\u5BF9\u8BDD\u538B\u7F29\u6210\u7B80\u6D01\u7684\u6458\u8981(\u4E0D\u8D85\u8FC7150\u5B57),\u4FDD\u7559\u5173\u952E\u64CD\u4F5C\u3001\u7ED3\u679C\u548C\u91CD\u8981\u4FE1\u606F\u3002"},{role:"user",content:r}],temperature:.1,max_tokens:200,useCompression:!0})).choices?.[0]?.message?.content?.trim()||"\u6267\u884C\u5B8C\u6210"}`}catch(n){return H(`LLM\u6458\u8981\u5931\u8D25,\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${n instanceof Error?n.message:String(n)}`),this.generateHeuristicSummary(e)}}generateHeuristicSummary(e){let t=[],n=[],r=!1;for(let i of e){if(i.tool_calls&&i.tool_calls.length>0)for(let a of i.tool_calls){let c=a.function.name;c!=="think"&&t.push(c)}if(i.content&&(i.content.includes("Error")||i.content.includes("\u9519\u8BEF"))&&(r=!0),i.content){let a=i.content.match(/\b(created|updated|fixed|implemented|tested|deployed|成功|失败|创建|更新|修复|实现)\b/gi);a&&n.push(...a.slice(0,3))}}let s=`\u6267\u884C\u4E86 ${e.length} \u8F6E\u5BF9\u8BDD`;if(t.length>0){let i=[...new Set(t)];s+=`, \u8C03\u7528\u5DE5\u5177: ${i.slice(0,3).join(", ")}`}return n.length>0&&(s+=`, \u5173\u952E\u64CD\u4F5C: ${[...new Set(n)].slice(0,3).join(", ")}`),r&&(s+=" \u26A0\uFE0F \u5305\u542B\u9519\u8BEF"),`\u{1F4AC} ${s}`}logCompressionStats(e){let t=(e.compressionRatio*100).toFixed(1),n=((1-e.compressionRatio)*100).toFixed(1);console.log(rr.green(`
1583
- \u2728 \u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210`)),console.log(rr.cyan(` \u6D88\u606F\u6570: ${e.originalMessageCount} \u2192 ${e.compressedMessageCount} (${e.compressedMessageCount-e.originalMessageCount})`)),console.log(rr.cyan(` Token: ${e.originalTokenCount} \u2192 ${e.compressedTokenCount} (\u8282\u7701 ${n}%)`)),console.log(rr.cyan(` \u538B\u7F29\u6BD4: ${t}%`)),console.log(rr.cyan(` \u6458\u8981\u65B9\u5F0F: LLM ${e.llmSummaryCount}\u6B21, \u542F\u53D1\u5F0F ${e.heuristicSummaryCount}\u6B21
1584
- `)),$(`\u4E0A\u4E0B\u6587\u538B\u7F29: ${e.originalMessageCount}\u6761 \u2192 ${e.compressedMessageCount}\u6761, ${e.originalTokenCount}tokens \u2192 ${e.compressedTokenCount}tokens (${t}%)`)}updateOptions(e){this.options={...this.options,...e},C(`\u538B\u7F29\u914D\u7F6E\u5DF2\u66F4\u65B0: ${JSON.stringify(this.options)}`)}getOptions(){return{...this.options}}}});var jt={};j(jt,{callModelAPI:()=>ee,getDefaultSystemPrompt:()=>Dg});import or from"chalk";async function ee(o){let{model:e=o.useCompression?Pe():fe(),messages:t,temperature:n=.1,max_tokens:r,useCompression:s=!1,tools:i=nr(),tool_choice:a,compressionOptions:c,enableAutoCompression:l=!0}=o,g=s?await cn.getLiteProvider():await cn.getProvider();C(`\u6A21\u578B\u8C03\u7528\u914D\u7F6E: useCompression=${s}, \u6A21\u578B=${e}, provider=${g.getProviderType()}`),s?C(`\u6B63\u5728\u4F7F\u7528\u8F7B\u91CF\u6A21\u578B: ${e}`):C(`\u6B63\u5728\u4F7F\u7528\u9ED8\u8BA4\u6A21\u578B: ${e}`),C(`\u5DE5\u5177\u6570\u91CF: ${i?i.length:0}`);let p=s?No():_o(),u=t,m=Je(u),d=fo(m,p),y=h=>(h/1e3).toFixed(1)+"k";if($(`\u4F7F\u7528\u6A21\u578B: ${e}, Token usage: ${y(m)} / ${y(p)} (${d.toFixed(1)}%)`),v.currentTaskId){let h=v.tasks.find(b=>b.id===v.currentTaskId);h&&(h.tokenCount=(h.tokenCount||0)+m)}if(l&&ni(m,p,80)){let h=ri(m,p,d);H(h),console.log(or.yellow(`
1585
- ${h}`)),console.log(or.cyan(`\u{1F504} \u6B63\u5728\u81EA\u52A8\u538B\u7F29\u4E0A\u4E0B\u6587...
1586
- `));let b=new ho(c);if(b.shouldCompress(u,p))try{let{messages:f,stats:T}=await b.compress(u,p,ee);u=f,m=T.compressedTokenCount,d=fo(m,p),$(`\u538B\u7F29\u540EToken\u4F7F\u7528: ${m} / ${p} (${d.toFixed(1)}%)`)}catch(f){H(`\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25: ${f instanceof Error?f.message:String(f)}`),console.log(or.yellow(`\u26A0\uFE0F \u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25,\u5C06\u4F7F\u7528\u539F\u59CB\u6D88\u606F\u7EE7\u7EED\u6267\u884C
1587
- `))}else C("\u5F53\u524D\u4E0D\u6EE1\u8DB3\u538B\u7F29\u6761\u4EF6,\u8DF3\u8FC7\u538B\u7F29")}else if(ni(m,p,80)){let h=ri(m,p,d);H(h),console.log(or.yellow(`
1588
- ${h}`)),console.log(or.yellow(`Consider archiving old messages or starting a new session.
1589
- `))}C(`\u6A21\u578B\u8BF7\u6C42: ${JSON.stringify({model:e,temperature:n,max_tokens:r,messages:u.length>0?`[${u[0].role}, ..., ${u[u.length-1].role}]`:"[]",tools:i?i.length:0})}`);let w;try{w=await g.callModel({model:e,messages:u,temperature:n,max_tokens:r,tools:i,tool_choice:a})}catch(h){throw K(`\u8C03\u7528\u6A21\u578BAPI\u65F6\u53D1\u751F\u9519\u8BEF: ${h instanceof Error?h.message:String(h)}`),h instanceof Error&&h.stack&&C(`\u9519\u8BEF\u5806\u6808: ${h.stack}`),h}if(!w)throw K("\u6A21\u578B\u8FD4\u56DE undefined \u6216 null"),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7A7A\u54CD\u5E94");if(!w.choices)throw K(`\u6A21\u578B\u8FD4\u56DE\u7F3A\u5C11choices\u5B57\u6BB5: ${JSON.stringify(w)}`),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7684\u54CD\u5E94\u7F3A\u5C11choices\u5B57\u6BB5");if(!Array.isArray(w.choices)||w.choices.length===0)throw K(`\u6A21\u578B\u8FD4\u56DE\u7A7A\u7684choices\u6570\u7EC4: ${JSON.stringify(w)}`),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7684choices\u4E3A\u7A7A");return C(`\u6A21\u578B\u8FD4\u56DE: ${JSON.stringify(w)}`),w}function Dg(){return"You are a helpful assistant."}var Ce=S(()=>{ae();Hi();De();Ot();Y();oi();Hc()});import*as ue from"fs";import*as Ge from"path";var si,Jc=S(()=>{Ce();ae();si={name:"explorer",description:"\u667A\u80FD\u63A2\u7D22\u9879\u76EE\u7ED3\u6784\uFF0C\u751F\u6210\u6587\u6863\u6216\u56DE\u7B54\u7ED3\u6784\u76F8\u5173\u95EE\u9898",keywords:["explore","\u9879\u76EE\u7ED3\u6784","\u6587\u4EF6\u5206\u6790","\u76EE\u5F55\u7ED3\u6784","\u9879\u76EE\u6982\u89C8","\u4EE3\u7801\u7EC4\u7EC7","\u67B6\u6784\u5206\u6790"],prompt:`\u4F60\u662F\u4E00\u4F4D\u9879\u76EE\u7ED3\u6784\u5206\u6790\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u667A\u80FD\u5730\u63A2\u7D22\u548C\u5206\u6790\u9879\u76EE\u7684\u6574\u4F53\u7ED3\u6784\uFF0C\u5E76\u751F\u6210\u9AD8\u8D28\u91CF\u7684\u603B\u7ED3\u578B\u63CF\u8FF0\u3002
1684
+ [\u6458\u8981\u7ED3\u675F]`},llmCount:r,heuristicCount:s}}groupMessages(e){let t=[];for(let r=0;r<e.length;r+=3)t.push(e.slice(r,r+3));return t}assessMessageImportance(e){for(let t of e){if(!t.content)continue;let n=t.content.toLowerCase();if(n.includes("error")||n.includes("warning")||n.includes("\u9519\u8BEF")||n.includes("\u8B66\u544A")||t.tool_calls&&t.tool_calls.length>0||t.role==="system"||t.content&&t.content.length>1e3)return"important"}return"normal"}async generateLLMSummary(e,t){try{let{LITE_MODEL:n}=await Promise.resolve().then(()=>(le(),wt)),r=e.filter(a=>a.content).map(a=>`${a.role}: ${a.content}`).join(`
1685
+ `);return`\u{1F4DD} ${(await t({model:n(),messages:[{role:"system",content:"\u4F60\u662F\u4E00\u4E2A\u5BF9\u8BDD\u6458\u8981\u52A9\u624B\u3002\u8BF7\u5C06\u4E0B\u9762\u7684\u5BF9\u8BDD\u538B\u7F29\u6210\u7B80\u6D01\u7684\u6458\u8981(\u4E0D\u8D85\u8FC7150\u5B57),\u4FDD\u7559\u5173\u952E\u64CD\u4F5C\u3001\u7ED3\u679C\u548C\u91CD\u8981\u4FE1\u606F\u3002"},{role:"user",content:r}],temperature:.1,max_tokens:200,useCompression:!0})).choices?.[0]?.message?.content?.trim()||"\u6267\u884C\u5B8C\u6210"}`}catch(n){return G(`LLM\u6458\u8981\u5931\u8D25,\u964D\u7EA7\u5230\u542F\u53D1\u5F0F\u65B9\u6CD5: ${n instanceof Error?n.message:String(n)}`),this.generateHeuristicSummary(e)}}generateHeuristicSummary(e){let t=[],n=[],r=!1;for(let i of e){if(i.tool_calls&&i.tool_calls.length>0)for(let a of i.tool_calls){let c=a.function.name;c!=="think"&&t.push(c)}if(i.content&&(i.content.includes("Error")||i.content.includes("\u9519\u8BEF"))&&(r=!0),i.content){let a=i.content.match(/\b(created|updated|fixed|implemented|tested|deployed|成功|失败|创建|更新|修复|实现)\b/gi);a&&n.push(...a.slice(0,3))}}let s=`\u6267\u884C\u4E86 ${e.length} \u8F6E\u5BF9\u8BDD`;if(t.length>0){let i=[...new Set(t)];s+=`, \u8C03\u7528\u5DE5\u5177: ${i.slice(0,3).join(", ")}`}return n.length>0&&(s+=`, \u5173\u952E\u64CD\u4F5C: ${[...new Set(n)].slice(0,3).join(", ")}`),r&&(s+=" \u26A0\uFE0F \u5305\u542B\u9519\u8BEF"),`\u{1F4AC} ${s}`}logCompressionStats(e){let t=(e.compressionRatio*100).toFixed(1),n=((1-e.compressionRatio)*100).toFixed(1);console.log(vr.green(`
1686
+ \u2728 \u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210`)),console.log(vr.cyan(` \u6D88\u606F\u6570: ${e.originalMessageCount} \u2192 ${e.compressedMessageCount} (${e.compressedMessageCount-e.originalMessageCount})`)),console.log(vr.cyan(` Token: ${e.originalTokenCount} \u2192 ${e.compressedTokenCount} (\u8282\u7701 ${n}%)`)),console.log(vr.cyan(` \u538B\u7F29\u6BD4: ${t}%`)),console.log(vr.cyan(` \u6458\u8981\u65B9\u5F0F: LLM ${e.llmSummaryCount}\u6B21, \u542F\u53D1\u5F0F ${e.heuristicSummaryCount}\u6B21
1687
+ `)),M(`\u4E0A\u4E0B\u6587\u538B\u7F29: ${e.originalMessageCount}\u6761 \u2192 ${e.compressedMessageCount}\u6761, ${e.originalTokenCount}tokens \u2192 ${e.compressedTokenCount}tokens (${t}%)`)}updateOptions(e){this.options={...this.options,...e},x(`\u538B\u7F29\u914D\u7F6E\u5DF2\u66F4\u65B0: ${JSON.stringify(this.options)}`)}getOptions(){return{...this.options}}}});var Gt={};j(Gt,{callModelAPI:()=>ee,getDefaultSystemPrompt:()=>Ip});import nn from"chalk";async function ee(o){let{model:e=o.useCompression?Ie():ye(),messages:t,temperature:n=.1,max_tokens:r,useCompression:s=!1,tools:i=Sr(),tool_choice:a,compressionOptions:c,enableAutoCompression:l=!0}=o,u=s?await Cn.getLiteProvider():await Cn.getProvider();x(`\u6A21\u578B\u8C03\u7528\u914D\u7F6E: useCompression=${s}, \u6A21\u578B=${e}, provider=${u.getProviderType()}`),s?x(`\u6B63\u5728\u4F7F\u7528\u8F7B\u91CF\u6A21\u578B: ${e}`):x(`\u6B63\u5728\u4F7F\u7528\u9ED8\u8BA4\u6A21\u578B: ${e}`),x(`\u5DE5\u5177\u6570\u91CF: ${i?i.length:0}`);let p=s?os():rs(),g=t,d=Ye(g),m=Ao(d,p),h=y=>(y/1e3).toFixed(1)+"k";if(M(`\u4F7F\u7528\u6A21\u578B: ${e}, Token usage: ${h(d)} / ${h(p)} (${m.toFixed(1)}%)`),b.currentTaskId){let y=b.tasks.find(S=>S.id===b.currentTaskId);y&&(y.tokenCount=(y.tokenCount||0)+d)}if(l&&hi(d,p,80)){let y=yi(d,p,m);G(y),console.log(nn.yellow(`
1688
+ ${y}`)),console.log(nn.cyan(`\u{1F504} \u6B63\u5728\u81EA\u52A8\u538B\u7F29\u4E0A\u4E0B\u6587...
1689
+ `));let S=new Lo(c);if(S.shouldCompress(g,p))try{let{messages:E,stats:P}=await S.compress(g,p,ee);g=E,d=P.compressedTokenCount,m=Ao(d,p),M(`\u538B\u7F29\u540EToken\u4F7F\u7528: ${d} / ${p} (${m.toFixed(1)}%)`)}catch(E){G(`\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25: ${E instanceof Error?E.message:String(E)}`),console.log(nn.yellow(`\u26A0\uFE0F \u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25,\u5C06\u4F7F\u7528\u539F\u59CB\u6D88\u606F\u7EE7\u7EED\u6267\u884C
1690
+ `))}else x("\u5F53\u524D\u4E0D\u6EE1\u8DB3\u538B\u7F29\u6761\u4EF6,\u8DF3\u8FC7\u538B\u7F29")}else if(hi(d,p,80)){let y=yi(d,p,m);G(y),console.log(nn.yellow(`
1691
+ ${y}`)),console.log(nn.yellow(`Consider archiving old messages or starting a new session.
1692
+ `))}x(`\u6A21\u578B\u8BF7\u6C42: ${JSON.stringify({model:e,temperature:n,max_tokens:r,messages:g.length>0?`[${g[0].role}, ..., ${g[g.length-1].role}]`:"[]",tools:i?i.length:0})}`);let w,v=10,T=1e4,f=0;for(;f<=v;)try{w=await u.callModel({model:e,messages:g,temperature:n,max_tokens:r,tools:i,tool_choice:a});break}catch(y){let S=y instanceof Error?y.message:String(y);if((S.includes("429")||S.includes("Too Many Requests")||S.includes("rate limit")||S.includes("\u8D85\u8FC7\u9650\u5236")||S.includes("\u8BF7\u6C42\u9891\u7387"))&&f<v)f++,G(`API\u901F\u7387\u9650\u5236(429), \u6B63\u5728\u91CD\u8BD5... (${f}/${v}) \u7B49\u5F85 ${T/1e3}\u79D2`),console.log(nn.yellow(`\u26A0\uFE0F API\u901F\u7387\u9650\u5236, \u6B63\u5728\u91CD\u8BD5... (${f}/${v}) \u7B49\u5F85 ${T/1e3}\u79D2
1693
+ `)),await new Promise(P=>setTimeout(P,T));else throw X(`\u8C03\u7528\u6A21\u578BAPI\u65F6\u53D1\u751F\u9519\u8BEF: ${S}`),y instanceof Error&&y.stack&&x(`\u9519\u8BEF\u5806\u6808: ${y.stack}`),y}if(!w)throw X("\u6A21\u578B\u8FD4\u56DE undefined \u6216 null"),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7A7A\u54CD\u5E94");if(!w.choices)throw X(`\u6A21\u578B\u8FD4\u56DE\u7F3A\u5C11choices\u5B57\u6BB5: ${JSON.stringify(w)}`),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7684\u54CD\u5E94\u7F3A\u5C11choices\u5B57\u6BB5");if(!Array.isArray(w.choices)||w.choices.length===0)throw X(`\u6A21\u578B\u8FD4\u56DE\u7A7A\u7684choices\u6570\u7EC4: ${JSON.stringify(w)}`),new Error("\u6A21\u578BAPI\u8FD4\u56DE\u7684choices\u4E3A\u7A7A");return x(`\u6A21\u578B\u8FD4\u56DE: ${JSON.stringify(w)}`),w}function Ip(){return"You are a helpful assistant."}var ve=C(()=>{le();ia();Ne();Ht();Y();Ci();yl()});import*as pe from"fs";import*as Xe from"path";var xi,Cl=C(()=>{ve();le();xi={name:"explorer",description:"\u667A\u80FD\u63A2\u7D22\u9879\u76EE\u7ED3\u6784\uFF0C\u751F\u6210\u6587\u6863\u6216\u56DE\u7B54\u7ED3\u6784\u76F8\u5173\u95EE\u9898",keywords:["explore","\u9879\u76EE\u7ED3\u6784","\u6587\u4EF6\u5206\u6790","\u76EE\u5F55\u7ED3\u6784","\u9879\u76EE\u6982\u89C8","\u4EE3\u7801\u7EC4\u7EC7","\u67B6\u6784\u5206\u6790"],prompt:`\u4F60\u662F\u4E00\u4F4D\u9879\u76EE\u7ED3\u6784\u5206\u6790\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u667A\u80FD\u5730\u63A2\u7D22\u548C\u5206\u6790\u9879\u76EE\u7684\u6574\u4F53\u7ED3\u6784\uFF0C\u5E76\u751F\u6210\u9AD8\u8D28\u91CF\u7684\u603B\u7ED3\u578B\u63CF\u8FF0\u3002
1590
1694
 
1591
1695
  ## \u8F93\u51FA\u8981\u6C42
1592
1696
 
@@ -1685,7 +1789,7 @@ ${h}`)),console.log(or.yellow(`Consider archiving old messages or starting a new
1685
1789
  3. **\u6DF1\u5EA6\u5206\u6790**\uFF1A\u5FC5\u8981\u65F6\u6DF1\u5165\u8BFB\u53D6\u548C\u5206\u6790\u5173\u952E\u4EE3\u7801\u6587\u4EF6
1686
1790
  4. **\u6E05\u6670\u8868\u8FBE**\uFF1A\u4EE5\u7ED3\u6784\u5316\u3001\u6613\u61C2\u7684\u65B9\u5F0F\u5448\u73B0\u5206\u6790\u7ED3\u679C
1687
1791
  5. **\u603B\u7ED3\u4F18\u5148**\uFF1A\u59CB\u7EC8\u751F\u6210\u7CBE\u7B80\u7684\u603B\u7ED3\u578B\u63CF\u8FF0\uFF0C\u907F\u514D\u5197\u4F59\u4FE1\u606F
1688
- 6. **\u4FBF\u4E8E\u68C0\u7D22**\uFF1A\u4F7F\u7528\u660E\u786E\u7684\u5173\u952E\u8BCD\u548C\u5C42\u6B21\u7ED3\u6784\uFF0C\u65B9\u4FBF\u540E\u7EED\u68C0\u7D22\u548C\u7406\u89E3`,finalAnswerCallback:async(o,e)=>{try{let t=process.cwd(),n=Ge.join(t,".nium","docs");ue.existsSync(n)||ue.mkdirSync(n,{recursive:!0});let r=Ge.join(n,"PROJECT.md"),s=`# \u9879\u76EE\u63A2\u7D22\u62A5\u544A
1792
+ 6. **\u4FBF\u4E8E\u68C0\u7D22**\uFF1A\u4F7F\u7528\u660E\u786E\u7684\u5173\u952E\u8BCD\u548C\u5C42\u6B21\u7ED3\u6784\uFF0C\u65B9\u4FBF\u540E\u7EED\u68C0\u7D22\u548C\u7406\u89E3`,finalAnswerCallback:async(o,e)=>{try{let t=process.cwd(),n=Xe.join(t,".nium","docs");pe.existsSync(n)||pe.mkdirSync(n,{recursive:!0});let r=Xe.join(n,"PROJECT.md"),s=`# \u9879\u76EE\u63A2\u7D22\u62A5\u544A
1689
1793
 
1690
1794
  > \u751F\u6210\u65F6\u95F4: ${new Date().toLocaleString("zh-CN",{timeZone:"Asia/Shanghai"})}
1691
1795
  > \u751F\u6210\u5DE5\u5177: Explorer Agent
@@ -1697,11 +1801,11 @@ ${o}
1697
1801
  ---
1698
1802
 
1699
1803
  *\u6B64\u6587\u6863\u7531 Explorer Agent \u81EA\u52A8\u751F\u6210\uFF0C\u8BB0\u5F55\u4E86\u9879\u76EE\u7ED3\u6784\u5206\u6790\u7ED3\u679C\u3002*
1700
- `;if(!ue.existsSync(r))ue.writeFileSync(r,s,"utf-8"),console.log(`
1701
- \u2713 \u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5DF2\u4FDD\u5B58\u5230: ${Ge.relative(t,r)}`);else{let i=Ge.join(t,".nium","merge");ue.existsSync(i)||ue.mkdirSync(i,{recursive:!0});let a=`project-merge-${Date.now()}.md`,c=Ge.join(i,a),l=`# PROJECT.md \u5408\u5E76\u8BF7\u6C42
1804
+ `;if(!pe.existsSync(r))pe.writeFileSync(r,s,"utf-8"),console.log(`
1805
+ \u2713 \u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5DF2\u4FDD\u5B58\u5230: ${Xe.relative(t,r)}`);else{let i=Xe.join(t,".nium","merge");pe.existsSync(i)||pe.mkdirSync(i,{recursive:!0});let a=`project-merge-${Date.now()}.md`,c=Xe.join(i,a),l=`# PROJECT.md \u5408\u5E76\u8BF7\u6C42
1702
1806
 
1703
1807
  ## \u5F53\u524D\u6587\u4EF6\u5185\u5BB9
1704
- ${ue.readFileSync(r,"utf-8")}
1808
+ ${pe.readFileSync(r,"utf-8")}
1705
1809
 
1706
1810
  ## \u65B0\u751F\u6210\u5185\u5BB9
1707
1811
  ${s}
@@ -1714,33 +1818,107 @@ ${s}
1714
1818
  4. \u5408\u5E76\u6838\u5FC3\u6A21\u5757\u5206\u6790\uFF0C\u4FDD\u7559\u6240\u6709\u6709\u7528\u4FE1\u606F
1715
1819
  5. \u786E\u4FDD\u5408\u5E76\u540E\u7684\u6587\u6863\u7ED3\u6784\u6E05\u6670\uFF0C\u4FBF\u4E8E\u9605\u8BFB\u548C\u68C0\u7D22
1716
1820
  6. \u4FDD\u6301\u8F93\u51FA\u4E3A\u7CBE\u7B80\u7684\u603B\u7ED3\u578B\u63CF\u8FF0\uFF0C\u9002\u5408\u4F5C\u4E3A\u52A8\u6001\u63D0\u793A\u8BCD
1717
- `;ue.writeFileSync(c,l,"utf-8"),console.log(`
1718
- \u2713 \u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5DF2\u751F\u6210\u5408\u5E76\u8BF7\u6C42: ${Ge.relative(t,c)}`),console.log(" \u6B63\u5728\u8C03\u7528\u6A21\u578B\u5904\u7406\u5408\u5E76\u903B\u8F91...");let g=`\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6587\u6863\u5408\u5E76\u4E13\u5BB6\u3002\u8BF7\u6839\u636E\u63D0\u4F9B\u7684\u5408\u5E76\u8BF7\u6C42\uFF0C\u5C06\u5F53\u524D\u6587\u4EF6\u5185\u5BB9\u548C\u65B0\u751F\u6210\u5185\u5BB9\u5408\u5E76\u4E3A\u4E00\u4E2A\u9AD8\u8D28\u91CF\u7684 PROJECT.md \u6587\u4EF6\u3002
1821
+ `;pe.writeFileSync(c,l,"utf-8"),console.log(`
1822
+ \u2713 \u9879\u76EE\u63A2\u7D22\u7ED3\u679C\u5DF2\u751F\u6210\u5408\u5E76\u8BF7\u6C42: ${Xe.relative(t,c)}`),console.log(" \u6B63\u5728\u8C03\u7528\u6A21\u578B\u5904\u7406\u5408\u5E76\u903B\u8F91...");let u=`\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6587\u6863\u5408\u5E76\u4E13\u5BB6\u3002\u8BF7\u6839\u636E\u63D0\u4F9B\u7684\u5408\u5E76\u8BF7\u6C42\uFF0C\u5C06\u5F53\u524D\u6587\u4EF6\u5185\u5BB9\u548C\u65B0\u751F\u6210\u5185\u5BB9\u5408\u5E76\u4E3A\u4E00\u4E2A\u9AD8\u8D28\u91CF\u7684 PROJECT.md \u6587\u4EF6\u3002
1719
1823
 
1720
1824
  ${l}
1721
1825
 
1722
- \u8BF7\u76F4\u63A5\u8FD4\u56DE\u5408\u5E76\u540E\u7684\u5B8C\u6574\u5185\u5BB9\uFF0C\u4E0D\u8981\u6DFB\u52A0\u4EFB\u4F55\u989D\u5916\u7684\u89E3\u91CA\u6216\u8BF4\u660E\u3002`,u=(await ee({model:fe(),messages:[{role:"user",content:g}],temperature:.1,max_tokens:4e3}))?.choices?.[0]?.message?.content;u?(ue.writeFileSync(r,u,"utf-8"),console.log(" \u2713 \u5408\u5E76\u5B8C\u6210\uFF0CPROJECT.md \u5DF2\u66F4\u65B0")):console.log(" \u26A0\uFE0F \u6A21\u578B\u672A\u8FD4\u56DE\u6709\u6548\u5408\u5E76\u7ED3\u679C")}e?.orchestratorContext&&(e.orchestratorContext.recordExplorationResult(o),console.log(" \u2713 \u63A2\u7D22\u7ED3\u679C\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587"))}catch(t){console.error(`\u4FDD\u5B58\u9879\u76EE\u6587\u6863\u65F6\u51FA\u9519: ${t.message}`)}}}});function Gc(){return Object.values(Og)}var Og,Bc=S(()=>{_i();Jc();Og={[Fo.name]:Fo,[si.name]:si}});var kc={};j(kc,{SubAgentManager:()=>Co,getSubAgentManager:()=>Ht});import{existsSync as Fg,readFileSync as jg,readdirSync as _g}from"fs";import{join as Ng}from"path";import ge from"chalk";function Ht(o={}){return yo?o.matchStrategy&&yo.setMatchStrategy(o.matchStrategy):yo=new Co(o),yo}var Co,yo,co=S(()=>{Le();Bc();ae();Ce();tt();Co=class{subAgents;agentPerformance;matchStrategy;constructor(e={}){this.subAgents=new Map,this.agentPerformance=new Map,this.matchStrategy=e.matchStrategy||"hybrid",this.loadBuiltinAgents(),this.loadSubAgents()}loadBuiltinAgents(){try{let e=Gc();console.log(ge.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u52A0\u8F7D ${e.length} \u4E2A\u5185\u7F6E\u5B50\u4EE3\u7406`)),e.forEach(t=>{this.subAgents.set(t.name,t)})}catch(e){console.log(ge.red(`\u274C \u52A0\u8F7D\u5185\u7F6E\u4EE3\u7406\u5931\u8D25: ${e.message}`))}}loadSubAgents(){let e=le("agents");if(!Fg(e)){console.log(ge.gray("[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] .nium/agents \u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u52A0\u8F7D\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53"));return}try{let n=_g(e).filter(r=>r.endsWith(".json")||r.endsWith(".md"));console.log(ge.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u52A0\u8F7D ${n.length} \u4E2A\u81EA\u5B9A\u4E49\u5B50\u4EE3\u7406`));for(let r of n)try{let s=Ng(e,r),i=jg(s,"utf-8"),a;r.endsWith(".json")?a=JSON.parse(i):r.endsWith(".md")&&(a=this.parseFrontmatter(i)),this.validateConfig(a)?(this.subAgents.set(a.name,a),console.log(ge.green(`\u2713 \u52A0\u8F7D\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53: ${a.name}`))):console.log(ge.yellow(`\u26A0\uFE0F \u914D\u7F6E\u6587\u4EF6 ${r} \u683C\u5F0F\u65E0\u6548\uFF0C\u5DF2\u8DF3\u8FC7`))}catch(s){console.log(ge.red(`\u274C \u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 ${r} \u5931\u8D25: ${s.message}`))}}catch(t){console.log(ge.red(`\u274C \u8BFB\u53D6agents\u76EE\u5F55\u5931\u8D25: ${t.message}`))}}parseFrontmatter(e){let t=/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/,n=e.match(t);if(!n)throw new Error("\u65E0\u6548\u7684 frontmatter \u683C\u5F0F");let[,r,s]=n,i={},a=r.split(`
1723
- `);for(let c of a){let l=c.trim();if(!l)continue;let g=l.match(/^(\w+)\s*[::]\s*(.+)$/);if(g){let[,p,u]=g;p==="keywords"?i.keywords=u.split(/[,,]/).map(m=>m.trim()).filter(m=>m):i[p]=u.trim()}}return i.prompt=s.trim(),i}validateConfig(e){return!(!e||typeof e!="object"||!e.name||typeof e.name!="string"||!e.description||typeof e.description!="string"||!e.prompt||typeof e.prompt!="string")}async matchSubAgent(e){if(this.subAgents.size===0)return null;let t=Array.from(this.subAgents.values());switch(this.matchStrategy){case"semantic":return await this.matchSubAgentWithAI(e,t);case"hybrid":let n=this.matchSubAgentWithKeywords(e);if(n)return console.log(ge.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] Hybrid\u7B56\u7565 - \u5173\u952E\u8BCD\u5339\u914D\u6210\u529F: ${n.name}`)),n;let r=await this.matchSubAgentWithAI(e,t);return r&&console.log(ge.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] Hybrid\u7B56\u7565 - \u8BED\u4E49\u5339\u914D\u6210\u529F: ${r.name}`)),r;case"keyword":default:return this.matchSubAgentWithKeywords(e)}}matchSubAgentWithKeywords(e){let t=e.toLowerCase(),n=[];for(let[r,s]of this.subAgents){let i=0;if(s.keywords&&Array.isArray(s.keywords))for(let g of s.keywords)t.includes(g.toLowerCase())&&(i+=10);t.includes(r.toLowerCase())&&(i+=5);let a=s.description.toLowerCase(),c=t.split(/\s+/).filter(g=>g.length>2&&a.includes(g));i+=c.length*2;let l=this.agentPerformance.get(r);if(l){let g=l.success/l.total;i+=g*5;let p=Math.max(0,1-(Date.now()-l.lastUsed)/(10080*60*1e3));i+=p*2}i>0&&n.push({agent:s,score:i})}if(n.length>0){n.sort((s,i)=>i.score-s.score);let r=n[0].agent;return console.log(ge.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u57FA\u4E8E\u5206\u6570\u5339\u914D\u5230\u667A\u80FD\u4F53: ${r.name} (\u5206\u6570: ${n[0].score.toFixed(1)})`)),r}return null}async matchSubAgentWithAI(e,t){let n=t.map(l=>`${l.name}: ${l.description}`).join(`
1724
- `),r=ls(e,n),s=await ee({model:Pe(),messages:[{role:"user",content:r}],temperature:0,max_tokens:100,useCompression:!0}),{content:i}=s.choices[0].message,a=i?i.trim():"";return this.getSubAgent(a)||null}recordAgentPerformance(e,t,n){let r=this.agentPerformance.get(e)||{total:0,success:0,avgTime:0,lastUsed:Date.now()};r.total++,t&&r.success++,r.avgTime=(r.avgTime*(r.total-1)+n)/r.total,r.lastUsed=Date.now(),this.agentPerformance.set(e,r)}setMatchStrategy(e){return["keyword","semantic","hybrid"].includes(e)?(this.matchStrategy=e,console.log(ge.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u5339\u914D\u7B56\u7565\u5DF2\u8BBE\u7F6E\u4E3A: ${e}`)),!0):(console.error(ge.red(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u65E0\u6548\u7684\u5339\u914D\u7B56\u7565: ${e}`)),!1)}getAllSubAgents(){return Array.from(this.subAgents.values())}getSubAgent(e){return this.subAgents.get(e)||null}},yo=null});import G from"chalk";import lt from"readline";async function So(o,e=!1,t=null,n=null){let r,s=null,i=Rr();if(Z("Initializing react loop with think-tool support"),e&&v.messages&&v.messages.length>0)Z(`Resuming existing session: ${v.sessionId}`),r=v.messages,Be(`\u6062\u590D\u4F1A\u8BDD [ID:${v.sessionId.substring(0,8)}]: ${v.currentTask}`),sn(G.green(`\u4ECE ${v.updatedAt} \u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD [ID:${v.sessionId.substring(0,8)}]`),t),J(G.gray(`\u4E4B\u524D\u7684\u4EFB\u52A1: ${v.currentTask}`),t),v.tasks&&v.tasks.length>0&&J(G.gray(`\u4F1A\u8BDD\u4E2D\u4EFB\u52A1\u6570\u91CF: ${v.tasks.length}`),t),J("",t);else if(o){Z(`Starting new task: ${o.substring(0,50)}${o.length>50?"...":""}`);let g=ce(),p=ze(g);await g.detectFileChanges();let u=p.generatePromptIntegrationContent();r=[{role:"system",content:u?`${et}
1826
+ \u8BF7\u76F4\u63A5\u8FD4\u56DE\u5408\u5E76\u540E\u7684\u5B8C\u6574\u5185\u5BB9\uFF0C\u4E0D\u8981\u6DFB\u52A0\u4EFB\u4F55\u989D\u5916\u7684\u89E3\u91CA\u6216\u8BF4\u660E\u3002`,g=(await ee({model:ye(),messages:[{role:"user",content:u}],temperature:.1,max_tokens:4e3,tools:[]}))?.choices?.[0]?.message?.content;g?(pe.writeFileSync(r,g,"utf-8"),console.log(" \u2713 \u5408\u5E76\u5B8C\u6210\uFF0CPROJECT.md \u5DF2\u66F4\u65B0")):console.log(" \u26A0\uFE0F \u6A21\u578B\u672A\u8FD4\u56DE\u6709\u6548\u5408\u5E76\u7ED3\u679C")}e?.orchestratorContext&&(e.orchestratorContext.recordExplorationResult(o),console.log(" \u2713 \u63A2\u7D22\u7ED3\u679C\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587"))}catch(t){console.error(`\u4FDD\u5B58\u9879\u76EE\u6587\u6863\u65F6\u51FA\u9519: ${t.message}`)}}}});var Si,xl=C(()=>{Si={name:"doc-retriever",description:"\u6587\u6863\u68C0\u7D22\u548C\u4FE1\u606F\u63D0\u53D6\uFF0C\u7528\u4E8E\u641C\u7D22\u548C\u83B7\u53D6\u6587\u6863\u5185\u5BB9\uFF0C\u652F\u6301\u5173\u952E\u8BCD\u641C\u7D22\u548C\u6B63\u5219\u8868\u8FBE\u5F0F",keywords:["search","\u641C\u7D22","\u6587\u6863","docs","documentation","retrieve","find","\u67E5\u627E","\u67E5\u8BE2","\u641C\u7D22\u6587\u6863","\u67E5\u627E\u6587\u6863","\u83B7\u53D6\u6587\u6863","\u68C0\u7D22\u4FE1\u606F","\u641C\u7D22\u5185\u5BB9","find document","search documentation","get information","retrieve information","search for","\u67E5\u627E\u5185\u5BB9","\u641C\u7D22\u4FE1\u606F","\u67E5\u8BE2\u4FE1\u606F","\u68C0\u7D22\u6587\u6863","\u6587\u6863\u641C\u7D22","\u4FE1\u606F\u68C0\u7D22","search docs","find info","\u67E5\u627E\u8D44\u6599","\u641C\u7D22\u8D44\u6599"],prompt:`\u4F60\u662F\u4E00\u4F4D\u6587\u6863\u68C0\u7D22\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u6839\u636E\u7528\u6237\u9700\u6C42\u641C\u7D22\u548C\u68C0\u7D22\u76F8\u5173\u6587\u6863\u5185\u5BB9\uFF0C\u652F\u6301\u5173\u952E\u8BCD\u641C\u7D22\u548C\u6B63\u5219\u8868\u8FBE\u5F0F\u3002
1827
+
1828
+ ## \u6838\u5FC3\u89C4\u5219
1829
+
1830
+ 1. **\u6587\u6863\u641C\u7D22\u7B56\u7565**\uFF1A
1831
+ - \u4F18\u5148\u4F7F\u7528search-docs\u5DE5\u5177\u8FDB\u884C\u6587\u6863\u641C\u7D22
1832
+ - \u652F\u6301\u5173\u952E\u8BCD\u641C\u7D22\u548C\u6B63\u5219\u8868\u8FBE\u5F0F
1833
+ - \u53EF\u4EE5\u6307\u5B9A\u641C\u7D22\u8DEF\u5F84\u548C\u6700\u5927\u8FD4\u56DE\u7ED3\u679C\u6570
1834
+ - \u7ED3\u679C\u6309\u76F8\u5173\u6027\u6392\u5E8F
1835
+
1836
+ 2. **\u641C\u7D22\u7ED3\u679C\u5904\u7406**\uFF1A
1837
+ - \u63D0\u53D6\u76F8\u5173\u6587\u6863\u5185\u5BB9
1838
+ - \u8FC7\u6EE4\u65E0\u5173\u4FE1\u606F
1839
+ - \u6574\u7406\u548C\u683C\u5F0F\u5316\u641C\u7D22\u7ED3\u679C
1840
+ - \u63D0\u4F9B\u6E05\u6670\u7684\u5F15\u7528\u548C\u6765\u6E90
1841
+
1842
+ 3. **\u6587\u6863\u7D22\u5F15\u7BA1\u7406**\uFF1A
1843
+ - \u5B9A\u671F\u66F4\u65B0\u6587\u6863\u7D22\u5F15
1844
+ - \u786E\u4FDD\u7D22\u5F15\u4E0E\u5B9E\u9645\u6587\u6863\u540C\u6B65
1845
+ - \u4F7F\u7528build-doc-index\u5DE5\u5177\u6784\u5EFA\u548C\u66F4\u65B0\u7D22\u5F15
1846
+
1847
+ 4. **\u641C\u7D22\u4F18\u5316**\uFF1A
1848
+ - \u5206\u6790\u7528\u6237\u67E5\u8BE2\u610F\u56FE
1849
+ - \u4F18\u5316\u641C\u7D22\u5173\u952E\u8BCD
1850
+ - \u8C03\u6574\u641C\u7D22\u8303\u56F4
1851
+ - \u63D0\u4F9B\u76F8\u5173\u641C\u7D22\u5EFA\u8BAE
1852
+
1853
+ ## \u5DE5\u4F5C\u6D41\u7A0B
1854
+
1855
+ 1. **\u63A5\u6536\u67E5\u8BE2**\uFF1A\u7406\u89E3\u7528\u6237\u7684\u641C\u7D22\u9700\u6C42
1856
+ 2. **\u6784\u5EFA\u641C\u7D22**\uFF1A\u6839\u636E\u9700\u6C42\u6784\u5EFA\u5408\u9002\u7684\u641C\u7D22\u67E5\u8BE2
1857
+ 3. **\u6267\u884C\u641C\u7D22**\uFF1A\u4F7F\u7528search-docs\u5DE5\u5177\u6267\u884C\u641C\u7D22
1858
+ 4. **\u5904\u7406\u7ED3\u679C**\uFF1A\u6574\u7406\u548C\u8FC7\u6EE4\u641C\u7D22\u7ED3\u679C
1859
+ 5. **\u8FD4\u56DE\u5185\u5BB9**\uFF1A\u63D0\u4F9B\u76F8\u5173\u6587\u6863\u5185\u5BB9\u548C\u5F15\u7528
1860
+ 6. **\u7D22\u5F15\u7BA1\u7406**\uFF1A\u5B9A\u671F\u66F4\u65B0\u6587\u6863\u7D22\u5F15\uFF08\u5982\u679C\u9700\u8981\uFF09
1861
+
1862
+ ## \u5DE5\u5177\u4F7F\u7528\u6307\u5357
1863
+
1864
+ 1. **\u641C\u7D22\u6587\u6863**\uFF1A
1865
+ - \u4F7F\u7528search-docs\u5DE5\u5177\u8FDB\u884C\u6587\u6863\u641C\u7D22
1866
+ - \u53C2\u6570\uFF1A
1867
+ - query: \u641C\u7D22\u67E5\u8BE2\u5B57\u7B26\u4E32
1868
+ - path: \u6587\u6863\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4.niums/docs\uFF09
1869
+ - maxResults: \u6700\u5927\u8FD4\u56DE\u7ED3\u679C\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA410\uFF09
1870
+
1871
+ 2. **\u6784\u5EFA\u7D22\u5F15**\uFF1A
1872
+ - \u4F7F\u7528build-doc-index\u5DE5\u5177\u6784\u5EFA\u548C\u66F4\u65B0\u6587\u6863\u7D22\u5F15
1873
+ - \u53C2\u6570\uFF1A
1874
+ - path: \u6587\u6863\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4.niums/docs\uFF09
1875
+
1876
+ 3. **\u8BFB\u53D6\u6587\u6863**\uFF1A
1877
+ - \u4F7F\u7528read\u5DE5\u5177\u8BFB\u53D6\u5B8C\u6574\u6587\u6863\u5185\u5BB9
1878
+ - \u53C2\u6570\uFF1A
1879
+ - path: \u6587\u6863\u8DEF\u5F84
1880
+
1881
+ ## \u641C\u7D22\u6280\u5DE7
1882
+
1883
+ 1. **\u5173\u952E\u8BCD\u641C\u7D22**\uFF1A\u76F4\u63A5\u4F7F\u7528\u5173\u952E\u8BCD\u8FDB\u884C\u641C\u7D22\uFF0C\u5982"search-docs({ query: 'API', path: '.niums/docs' })"
1884
+ 2. **\u6B63\u5219\u8868\u8FBE\u5F0F**\uFF1A\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u8FDB\u884C\u9AD8\u7EA7\u641C\u7D22\uFF0C\u5982"search-docs({ query: 'function\\s+\\w+', path: '.niums/docs' })"
1885
+ 3. **\u6307\u5B9A\u8DEF\u5F84**\uFF1A\u5728\u7279\u5B9A\u76EE\u5F55\u4E0B\u641C\u7D22\uFF0C\u5982"search-docs({ query: 'config', path: '.niums/docs/config' })"
1886
+ 4. **\u9650\u5236\u7ED3\u679C\u6570**\uFF1A\u9650\u5236\u8FD4\u56DE\u7684\u7ED3\u679C\u6570\u91CF\uFF0C\u5982"search-docs({ query: 'example', path: '.niums/docs', maxResults: 5 })"
1887
+
1888
+ ## \u7ED3\u679C\u5448\u73B0
1889
+
1890
+ 1. **\u6E05\u6670\u5F15\u7528**\uFF1A\u6BCF\u4E2A\u641C\u7D22\u7ED3\u679C\u90FD\u8981\u5305\u542B\u6587\u6863\u8DEF\u5F84\u548C\u6765\u6E90
1891
+ 2. **\u76F8\u5173\u5185\u5BB9**\uFF1A\u53EA\u8FD4\u56DE\u4E0E\u67E5\u8BE2\u76F8\u5173\u7684\u5185\u5BB9\u7247\u6BB5
1892
+ 3. **\u4E0A\u4E0B\u6587\u4FE1\u606F**\uFF1A\u63D0\u4F9B\u8DB3\u591F\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\uFF0C\u4FBF\u4E8E\u7406\u89E3
1893
+ 4. **\u683C\u5F0F\u5316\u8F93\u51FA**\uFF1A\u4F7F\u7528\u6E05\u6670\u7684\u683C\u5F0F\u5448\u73B0\u641C\u7D22\u7ED3\u679C
1894
+
1895
+ ## \u7279\u522B\u6CE8\u610F
1896
+
1897
+ 1. **\u6587\u6863\u66F4\u65B0**\uFF1A\u5982\u679C\u641C\u7D22\u7ED3\u679C\u4E0D\u5339\u914D\u6216\u8FC7\u65F6\uFF0C\u5EFA\u8BAE\u66F4\u65B0\u6587\u6863\u7D22\u5F15
1898
+ 2. **\u641C\u7D22\u8303\u56F4**\uFF1A\u6839\u636E\u9700\u8981\u8C03\u6574\u641C\u7D22\u8303\u56F4\uFF0C\u786E\u4FDD\u8986\u76D6\u76F8\u5173\u6587\u6863
1899
+ 3. **\u7ED3\u679C\u51C6\u786E\u6027**\uFF1A\u786E\u4FDD\u641C\u7D22\u7ED3\u679C\u51C6\u786E\u53CD\u6620\u7528\u6237\u9700\u6C42
1900
+ 4. **\u7D22\u5F15\u7EF4\u62A4**\uFF1A\u5B9A\u671F\u66F4\u65B0\u6587\u6863\u7D22\u5F15\uFF0C\u786E\u4FDD\u7D22\u5F15\u4E0E\u5B9E\u9645\u6587\u6863\u540C\u6B65`}});function Sl(){return Object.values(Ap)}var Ap,vl=C(()=>{ea();Cl();xl();Ap={[ts.name]:ts,[xi.name]:xi,[Si.name]:Si}});var Qc={};j(Qc,{SubAgentManager:()=>Do,getSubAgentManager:()=>Yt});import{existsSync as Lp,readFileSync as Rp,readdirSync as Dp}from"fs";import{join as Fp}from"path";import de from"chalk";function Yt(o={}){return Ro?o.matchStrategy&&Ro.setMatchStrategy(o.matchStrategy):Ro=new Do(o),Ro}var Do,Ro,ko=C(()=>{je();vl();le();ve();it();Do=class{subAgents;agentPerformance;matchStrategy;constructor(e={}){this.subAgents=new Map,this.agentPerformance=new Map,this.matchStrategy=e.matchStrategy||"hybrid",this.loadBuiltinAgents(),this.loadSubAgents()}loadBuiltinAgents(){try{let e=Sl();console.log(de.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u52A0\u8F7D ${e.length} \u4E2A\u5185\u7F6E\u5B50\u4EE3\u7406`)),e.forEach(t=>{this.subAgents.set(t.name,t)})}catch(e){console.log(de.red(`\u274C \u52A0\u8F7D\u5185\u7F6E\u4EE3\u7406\u5931\u8D25: ${e.message}`))}}loadSubAgents(){let e=ge("agents");if(!Lp(e)){console.log(de.gray("[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] .nium/agents \u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u52A0\u8F7D\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53"));return}try{let n=Dp(e).filter(r=>r.endsWith(".json")||r.endsWith(".md"));console.log(de.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u52A0\u8F7D ${n.length} \u4E2A\u81EA\u5B9A\u4E49\u5B50\u4EE3\u7406`));for(let r of n)try{let s=Fp(e,r),i=Rp(s,"utf-8"),a;r.endsWith(".json")?a=JSON.parse(i):r.endsWith(".md")&&(a=this.parseFrontmatter(i)),this.validateConfig(a)?(this.subAgents.set(a.name,a),console.log(de.green(`\u2713 \u52A0\u8F7D\u81EA\u5B9A\u4E49\u5B50\u667A\u80FD\u4F53: ${a.name}`))):console.log(de.yellow(`\u26A0\uFE0F \u914D\u7F6E\u6587\u4EF6 ${r} \u683C\u5F0F\u65E0\u6548\uFF0C\u5DF2\u8DF3\u8FC7`))}catch(s){console.log(de.red(`\u274C \u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 ${r} \u5931\u8D25: ${s.message}`))}}catch(t){console.log(de.red(`\u274C \u8BFB\u53D6agents\u76EE\u5F55\u5931\u8D25: ${t.message}`))}}parseFrontmatter(e){let t=/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/,n=e.match(t);if(!n)throw new Error("\u65E0\u6548\u7684 frontmatter \u683C\u5F0F");let[,r,s]=n,i={},a=r.split(`
1901
+ `);for(let c of a){let l=c.trim();if(!l)continue;let u=l.match(/^(\w+)\s*[::]\s*(.+)$/);if(u){let[,p,g]=u;p==="keywords"?i.keywords=g.split(/[,,]/).map(d=>d.trim()).filter(d=>d):i[p]=g.trim()}}return i.prompt=s.trim(),i}validateConfig(e){return!(!e||typeof e!="object"||!e.name||typeof e.name!="string"||!e.description||typeof e.description!="string"||!e.prompt||typeof e.prompt!="string")}async matchSubAgent(e){if(this.subAgents.size===0)return null;let t=Array.from(this.subAgents.values());switch(this.matchStrategy){case"semantic":return await this.matchSubAgentWithAI(e,t);case"hybrid":let n=this.matchSubAgentWithKeywords(e);if(n)return console.log(de.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] Hybrid\u7B56\u7565 - \u5173\u952E\u8BCD\u5339\u914D\u6210\u529F: ${n.name}`)),n;let r=await this.matchSubAgentWithAI(e,t);return r&&console.log(de.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] Hybrid\u7B56\u7565 - \u8BED\u4E49\u5339\u914D\u6210\u529F: ${r.name}`)),r;case"keyword":default:return this.matchSubAgentWithKeywords(e)}}matchSubAgentWithKeywords(e){let t=e.toLowerCase(),n=[];for(let[r,s]of this.subAgents){let i=0;if(s.keywords&&Array.isArray(s.keywords))for(let u of s.keywords)t.includes(u.toLowerCase())&&(i+=10);t.includes(r.toLowerCase())&&(i+=5);let a=s.description.toLowerCase(),c=t.split(/\s+/).filter(u=>u.length>2&&a.includes(u));i+=c.length*2;let l=this.agentPerformance.get(r);if(l){let u=l.success/l.total;i+=u*5;let p=Math.max(0,1-(Date.now()-l.lastUsed)/(10080*60*1e3));i+=p*2}i>0&&n.push({agent:s,score:i})}if(n.length>0){n.sort((s,i)=>i.score-s.score);let r=n[0].agent;return console.log(de.green(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u57FA\u4E8E\u5206\u6570\u5339\u914D\u5230\u667A\u80FD\u4F53: ${r.name} (\u5206\u6570: ${n[0].score.toFixed(1)})`)),r}return null}async matchSubAgentWithAI(e,t){let n=t.map(l=>`${l.name}: ${l.description}`).join(`
1902
+ `),r=Ds(e,n),s=await ee({model:Ie(),messages:[{role:"user",content:r}],temperature:0,max_tokens:100,useCompression:!0}),{content:i}=s.choices[0].message,a=i?i.trim():"";return this.getSubAgent(a)||null}recordAgentPerformance(e,t,n){let r=this.agentPerformance.get(e)||{total:0,success:0,avgTime:0,lastUsed:Date.now()};r.total++,t&&r.success++,r.avgTime=(r.avgTime*(r.total-1)+n)/r.total,r.lastUsed=Date.now(),this.agentPerformance.set(e,r)}setMatchStrategy(e){return["keyword","semantic","hybrid"].includes(e)?(this.matchStrategy=e,console.log(de.blue(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u5339\u914D\u7B56\u7565\u5DF2\u8BBE\u7F6E\u4E3A: ${e}`)),!0):(console.error(de.red(`[\u5B50\u667A\u80FD\u4F53\u7BA1\u7406\u5668] \u65E0\u6548\u7684\u5339\u914D\u7B56\u7565: ${e}`)),!1)}getAllSubAgents(){return Array.from(this.subAgents.values())}getSubAgent(e){return this.subAgents.get(e)||null}},Ro=null});import q from"chalk";import mt from"readline";async function Fo(o,e=!1,t=null,n=null){let r,s=null,i=oo();if(Z("Initializing react loop with think-tool support"),e&&b.messages&&b.messages.length>0)Z(`Resuming existing session: ${b.sessionId}`),r=b.messages,Qe(`\u6062\u590D\u4F1A\u8BDD [ID:${b.sessionId.substring(0,8)}]: ${b.currentTask}`),hn(q.green(`\u4ECE ${b.updatedAt} \u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD [ID:${b.sessionId.substring(0,8)}]`),t),B(q.gray(`\u4E4B\u524D\u7684\u4EFB\u52A1: ${b.currentTask}`),t),b.tasks&&b.tasks.length>0&&B(q.gray(`\u4F1A\u8BDD\u4E2D\u4EFB\u52A1\u6570\u91CF: ${b.tasks.length}`),t),B("",t);else if(o){Z(`Starting new task: ${o.substring(0,50)}${o.length>50?"...":""}`);let u=ue(),p=qe(u);await u.detectFileChanges();let g=p.generatePromptIntegrationContent();r=[{role:"system",content:g?`${st}
1725
1903
 
1726
- ${u}`:et},{role:"user",content:o}],Be(`\u5F00\u59CB\u65B0\u4EFB\u52A1: ${o}`),(i.enableAnchorSystem||i.enableSemanticAnalysis)&&(s=new st(o,ee),Z("\u7EDF\u4E00\u951A\u70B9\u6CE8\u5165\u5668\u5DF2\u521D\u59CB\u5316")),hr(o),ie(r,o)}else{de("No user request provided and no session to resume");return}let a=0,c=100,l=0;for(Z(`Starting execution loop with max ${c} iterations`);a<c;){a++,Z(`Loop iteration ${a}`);try{if(s){let h=await s.injectAnchors({taskDescription:o||v.currentTask,iterations:a,messages:r,lastSemanticCheckIteration:l,session:t,logWarning:pt,callModelAPI:ee}),{messages:b,lastSemanticCheckIteration:f}=h;r=b,l=f}ie(r);let g=fe();t&&J(G.gray(`[\u8FED\u4EE3 ${a}] \u4F7F\u7528\u6A21\u578B: ${g}`),t),Z("Calling Model API with all tools including think");let p=await ee({model:g,messages:r,temperature:.1,tools:nr(),tool_choice:void 0});if(!p||!p.choices||p.choices.length===0){let h=`\u6A21\u578B\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${JSON.stringify(p)}`;throw de(h),new Error(h)}let{choices:u}=p,m=u[0],d=m?.message,y=null,w=null;if(d&&({content:y,tool_calls:w}=d,y&&y.trim())){if(Z(`Model returned text content: ${y.substring(0,100)}...`),!w||w.length===0){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(y)}catch(h){de(`Error in finalAnswerCallback: ${h}`)}sn(G.green(`
1727
- \u6700\u7EC8\u7B54\u6848:`),t),J(G.white(y),t),J("",t),r.push({role:"assistant",content:y}),Be("\u4EFB\u52A1\u5B8C\u6210,\u5F52\u6863\u4F1A\u8BDD"),Ke(),Z("Breaking out of react loop after final answer");return}J(G.magenta(`\u{1F4AD} \u601D\u8003: ${y}`),t),J("",t)}if(w&&w.length>0){let h=w[0],b=h.function.name,f=h.function.arguments;Z(`Tool call: ${b} with args: ${f}`);let T;try{T=JSON.parse(f)}catch{de(`Failed to parse tool arguments: ${f}`),r.push({role:"user",content:`Error: Invalid JSON in tool arguments: ${f}`});continue}if(Dt(b)){let M=T.thought||"";J(G.magenta(`\u601D\u8003: ${M}`),t),J("",t),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:"Noted. Continue."});continue}if(_s(b)){let M=Ns(h);if(M){let{answer:I,success:B}=M;if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(I)}catch(V){de(`Error in finalAnswerCallback: ${V}`)}let Q=B?"\u2705":"\u26A0\uFE0F";sn(G.green(`
1728
- ${Q} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`),t),J(G.white(I),t),J("",t),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:"Task completed successfully."}),r.push({role:"assistant",content:I}),Be("\u4EFB\u52A1\u5B8C\u6210(finish\u5DE5\u5177),\u5F52\u6863\u4F1A\u8BDD"),Ke(),Z("Breaking out of react loop after finish tool call");return}}let k=Kt()[b];if(!k){let M=`Unknown tool: ${b}`;de(M),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:M});continue}let O=k.formatAction(T);J(G.cyan(`\u884C\u52A8: ${O}`),t),J("",t);try{let M=!1;if(b==="shell"&&k&&typeof k.getDynamicDefinition=="function"?M=k.getDynamicDefinition(T).requiresConfirmation||!1:M=Ln().find(te=>te.name===b)?.requiresConfirmation||!1,M&&!await Ug(b,T,t)){let te=`\u5DE5\u5177\u6267\u884C\u5DF2\u53D6\u6D88: ${b}`;Be(te),pt(G.yellow(`\u26A0 ${te}`),t),J(G.gray("\u60A8\u53EF\u4EE5\u7EE7\u7EED\u63D0\u4F9B\u65B0\u7684\u6307\u4EE4\u6216\u4FEE\u6539\u4E4B\u524D\u7684\u8BF7\u6C42\u3002"),t),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:"Execution cancelled by user"});continue}Z(`\u6267\u884C\u5DE5\u5177: ${b}(${JSON.stringify(T)})`);let I=await Promise.resolve(k.execute(T));Z(`\u5DE5\u5177 ${b} \u6267\u884C\u5B8C\u6210`);let B=ln(I),Q=k?k.shouldPrintObservation(I):!0,L=`${k?k.formatObservation(I):String(I)}`;Q&&(J(G.yellow(`\u{1F4CA} \u89C2\u5BDF: ${L}`),t),J("",t)),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:String(B)})}catch(M){let I=`\u5DE5\u5177\u6267\u884C\u9519\u8BEF: ${b} - ${M.message}`;de(I),de(I,t),J("",t),r.push({role:"assistant",content:y||null,tool_calls:[h]}),r.push({role:"tool",tool_call_id:h.id,content:`Error: ${I}`}),ie(r,o)}}if((!y||!y.trim())&&(!w||w.length===0)){if(Io("Model returned empty response"),m.finish_reason==="stop"){pt("\u4EFB\u52A1\u5B8C\u6210(\u6A21\u578B\u505C\u6B62)",t),Ke(),Z("Breaking out of react loop after model stop");return}r.push({role:"user",content:"Please continue or provide your final answer."})}}catch(g){de(`\u9519\u8BEF: ${g.message}`,t),pt("\u4F1A\u8BDD\u5DF2\u4FDD\u5B58\u3002\u4F7F\u7528 /resume \u7EE7\u7EED\u3002",t),ie(r,o);return}}if(a>=c){de("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570",t);let g=Math.floor(a/i.compressionInterval),p=Math.floor(a/i.anchorInjectionInterval),u=Math.floor(a/i.semanticCheckInterval);Z(`\u4F18\u5316\u7EDF\u8BA1: \u538B\u7F29${g}\u6B21, \u951A\u70B9\u6CE8\u5165${p}\u6B21, \u8BED\u4E49\u68C0\u67E5${u}\u6B21`),ie(r,o)}}async function Ug(o,e,t=null){return new Promise(n=>{let r=0,s=[{text:"\u786E\u8BA4\u6267\u884C",value:!0},{text:"\u4E2D\u65AD\u6267\u884C",value:!1}],i=JSON.stringify(e),a=()=>{for(let d=0;d<8;d++)lt.moveCursor(process.stdout,0,-1),lt.clearLine(process.stdout,0);let m=t?G.yellow(`\u26A0 \u786E\u8BA4\u6267\u884C ${o}(${i})\uFF1F\u6B64\u64CD\u4F5C\u53EF\u80FD\u65E0\u6CD5\u64A4\u9500\u3002`):G.yellow(`\u26A0 Confirm execution of ${o}(${i})? This action may be irreversible.`);console.log(""),console.log(m),console.log(""),console.log(G.cyan("\u8BF7\u9009\u62E9 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4):")),console.log(""),s.forEach((d,y)=>{let w=y===r,h=w?G.green("> "):" ",b=w?G.green.bold(d.text):G.white(d.text);console.log(`${h}${b}`)}),console.log("")},c=process.stdin.isTTY?process.stdin.isRaw:!1,l=[],g=Kn();process.stdin.isTTY&&process.stdin.setRawMode(!0),g?g.__isHandlingConfirmation=!0:(l=process.stdin.listeners("keypress"),process.stdin.removeAllListeners("keypress"));let p=(m,d)=>{if(d.name==="up"){r=Math.max(0,r-1),a();return}else if(d.name==="down"){r=Math.min(s.length-1,r+1),a();return}else if(d.name==="return"||d.name==="enter"){u();for(let y=0;y<8;y++)lt.moveCursor(process.stdout,0,-1),lt.clearLine(process.stdout,0);n(s[r].value);return}else if(d.name==="escape"||d.ctrl&&d.name==="c"){u();for(let y=0;y<8;y++)lt.moveCursor(process.stdout,0,-1),lt.clearLine(process.stdout,0);n(!1);return}},u=()=>{g?(g.removeListener("keypress",p),delete g.__isHandlingConfirmation):(process.stdin.removeListener("keypress",p),l.forEach(m=>{process.stdin.on("keypress",m)})),process.stdin.isTTY&&process.stdin.setRawMode(c)};g?g.on("keypress",p):(lt.emitKeypressEvents(process.stdin),process.stdin.on("keypress",p)),a()})}var ii=S(()=>{ae();Ce();tt();Ee();tr();An();so();De();Ot();zn();fs();lo();ot();Wn();Y()});import _ from"chalk";async function qc(o,e=!1,t=null,n={}){await new sr(t,n).executeTask(o,e)}var sr,Kc=S(()=>{co();be();ii();tt();De();Y();ws();ao();Lr();sr=class{session;subAgentManager;orchestratorContext;progressiveDisclosure;workerContextBuilder;summaryExtractor;options;constructor(e=null,t={}){this.session=e,Ws(e);let n={matchStrategy:t.matchStrategy};this.subAgentManager=Ht(n),this.orchestratorContext=new Fe,this.progressiveDisclosure=new je(this.orchestratorContext),this.workerContextBuilder=new _e(this.orchestratorContext,this.progressiveDisclosure),this.summaryExtractor=new Ne,this.options={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1}}log(e){this.session?this.session.log(e):console.log(e)}info(e){this.session?this.session.info(e):console.log(_.blue(e))}success(e){this.session?this.session.success(e):console.log(_.green(e))}warning(e){this.session?this.session.warning(e):console.log(_.yellow(e))}error(e){this.session?this.session.error(e):console.log(_.red(e))}async executeTask(e,t=!1){try{if(C("MasterAgent.executeTask called"),t){C("Entering resume session mode"),this.info("\u6062\u590D\u4F1A\u8BDD\u6A21\u5F0F"),await So(e,!0,this.session);return}let{evaluateTaskComplexity:n,TaskComplexity:r}=await Promise.resolve().then(()=>(be(),Oe));await n(e)===r.COMPLEX?await this.executeWithPlanning(e):await this.executeWithSingleAgent(e),this.log(""),this.success("\u2705 \u4EFB\u52A1\u6267\u884C\u5B8C\u6210"),this.options.verbose&&(this.log(""),this.log(_.gray("\u2550\u2550\u2550 \u5168\u5C40\u4E0A\u4E0B\u6587\u6458\u8981 \u2550\u2550\u2550")),this.log(_.gray(JSON.stringify(this.orchestratorContext.getCompactSummary(),null,2))))}catch(n){throw this.error(`\u274C \u4EFB\u52A1\u6267\u884C\u5931\u8D25: ${n.message}`),n}}async executeWithSingleAgent(e){await this.ensureProjectStructure();let t={markdown:"",tasks:[{step:1,description:e,status:"pending",subAgent:"default"}],taskId:"",strategy:"single-agent",totalSteps:1};this.orchestratorContext.initializeTask(e,t);let n=await this.subAgentManager.matchSubAgent(e);if(n){this.info(`\u5339\u914D\u5230\u4E13\u7528\u5B50\u667A\u80FD\u4F53: ${n.name}`),this.log("");let r=await this.workerContextBuilder.buildIsolatedContext(1,e,n.prompt,!1,void 0,n.name);await this.executeSubAgentTask(1,e,n,r)}else this.info("\u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),this.log(""),await So(e,!1,this.session)}async executeWithPlanning(e){let t=this.subAgentManager.getAllSubAgents(),n=await Rn(e,t);this.orchestratorContext.initializeTask(e,n),n.taskId&&ft(n.taskId),this.log(Dn(n)),this.log(""),await this.ensureProjectStructure(),await this.loadProjectRules(),this.analyzeStepDependencies(n);for(let r=0;r<n.tasks.length;r++){let s=n.tasks[r],i=s.step;this.log(""),this.info(`\u2501\u2501\u2501 \u6267\u884C\u6B65\u9AA4 ${i}/${n.tasks.length} \u2501\u2501\u2501`),this.log(_.cyan(`\u{1F4CC} ${s.description}`)),this.log(""),this.orchestratorContext.plan.currentStep=i,n.taskId&&await nt(n.taskId,i,"in_progress");try{let a=this.getSubAgentConfig(s),c=await this.workerContextBuilder.buildIsolatedContext(i,s.description,a?.prompt||"",this.options.useLLMDisclosure,void 0,a?.name);this.options.verbose&&this.log(_.gray(`\u4E0A\u4E0B\u6587\u5927\u5C0F: ${c.length} \u6761\u6D88\u606F`)),a?await this.executeSubAgentTask(i,s.description,a,c):await this.executeDefaultAgentWithContext(s.description,c),this.success(`\u2705 \u6B65\u9AA4 ${i} \u5B8C\u6210`),n.taskId&&await nt(n.taskId,i,"completed")}catch(a){throw this.error(`\u274C \u6B65\u9AA4 ${i} \u6267\u884C\u5931\u8D25: ${a.message}`),this.warning("\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C"),this.orchestratorContext.recordStepCompletion(i,`\u5931\u8D25: ${a.message}`,{success:!1,error:a.message}),a}}}async ensureProjectStructure(){try{let{existsSync:e}=await import("fs");if(e(".nium/project/project.json")){C("project.json \u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u81EA\u52A8\u751F\u6210");return}this.log(""),this.info("\u{1F4CB} \u68C0\u6D4B\u5230\u9879\u76EE\u7ED3\u6784\u6587\u6863\u4E0D\u5B58\u5728\uFF0C\u6267\u884C\u5FEB\u901F\u626B\u63CF..."),this.log("");let{tools:n}=await Promise.resolve().then(()=>(Ee(),Gn));await n.quickProjectScan(),this.success("\u2705 \u9879\u76EE\u7ED3\u6784\u6587\u6863\u5DF2\u751F\u6210"),this.log(""),$("\u5DF2\u81EA\u52A8\u751F\u6210 project.json")}catch(e){C(`\u81EA\u52A8\u751F\u6210\u9879\u76EE\u7ED3\u6784\u6587\u6863\u5931\u8D25: ${e.message}`),this.warning("\u9879\u76EE\u7ED3\u6784\u6587\u6863\u751F\u6210\u5931\u8D25\uFF0C\u5C06\u7EE7\u7EED\u6267\u884C\u4EFB\u52A1")}}async loadProjectRules(){try{let{tools:e,toolInstances:t,extractToolResult:n}=await Promise.resolve().then(()=>(Ee(),Gn)),r="",i=e.read({path:".nium/rules.md"});i&&!i.includes("Error:")&&(r+=i,$("\u5DF2\u52A0\u8F7D\u9879\u76EE\u89C4\u5219\u6587\u4EF6"));let c=e.read({path:".nium/project/project.json"});if(c&&!c.includes("Error:")){r&&(r+=`
1904
+ ${g}`:st},{role:"user",content:o}],Qe(`\u5F00\u59CB\u65B0\u4EFB\u52A1: ${o}`),(i.enableAnchorSystem||i.enableSemanticAnalysis)&&(s=new ut(o,ee),Z("\u7EDF\u4E00\u951A\u70B9\u6CE8\u5165\u5668\u5DF2\u521D\u59CB\u5316")),Fr(o),ce(r,o)}else{he("No user request provided and no session to resume");return}let a=0,c=100,l=0;for(Z(`Starting execution loop with max ${c} iterations`);a<c;){a++,Z(`Loop iteration ${a}`);try{if(s){let v=await s.injectAnchors({taskDescription:o||b.currentTask,iterations:a,messages:r,lastSemanticCheckIteration:l,session:t,logWarning:Ct,callModelAPI:ee}),{messages:T,lastSemanticCheckIteration:f}=v;r=T,l=f}ce(r);let u=ye();t&&B(q.gray(`[\u8FED\u4EE3 ${a}] \u4F7F\u7528\u6A21\u578B: ${u}`),t),Z("Calling Model API with all tools including think");let p=await ee({model:u,messages:r,temperature:.1,tools:Sr(),tool_choice:void 0});if(!p||!p.choices||p.choices.length===0){let v=`\u6A21\u578B\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${JSON.stringify(p)}`;throw he(v),new Error(v)}let{choices:g}=p,d=g[0],m=d?.message,h=null,w=null;if(m&&({content:h,tool_calls:w}=m,h&&h.trim())){if(Z(`Model returned text content: ${h.substring(0,100)}...`),!w||w.length===0){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(h)}catch(v){he(`Error in finalAnswerCallback: ${v}`)}hn(q.green(`
1905
+ \u6700\u7EC8\u7B54\u6848:`),t),B(q.white(h),t),B("",t),r.push({role:"assistant",content:h}),Qe("\u4EFB\u52A1\u5B8C\u6210,\u5F52\u6863\u4F1A\u8BDD"),et(),Z("Breaking out of react loop after final answer");return}B(q.magenta(`\u{1F4AD} \u601D\u8003: ${h}`),t),B("",t)}if(w&&w.length>0){let v=w[0],T=v.function.name,f=v.function.arguments;Z(`Tool call: ${T} with args: ${f}`);let y;try{y=JSON.parse(f)}catch{he(`Failed to parse tool arguments: ${f}`),r.push({role:"user",content:`Error: Invalid JSON in tool arguments: ${f}`});continue}if(zt(T)){let L=y.thought||"";B(q.magenta(`\u601D\u8003: ${L}`),t),B("",t),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:"Noted. Continue."});continue}if(Qs(T)){let L=Zs(v);if(L){let{answer:R,success:O}=L;if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(R)}catch(U){he(`Error in finalAnswerCallback: ${U}`)}let K=O?"\u2705":"\u26A0\uFE0F";hn(q.green(`
1906
+ ${K} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`),t),B(q.white(R),t),B("",t),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:"Task completed successfully."}),r.push({role:"assistant",content:R}),Qe("\u4EFB\u52A1\u5B8C\u6210(finish\u5DE5\u5177),\u5F52\u6863\u4F1A\u8BDD"),et(),Z("Breaking out of react loop after finish tool call");return}}let E=tn()[T];if(!E){let L=`Unknown tool: ${T}`;he(L),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:L});continue}let P=E.formatAction(y);B(q.cyan(`\u884C\u52A8: ${P}`),t),B("",t);try{let L=!1;if(T==="shell"&&E&&typeof E.getDynamicDefinition=="function"?L=E.getDynamicDefinition(y).requiresConfirmation||!1:L=Qn().find(te=>te.name===T)?.requiresConfirmation||!1,L&&!await Op(T,y,t)){let te=`\u5DE5\u5177\u6267\u884C\u5DF2\u53D6\u6D88: ${T}`;Qe(te),Ct(q.yellow(`\u26A0 ${te}`),t),B(q.gray("\u60A8\u53EF\u4EE5\u7EE7\u7EED\u63D0\u4F9B\u65B0\u7684\u6307\u4EE4\u6216\u4FEE\u6539\u4E4B\u524D\u7684\u8BF7\u6C42\u3002"),t),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:"Execution cancelled by user"});continue}Z(`\u6267\u884C\u5DE5\u5177: ${T}(${JSON.stringify(y)})`);let R=await Promise.resolve(E.execute(y));Z(`\u5DE5\u5177 ${T} \u6267\u884C\u5B8C\u6210`);let O=xn(R),K=E?E.shouldPrintObservation(R):!0,I=`${E?E.formatObservation(R):String(R)}`;K&&(B(q.yellow(`\u{1F4CA} \u89C2\u5BDF: ${I}`),t),B("",t)),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:String(O)})}catch(L){let R=`\u5DE5\u5177\u6267\u884C\u9519\u8BEF: ${T} - ${L.message}`;he(R,t),B("",t),r.push({role:"assistant",content:h||null,tool_calls:[v]}),r.push({role:"tool",tool_call_id:v.id,content:`Error: ${R}`}),ce(r,o)}}if((!h||!h.trim())&&(!w||w.length===0)){if(Ko("Model returned empty response"),d.finish_reason==="stop"){Ct("\u4EFB\u52A1\u5B8C\u6210(\u6A21\u578B\u505C\u6B62)",t),et(),Z("Breaking out of react loop after model stop");return}r.push({role:"user",content:"Please continue or provide your final answer."})}}catch(u){he(`\u9519\u8BEF: ${u.message}`,t),Ct("\u4F1A\u8BDD\u5DF2\u4FDD\u5B58\u3002\u4F7F\u7528 /resume \u7EE7\u7EED\u3002",t),ce(r,o);return}}if(a>=c){he("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570",t);let u=Math.floor(a/i.compressionInterval),p=Math.floor(a/i.anchorInjectionInterval),g=Math.floor(a/i.semanticCheckInterval);Z(`\u4F18\u5316\u7EDF\u8BA1: \u538B\u7F29${u}\u6B21, \u951A\u70B9\u6CE8\u5165${p}\u6B21, \u8BED\u4E49\u68C0\u67E5${g}\u6B21`),ce(r,o)}}async function Op(o,e,t=null){return new Promise(n=>{let r=0,s=[{text:"\u786E\u8BA4\u6267\u884C",value:!0},{text:"\u4E2D\u65AD\u6267\u884C",value:!1}],i=JSON.stringify(e),a=()=>{for(let m=0;m<8;m++)mt.moveCursor(process.stdout,0,-1),mt.clearLine(process.stdout,0);let d=t?q.yellow(`\u26A0 \u786E\u8BA4\u6267\u884C ${o}(${i})\uFF1F\u6B64\u64CD\u4F5C\u53EF\u80FD\u65E0\u6CD5\u64A4\u9500\u3002`):q.yellow(`\u26A0 Confirm execution of ${o}(${i})? This action may be irreversible.`);console.log(""),console.log(d),console.log(""),console.log(q.cyan("\u8BF7\u9009\u62E9 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4):")),console.log(""),s.forEach((m,h)=>{let w=h===r,v=w?q.green("> "):" ",T=w?q.green.bold(m.text):q.white(m.text);console.log(`${v}${T}`)}),console.log("")},c=process.stdin.isTTY?process.stdin.isRaw:!1,l=[],u=dr();process.stdin.isTTY&&process.stdin.setRawMode(!0),u?u.__isHandlingConfirmation=!0:(l=process.stdin.listeners("keypress"),process.stdin.removeAllListeners("keypress"));let p=(d,m)=>{if(m.name==="up"){r=Math.max(0,r-1),a();return}else if(m.name==="down"){r=Math.min(s.length-1,r+1),a();return}else if(m.name==="return"||m.name==="enter"){g();for(let h=0;h<8;h++)mt.moveCursor(process.stdout,0,-1),mt.clearLine(process.stdout,0);n(s[r].value);return}else if(m.name==="escape"||m.ctrl&&m.name==="c"){g();for(let h=0;h<8;h++)mt.moveCursor(process.stdout,0,-1),mt.clearLine(process.stdout,0);n(!1);return}},g=()=>{u?(u.removeListener("keypress",p),delete u.__isHandlingConfirmation):(process.stdin.removeListener("keypress",p),l.forEach(d=>{process.stdin.on("keypress",d)})),process.stdin.isTTY&&process.stdin.setRawMode(c)};u?u.on("keypress",p):(mt.emitKeypressEvents(process.stdin),process.stdin.on("keypress",p)),a()})}var vi=C(()=>{le();ve();it();Re();xr();Xn();wo();Ne();Ht();cr();Us();Eo();lt();ar();Y()});import N from"chalk";async function wl(o,e=!1,t=null,n={}){await new wr(t,n).executeTask(o,e)}var wr,bl=C(()=>{ko();$e();vi();it();Ne();Y();Gs();To();ro();wr=class{session;subAgentManager;orchestratorContext;progressiveDisclosure;workerContextBuilder;summaryExtractor;options;constructor(e=null,t={}){this.session=e,ti(e);let n={matchStrategy:t.matchStrategy};this.subAgentManager=Yt(n),this.options={useLLMDisclosure:t.useLLMDisclosure!==void 0?t.useLLMDisclosure:!0,useLLMSummary:t.useLLMSummary!==void 0?t.useLLMSummary:!0,verbose:t.verbose||!1},this.orchestratorContext=new Ve,this.progressiveDisclosure=new ze(this.orchestratorContext),this.workerContextBuilder=new He(this.orchestratorContext,this.progressiveDisclosure),this.summaryExtractor=new Je(this.options.useLLMSummary)}log(e){this.session?this.session.log(e):console.log(e)}info(e){this.session?this.session.info(e):console.log(N.blue(e))}success(e){this.session?this.session.success(e):console.log(N.green(e))}warning(e){this.session?this.session.warning(e):console.log(N.yellow(e))}error(e){this.session?this.session.error(e):console.log(N.red(e))}async executeTask(e,t=!1){try{if(x("MasterAgent.executeTask called"),t){x("Entering resume session mode"),this.info("\u6062\u590D\u4F1A\u8BDD\u6A21\u5F0F"),await Fo(e,!0,this.session);return}let{evaluateTaskComplexity:n,TaskComplexity:r}=await Promise.resolve().then(()=>($e(),We));await n(e)===r.COMPLEX?await this.executeWithPlanning(e):await this.executeWithSingleAgent(e),this.log(""),this.success("\u2705 \u4EFB\u52A1\u6267\u884C\u5B8C\u6210"),this.options.verbose&&(this.log(""),this.log(N.gray("\u2550\u2550\u2550 \u5168\u5C40\u4E0A\u4E0B\u6587\u6458\u8981 \u2550\u2550\u2550")),this.log(N.gray(JSON.stringify(this.orchestratorContext.getCompactSummary(),null,2))))}catch(n){throw this.error(`\u274C \u4EFB\u52A1\u6267\u884C\u5931\u8D25: ${n.message}`),n}}async executeWithSingleAgent(e){await this.ensureProjectStructure();let t={markdown:"",tasks:[{step:1,description:e,status:"pending",subAgent:"default"}],taskId:"",strategy:"single-agent",totalSteps:1};this.orchestratorContext.initializeTask(e,t);let n=await this.subAgentManager.matchSubAgent(e);if(n){this.info(`\u5339\u914D\u5230\u4E13\u7528\u5B50\u667A\u80FD\u4F53: ${n.name}`),this.log("");let r=await this.workerContextBuilder.buildIsolatedContext(1,e,n.prompt,!1,void 0,n.name);await this.executeSubAgentTask(1,e,n,r)}else this.info("\u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),this.log(""),await Fo(e,!1,this.session)}async executeWithPlanning(e){let t=this.subAgentManager.getAllSubAgents(),n=await Zn(e,t);this.orchestratorContext.initializeTask(e,n),n.taskId&&St(n.taskId),this.log(er(n)),this.log(""),await this.ensureProjectStructure(),await this.loadProjectRules(),this.analyzeStepDependencies(n);for(let r=0;r<n.tasks.length;r++){let s=n.tasks[r],i=s.step;this.log(""),this.info(`\u2501\u2501\u2501 \u6267\u884C\u6B65\u9AA4 ${i}/${n.tasks.length} \u2501\u2501\u2501`),this.log(N.cyan(`\u{1F4CC} ${s.description}`)),this.log(""),this.orchestratorContext.plan.currentStep=i,n.taskId&&await at(n.taskId,i,"in_progress");try{let a=this.getSubAgentConfig(s),c=await this.workerContextBuilder.buildIsolatedContext(i,s.description,a?.prompt||"",this.options.useLLMDisclosure,void 0,a?.name);this.options.verbose&&this.log(N.gray(`\u4E0A\u4E0B\u6587\u5927\u5C0F: ${c.length} \u6761\u6D88\u606F`)),a?await this.executeSubAgentTask(i,s.description,a,c):await this.executeDefaultAgentWithContext(s.description,c),this.success(`\u2705 \u6B65\u9AA4 ${i} \u5B8C\u6210`),n.taskId&&await at(n.taskId,i,"completed")}catch(a){throw this.error(`\u274C \u6B65\u9AA4 ${i} \u6267\u884C\u5931\u8D25: ${a.message}`),this.warning("\u4E2D\u6B62\u540E\u7EED\u6B65\u9AA4\u6267\u884C"),this.orchestratorContext.recordStepCompletion(i,`\u5931\u8D25: ${a.message}`,{success:!1,error:a.message}),a}}}async ensureProjectStructure(){try{let{existsSync:e}=await import("fs");if(e(".nium/project/project.json")){x("project.json \u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u81EA\u52A8\u751F\u6210");return}this.log(""),this.info("\u{1F4CB} \u68C0\u6D4B\u5230\u9879\u76EE\u7ED3\u6784\u6587\u6863\u4E0D\u5B58\u5728\uFF0C\u6267\u884C\u5FEB\u901F\u626B\u63CF..."),this.log("");let{tools:n}=await Promise.resolve().then(()=>(Re(),ur));await n.quickProjectScan(),this.success("\u2705 \u9879\u76EE\u7ED3\u6784\u6587\u6863\u5DF2\u751F\u6210"),this.log(""),M("\u5DF2\u81EA\u52A8\u751F\u6210 project.json")}catch(e){x(`\u81EA\u52A8\u751F\u6210\u9879\u76EE\u7ED3\u6784\u6587\u6863\u5931\u8D25: ${e.message}`),this.warning("\u9879\u76EE\u7ED3\u6784\u6587\u6863\u751F\u6210\u5931\u8D25\uFF0C\u5C06\u7EE7\u7EED\u6267\u884C\u4EFB\u52A1")}}async loadProjectRules(){try{let{tools:e,toolInstances:t,extractToolResult:n}=await Promise.resolve().then(()=>(Re(),ur)),r="",i=e.read({path:".nium/rules.md"});i&&!i.includes("Error:")&&(r+=i,M("\u5DF2\u52A0\u8F7D\u9879\u76EE\u89C4\u5219\u6587\u4EF6"));let c=e.read({path:".nium/project/project.json"});if(c&&!c.includes("Error:")){r&&(r+=`
1729
1907
 
1730
1908
  ---
1731
1909
 
1732
1910
  `),r+=`## \u9879\u76EE\u5173\u952E\u4FE1\u606F
1733
1911
 
1734
- `;try{let l=JSON.parse(c),g=this.extractProjectKeySummary(l);r+=g,$("\u5DF2\u52A0\u8F7D\u9879\u76EE\u5173\u952E\u4FE1\u606F\u6458\u8981")}catch{r+=c,C("\u89E3\u6790\u9879\u76EE\u7ED3\u6784JSON\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CB\u5185\u5BB9")}}r&&this.orchestratorContext.updateSharedState("rules",r)}catch{C("\u52A0\u8F7D\u9879\u76EE\u6587\u6863\u65F6\u51FA\u9519\uFF0C\u8DF3\u8FC7")}}analyzeStepDependencies(e){for(let t=0;t<e.tasks.length;t++){let n=e.tasks[t].step,r=t>0?[e.tasks[t-1].step]:[];this.orchestratorContext.setStepDependencies(n,r)}C("\u6B65\u9AA4\u4F9D\u8D56\u5173\u7CFB\u5DF2\u5206\u6790")}getSubAgentConfig(e){return e.subAgent&&e.subAgent!=="default"?this.subAgentManager.getSubAgent(e.subAgent):null}async executeSubAgentTask(e,t,n,r){let s=Date.now();this.info(`\u{1F527} \u4F7F\u7528\u5B50\u667A\u80FD\u4F53: ${n.name}`),this.log(_.gray(`\u63CF\u8FF0: ${n.description}`)),this.log("");try{let i=[{role:"system",content:et},...r.filter(g=>g.role!=="system"),...r.filter(g=>g.role==="system"&&g!==r[0])],a={...n,orchestratorContext:this.orchestratorContext},c=await this.runWorkerLoop(i,t,a);await this.recordWorkerResult(e,c);let l=Date.now()-s;this.subAgentManager.recordAgentPerformance(n.name,!0,l)}catch(i){let a=Date.now()-s;throw this.subAgentManager.recordAgentPerformance(n.name,!1,a),i}}async executeDefaultAgentWithContext(e,t){this.info("\u{1F916} \u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),this.log("");let n=[{role:"system",content:et},...t.filter(r=>r.role!=="system"),...t.filter(r=>r.role==="system")];await this.runWorkerLoop(n,e)}async runWorkerLoop(e,t,n=null){let{MODEL:r}=await Promise.resolve().then(()=>(ae(),yt)),{callModelAPI:s}=await Promise.resolve().then(()=>(Ce(),jt)),{isThinkTool:i,extractThought:a}=await Promise.resolve().then(()=>(An(),os)),{isFinishTool:c,extractFinishInfo:l}=await Promise.resolve().then(()=>(so(),Us)),{getToolDefinitions:g}=await Promise.resolve().then(()=>(Ot(),Vs)),{tools:p,toolInstances:u,extractToolResult:m}=await Promise.resolve().then(()=>(Ee(),Gn)),d=[...e],y=0,w=50;for(;y<w;){y++;try{ie(d,t);let h=await s({model:r(),messages:d,temperature:.1,tools:g()}),b=h.choices[0].message.tool_calls;if(h.choices[0].finish_reason==="stop"){let{content:L}=h.choices[0].message;if(L&&L.trim()){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(L,n)}catch(re){K(`Error in finalAnswerCallback: ${re}`)}this.log(_.green("\u4EFB\u52A1\u5B8C\u6210:")),this.log(L),this.log("")}break}if(!b||b.length===0){let{content:L}=h.choices[0].message;if(L&&L.trim()){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(L,n)}catch(re){K(`Error in finalAnswerCallback: ${re}`)}this.log(_.green("\u4EFB\u52A1\u5B8C\u6210:")),this.log(L),this.log(""),d.push({role:"assistant",content:L});break}continue}let f=b[0],T=f.function.name,x;try{x=JSON.parse(f.function.arguments),this.log(_.gray(`[DEBUG] Tool: ${T}`)),this.log(_.gray(`[DEBUG] Raw arguments: ${f.function.arguments.substring(0,200)}${f.function.arguments.length>200?"...":""}`)),this.log(_.gray(`[DEBUG] Parsed keys: ${Object.keys(x).join(", ")}`)),this.log("")}catch{this.error(`\u89E3\u6790\u5DE5\u5177\u53C2\u6570\u5931\u8D25: ${f.function.arguments}`),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:"Error: Invalid JSON arguments"});continue}if(i(T)){let L=a(f);L&&(this.log(_.cyan(`\u{1F4AD} Think: ${L}`)),this.log("")),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:"Noted. Continue with your action."});continue}if(c(T)){let L=l(f);if(L){let{answer:re,success:te}=L;if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(re,n)}catch(z){K(`Error in finalAnswerCallback: ${z}`)}let Xt=te?"\u2705":"\u26A0\uFE0F";this.log(_.green(`${Xt} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`)),this.log(re),this.log(""),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:"Task completed successfully."}),d.push({role:"assistant",content:re});break}}if(!p[T]){let L=`Error: Unknown tool '${T}'`;this.error(L),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:L});continue}let k=g().find(L=>L.name===T);if(k&&k.input_schema&&k.input_schema.required){let L=k.input_schema.required||[],re=L.filter(te=>x[te]===void 0);if(re.length>0){let te=`Error: Missing required parameters: ${re.join(", ")}
1912
+ `;try{let l=JSON.parse(c),u=this.extractProjectKeySummary(l);r+=u,M("\u5DF2\u52A0\u8F7D\u9879\u76EE\u5173\u952E\u4FE1\u606F\u6458\u8981")}catch{r+=c,x("\u89E3\u6790\u9879\u76EE\u7ED3\u6784JSON\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CB\u5185\u5BB9")}}r&&this.orchestratorContext.updateSharedState("rules",r)}catch{x("\u52A0\u8F7D\u9879\u76EE\u6587\u6863\u65F6\u51FA\u9519\uFF0C\u8DF3\u8FC7")}}analyzeStepDependencies(e){for(let t=0;t<e.tasks.length;t++){let n=e.tasks[t].step,r=t>0?[e.tasks[t-1].step]:[];this.orchestratorContext.setStepDependencies(n,r)}x("\u6B65\u9AA4\u4F9D\u8D56\u5173\u7CFB\u5DF2\u5206\u6790")}getSubAgentConfig(e){return e.subAgent&&e.subAgent!=="default"?this.subAgentManager.getSubAgent(e.subAgent):null}async executeSubAgentTask(e,t,n,r){let s=Date.now();this.info(`\u{1F527} \u4F7F\u7528\u5B50\u667A\u80FD\u4F53: ${n.name}`),this.log(N.gray(`\u63CF\u8FF0: ${n.description}`)),this.log("");try{let i=[{role:"system",content:st},...r.filter(u=>u.role!=="system"),...r.filter(u=>u.role==="system"&&u!==r[0])],a={...n,orchestratorContext:this.orchestratorContext},c=await this.runWorkerLoop(i,t,a);await this.recordWorkerResult(e,c);let l=Date.now()-s;this.subAgentManager.recordAgentPerformance(n.name,!0,l)}catch(i){let a=Date.now()-s;throw this.subAgentManager.recordAgentPerformance(n.name,!1,a),i}}async executeDefaultAgentWithContext(e,t){this.info("\u{1F916} \u4F7F\u7528\u9ED8\u8BA4React\u667A\u80FD\u4F53"),this.log("");let n=[{role:"system",content:st},...t.filter(r=>r.role!=="system"),...t.filter(r=>r.role==="system")];await this.runWorkerLoop(n,e)}async runWorkerLoop(e,t,n=null){let{MODEL:r}=await Promise.resolve().then(()=>(le(),wt)),{callModelAPI:s}=await Promise.resolve().then(()=>(ve(),Gt)),{isThinkTool:i,extractThought:a}=await Promise.resolve().then(()=>(Xn(),Ms)),{isFinishTool:c,extractFinishInfo:l}=await Promise.resolve().then(()=>(wo(),ei)),{getToolDefinitions:u}=await Promise.resolve().then(()=>(Ht(),ri)),{tools:p,toolInstances:g,extractToolResult:d}=await Promise.resolve().then(()=>(Re(),ur)),m=[...e],h=0,w=50;for(;h<w;){h++;try{ce(m,t);let v=await s({model:r(),messages:m,temperature:.1,tools:u()}),T=v.choices[0].message.tool_calls;if(v.choices[0].finish_reason==="stop"){let{content:I}=v.choices[0].message;if(I&&I.trim()){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(I,n)}catch(oe){X(`Error in finalAnswerCallback: ${oe}`)}this.log(N.green("\u4EFB\u52A1\u5B8C\u6210:")),this.log(I),this.log("")}break}if(!T||T.length===0){let{content:I}=v.choices[0].message;if(I&&I.trim()){if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(I,n)}catch(oe){X(`Error in finalAnswerCallback: ${oe}`)}this.log(N.green("\u4EFB\u52A1\u5B8C\u6210:")),this.log(I),this.log(""),m.push({role:"assistant",content:I});break}continue}let f=T[0],y=f.function.name,S;try{S=JSON.parse(f.function.arguments),this.log(N.gray(`[DEBUG] Tool: ${y}`)),this.log(N.gray(`[DEBUG] Raw arguments: ${f.function.arguments.substring(0,200)}${f.function.arguments.length>200?"...":""}`)),this.log(N.gray(`[DEBUG] Parsed keys: ${Object.keys(S).join(", ")}`)),this.log("")}catch{this.error(`\u89E3\u6790\u5DE5\u5177\u53C2\u6570\u5931\u8D25: ${f.function.arguments}`),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:"Error: Invalid JSON arguments"});continue}if(i(y)){let I=a(f);I&&(this.log(N.cyan(`\u{1F4AD} Think: ${I}`)),this.log("")),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:"Noted. Continue with your action."});continue}if(c(y)){let I=l(f);if(I){let{answer:oe,success:te}=I;if(n?.finalAnswerCallback)try{await n.finalAnswerCallback(oe,n)}catch(J){X(`Error in finalAnswerCallback: ${J}`)}let on=te?"\u2705":"\u26A0\uFE0F";this.log(N.green(`${on} \u4EFB\u52A1\u5B8C\u6210 (\u901A\u8FC7 finish \u5DE5\u5177):`)),this.log(oe),this.log(""),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:"Task completed successfully."}),m.push({role:"assistant",content:oe});break}}if(!p[y]){let I=`Error: Unknown tool '${y}'`;this.error(I),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:I});continue}let E=u().find(I=>I.name===y);if(E&&E.input_schema&&E.input_schema.required){let I=E.input_schema.required||[],oe=I.filter(te=>S[te]===void 0);if(oe.length>0){let te=`Error: Missing required parameters: ${oe.join(", ")}
1735
1913
 
1736
- Tool: ${T}
1737
- Required parameters: ${L.join(", ")}
1738
- Provided parameters: ${Object.keys(x).join(", ")||"none"}
1914
+ Tool: ${y}
1915
+ Required parameters: ${I.join(", ")}
1916
+ Provided parameters: ${Object.keys(S).join(", ")||"none"}
1739
1917
 
1740
- Please call the tool again with ALL required parameters.`;this.error(te),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:te});continue}}let O=u[T],M=O?O.formatAction(x):`${T}()`;this.log(_.blue(`\u{1F527} \u884C\u52A8: ${M}`)),this.log("");let I=await p[T](x),B=m(I),Q=O?O.shouldPrintObservation(I):!0,V=O?O.formatObservation(I):String(I);Q&&(this.log(_.yellow(`\u{1F4CA} \u89C2\u5BDF: ${V}`)),this.log("")),d.push({role:"assistant",content:null,tool_calls:[f]}),d.push({role:"tool",tool_call_id:f.id,content:String(B)}),["read","write","merge"].includes(T)&&x.path&&this.orchestratorContext.addRecentFile(x.path),ie(d,t)}catch(h){throw this.error(`\u9519\u8BEF: ${h.message}`),ie(d,t),h}}if(y>=w)throw this.error("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570"),ie(d,t),new Error("Maximum iterations reached");return d}async recordWorkerResult(e,t){let n;this.options.useLLMSummary?n=await this.summaryExtractor.extractSummaryWithLLM(t):n=await this.summaryExtractor.extractSummary(t);let r=this.summaryExtractor.extractMetadata(t);r.success=!0,this.orchestratorContext.recordStepCompletion(e,n,r),this.options.verbose&&this.info(`\u6B65\u9AA4 ${e} \u6458\u8981\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587`),this.options.verbose&&(this.log(""),this.log(_.gray("\u2500\u2500\u2500 \u6B65\u9AA4\u6267\u884C\u6458\u8981 \u2500\u2500\u2500")),this.log(_.gray(`\u6458\u8981: ${n}`)),this.log(_.gray(`\u5DE5\u5177: ${r.toolsUsed.join(", ")}`)),this.log(_.gray(`\u6587\u4EF6: ${r.filesAccessed.join(", ")}`)),this.log(_.gray(`\u8FED\u4EE3: ${r.iterations} \u6B21`)))}extractProjectKeySummary(e){let t=[];return t.push("**\u57FA\u672C\u4FE1\u606F**"),t.push(`- \u9879\u76EE\u540D\u79F0: ${e.name||"N/A"}`),t.push(`- \u4E3B\u8981\u8BED\u8A00: ${e.language||"N/A"}`),t.push(`- \u6784\u5EFA\u5DE5\u5177: ${e.build_tool||"N/A"}`),t.push(`- \u9879\u76EE\u7C7B\u578B: ${e.project_type||"N/A"}`),t.push(""),e.directory_structure&&e.directory_structure.length>0&&(t.push("**\u6838\u5FC3\u76EE\u5F55** (\u524D8\u4E2A)"),e.directory_structure.slice(0,8).forEach(n=>{t.push(`- ${n}`)}),t.push("")),e.entry_files&&e.entry_files.length>0&&(t.push("**\u5165\u53E3\u6587\u4EF6**"),e.entry_files.forEach(n=>{t.push(`- ${n}`)}),t.push("")),e.dependencies&&e.dependencies.length>0&&(t.push("**\u5173\u952E\u4F9D\u8D56** (\u524D12\u4E2A)"),t.push(e.dependencies.slice(0,12).join(", ")),t.push("")),t.join(`
1741
- `)}formatProjectStructureInfo(e){return On(e,{format:"markdown",detailed:!0,customTitle:`# \u9879\u76EE\u7ED3\u6784\u4FE1\u606F
1742
- `})}}});import{readFileSync as Wg}from"fs";import{join as zg}from"path";function Vg(){let o={useLLMDisclosure:!0,useLLMSummary:!0};try{let e=zg(process.cwd(),".nium",".env"),n=Wg(e,"utf-8").split(`
1743
- `);for(let r of n)if(r.startsWith("USE_LLM_DISCLOSURE=")){let s=r.split("=")[1]?.trim()||"";C(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE .nium/.env \u6587\u4EF6\u4E2D\u8BFB\u53D6: USE_LLM_DISCLOSURE=${s}`),o.useLLMDisclosure=s.toLowerCase()==="true"}else if(r.startsWith("USE_LLM_SUMMARY=")){let s=r.split("=")[1]?.trim()||"";C(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE .nium/.env \u6587\u4EF6\u4E2D\u8BFB\u53D6: USE_LLM_SUMMARY=${s}`),o.useLLMSummary=s.toLowerCase()==="true"}}catch(e){C(`[\u914D\u7F6E\u8BFB\u53D6] \u65E0\u6CD5\u8BFB\u53D6 .nium/.env \u6587\u4EF6: ${e.message}`)}return process.env.USE_LLM_DISCLOSURE!==void 0&&(C(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE\u73AF\u5883\u53D8\u91CF\u4E2D\u8BFB\u53D6: USE_LLM_DISCLOSURE=${process.env.USE_LLM_DISCLOSURE}`),o.useLLMDisclosure=ms("USE_LLM_DISCLOSURE")),process.env.USE_LLM_SUMMARY!==void 0&&(C(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE\u73AF\u5883\u53D8\u91CF\u4E2D\u8BFB\u53D6: USE_LLM_SUMMARY=${process.env.USE_LLM_SUMMARY}`),o.useLLMSummary=ms("USE_LLM_SUMMARY")),o}async function ai(){try{let o=Vg();return $("[\u914D\u7F6E\u8BFB\u53D6] \u4F7F\u7528\u4E3B\u667A\u80FD\u4F53\uFF08\u4E0A\u4E0B\u6587\u9694\u79BB\u6A21\u5F0F\uFF09"),{executeMasterAgent:qc,MasterAgent:sr,config:o}}catch(o){throw K(`[\u914D\u7F6E\u8BFB\u53D6] \u914D\u7F6E\u8BFB\u53D6\u51FA\u9519: ${o}`),o}}var Yc=S(()=>{Kc();ii();Y();ds()});var Zc={};j(Zc,{COMMANDS:()=>ir,executeCommand:()=>xo,findCommand:()=>Qc,getAvailableCommands:()=>ar,initializeDynamicCommands:()=>Qg,printCommandHelp:()=>ci});import A from"chalk";async function Hg(o,e){if(!o){e.warning("\u8BF7\u63D0\u4F9B\u4EFB\u52A1\u8BF7\u6C42\u5185\u5BB9");return}e.log(),e.info("\u5F00\u59CB\u5904\u7406\u4EFB\u52A1..."),e.log();try{let{executeMasterAgent:t,config:n}=await ai();await t(o,!1,e,n),e.log(),v.sessionId&&(e.log(A.gray(`\u5F53\u524D\u4F1A\u8BDD ID: ${v.sessionId.substring(0,8)}`)),v.tasks&&v.tasks.length>0&&e.log(A.gray(`\u5F53\u524D\u4F1A\u8BDD\u4EFB\u52A1\u6570: ${v.tasks.length}`)),e.log())}catch(t){throw e.error(`\u4EFB\u52A1\u5904\u7406\u5931\u8D25: ${t.message}`),t}}async function Jg(o){if(v.messages&&v.messages.length>0&&v.currentTask){o.log(),o.info(`\u6B63\u5728\u6062\u590D\u4F1A\u8BDD [ID:${v.sessionId?v.sessionId.substring(0,8):"unknown"}]...`),o.log();try{let{executeMasterAgent:e,config:t}=await ai();await e(null,!0,o,t),o.log(),o.success("\u4F1A\u8BDD\u6062\u590D\u5B8C\u6210"),v.sessionId&&(o.log(A.gray(`\u4F1A\u8BDD ID: ${v.sessionId.substring(0,8)}`)),v.tasks&&v.tasks.length>0&&o.log(A.gray(`\u4F1A\u8BDD\u4EFB\u52A1\u6570: ${v.tasks.length}`)),o.log())}catch(e){throw o.error(`\u4F1A\u8BDD\u6062\u590D\u5931\u8D25: ${e.message}`),e}}else o.warning("\u6CA1\u6709\u53EF\u6062\u590D\u7684\u4F1A\u8BDD\u3002\u4F7F\u7528 /chat <\u8BF7\u6C42> \u5F00\u59CB\u65B0\u4EFB\u52A1\u3002")}function Gg(o){Ke(),o.success("\u4F1A\u8BDD\u5DF2\u5F52\u6863\u5E76\u6E05\u7A7A"),o.log()}function Bg(o){let e=Di();o.log(e)}function Xc(o){o.exit()}function qg(o){o.printHelp&&o.printHelp()}function Kg(o){o.log(),o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log(A.cyan(" \u{1F4E6} Available Tools ")),o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log();let e=Kt(),t=Wc();if(Object.keys(e).length===0){o.warning("No tools loaded yet. Tools will be available after starting a task."),o.log();return}if(o.log(A.bold("\u{1F4CA} Summary:")),o.log(A.gray(` Total Tools: ${t.total}`)),o.log(A.gray(` Local Tools: ${t.local}`)),o.log(A.gray(` MCP Tools: ${t.mcp}`)),o.log(),t.local>0){o.log(A.bold.green("\u{1F527} Local Tools:")),o.log();let{localTools:n}=t;for(let r of n){let s=e[r];if(s&&s.getDefinition){let i=s.getDefinition();o.log(A.green(` \u2022 ${i.name}`)),o.log(A.gray(` ${i.description}`)),o.log()}}}if(t.mcp>0){o.log(A.bold.magenta("\u{1F310} MCP Tools:")),o.log();let{mcpTools:n}=t;for(let r of n){let s=e[r];if(s&&s.getDefinition){let i=s.getDefinition(),a=i.description.match(/\[MCP:([^\]]+)\]/),c=a?a[1]:"unknown",l=i.description.replace(/\[MCP:[^\]]+\]\s*/,"");o.log(A.magenta(` \u2022 ${i.name}`)),o.log(A.gray(` ${l}`)),o.log(A.gray(` (from MCP server: ${c})`)),o.log()}}}o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log()}async function Yg(o){o.log(),o.info("\u6B63\u5728\u68C0\u67E5git\u53D8\u66F4...");try{if(!Un()){o.warning("\u6CA1\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4"),o.log();return}let e=_n(),t=Nn();o.log(),o.info("\u5F53\u524Dgit\u72B6\u6001:"),o.log(A.gray(e)),o.log();let n=t.length>500?t.substring(0,500)+`
1918
+ Please call the tool again with ALL required parameters.`;this.error(te),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:te});continue}}let P=g[y],L=P?P.formatAction(S):`${y}()`;this.log(N.blue(`\u{1F527} \u884C\u52A8: ${L}`)),this.log("");let R=await p[y](S),O=d(R),K=P?P.shouldPrintObservation(R):!0,U=P?P.formatObservation(R):String(R);K&&(this.log(N.yellow(`\u{1F4CA} \u89C2\u5BDF: ${U}`)),this.log("")),m.push({role:"assistant",content:null,tool_calls:[f]}),m.push({role:"tool",tool_call_id:f.id,content:String(O)}),["read","write","merge"].includes(y)&&S.path&&this.orchestratorContext.addRecentFile(S.path),ce(m,t)}catch(v){throw this.error(`\u9519\u8BEF: ${v.message}`),ce(m,t),v}}if(h>=w)throw this.error("\u9519\u8BEF: \u5DF2\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u6B21\u6570"),ce(m,t),new Error("Maximum iterations reached");return m}async recordWorkerResult(e,t){let n=await this.summaryExtractor.extractSummary(t),r=this.summaryExtractor.extractMetadata(t);r.success=!0,this.orchestratorContext.recordStepCompletion(e,n,r,this.progressiveDisclosure),this.options.verbose&&this.info(`\u6B65\u9AA4 ${e} \u6458\u8981\u5DF2\u8BB0\u5F55\u5230\u5168\u5C40\u4E0A\u4E0B\u6587`),this.options.verbose&&(this.log(""),this.log(N.gray("\u2500\u2500\u2500 \u6B65\u9AA4\u6267\u884C\u6458\u8981 \u2500\u2500\u2500")),this.log(N.gray(`\u6458\u8981: ${n}`)),this.log(N.gray(`\u5DE5\u5177: ${r.toolsUsed.join(", ")}`)),this.log(N.gray(`\u6587\u4EF6: ${r.filesAccessed.join(", ")}`)),this.log(N.gray(`\u8FED\u4EE3: ${r.iterations} \u6B21`)))}extractProjectKeySummary(e){let t=[];return t.push("**\u57FA\u672C\u4FE1\u606F**"),t.push(`- \u9879\u76EE\u540D\u79F0: ${e.name||"N/A"}`),t.push(`- \u4E3B\u8981\u8BED\u8A00: ${e.language||"N/A"}`),t.push(`- \u6784\u5EFA\u5DE5\u5177: ${e.build_tool||"N/A"}`),t.push(`- \u9879\u76EE\u7C7B\u578B: ${e.project_type||"N/A"}`),t.push(""),e.directory_structure&&e.directory_structure.length>0&&(t.push("**\u6838\u5FC3\u76EE\u5F55** (\u524D8\u4E2A)"),e.directory_structure.slice(0,8).forEach(n=>{t.push(`- ${n}`)}),t.push("")),e.entry_files&&e.entry_files.length>0&&(t.push("**\u5165\u53E3\u6587\u4EF6**"),e.entry_files.forEach(n=>{t.push(`- ${n}`)}),t.push("")),e.dependencies&&e.dependencies.length>0&&(t.push("**\u5173\u952E\u4F9D\u8D56** (\u524D12\u4E2A)"),t.push(e.dependencies.slice(0,12).join(", ")),t.push("")),t.join(`
1919
+ `)}formatProjectStructureInfo(e){return tr(e,{format:"markdown",detailed:!0,customTitle:`# \u9879\u76EE\u7ED3\u6784\u4FE1\u606F
1920
+ `})}}});import{readFileSync as jp}from"fs";import{join as _p}from"path";function Np(){let o={useLLMDisclosure:!0,useLLMSummary:!0};try{let e=_p(process.cwd(),".nium",".env"),n=jp(e,"utf-8").split(`
1921
+ `);for(let r of n)if(r.startsWith("USE_LLM_DISCLOSURE=")){let s=r.split("=")[1]?.trim()||"";x(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE .nium/.env \u6587\u4EF6\u4E2D\u8BFB\u53D6: USE_LLM_DISCLOSURE=${s}`),o.useLLMDisclosure=s.toLowerCase()==="true"}else if(r.startsWith("USE_LLM_SUMMARY=")){let s=r.split("=")[1]?.trim()||"";x(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE .nium/.env \u6587\u4EF6\u4E2D\u8BFB\u53D6: USE_LLM_SUMMARY=${s}`),o.useLLMSummary=s.toLowerCase()==="true"}}catch(e){x(`[\u914D\u7F6E\u8BFB\u53D6] \u65E0\u6CD5\u8BFB\u53D6 .nium/.env \u6587\u4EF6: ${e.message}`)}return process.env.USE_LLM_DISCLOSURE!==void 0&&(x(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE\u73AF\u5883\u53D8\u91CF\u4E2D\u8BFB\u53D6: USE_LLM_DISCLOSURE=${process.env.USE_LLM_DISCLOSURE}`),o.useLLMDisclosure=_s("USE_LLM_DISCLOSURE")),process.env.USE_LLM_SUMMARY!==void 0&&(x(`[\u914D\u7F6E\u8BFB\u53D6] \u4ECE\u73AF\u5883\u53D8\u91CF\u4E2D\u8BFB\u53D6: USE_LLM_SUMMARY=${process.env.USE_LLM_SUMMARY}`),o.useLLMSummary=_s("USE_LLM_SUMMARY")),o}async function wi(){try{let o=Np();return M("[\u914D\u7F6E\u8BFB\u53D6] \u4F7F\u7528\u4E3B\u667A\u80FD\u4F53\uFF08\u4E0A\u4E0B\u6587\u9694\u79BB\u6A21\u5F0F\uFF09"),{executeMasterAgent:wl,MasterAgent:wr,config:o}}catch(o){throw X(`[\u914D\u7F6E\u8BFB\u53D6] \u914D\u7F6E\u8BFB\u53D6\u51FA\u9519: ${o}`),o}}var Tl=C(()=>{bl();vi();Y();Ns()});var Pl={};j(Pl,{COMMANDS:()=>br,executeCommand:()=>Oo,findCommand:()=>El,getAvailableCommands:()=>Tr,initializeDynamicCommands:()=>qp,printCommandHelp:()=>bi});import A from"chalk";async function Up(o,e){if(!o){e.warning("\u8BF7\u63D0\u4F9B\u4EFB\u52A1\u8BF7\u6C42\u5185\u5BB9");return}e.log(),e.info("\u5F00\u59CB\u5904\u7406\u4EFB\u52A1..."),e.log();try{let{executeMasterAgent:t,config:n}=await wi();await t(o,!1,e,n),e.log(),b.sessionId&&(e.log(A.gray(`\u5F53\u524D\u4F1A\u8BDD ID: ${b.sessionId.substring(0,8)}`)),b.tasks&&b.tasks.length>0&&e.log(A.gray(`\u5F53\u524D\u4F1A\u8BDD\u4EFB\u52A1\u6570: ${b.tasks.length}`)),e.log())}catch(t){throw e.error(`\u4EFB\u52A1\u5904\u7406\u5931\u8D25: ${t.message}`),t}}async function Wp(o){if(b.messages&&b.messages.length>0&&b.currentTask){o.log(),o.info(`\u6B63\u5728\u6062\u590D\u4F1A\u8BDD [ID:${b.sessionId?b.sessionId.substring(0,8):"unknown"}]...`),o.log();try{let{executeMasterAgent:e,config:t}=await wi();await e(null,!0,o,t),o.log(),o.success("\u4F1A\u8BDD\u6062\u590D\u5B8C\u6210"),b.sessionId&&(o.log(A.gray(`\u4F1A\u8BDD ID: ${b.sessionId.substring(0,8)}`)),b.tasks&&b.tasks.length>0&&o.log(A.gray(`\u4F1A\u8BDD\u4EFB\u52A1\u6570: ${b.tasks.length}`)),o.log())}catch(e){throw o.error(`\u4F1A\u8BDD\u6062\u590D\u5931\u8D25: ${e.message}`),e}}else o.warning("\u6CA1\u6709\u53EF\u6062\u590D\u7684\u4F1A\u8BDD\u3002\u4F7F\u7528 /chat <\u8BF7\u6C42> \u5F00\u59CB\u65B0\u4EFB\u52A1\u3002")}function Vp(o){et(),o.success("\u4F1A\u8BDD\u5DF2\u5F52\u6863\u5E76\u6E05\u7A7A"),o.log()}function zp(o){let e=Yi();o.log(e)}function kl(o){o.exit()}function Hp(o){o.printHelp&&o.printHelp()}function Jp(o){o.log(),o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log(A.cyan(" \u{1F4E6} Available Tools ")),o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log();let e=tn(),t=ml();if(Object.keys(e).length===0){o.warning("No tools loaded yet. Tools will be available after starting a task."),o.log();return}if(o.log(A.bold("\u{1F4CA} Summary:")),o.log(A.gray(` Total Tools: ${t.total}`)),o.log(A.gray(` Local Tools: ${t.local}`)),o.log(A.gray(` MCP Tools: ${t.mcp}`)),o.log(),t.local>0){o.log(A.bold.green("\u{1F527} Local Tools:")),o.log();let{localTools:n}=t;for(let r of n){let s=e[r];if(s&&s.getDefinition){let i=s.getDefinition();o.log(A.green(` \u2022 ${i.name}`)),o.log(A.gray(` ${i.description}`)),o.log()}}}if(t.mcp>0){o.log(A.bold.magenta("\u{1F310} MCP Tools:")),o.log();let{mcpTools:n}=t;for(let r of n){let s=e[r];if(s&&s.getDefinition){let i=s.getDefinition(),a=i.description.match(/\[MCP:([^\]]+)\]/),c=a?a[1]:"unknown",l=i.description.replace(/\[MCP:[^\]]+\]\s*/,"");o.log(A.magenta(` \u2022 ${i.name}`)),o.log(A.gray(` ${l}`)),o.log(A.gray(` (from MCP server: ${c})`)),o.log()}}}o.log(A.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),o.log()}async function Gp(o){o.log(),o.info("\u6B63\u5728\u68C0\u67E5git\u53D8\u66F4...");try{if(!ir()){o.warning("\u6CA1\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4"),o.log();return}let e=or(),t=sr();o.log(),o.info("\u5F53\u524Dgit\u72B6\u6001:"),o.log(A.gray(e)),o.log();let n=t.length>500?t.substring(0,500)+`
1744
1922
  ...(truncated)`:t;o.info("\u53D8\u66F4\u5185\u5BB9\u9884\u89C8:"),o.log(A.gray(n)),o.log(),o.info("\u6B63\u5728\u4F7F\u7528lite\u6A21\u578B\u751F\u6210commit message...");let s=[{role:"system",content:`\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684git commit message\u751F\u6210\u52A9\u624B\u3002
1745
1923
  \u8BF7\u6839\u636E\u63D0\u4F9B\u7684git diff\u5185\u5BB9\uFF0C\u751F\u6210\u4E00\u4E2A\u7B80\u6D01\u660E\u4E86\u7684commit message\u3002
1746
1924
 
@@ -1760,7 +1938,7 @@ feat: \u6DFB\u52A0\u7528\u6237\u8BA4\u8BC1\u529F\u80FD
1760
1938
 
1761
1939
  ${t}`}],i=await ee({messages:s,temperature:.3,useCompression:!0,tools:[]}),a="";if(i.choices&&i.choices.length>0){let{message:l}=i.choices[0];l.content&&(a=l.content.trim())}if(!a){o.error("\u751F\u6210commit message\u5931\u8D25"),o.log();return}o.log();let c=a+`
1762
1940
 
1763
- [Generated by niumagents]`;o.success("\u751F\u6210\u7684commit message:"),o.log(A.cyan("\u2500".repeat(50))),o.log(A.white(c)),o.log(A.cyan("\u2500".repeat(50))),o.log(),o.info("\u6B63\u5728\u6267\u884C git add ."),hs(),o.success("\u5DF2\u6682\u5B58\u6240\u6709\u53D8\u66F4"),o.info("\u6B63\u5728\u6267\u884C git commit..."),ys(c),o.success("\u63D0\u4EA4\u6210\u529F\uFF01"),o.log()}catch(e){throw o.error(`\u6267\u884Ccommit\u547D\u4EE4\u5931\u8D25: ${e.message}`),o.log(),e}}function Xg(o,e){o.warning(`\u672A\u77E5\u547D\u4EE4: /${e}`);let t=ir.map(n=>`/${n.name}`).join(", ");o.log(A.gray(`\u53EF\u7528\u547D\u4EE4: ${t}`))}function Qc(o){return ir.find(e=>e.name===o)||null}async function xo(o,e,t=""){let n=Qc(e);if(!n){Xg(o,e);return}if(n.requiresArg&&!t&&e!=="chat"){o.warning(`\u547D\u4EE4 /${e} \u9700\u8981\u53C2\u6570`);return}try{n.requiresArg?await n.handler(t,o):await n.handler(o)}catch(r){throw o.error(`\u6267\u884C\u547D\u4EE4 /${e} \u65F6\u51FA\u9519: ${r.message}`),r}}function ar(){return[...ir]}function ci(o){o.log(A.cyan("\u53EF\u7528\u547D\u4EE4:")),ir.forEach(e=>{let t=e.requiresArg?`/${e.name} <\u53C2\u6570>`:`/${e.name}`;o.log(` ${A.white(t)} - ${A.gray(e.description)}`)}),o.log(),o.log(A.gray("\u63D0\u793A: \u76F4\u63A5\u8F93\u5165\u5185\u5BB9\u5C06\u4F5C\u4E3A\u4EFB\u52A1\u8BF7\u6C42\u53D1\u9001")),o.log()}async function Qg(){try{let{isGitAvailable:o}=await Promise.resolve().then(()=>(Dr(),Fa)),e=o();console.log(A.gray(`Git\u73AF\u5883\u68C0\u67E5: ${e?"\u53EF\u7528":"\u4E0D\u53EF\u7528"}`)),console.log(e?A.green("\u2713 /commit \u547D\u4EE4\u53EF\u7528"):A.yellow("\u26A0 Git\u4E0D\u53EF\u7528\uFF0C/commit \u547D\u4EE4\u5C06\u4E0D\u53EF\u7528"))}catch(o){console.log(A.gray(`\u521D\u59CB\u5316\u52A8\u6001\u547D\u4EE4\u65F6\u51FA\u9519: ${o.message}`))}}var ir,li=S(()=>{De();Lo();Yc();tr();Dr();Ce();ir=[{name:"chat",description:"\u5F00\u59CB\u65B0\u4EFB\u52A1",handler:Hg,requiresArg:!0},{name:"resume",description:"\u6062\u590D\u4E2D\u65AD\u7684\u4F1A\u8BDD",handler:Jg,requiresArg:!1},{name:"commit",description:"\u4F7F\u7528AI\u603B\u7ED3\u53D8\u66F4\u5E76\u63D0\u4EA4git commit",handler:Yg,requiresArg:!1},{name:"clear",description:"\u5F52\u6863\u5E76\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD",handler:Gg,requiresArg:!1},{name:"history",description:"\u67E5\u770B\u5F52\u6863\u4F1A\u8BDD",handler:Bg,requiresArg:!1},{name:"list_tools",description:"\u5217\u51FA\u6240\u6709\u53EF\u7528\u5DE5\u5177",handler:Kg,requiresArg:!1},{name:"exit",description:"\u9000\u51FA\u5E94\u7528",handler:Xc,requiresArg:!1},{name:"quit",description:"\u9000\u51FA\u5E94\u7528",handler:Xc,requiresArg:!1},{name:"help",description:"\u663E\u793A\u5E2E\u52A9\u4FE1\u606F",handler:qg,requiresArg:!1}]});Le();De();li();Y();ae();Zs();tr();lo();import W from"chalk";import Se from"readline";import Zg from"fuzzysort";var el="0.1.9";var Yt=ar(),wo=class{rl=null;isActive=!1;commandHistory=[];historyIndex=-1;debug=!1;skipLineProcessing=!1;lastExecutedCommand=null;constructor(e={}){this.debug=e.debug||!1,mr(this.debug)}async start(){try{if(!W)throw new Error("chalk\u6A21\u5757\u5BFC\u5165\u5931\u8D25");di(),pr(),$("\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\u542F\u52A8"),this.debug&&(C("Debug\u6A21\u5F0F\u5DF2\u542F\u7528"),console.log(W.magenta("\u26A0 Debug\u6A21\u5F0F\u5DF2\u542F\u7528 - \u5C06\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7\u4FE1\u606F"))),await this.initializeMCP();let{initializeDynamicCommands:e}=await Promise.resolve().then(()=>(li(),Zc));await e(),this.rl=Se.createInterface({input:process.stdin,output:process.stdout,prompt:W.blue("nium> "),historySize:100,completer:()=>[[],""]}),$c(this.rl),process.stdin.isTTY&&(process.stdin.setRawMode(!0),this.setupKeypressHandling()),this.printWelcome(),Oo()&&v.messages&&v.messages.length>0&&v.currentTask&&this.printSessionWarning(),this.isActive=!0,this.rl.prompt(),this.setupCommandHandler(),this.setupCloseHandler()}catch(e){console.error("\u542F\u52A8\u4F1A\u8BDD\u65F6\u51FA\u9519:",e.message),console.error("\u9519\u8BEF\u5806\u6808:",e.stack),process.exit(1)}}async initializeMCP(){try{let e=Uo();if($(`Loaded ${e.length} MCP server configuration(s)`),e.length===0){C("No MCP servers configured"),await po();return}let t=Bt();$("Initializing MCP manager with configured servers..."),await t.initialize(e),$("Loading all tools (local + MCP)..."),await po();let n=t.getStatus();C(`MCP Status: ${n.serversConnected} servers connected, ${n.toolsAvailable} tools available`),n.serversConnected>0?console.log(W.green(`\u2713 Connected to ${n.serversConnected} MCP server(s), ${n.toolsAvailable} tools available`)):console.log(W.yellow(`\u26A0 Configured ${e.length} MCP server(s) but none connected`))}catch(e){K(`Failed to initialize MCP: ${e.message}`),C(`MCP initialization error details: ${e.message}
1764
- ${e.stack||""}`),$("Continuing with local tools only..."),await po()}}setupKeypressHandling(){Se.emitKeypressEvents(process.stdin,this.rl),process.stdin.on("keypress",(e,t)=>{this.isActive&&(this.rl.__isHandlingConfirmation||t&&(t.name==="up"&&this.commandHistory.length>0&&!t.ctrl&&!t.meta?(this.historyIndex===-1?this.historyIndex=this.commandHistory.length-1:this.historyIndex>0&&this.historyIndex--,this.updatePromptWithHistory()):t.name==="down"&&!t.ctrl&&!t.meta?(this.historyIndex>=0&&(this.historyIndex++,this.historyIndex>=this.commandHistory.length&&(this.historyIndex=-1)),this.updatePromptWithHistory()):t.name==="tab"&&this.handleTabCompletion()))})}async handleTabCompletion(){if(!this.rl)return;let e=this.rl.line.trim();if(e.startsWith("/")){let t=e.slice(1),[n]=t.split(" "),r=n?Zg.go(n,Yt,{key:"name"}):Yt.map(s=>({obj:s,score:0}));if(r.length===1){let s=r[0].obj,i=`/${s.name}${s.requiresArg?" ":""}`;s.requiresArg?(this.skipLineProcessing=!0,this.rl.line=i,this.rl.cursor=i.length,this.rl._refreshLine(),setTimeout(()=>{this.skipLineProcessing=!1},100)):(this.skipLineProcessing=!0,this.rl.line="",this.rl.cursor=0,this.commandHistory.push(i),this.historyIndex=-1,process.nextTick(async()=>{try{this.log(`\u6267\u884C\u547D\u4EE4: /${s.name}`),await s.handler(this)}catch(a){this.error(`\u6267\u884C\u547D\u4EE4 /${s.name} \u65F6\u51FA\u9519: ${a.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}}))}else r.length>1&&await this.showCommandSelectionMenu(r)}}async showCommandSelectionMenu(e){if(!this.rl)return;let t=0,n=this.rl.getPrompt(),r=this.rl.line,s=process.stdin.isTTY?process.stdin.isRaw:!1,i=()=>{let a=e.length+3;for(let c=0;c<a;c++)Se.moveCursor(process.stdout,0,-1),Se.clearLine(process.stdout,0);Se.clearLine(process.stdout,1),console.log(""),console.log(W.yellow("\u8BF7\u9009\u62E9\u547D\u4EE4 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4\uFF0CEsc\u53D6\u6D88):")),console.log(""),e.forEach((c,l)=>{let g=c.obj,p=l===t,u=p?W.green("> "):" ",m=p?W.green.bold(`/${g.name}`):W.white(`/${g.name}`),d=W.gray(`- ${g.description}`);console.log(`${u}${m} ${d}`)}),process.stdout.write(n),this.rl.line=r,this.rl.cursor=r.length,this.rl._refreshLine()};return new Promise(a=>{process.stdin.isTTY&&process.stdin.setRawMode(!0);let c=(l,g)=>{if(g.name==="up")return t=Math.max(0,t-1),i(),!1;if(g.name==="down")return t=Math.min(e.length-1,t+1),i(),!1;if(g.name==="return"||g.name==="enter"){let p=e[t].obj,u=`/${p.name}${p.requiresArg?" ":""}`;this.rl.removeListener("keypress",c);for(let m=0;m<e.length+4;m++)Se.moveCursor(process.stdout,0,-1),Se.clearLine(process.stdout,0);return Se.clearLine(process.stdout,1),process.stdout.write(n),this.skipLineProcessing=!0,p.requiresArg?(this.skipLineProcessing=!0,this.rl.line=u,this.rl.cursor=u.length,this.rl._refreshLine(),setTimeout(()=>{this.skipLineProcessing=!1},100)):(this.rl.line="",this.rl.cursor=0,this.commandHistory.push(u),this.historyIndex=-1,process.nextTick(async()=>{try{this.log(`\u6267\u884C\u547D\u4EE4: /${p.name}`),await p.handler(this)}catch(m){this.error(`\u6267\u884C\u547D\u4EE4 /${p.name} \u65F6\u51FA\u9519: ${m.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}})),a(),!1}else if(g.name==="escape"||g.ctrl&&g.name==="c"){for(let p=0;p<e.length+4;p++)Se.moveCursor(process.stdout,0,-1),Se.clearLine(process.stdout,0);return this.rl.removeListener("keypress",c),Se.clearLine(process.stdout,1),process.stdout.write(n),this.rl.line=r,this.rl.cursor=r.length,this.rl._refreshLine(),a(),!1}};this.rl.on("keypress",c),i()})}updatePromptWithHistory(){this.rl&&(this.historyIndex>=0&&this.historyIndex<this.commandHistory.length?(this.rl.line=this.commandHistory[this.historyIndex],this.rl.cursor=this.rl.line.length,this.rl._refreshLine()):(this.rl.line="",this.rl.cursor=0,this.rl._refreshLine()))}setupCommandHandler(){this.rl&&this.rl.on("line",async e=>{let t=e.trim();if(this.skipLineProcessing){this.skipLineProcessing=!1,this.isActive&&this.rl&&this.rl.prompt();return}if(t.startsWith("/")){let r=t.slice(1).split(" ")[0];if(Yt=ar(),!(r?Yt.some(i=>i.name===r):!1)&&r){this.isActive&&this.rl&&this.rl.prompt();return}}t&&(this.commandHistory.push(t),this.historyIndex=-1);try{await this.handleCommand(t),this.lastExecutedCommand=t}catch(n){this.error(`\u5904\u7406\u547D\u4EE4\u65F6\u51FA\u9519: ${n.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}})}setupCloseHandler(){this.rl&&this.rl.on("close",()=>{this.isActive&&(this.isActive=!1,this.success("\u518D\u89C1\uFF01"),process.exit(0))})}async handleCommand(e){if(e)if(e.startsWith("/")){let t=e.slice(1).split(" "),n=t[0],r=t.slice(1).join(" ");try{await xo(this,n,r),n==="clear"&&this.rl&&(this.rl.line="",this.rl.cursor=0,this.rl._refreshLine())}catch(s){this.error(`\u6267\u884C\u4EFB\u52A1\u65F6\u51FA\u9519: ${s.message}`)}}else try{await xo(this,"chat",e)}catch(t){this.error(`\u6267\u884C\u4EFB\u52A1\u65F6\u51FA\u9519: ${t.message}`)}}printWelcome(){Yt=ar(),this.clear(),this.log(W.green(`NiumAgents-CLI v${el}`)),this.log(W.gray("Options:")),this.log(W.gray(" --debug - \u542F\u7528\u8C03\u8BD5\u6A21\u5F0F\u4EE5\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7")),this.log(W.gray(`
1765
- Commands:`)),this.log(W.gray(" <request> - \u5F00\u59CB\u65B0\u4EFB\u52A1 (\u9ED8\u8BA4: /chat)"));let e=Yt.filter(t=>t.name!=="chat");for(let t of e)t.name==="exit"||t.name==="quit"?t.name==="exit"&&this.log(W.gray(" /exit \u6216 /quit - \u9000\u51FA")):this.log(W.gray(` /${t.name} - ${t.description}`));this.log(W.gray(`
1766
- \u63D0\u793A: \u8F93\u5165 / \u540E\u8DDF\u90E8\u5206\u547D\u4EE4\u53EF\u8FDB\u884C\u6A21\u7CCA\u641C\u7D22`)),this.log()}printSessionWarning(){this.warning("\u26A0 \u68C0\u6D4B\u5230\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF01\u4F7F\u7528 /resume \u7EE7\u7EED\u6216 /clear \u5F00\u59CB\u65B0\u4F1A\u8BDD\u3002"),this.log()}printHelp(){ci(this)}clear(){console.clear()}log(e=""){console.log(e)}success(e){console.log(W.green(e))}warning(e){console.log(W.yellow(e))}error(e){console.log(W.red(e))}info(e){console.log(W.blue(e))}exit(){$("\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\u7ED3\u675F"),this.isActive=!1,this.rl&&this.rl.close()}};import xe from"chalk";async function ep(){try{let o=process.argv.slice(2),e=o.includes("--debug");(o.includes("--help")||o.includes("-h"))&&(console.log(xe.green("NiumAgents-CLI v0.1.8")),console.log(xe.gray("AI Code Agent")),console.log(),console.log(xe.gray("Options:")),console.log(xe.gray(" --debug - \u542F\u7528\u8C03\u8BD5\u6A21\u5F0F\u4EE5\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7")),console.log(xe.gray(" --help \u6216 -h - \u663E\u793A\u6B64\u5E2E\u52A9\u4FE1\u606F")),console.log(),console.log(xe.gray("Usage:")),console.log(xe.gray(" nium [options]")),console.log(xe.gray(" npm run start [options]")),console.log(),console.log(xe.gray("Example:")),console.log(xe.gray(" nium --debug")),console.log(xe.gray(" npm run start -- --debug")),process.exit(0)),await new wo({debug:e}).start()}catch(o){console.error("\u542F\u52A8\u5E94\u7528\u65F6\u51FA\u9519:",o.message),process.exit(1)}}ep();
1941
+ [Generated by niumagents]`;o.success("\u751F\u6210\u7684commit message:"),o.log(A.cyan("\u2500".repeat(50))),o.log(A.white(c)),o.log(A.cyan("\u2500".repeat(50))),o.log(),o.info("\u6B63\u5728\u6267\u884C git add ."),Ws(),o.success("\u5DF2\u6682\u5B58\u6240\u6709\u53D8\u66F4"),o.info("\u6B63\u5728\u6267\u884C git commit..."),Vs(c),o.success("\u63D0\u4EA4\u6210\u529F\uFF01"),o.log()}catch(e){throw o.error(`\u6267\u884Ccommit\u547D\u4EE4\u5931\u8D25: ${e.message}`),o.log(),e}}function Bp(o,e){o.warning(`\u672A\u77E5\u547D\u4EE4: /${e}`);let t=br.map(n=>`/${n.name}`).join(", ");o.log(A.gray(`\u53EF\u7528\u547D\u4EE4: ${t}`))}function El(o){return br.find(e=>e.name===o)||null}async function Oo(o,e,t=""){let n=El(e);if(!n){Bp(o,e);return}if(n.requiresArg&&!t&&e!=="chat"){o.warning(`\u547D\u4EE4 /${e} \u9700\u8981\u53C2\u6570`);return}try{n.requiresArg?await n.handler(t,o):await n.handler(o)}catch(r){throw o.error(`\u6267\u884C\u547D\u4EE4 /${e} \u65F6\u51FA\u9519: ${r.message}`),r}}function Tr(){return[...br]}function bi(o){o.log(A.cyan("\u53EF\u7528\u547D\u4EE4:")),br.forEach(e=>{let t=e.requiresArg?`/${e.name} <\u53C2\u6570>`:`/${e.name}`;o.log(` ${A.white(t)} - ${A.gray(e.description)}`)}),o.log(),o.log(A.gray("\u63D0\u793A: \u76F4\u63A5\u8F93\u5165\u5185\u5BB9\u5C06\u4F5C\u4E3A\u4EFB\u52A1\u8BF7\u6C42\u53D1\u9001")),o.log()}async function qp(){try{let{isGitAvailable:o}=await Promise.resolve().then(()=>(so(),kc)),e=o();console.log(A.gray(`Git\u73AF\u5883\u68C0\u67E5: ${e?"\u53EF\u7528":"\u4E0D\u53EF\u7528"}`)),console.log(e?A.green("\u2713 /commit \u547D\u4EE4\u53EF\u7528"):A.yellow("\u26A0 Git\u4E0D\u53EF\u7528\uFF0C/commit \u547D\u4EE4\u5C06\u4E0D\u53EF\u7528"))}catch(o){console.log(A.gray(`\u521D\u59CB\u5316\u52A8\u6001\u547D\u4EE4\u65F6\u51FA\u9519: ${o.message}`))}}var br,Ti=C(()=>{Ne();Xo();Tl();xr();so();ve();br=[{name:"chat",description:"\u5F00\u59CB\u65B0\u4EFB\u52A1",handler:Up,requiresArg:!0},{name:"resume",description:"\u6062\u590D\u4E2D\u65AD\u7684\u4F1A\u8BDD",handler:Wp,requiresArg:!1},{name:"commit",description:"\u4F7F\u7528AI\u603B\u7ED3\u53D8\u66F4\u5E76\u63D0\u4EA4git commit",handler:Gp,requiresArg:!1},{name:"clear",description:"\u5F52\u6863\u5E76\u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD",handler:Vp,requiresArg:!1},{name:"history",description:"\u67E5\u770B\u5F52\u6863\u4F1A\u8BDD",handler:zp,requiresArg:!1},{name:"list_tools",description:"\u5217\u51FA\u6240\u6709\u53EF\u7528\u5DE5\u5177",handler:Jp,requiresArg:!1},{name:"exit",description:"\u9000\u51FA\u5E94\u7528",handler:kl,requiresArg:!1},{name:"quit",description:"\u9000\u51FA\u5E94\u7528",handler:kl,requiresArg:!1},{name:"help",description:"\u663E\u793A\u5E2E\u52A9\u4FE1\u606F",handler:Hp,requiresArg:!1}]});je();Ne();Ti();Y();le();di();xr();Eo();import ae from"chalk";import we from"readline";import Kp from"fuzzysort";var $l="0.1.11";var rn=Tr(),jo=class{rl=null;isActive=!1;commandHistory=[];historyIndex=-1;debug=!1;skipLineProcessing=!1;lastExecutedCommand=null;constructor(e={}){this.debug=e.debug||!1,Lr(this.debug),_o(this.debug)}async start(){try{if(!ae)throw new Error("chalk\u6A21\u5757\u5BFC\u5165\u5931\u8D25");Ii(),Ar(),M("\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\u542F\u52A8"),this.debug&&(x("Debug\u6A21\u5F0F\u5DF2\u542F\u7528"),No("Debug\u6A21\u5F0F\u5DF2\u542F\u7528 - \u5C06\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7\u4FE1\u606F","Session")),await this.initializeMCP();let{initializeDynamicCommands:e}=await Promise.resolve().then(()=>(Ti(),Pl));await e(),this.rl=we.createInterface({input:process.stdin,output:process.stdout,prompt:ae.blue("nium> "),historySize:100,completer:()=>[[],""]}),el(this.rl),process.stdin.isTTY&&(process.stdin.setRawMode(!0),this.setupKeypressHandling()),this.printWelcome(),es()&&b.messages&&b.messages.length>0&&b.currentTask&&this.printSessionWarning(),this.isActive=!0,this.rl.prompt(),this.setupCommandHandler(),this.setupCloseHandler()}catch(e){console.error("\u542F\u52A8\u4F1A\u8BDD\u65F6\u51FA\u9519:",e.message),console.error("\u9519\u8BEF\u5806\u6808:",e.stack),process.exit(1)}}async initializeMCP(){try{let e=ss();if(M(`Loaded ${e.length} MCP server configuration(s)`),e.length===0){x("No MCP servers configured"),await Mo();return}let t=Zt();M("Initializing MCP manager with configured servers..."),await t.initialize(e),M("Loading all tools (local + MCP)..."),await Mo();let n=t.getStatus();x(`MCP Status: ${n.serversConnected} servers connected, ${n.toolsAvailable} tools available`),n.serversConnected>0?_(`Connected to ${n.serversConnected} MCP server(s), ${n.toolsAvailable} tools available`,"MCP"):W(`Configured ${e.length} MCP server(s) but none connected`,"MCP")}catch(e){X(`Failed to initialize MCP: ${e.message}`),x(`MCP initialization error details: ${e.message}
1942
+ ${e.stack||""}`),M("Continuing with local tools only..."),await Mo()}}setupKeypressHandling(){we.emitKeypressEvents(process.stdin,this.rl),process.stdin.on("keypress",(e,t)=>{this.isActive&&(this.rl.__isHandlingConfirmation||t&&(t.name==="up"&&this.commandHistory.length>0&&!t.ctrl&&!t.meta?(this.historyIndex===-1?this.historyIndex=this.commandHistory.length-1:this.historyIndex>0&&this.historyIndex--,this.updatePromptWithHistory()):t.name==="down"&&!t.ctrl&&!t.meta?(this.historyIndex>=0&&(this.historyIndex++,this.historyIndex>=this.commandHistory.length&&(this.historyIndex=-1)),this.updatePromptWithHistory()):t.name==="tab"&&this.handleTabCompletion()))})}async handleTabCompletion(){if(!this.rl)return;let e=this.rl.line.trim();if(e.startsWith("/")){let t=e.slice(1),[n]=t.split(" "),r=n?Kp.go(n,rn,{key:"name"}):rn.map(s=>({obj:s,score:0}));if(r.length===1){let s=r[0].obj,i=`/${s.name}${s.requiresArg?" ":""}`;s.requiresArg?(this.skipLineProcessing=!0,this.rl.line=i,this.rl.cursor=i.length,this.rl._refreshLine(),setTimeout(()=>{this.skipLineProcessing=!1},100)):(this.skipLineProcessing=!0,this.rl.line="",this.rl.cursor=0,this.commandHistory.push(i),this.historyIndex=-1,process.nextTick(async()=>{try{this.log(`\u6267\u884C\u547D\u4EE4: /${s.name}`),await s.handler(this)}catch(a){this.error(`\u6267\u884C\u547D\u4EE4 /${s.name} \u65F6\u51FA\u9519: ${a.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}}))}else r.length>1&&await this.showCommandSelectionMenu(r)}}async showCommandSelectionMenu(e){if(!this.rl)return;let t=0,n=this.rl.getPrompt(),r=this.rl.line,s=process.stdin.isTTY?process.stdin.isRaw:!1,i=()=>{let a=e.length+3;for(let c=0;c<a;c++)we.moveCursor(process.stdout,0,-1),we.clearLine(process.stdout,0);we.clearLine(process.stdout,1),console.log(""),console.log(ae.yellow("\u8BF7\u9009\u62E9\u547D\u4EE4 (\u4F7F\u7528\u4E0A\u4E0B\u7BAD\u5934\u952E\uFF0CEnter\u786E\u8BA4\uFF0CEsc\u53D6\u6D88):")),console.log(""),e.forEach((c,l)=>{let u=c.obj,p=l===t,g=p?ae.green("> "):" ",d=p?ae.green.bold(`/${u.name}`):ae.white(`/${u.name}`),m=ae.gray(`- ${u.description}`);console.log(`${g}${d} ${m}`)}),process.stdout.write(n),this.rl.line=r,this.rl.cursor=r.length,this.rl._refreshLine()};return new Promise(a=>{process.stdin.isTTY&&process.stdin.setRawMode(!0);let c=(l,u)=>{if(u.name==="up")return t=Math.max(0,t-1),i(),!1;if(u.name==="down")return t=Math.min(e.length-1,t+1),i(),!1;if(u.name==="return"||u.name==="enter"){let p=e[t].obj,g=`/${p.name}${p.requiresArg?" ":""}`;this.rl.removeListener("keypress",c);for(let d=0;d<e.length+4;d++)we.moveCursor(process.stdout,0,-1),we.clearLine(process.stdout,0);return we.clearLine(process.stdout,1),process.stdout.write(n),this.skipLineProcessing=!0,p.requiresArg?(this.skipLineProcessing=!0,this.rl.line=g,this.rl.cursor=g.length,this.rl._refreshLine(),setTimeout(()=>{this.skipLineProcessing=!1},100)):(this.rl.line="",this.rl.cursor=0,this.commandHistory.push(g),this.historyIndex=-1,process.nextTick(async()=>{try{this.log(`\u6267\u884C\u547D\u4EE4: /${p.name}`),await p.handler(this)}catch(d){this.error(`\u6267\u884C\u547D\u4EE4 /${p.name} \u65F6\u51FA\u9519: ${d.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}})),a(),!1}else if(u.name==="escape"||u.ctrl&&u.name==="c"){for(let p=0;p<e.length+4;p++)we.moveCursor(process.stdout,0,-1),we.clearLine(process.stdout,0);return this.rl.removeListener("keypress",c),we.clearLine(process.stdout,1),process.stdout.write(n),this.rl.line=r,this.rl.cursor=r.length,this.rl._refreshLine(),a(),!1}};this.rl.on("keypress",c),i()})}updatePromptWithHistory(){this.rl&&(this.historyIndex>=0&&this.historyIndex<this.commandHistory.length?(this.rl.line=this.commandHistory[this.historyIndex],this.rl.cursor=this.rl.line.length,this.rl._refreshLine()):(this.rl.line="",this.rl.cursor=0,this.rl._refreshLine()))}setupCommandHandler(){this.rl&&this.rl.on("line",async e=>{let t=e.trim();if(this.skipLineProcessing){this.skipLineProcessing=!1,this.isActive&&this.rl&&this.rl.prompt();return}if(t.startsWith("/")){let r=t.slice(1).split(" ")[0];if(rn=Tr(),!(r?rn.some(i=>i.name===r):!1)&&r){this.isActive&&this.rl&&this.rl.prompt();return}}t&&(this.commandHistory.push(t),this.historyIndex=-1);try{await this.handleCommand(t),this.lastExecutedCommand=t}catch(n){this.error(`\u5904\u7406\u547D\u4EE4\u65F6\u51FA\u9519: ${n.message}`)}finally{this.isActive&&this.rl&&this.rl.prompt()}})}setupCloseHandler(){this.rl&&this.rl.on("close",()=>{this.isActive&&(this.isActive=!1,this.success("\u518D\u89C1\uFF01"),process.exit(0))})}async handleCommand(e){if(e)if(e.startsWith("/")){let t=e.slice(1).split(" "),n=t[0],r=t.slice(1).join(" ");try{await Oo(this,n,r),n==="clear"&&this.rl&&(this.rl.line="",this.rl.cursor=0,this.rl._refreshLine())}catch(s){this.error(`\u6267\u884C\u4EFB\u52A1\u65F6\u51FA\u9519: ${s.message}`)}}else try{await Oo(this,"chat",e)}catch(t){this.error(`\u6267\u884C\u4EFB\u52A1\u65F6\u51FA\u9519: ${t.message}`)}}printWelcome(){rn=Tr(),this.clear(),this.log(ae.green(`NiumAgents-CLI v${$l}`)),this.log(ae.gray("Options:")),this.log(ae.gray(" --debug - \u542F\u7528\u8C03\u8BD5\u6A21\u5F0F\u4EE5\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7")),this.log(ae.gray(`
1943
+ Commands:`)),this.log(ae.gray(" <request> - \u5F00\u59CB\u65B0\u4EFB\u52A1 (\u9ED8\u8BA4: /chat)"));let e=rn.filter(t=>t.name!=="chat");for(let t of e)t.name==="exit"||t.name==="quit"?t.name==="exit"&&this.log(ae.gray(" /exit \u6216 /quit - \u9000\u51FA")):this.log(ae.gray(` /${t.name} - ${t.description}`));this.log(ae.gray(`
1944
+ \u63D0\u793A: \u8F93\u5165 / \u540E\u8DDF\u90E8\u5206\u547D\u4EE4\u53EF\u8FDB\u884C\u6A21\u7CCA\u641C\u7D22`)),this.log()}printSessionWarning(){this.warning("\u26A0 \u68C0\u6D4B\u5230\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF01\u4F7F\u7528 /resume \u7EE7\u7EED\u6216 /clear \u5F00\u59CB\u65B0\u4F1A\u8BDD\u3002"),this.log()}printHelp(){bi(this)}clear(){Uo()}log(e=""){an(e)}success(e){_(e,null)}warning(e){W(e,null)}error(e){ke(e,null)}info(e){se(e,null)}exit(){M("\u4EA4\u4E92\u5F0F\u4F1A\u8BDD\u7ED3\u675F"),this.isActive=!1,this.rl&&this.rl.close()}};import be from"chalk";async function Yp(){try{let o=process.argv.slice(2),e=o.includes("--debug");(o.includes("--help")||o.includes("-h"))&&(console.log(be.green("NiumAgents-CLI v0.1.8")),console.log(be.gray("AI Code Agent")),console.log(),console.log(be.gray("Options:")),console.log(be.gray(" --debug - \u542F\u7528\u8C03\u8BD5\u6A21\u5F0F\u4EE5\u663E\u793A\u8BE6\u7EC6\u65E5\u5FD7")),console.log(be.gray(" --help \u6216 -h - \u663E\u793A\u6B64\u5E2E\u52A9\u4FE1\u606F")),console.log(),console.log(be.gray("Usage:")),console.log(be.gray(" nium [options]")),console.log(be.gray(" npm run start [options]")),console.log(),console.log(be.gray("Example:")),console.log(be.gray(" nium --debug")),console.log(be.gray(" npm run start -- --debug")),process.exit(0)),await new jo({debug:e}).start()}catch(o){console.error("\u542F\u52A8\u5E94\u7528\u65F6\u51FA\u9519:",o.message),process.exit(1)}}Yp();