@mk-co/neox-cli 2.0.63 → 2.0.64

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/cli/main.js +1 -1
  2. package/package.json +1 -1
package/dist/cli/main.js CHANGED
@@ -3484,7 +3484,7 @@ A: ${c}`),n_(s,e,t,n+1,u);});}var zy=R(()=>{ja();ih();});function r_(s){let e=0;
3484
3484
  ...(truncated)`:e;return r?`${r}
3485
3485
 
3486
3486
  ${a}`:a}function s_(s){let e=false,t=new Map,n=new Map,r=new Map,o=new Map,i=new Map,a=new Map,l=new Map,c=new Map,u=new Map,d=new Map,m=new Map,g=new Map,h=new Map,y=new Map,b=0,C=(v,I)=>{if(!I)return;let D=v.toLowerCase();if(D==="readfile"||D==="read")return I.file_path||I.path;if(D==="search"||D==="search_files"||D==="grep")return `"${(I.pattern||I.query||"").substring(0,30)}"`;if(D==="glob")return I.pattern;if(D==="smart_tree"||D==="show_tree")return I.path||I.directory;if(D==="write_file"||D==="write"||D==="edit_file"||D==="edit")return I.file_path||I.path;if(D==="bash"||D==="execute_bash")return (I.command||"").substring(0,40)},S=(v,I)=>{if(!v||!s.uiController)return;let D=n.get(v)||{input:0,output:0};I.inputTokens!==void 0&&(D.input=I.inputTokens),I.outputTokens!==void 0&&(D.output=I.outputTokens),n.set(v,D),I.currentTask&&r.set(v,I.currentTask);let O=u.get(v),k=c.get(v),M=d.get(v)||0,N=l.get(v),x=N?Date.now()-N:0;s.uiController.updateAgentContext(v,{agentId:v,agentLabel:v,status:I.status,currentTask:k||r.get(v),input:D.input,output:D.output,contextWindow:2e5,tokensUsedForContext:D.input,pressure:D.input/2e5,workerRole:O,workerTask:k,toolUseCount:M,elapsedMs:x});},E=v=>{let I,D=800;switch(v.type){case "status":I=`status:${v.sourceLabel||""}:${v.status}:${v.message}`,D=250;break;case "log":I=`log:${v.sourceLabel||""}:${v.level}:${v.message}:${v.detail||""}`,D=1e3;break;case "error":I=`error:${v.sourceLabel||""}:${v.message}`,D=1200;break;case "tool_call_start":I=`tool_call_start:${v.sourceLabel||""}:${v.toolId||""}:${v.name}:${v.batchId||""}`,D=1200;break;case "tool_call_end":I=`tool_call_end:${v.sourceLabel||""}:${v.toolId||""}:${v.name}:${v.success}:${v.resultLength||0}`,D=1200;break;case "tool_output":{let M=(v.output||"").slice(0,200);I=`tool_output:${v.sourceLabel||""}:${v.toolId||""}:${v.name}:${v.success}:${M}`,D=1200;break}}if(!I)return false;let O=Date.now(),k=t.get(I)||0;if(O-k<D)return true;if(t.set(I,O),t.size>1e3){let M=O-1e4;for(let[N,x]of t.entries())x<M&&t.delete(N);}return false};return v=>{if(s.getUiController&&(s.uiController=s.getUiController()),process.env.CLI_DEBUG==="1"&&p.debug("EVENT",`Received event: type=${v.type}`),v.type==="tool_call_end"&&p.info("EVENT",`\u{1F525} CLIENT received tool_call_end: name=${v.name} toolId=${v.toolId} summary=${(v.summary||"").substring(0,50)}`),!s.uiController){process.env.CLI_DEBUG==="1"&&p.debug("EVENT"," -> SKIPPED: no uiController!");return}if(process.env.CLI_DEBUG==="1"&&(v.type==="log"?p.debug("EVENT",` log message: "${v.message?.substring(0,50)}..."`):v.type==="text"&&p.debug("EVENT",` text delta: "${v.delta?.substring(0,30)}..."`)),E(v))return;let I=v.sourceLabel;if(!!I&&I!=="Main"){if(!u.has(I)){let P=v.workerRole,$=v.workerTask;P&&u.set(I,P.charAt(0).toUpperCase()+P.slice(1)),$&&c.set(I,$);}let O=I.startsWith("Explorer-"),k=u.get(I)||"Task",N=(()=>{if(!O)return;let P=g.get(I);if(P)return P;for(let[$,F]of h.entries())if((y.get($)||0)<F.size){P=$;break}return P||(P=`explore_group_${++b}`,h.set(P,new Set),y.set(P,0)),g.set(I,P),h.get(P).add(I),P})(),x=()=>{i.has(I)||(i.set(I,[]),a.set(I,[]),l.set(I,Date.now()),d.set(I,0));},B=()=>{if(x(),N){let P=m.get(N);return !P&&s.uiController&&(P=s.uiController.addSubAgentEntry({agentId:N,role:"Explore",task:"parallel explore",sourceLabel:"Main"}),m.set(N,P)),P||0}else {let P=o.get(I);if(!P&&s.uiController){let $=c.get(I)||"starting...";P=s.uiController.addSubAgentEntry({agentId:I,role:k,task:$,sourceLabel:"Main"}),o.set(I,P);}return P||0}},H=P=>(a.get(P||I)||[]).map(F=>({name:F.name,args:F.args,status:F.status,duration:F.endTime?(F.endTime-F.startTime)/1e3:void 0,resultHint:F.resultHint})),W=()=>{if(!N)return;let P=h.get(N);if(!(!P||P.size<=1))return Array.from(P).map($=>{let F=n.get($)||{input:0,output:0},V=l.get($)||Date.now(),Z=Math.round((Date.now()-V)/1e3),ae=d.get($)||0,be=c.get($)||"";!a.has($)&&ae>0;let oe="running";return !l.has($)&&ae>0&&(oe="completed"),{agentId:$,task:be,status:oe,toolCount:ae,tokens:F.input+F.output,elapsed:Z,toolRecords:H($)}})},U=(P,$)=>{let F=B();if(!(!F||!s.uiController))if(N){let V=h.get(N)||new Set,Z=0,ae=0,be=0;for(let X of V){let ne=n.get(X)||{input:0,output:0};Z+=ne.input+ne.output,ae+=d.get(X)||0;let Y=l.get(X)||Date.now(),Ae=Math.round((Date.now()-Y)/1e3);Ae>be&&(be=Ae);}let oe=(y.get(N)||0)>=V.size;s.uiController.updateSubAgentEntry(F,{status:oe?"completed":"running",toolCount:ae,tokens:Z,elapsed:be,groupMembers:W()});}else {let V=n.get(I)||{input:0,output:0},Z=l.get(I)||Date.now(),ae=Math.round((Date.now()-Z)/1e3),be=V.input+V.output,Pe=d.get(I)||0;s.uiController.updateSubAgentEntry(F,{status:$?"completed":"running",toolCount:Pe,tokens:be,elapsed:ae,toolRecords:H()});}},z=P=>{i.delete(P),a.delete(P),l.delete(P),d.delete(P),u.delete(P),c.delete(P);},q=(P,$)=>{if(!N)return;let F=(y.get(N)||0)+1;y.set(N,F);let V=h.get(N)||new Set;if(F>=V.size){U(void 0,true);let Z=m.get(N);Z&&s.uiController&&s.uiController.commitSubAgentEntry(Z);for(let ae of V)z(ae),g.delete(ae),s.uiController?.clearAgentContext(ae);m.delete(N),h.delete(N),y.delete(N);}else U();};switch(v.type){case "tool_call_start":{x();let P=i.get(I)||[];P.push(v.name),P.length>12&&P.shift(),i.set(I,P);let $=a.get(I)||[],F=C(v.name,v.args);$.push({name:v.name,args:F,startTime:Date.now(),status:"running"}),$.length>12&&$.shift(),a.set(I,$),d.set(I,(d.get(I)||0)+1),S(I,{status:"running",currentTask:v.name}),U(v.name);break}case "tool_call_end":{let P=a.get(I)||[];for(let $=P.length-1;$>=0;$--)if(P[$].name===v.name&&P[$].status==="running"){P[$].status=v.success?"done":"error",P[$].endTime=Date.now(),v.resultLength?P[$].resultHint=`(${v.resultLength} chars)`:v.summary&&(P[$].resultHint=v.summary.substring(0,30));break}S(I,{status:"running",currentTask:`\u2713 ${v.name}`}),U(`\u2713 ${v.name}`);break}case "token_usage":{S(I,{status:"running",inputTokens:v.sessionPromptTokens,outputTokens:v.sessionCompletionTokens}),U(),s.provider&&s.model&&(s.tokenUsage??rn).recordUsage({timestamp:Date.now(),provider:s.provider,model:s.model,inputTokens:v.promptTokens||0,outputTokens:v.completionTokens||0,totalTokens:(v.promptTokens||0)+(v.completionTokens||0),cachedTokens:v.cachedTokens||0,openaiCachedTokens:v.openaiCachedTokens||0,anthropicCacheReadTokens:v.anthropicCacheReadTokens||0,anthropicCacheCreationTokens:v.anthropicCacheCreationTokens||0,duration:v.duration||0,success:true,sessionId:s.sessionId,requestType:"chat"}).catch(()=>{});break}case "run_result":if(S(I,{status:"completed",currentTask:"Done"}),N)q();else {if(U(void 0,true),s.uiController){let P=o.get(I);P&&s.uiController.commitSubAgentEntry(P),s.uiController.clearAgentContext(I);}o.delete(I),z(I);}break;case "error":if(S(I,{status:"error",currentTask:v.message?.substring(0,40)}),N)q();else {if(s.uiController){let P=o.get(I);P&&(s.uiController.updateSubAgentEntry(P,{status:"error",toolRecords:H()}),s.uiController.commitSubAgentEntry(P)),s.uiController.clearAgentContext(I);}o.delete(I),z(I);}break;}return}switch(v.type){case "status":if(v.message.includes(" lines)...")){let O=Date.now(),k=s._lastStatusTime||0;if(O-k<100)break;s._lastStatusTime=O;}s.uiController.updateStatus(v.message,v.status);break;case "log":if(v.level==="error"?p.error("AGENT",v.message,v.detail?{detail:v.detail}:void 0):v.level==="warn"?p.warn("AGENT",v.message,v.detail?{detail:v.detail}:void 0):p.info("AGENT",v.message,v.detail?{detail:v.detail}:void 0),v.message==="Task complete")break;s.uiController.addInfo(v.message,v.detail,"info",v.sourceLabel);break;case "compacting":p.info("AGENT",`[Compacting] ${v.message}`,v.detail?{detail:v.detail}:void 0),s.uiController.addCompacting(v.message,v.detail);break;case "thinking":e=false;break;case "reasoning":if(s.uiController.addReasoningDelta(v.delta,v.sourceLabel),s.setStreamingTokenCount&&s.getStreamingTokenCount&&v.delta){let O=s.getStreamingTokenCount(),k=r_(v.delta);s.setStreamingTokenCount(O+k),s.uiController.updateTaskTokens(O+k);}break;case "reasoning_complete":s.uiController.completeReasoningStreaming(v.sourceLabel);break;case "text":if(process.env.CLI_DEBUG==="1"&&p.debug("EVENT",` text delta received: "${v.delta?.substring(0,50)}..." (len=${v.delta?.length})`),s.uiController.addTextDelta(v.delta,v.sourceLabel),s.setStreamingTokenCount&&s.getStreamingTokenCount&&v.delta){let O=s.getStreamingTokenCount(),k=r_(v.delta);s.setStreamingTokenCount(O+k),s.uiController.updateTaskTokens(O+k);}break;case "text_complete":process.env.CLI_DEBUG==="1"&&p.debug("EVENT"," text_complete received"),s.uiController.completeReasoningStreaming(v.sourceLabel),s.uiController.completeTextStreaming(v.sourceLabel);break;case "tool_call_start":{s.uiController.completeTextStreaming(v.sourceLabel),s.uiController.completeReasoningStreaming(v.sourceLabel),s.currentStreamingTool={name:v.name,totalChars:0};let O=v.toolId||`${v.name}_${Math.floor(Date.now())}_${Math.random().toString(36).slice(2,7)}`;s.toolIdToName.set(O,v.name),s.toolIdToArgs&&s.toolIdToArgs.set(O,v.args||{}),s.lastToolCallArgs.set(v.name,v.args||{}),bF(s.uiController,O,v.name,v.args||{},{targetPath:v.targetPath,description:v.description,sourceLabel:v.sourceLabel,viaCallTool:v.viaCallTool}),S(v.sourceLabel,{status:"running",currentTask:v.name});break}case "tool_call_delta":process.env.CLI_DEBUG&&p.debug("EVENT",`tool_call_delta: ${v.name} +${v.argumentsDelta.length} chars`),(!s.currentStreamingTool||s.currentStreamingTool.name!==v.name)&&(s.currentStreamingTool={name:v.name,totalChars:0}),s.currentStreamingTool.totalChars+=v.argumentsDelta.length,s.uiController.updateStatus(Mx(v.name,s.currentStreamingTool.totalChars),"tool_call");break;case "tool_call_end":{s.currentStreamingTool=void 0;let O=v.toolId,k=O;(!k||!s.uiController.getRunningToolLogId(k))&&(k=s.uiController.resolveRunningToolIdByName(v.name,v.sourceLabel));let M=(v.name||"").toLowerCase(),x=M==="readfile"||M==="search"?v.summary:fF(v.name,typeof v.output=="string"?v.output:void 0,v.summary,v.outputTruncated),B=!!(k&&s.uiController.getRunningToolLogId(k));if(B&&k&&s.uiController.completeToolCall(k,{success:v.success,duration:v.duration,resultLength:v.resultLength,outputTruncated:v.outputTruncated,summary:x,error:v.success?void 0:x||v.output||v.summary}),!B&&!v.success&&i_(M)){let H=x||v.output||v.summary||`${v.name} failed`;s.uiController.addError(`Tool ${v.name} failed`,H);}O&&s.toolIdToName.delete(O),k&&k!==O&&s.toolIdToName.delete(k),s.uiController.updateStatus(Dx(v.name,v.success,v.resultLength),v.success?"tool_result":"error"),S(v.sourceLabel,{status:"running",currentTask:`\u2713 ${v.name}`});break}case "tool_output":{let O=v.toolId,k;if(O&&s.toolIdToArgs&&(k=s.toolIdToArgs.get(O)),!k){for(let[x,B]of s.toolIdToName.entries())if(B===v.name&&s.toolIdToArgs&&(k=s.toolIdToArgs.get(x),k))break}k||(k=s.lastToolCallArgs.get(v.name));let M=v.name.toLowerCase();if(o_(M))Wy(s.uiController,v.name,v.output,v.success,k);else {let x;for(let[B,H]of s.toolIdToName.entries())if(H===v.name){x=B;break}x&&s.uiController.getRunningToolLogId(x)?s.uiController.updateToolCallOutput(x,v.output,{truncated:v.output.length>2e3}):Wy(s.uiController,v.name,v.output,v.success,k);}O&&s.toolIdToArgs&&s.toolIdToArgs.delete(O),s.lastToolCallArgs.delete(v.name);break}case "file_stream":if(v.isComplete)s.uiController.completeCodeGenerationPreview(v.filePath,v.content);else {let O=v.content.split(`
3487
- `).length;s.uiController.updateStatus(`Generating ${v.filePath} (${O} lines)...`,"tool_call");}break;case "edit_file_stream":v.isComplete&&s.uiController.startEditFile(v.filePath,v.language||"",v.oldString,v.newString,v.startLine,v.description,v.hunks);break;case "write_file_stream":v.isComplete&&s.uiController.startWriteFile(v.filePath,v.language||"",v.content,v.description);break;case "token_usage":{let O=v.sourceLabel;if(!(O&&O!=="Main")){let M={input:v.sessionPromptTokens,output:v.sessionCompletionTokens};s.setRuntimeTokens(M.input,M.output);let N=v.promptTokens+v.completionTokens;s.uiController?.updateTaskTokens(N,true);let x={cachedTokens:v.cachedTokens,openaiCachedTokens:v.openaiCachedTokens,anthropicCacheReadTokens:v.anthropicCacheReadTokens,anthropicCacheCreationTokens:v.anthropicCacheCreationTokens},B={promptTokens:v.promptTokens,completionTokens:v.completionTokens,tokensUsed:v.totalTokens};s.pushTokenStats(M.input,M.output,B,x);}if(process.env.CLI_DEBUG&&p.debug("MAIN",`token_usage: source=${O||"none"} sessionPrompt=${v.sessionPromptTokens}, sessionCompletion=${v.sessionCompletionTokens}`),s.provider&&s.model){let M={cachedTokens:v.cachedTokens||0,openaiCachedTokens:v.openaiCachedTokens||0,anthropicCacheReadTokens:v.anthropicCacheReadTokens||0,anthropicCacheCreationTokens:v.anthropicCacheCreationTokens||0};(s.tokenUsage??rn).recordUsage({timestamp:Date.now(),provider:s.provider,model:s.model,inputTokens:v.promptTokens||0,outputTokens:v.completionTokens||0,totalTokens:(v.promptTokens||0)+(v.completionTokens||0),cachedTokens:M.cachedTokens,openaiCachedTokens:M.openaiCachedTokens,anthropicCacheReadTokens:M.anthropicCacheReadTokens,anthropicCacheCreationTokens:M.anthropicCacheCreationTokens,duration:v.duration||0,success:true,sessionId:s.sessionId,requestType:"chat"}).catch(x=>{p.warn("RUNTIME_EVENTS","Failed to record token usage:",x);});}S(O,{status:"running",inputTokens:v.sessionPromptTokens,outputTokens:v.sessionCompletionTokens});break}case "memory_snapshot":{let O=s.getRuntimeTokens();process.env.CLI_DEBUG&&(p.debug("MAIN","memory_snapshot received:"),p.debug("MAIN",` tokensUsed=${v.snapshot.tokensUsed}, contextWindow=${v.snapshot.profile.contextWindow}`),p.debug("MAIN",` pressure=${v.snapshot.pressure}, state=${v.snapshot.state}`),p.debug("MAIN",` runtimeInputTokens=${O.input}, runtimeOutputTokens=${O.output}`)),s.pushTokenStats(O.input,O.output,v.snapshot);break}case "checkpoint":s.uiController.addInfo(v.auto?`\u21BB Checkpoint: ${v.id} (auto-created before turn)`:`\u21BB Checkpoint: ${v.id}`);break;case "run_result":{s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming(),"commitAllPendingEntries"in s.uiController&&s.uiController.commitAllPendingEntries();let O=v.iterations??0,k=v.toolCalls??0,M=v.durationMs??0,N=v.totalTokens??0,x=(M/1e3).toFixed(1),B=[`iterations: ${O}`,`tools: ${k}`,`duration: ${x}s`,`tokens: ${N}`];s.uiController.addInfo(`\u2713 Run completed ${B.join(" ")}`),s.uiController.updateStatus(Rx(),"complete"),S(v.sourceLabel,{status:"completed",currentTask:"Done"}),"clearPlanSteps"in s.uiController&&s.uiController.clearPlanSteps();break}case "stream_retry":{try{"finalizeStreamingState"in s.uiController?s.uiController.finalizeStreamingState():"completeReasoningStreaming"in s.uiController&&(s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming());}catch(N){process.env.CLI_DEBUG==="1"&&p.debug("EVENT","Error completing streaming during retry",{error:N});}s.uiController.resetStreamingState&&s.uiController.resetStreamingState();let O=v.delayMs>=1e3?`${(v.delayMs/1e3).toFixed(1)}s`:`${v.delayMs}ms`,k="",M="default";v.isRateLimit?(k=`\u23F3 API \u901F\u7387\u9650\u5236\uFF0C${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,M="rateLimit"):v.isStreamTimeout?(k=`\u23F1\uFE0F Stream \u8D85\u65F6\uFF0C${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,M="timeout"):v.isNetworkError?(k=`\u{1F504} \u7F51\u7EDC\u4E2D\u65AD\uFF0C${O} \u540E\u91CD\u8FDE (${v.attempt}/${v.maxRetries})`,M="network"):k=`\u{1F504} ${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,s.uiController.addInfo(k,v.error),s.uiController.updateStatus(Nh(M),"thinking");break}case "stream_recovered":{let O=`\u2713 \u91CD\u8BD5 ${v.attempt}/${v.maxRetries}\uFF0C\u6B63\u5728\u91CD\u8FDE...`;s.uiController.addInfo(O),s.uiController.updateStatus(Nh("network"),"thinking");break}case "error_classified":e=true,s.uiController.addError(`${v.category}: ${v.code}`,`${v.message}${v.suggestion?`
3487
+ `).length;s.uiController.updateStatus(`Generating ${v.filePath} (${O} lines)...`,"tool_call");}break;case "edit_file_stream":v.isComplete&&s.uiController.startEditFile(v.filePath,v.language||"",v.oldString,v.newString,v.startLine,v.description,v.hunks);break;case "write_file_stream":v.isComplete&&s.uiController.startWriteFile(v.filePath,v.language||"",v.content,v.description);break;case "token_usage":{let O=v.sourceLabel;if(!(O&&O!=="Main")){let M={input:v.promptTokens,output:v.completionTokens};s.setRuntimeTokens(M.input,M.output);let N=v.promptTokens+v.completionTokens;s.uiController?.updateTaskTokens(N,true);let x={cachedTokens:v.cachedTokens,openaiCachedTokens:v.openaiCachedTokens,anthropicCacheReadTokens:v.anthropicCacheReadTokens,anthropicCacheCreationTokens:v.anthropicCacheCreationTokens},B={promptTokens:v.promptTokens,completionTokens:v.completionTokens,tokensUsed:v.totalTokens};s.pushTokenStats(M.input,M.output,B,x);}if(process.env.CLI_DEBUG&&p.debug("MAIN",`token_usage: source=${O||"none"} sessionPrompt=${v.sessionPromptTokens}, sessionCompletion=${v.sessionCompletionTokens}`),s.provider&&s.model){let M={cachedTokens:v.cachedTokens||0,openaiCachedTokens:v.openaiCachedTokens||0,anthropicCacheReadTokens:v.anthropicCacheReadTokens||0,anthropicCacheCreationTokens:v.anthropicCacheCreationTokens||0};(s.tokenUsage??rn).recordUsage({timestamp:Date.now(),provider:s.provider,model:s.model,inputTokens:v.promptTokens||0,outputTokens:v.completionTokens||0,totalTokens:(v.promptTokens||0)+(v.completionTokens||0),cachedTokens:M.cachedTokens,openaiCachedTokens:M.openaiCachedTokens,anthropicCacheReadTokens:M.anthropicCacheReadTokens,anthropicCacheCreationTokens:M.anthropicCacheCreationTokens,duration:v.duration||0,success:true,sessionId:s.sessionId,requestType:"chat"}).catch(x=>{p.warn("RUNTIME_EVENTS","Failed to record token usage:",x);});}S(O,{status:"running",inputTokens:v.sessionPromptTokens,outputTokens:v.sessionCompletionTokens});break}case "memory_snapshot":{let O=s.getRuntimeTokens();process.env.CLI_DEBUG&&(p.debug("MAIN","memory_snapshot received:"),p.debug("MAIN",` tokensUsed=${v.snapshot.tokensUsed}, contextWindow=${v.snapshot.profile.contextWindow}`),p.debug("MAIN",` pressure=${v.snapshot.pressure}, state=${v.snapshot.state}`),p.debug("MAIN",` runtimeInputTokens=${O.input}, runtimeOutputTokens=${O.output}`)),s.pushTokenStats(O.input,O.output,v.snapshot);break}case "checkpoint":s.uiController.addInfo(v.auto?`\u21BB Checkpoint: ${v.id} (auto-created before turn)`:`\u21BB Checkpoint: ${v.id}`);break;case "run_result":{s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming(),"commitAllPendingEntries"in s.uiController&&s.uiController.commitAllPendingEntries();let O=v.iterations??0,k=v.toolCalls??0,M=v.durationMs??0,N=v.totalTokens??0,x=(M/1e3).toFixed(1),B=[`iterations: ${O}`,`tools: ${k}`,`duration: ${x}s`,`tokens: ${N}`];s.uiController.addInfo(`\u2713 Run completed ${B.join(" ")}`),s.uiController.updateStatus(Rx(),"complete"),S(v.sourceLabel,{status:"completed",currentTask:"Done"}),"clearPlanSteps"in s.uiController&&s.uiController.clearPlanSteps();break}case "stream_retry":{try{"finalizeStreamingState"in s.uiController?s.uiController.finalizeStreamingState():"completeReasoningStreaming"in s.uiController&&(s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming());}catch(N){process.env.CLI_DEBUG==="1"&&p.debug("EVENT","Error completing streaming during retry",{error:N});}s.uiController.resetStreamingState&&s.uiController.resetStreamingState();let O=v.delayMs>=1e3?`${(v.delayMs/1e3).toFixed(1)}s`:`${v.delayMs}ms`,k="",M="default";v.isRateLimit?(k=`\u23F3 API \u901F\u7387\u9650\u5236\uFF0C${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,M="rateLimit"):v.isStreamTimeout?(k=`\u23F1\uFE0F Stream \u8D85\u65F6\uFF0C${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,M="timeout"):v.isNetworkError?(k=`\u{1F504} \u7F51\u7EDC\u4E2D\u65AD\uFF0C${O} \u540E\u91CD\u8FDE (${v.attempt}/${v.maxRetries})`,M="network"):k=`\u{1F504} ${O} \u540E\u91CD\u8BD5 (${v.attempt}/${v.maxRetries})`,s.uiController.addInfo(k,v.error),s.uiController.updateStatus(Nh(M),"thinking");break}case "stream_recovered":{let O=`\u2713 \u91CD\u8BD5 ${v.attempt}/${v.maxRetries}\uFF0C\u6B63\u5728\u91CD\u8FDE...`;s.uiController.addInfo(O),s.uiController.updateStatus(Nh("network"),"thinking");break}case "error_classified":e=true,s.uiController.addError(`${v.category}: ${v.code}`,`${v.message}${v.suggestion?`
3488
3488
  \u{1F4A1} Suggestion: ${v.suggestion}`:""}
3489
3489
  Retryable: ${v.retryable}`);break;case "plan_update":p.info("RUNTIME_EVENTS","\u{1F525} Handling plan_update event",{hasExplanation:!!v.explanation,planSteps:v.plan?.length}),v.plan&&"showPlanUpdate"in s.uiController?(p.info("RUNTIME_EVENTS","\u2705 Calling showPlanUpdate"),s.uiController.showPlanUpdate(v.explanation,v.plan),"setPlanSteps"in s.uiController&&s.uiController.setPlanSteps(v.plan)):p.warn("RUNTIME_EVENTS","\u274C Cannot show plan update",{hasPlan:!!v.plan,hasMethod:"showPlanUpdate"in s.uiController});break;case "error":if(s.uiController.completeReasoningStreaming(),s.uiController.completeTextStreaming(),s.uiController.resetStreamingState&&s.uiController.resetStreamingState(),!e){let O=v.message.split(`
3490
3490
  `),k=O[0],M=O.length>1?O.slice(1).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mk-co/neox-cli",
3
- "version": "2.0.63",
3
+ "version": "2.0.64",
4
4
  "description": "Professional AI code assistant CLI powered by Node.js",
5
5
  "type": "module",
6
6
  "main": "dist/cli/main.js",