blade-code 0.10.100 → 0.10.102
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-fvfc95g3.js → chunk-00rps629.js} +2 -2
- package/dist/{chunk-gcnke6s4.js → chunk-19xfer55.js} +1 -1
- package/dist/{chunk-sgzqcr55.js → chunk-1wgese5c.js} +1 -1
- package/dist/chunk-4t3h306m.js +6 -0
- package/dist/{chunk-c3yd59qh.js → chunk-6kb69vkx.js} +1 -1
- package/dist/{chunk-hx55j0d0.js → chunk-6r6yzw44.js} +401 -399
- package/dist/{chunk-6hr7mv7f.js → chunk-6yezrqe7.js} +1 -1
- package/dist/{chunk-gr6e2vsy.js → chunk-9018357g.js} +1 -1
- package/dist/chunk-9b0896bm.js +12 -0
- package/dist/chunk-9n5ystr6.js +171 -0
- package/dist/{chunk-jac8cc04.js → chunk-a5jv8pn9.js} +1 -1
- package/dist/{chunk-axycs651.js → chunk-a8mgzsh7.js} +1 -1
- package/dist/chunk-anez8ekm.js +169 -0
- package/dist/{chunk-v9pcf4w4.js → chunk-b8n5mx53.js} +1 -1
- package/dist/{chunk-pzp42zf0.js → chunk-c3zcqqb7.js} +1 -1
- package/dist/{chunk-gkdynynx.js → chunk-cpk84yrx.js} +1 -1
- package/dist/chunk-cwnaydst.js +1 -0
- package/dist/{chunk-s15phq98.js → chunk-d7rg6t0n.js} +1 -1
- package/dist/chunk-enwtex3j.js +23 -0
- package/dist/{chunk-ara0zd89.js → chunk-ffp2rn7f.js} +1 -1
- package/dist/{chunk-1nwc2wt6.js → chunk-fn9cse83.js} +1 -1
- package/dist/{chunk-rmhgyrgh.js → chunk-fpx3462x.js} +1 -1
- package/dist/chunk-gdp02sqp.js +1 -0
- package/dist/{chunk-q1cc7kwn.js → chunk-hexj26gw.js} +1 -1
- package/dist/{chunk-h8qjkxee.js → chunk-hpjnk87v.js} +18 -18
- package/dist/{chunk-3ktsyk2g.js → chunk-kfmh3t1r.js} +1 -1
- package/dist/{chunk-cc74b8qp.js → chunk-kt5jqaxp.js} +1 -1
- package/dist/{chunk-b4d43ap3.js → chunk-kwkkcs4y.js} +1 -1
- package/dist/chunk-m4wnqx0e.js +8 -0
- package/dist/{chunk-6jhndjnq.js → chunk-na3jmz7f.js} +1 -1
- package/dist/{chunk-ttg3xrsc.js → chunk-pdqczfn3.js} +1 -1
- package/dist/{chunk-5dkzqgxa.js → chunk-qjeadpj2.js} +1 -1
- package/dist/{chunk-tagtjbw9.js → chunk-qw57eqns.js} +1 -1
- package/dist/{chunk-6p9p71qm.js → chunk-rkk39efr.js} +1 -1
- package/dist/{chunk-x677fstt.js → chunk-ryemn19e.js} +1 -1
- package/dist/{chunk-y7bsjbsa.js → chunk-v6hffjwc.js} +2 -2
- package/dist/{chunk-qc4fe1j6.js → chunk-vw328ehw.js} +1 -1
- package/dist/{chunk-njctfzqw.js → chunk-xy5fmskp.js} +1 -1
- package/dist/{chunk-6rd8x9j0.js → chunk-y3anmree.js} +1 -1
- package/dist/chunk-yx4802a0.js +2 -0
- package/dist/{chunk-8zm5r6g8.js → chunk-zxhv8xfp.js} +1 -1
- package/dist/{chunk-dfxfcsm1.js → chunk-zy6vm5jm.js} +1 -1
- package/dist/web/assets/ChatView-C5kVDWL0.js +58 -0
- package/dist/web/assets/{CodeBlockHighlighter-IGDocZUy.js → CodeBlockHighlighter-BxJu15oF.js} +1 -1
- package/dist/web/assets/{FilePreview-EWE-k9VN.js → FilePreview-BDNq89O6.js} +1 -1
- package/dist/web/assets/{KanbanBoard-FiiVQgTQ.js → KanbanBoard-CCn0j1Ow.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-DjhWmikM.js → MarkdownRenderer-15FrKNPV.js} +3 -3
- package/dist/web/assets/{SettingsModal-bHPx0fVG.js → SettingsModal-DCL04xT_.js} +1 -1
- package/dist/web/assets/{TaskSwitcher-CclOfJEl.js → TaskSwitcher-Gyn_K98p.js} +1 -1
- package/dist/web/assets/{TerminalPanel-Bnep8jE2.js → TerminalPanel-Cbh0NmHM.js} +1 -1
- package/dist/web/assets/{arrow-left-CiX0E9Mt.js → arrow-left-wfNAFD9Y.js} +1 -1
- package/dist/web/assets/{calendar-clock-Bgfr-twh.js → calendar-clock-BbbqqtLj.js} +1 -1
- package/dist/web/assets/{chevrons-up-down-B4T5fHUs.js → chevrons-up-down-uCUY_a67.js} +1 -1
- package/dist/web/assets/{clock-3-CGIhJjon.js → clock-3-DfiIeEEf.js} +1 -1
- package/dist/web/assets/{external-link-DnQv1VYE.js → external-link-CilEshFB.js} +1 -1
- package/dist/web/assets/{folder-C5f8TpGj.js → folder-D9K0ykgI.js} +1 -1
- package/dist/web/assets/index-BKBXGV6s.js +275 -0
- package/dist/web/assets/{pause-Cb0ijwnO.js → pause-D4a4_iHl.js} +1 -1
- package/dist/web/assets/{play-Dsw1qmpk.js → play-D9guMjPv.js} +1 -1
- package/dist/web/assets/{session-events-B4Cq2TwN.js → session-events-DelJesUm.js} +19 -19
- package/dist/web/assets/{teamService-C69fFhny.js → teamService-CAVeS_dL.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-2s86w4yb.js +0 -171
- package/dist/chunk-73t5j9dn.js +0 -160
- package/dist/chunk-8wzn2p00.js +0 -6
- package/dist/chunk-hx3c0qn6.js +0 -9
- package/dist/chunk-hz5rsfxv.js +0 -2
- package/dist/chunk-p4h3p1at.js +0 -23
- package/dist/chunk-t29x8420.js +0 -1
- package/dist/chunk-tsthz2ex.js +0 -8
- package/dist/chunk-vgevdm8b.js +0 -1
- package/dist/web/assets/ChatView-Cwc3fRAC.js +0 -58
- package/dist/web/assets/index-DNoVz0u1.js +0 -275
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$d as j,Xd as l,Yd as M$,Zd as h_,_d as F$,ae as c_,be as D$,ce as l_,de as z$,ee as n_,fe as p_,he as i0,ke as i_,le as f$}from"./chunk-
|
|
1
|
+
import{$d as j,Xd as l,Yd as M$,Zd as h_,_d as F$,ae as c_,be as D$,ce as l_,de as z$,ee as n_,fe as p_,he as i0,ke as i_,le as f$}from"./chunk-hpjnk87v.js";import{qf as F0}from"./chunk-2hb222re.js";import{gg as D0}from"./chunk-qcy79mva.js";import{sg as a1}from"./chunk-c6tq09mt.js";import{Fh as A$,Gh as E$,Hh as T0,Ih as S0,Jh as L0}from"./chunk-maebpz1j.js";import{Nh as T1}from"./chunk-9sx3vsyj.js";import{ni as u0}from"./chunk-d8wzc602.js";import{ui as E0,xi as M0}from"./chunk-k7vv9vne.js";import{Bi as t}from"./chunk-qw57eqns.js";import{Li as U$,Mi as Z0,Ni as K$,Oi as x,Pi as u,Ri as K0,Si as a,Ti as k}from"./chunk-q3vza5gt.js";import{readdir as v_,readFile as W0,rm as G0,stat as d0}from"node:fs/promises";import*as Z from"node:path";import{nanoid as P}from"nanoid";import{createHash as P$,randomUUID as u$}from"node:crypto";import*as h from"node:fs/promises";import*as w0 from"node:path";import{execFileSync as g$}from"node:child_process";import{createHash as j$}from"node:crypto";import{readFileSync as y$}from"node:fs";var I$=/^[a-f0-9]{64}$/;function R1(_){if(!_||typeof _!=="object")return!1;let $=_;return($.platform==="linux"||$.platform==="darwin"||$.platform==="win32")&&typeof $.fingerprint==="string"&&I$.test($.fingerprint)}var W1={readFile:(_)=>y$(_,"utf8"),execFile:(_,$)=>g$(_,$,{encoding:"utf8",timeout:_==="powershell.exe"?3000:2000,windowsHide:!0})},m$=(_)=>{try{return process.kill(_,0),!0}catch($){return $ instanceof Error&&"code"in $&&$.code==="EPERM"}};function W_(_,$){return{platform:_,fingerprint:j$("sha256").update(`${_}\x00${$}`).digest("hex")}}function v$(_,$){let O=$.readFile(`/proc/${_}/stat`).trim(),R=O.lastIndexOf(")");if(R<0)throw Error("Invalid /proc process stat");let W=O.slice(R+2).split(/\s+/)[19];if(!W||!/^\d+$/.test(W))throw Error("Missing process start ticks");return W}function f0(_,$=process.platform,O=W1){if(!Number.isInteger(_)||_<=1)return;try{if($==="linux")return W_($,v$(_,O));if($==="darwin"){let R=O.execFile("ps",["-o","lstart=","-p",String(_)]).trim();return R?W_($,R):void 0}if($==="win32"){let R=`(Get-CimInstance Win32_Process -Filter "ProcessId = ${_}").CreationDate.ToUniversalTime().ToString('O')`,X=O.execFile("powershell.exe",["-NoProfile","-NonInteractive","-Command",R]).trim();return X?W_($,X):void 0}}catch{return}return}function X1(_,$){return f0(_,$.platform)?.fingerprint===$.fingerprint}function k4(_,$,O=W1,R=m$){if(!Number.isInteger(_)||_<=1)return!1;let X=f0(_,$.platform,O);if(X)return X.fingerprint===$.fingerprint;return!R(_)}var G1=1;function h$(_,$){let O=P$("sha256").update($).digest("hex");return w0.join(Z0(_),".locks",`${O}.lock`)}function x0(_,$){return _ instanceof Error&&"code"in _&&_.code===$}async function X_(_){try{let $=JSON.parse(await h.readFile(_,"utf8"));if($.version!==G1||typeof $.sessionId!=="string"||typeof $.ownerId!=="string"||!Number.isInteger($.pid)||($.pid??0)<=0||$.processIdentity!==void 0&&!R1($.processIdentity)||typeof $.acquiredAt!=="string")return;return $}catch{return}}async function B1(_){let $=await X_(_);if($)return $;return await new Promise((O)=>setTimeout(O,10)),X_(_)}function c$(_){try{return process.kill(_,0),!0}catch($){return x0($,"EPERM")}}async function L1(_,$){let O;try{return O=await h.open(_,"wx",384),await O.writeFile(`${JSON.stringify($)}
|
|
2
2
|
`,"utf8"),!0}catch(R){if(x0(R,"EEXIST"))return!1;if(O)await h.unlink(_).catch(()=>{return});throw R}finally{await O?.close().catch(()=>{return})}}class d extends Error{code="BLADE_SESSION_IN_USE";constructor(_){super(_?`Session is already active in another Blade process (PID ${_}). Stop that process or choose a different session.`:"Session is already active in another Blade process. Stop that process or choose a different session.");this.name="SessionInUseError"}}class o{filePath;record;released=!1;constructor(_,$){this.filePath=_;this.record=$}static async acquire(_,$=T1()){let O=h$($,_),R={version:G1,sessionId:_,ownerId:u$(),pid:process.pid,processIdentity:f0(process.pid),acquiredAt:new Date().toISOString()};if(await h.mkdir(w0.dirname(O),{recursive:!0,mode:448}),await L1(O,R))return new o(O,R);let X=await B1(O);if(X&&c$(X.pid)&&(!X.processIdentity||X1(X.pid,X.processIdentity)))throw new d(X.pid);if(await h.unlink(O).catch((W)=>{if(!x0(W,"ENOENT"))throw W}),await L1(O,R))return new o(O,R);throw new d((await B1(O))?.pid)}async release(){if(this.released)return;if(this.released=!0,(await X_(this.filePath))?.ownerId!==this.record.ownerId)return;await h.unlink(this.filePath).catch(($)=>{if(!x0($,"ENOENT"))throw $})}}import{createHash as b0}from"node:crypto";import{constants as s,promises as c}from"node:fs";import i from"node:path";import{Mutex as l$}from"async-mutex";var C1=128,J1=67108864,n$=24576,V1=65536,L_=1,H1=/^[a-f0-9]{64}$/,p$=/^[a-f0-9]{64}\.txt$/,U1=64,i$=new Set(["EBUSY","EAGAIN","EMFILE","ENFILE"]),g0=`
|
|
3
3
|
|
|
4
4
|
...[middle omitted; read the private prompt artifact for the complete request]...
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ai as a,Bi as b,Ci as c,Di as d,Ei as e,Fi as f}from"./chunk-
|
|
1
|
+
import{Ai as a,Bi as b,Ci as c,Di as d,Ei as e,Fi as f}from"./chunk-qw57eqns.js";import"./chunk-w9xfks7f.js";export{b as getVersion,c as getPackageName,a as getPackageInfo,e as getFormattedVersion,d as getDescription,f as getCopyright};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{m as c,n as v,o as d,p as m,q as l,r as a}from"./chunk-a5jv8pn9.js";import{V as O,aa as S}from"./chunk-6r6yzw44.js";import"./chunk-0zhdjaen.js";import"./chunk-fpx3462x.js";import"./chunk-yx4802a0.js";import{Db as M,Mb as E}from"./chunk-9n5ystr6.js";import"./chunk-8hprmrd5.js";import{Cd as h,Qd as f}from"./chunk-6yezrqe7.js";import"./chunk-s0tq8gyx.js";import"./chunk-hpjnk87v.js";import{oe as I}from"./chunk-vw328ehw.js";import{qe as y,re as R,se as g}from"./chunk-zxhv8xfp.js";import{te as C}from"./chunk-10taec1j.js";import"./chunk-rej5bbbs.js";import{Qe as w}from"./chunk-b8n5mx53.js";import"./chunk-v508x7cg.js";import"./chunk-dg0d3303.js";import"./chunk-3awjdsef.js";import"./chunk-53xtssbf.js";import"./chunk-2hb222re.js";import"./chunk-cpk84yrx.js";import"./chunk-kt5jqaxp.js";import"./chunk-00rps629.js";import"./chunk-qcy79mva.js";import"./chunk-p0rvgzpx.js";import"./chunk-6kb69vkx.js";import"./chunk-c6tq09mt.js";import"./chunk-19xfer55.js";import{xh as A}from"./chunk-f9asjkfz.js";import"./chunk-czcxx8tb.js";import"./chunk-maebpz1j.js";import{Nh as P}from"./chunk-9sx3vsyj.js";import"./chunk-70hwyc2w.js";import"./chunk-d8wzc602.js";import"./chunk-425p4nwx.js";import"./chunk-k7vv9vne.js";import"./chunk-qw57eqns.js";import"./chunk-cp7xsjj2.js";import"./chunk-2va6ex5v.js";import"./chunk-q3vza5gt.js";import"./chunk-w9xfks7f.js";import s from"yargs";import{hideBin as e}from"yargs/helpers";var i=new Set(Object.values(A));function t(j){if(j&&i.has(j))return j;return}function z(j){if(j.options.outputFormat==="json")j.io.stdout.write(`${JSON.stringify({response:j.response,...j.structuredOutput?{structured_output:j.structuredOutput,output_schema_digest:j.structuredOutputSchemaDigest}:{},input:j.requestInput,model:j.options.model,timestamp:new Date().toISOString()},null,2)}
|
|
2
|
+
`);else if(j.options.outputFormat==="stream-json")j.io.stdout.write(`${JSON.stringify(j.structuredOutput?{type:"structured_output",output:j.structuredOutput,schema_digest:j.structuredOutputSchemaDigest}:{type:"response",content:j.response})}
|
|
3
|
+
`);else j.io.stdout.write(`${j.response}
|
|
4
|
+
`)}function n(j){return j.command("* [message]","Print response and exit (useful for pipes)",(B)=>B.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("json-schema",{alias:["jsonSchema"],describe:"Inline JSON Schema for the structured final response",type:"string"}).option("output-schema",{alias:["outputSchema"],describe:"Path to a JSON Schema file for the structured final response",type:"string"}).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(B)=>{if(!B.p)return;let q=await o(B);process.exit(q)})}async function o(j,B=process){let q;try{await c();let D=j.forkSession!==!0&&(j.continue===!0||typeof j.resume==="string"&&j.resume.length>0)?await d({message:j.message,_:j._}):await v({message:j.message,_:j._,defaultMessage:"Hello"}),K=D===void 0,T=K?{mode:"agent",content:""}:await m(D);if(T.mode==="output"){if(T.content)B.stdout.write(`${T.content}
|
|
5
|
+
`);return T.exitCode??0}let Q=T.content,W=await l(j),X=Q.trimStart().startsWith("!")?Q.trimStart().slice(1).trim():void 0;if(X!==void 0&&W)throw Error("Output schemas cannot be combined with user shell commands");let{sessionId:J,messages:r,metadata:G}=await a({sessionId:j.sessionId,continue:j.continue,resume:j.resume,forkSession:j.forkSession,fallbackSessionPrefix:"print"}),Y=G?.projectPath??P(),b=t(j.permissionMode)??G?.permissionMode??w()?.permissionMode??"default";await f.setSessionPermissionMode(J,Y,b);let N=await E.cancelPendingNonInteractive(Y,J)?await f.loadSessionModelContext(J,Y):r;q=await O.create({sessionId:J,workspaceRoot:Y,modelId:j.model,permissionMode:b,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig,agents:j.agents?C(j.agents):void 0,...N.length>0?{sessionStart:{isResume:!0,resumeSessionId:J}}:{}});let Z=K&&q.getPendingSteeringCount()>0,k=K&&!Z?await q.getGoal():null,L=k?.status==="active"||k?.status==="verifying",U=q.getTurnRecoveryAssessment?.()??{state:"none"};if(K&&!Z&&!L&&U.state==="requires_attention")throw B.stderr.write(`[turn-recovery:${U.state}] ${U.turnId}
|
|
6
|
+
`),Error("Turn recovery requires explicit user attention before continuation");let _=K&&!Z&&!L?await q.getRecoveredFinalResponse():void 0;if(K&&!Z&&!L){if(!_)throw Error("No unfinished turn or active goal to resume");let H=U;if(H.state!=="none")B.stderr.write(`[turn-recovery:${H.state}] ${H.turnId}
|
|
7
|
+
`);return z({io:B,options:j,response:_.content,requestInput:Q,structuredOutput:_.structuredOutput,structuredOutputSchemaDigest:_.structuredOutputSchemaDigest}),0}if(X!==void 0){let H=await q.executeUserShellCommand(X);if(j.outputFormat==="json")B.stdout.write(`${JSON.stringify(H,null,2)}
|
|
8
|
+
`);else if(j.outputFormat==="stream-json")B.stdout.write(`${JSON.stringify({type:"user_shell_completed",executionId:H.executionId,record:H.record})}
|
|
9
|
+
`);else B.stdout.write(`${h(H.record)}
|
|
10
|
+
`);return H.record.status==="completed"?0:H.record.status==="aborted"?130:H.record.exitCode??1}let x=await S.createWithRuntime(q,{sessionId:J,systemPrompt:j.systemPrompt,appendSystemPrompt:j.appendSystemPrompt,maxTurns:j.maxTurns,modelId:j.model,permissionMode:b,toolWhitelist:j.allowedTools,toolBlacklist:j.disallowedTools,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig}),F={messages:[...N],userId:"cli-user",sessionId:J,workspaceRoot:Y,permissionMode:b},V=await M(W||K?x.chatStream(Q,F,{...W?{outputSchema:W}:{},pendingInputOnly:Z,goalContinuationOnly:L}):x.chatStream(Q,F),(H)=>{if(H.kind!=="turn_recovery")return;B.stderr.write(`[turn-recovery:${H.assessment.state}] ${H.assessment.turnId}
|
|
11
|
+
`)});if(V.metadata?.recoveryAttention)throw Error("Turn recovery requires explicit user attention before continuation");if(!V.success)throw Error(V.error?.message??"Agent execution failed");let u=V.finalMessage||"",p=V.metadata?.structuredOutput;return z({io:B,options:j,response:u,requestInput:Q,structuredOutput:p,structuredOutputSchemaDigest:V.metadata?.structuredOutputSchemaDigest}),0}catch($){return B.stderr.write(`Error: ${$ instanceof Error?$.message:"未知错误"}
|
|
12
|
+
`),1}finally{await q?.dispose()}}async function fj(){if(process.argv.slice(2).findIndex((q)=>q==="--print"||q==="-p")===-1)return!1;try{let{print:q,"output-format":$,"include-partial-messages":D,"input-format":K,"system-prompt":T,"append-system-prompt":Q,"max-turns":W,...X}=I,J=s(e(process.argv)).scriptName("blade").strict(!1).options(X).middleware([R,y,g]);return n(J),await J.parse(),!0}catch(q){console.error(`Print mode error: ${q instanceof Error?q.message:"未知错误"}`),process.exit(1)}}export{o as runPrint,fj as handlePrintMode};
|