blade-code 0.10.201 → 0.10.204

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 (42) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-32g9jj30.js → chunk-1b8qjgm6.js} +1 -1
  3. package/dist/{chunk-0xg0hyt2.js → chunk-1vq22245.js} +1 -1
  4. package/dist/chunk-3den8b7b.js +1 -0
  5. package/dist/{chunk-0xsqqjcw.js → chunk-4ts2s9mz.js} +1 -1
  6. package/dist/{chunk-1c49s2nk.js → chunk-55n8ppxf.js} +1 -1
  7. package/dist/{chunk-a0naxwc9.js → chunk-5dcsrs7e.js} +1 -1
  8. package/dist/{chunk-ycd0k8e0.js → chunk-5j94j64z.js} +1 -1
  9. package/dist/{chunk-jg2af9cg.js → chunk-6dw3pk3c.js} +1 -1
  10. package/dist/{chunk-jj8w4w13.js → chunk-7atwbngw.js} +1 -1
  11. package/dist/{chunk-6yeha80d.js → chunk-7d3msqg3.js} +1 -1
  12. package/dist/{chunk-34r0mj1c.js → chunk-81py03y4.js} +1 -1
  13. package/dist/{chunk-5yt763yv.js → chunk-8cncpfhd.js} +1 -1
  14. package/dist/{chunk-s9fh3mma.js → chunk-8ej7w92s.js} +1 -1
  15. package/dist/{chunk-k4c8g5yc.js → chunk-8j0z248z.js} +1 -1
  16. package/dist/{chunk-3dnsa268.js → chunk-ayvx3h91.js} +1 -1
  17. package/dist/{chunk-s06tb77f.js → chunk-b50smz3h.js} +1 -1
  18. package/dist/{chunk-wt8y9ntt.js → chunk-bx2s02mt.js} +1 -1
  19. package/dist/chunk-bx3b61xw.js +1 -0
  20. package/dist/{chunk-qkcxsqft.js → chunk-d256m8rb.js} +1 -1
  21. package/dist/{chunk-yj2prxha.js → chunk-dhxx5mwe.js} +1 -1
  22. package/dist/{chunk-qt2nhnd0.js → chunk-e49ctwmg.js} +1 -1
  23. package/dist/{chunk-1rx5c4hy.js → chunk-egc2f1ye.js} +1 -1
  24. package/dist/{chunk-vt31dw3y.js → chunk-f4d8312x.js} +1 -1
  25. package/dist/{chunk-cjw46rhw.js → chunk-gzdk86fm.js} +1 -1
  26. package/dist/{chunk-47t7bfq9.js → chunk-h78hhhgt.js} +1 -1
  27. package/dist/{chunk-zxacphn0.js → chunk-hkk83qt6.js} +1 -1
  28. package/dist/{chunk-7hpvsyqy.js → chunk-m0t26vkj.js} +1 -1
  29. package/dist/{chunk-brs3fg0a.js → chunk-m640mr36.js} +2 -2
  30. package/dist/{chunk-zybryd6m.js → chunk-nsb3cj6t.js} +1 -1
  31. package/dist/{chunk-djhrggp2.js → chunk-p8cmxhbr.js} +1 -1
  32. package/dist/{chunk-br4h093m.js → chunk-pqsjy31p.js} +1 -1
  33. package/dist/{chunk-y558m8ac.js → chunk-rnt2fejc.js} +1 -1
  34. package/dist/{chunk-c5n9r3hf.js → chunk-rwm71p4g.js} +6 -6
  35. package/dist/{chunk-7ygrjv1t.js → chunk-smxdn7kq.js} +1 -1
  36. package/dist/{chunk-dmcp5kax.js → chunk-vgf07dhy.js} +1 -1
  37. package/dist/{chunk-ytgj15dc.js → chunk-vtssm7r5.js} +1 -1
  38. package/dist/{chunk-5mnnbccj.js → chunk-w4bedq0m.js} +1 -1
  39. package/dist/{chunk-pkm64kvm.js → chunk-z0m9j0e2.js} +1 -1
  40. package/package.json +1 -1
  41. package/dist/chunk-1sgfzp8h.js +0 -1
  42. package/dist/chunk-tb7w4b29.js +0 -1
