blade-code 0.10.111 → 0.10.113

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 (41) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-snj119c2.js → chunk-0210yytk.js} +1 -1
  3. package/dist/{chunk-agpbarbx.js → chunk-0cmykdaz.js} +1 -1
  4. package/dist/chunk-0djwmr9n.js +1 -0
  5. package/dist/{chunk-xgbnb37n.js → chunk-176zc8a3.js} +1 -1
  6. package/dist/{chunk-cv20apqr.js → chunk-36jpqn5e.js} +1 -1
  7. package/dist/{chunk-1n23f3qb.js → chunk-39eq0g43.js} +1 -1
  8. package/dist/{chunk-4je46cyf.js → chunk-3zdvhjsb.js} +94 -94
  9. package/dist/{chunk-32zgv9dx.js → chunk-5npfhnxn.js} +1 -1
  10. package/dist/{chunk-vvhnv7ng.js → chunk-5y4b3tkr.js} +1 -1
  11. package/dist/{chunk-50prvxfw.js → chunk-6vgmh02j.js} +1 -1
  12. package/dist/{chunk-fymsjr4x.js → chunk-80pzkgqm.js} +1 -1
  13. package/dist/{chunk-gner6fka.js → chunk-919rht8b.js} +1 -1
  14. package/dist/{chunk-8pr55zfw.js → chunk-9r3385rd.js} +1 -1
  15. package/dist/{chunk-h25qd3d7.js → chunk-cebfh25a.js} +1 -1
  16. package/dist/chunk-e95gnshr.js +1 -0
  17. package/dist/{chunk-3y8qp69k.js → chunk-egmexjyx.js} +1 -1
  18. package/dist/{chunk-bq9cg7pa.js → chunk-etq4258m.js} +1 -1
  19. package/dist/{chunk-ep657gs0.js → chunk-h29mbyse.js} +1 -1
  20. package/dist/{chunk-ahjh8y56.js → chunk-hb2g6rpz.js} +1 -1
  21. package/dist/{chunk-tk7yfgay.js → chunk-jjsv2xt1.js} +1 -1
  22. package/dist/{chunk-zh2vrkyt.js → chunk-kev3cwe9.js} +1 -1
  23. package/dist/{chunk-kx05z7sx.js → chunk-m525zvkb.js} +1 -1
  24. package/dist/{chunk-wkvh3xrp.js → chunk-mqb6vpwk.js} +1 -1
  25. package/dist/{chunk-k7980hzm.js → chunk-n9tx6w5y.js} +2 -2
  26. package/dist/{chunk-e99c1t8e.js → chunk-nqgsh5ew.js} +1 -1
  27. package/dist/{chunk-541h9the.js → chunk-pqsh9kqd.js} +1 -1
  28. package/dist/{chunk-s6xw42mr.js → chunk-r7wwr5f6.js} +1 -1
  29. package/dist/{chunk-exv2prhq.js → chunk-rrjccake.js} +2 -2
  30. package/dist/{chunk-zgw04ttb.js → chunk-s9mrvjm3.js} +1 -1
  31. package/dist/{chunk-zkrtn8b1.js → chunk-spth418m.js} +1 -1
  32. package/dist/{chunk-d7ytnvqy.js → chunk-v4nankr5.js} +1 -1
  33. package/dist/{chunk-z1da8k2d.js → chunk-w3wsder6.js} +1 -1
  34. package/dist/{chunk-2hmc9pr9.js → chunk-xt3vz464.js} +1 -1
  35. package/dist/{chunk-4k61tkpp.js → chunk-y79b5d72.js} +1 -1
  36. package/dist/{chunk-j7bdnptp.js → chunk-y8mta9ad.js} +1 -1
  37. package/dist/{chunk-g4ftk610.js → chunk-yzmgf1vc.js} +1 -1
  38. package/dist/{chunk-t30jd4wg.js → chunk-z23rwax1.js} +1 -1
  39. package/package.json +1 -1
  40. package/dist/chunk-6pp5945x.js +0 -1
  41. package/dist/chunk-ceaee099.js +0 -1
