blade-code 0.10.72 → 0.10.74

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 (120) hide show
  1. package/README.md +1 -1
  2. package/dist/blade.js +2 -2
  3. package/dist/{chunk-jyds9m8p.js → chunk-03947xkg.js} +1 -1
  4. package/dist/{chunk-2sdnmxts.js → chunk-0cbpjhq7.js} +1 -1
  5. package/dist/{chunk-cqeqjtxn.js → chunk-0m2bs3s2.js} +1 -1
  6. package/dist/chunk-16k0tc6h.js +160 -0
  7. package/dist/chunk-1qde0g23.js +1 -0
  8. package/dist/{chunk-mhyat4mq.js → chunk-1ykz47d9.js} +2 -2
  9. package/dist/{chunk-28wsyv32.js → chunk-1zkwxaa0.js} +1 -1
  10. package/dist/chunk-21bb1xda.js +1657 -0
  11. package/dist/{chunk-0kat01bw.js → chunk-22aaybx2.js} +1 -1
  12. package/dist/chunk-22s3r2xy.js +2 -0
  13. package/dist/chunk-2e6pcscc.js +1 -0
  14. package/dist/chunk-2faga011.js +2 -0
  15. package/dist/{chunk-yhnr8vdb.js → chunk-2m4mgw58.js} +2 -2
  16. package/dist/{chunk-gv3ed5gw.js → chunk-2qqmmxqf.js} +2 -2
  17. package/dist/{chunk-zac26wwd.js → chunk-2v10cw32.js} +1 -1
  18. package/dist/{chunk-e0hf1317.js → chunk-44zkyzrj.js} +1 -1
  19. package/dist/{chunk-y858e8pb.js → chunk-453tf6d0.js} +2 -2
  20. package/dist/chunk-465tgzab.js +44 -0
  21. package/dist/chunk-4mgjj8zg.js +1 -0
  22. package/dist/{chunk-6j9t1xbh.js → chunk-4ppgfhqd.js} +2 -2
  23. package/dist/chunk-54va5hc4.js +8 -0
  24. package/dist/chunk-63c25yhj.js +1 -0
  25. package/dist/{chunk-11gdqmbm.js → chunk-6ra5d8ng.js} +1 -1
  26. package/dist/{chunk-hhk5ecpv.js → chunk-74wb5e1h.js} +2 -2
  27. package/dist/{chunk-2fd5trh8.js → chunk-7hc84akg.js} +2 -2
  28. package/dist/{chunk-z7vj2xrg.js → chunk-7kf3hwp3.js} +3 -3
  29. package/dist/{chunk-yjj7q7hy.js → chunk-8asewt01.js} +1 -1
  30. package/dist/chunk-8w1gtvy0.js +22 -0
  31. package/dist/{chunk-6v7f2cv9.js → chunk-8zpsw401.js} +4 -4
  32. package/dist/{chunk-zf96d5we.js → chunk-99nevk7k.js} +1 -1
  33. package/dist/chunk-a6kbpq05.js +1 -0
  34. package/dist/chunk-aqzbsxjh.js +1 -0
  35. package/dist/chunk-bawbgvm3.js +6 -0
  36. package/dist/{chunk-wvg81sd9.js → chunk-bj5msq36.js} +1 -1
  37. package/dist/chunk-bxtw5f52.js +6 -0
  38. package/dist/{chunk-m6qgme8k.js → chunk-c03xn5s3.js} +1 -1
  39. package/dist/{chunk-ss1znmv0.js → chunk-cpky2bgy.js} +1 -1
  40. package/dist/chunk-cvbacjwr.js +10 -0
  41. package/dist/{chunk-xahapj98.js → chunk-d51pge1m.js} +1 -1
  42. package/dist/{chunk-0qj8jfj1.js → chunk-fbgzeb3m.js} +1 -1
  43. package/dist/chunk-ffkdx471.js +1 -0
  44. package/dist/{chunk-5va3hhfp.js → chunk-fhxy024n.js} +1 -1
  45. package/dist/{chunk-7am1z065.js → chunk-fj297dmj.js} +1 -1
  46. package/dist/{chunk-mp4bfn57.js → chunk-fx19tpcm.js} +2 -2
  47. package/dist/{chunk-hwjmm2br.js → chunk-gbrwzpyg.js} +2 -2
  48. package/dist/{chunk-2d2bcyn1.js → chunk-h4d37zt2.js} +1 -1
  49. package/dist/{chunk-xszsveq1.js → chunk-k3ddw7q3.js} +1 -1
  50. package/dist/{chunk-4wvsg8cc.js → chunk-kaf6m50a.js} +1 -1
  51. package/dist/chunk-kheaqr7j.js +1 -0
  52. package/dist/{chunk-tms0pr01.js → chunk-map4165w.js} +2 -2
  53. package/dist/chunk-ntvm6t83.js +1 -0
  54. package/dist/{chunk-bs77d8hn.js → chunk-p7ww2tcn.js} +1 -1
  55. package/dist/{chunk-g8425xh4.js → chunk-qp8mejbn.js} +1 -1
  56. package/dist/chunk-qtt17d5s.js +2 -0
  57. package/dist/{chunk-j0yvwrd7.js → chunk-qw5j84ny.js} +2 -2
  58. package/dist/chunk-qxjsfp2c.js +1 -0
  59. package/dist/{chunk-s9brgcgs.js → chunk-qyxbee3w.js} +1 -1
  60. package/dist/{chunk-c4j2anbm.js → chunk-r297pq3s.js} +2 -2
  61. package/dist/{chunk-18atvz38.js → chunk-rc7jnds2.js} +1 -1
  62. package/dist/chunk-rjgfy07e.js +5 -0
  63. package/dist/{chunk-awj9aqjy.js → chunk-shx5e10e.js} +2 -2
  64. package/dist/chunk-vm5bzhrm.js +1 -0
  65. package/dist/chunk-wgztvasm.js +1 -0
  66. package/dist/chunk-x5579r4w.js +1 -0
  67. package/dist/{chunk-6j3k4v08.js → chunk-xbj18hxh.js} +1 -1
  68. package/dist/{chunk-hhvkzn6m.js → chunk-xgmn301g.js} +1 -1
  69. package/dist/{chunk-q6daf441.js → chunk-xkz9ecdx.js} +1 -1
  70. package/dist/{chunk-06y3rada.js → chunk-y67yrm3k.js} +2 -2
  71. package/dist/chunk-yjbq4jeg.js +2 -0
  72. package/dist/chunk-yrbbx1pr.js +1 -0
  73. package/dist/{chunk-a38chc6z.js → chunk-ytce7gnt.js} +2 -2
  74. package/dist/{chunk-eh4h7fmr.js → chunk-yz80dp1a.js} +2 -2
  75. package/dist/web/assets/ChatView-Bjl8VJFM.js +18 -0
  76. package/dist/web/assets/{CodeBlockHighlighter-B5DRAEhB.js → CodeBlockHighlighter-i8Yc4Qe4.js} +1 -1
  77. package/dist/web/assets/{FilePreview-DSpvLsjW.js → FilePreview-DbU1IMtz.js} +1 -1
  78. package/dist/web/assets/{KanbanBoard-6K7IeCXi.js → KanbanBoard-Fe4qkgpi.js} +1 -1
  79. package/dist/web/assets/{MarkdownRenderer-D6LiW9kF.js → MarkdownRenderer-CdeC66uL.js} +3 -3
  80. package/dist/web/assets/{SettingsModal-CFHxLfuL.js → SettingsModal-mbG701yW.js} +2 -2
  81. package/dist/web/assets/{TaskSwitcher-Bng9nDed.js → TaskSwitcher-DF-q_rMi.js} +1 -1
  82. package/dist/web/assets/{TerminalPanel-BnyQZwkN.js → TerminalPanel-BxAmwOXK.js} +1 -1
  83. package/dist/web/assets/index-8G4ejlcH.css +1 -0
  84. package/dist/web/assets/index-BTj86SSJ.js +11 -0
  85. package/dist/web/assets/{session-events-BvtUOaNG.js → session-events-Bgir_Gl_.js} +6 -6
  86. package/dist/web/assets/team-QZ9byb3E.js +1 -0
  87. package/dist/web/assets/teamService-Cnno2N5h.js +1 -0
  88. package/dist/web/assets/{vendor-icons-C927DZlr.js → vendor-icons-DovdPN7M.js} +25 -20
  89. package/dist/web/index.html +4 -4
  90. package/package.json +1 -1
  91. package/dist/chunk-139s7p91.js +0 -1
  92. package/dist/chunk-2vkzwqv0.js +0 -1
  93. package/dist/chunk-41smvqs8.js +0 -1
  94. package/dist/chunk-4xpj0d6y.js +0 -2
  95. package/dist/chunk-61arrvhp.js +0 -1
  96. package/dist/chunk-7hf1k2c9.js +0 -6
  97. package/dist/chunk-8geywf8q.js +0 -1
  98. package/dist/chunk-91qsjpm6.js +0 -2
  99. package/dist/chunk-bqz8wera.js +0 -1
  100. package/dist/chunk-brm24s69.js +0 -2
  101. package/dist/chunk-ccgq8nrm.js +0 -44
  102. package/dist/chunk-cyjnza5n.js +0 -8
  103. package/dist/chunk-d9a0g85f.js +0 -1
  104. package/dist/chunk-e4ynb9qf.js +0 -1
  105. package/dist/chunk-e6ezndyf.js +0 -22
  106. package/dist/chunk-eh9gdzk5.js +0 -160
  107. package/dist/chunk-emqbb5xh.js +0 -1
  108. package/dist/chunk-gzysna9c.js +0 -1
  109. package/dist/chunk-hryhnmwv.js +0 -1635
  110. package/dist/chunk-mrh3vs01.js +0 -2
  111. package/dist/chunk-ph5rn44j.js +0 -1
  112. package/dist/chunk-pqhjrdnq.js +0 -10
  113. package/dist/chunk-v7phc78b.js +0 -1
  114. package/dist/chunk-x4hh8yqg.js +0 -6
  115. package/dist/chunk-ypwjzw5x.js +0 -5
  116. package/dist/chunk-zqxj65xc.js +0 -1
  117. package/dist/chunk-zssys78z.js +0 -1
  118. package/dist/web/assets/ChatView-CgUC5rxo.js +0 -18
  119. package/dist/web/assets/index-CDdYV8kB.css +0 -1
  120. package/dist/web/assets/index-DId2GJVO.js +0 -11
