blade-code 0.7.4 → 0.7.6
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.
- package/dist/blade.js +2 -2
- package/dist/chunk-10q3krvh.js +6 -0
- package/dist/chunk-1tzcptyb.js +3 -0
- package/dist/{chunk-erpgkabk.js → chunk-1y33d6xh.js} +1 -1
- package/dist/chunk-5accz8n9.js +1 -0
- package/dist/{chunk-kfg3vx5z.js → chunk-64x50qbc.js} +1 -1
- package/dist/chunk-8raa4q9y.js +1564 -0
- package/dist/chunk-ad19yrq6.js +1 -0
- package/dist/{chunk-4e2fzyf2.js → chunk-arwynrtf.js} +2 -2
- package/dist/chunk-bvn4e2vq.js +1 -0
- package/dist/{chunk-63dzf6hr.js → chunk-cadngkwr.js} +1 -1
- package/dist/{chunk-98jpdmgc.js → chunk-cdx3hp1r.js} +5 -5
- package/dist/{chunk-373pmz70.js → chunk-d9qh7bat.js} +1 -1
- package/dist/chunk-ebynn53v.js +26 -0
- package/dist/{chunk-cyxb6fxe.js → chunk-ezkbqmvd.js} +1 -1
- package/dist/{chunk-7mnefph6.js → chunk-fceeqn6k.js} +2 -2
- package/dist/{chunk-egavbybx.js → chunk-g60w2r7f.js} +2 -2
- package/dist/{chunk-k4behavv.js → chunk-h7qab07x.js} +1 -1
- package/dist/{chunk-bmcc85nj.js → chunk-jhzf05kz.js} +1 -1
- package/dist/chunk-k76q8cyc.js +151 -0
- package/dist/chunk-krrm6bjr.js +1 -0
- package/dist/{chunk-gjf2d2yg.js → chunk-m3hsaaq5.js} +1 -1
- package/dist/chunk-n2yq1wn8.js +9 -0
- package/dist/{chunk-rtn0rb16.js → chunk-npaj13y3.js} +2 -2
- package/dist/{chunk-byxazdwv.js → chunk-pf45ctn7.js} +1 -1
- package/dist/{chunk-cw125vv3.js → chunk-q6sj33v8.js} +1 -1
- package/dist/chunk-qedtzcp2.js +1 -0
- package/dist/{chunk-e21htmg4.js → chunk-qyfdt8h1.js} +1 -1
- package/dist/{chunk-38h3yh6z.js → chunk-r0hc7wad.js} +1 -1
- package/dist/chunk-rhvxr82g.js +2 -0
- package/dist/chunk-t6qek6xk.js +1 -0
- package/dist/{chunk-jf48kahn.js → chunk-ttf06k8y.js} +3 -3
- package/dist/chunk-tyjns370.js +1 -0
- package/dist/{chunk-3mhbped9.js → chunk-ve6bvba4.js} +36 -36
- package/dist/chunk-wdxbjvd5.js +2 -0
- package/dist/{chunk-b1d49byc.js → chunk-wg5nxtb2.js} +1 -1
- package/dist/{chunk-qxvp127d.js → chunk-wstkn75a.js} +1 -1
- package/dist/chunk-x4fx52e7.js +24 -0
- package/dist/chunk-xj63cr29.js +1 -0
- package/dist/{chunk-by93yn92.js → chunk-zmndvdgb.js} +1 -1
- package/dist/{chunk-pvxp2gzr.js → chunk-zr71r1z1.js} +1 -1
- package/dist/web/assets/{FilePreview-evNzCuVx.js → FilePreview-CbtOITD1.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-BQoiQTDd.js → MarkdownRenderer-CW8WpEw1.js} +1 -1
- package/dist/web/assets/McpModal-DnqrgBON.js +5 -0
- package/dist/web/assets/SettingsModal-CRNT-LCq.js +1 -0
- package/dist/web/assets/{SettingsStore-CfDjhOkS.js → SettingsStore-B2GIhfKs.js} +1 -1
- package/dist/web/assets/SkillsModal-COQMbIdT.js +1 -0
- package/dist/web/assets/{TerminalPanel-Cs16_6ew.js → TerminalPanel-dCMUvQaH.js} +1 -1
- package/dist/web/assets/index-21gV5nOE.css +1 -0
- package/dist/web/assets/index-Cnz-_jPt.js +10 -0
- package/dist/web/assets/{useRequest-BJp539HQ.js → useRequest-C7k7cDPD.js} +1 -1
- package/dist/web/assets/{vendor-icons-DlzC8I7m.js → vendor-icons-BKXQ7ALf.js} +75 -30
- package/dist/web/assets/{vendor-radix-CfxBc_4-.js → vendor-radix-2yBsoRqx.js} +2 -2
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-1vngdr7p.js +0 -1
- package/dist/chunk-501my8nh.js +0 -6
- package/dist/chunk-5smacbk0.js +0 -24
- package/dist/chunk-6rszb7xd.js +0 -1534
- package/dist/chunk-aevyre2t.js +0 -1
- package/dist/chunk-b4hmtjec.js +0 -1
- package/dist/chunk-cqrg2pp7.js +0 -1
- package/dist/chunk-ctbhcw8h.js +0 -1
- package/dist/chunk-dftaxwg9.js +0 -1
- package/dist/chunk-gzc9n5d6.js +0 -2
- package/dist/chunk-jpry8h07.js +0 -1
- package/dist/chunk-n5rg9dbv.js +0 -151
- package/dist/chunk-pa364yr9.js +0 -1
- package/dist/chunk-rkhhzc4r.js +0 -26
- package/dist/chunk-w1zb8zac.js +0 -3
- package/dist/chunk-z7x21493.js +0 -7
- package/dist/web/assets/McpModal-BT9OivhK.js +0 -5
- package/dist/web/assets/SettingsModal-CDRcorCS.js +0 -1
- package/dist/web/assets/SkillsModal-DCPaqoOe.js +0 -1
- package/dist/web/assets/dialog-C8VDk-ma.js +0 -1
- package/dist/web/assets/index-9t-WxRrl.js +0 -10
- package/dist/web/assets/index-Bu13aXyE.css +0 -1
package/dist/blade.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{n as B}from"./chunk-
|
|
2
|
+
import{n as B}from"./chunk-jhzf05kz.js";import{ba as D,ca as F}from"./chunk-npaj13y3.js";import"./chunk-x4fx52e7.js";import"./chunk-ebynn53v.js";import"./chunk-ttf06k8y.js";import"./chunk-rhvxr82g.js";import{ub as E,wb as q}from"./chunk-cadngkwr.js";import{Pb as H}from"./chunk-1tzcptyb.js";import{Sb as J}from"./chunk-64x50qbc.js";var X=process.argv.slice(2),$=v(X),w=$!==null;if($!==null)H.setGlobalDebug($);function v(Q){for(let W=0;W<Q.length;W+=1){let T=Q[W];if(T==="--debug"||T==="-d"){let N=Q[W+1];return N&&!N.startsWith("-")?N:!0}if(T.startsWith("--debug="))return T.slice(8)||!0}return null}function C(Q){return Q.length===1&&(Q[0]==="--version"||Q[0]==="-V")}function z(Q,...W){return Q.some((T)=>W.some((N)=>T===N||T.startsWith(`${N}=`)))}async function f(){if(C(X)){let{getVersion:K}=await import("./chunk-tyjns370.js");console.log(K());return}let Q=D(process.cwd());if(F(Q),E(q()),process.getuid&&process.getuid()===0){let K=!!process.env.SUDO_USER,U=!!process.env.BLADE_ALLOW_ROOT;if(K&&!U)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(z(X,"--headless")){let{handleHeadlessMode:K}=await import("./chunk-g60w2r7f.js");if(await K())return}if(B(),z(X,"--print","-p")){let{handlePrintMode:K}=await import("./chunk-10q3krvh.js");if(await K())return}if(X.includes("--acp")){let{runAcpIntegration:K}=await import("./chunk-n2yq1wn8.js");await K();return}let[{default:W},{hideBin:T},{cliConfig:N,globalOptions:G},{loadConfiguration:I,validateOutput:L,validatePermissions:M},{doctorCommands:_},{installCommands:y},{mcpCommands:R},{serveCommand:S},{updateCommands:k},{webCommand:O}]=await Promise.all([import("yargs"),import("yargs/helpers"),import("./chunk-t6qek6xk.js"),import("./chunk-xj63cr29.js"),import("./chunk-r0hc7wad.js"),import("./chunk-wstkn75a.js"),import("./chunk-1y33d6xh.js"),import("./chunk-bvn4e2vq.js"),import("./chunk-d9qh7bat.js"),import("./chunk-pf45ctn7.js")]),x=W(T(process.argv)).scriptName(N.scriptName).usage(N.usage).version(N.version).locale(N.locale).showHelpOnFail(N.showHelpOnFail).demandCommand(0,"").recommendCommands().strict(N.strict).parserConfiguration({"populate--":!0}).options(G).middleware([I,M,L]).command(R).command(_).command(k).command(y).command(O).command(S).completion("completion",!1).help("help","Show help").alias("help","h").alias("version","V").fail((K,U,Z)=>{if(U){if(console.error("An error occurred:"),console.error(U.message),w&&U.stack)console.error(`
|
|
3
3
|
Stack trace:`),console.error(U.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:`),Z.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(K)=>{let U=K._.slice(1),Z=U.length>0?U.join(" "):void 0,V=import("./chunk-
|
|
5
|
+
Hint: Did you mean:`),Z.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(K)=>{let U=K._.slice(1),Z=U.length>0?U.join(" "):void 0,V=import("./chunk-qedtzcp2.js").then(({checkVersionOnStartup:A})=>A()),[{render:b},{createElement:P},{AppWrapper:h}]=await Promise.all([import("ink"),import("react"),import("./chunk-k76q8cyc.js")]),Y={...K,initialMessage:Z,debug:K.debug,print:Boolean(K.print),versionCheckPromise:V};delete Y._,delete Y.$0,delete Y.message,b(P(h,Y),{patchConsole:!0,exitOnCtrlC:!1,alternateBuffer:!1})});try{await x.parse()}catch(K){console.error("Error: Parse error:",K),process.exit(1)}}if(J.main==J.module)f().catch(console.error);export{f as main};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{p as A,q as E,r as N,s as f}from"./chunk-zmndvdgb.js";import{t as D}from"./chunk-wg5nxtb2.js";import{v as L,w as _,x}from"./chunk-q6sj33v8.js";import{y as B}from"./chunk-h7qab07x.js";import{I as $,O as b}from"./chunk-8raa4q9y.js";import"./chunk-qyfdt8h1.js";import"./chunk-fceeqn6k.js";import"./chunk-npaj13y3.js";import"./chunk-x4fx52e7.js";import"./chunk-ebynn53v.js";import"./chunk-arwynrtf.js";import{Wa as Z}from"./chunk-ve6bvba4.js";import"./chunk-ezkbqmvd.js";import"./chunk-ttf06k8y.js";import"./chunk-rhvxr82g.js";import{vb as Y,wb as T}from"./chunk-cadngkwr.js";import"./chunk-cdx3hp1r.js";import"./chunk-1tzcptyb.js";import"./chunk-64x50qbc.js";import h from"yargs";import{hideBin as R}from"yargs/helpers";var w=new Set(Object.values(Y));function X(k){if(k&&w.has(k))return k;return}function M(k){return k.command("* [message]","Print response and exit (useful for pipes)",(F)=>F.positional("message",{describe:"Message to process",type:"string"}).option("p",{alias:"print",describe:"Print response and exit (useful for pipes)",type:"boolean"}).option("output-format",{describe:'Output format: "text", "json", "stream-json"',type:"string",default:"text"}).option("include-partial-messages",{describe:"Include partial message chunks as they arrive",type:"boolean"}).option("input-format",{describe:'Input format: "text", "stream-json"',type:"string",default:"text"}).option("model",{describe:"Model for the current session",type:"string"}).option("append-system-prompt",{describe:"Append a system prompt to the default system prompt",type:"string"}).option("system-prompt",{describe:"Replace the default system prompt",type:"string"}).option("max-turns",{alias:["maxTurns"],describe:"Maximum conversation turns (-1: unlimited, N>0: limit to N turns)",type:"number"}),async(F)=>{if(!F.p)return;let q=await O(F);process.exit(q)})}async function O(k,F=process){let q;try{await A();let J=await E({message:k.message,_:k._,defaultMessage:"Hello"}),G=await N(J);if(G.mode==="output"){if(G.content)F.stdout.write(`${G.content}
|
|
2
|
+
`);return G.exitCode??0}let Q=G.content,{sessionId:K,messages:U}=await f({sessionId:k.sessionId,continue:k.continue,resume:k.resume,forkSession:k.forkSession,fallbackSessionPrefix:"print"});q=await $.create({sessionId:K,workspaceRoot:T(),modelId:k.model,mcpConfig:k.mcpConfig,strictMcpConfig:k.strictMcpConfig,agents:k.agents?B(k.agents):void 0});let V=await b.createWithRuntime(q,{sessionId:K,systemPrompt:k.systemPrompt,appendSystemPrompt:k.appendSystemPrompt,maxTurns:k.maxTurns,modelId:k.model,permissionMode:X(k.permissionMode),toolWhitelist:k.allowedTools,toolBlacklist:k.disallowedTools,mcpConfig:k.mcpConfig,strictMcpConfig:k.strictMcpConfig}),H=(await Z(V.chatStream(Q,{messages:[...U],userId:"cli-user",sessionId:K,workspaceRoot:T(),permissionMode:X(k.permissionMode)}))).finalMessage||"";if(k.outputFormat==="json")F.stdout.write(`${JSON.stringify({response:H,input:Q,model:k.model,timestamp:new Date().toISOString()},null,2)}
|
|
3
|
+
`);else if(k.outputFormat==="stream-json")F.stdout.write(`${JSON.stringify({type:"response",content:H})}
|
|
4
|
+
`);else F.stdout.write(`${H}
|
|
5
|
+
`);return 0}catch(J){return F.stderr.write(`Error: ${J instanceof Error?J.message:"未知错误"}
|
|
6
|
+
`),1}finally{await q?.dispose()}}async function d(){if(process.argv.slice(2).findIndex((q)=>q==="--print"||q==="-p")===-1)return!1;try{let{print:q,"output-format":J,"include-partial-messages":G,"input-format":Q,"system-prompt":K,"append-system-prompt":U,"max-turns":V,...W}=D,H=h(R(process.argv)).scriptName("blade").strict(!1).options(W).middleware([_,L,x]);return M(H),await H.parse(),!0}catch(q){console.error(`Print mode error: ${q instanceof Error?q.message:"未知错误"}`),process.exit(1)}}export{O as runPrint,d as handlePrintMode};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{Sb as F}from"./chunk-64x50qbc.js";import{appendFileSync as N,existsSync as R,mkdirSync as x,readdirSync as m,statSync as z,unlinkSync as C}from"node:fs";import $ from"node:path";import{execSync as A}from"node:child_process";import*as _ from"node:os";import*as M from"node:path";function B(q){return M.resolve(q).replace(/[/\\]/g,"-").replace(/:/g,"_")}function S(q){let G=q.replace(/_/g,":");if(G.startsWith("-"))G="/"+G.slice(1);return G.replace(/-/g,"/")}function X(q){let G=B(q);return M.join(W(),"projects",G)}function Y(q){if(q==="."||q===".."||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/.test(q))throw Error(`Invalid session ID: ${q}`)}function f(q,G){return Y(G),M.join(X(q),`${G}.jsonl`)}function u(q,G){return Y(G),M.join(X(q),`${G}.inbox.json`)}function P(q,G){return Y(G),M.join(X(q),`${G}.goal.json`)}function h(q){try{return A("git rev-parse --abbrev-ref HEAD",{cwd:q,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function W(){return process.env.BLADE_STORAGE_ROOT||M.join(_.homedir(),".blade")}async function I(){let{readdir:q}=await import("node:fs/promises");try{let G=M.join(W(),"projects");return(await q(G,{withFileTypes:!0})).filter((H)=>H.isDirectory()).map((H)=>H.name)}catch{return[]}}var E;((J)=>{J[J.DEBUG=0]="DEBUG";J[J.INFO=1]="INFO";J[J.WARN=2]="WARN";J[J.ERROR=3]="ERROR"})(E||={});var Z=null,k=null,w=!1;function d(q){if(Z!==q)Z=q}async function n(){}function V(){if(w)return k;w=!0;try{let q=$.join(W(),"logs");if(!R(q))x(q,{recursive:!0,mode:493});if(z(q).uid===0&&process.getuid&&process.getuid()!==0)return console.error(""),console.error("[FAIL] 权限错误:~/.blade/logs 目录属于 root 用户"),console.error(""),console.error("这通常是因为您曾经使用 sudo 运行过 blade。"),console.error(""),console.error("解决方法:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("然后重新运行 blade(不要使用 sudo)"),console.error(""),null;return b(q,30),k=q,q}catch(q){return console.error("[Logger] 无法创建日志目录:",q),null}}function b(q,G){try{let K=m(q),H=Date.now(),J=G*24*60*60*1000;for(let T of K){if(!T.startsWith("blade-")||!T.endsWith(".log")&&!T.endsWith(".jsonl"))continue;let O=$.join(q,T);try{let U=z(O);if(H-U.mtimeMs>J)C(O)}catch(U){}}}catch(K){}}function j(){let q=V();if(!q)return null;let G=Z||"default";return $.join(q,`blade-${G}.jsonl`)}function D(q,G,K){let H=j();if(!H)return;try{let J={timestamp:new Date().toISOString(),level:E[G],category:q,message:K};N(H,JSON.stringify(J)+`
|
|
2
|
+
`)}catch(J){}}class Q{static globalDebugConfig=null;enabled;minLevel;category;constructor(q={}){if(q.enabled!==void 0)this.enabled=q.enabled;else if(Q.globalDebugConfig!==null)this.enabled=Boolean(Q.globalDebugConfig);else this.enabled=!1;this.minLevel=q.minLevel??0,this.category=q.category??"General"}static setGlobalDebug(q){Q.globalDebugConfig=q}static clearGlobalDebug(){Q.globalDebugConfig=null}setEnabled(q){this.enabled=q}parseDebugFilter(q){if(!q)return{enabled:!1};if(q===!0||q==="true"||q==="1")return{enabled:!0};let G=String(q).trim();if(!G)return{enabled:!0};if(G.startsWith("!"))return{enabled:!0,filter:{mode:"exclude",categories:G.split(",").map((J)=>J.trim().replace(/^!/,"")).filter(Boolean)}};return{enabled:!0,filter:{mode:"include",categories:G.split(",").map((H)=>H.trim()).filter(Boolean)}}}shouldLogCategory(q){if(!q)return!0;let G=this.category.toLowerCase();if(q.mode==="include")return q.categories.some((K)=>G.includes(K.toLowerCase()));return!q.categories.some((K)=>G.includes(K.toLowerCase()))}shouldLogToConsole(q){if(Q.globalDebugConfig!==null){let{enabled:G,filter:K}=this.parseDebugFilter(Q.globalDebugConfig);if(!G)return!1;if(q<this.minLevel)return!1;return this.shouldLogCategory(K)}return this.enabled&&q>=this.minLevel}log(q,...G){let K=G.map((H)=>typeof H==="object"?JSON.stringify(H):String(H)).join(" ");if(D(this.category,q,K),this.shouldLogToConsole(q)){let H=E[q],J=`[${this.category}] [${H}]`;console.error(J,...G)}}debug(...q){this.log(0,...q)}info(...q){this.log(1,...q)}warn(...q){this.log(2,...q)}error(...q){this.log(3,...q)}}function i(q,G){return new Q({...G,category:q})}var l=new Q({category:"General"});
|
|
3
|
+
export{S as Eb,X as Fb,Y as Gb,f as Hb,u as Ib,P as Jb,h as Kb,W as Lb,I as Mb,d as Nb,n as Ob,Q as Pb,i as Qb,l as Rb};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{$ as O}from"./chunk-fceeqn6k.js";import{xa as J,za as L}from"./chunk-x4fx52e7.js";import"./chunk-ebynn53v.js";import"./chunk-arwynrtf.js";import"./chunk-ezkbqmvd.js";import"./chunk-rhvxr82g.js";import{wb as H}from"./chunk-cadngkwr.js";import"./chunk-1tzcptyb.js";import"./chunk-64x50qbc.js";import P from"os";import E from"path";function _(q){return typeof q==="string"?q:void 0}function T(q){if(!Array.isArray(q))return;let z=[];for(let F of q)if(typeof F==="string")z.push(F);else if(F!=null)z.push(String(F));return z}function G(){console.log(`
|
|
2
2
|
blade mcp
|
|
3
3
|
`),console.log(`管理 MCP 服务器
|
|
4
4
|
`),console.log("Commands:"),console.log(" blade mcp add <name> <commandOrUrl> [args...] 添加 MCP 服务器"),console.log(" blade mcp remove <name> 删除 MCP 服务器 [aliases: rm]"),console.log(" blade mcp list 列出所有 MCP 服务器并检查健康状态 [aliases: ls]"),console.log(" blade mcp get <name> 获取服务器详情"),console.log(` blade mcp add-json <name> <json> 从 JSON 字符串添加服务器
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{na as a,oa as b,pa as c,qa as d,ra as e,sa as f,ta as g,ua as h,va as i,wa as j,xa as k,ya as l,za as m}from"./chunk-x4fx52e7.js";import"./chunk-ebynn53v.js";import"./chunk-rhvxr82g.js";import"./chunk-cadngkwr.js";import"./chunk-1tzcptyb.js";import"./chunk-64x50qbc.js";export{a as vanillaStore,c as sessionActions,l as getThinkingModeEnabled,b as getState,j as getModelById,e as getMessages,k as getMcpServers,i as getCurrentModel,f as getConfig,h as getAllModels,g as ensureStoreInitialized,m as configActions,d as appActions};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{createRequire as a}from"node:module";var c=a(import.meta.url);
|
|
2
|
-
export{c as
|
|
2
|
+
export{c as Sb};
|