@@ -1,4 +1,4 @@
1
- import{e as G3,f as U3}from"./chunk-3pwq56je.js";import{i as qZ,j as zZ,k as OZ}from"./chunk-gner6fka.js";import{x as P2}from"./chunk-xgbnb37n.js";import{$ as y9,F as N6,J as MZ,L as h4,M as f4,N as X6,T as l9,U as r9,Y as E$,_ as M9,ba as a9,da as v8,ea as y3,fa as R3,ia as T3,ja as C3,na as dJ,oa as D6,qa as k6,ra as f6,sa as yZ,ta as V9,va as j9,xa as H6}from"./chunk-4je46cyf.js";import"./chunk-ypbnczjp.js";import{Fa as cY,Ga as dY,Ha as lY,Ka as PZ}from"./chunk-vvhnv7ng.js";import{Ma as d9}from"./chunk-23v8c9b8.js";import{Gb as c9,Pb as R4,tb as x9,ub as u9}from"./chunk-exv2prhq.js";import{_b as E8}from"./chunk-cnhw5mqv.js";import{Ed as C9,Fd as y4,Gd as I9,Id as W2,Qd as f8,Td as f0,dd as E9,sd as b9,xd as P9}from"./chunk-tk7yfgay.js";import"./chunk-53h87fmt.js";import"./chunk-qdv0n8yt.js";import{we as GZ}from"./chunk-bksfg23m.js";import{Ae as n$,xe as h8,ye as M2}from"./chunk-d7ytnvqy.js";import"./chunk-ng96f4xd.js";import{Ee as t1,Fe as K$,Ge as R1,He as UJ,Ie as H2,Je as B9,Ke as OY,Le as CJ,Me as eY,Ne as _Y,Oe as J8,Pe as Y$,Qe as AZ,Re as G$,Se as KZ,Te as Z4,Ue as V8,Xe as v9,cf as a0}from"./chunk-3y8qp69k.js";import"./chunk-v508x7cg.js";import"./chunk-pshyn3yy.js";import"./chunk-q2exry0f.js";import{sf as IJ}from"./chunk-tj2efrs1.js";import"./chunk-hv6hrsnk.js";import"./chunk-h25qd3d7.js";import{Ef as T2,Hf as m3,Mf as M3,Vf as bZ}from"./chunk-g4ftk610.js";import"./chunk-cqqmkwvn.js";import"./chunk-9g64g1np.js";import"./chunk-935v0gpc.js";import{rg as OJ,tg as y$}from"./chunk-zh2vrkyt.js";import"./chunk-eyb9psbc.js";import{Ah as P3,Bh as BZ,vh as wZ}from"./chunk-zkrtn8b1.js";import"./chunk-4w4wjm49.js";import"./chunk-6k5k40p8.js";import{Kh as K8,Lh as L2,Nh as _J}from"./chunk-p3m1jyg5.js";import{Sh as Z$}from"./chunk-ecd727xh.js";import"./chunk-x05zyqzf.js";import{pi as LZ,si as y1}from"./chunk-dvv28pkc.js";import{ui as X3,vi as Q3,yi as Q1}from"./chunk-dgf2xzzd.js";import"./chunk-z52s82k7.js";import{Ki as iY}from"./chunk-s6xw42mr.js";import{Ni as cJ}from"./chunk-vbwvsgs1.js";import"./chunk-sr10jsjs.js";import{Yi as M4}from"./chunk-rkdxqx8m.js";import{_i as zJ}from"./chunk-tf7ezqew.js";import{useMemoizedFn as H4}from"ahooks";import{useEffect as yK,useState as F4}from"react";import{useMemoizedFn as t0}from"ahooks";import QZ from"ansi-escapes";import{Box as W1,useStdout as LK}from"ink";import{useEffect as L1,useMemo as wK,useRef as n8,useState as BK}from"react";import{useShallow as TZ}from"zustand/react/shallow";import{useStore as RZ}from"zustand";function Z0($){return RZ(J8,$)}var CZ=[],Y8=()=>Z0(($)=>$.session.sessionId),o$=()=>Z0(($)=>$.session.workspaceRoot),$2=()=>Z0(($)=>$.session.messages),lJ=()=>Z0(($)=>$.session.clearCount),rJ=()=>Z0(($)=>$.session.isCompacting),aJ=()=>Z0(($)=>$.session.tokenUsage.estimatedCostUsd),iJ=()=>Z0(($)=>{let{totalInputTokens:J,cacheReadTokens:Z,cacheWriteTokens:Y}=$.session.tokenUsage;return dJ({totalInputTokens:J,cacheReadTokens:Z,cacheWriteTokens:Y}).hitRate}),oJ=()=>Z0(($)=>$.session.providerCircuit),nJ=()=>Z0(($)=>$.session.providerAdmission),tJ=()=>Z0(($)=>$.session.providerRetry),sJ=()=>Z0(($)=>$.session.providerStall),eJ=()=>Z0(($)=>$.session.actionStationarity),P1=()=>Z0(($)=>$.session.actions),$9=()=>Z0(($)=>{let{totalTokens:J,maxContextTokens:Z}=$.session.tokenUsage;if(Z<=0)return 100;let Y=Math.max(0,100-J/Z*100);return Math.round(Y)}),J9=()=>Z0(($)=>$.app.initializationStatus),Y9=()=>Z0(($)=>$.app.initializationError),J2=()=>Z0(($)=>$.app.activeModal),Z9=()=>Z0(($)=>$.app.tasks),X9=()=>Z0(($)=>$.app.modelEditorTarget),Q9=()=>Z0(($)=>$.app.sessionSelectorData),K9=()=>Z0(($)=>$.app.awaitingSecondCtrlC),M1=()=>Z0(($)=>$.app.actions),Y2=()=>Z0(($)=>$.app.sideConversation),G9=()=>Z0(($)=>$.app.teams),Z2=()=>Z0(($)=>$.app.initializationStatus==="ready"),U9=()=>Z0(($)=>$.app.tasks.length>0),Z8=()=>Z0(($)=>$.config.config?.permissionMode||"default"),q9=()=>Z0(($)=>$.config.config?.models??CZ),X2=()=>Z0(($)=>{let J=$.config.config;if(!J)return;let Z=J.currentModelId;return J.models.find((X)=>X.id===Z)??J.models[0]}),Q2=()=>Z0(($)=>$.config.config?.currentModelId),z9=()=>Z0(($)=>$.config.config?.agentTeamsEnabled===!0),P0=()=>Z0(($)=>{return K$.getTheme()}),O9=()=>Z0(($)=>$.config.config?.codeTheme??"default"),r0=()=>Z0(($)=>$.focus.currentFocus),_9=()=>Z0(($)=>$.focus.actions),X8=()=>Z0(($)=>$.command.isProcessing),N9=()=>Z0(($)=>$.command.actions),Q8=()=>Z0(($)=>$.command.pendingCommands),H9=()=>Z0(($)=>$.command.recoveredSteeringCount),K2=()=>Z0(($)=>$.app.reasoningEffort!=="off"),G2=()=>Z0(($)=>$.app.reasoningEffort),U2=()=>Z0(($)=>$.app.serviceTier),q2=()=>Z0(($)=>$.app.responseVerbosity),z2=()=>Z0(($)=>$.app.communicationStyle),O2=()=>Z0(($)=>$.session.currentThinkingContent),F9=()=>Z0(($)=>$.session.thinkingExpanded),_2=()=>Z0(($)=>$.session.currentStreamingMessageId),N2=()=>Z0(TZ(($)=>({lines:$.session.currentStreamingLines,tail:$.session.currentStreamingTail,lineCount:$.session.currentStreamingLineCount,version:$.session.currentStreamingVersion}))),W9=()=>Z0(($)=>$.session.finalizingStreamingMessageId),L9=()=>Z0(($)=>$.session.historyExpanded),w9=()=>Z0(($)=>$.session.expandedMessageCount);import{useMemoizedFn as X1}from"ahooks";import{useEffect as g1,useMemo as oZ,useRef as R2}from"react";class W4{options;requested=!1;scheduled=!1;inFlight=!1;disposed=!1;generation=0;activeRunController=null;scheduleCallback;constructor($){this.options=$;this.scheduleCallback=$.schedule??queueMicrotask}request(){if(this.disposed)return;this.requested=!0,this.scheduleIfRunnable()}notifyIdle(){this.scheduleIfRunnable()}dispose(){this.disposed=!0,this.requested=!1,this.scheduled=!1,this.generation++,this.activeRunController?.abort("pending-resume-coordinator-disposed"),this.activeRunController=null}scheduleIfRunnable(){if(this.disposed||!this.requested||this.scheduled||this.inFlight||!this.options.canRun())return;this.scheduled=!0;let $=this.generation;this.scheduleCallback(()=>{if(this.disposed||$!==this.generation)return;this.scheduled=!1,this.flush()})}async flush(){if(this.disposed||this.inFlight||!this.requested||!this.options.canRun())return;this.requested=!1,this.inFlight=!0;let $=new AbortController;this.activeRunController=$;let J="completed";try{J=await this.options.run($.signal)}finally{if(this.activeRunController===$)this.activeRunController=null;if(this.inFlight=!1,J==="deferred")this.requested=!0;this.scheduleIfRunnable()}}}class S8{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)H2(J,$.extraContent);B9(J)}this.options.finalizeStreamingMessage($.extraContent,$.extraThinking)}}function IZ($){if(!($ instanceof Error))return"未知错误";let Y=$.lastError??$;if(Y.responseBody)try{let K=JSON.parse(Y.responseBody)?.error?.message;if(K){let G=Y.statusCode?` (HTTP ${Y.statusCode})`:"";return`${K}${G}`}}catch{}let X=$.message.match(/Last error:\s*(.+)$/);if(X)return X[1];return $.message}function SZ($){if(!($ instanceof Error))return!1;return $.name==="AbortError"||$.message.includes("aborted")}function kZ($){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 F2($){let J=SZ($),Z=kZ($),Y;if(Z)Y="当前模型不支持图片理解功能。请切换到支持视觉能力的模型(如 Claude 4.5、GPT-5.2、Gemini 3 Pro、Qwen3-VL-Plus 等)后重试。";else Y=IZ($);return{displayMessage:Y,isAbort:J,isVisionNotSupported:Z}}import{appendFileSync as fZ,mkdirSync as vZ,writeFileSync as DZ}from"node:fs";import VZ from"node:os";import L4 from"node:path";var A9=null;function jZ(){let $=process.env.BLADE_STORAGE_ROOT||L4.join(VZ.homedir(),".blade");return L4.join($,"logs","stream-debug.log")}function EZ($){if(A9===$)return;let J=L4.dirname($);vZ(J,{recursive:!0,mode:493}),DZ($,`=== Stream Debug Log Started: ${new Date().toISOString()} ===
1
+ import{e as G3,f as U3}from"./chunk-3pwq56je.js";import{i as qZ,j as zZ,k as OZ}from"./chunk-919rht8b.js";import{x as P2}from"./chunk-176zc8a3.js";import{$ as y9,F as N6,J as MZ,L as h4,M as f4,N as X6,T as l9,U as r9,Y as E$,_ as M9,ba as a9,da as v8,ea as y3,fa as R3,ia as T3,ja as C3,na as dJ,oa as D6,qa as k6,ra as f6,sa as yZ,ta as V9,va as j9,xa as H6}from"./chunk-3zdvhjsb.js";import"./chunk-ypbnczjp.js";import{Fa as cY,Ga as dY,Ha as lY,Ka as PZ}from"./chunk-5y4b3tkr.js";import{Ma as d9}from"./chunk-23v8c9b8.js";import{Gb as c9,Pb as R4,tb as x9,ub as u9}from"./chunk-rrjccake.js";import{_b as E8}from"./chunk-cnhw5mqv.js";import{Ed as C9,Fd as y4,Gd as I9,Id as W2,Qd as f8,Td as f0,dd as E9,sd as b9,xd as P9}from"./chunk-jjsv2xt1.js";import"./chunk-53h87fmt.js";import"./chunk-qdv0n8yt.js";import{we as GZ}from"./chunk-bksfg23m.js";import{Ae as n$,xe as h8,ye as M2}from"./chunk-v4nankr5.js";import"./chunk-ng96f4xd.js";import{Ee as t1,Fe as K$,Ge as R1,He as UJ,Ie as H2,Je as B9,Ke as OY,Le as CJ,Me as eY,Ne as _Y,Oe as J8,Pe as Y$,Qe as AZ,Re as G$,Se as KZ,Te as Z4,Ue as V8,Xe as v9,cf as a0}from"./chunk-egmexjyx.js";import"./chunk-v508x7cg.js";import"./chunk-pshyn3yy.js";import"./chunk-q2exry0f.js";import{sf as IJ}from"./chunk-tj2efrs1.js";import"./chunk-hv6hrsnk.js";import"./chunk-cebfh25a.js";import{Ef as T2,Hf as m3,Mf as M3,Vf as bZ}from"./chunk-yzmgf1vc.js";import"./chunk-cqqmkwvn.js";import"./chunk-9g64g1np.js";import"./chunk-935v0gpc.js";import{rg as OJ,tg as y$}from"./chunk-kev3cwe9.js";import"./chunk-eyb9psbc.js";import{Ah as P3,Bh as BZ,vh as wZ}from"./chunk-spth418m.js";import"./chunk-4w4wjm49.js";import"./chunk-6k5k40p8.js";import{Kh as K8,Lh as L2,Nh as _J}from"./chunk-p3m1jyg5.js";import{Sh as Z$}from"./chunk-ecd727xh.js";import"./chunk-x05zyqzf.js";import{pi as LZ,si as y1}from"./chunk-dvv28pkc.js";import{ui as X3,vi as Q3,yi as Q1}from"./chunk-dgf2xzzd.js";import"./chunk-z52s82k7.js";import{Ki as iY}from"./chunk-r7wwr5f6.js";import{Ni as cJ}from"./chunk-vbwvsgs1.js";import"./chunk-sr10jsjs.js";import{Yi as M4}from"./chunk-rkdxqx8m.js";import{_i as zJ}from"./chunk-tf7ezqew.js";import{useMemoizedFn as H4}from"ahooks";import{useEffect as yK,useState as F4}from"react";import{useMemoizedFn as t0}from"ahooks";import QZ from"ansi-escapes";import{Box as W1,useStdout as LK}from"ink";import{useEffect as L1,useMemo as wK,useRef as n8,useState as BK}from"react";import{useShallow as TZ}from"zustand/react/shallow";import{useStore as RZ}from"zustand";function Z0($){return RZ(J8,$)}var CZ=[],Y8=()=>Z0(($)=>$.session.sessionId),o$=()=>Z0(($)=>$.session.workspaceRoot),$2=()=>Z0(($)=>$.session.messages),lJ=()=>Z0(($)=>$.session.clearCount),rJ=()=>Z0(($)=>$.session.isCompacting),aJ=()=>Z0(($)=>$.session.tokenUsage.estimatedCostUsd),iJ=()=>Z0(($)=>{let{totalInputTokens:J,cacheReadTokens:Z,cacheWriteTokens:Y}=$.session.tokenUsage;return dJ({totalInputTokens:J,cacheReadTokens:Z,cacheWriteTokens:Y}).hitRate}),oJ=()=>Z0(($)=>$.session.providerCircuit),nJ=()=>Z0(($)=>$.session.providerAdmission),tJ=()=>Z0(($)=>$.session.providerRetry),sJ=()=>Z0(($)=>$.session.providerStall),eJ=()=>Z0(($)=>$.session.actionStationarity),P1=()=>Z0(($)=>$.session.actions),$9=()=>Z0(($)=>{let{totalTokens:J,maxContextTokens:Z}=$.session.tokenUsage;if(Z<=0)return 100;let Y=Math.max(0,100-J/Z*100);return Math.round(Y)}),J9=()=>Z0(($)=>$.app.initializationStatus),Y9=()=>Z0(($)=>$.app.initializationError),J2=()=>Z0(($)=>$.app.activeModal),Z9=()=>Z0(($)=>$.app.tasks),X9=()=>Z0(($)=>$.app.modelEditorTarget),Q9=()=>Z0(($)=>$.app.sessionSelectorData),K9=()=>Z0(($)=>$.app.awaitingSecondCtrlC),M1=()=>Z0(($)=>$.app.actions),Y2=()=>Z0(($)=>$.app.sideConversation),G9=()=>Z0(($)=>$.app.teams),Z2=()=>Z0(($)=>$.app.initializationStatus==="ready"),U9=()=>Z0(($)=>$.app.tasks.length>0),Z8=()=>Z0(($)=>$.config.config?.permissionMode||"default"),q9=()=>Z0(($)=>$.config.config?.models??CZ),X2=()=>Z0(($)=>{let J=$.config.config;if(!J)return;let Z=J.currentModelId;return J.models.find((X)=>X.id===Z)??J.models[0]}),Q2=()=>Z0(($)=>$.config.config?.currentModelId),z9=()=>Z0(($)=>$.config.config?.agentTeamsEnabled===!0),P0=()=>Z0(($)=>{return K$.getTheme()}),O9=()=>Z0(($)=>$.config.config?.codeTheme??"default"),r0=()=>Z0(($)=>$.focus.currentFocus),_9=()=>Z0(($)=>$.focus.actions),X8=()=>Z0(($)=>$.command.isProcessing),N9=()=>Z0(($)=>$.command.actions),Q8=()=>Z0(($)=>$.command.pendingCommands),H9=()=>Z0(($)=>$.command.recoveredSteeringCount),K2=()=>Z0(($)=>$.app.reasoningEffort!=="off"),G2=()=>Z0(($)=>$.app.reasoningEffort),U2=()=>Z0(($)=>$.app.serviceTier),q2=()=>Z0(($)=>$.app.responseVerbosity),z2=()=>Z0(($)=>$.app.communicationStyle),O2=()=>Z0(($)=>$.session.currentThinkingContent),F9=()=>Z0(($)=>$.session.thinkingExpanded),_2=()=>Z0(($)=>$.session.currentStreamingMessageId),N2=()=>Z0(TZ(($)=>({lines:$.session.currentStreamingLines,tail:$.session.currentStreamingTail,lineCount:$.session.currentStreamingLineCount,version:$.session.currentStreamingVersion}))),W9=()=>Z0(($)=>$.session.finalizingStreamingMessageId),L9=()=>Z0(($)=>$.session.historyExpanded),w9=()=>Z0(($)=>$.session.expandedMessageCount);import{useMemoizedFn as X1}from"ahooks";import{useEffect as g1,useMemo as oZ,useRef as R2}from"react";class W4{options;requested=!1;scheduled=!1;inFlight=!1;disposed=!1;generation=0;activeRunController=null;scheduleCallback;constructor($){this.options=$;this.scheduleCallback=$.schedule??queueMicrotask}request(){if(this.disposed)return;this.requested=!0,this.scheduleIfRunnable()}notifyIdle(){this.scheduleIfRunnable()}dispose(){this.disposed=!0,this.requested=!1,this.scheduled=!1,this.generation++,this.activeRunController?.abort("pending-resume-coordinator-disposed"),this.activeRunController=null}scheduleIfRunnable(){if(this.disposed||!this.requested||this.scheduled||this.inFlight||!this.options.canRun())return;this.scheduled=!0;let $=this.generation;this.scheduleCallback(()=>{if(this.disposed||$!==this.generation)return;this.scheduled=!1,this.flush()})}async flush(){if(this.disposed||this.inFlight||!this.requested||!this.options.canRun())return;this.requested=!1,this.inFlight=!0;let $=new AbortController;this.activeRunController=$;let J="completed";try{J=await this.options.run($.signal)}finally{if(this.activeRunController===$)this.activeRunController=null;if(this.inFlight=!1,J==="deferred")this.requested=!0;this.scheduleIfRunnable()}}}class S8{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)H2(J,$.extraContent);B9(J)}this.options.finalizeStreamingMessage($.extraContent,$.extraThinking)}}function IZ($){if(!($ instanceof Error))return"未知错误";let Y=$.lastError??$;if(Y.responseBody)try{let K=JSON.parse(Y.responseBody)?.error?.message;if(K){let G=Y.statusCode?` (HTTP ${Y.statusCode})`:"";return`${K}${G}`}}catch{}let X=$.message.match(/Last error:\s*(.+)$/);if(X)return X[1];return $.message}function SZ($){if(!($ instanceof Error))return!1;return $.name==="AbortError"||$.message.includes("aborted")}function kZ($){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 F2($){let J=SZ($),Z=kZ($),Y;if(Z)Y="当前模型不支持图片理解功能。请切换到支持视觉能力的模型(如 Claude 4.5、GPT-5.2、Gemini 3 Pro、Qwen3-VL-Plus 等)后重试。";else Y=IZ($);return{displayMessage:Y,isAbort:J,isVisionNotSupported:Z}}import{appendFileSync as fZ,mkdirSync as vZ,writeFileSync as DZ}from"node:fs";import VZ from"node:os";import L4 from"node:path";var A9=null;function jZ(){let $=process.env.BLADE_STORAGE_ROOT||L4.join(VZ.homedir(),".blade");return L4.join($,"logs","stream-debug.log")}function EZ($){if(A9===$)return;let J=L4.dirname($);vZ(J,{recursive:!0,mode:493}),DZ($,`=== Stream Debug Log Started: ${new Date().toISOString()} ===
2
2
  `),A9=$}function w4($,J,Z){try{let Y=jZ();EZ(Y);let X=new Date().toISOString(),Q=Z?` | ${JSON.stringify(Z)}`:"",K=`[${X}] [${$}] ${J}${Q}
3
3
  `;fZ(Y,K)}catch{}}var k8=y1("UI");function A4($,J){if(J.state==="requires_attention"){let Z=J.reason==="interrupted_tool_call";$.addToolMessage("Turn recovery requires attention",{toolName:"Runtime Recovery",phase:"complete",summary:Z?"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 R9($,J){let Z=$.streamSession??new S8({signal:$.signal,streamingBuffer:$.streamingBuffer,getStreamingMessageId:$.getStreamingMessageId,finalizeStreamingMessage:$.sessionActions.finalizeStreamingMessage,discardStreamingMessage:$.sessionActions.discardStreamingMessage,clearThinking:()=>$.sessionActions.setCurrentThinkingContent(null)});return(Y)=>{switch(Y.kind){case"content_delta":if(!Z.acceptsDeltas())break;J.contentDeltaCount++,J.contentDeltaTotalLen+=Y.delta.length,w4("loopEventHandler","onContentDelta",{callCount:J.contentDeltaCount,deltaLen:Y.delta.length,totalLen:J.contentDeltaTotalLen}),$.streamingBuffer.batchAppendContent(Y.delta);break;case"thinking_delta":if(!Z.acceptsDeltas())break;if($.thinkingModeEnabled)$.streamingBuffer.batchAppendThinking(Y.delta);break;case"stream_end":{$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),k8.debug("[loopEventHandler] stream_end",{contentDeltaCount:J.contentDeltaCount,contentDeltaTotalLen:J.contentDeltaTotalLen,streamFinalized:Z.isFinalized,signalAborted:$.signal.aborted}),w4("loopEventHandler","onStreamEnd",{contentDeltaCallCount:J.contentDeltaCount,contentDeltaTotalLen:J.contentDeltaTotalLen,streamFinalized:Z.isFinalized,signalAborted:$.signal.aborted}),Z.finalize();break}case"model_fallback":$.sessionActions.setProviderAdmission(null),$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),Z.discard();break;case"provider_admission":{let{kind:X,...Q}=Y;$.sessionActions.setProviderAdmission(Y.phase==="queued"?Q:null);break}case"provider_circuit":{let{kind:X,...Q}=Y;$.sessionActions.setProviderCircuit(Y.phase==="closed"?null:Q);break}case"provider_retry":{let{kind:X,...Q}=Y;$.sessionActions.setProviderRetry(Y.phase==="recovered"?null:Q);break}case"provider_stall":{let{kind:X,...Q}=Y;$.sessionActions.setProviderStall(Y.phase==="detected"?Q:null);break}case"action_stationarity":{let{kind:X,...Q}=Y;$.sessionActions.setActionStationarity(Y.phase==="recovered"?null:Q);break}case"turn_recovery":{A4($.sessionActions,Y.assessment);break}case"tool_start":{let X=Y.toolCall;if(!("function"in X))break;if(X.function.name===W2)break;if(k8.debug("[loopEventHandler] tool_start",{toolName:X.function.name,toolKind:Y.toolKind}),["TaskCreate","TaskUpdate","TaskList"].includes(X.function.name))break;try{let Q=JSON.parse(X.function.arguments),K=M9(X.function.name,Q);$.sessionActions.addToolMessage(K,{toolCallId:X.id,toolName:X.function.name,phase:"start",summary:K,params:Q})}catch(Q){k8.error("[loopEventHandler] onToolStart error:",Q)}break}case"tool_progress":{let X=Y.toolCall;if(!("function"in X))break;if(X.function.name===W2)break;let Q=Y.update.total!==void 0?` ${Math.max(0,Math.min(100,Math.round((Y.update.progress??0)/Y.update.total*100)))}%`:"",K=`${X.function.name}${Q}: ${Y.update.message}`;$.sessionActions.addToolMessage(K,{toolCallId:X.id,toolName:X.function.name,phase:"progress",summary:K,...Y.update.admission?{admission:Y.update.admission}:{}});break}case"tool_result":{let X=Y.toolCall;if(!("function"in X))break;if(X.function.name===W2)break;k8.debug("[loopEventHandler] tool_result",{toolName:X.function.name,success:Y.result.success});let Q=P9(y9(X.function.name,Y.result),b9);$.sessionActions.addToolMessage(Q.summary,{toolCallId:X.id,toolName:X.function.name,phase:"complete",summary:Q.summary,detail:Q.detail});break}case"structured_output":$.sessionActions.replaceLastAssistantMessage(JSON.stringify(Y.output,null,2));break;case"token_usage":$.sessionActions.updateTokenUsage(Y.usage);break;case"compaction":if($.sessionActions.setCompacting(Y.phase==="start"),Y.phase==="end"){if($.sessionActions.resetContextUsage(),Y.outcome!=="failed")J.compactionCount=(J.compactionCount??0)+1}break;case"turn_start":k8.debug("[loopEventHandler] turn_start",{turn:Y.turn,maxTurns:Y.maxTurns}),$.sessionActions.updateTokenUsage({turnCount:Y.turn}),$.sessionActions.setProviderCircuit(null),$.sessionActions.setProviderRetry(null),$.sessionActions.setProviderStall(null),Z.startTurn();break;case"task_update":$.appActions.setTasks(Y.tasks);break;case"goal_frontier_updated":$.appActions.setTasks(Y.tasks);break;case"mcp_catalog_changed":{let X=`MCP catalog r${Y.revision}: +${Y.added.length} -${Y.removed.length} ~${Y.updated.length}`;$.sessionActions.addToolMessage(X,{toolName:"MCP Catalog",phase:"complete",summary:X,detail:[Y.added.length>0?`Added: ${Y.added.join(", ")}`:"",Y.removed.length>0?`Removed: ${Y.removed.join(", ")}`:"",Y.updated.length>0?`Updated: ${Y.updated.join(", ")}`:""].filter(Boolean).join(`
4
4
  `)});break}case"mcp_content_changed":{let X=`MCP ${Y.contentKind} r${Y.revision}: +${Y.added.length} -${Y.removed.length} ~${Y.updated.length}`;$.sessionActions.addToolMessage(X,{toolName:"MCP Content",phase:"complete",summary:X,detail:[Y.added.length>0?`Added: ${Y.added.join(", ")}`:"",Y.removed.length>0?`Removed: ${Y.removed.join(", ")}`:"",Y.updated.length>0?`Updated: ${Y.updated.join(", ")}`:""].filter(Boolean).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blade-code",
3
- "version": "0.10.111",
3
+ "version": "0.10.113",
4
4
  "private": false,
5
5
  "description": "🗡️ Blade Code - 智能代码助手命令行工具",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{h as a,i as b,j as c,k as d,l as e}from"./chunk-gner6fka.js";import"./chunk-s6xw42mr.js";import"./chunk-tf7ezqew.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
@@ -1 +0,0 @@
1
- import{re as a,se as b}from"./chunk-1n23f3qb.js";import"./chunk-s6xw42mr.js";import"./chunk-tf7ezqew.js";export{a as globalOptions,b as cliConfig};