package/README.md CHANGED
@@ -30,7 +30,7 @@
30
30
  - 🌐 **双模式界面** - CLI 终端 + Web UI,随心切换
31
31
  - 🛠️ **丰富工具** - 20+ 内置工具:文件/搜索/Shell/Git/Web 等
32
32
  - 🔗 **扩展能力** - MCP、插件与 Skills 系统
33
- - 📋 **结构化工作流** - Spec / Plan / Subagents
33
+ - 📋 **结构化工作流** - Spec / Plan / Subagents / Agent Teams
34
34
  - 🔒 **安全可控** - default/autoEdit/plan/yolo 权限模式与工具白/黑名单
35
35
  - 🎨 **现代 UI** - React + Ink 终端 UI / React + Vite Web UI
36
36
 
package/dist/blade.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{wd as W}from"./chunk-awj9aqjy.js";import{Ad as M,zd as F}from"./chunk-yhnr8vdb.js";import"./chunk-a38chc6z.js";import"./chunk-v508x7cg.js";import"./chunk-q6daf441.js";import"./chunk-z7vj2xrg.js";import"./chunk-jyds9m8p.js";import"./chunk-ccgq8nrm.js";import"./chunk-g8425xh4.js";import"./chunk-m6qgme8k.js";import"./chunk-mrh3vs01.js";import{Ag as N,Bg as B}from"./chunk-0kat01bw.js";import"./chunk-4xpj0d6y.js";import{$g as T}from"./chunk-gv3ed5gw.js";import"./chunk-hwjmm2br.js";import"./chunk-wvg81sd9.js";import"./chunk-y858e8pb.js";import"./chunk-eh4h7fmr.js";import"./chunk-bs77d8hn.js";import"./chunk-j0yvwrd7.js";import{Ih as J}from"./chunk-zf96d5we.js";import v from"node:path";var E=process.argv.slice(2),I=u(E),p=I!==null;if(I!==null)T.setGlobalDebug(I);function u(Q){for(let Y=0;Y<Q.length;Y+=1){let U=Q[Y];if(U==="--debug"||U==="-d"){let X=Q[Y+1];return X&&!X.startsWith("-")?X:!0}if(U.startsWith("--debug="))return U.slice(8)||!0}return null}function c(Q){return Q.length===1&&(Q[0]==="--version"||Q[0]==="-V")}function q(Q,...Y){return Q.some((U)=>Y.some((X)=>U===X||U.startsWith(`${X}=`)))}function m(Q,...Y){let U=[];for(let X=0;X<Q.length;X+=1){let G=Q[X],z=Y.find(($)=>G.startsWith(`${$}=`));if(z){let $=G.slice(z.length+1);if($)U.push($);continue}if(Y.includes(G)){let $=Q[X+1];if($&&!$.startsWith("-"))U.push($),X+=1}}return U}async function t(){if(c(E)){let{getVersion:K}=await import("./chunk-61arrvhp.js");console.log(K());return}let Q=process.cwd(),Y=F(Q);M(Y),N(B());let U=m(E,"--plugin-dir","--pluginDir");if(U.length>0){let{configureInvocationPluginDirs:K}=await import("./chunk-v7phc78b.js");K(U.map((Z)=>v.resolve(Q,Z)))}if(q(E,"--trust-workspace","--trustWorkspace")){let{WorkspaceTrustService:K}=await import("./chunk-zssys78z.js");await K.getInstance().trust(B())}if(process.getuid&&process.getuid()===0){let K=!!process.env.SUDO_USER,Z=!!process.env.BLADE_ALLOW_ROOT;if(K&&!Z)console.error(""),console.error("Error: 请不要使用 sudo 运行 blade"),console.error(""),console.error("原因:"),console.error(" 使用 sudo 会创建属于 root 的配置文件,"),console.error(" 导致普通用户无法访问。"),console.error(""),console.error("正确用法:"),console.error(" blade # 直接运行,不要加 sudo"),console.error(""),console.error("如果遇到权限错误,请运行:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("如果你确实需要以 root 运行(容器/CI),设置环境变量:"),console.error(" BLADE_ALLOW_ROOT=1 blade"),console.error(""),process.exit(1)}if(q(E,"--headless")){let{handleHeadlessMode:K}=await import("./chunk-x4hh8yqg.js");if(await K())return}if(W(),q(E,"--print","-p")){let{handlePrintMode:K}=await import("./chunk-yjj7q7hy.js");if(await K())return}if(E.includes("--acp")){let{runAcpIntegration:K}=await import("./chunk-e6ezndyf.js");await K();return}let[{default:X},{hideBin:G},{cliConfig:z,globalOptions:$},{loadConfiguration:_,validateOutput:D,validatePermissions:R},{doctorCommands:S},{installCommands:k},{mcpCommands:O},{projectsCommands:y},{scheduleCommands:b},{serveCommand:V},{updateCommands:P},{webCommand:x}]=await Promise.all([import("yargs"),import("yargs/helpers"),import("./chunk-41smvqs8.js"),import("./chunk-bqz8wera.js"),import("./chunk-2fd5trh8.js"),import("./chunk-7am1z065.js"),import("./chunk-xahapj98.js"),import("./chunk-e0hf1317.js"),import("./chunk-zac26wwd.js"),import("./chunk-e4ynb9qf.js"),import("./chunk-ss1znmv0.js"),import("./chunk-pqhjrdnq.js")]),A=X(G(process.argv)).scriptName(z.scriptName).usage(z.usage).version(z.version).locale(z.locale).showHelpOnFail(z.showHelpOnFail).demandCommand(0,"").recommendCommands().strict(z.strict).parserConfiguration({"populate--":!0}).options($).middleware([_,R,D]).command(O).command(y).command(b).command(S).command(P).command(k).command(x).command(V).completion("completion",!1).help("help","Show help").alias("help","h").alias("version","V").fail((K,Z,L)=>{if(Z){if(console.error("An error occurred:"),console.error(Z.message),p&&Z.stack)console.error(`
2
+ import{Ad as W}from"./chunk-shx5e10e.js";import{Dd as F,Ed as M}from"./chunk-2m4mgw58.js";import"./chunk-ytce7gnt.js";import"./chunk-v508x7cg.js";import"./chunk-xkz9ecdx.js";import"./chunk-7kf3hwp3.js";import"./chunk-03947xkg.js";import"./chunk-465tgzab.js";import"./chunk-qp8mejbn.js";import"./chunk-c03xn5s3.js";import"./chunk-yjbq4jeg.js";import{Eg as N,Fg as B}from"./chunk-22aaybx2.js";import"./chunk-qtt17d5s.js";import{eh as T}from"./chunk-2qqmmxqf.js";import"./chunk-gbrwzpyg.js";import"./chunk-bj5msq36.js";import"./chunk-453tf6d0.js";import"./chunk-yz80dp1a.js";import"./chunk-p7ww2tcn.js";import"./chunk-qw5j84ny.js";import{Nh as J}from"./chunk-99nevk7k.js";import v from"node:path";var E=process.argv.slice(2),I=u(E),p=I!==null;if(I!==null)T.setGlobalDebug(I);function u(Q){for(let Y=0;Y<Q.length;Y+=1){let U=Q[Y];if(U==="--debug"||U==="-d"){let X=Q[Y+1];return X&&!X.startsWith("-")?X:!0}if(U.startsWith("--debug="))return U.slice(8)||!0}return null}function c(Q){return Q.length===1&&(Q[0]==="--version"||Q[0]==="-V")}function q(Q,...Y){return Q.some((U)=>Y.some((X)=>U===X||U.startsWith(`${X}=`)))}function m(Q,...Y){let U=[];for(let X=0;X<Q.length;X+=1){let G=Q[X],z=Y.find(($)=>G.startsWith(`${$}=`));if(z){let $=G.slice(z.length+1);if($)U.push($);continue}if(Y.includes(G)){let $=Q[X+1];if($&&!$.startsWith("-"))U.push($),X+=1}}return U}async function t(){if(c(E)){let{getVersion:K}=await import("./chunk-wgztvasm.js");console.log(K());return}let Q=process.cwd(),Y=F(Q);M(Y),N(B());let U=m(E,"--plugin-dir","--pluginDir");if(U.length>0){let{configureInvocationPluginDirs:K}=await import("./chunk-63c25yhj.js");K(U.map((Z)=>v.resolve(Q,Z)))}if(q(E,"--trust-workspace","--trustWorkspace")){let{WorkspaceTrustService:K}=await import("./chunk-qxjsfp2c.js");await K.getInstance().trust(B())}if(process.getuid&&process.getuid()===0){let K=!!process.env.SUDO_USER,Z=!!process.env.BLADE_ALLOW_ROOT;if(K&&!Z)console.error(""),console.error("Error: 请不要使用 sudo 运行 blade"),console.error(""),console.error("原因:"),console.error(" 使用 sudo 会创建属于 root 的配置文件,"),console.error(" 导致普通用户无法访问。"),console.error(""),console.error("正确用法:"),console.error(" blade # 直接运行,不要加 sudo"),console.error(""),console.error("如果遇到权限错误,请运行:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("如果你确实需要以 root 运行(容器/CI),设置环境变量:"),console.error(" BLADE_ALLOW_ROOT=1 blade"),console.error(""),process.exit(1)}if(q(E,"--headless")){let{handleHeadlessMode:K}=await import("./chunk-bawbgvm3.js");if(await K())return}if(W(),q(E,"--print","-p")){let{handlePrintMode:K}=await import("./chunk-8asewt01.js");if(await K())return}if(E.includes("--acp")){let{runAcpIntegration:K}=await import("./chunk-8w1gtvy0.js");await K();return}let[{default:X},{hideBin:G},{cliConfig:z,globalOptions:$},{loadConfiguration:_,validateOutput:D,validatePermissions:R},{doctorCommands:S},{installCommands:k},{mcpCommands:O},{projectsCommands:y},{scheduleCommands:b},{serveCommand:V},{updateCommands:P},{webCommand:x}]=await Promise.all([import("yargs"),import("yargs/helpers"),import("./chunk-x5579r4w.js"),import("./chunk-vm5bzhrm.js"),import("./chunk-7hc84akg.js"),import("./chunk-fj297dmj.js"),import("./chunk-d51pge1m.js"),import("./chunk-44zkyzrj.js"),import("./chunk-2v10cw32.js"),import("./chunk-1qde0g23.js"),import("./chunk-cpky2bgy.js"),import("./chunk-cvbacjwr.js")]),A=X(G(process.argv)).scriptName(z.scriptName).usage(z.usage).version(z.version).locale(z.locale).showHelpOnFail(z.showHelpOnFail).demandCommand(0,"").recommendCommands().strict(z.strict).parserConfiguration({"populate--":!0}).options($).middleware([_,R,D]).command(O).command(y).command(b).command(S).command(P).command(k).command(x).command(V).completion("completion",!1).help("help","Show help").alias("help","h").alias("version","V").fail((K,Z,L)=>{if(Z){if(console.error("An error occurred:"),console.error(Z.message),p&&Z.stack)console.error(`
3
3
  Stack trace:`),console.error(Z.stack);else console.error(`
4
4
  Run with --debug to show the stack trace.`);process.exit(1)}if(K)console.error("Error: Invalid arguments:"),console.error(K),console.error(`
5
- Hint: Did you mean:`),L.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(K)=>{let Z=K._.slice(1),L=Z.length>0?Z.join(" "):void 0,h=import("./chunk-139s7p91.js").then(({checkVersionOnStartup:C})=>C()),[{render:w},{createElement:f},{AppWrapper:j}]=await Promise.all([import("ink"),import("react"),import("./chunk-eh9gdzk5.js")]),H={...K,initialMessage:L,debug:K.debug,print:Boolean(K.print),versionCheckPromise:h};delete H._,delete H.$0,delete H.message,w(f(j,H),{patchConsole:!0,exitOnCtrlC:!1,alternateBuffer:!1})});try{await A.parse()}catch(K){console.error("Error: Parse error:",K),process.exit(1)}}if(J.main==J.module)t().catch(console.error);export{t as main};
5
+ Hint: Did you mean:`),L.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(K)=>{let Z=K._.slice(1),L=Z.length>0?Z.join(" "):void 0,h=import("./chunk-aqzbsxjh.js").then(({checkVersionOnStartup:C})=>C()),[{render:w},{createElement:f},{AppWrapper:j}]=await Promise.all([import("ink"),import("react"),import("./chunk-16k0tc6h.js")]),H={...K,initialMessage:L,debug:K.debug,print:Boolean(K.print),versionCheckPromise:h};delete H._,delete H.$0,delete H.message,w(f(j,H),{patchConsole:!0,exitOnCtrlC:!1,alternateBuffer:!1})});try{await A.parse()}catch(K){console.error("Error: Parse error:",K),process.exit(1)}}if(J.main==J.module)t().catch(console.error);export{t as main};
@@ -1,2 +1,2 @@
1
1
  import{spawn as I}from"node:child_process";var X=500;function x(j){return new Promise((q)=>setTimeout(q,j))}function Z(j){return j&&typeof j==="object"&&"code"in j?String(j.code):void 0}function L(j){return j()||j()}function G(j,q=process.platform,y=process.kill.bind(process)){if(q==="win32"||!Number.isInteger(j)||j<=1||j===process.pid)return!1;try{return y(-j,0),!0}catch(z){let B=Z(z);if(B==="ESRCH")return!1;if(B==="EPERM")return!0;throw z}}function N(j,q){return new Promise((y)=>{let z=["/PID",String(j),"/T"];if(q)z.push("/F");let B=I("taskkill",z,{stdio:"ignore",windowsHide:!0}),K=!1,J=(H)=>{if(K)return;K=!0,y(H)};B.once("error",()=>J(!1)),B.once("close",(H)=>J(H===0))})}async function F(j,q={}){if(!Number.isInteger(j)||j<=1||j===process.pid)return{success:!1,alreadyExited:!1,forced:!1};let y=q.platform??process.platform,z=q.gracePeriodMs??X,B=q.killProcess??process.kill.bind(process),K=q.taskkill??N,J=q.wait??x,H=q.validatePidOwnership??(()=>!0);if(!L(H))return{success:!1,alreadyExited:!1,forced:!1};if(y==="win32"){let V=await K(j,!1);if(await J(z),!H())return{success:V,alreadyExited:!1,forced:!1};let Y=await K(j,!0);return{success:V||Y,alreadyExited:!V&&!Y,forced:Y}}let Q=(V,Y)=>{try{return B(V,Y)}catch(D){return Z(D)==="ESRCH"}},W=Q(-j,"SIGTERM")||Q(j,"SIGTERM");if(await J(z),!H())return{success:W,alreadyExited:!1,forced:!1};let $=Q(-j,"SIGKILL")||Q(j,"SIGKILL");return{success:W||$,alreadyExited:!1,forced:$}}async function R(j,q={}){if(!Number.isInteger(j)||j<=1||j===process.pid)return{success:!1,alreadyExited:!1,forced:!1};if((q.platform??process.platform)==="win32")return{success:!1,alreadyExited:!1,forced:!1};let z=q.gracePeriodMs??X,B=q.killProcess??process.kill.bind(process),K=q.wait??x,J=q.validatePidOwnership??(()=>!0);if(!J())return{success:!1,alreadyExited:!1,forced:!1};let H=($)=>{try{return B(-j,$),"sent"}catch(V){return Z(V)==="ESRCH"?"missing":"failed"}},Q=H("SIGTERM");if(Q==="missing")return{success:!0,alreadyExited:!0,forced:!1};if(Q==="failed")return{success:!1,alreadyExited:!1,forced:!1};if(await K(z),!J())return{success:!1,alreadyExited:!1,forced:!1};let W=H("SIGKILL");return{success:W!=="failed",alreadyExited:W==="missing",forced:W==="sent"}}class b{child;state="owned";terminationPromise;terminationResult;platform;gracePeriodMs;killProcess;taskkill;wait;constructor(j,q={}){this.child=j;if(this.platform=q.platform??process.platform,this.gracePeriodMs=q.gracePeriodMs??X,this.killProcess=q.killProcess??process.kill.bind(process),this.taskkill=q.taskkill??N,this.wait=q.wait??x,q.releaseOnExit!==!1){let y=()=>{if(this.state==="owned")this.state="released"};j.once("close",y),j.once("error",y)}}release(){if(this.state==="owned")this.state="released"}terminate(){if(this.terminationPromise)return this.terminationPromise;if(this.terminationResult)return Promise.resolve(this.terminationResult);if(this.state==="released")return this.terminationResult={success:!0,alreadyExited:!0,forced:!1},Promise.resolve(this.terminationResult);return this.state="terminating",this.terminationPromise=this.terminateOwnedTree().then((j)=>{return this.state="released",this.terminationResult=j,j}),this.terminationPromise}async terminateOwnedTree(){let j=this.child.pid;if(!j)return{success:!1,alreadyExited:!0,forced:!1};if(this.platform==="win32"){let z=await this.taskkill(j,!1);await this.wait(this.gracePeriodMs);let B=await this.taskkill(j,!0);if(!z&&!B)return{success:this.signalDirectChild("SIGKILL"),alreadyExited:!1,forced:!0};return{success:!0,alreadyExited:!1,forced:!0}}let q=this.signalPosixTree(j,"SIGTERM");await this.wait(this.gracePeriodMs);let y=this.signalPosixTree(j,"SIGKILL");return{success:q||y,alreadyExited:!1,forced:y}}signalPosixTree(j,q){if(j<=1||j===process.pid)return this.signalDirectChild(q);try{return this.killProcess(-j,q)}catch(y){if(Z(y)==="ESRCH")return!0;return this.signalDirectChild(q)}}signalDirectChild(j){try{return this.child.kill(j)}catch(q){return Z(q)==="ESRCH"}}}function v(j,q,y={},z={}){let B=I(j,q,{...y,detached:process.platform==="win32"?y.detached:!0,windowsHide:y.windowsHide??!0});return{child:B,processTree:new b(B,z)}}
2
- export{G as ff,F as gf,R as hf,v as if};
2
+ export{G as jf,F as kf,R as lf,v as mf};
@@ -15,4 +15,4 @@ More specific user instructions about presentation take precedence for that resp
15
15
  <communication_style>
16
16
  ${h.prompt}
17
17
  </communication_style>`}
18
- export{R as Ye,z as Ze,H as _e,W as $e,Z as af};
18
+ export{R as af,z as bf,H as cf,W as df,Z as ef};
@@ -1,2 +1,2 @@
1
- import{oh as S}from"./chunk-y858e8pb.js";import{Ih as f}from"./chunk-zf96d5we.js";import*as $ from"fs/promises";import*as K from"path";import j from"semver";import{ProxyAgent as H,fetch as I}from"undici";function R(){return process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy}function N(){let q=R();if(q)try{return new H(q)}catch(z){console.warn(`[proxyFetch] Invalid proxy URL: ${q}`)}return}async function M(q,z={}){let{timeout:W=30000,signal:Q,...B}=z;if(Q?.aborted)throw new DOMException("The operation was aborted.","AbortError");let J=N(),X=new AbortController,Y=!1,F=setTimeout(()=>{Y=!0,X.abort()},W),b=()=>X.abort();Q?.addEventListener("abort",b);try{let Z={method:B.method,headers:B.headers,body:B.body,signal:X.signal,dispatcher:J};return await I(q.toString(),Z)}catch(Z){if(Z instanceof Error&&Z.name==="AbortError"){if(Y)throw Error(`Request timeout after ${W}ms`);throw Z}throw Z}finally{clearTimeout(F),Q?.removeEventListener("abort",b)}}var w="blade-code",y="https://cdn.jsdelivr.net/npm/blade-code@latest/CHANGELOG.md",G=K.join(process.env.HOME||process.env.USERPROFILE||".",".blade"),O=K.join(G,"version-cache.json"),P=3600000,k=`https://registry.npmjs.org/${w}/latest`;async function L(){try{if(process.env.BLADE_VERSION)return process.env.BLADE_VERSION;return S()}catch{return"unknown"}}async function T(){try{let q=await $.readFile(O,"utf-8"),z=JSON.parse(q);if(Date.now()-z.checkedAt<P)return z;return{...z,checkedAt:0}}catch{return null}}async function D(q){try{await $.mkdir(G,{recursive:!0,mode:493}),await $.writeFile(O,JSON.stringify(q,null,2))}catch{}}async function x(){try{let q=await M(k,{timeout:5000,headers:{Accept:"application/json"}});if(!q.ok)return null;return(await q.json()).version||null}catch{return null}}async function _(q=!1){let z=await L(),W=y;if(z==="unknown")return{currentVersion:z,latestVersion:null,hasUpdate:!1,shouldPrompt:!1,releaseNotesUrl:W,error:"Unable to determine current version"};let Q=await T(),B=Q?.skipUntilVersion,J=null;if(!q&&Q?.latestVersion&&Q.checkedAt>0)J=Q.latestVersion;else if(J=await x(),J)await D({latestVersion:J,checkedAt:Date.now(),skipUntilVersion:B});else if(Q?.latestVersion)await D({checkedAt:0,skipUntilVersion:B});if(!J||!j.valid(J))return{currentVersion:z,latestVersion:null,hasUpdate:!1,shouldPrompt:!1,releaseNotesUrl:W,error:"Unable to check for updates"};if(j.lt(J,z))J=z,await D({latestVersion:J,checkedAt:Date.now(),skipUntilVersion:B});let X=j.gt(J,z),Y=X;if(X&&B)Y=j.gt(J,B);return{currentVersion:z,latestVersion:J,hasUpdate:X,shouldPrompt:Y,releaseNotesUrl:W}}async function u(q){let z=await T();await D({latestVersion:z?.latestVersion??q,checkedAt:z?.checkedAt||Date.now(),skipUntilVersion:q})}function g(){return`npm install -g ${w}@latest --registry https://registry.npmjs.org`}async function C(){let{spawn:q}=await import("child_process");return new Promise((z)=>{let W=g(),Q=q(W,{stdio:"inherit",shell:!0});Q.on("close",(B)=>{if(B===0)z({success:!0,message:"Upgrade successful! Please restart blade."});else z({success:!1,message:`Upgrade failed (exit code: ${B})`})}),Q.on("error",(B)=>{z({success:!1,message:`Upgrade failed: ${B.message}`})})})}async function V(){try{let q=await _();return q.shouldPrompt?q:null}catch{return null}}
1
+ import{th as S}from"./chunk-453tf6d0.js";import{Nh as f}from"./chunk-99nevk7k.js";import*as $ from"fs/promises";import*as K from"path";import j from"semver";import{ProxyAgent as H,fetch as I}from"undici";function R(){return process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy}function N(){let q=R();if(q)try{return new H(q)}catch(z){console.warn(`[proxyFetch] Invalid proxy URL: ${q}`)}return}async function M(q,z={}){let{timeout:W=30000,signal:Q,...B}=z;if(Q?.aborted)throw new DOMException("The operation was aborted.","AbortError");let J=N(),X=new AbortController,Y=!1,F=setTimeout(()=>{Y=!0,X.abort()},W),b=()=>X.abort();Q?.addEventListener("abort",b);try{let Z={method:B.method,headers:B.headers,body:B.body,signal:X.signal,dispatcher:J};return await I(q.toString(),Z)}catch(Z){if(Z instanceof Error&&Z.name==="AbortError"){if(Y)throw Error(`Request timeout after ${W}ms`);throw Z}throw Z}finally{clearTimeout(F),Q?.removeEventListener("abort",b)}}var w="blade-code",y="https://cdn.jsdelivr.net/npm/blade-code@latest/CHANGELOG.md",G=K.join(process.env.HOME||process.env.USERPROFILE||".",".blade"),O=K.join(G,"version-cache.json"),P=3600000,k=`https://registry.npmjs.org/${w}/latest`;async function L(){try{if(process.env.BLADE_VERSION)return process.env.BLADE_VERSION;return S()}catch{return"unknown"}}async function T(){try{let q=await $.readFile(O,"utf-8"),z=JSON.parse(q);if(Date.now()-z.checkedAt<P)return z;return{...z,checkedAt:0}}catch{return null}}async function D(q){try{await $.mkdir(G,{recursive:!0,mode:493}),await $.writeFile(O,JSON.stringify(q,null,2))}catch{}}async function x(){try{let q=await M(k,{timeout:5000,headers:{Accept:"application/json"}});if(!q.ok)return null;return(await q.json()).version||null}catch{return null}}async function _(q=!1){let z=await L(),W=y;if(z==="unknown")return{currentVersion:z,latestVersion:null,hasUpdate:!1,shouldPrompt:!1,releaseNotesUrl:W,error:"Unable to determine current version"};let Q=await T(),B=Q?.skipUntilVersion,J=null;if(!q&&Q?.latestVersion&&Q.checkedAt>0)J=Q.latestVersion;else if(J=await x(),J)await D({latestVersion:J,checkedAt:Date.now(),skipUntilVersion:B});else if(Q?.latestVersion)await D({checkedAt:0,skipUntilVersion:B});if(!J||!j.valid(J))return{currentVersion:z,latestVersion:null,hasUpdate:!1,shouldPrompt:!1,releaseNotesUrl:W,error:"Unable to check for updates"};if(j.lt(J,z))J=z,await D({latestVersion:J,checkedAt:Date.now(),skipUntilVersion:B});let X=j.gt(J,z),Y=X;if(X&&B)Y=j.gt(J,B);return{currentVersion:z,latestVersion:J,hasUpdate:X,shouldPrompt:Y,releaseNotesUrl:W}}async function u(q){let z=await T();await D({latestVersion:z?.latestVersion??q,checkedAt:z?.checkedAt||Date.now(),skipUntilVersion:q})}function g(){return`npm install -g ${w}@latest --registry https://registry.npmjs.org`}async function C(){let{spawn:q}=await import("child_process");return new Promise((z)=>{let W=g(),Q=q(W,{stdio:"inherit",shell:!0});Q.on("close",(B)=>{if(B===0)z({success:!0,message:"Upgrade successful! Please restart blade."});else z({success:!1,message:`Upgrade failed (exit code: ${B})`})}),Q.on("error",(B)=>{z({success:!1,message:`Upgrade failed: ${B.message}`})})})}async function V(){try{let q=await _();return q.shouldPrompt?q:null}catch{return null}}
2
2
  export{_ as a,u as b,g as c,C as d,V as e};