@@ -1,4 +1,4 @@
1
- import{e as JX,f as YX,h as S$,i as T4}from"./chunk-k4c8g5yc.js";import{l as YZ,m as XZ,n as ZZ}from"./chunk-vt31dw3y.js";import{A as q4,y as MJ,z as TJ}from"./chunk-jg2af9cg.js";import{Aa as QY,Ca as UY,Ea as lY,I as dY,M as LZ,O as m6,P as y6,Q as jY,W as AY,X as bY,_ as MY,da as i$,fa as SJ,ga as kJ,ia as TY,ka as q8,la as BX,ma as wX,pa as PX,qa as AX,ua as a9,va as w3,xa as F3,ya as L3,za as BZ}from"./chunk-c5n9r3hf.js";import"./chunk-vzdsext4.js";import{Ma as E5,Na as g5,Oa as m5,Ra as FZ}from"./chunk-djhrggp2.js";import{Ta as PY}from"./chunk-9fyjyk2f.js";import{Mb as BY,Nb as F4,Zb as wY,ic as b6}from"./chunk-32g9jj30.js";import{tc as H8}from"./chunk-fdr4fcrf.js";import{Dd as _Y,Nd as bJ,Od as m2,Sd as yJ,Xd as IJ,Zd as t8,fe as z8,ie as a0}from"./chunk-0xsqqjcw.js";import"./chunk-egss0m1x.js";import{Me as vJ,Ne as A6,Oe as VJ}from"./chunk-ztreczac.js";import{jf as JY,kf as U4}from"./chunk-p6586ftx.js";import{xf as $Z}from"./chunk-je908ygr.js";import{Bf as Y1,yf as W8,zf as _4}from"./chunk-wt8y9ntt.js";import"./chunk-p0wyhp5a.js";import{Ff as R2,Gf as L$,Hf as a1,If as z9,Jf as o8,Kf as CJ,Lf as s3,Mf as I9,Nf as a5,Of as e3,Pf as v2,Qf as m0,Rf as HZ,Sf as B$,Tf as eX,Uf as i4,Vf as O8,Yf as $Y,dg as z$}from"./chunk-ycd0k8e0.js";import"./chunk-v508x7cg.js";import"./chunk-5yyp6njq.js";import"./chunk-myvt7yjm.js";import"./chunk-4fbpydtn.js";import{vg as S9}from"./chunk-3cas6rv5.js";import"./chunk-zfxcef0z.js";import"./chunk-br4h093m.js";import{Ig as W4,Kg as pX,Pg as LX,Yg as WZ}from"./chunk-1rx5c4hy.js";import"./chunk-kehgewqh.js";import"./chunk-kkzznz4w.js";import"./chunk-1cy4ab77.js";import"./chunk-7ajvrtb3.js";import{Ah as h$,yh as O9}from"./chunk-7ygrjv1t.js";import"./chunk-ys8gysg8.js";import{Ni as OZ,Si as FX,Ti as NZ}from"./chunk-34r0mj1c.js";import{Vi as mJ}from"./chunk-qpmvp4q2.js";import{Wi as p2,Xi as e8,Zi as N9}from"./chunk-tm3789m3.js";import{cj as K$}from"./chunk-qdbbke8f.js";import"./chunk-wezr6wfq.js";import{Bj as _Z,Ej as H1}from"./chunk-rmfzym94.js";import{Mj as s5,Nj as e5,Qj as R1}from"./chunk-j89qk7bp.js";import"./chunk-0eajnhrj.js";import{ak as c5}from"./chunk-pkm64kvm.js";import{dk as l9}from"./chunk-ggdgk3gy.js";import"./chunk-ky592ay9.js";import{Ak as eJ,gk as K8}from"./chunk-n52n2w5v.js";import{Nk as Y4}from"./chunk-cjfb4kjp.js";import{useMemoizedFn as G6}from"ahooks";import{useEffect as _z,useState as K6}from"react";import{useMemoizedFn as i0}from"ahooks";import tX from"ansi-escapes";import{Box as m1,useStdout as Zz}from"ink";import{useEffect as J1,useMemo as Qz,useRef as I2,useState as sX}from"react";import{useShallow as AZ}from"zustand/react/shallow";import{useStore as PZ}from"zustand";function z0($){return PZ(v2,$)}var bZ=[],V2=()=>z0(($)=>$.session.sessionId),O1=()=>z0(($)=>$.session.workspaceRoot),V8=()=>z0(($)=>$.session.messages),i9=()=>z0(($)=>$.session.clearCount),o9=()=>z0(($)=>$.session.isCompacting),n9=()=>z0(($)=>$.session.tokenUsage.estimatedCostUsd),t9=()=>z0(($)=>{let{totalInputTokens:J,cacheReadTokens:Y,cacheWriteTokens:Z}=$.session.tokenUsage;return a9({totalInputTokens:J,cacheReadTokens:Y,cacheWriteTokens:Z}).hitRate});var j8=()=>z0(($)=>$.session.providerRecovery),s9=()=>z0(($)=>$.session.turnActivity),e9=()=>z0(($)=>$.session.actionStationarity),d1=()=>z0(($)=>$.session.actions),$J=()=>z0(($)=>{let{totalTokens:J,maxContextTokens:Y}=$.session.tokenUsage;if(Y<=0)return 100;let Z=Math.max(0,100-J/Y*100);return Math.round(Z)}),JJ=()=>z0(($)=>$.app.initializationStatus),YJ=()=>z0(($)=>$.app.initializationError),j2=()=>z0(($)=>$.app.activeModal),XJ=()=>z0(($)=>$.app.tasks),ZJ=()=>z0(($)=>$.app.modelEditorTarget),QJ=()=>z0(($)=>$.app.sessionSelectorData),UJ=()=>z0(($)=>$.app.sessionHistoryViewerData),GJ=()=>z0(($)=>$.app.taskAttentionStatus),h8=()=>z0(($)=>$.app.taskAttentionUnreadKeys),KJ=()=>z0(($)=>$.app.awaitingSecondCtrlC),N1=()=>z0(($)=>$.app.actions),h2=()=>z0(($)=>$.app.sideConversation),zJ=()=>z0(($)=>$.app.teams),E8=()=>z0(($)=>$.app.initializationStatus==="ready"),qJ=()=>z0(($)=>$.app.tasks.length>0),E2=()=>z0(($)=>$.config.config?.permissionMode||"default"),_J=()=>z0(($)=>$.config.config?.models??bZ),g8=()=>z0(($)=>{let J=$.config.config;if(!J)return;let Y=J.currentModelId;return J.models.find((X)=>X.id===Y)??J.models[0]}),m8=()=>z0(($)=>$.config.config?.currentModelId),OJ=()=>z0(($)=>$.config.config?.agentTeamsEnabled===!0),D0=()=>z0(($)=>{return L$.getTheme()}),NJ=()=>z0(($)=>$.config.config?.codeTheme??"default"),s0=()=>z0(($)=>$.focus.currentFocus),HJ=()=>z0(($)=>$.focus.actions),g2=()=>z0(($)=>$.command.isProcessing),WJ=()=>z0(($)=>$.command.actions),p8=()=>z0(($)=>$.app.followUpQueue),FJ=()=>z0(($)=>$.app.followUpQueueMutation),LJ=()=>z0(($)=>$.command.recoveredSteeringCount),x8=()=>z0(($)=>$.app.reasoningEffort!=="off"),c8=()=>z0(($)=>$.app.reasoningEffort),u8=()=>z0(($)=>$.app.serviceTier),d8=()=>z0(($)=>$.app.responseVerbosity),l8=()=>z0(($)=>$.app.communicationStyle),r8=()=>z0(($)=>$.session.currentThinkingContent),BJ=()=>z0(($)=>$.session.thinkingExpanded),a8=()=>z0(($)=>$.session.currentStreamingMessageId),i8=()=>z0(AZ(($)=>({lines:$.session.currentStreamingLines,tail:$.session.currentStreamingTail,lineCount:$.session.currentStreamingLineCount,version:$.session.currentStreamingVersion}))),wJ=()=>z0(($)=>$.session.finalizingStreamingMessageId),PJ=()=>z0(($)=>$.session.historyExpanded),AJ=()=>z0(($)=>$.session.expandedMessageCount);import{randomUUID as H7}from"node:crypto";import{useMemoizedFn as X1}from"ahooks";import{useEffect as l1,useMemo as FY,useRef as N4}from"react";function MZ($,J){try{return $.code===J.code&&$.message===J.message&&$.retryable===J.retryable&&$.resource===J.resource}catch{return!1}}class q6{options;requested=!1;waitingForIdle=!1;disposed=!1;generation=0;wakeEpoch=0;idleEpoch=0;attempt=0;recoveryStartedAt=null;scheduledToken=null;activeAttemptToken=null;activeRunController=null;retryTimer=null;deadlineTimer=null;now;scheduleCallback;setTimerCallback;clearTimerCallback;constructor($){this.options=$;this.now=$.now??Date.now,this.scheduleCallback=$.scheduleMicrotask??queueMicrotask,this.setTimerCallback=$.setTimer??setTimeout,this.clearTimerCallback=$.clearTimer??clearTimeout}request(){if(this.disposed)return;if(this.wakeEpoch++,this.requested=!0,this.waitingForIdle||this.retryTimer)return;this.scheduleIfRunnable()}notifyIdle(){if(this.disposed)return;if(this.idleEpoch++,this.retryTimer)return;this.waitingForIdle=!1,this.scheduleIfRunnable()}dispose(){if(this.disposed)return;this.disposed=!0,this.generation++,this.requested=!1,this.waitingForIdle=!1,this.scheduledToken=null,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.activeAttemptToken=null;let $=this.activeRunController;this.activeRunController=null,$?.abort("pending-resume-coordinator-disposed"),this.resetEpisodeBudget()}scheduleIfRunnable(){if(this.disposed||!this.requested||this.scheduledToken||this.activeAttemptToken||this.retryTimer||this.waitingForIdle)return;if(!this.options.canRun()){this.waitingForIdle=!0;return}let $=this.generation,J={};this.scheduledToken=J;try{this.scheduleCallback(()=>{if(this.disposed||$!==this.generation||this.scheduledToken!==J)return;this.scheduledToken=null,this.flush($).catch((Y)=>{this.handleUnexpectedFailure(Y,$)})})}catch(Y){this.handleUnexpectedFailure(Y,$)}}async flush($){if(this.disposed||$!==this.generation||this.activeAttemptToken||!this.requested||this.retryTimer||this.waitingForIdle)return;if(!this.options.canRun()){this.waitingForIdle=!0;return}let J={},Y=new AbortController,Z=this.wakeEpoch,X=this.idleEpoch;if(this.attempt++,this.recoveryStartedAt===null)this.recoveryStartedAt=this.now(),this.installDeadlineTimer($);this.activeAttemptToken=J,this.activeRunController=Y;let Q;try{Q=await this.options.run(Y.signal)}finally{if(this.activeAttemptToken===J){if(this.activeAttemptToken=null,this.activeRunController=null,!this.disposed&&$!==this.generation)this.scheduleIfRunnable()}}if(this.disposed||$!==this.generation)return;if(Q.status==="completed"){let U=this.wakeEpoch!==Z;if(this.clearEpisode(),U)this.requested=!0,this.scheduleIfRunnable();return}if(Q.status==="deferred"){if(this.attempt--,this.attempt===0)this.clearOwnedTimer("deadline"),this.resetEpisodeBudget();if(this.requested=!0,this.idleEpoch!==X)this.waitingForIdle=!1,this.scheduleIfRunnable();else this.waitingForIdle=!0;return}this.handleFailure(Q,$)}handleFailure($,J){let Y=m2($.taskFailure),Z=this.options.sessionIdentity;if($.workKind!=="pending_input"||!$.evidence||!Z||!MZ($.taskFailure,$.evidence.taskFailure)){this.terminate("failed",this.attempt,Y);return}let X=TJ({sessionIdentity:Z,failedAttempt:this.attempt,recoveryStartedAt:this.recoveryStartedAt??this.now(),now:this.now(),workStillPending:$.workStillPending,evidence:$.evidence});if(X.phase!=="retry_scheduled"){this.terminate(X.phase,this.attempt,Y);return}this.requested=!0,this.waitingForIdle=!1;let Q={},U=this.setTimerCallback(()=>{if(this.disposed||J!==this.generation||this.retryTimer?.token!==Q)return;this.retryTimer=null,this.scheduleIfRunnable()},X.delayMs);this.retryTimer={handle:U,token:Q},U.unref?.()}handleUnexpectedFailure($,J){if(this.disposed||J!==this.generation)return;this.terminate("failed",Math.max(1,this.attempt),m2($),"pending-resume-coordinator-failed")}installDeadlineTimer($){let J={},Y=this.setTimerCallback(()=>{if(this.disposed||$!==this.generation||this.deadlineTimer?.token!==J)return;this.deadlineTimer=null,this.terminate("exhausted",Math.max(1,this.attempt),bJ("timeout"),"pending-resume-recovery-deadline-exceeded")},MJ);this.deadlineTimer={handle:Y,token:J},Y.unref?.()}terminate($,J,Y,Z){let X=this.activeRunController;if(this.generation++,this.requested=!1,this.waitingForIdle=!1,this.scheduledToken=null,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.resetEpisodeBudget(),Z)X?.abort(Z);try{this.options.onTerminalFailure?.({phase:$,attempt:J,taskFailure:Y})}catch{}}clearEpisode(){this.requested=!1,this.waitingForIdle=!1,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.resetEpisodeBudget()}resetEpisodeBudget(){this.attempt=0,this.recoveryStartedAt=null}clearOwnedTimer($){let J=$==="retry"?this.retryTimer:this.deadlineTimer;if(!J)return;if($==="retry")this.retryTimer=null;else this.deadlineTimer=null;this.clearTimerCallback(J.handle)}}class U8{options;finalized=!1;constructor($){this.options=$}get isFinalized(){return this.finalized}acceptsDeltas(){return!this.finalized&&!this.options.signal.aborted}startTurn(){this.finalized=!1}finalize(){if(!this.acceptsDeltas())return!1;return this.finalized=!0,this.commit(this.options.streamingBuffer.drainPendingBuffers()),!0}abortAndFinalize($){if(this.finalized)return $(),!1;this.finalized=!0;let J=this.options.streamingBuffer.drainPendingBuffers();return $(),this.commit(J),!0}discard(){this.finalized=!0,this.options.streamingBuffer.resetStreamingBuffers(),this.options.discardStreamingMessage(),this.options.clearThinking()}commit($){let J=this.options.getStreamingMessageId();if(J){if($.extraContent)o8(J,$.extraContent);CJ(J)}this.options.finalizeStreamingMessage($.extraContent,$.extraThinking)}}function TZ($){if(!($ instanceof Error))return"未知错误";let Z=$.lastError??$;if(Z.responseBody)try{let U=JSON.parse(Z.responseBody)?.error?.message;if(U){let G=Z.statusCode?` (HTTP ${Z.statusCode})`:"";return`${U}${G}`}}catch{}let X=$.message.match(/Last error:\s*(.+)$/);if(X)return X[1];return $.message}function CZ($){if(!($ instanceof Error))return!1;return $.name==="AbortError"||$.message.includes("aborted")}function RZ($){if(!($ instanceof Error))return!1;let J=$.message;return J.includes("can only concatenate str")||J.includes("image_url")||J.includes("multimodal")||J.includes("vision")||J.includes("does not support images")}function n8($){let J=CZ($),Y=RZ($),Z;if(Y)Z="当前模型不支持图片理解功能。请切换到支持视觉能力的模型(如 Claude 4.5、GPT-5.2、Gemini 3 Pro、Qwen3-VL-Plus 等)后重试。";else Z=TZ($);return{displayMessage:Z,isAbort:J,isVisionNotSupported:Y}}import{appendFileSync as yZ,mkdirSync as IZ,writeFileSync as SZ}from"node:fs";import kZ from"node:os";import _6 from"node:path";var RJ=null;function DZ(){let $=process.env.BLADE_STORAGE_ROOT||_6.join(kZ.homedir(),".blade");return _6.join($,"logs","stream-debug.log")}function fZ($){if(RJ===$)return;let J=_6.dirname($);IZ(J,{recursive:!0,mode:493}),SZ($,`=== Stream Debug Log Started: ${new Date().toISOString()} ===
1
+ import{e as JX,f as YX,h as S$,i as T4}from"./chunk-8j0z248z.js";import{l as YZ,m as XZ,n as ZZ}from"./chunk-f4d8312x.js";import{A as q4,y as MJ,z as TJ}from"./chunk-6dw3pk3c.js";import{Aa as QY,Ca as UY,Ea as lY,I as dY,M as LZ,O as m6,P as y6,Q as jY,W as AY,X as bY,_ as MY,da as i$,fa as SJ,ga as kJ,ia as TY,ka as q8,la as BX,ma as wX,pa as PX,qa as AX,ua as a9,va as w3,xa as F3,ya as L3,za as BZ}from"./chunk-rwm71p4g.js";import"./chunk-vzdsext4.js";import{Ma as E5,Na as g5,Oa as m5,Ra as FZ}from"./chunk-p8cmxhbr.js";import{Ta as PY}from"./chunk-9fyjyk2f.js";import{Mb as BY,Nb as F4,Zb as wY,ic as b6}from"./chunk-1b8qjgm6.js";import{tc as H8}from"./chunk-fdr4fcrf.js";import{Dd as _Y,Nd as bJ,Od as m2,Sd as yJ,Xd as IJ,Zd as t8,fe as z8,ie as a0}from"./chunk-4ts2s9mz.js";import"./chunk-egss0m1x.js";import{Me as vJ,Ne as A6,Oe as VJ}from"./chunk-ztreczac.js";import{jf as JY,kf as U4}from"./chunk-p6586ftx.js";import{xf as $Z}from"./chunk-je908ygr.js";import{Bf as Y1,yf as W8,zf as _4}from"./chunk-bx2s02mt.js";import"./chunk-p0wyhp5a.js";import{Ff as R2,Gf as L$,Hf as a1,If as z9,Jf as o8,Kf as CJ,Lf as s3,Mf as I9,Nf as a5,Of as e3,Pf as v2,Qf as m0,Rf as HZ,Sf as B$,Tf as eX,Uf as i4,Vf as O8,Yf as $Y,dg as z$}from"./chunk-5j94j64z.js";import"./chunk-v508x7cg.js";import"./chunk-5yyp6njq.js";import"./chunk-myvt7yjm.js";import"./chunk-4fbpydtn.js";import{vg as S9}from"./chunk-3cas6rv5.js";import"./chunk-zfxcef0z.js";import"./chunk-pqsjy31p.js";import{Ig as W4,Kg as pX,Pg as LX,Yg as WZ}from"./chunk-egc2f1ye.js";import"./chunk-kehgewqh.js";import"./chunk-kkzznz4w.js";import"./chunk-1cy4ab77.js";import"./chunk-7ajvrtb3.js";import{Ah as h$,yh as O9}from"./chunk-smxdn7kq.js";import"./chunk-ys8gysg8.js";import{Ni as OZ,Si as FX,Ti as NZ}from"./chunk-81py03y4.js";import{Vi as mJ}from"./chunk-qpmvp4q2.js";import{Wi as p2,Xi as e8,Zi as N9}from"./chunk-tm3789m3.js";import{cj as K$}from"./chunk-qdbbke8f.js";import"./chunk-wezr6wfq.js";import{Bj as _Z,Ej as H1}from"./chunk-rmfzym94.js";import{Mj as s5,Nj as e5,Qj as R1}from"./chunk-j89qk7bp.js";import"./chunk-0eajnhrj.js";import{ak as c5}from"./chunk-z0m9j0e2.js";import{dk as l9}from"./chunk-ggdgk3gy.js";import"./chunk-ky592ay9.js";import{Ak as eJ,gk as K8}from"./chunk-n52n2w5v.js";import{Nk as Y4}from"./chunk-cjfb4kjp.js";import{useMemoizedFn as G6}from"ahooks";import{useEffect as _z,useState as K6}from"react";import{useMemoizedFn as i0}from"ahooks";import tX from"ansi-escapes";import{Box as m1,useStdout as Zz}from"ink";import{useEffect as J1,useMemo as Qz,useRef as I2,useState as sX}from"react";import{useShallow as AZ}from"zustand/react/shallow";import{useStore as PZ}from"zustand";function z0($){return PZ(v2,$)}var bZ=[],V2=()=>z0(($)=>$.session.sessionId),O1=()=>z0(($)=>$.session.workspaceRoot),V8=()=>z0(($)=>$.session.messages),i9=()=>z0(($)=>$.session.clearCount),o9=()=>z0(($)=>$.session.isCompacting),n9=()=>z0(($)=>$.session.tokenUsage.estimatedCostUsd),t9=()=>z0(($)=>{let{totalInputTokens:J,cacheReadTokens:Y,cacheWriteTokens:Z}=$.session.tokenUsage;return a9({totalInputTokens:J,cacheReadTokens:Y,cacheWriteTokens:Z}).hitRate});var j8=()=>z0(($)=>$.session.providerRecovery),s9=()=>z0(($)=>$.session.turnActivity),e9=()=>z0(($)=>$.session.actionStationarity),d1=()=>z0(($)=>$.session.actions),$J=()=>z0(($)=>{let{totalTokens:J,maxContextTokens:Y}=$.session.tokenUsage;if(Y<=0)return 100;let Z=Math.max(0,100-J/Y*100);return Math.round(Z)}),JJ=()=>z0(($)=>$.app.initializationStatus),YJ=()=>z0(($)=>$.app.initializationError),j2=()=>z0(($)=>$.app.activeModal),XJ=()=>z0(($)=>$.app.tasks),ZJ=()=>z0(($)=>$.app.modelEditorTarget),QJ=()=>z0(($)=>$.app.sessionSelectorData),UJ=()=>z0(($)=>$.app.sessionHistoryViewerData),GJ=()=>z0(($)=>$.app.taskAttentionStatus),h8=()=>z0(($)=>$.app.taskAttentionUnreadKeys),KJ=()=>z0(($)=>$.app.awaitingSecondCtrlC),N1=()=>z0(($)=>$.app.actions),h2=()=>z0(($)=>$.app.sideConversation),zJ=()=>z0(($)=>$.app.teams),E8=()=>z0(($)=>$.app.initializationStatus==="ready"),qJ=()=>z0(($)=>$.app.tasks.length>0),E2=()=>z0(($)=>$.config.config?.permissionMode||"default"),_J=()=>z0(($)=>$.config.config?.models??bZ),g8=()=>z0(($)=>{let J=$.config.config;if(!J)return;let Y=J.currentModelId;return J.models.find((X)=>X.id===Y)??J.models[0]}),m8=()=>z0(($)=>$.config.config?.currentModelId),OJ=()=>z0(($)=>$.config.config?.agentTeamsEnabled===!0),D0=()=>z0(($)=>{return L$.getTheme()}),NJ=()=>z0(($)=>$.config.config?.codeTheme??"default"),s0=()=>z0(($)=>$.focus.currentFocus),HJ=()=>z0(($)=>$.focus.actions),g2=()=>z0(($)=>$.command.isProcessing),WJ=()=>z0(($)=>$.command.actions),p8=()=>z0(($)=>$.app.followUpQueue),FJ=()=>z0(($)=>$.app.followUpQueueMutation),LJ=()=>z0(($)=>$.command.recoveredSteeringCount),x8=()=>z0(($)=>$.app.reasoningEffort!=="off"),c8=()=>z0(($)=>$.app.reasoningEffort),u8=()=>z0(($)=>$.app.serviceTier),d8=()=>z0(($)=>$.app.responseVerbosity),l8=()=>z0(($)=>$.app.communicationStyle),r8=()=>z0(($)=>$.session.currentThinkingContent),BJ=()=>z0(($)=>$.session.thinkingExpanded),a8=()=>z0(($)=>$.session.currentStreamingMessageId),i8=()=>z0(AZ(($)=>({lines:$.session.currentStreamingLines,tail:$.session.currentStreamingTail,lineCount:$.session.currentStreamingLineCount,version:$.session.currentStreamingVersion}))),wJ=()=>z0(($)=>$.session.finalizingStreamingMessageId),PJ=()=>z0(($)=>$.session.historyExpanded),AJ=()=>z0(($)=>$.session.expandedMessageCount);import{randomUUID as H7}from"node:crypto";import{useMemoizedFn as X1}from"ahooks";import{useEffect as l1,useMemo as FY,useRef as N4}from"react";function MZ($,J){try{return $.code===J.code&&$.message===J.message&&$.retryable===J.retryable&&$.resource===J.resource}catch{return!1}}class q6{options;requested=!1;waitingForIdle=!1;disposed=!1;generation=0;wakeEpoch=0;idleEpoch=0;attempt=0;recoveryStartedAt=null;scheduledToken=null;activeAttemptToken=null;activeRunController=null;retryTimer=null;deadlineTimer=null;now;scheduleCallback;setTimerCallback;clearTimerCallback;constructor($){this.options=$;this.now=$.now??Date.now,this.scheduleCallback=$.scheduleMicrotask??queueMicrotask,this.setTimerCallback=$.setTimer??setTimeout,this.clearTimerCallback=$.clearTimer??clearTimeout}request(){if(this.disposed)return;if(this.wakeEpoch++,this.requested=!0,this.waitingForIdle||this.retryTimer)return;this.scheduleIfRunnable()}notifyIdle(){if(this.disposed)return;if(this.idleEpoch++,this.retryTimer)return;this.waitingForIdle=!1,this.scheduleIfRunnable()}dispose(){if(this.disposed)return;this.disposed=!0,this.generation++,this.requested=!1,this.waitingForIdle=!1,this.scheduledToken=null,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.activeAttemptToken=null;let $=this.activeRunController;this.activeRunController=null,$?.abort("pending-resume-coordinator-disposed"),this.resetEpisodeBudget()}scheduleIfRunnable(){if(this.disposed||!this.requested||this.scheduledToken||this.activeAttemptToken||this.retryTimer||this.waitingForIdle)return;if(!this.options.canRun()){this.waitingForIdle=!0;return}let $=this.generation,J={};this.scheduledToken=J;try{this.scheduleCallback(()=>{if(this.disposed||$!==this.generation||this.scheduledToken!==J)return;this.scheduledToken=null,this.flush($).catch((Y)=>{this.handleUnexpectedFailure(Y,$)})})}catch(Y){this.handleUnexpectedFailure(Y,$)}}async flush($){if(this.disposed||$!==this.generation||this.activeAttemptToken||!this.requested||this.retryTimer||this.waitingForIdle)return;if(!this.options.canRun()){this.waitingForIdle=!0;return}let J={},Y=new AbortController,Z=this.wakeEpoch,X=this.idleEpoch;if(this.attempt++,this.recoveryStartedAt===null)this.recoveryStartedAt=this.now(),this.installDeadlineTimer($);this.activeAttemptToken=J,this.activeRunController=Y;let Q;try{Q=await this.options.run(Y.signal)}finally{if(this.activeAttemptToken===J){if(this.activeAttemptToken=null,this.activeRunController=null,!this.disposed&&$!==this.generation)this.scheduleIfRunnable()}}if(this.disposed||$!==this.generation)return;if(Q.status==="completed"){let U=this.wakeEpoch!==Z;if(this.clearEpisode(),U)this.requested=!0,this.scheduleIfRunnable();return}if(Q.status==="deferred"){if(this.attempt--,this.attempt===0)this.clearOwnedTimer("deadline"),this.resetEpisodeBudget();if(this.requested=!0,this.idleEpoch!==X)this.waitingForIdle=!1,this.scheduleIfRunnable();else this.waitingForIdle=!0;return}this.handleFailure(Q,$)}handleFailure($,J){let Y=m2($.taskFailure),Z=this.options.sessionIdentity;if($.workKind!=="pending_input"||!$.evidence||!Z||!MZ($.taskFailure,$.evidence.taskFailure)){this.terminate("failed",this.attempt,Y);return}let X=TJ({sessionIdentity:Z,failedAttempt:this.attempt,recoveryStartedAt:this.recoveryStartedAt??this.now(),now:this.now(),workStillPending:$.workStillPending,evidence:$.evidence});if(X.phase!=="retry_scheduled"){this.terminate(X.phase,this.attempt,Y);return}this.requested=!0,this.waitingForIdle=!1;let Q={},U=this.setTimerCallback(()=>{if(this.disposed||J!==this.generation||this.retryTimer?.token!==Q)return;this.retryTimer=null,this.scheduleIfRunnable()},X.delayMs);this.retryTimer={handle:U,token:Q},U.unref?.()}handleUnexpectedFailure($,J){if(this.disposed||J!==this.generation)return;this.terminate("failed",Math.max(1,this.attempt),m2($),"pending-resume-coordinator-failed")}installDeadlineTimer($){let J={},Y=this.setTimerCallback(()=>{if(this.disposed||$!==this.generation||this.deadlineTimer?.token!==J)return;this.deadlineTimer=null,this.terminate("exhausted",Math.max(1,this.attempt),bJ("timeout"),"pending-resume-recovery-deadline-exceeded")},MJ);this.deadlineTimer={handle:Y,token:J},Y.unref?.()}terminate($,J,Y,Z){let X=this.activeRunController;if(this.generation++,this.requested=!1,this.waitingForIdle=!1,this.scheduledToken=null,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.resetEpisodeBudget(),Z)X?.abort(Z);try{this.options.onTerminalFailure?.({phase:$,attempt:J,taskFailure:Y})}catch{}}clearEpisode(){this.requested=!1,this.waitingForIdle=!1,this.clearOwnedTimer("retry"),this.clearOwnedTimer("deadline"),this.resetEpisodeBudget()}resetEpisodeBudget(){this.attempt=0,this.recoveryStartedAt=null}clearOwnedTimer($){let J=$==="retry"?this.retryTimer:this.deadlineTimer;if(!J)return;if($==="retry")this.retryTimer=null;else this.deadlineTimer=null;this.clearTimerCallback(J.handle)}}class U8{options;finalized=!1;constructor($){this.options=$}get isFinalized(){return this.finalized}acceptsDeltas(){return!this.finalized&&!this.options.signal.aborted}startTurn(){this.finalized=!1}finalize(){if(!this.acceptsDeltas())return!1;return this.finalized=!0,this.commit(this.options.streamingBuffer.drainPendingBuffers()),!0}abortAndFinalize($){if(this.finalized)return $(),!1;this.finalized=!0;let J=this.options.streamingBuffer.drainPendingBuffers();return $(),this.commit(J),!0}discard(){this.finalized=!0,this.options.streamingBuffer.resetStreamingBuffers(),this.options.discardStreamingMessage(),this.options.clearThinking()}commit($){let J=this.options.getStreamingMessageId();if(J){if($.extraContent)o8(J,$.extraContent);CJ(J)}this.options.finalizeStreamingMessage($.extraContent,$.extraThinking)}}function TZ($){if(!($ instanceof Error))return"未知错误";let Z=$.lastError??$;if(Z.responseBody)try{let U=JSON.parse(Z.responseBody)?.error?.message;if(U){let G=Z.statusCode?` (HTTP ${Z.statusCode})`:"";return`${U}${G}`}}catch{}let X=$.message.match(/Last error:\s*(.+)$/);if(X)return X[1];return $.message}function CZ($){if(!($ instanceof Error))return!1;return $.name==="AbortError"||$.message.includes("aborted")}function RZ($){if(!($ instanceof Error))return!1;let J=$.message;return J.includes("can only concatenate str")||J.includes("image_url")||J.includes("multimodal")||J.includes("vision")||J.includes("does not support images")}function n8($){let J=CZ($),Y=RZ($),Z;if(Y)Z="当前模型不支持图片理解功能。请切换到支持视觉能力的模型(如 Claude 4.5、GPT-5.2、Gemini 3 Pro、Qwen3-VL-Plus 等)后重试。";else Z=TZ($);return{displayMessage:Z,isAbort:J,isVisionNotSupported:Y}}import{appendFileSync as yZ,mkdirSync as IZ,writeFileSync as SZ}from"node:fs";import kZ from"node:os";import _6 from"node:path";var RJ=null;function DZ(){let $=process.env.BLADE_STORAGE_ROOT||_6.join(kZ.homedir(),".blade");return _6.join($,"logs","stream-debug.log")}function fZ($){if(RJ===$)return;let J=_6.dirname($);IZ(J,{recursive:!0,mode:493}),SZ($,`=== Stream Debug Log Started: ${new Date().toISOString()} ===
2
2
  `),RJ=$}function O6($,J,Y){try{let Z=DZ();fZ(Z);let X=new Date().toISOString(),Q=Y?` | ${JSON.stringify(Y)}`:"",U=`[${X}] [${$}] ${J}${Q}
3
3
  `;yZ(Z,U)}catch{}}var G8=H1("UI");function N6($,J){if(J.state==="requires_attention"){let Y=J.reason==="interrupted_tool_call";$.addToolMessage("Turn recovery requires attention",{toolName:"Runtime Recovery",phase:"complete",summary:Y?"An interrupted tool may have partially completed":"A completed tool may already have changed external state",detail:`${J.turnId} · inspect workspace, processes, and external state before retrying`});return}$.addToolMessage(J.state==="completed"?"Recovered completed turn":"Resuming interrupted turn",{toolName:"Runtime Recovery",phase:"complete",summary:J.state==="completed"?"The durable final response was recovered":"No tool execution was recorded before interruption",detail:J.turnId})}function DJ($,J){let Y=$.streamSession??new U8({signal:$.signal,streamingBuffer:$.streamingBuffer,getStreamingMessageId:$.getStreamingMessageId,finalizeStreamingMessage:$.sessionActions.finalizeStreamingMessage,discardStreamingMessage:$.sessionActions.discardStreamingMessage,clearThinking:()=>$.sessionActions.setCurrentThinkingContent(null)}),Z=(X)=>{for(let Q of X){if((Q.origin??"user")!=="user")continue;let U=$.commandActions.takeFollowUpPresentation(Q.id);if(U){$.sessionActions.addUserMessage(U.displayText);continue}if(!Q.recovered||Q.persisted)continue;let G=typeof Q.content==="string"?Q.content:Q.content.map((z)=>z.type==="text"?z.text:"[Image]").join(`
4
4
  `);$.sessionActions.addUserMessage(G)}};return(X)=>{switch(X.kind){case"content_delta":if(X.delta.length>0)J.outputStarted=!0;if(!Y.acceptsDeltas())break;J.contentDeltaCount++,J.contentDeltaTotalLen+=X.delta.length,O6("loopEventHandler","onContentDelta",{callCount:J.contentDeltaCount,deltaLen:X.delta.length,totalLen:J.contentDeltaTotalLen}),$.streamingBuffer.batchAppendContent(X.delta);break;case"thinking_delta":if(X.delta.length>0)J.outputStarted=!0;if(!Y.acceptsDeltas())break;if($.thinkingModeEnabled)$.streamingBuffer.batchAppendThinking(X.delta);break;case"stream_end":{$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),G8.debug("[loopEventHandler] stream_end",{contentDeltaCount:J.contentDeltaCount,contentDeltaTotalLen:J.contentDeltaTotalLen,streamFinalized:Y.isFinalized,signalAborted:$.signal.aborted}),O6("loopEventHandler","onStreamEnd",{contentDeltaCallCount:J.contentDeltaCount,contentDeltaTotalLen:J.contentDeltaTotalLen,streamFinalized:Y.isFinalized,signalAborted:$.signal.aborted}),Y.finalize();break}case"model_fallback":$.sessionActions.setProviderAdmission(null),$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),Y.discard();break;case"provider_admission":{let{kind:Q,...U}=X;$.sessionActions.setProviderAdmission(X.phase==="queued"?U:null);break}case"provider_circuit":{let{kind:Q,...U}=X;$.sessionActions.setProviderCircuit(X.phase==="closed"?null:U);break}case"provider_retry":{let{kind:Q,...U}=X;$.sessionActions.setProviderRetry(X.phase==="recovered"?null:U);break}case"provider_stall":{let{kind:Q,...U}=X;$.sessionActions.setProviderStall(X.phase==="detected"?U:null);break}case"provider_recovery":$.sessionActions.setProviderRecovery(X.recovery);break;case"action_stationarity":{let{kind:Q,...U}=X;$.sessionActions.setActionStationarity(X.phase==="recovered"?null:U);break}case"turn_recovery":{N6($.sessionActions,X.assessment);break}case"tool_start":{J.toolExecutionStarted=!0;let Q=X.toolCall;if(!("function"in Q))break;if(Q.function.name===t8)break;if(G8.debug("[loopEventHandler] tool_start",{toolName:Q.function.name,toolKind:X.toolKind}),["TaskCreate","TaskUpdate","TaskList"].includes(Q.function.name))break;try{let U=JSON.parse(Q.function.arguments),G=SJ(Q.function.name,U);$.sessionActions.addToolMessage(G,{toolCallId:Q.id,toolName:Q.function.name,phase:"start",summary:G,params:U})}catch(U){G8.error("[loopEventHandler] onToolStart error:",U)}break}case"tool_progress":{J.toolExecutionStarted=!0;let Q=X.toolCall;if(!("function"in Q))break;if(Q.function.name===t8)break;let U=X.update.total!==void 0?` ${Math.max(0,Math.min(100,Math.round((X.update.progress??0)/X.update.total*100)))}%`:"",G=`${Q.function.name}${U}: ${X.update.message}`;$.sessionActions.addToolMessage(G,{toolCallId:Q.id,toolName:Q.function.name,phase:"progress",summary:G,...X.update.admission?{admission:X.update.admission}:{}});break}case"tool_result":{J.toolExecutionStarted=!0;let Q=X.toolCall;if(!("function"in Q))break;if(Q.function.name===t8)break;G8.debug("[loopEventHandler] tool_result",{toolName:Q.function.name,success:X.result.success});let U=IJ(kJ(Q.function.name,X.result),yJ);$.sessionActions.addToolMessage(U.summary,{toolCallId:Q.id,toolName:Q.function.name,phase:"complete",summary:U.summary,detail:U.detail});break}case"structured_output":J.outputStarted=!0,$.sessionActions.replaceLastAssistantMessage(JSON.stringify(X.output,null,2));break;case"token_usage":$.sessionActions.updateTokenUsage(X.usage);break;case"compaction":if($.sessionActions.setCompacting(X.phase==="start"),X.phase==="end"){if(X.outcome!=="failed")$.sessionActions.resetContextUsage(),J.compactionCount=(J.compactionCount??0)+1;if(X.memory?.outcome==="written"){let Q=`Saved ${X.memory.entries} project memories`;$.sessionActions.addToolMessage(Q,{toolName:"Project Memory",phase:"complete",summary:Q})}}break;case"turn_start":G8.debug("[loopEventHandler] turn_start",{turn:X.turn,maxTurns:X.maxTurns}),$.sessionActions.updateTokenUsage({turnCount:X.turn}),$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),Y.startTurn();break;case"task_update":$.appActions.setTasks(X.tasks);break;case"goal_frontier_updated":$.appActions.setTasks(X.tasks);break;case"mcp_catalog_changed":{let Q=`MCP catalog r${X.revision}: +${X.added.length} -${X.removed.length} ~${X.updated.length}`;$.sessionActions.addToolMessage(Q,{toolName:"MCP Catalog",phase:"complete",summary:Q,detail:[X.added.length>0?`Added: ${X.added.join(", ")}`:"",X.removed.length>0?`Removed: ${X.removed.join(", ")}`:"",X.updated.length>0?`Updated: ${X.updated.join(", ")}`:""].filter(Boolean).join(`
@@ -1,2 +1,2 @@
1
- import{readFileSync as l}from"node:fs";import{dirname as o,join as d}from"node:path";import{fileURLToPath as u}from"node:url";var e={name:"blade-code",version:"0.10.201",private:!1,description:"🗡️ Blade Code - 智能代码助手命令行工具",type:"module",bin:{blade:"dist/blade.js"},files:["dist","vendor/ripgrep/**","README.md"],scripts:{dev:"node scripts/run-bun.js --watch src/blade.tsx","dev:serve":"node scripts/run-bun.js --watch src/blade.tsx serve --port 4097",build:"rm -rf dist && node scripts/run-bun.js run scripts/build.ts",start:"node scripts/run-bun.js run dist/blade.js",test:"node scripts/test.js","test:all":"node scripts/test.js all","test:unit":"node scripts/test.js unit","test:integration":"node scripts/test.js integration","test:real-api":"node scripts/test.js realApi","test:real-api:qualification":"node scripts/test.js realApiQualification","test:cli":"node scripts/test.js cli","test:headless-core":"node scripts/test.js headlessCore","test:e2e":"node scripts/test.js e2e","test:performance":"node scripts/test.js performance","test:snapshot":"node scripts/test.js snapshot","test:security":"node scripts/test.js security","browser:install":"playwright install chromium","browser:check":"node scripts/run-bun.js run scripts/browser-check.ts","test:coverage":"node scripts/test.js all --coverage","test:watch":"vitest --watch --config vitest.config.ts","qualify:local":"node scripts/run-bun.js run scripts/qualify.ts local","qualify:production":"node scripts/run-bun.js run scripts/qualify.ts production","benchmark:repo":"node scripts/run-bun.js run scripts/run-real-repo-benchmark.ts","test:update-snapshots":"node scripts/test.js snapshot --update",lint:"biome lint src tests","lint:fix":"biome lint --write src tests","type-check":"tsc --noEmit","format:check":"biome format src tests",ready:"node scripts/run-bun.js run scripts/qualify.ts production","detect-unused":"node scripts/run-bun.js run scripts/detect-unused.ts",prepack:"node scripts/run-bun.js run build",release:"node scripts/release.js","release:dry":"node scripts/release.js --dry-run","release:major":"node scripts/release.js --major","release:minor":"node scripts/release.js --minor","release:patch":"node scripts/release.js --patch"},keywords:["cli","blade","ai","assistant","agent","llm"],author:"echoVic",license:"MIT",repository:{type:"git",url:"git+https://github.com/echoVic/blade-code.git"},homepage:"https://github.com/echoVic/blade-code#readme",bugs:{url:"https://github.com/echoVic/blade-code/issues"},engines:{node:">=22.19.0"},optionalDependencies:{"@vscode/ripgrep":"^1.18.0","better-sqlite3":"^11.8.1","bun-pty":"^0.4.8","node-pty":"1.1.0"},dependencies:{"@agentclientprotocol/sdk":"^1.3.0","@anthropic-ai/sandbox-runtime":"0.0.67","@earendil-works/pi-ai":"0.84.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0",ahooks:"^3.9.7",ajv:"^8.17.1","ansi-escapes":"^7.3.0","async-mutex":"^0.5.0",axios:"^1.19.0",chalk:"^5.4.1",diff:"^8.0.2","fast-glob":"^3.3.3","fuse.js":"^7.5.0","gray-matter":"^4.0.3",hono:"^4.13.0",ink:"npm:@jrichman/ink@6.4.10","ink-big-text":"^2.0.0","ink-gradient":"^3.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-tiktoken":"^1.0.21","lodash-es":"^4.18.1",lowlight:"^3.3.0","lru-cache":"^11.5.2",nanoid:"^5.1.6",open:"^10.1.2",picomatch:"^4.0.5",playwright:"1.62.1","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4",semver:"^7.8.5","string-width":"^8.2.2",typebox:"1.3.10",undici:"^7.16.0","vscode-jsonrpc":"8.2.1","vscode-languageserver-protocol":"3.17.5","vscode-languageserver-types":"3.17.5","write-file-atomic":"^7.0.0",ws:"^8.21.2",yaml:"^2.9.0",yargs:"^18.1.0",zustand:"^5.0.14"},devDependencies:{"@biomejs/biome":"2.5.7","@types/bun":"^1.3.14","@types/json-schema":"^7.0.15","@types/lodash-es":"^4.17.12","@types/node":"^22.15.24","@types/picomatch":"^4.0.3","@types/proper-lockfile":"^4.1.4","@types/react":"19.2.10","@types/react-dom":"19.2.3","@types/semver":"^7.8.0","@types/write-file-atomic":"^4.0.3","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vitest/coverage-v8":"^4.1.10",jsdom:"^26.0.0",typescript:"^5.9.2",vitest:"^4.1.10"}};var s;function r(){if(s)return s;let i=o(u(import.meta.url));for(let n=0;n<5;n++){try{let t=JSON.parse(l(d(i,"package.json"),"utf8"));if(t.name===e.name&&typeof t.version==="string"&&typeof t.description==="string")return s=t,s}catch{}i=o(i)}return s={name:e.name,version:process.env.BLADE_VERSION??e.version,description:e.description},s}function y(){return{...r()}}function p(){return r().version}function v(){return r().name}function w(){return r().description}function g(){return`v${p()}`}function f(){return`v${p()} © 2025 Blade Code`}
1
+ import{readFileSync as l}from"node:fs";import{dirname as o,join as d}from"node:path";import{fileURLToPath as u}from"node:url";var e={name:"blade-code",version:"0.10.204",private:!1,description:"🗡️ Blade Code - 智能代码助手命令行工具",type:"module",bin:{blade:"dist/blade.js"},files:["dist","vendor/ripgrep/**","README.md"],scripts:{dev:"node scripts/run-bun.js --watch src/blade.tsx","dev:serve":"node scripts/run-bun.js --watch src/blade.tsx serve --port 4097",build:"rm -rf dist && node scripts/run-bun.js run scripts/build.ts",start:"node scripts/run-bun.js run dist/blade.js",test:"node scripts/test.js","test:all":"node scripts/test.js all","test:unit":"node scripts/test.js unit","test:integration":"node scripts/test.js integration","test:real-api":"node scripts/test.js realApi","test:real-api:qualification":"node scripts/test.js realApiQualification","test:cli":"node scripts/test.js cli","test:headless-core":"node scripts/test.js headlessCore","test:e2e":"node scripts/test.js e2e","test:performance":"node scripts/test.js performance","test:snapshot":"node scripts/test.js snapshot","test:security":"node scripts/test.js security","browser:install":"playwright install chromium","browser:check":"node scripts/run-bun.js run scripts/browser-check.ts","test:coverage":"node scripts/test.js all --coverage","test:watch":"vitest --watch --config vitest.config.ts","qualify:local":"node scripts/run-bun.js run scripts/qualify.ts local","qualify:production":"node scripts/run-bun.js run scripts/qualify.ts production","benchmark:repo":"node scripts/run-bun.js run scripts/run-real-repo-benchmark.ts","test:update-snapshots":"node scripts/test.js snapshot --update",lint:"biome lint src tests","lint:fix":"biome lint --write src tests","type-check":"tsc --noEmit","format:check":"biome format src tests",ready:"node scripts/run-bun.js run scripts/qualify.ts production","detect-unused":"node scripts/run-bun.js run scripts/detect-unused.ts",prepack:"node scripts/run-bun.js run build",release:"node scripts/release.js","release:dry":"node scripts/release.js --dry-run","release:major":"node scripts/release.js --major","release:minor":"node scripts/release.js --minor","release:patch":"node scripts/release.js --patch"},keywords:["cli","blade","ai","assistant","agent","llm"],author:"echoVic",license:"MIT",repository:{type:"git",url:"git+https://github.com/echoVic/blade-code.git"},homepage:"https://github.com/echoVic/blade-code#readme",bugs:{url:"https://github.com/echoVic/blade-code/issues"},engines:{node:">=22.19.0"},optionalDependencies:{"@vscode/ripgrep":"^1.18.0","better-sqlite3":"^11.8.1","bun-pty":"^0.4.8","node-pty":"1.1.0"},dependencies:{"@agentclientprotocol/sdk":"^1.3.0","@anthropic-ai/sandbox-runtime":"0.0.67","@earendil-works/pi-ai":"0.84.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0",ahooks:"^3.9.7",ajv:"^8.17.1","ansi-escapes":"^7.3.0","async-mutex":"^0.5.0",axios:"^1.19.0",chalk:"^5.4.1",diff:"^8.0.2","fast-glob":"^3.3.3","fuse.js":"^7.5.0","gray-matter":"^4.0.3",hono:"^4.13.0",ink:"npm:@jrichman/ink@6.4.10","ink-big-text":"^2.0.0","ink-gradient":"^3.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-tiktoken":"^1.0.21","lodash-es":"^4.18.1",lowlight:"^3.3.0","lru-cache":"^11.5.2",nanoid:"^5.1.6",open:"^10.1.2",picomatch:"^4.0.5",playwright:"1.62.1","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4",semver:"^7.8.5","string-width":"^8.2.2",typebox:"1.3.10",undici:"^7.16.0","vscode-jsonrpc":"8.2.1","vscode-languageserver-protocol":"3.17.5","vscode-languageserver-types":"3.17.5","write-file-atomic":"^7.0.0",ws:"^8.21.2",yaml:"^2.9.0",yargs:"^18.1.0",zustand:"^5.0.14"},devDependencies:{"@biomejs/biome":"2.5.7","@types/bun":"^1.3.14","@types/json-schema":"^7.0.15","@types/lodash-es":"^4.17.12","@types/node":"^22.15.24","@types/picomatch":"^4.0.3","@types/proper-lockfile":"^4.1.4","@types/react":"19.2.10","@types/react-dom":"19.2.3","@types/semver":"^7.8.0","@types/write-file-atomic":"^4.0.3","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vitest/coverage-v8":"^4.1.10",jsdom:"^26.0.0",typescript:"^5.9.2",vitest:"^4.1.10"}};var s;function r(){if(s)return s;let i=o(u(import.meta.url));for(let n=0;n<5;n++){try{let t=JSON.parse(l(d(i,"package.json"),"utf8"));if(t.name===e.name&&typeof t.version==="string"&&typeof t.description==="string")return s=t,s}catch{}i=o(i)}return s={name:e.name,version:process.env.BLADE_VERSION??e.version,description:e.description},s}function y(){return{...r()}}function p(){return r().version}function v(){return r().name}function w(){return r().description}function g(){return`v${p()}`}function f(){return`v${p()} © 2025 Blade Code`}
2
2
  export{y as Xj,p as Yj,v as Zj,w as _j,g as $j,f as ak};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blade-code",
3
- "version": "0.10.201",
3
+ "version": "0.10.204",
4
4
  "private": false,
5
5
  "description": "🗡️ Blade Code - 智能代码助手命令行工具",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{sf as a,tf as b}from"./chunk-dmcp5kax.js";import"./chunk-pkm64kvm.js";import"./chunk-cjfb4kjp.js";export{a as globalOptions,b as cliConfig};
@@ -1 +0,0 @@
1
- import{k as a,l as b,m as c,n as d,o as e}from"./chunk-vt31dw3y.js";import"./chunk-pkm64kvm.js";import"./chunk-cjfb4kjp.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};