blade-code 0.10.6 → 0.10.8
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-1w6azndv.js +1 -0
- package/dist/chunk-2gwaqpge.js +1 -0
- package/dist/chunk-2pjd4cys.js +1 -0
- package/dist/{chunk-xsmtpkjm.js → chunk-2thg3fq1.js} +1 -1
- package/dist/chunk-2zn5en0w.js +1 -0
- package/dist/{chunk-vvbd9fb5.js → chunk-33ave20b.js} +1 -1
- package/dist/chunk-3w1z6fwm.js +1 -0
- package/dist/chunk-43x4qbvt.js +1 -0
- package/dist/{chunk-kcwq1e7h.js → chunk-4h9ff923.js} +1 -1
- package/dist/chunk-52csdk21.js +3 -0
- package/dist/{chunk-frcg8gea.js → chunk-66hb7kxm.js} +2 -2
- package/dist/chunk-6j8wgp2s.js +2 -0
- package/dist/chunk-6vsszvgg.js +2 -0
- package/dist/chunk-7evtr0yr.js +10 -0
- package/dist/{chunk-yt39kfc6.js → chunk-7hbw6q6d.js} +1 -1
- package/dist/chunk-7zsyejr1.js +22 -0
- package/dist/{chunk-r083b7vn.js → chunk-8gcg2z3y.js} +16 -16
- package/dist/{chunk-rag8zchg.js → chunk-8gcvpmwk.js} +1 -1
- package/dist/{chunk-6cv4gddv.js → chunk-8gnfj89a.js} +2 -2
- package/dist/{chunk-76d7p64v.js → chunk-8h0yxh6y.js} +2 -2
- package/dist/chunk-8sfycn3y.js +194 -0
- package/dist/{chunk-c2rhwxyn.js → chunk-954vmnrn.js} +1 -1
- package/dist/chunk-a8h3fymk.js +100 -0
- package/dist/chunk-b5szbtmp.js +5 -0
- package/dist/chunk-bxm2hq0m.js +1 -0
- package/dist/chunk-c8da4b3d.js +1 -0
- package/dist/{chunk-p4j4aawd.js → chunk-cbpqcdga.js} +1 -1
- package/dist/{chunk-m4htdpr9.js → chunk-cf8e7e92.js} +72 -17
- package/dist/chunk-d0g4t8fw.js +8 -0
- package/dist/{chunk-b4n34hrn.js → chunk-eq2qj9ja.js} +1 -1
- package/dist/{chunk-7xm3vjkz.js → chunk-fj8v7pep.js} +1 -1
- package/dist/{chunk-bn0ge244.js → chunk-fxpq9nh6.js} +1 -1
- package/dist/chunk-g00wj2we.js +4 -0
- package/dist/{chunk-bnrce0hg.js → chunk-h28ptrrt.js} +1 -1
- package/dist/{chunk-gb4n3hwj.js → chunk-h421wzbm.js} +2 -2
- package/dist/{chunk-dcvvxsa1.js → chunk-j4tttsaz.js} +2 -2
- package/dist/{chunk-k0p9ecgc.js → chunk-kagpk2x5.js} +6 -6
- package/dist/chunk-kvnwhwx3.js +1 -0
- package/dist/{chunk-p196e4rq.js → chunk-m2xrx1je.js} +1 -1
- package/dist/chunk-nhc49pan.js +160 -0
- package/dist/{chunk-sf9pe2n6.js → chunk-nymm525r.js} +1 -1
- package/dist/{chunk-9sfmrb1j.js → chunk-nz57y1ad.js} +3 -3
- package/dist/{chunk-45dcfkwe.js → chunk-p2m56new.js} +2 -2
- package/dist/{chunk-w154jyby.js → chunk-pv9sw79c.js} +1 -1
- package/dist/chunk-qgp08qmz.js +6 -0
- package/dist/{chunk-evaht3v4.js → chunk-r7tsa2zv.js} +1 -1
- package/dist/{chunk-rw6gv740.js → chunk-rkvfsx8e.js} +1 -1
- package/dist/{chunk-v1p80wvh.js → chunk-rxqft6td.js} +2 -2
- package/dist/{chunk-g9n211y4.js → chunk-s9aj3p11.js} +2 -2
- package/dist/chunk-senkwdh6.js +2 -0
- package/dist/chunk-v1c58sm6.js +1 -0
- package/dist/{chunk-n9khyme2.js → chunk-v8pq6qmv.js} +2 -2
- package/dist/{chunk-1cvr3qtd.js → chunk-van4ysq6.js} +289 -305
- package/dist/chunk-vgp8m9fg.js +2 -0
- package/dist/{chunk-4y28hykg.js → chunk-vsg8f0e6.js} +1 -1
- package/dist/{chunk-kcs3xa8f.js → chunk-w0nscjd2.js} +2 -2
- package/dist/chunk-w26jhcj9.js +1 -0
- package/dist/{chunk-hjsm6ejs.js → chunk-wmnszjmv.js} +2 -2
- package/dist/chunk-x6wgh726.js +1 -0
- package/dist/{chunk-thvwt4kc.js → chunk-xa05phpw.js} +3 -3
- package/dist/{chunk-g4q26d9a.js → chunk-xmcsn7y0.js} +2 -2
- package/dist/{chunk-c9tzf9r5.js → chunk-y4c3wwpa.js} +1 -1
- package/dist/{chunk-0rp2ck29.js → chunk-yfs9tq3y.js} +2 -2
- package/dist/chunk-ymzcxryf.js +1 -0
- package/dist/{chunk-xkp4ph6v.js → chunk-zknv3d6y.js} +1 -1
- package/dist/chunk-zp4x2mwj.js +1 -0
- package/dist/chunk-zvk3g177.js +9 -0
- package/dist/web/assets/ChatView-Fqy97qw9.js +7 -0
- package/dist/web/assets/{CodeBlockHighlighter-CFW6qjnA.js → CodeBlockHighlighter-EgdsVoMQ.js} +1 -1
- package/dist/web/assets/{FilePreview-CR_XetY0.js → FilePreview-xicd9-Sl.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-CVrxJswQ.js → MarkdownRenderer-DBSjC_z3.js} +18 -18
- package/dist/web/assets/SettingsModal-Bkh5rMAJ.js +5 -0
- package/dist/web/assets/TaskSwitcher-DXcj0iJ_.js +1 -0
- package/dist/web/assets/{TerminalPanel-DTqvx8yB.js → TerminalPanel-DWVY-Elm.js} +1 -1
- package/dist/web/assets/index-Bi5ijAQP.css +1 -0
- package/dist/web/assets/index-CxEh32hc.js +32 -0
- package/dist/web/assets/{vendor-icons-D_AkWmWB.js → vendor-icons-Cv18Q6rW.js} +72 -67
- package/dist/web/assets/{vendor-radix-DBy9B2DN.js → vendor-radix-DXRuAJHH.js} +1 -1
- package/dist/web/index.html +4 -4
- package/package.json +3 -1
- package/dist/chunk-10k6egwk.js +0 -1
- package/dist/chunk-17xtw88g.js +0 -1
- package/dist/chunk-1kg9r8xp.js +0 -2
- package/dist/chunk-383vbwmt.js +0 -4
- package/dist/chunk-3kk3bk11.js +0 -1
- package/dist/chunk-47dsd91k.js +0 -99
- package/dist/chunk-4kaygjqv.js +0 -10
- package/dist/chunk-50fq7r0h.js +0 -22
- package/dist/chunk-59eje513.js +0 -1
- package/dist/chunk-710bvht9.js +0 -160
- package/dist/chunk-a9pbpgkg.js +0 -9
- package/dist/chunk-c8rky275.js +0 -6
- package/dist/chunk-j1sd03h7.js +0 -1
- package/dist/chunk-jqyvnmfr.js +0 -187
- package/dist/chunk-jrh5tzc4.js +0 -1
- package/dist/chunk-kj1ah6kn.js +0 -1
- package/dist/chunk-n34z4c47.js +0 -1
- package/dist/chunk-n5m2p0bq.js +0 -2
- package/dist/chunk-nfmsn652.js +0 -2
- package/dist/chunk-qvabd0vg.js +0 -1
- package/dist/chunk-t75wspk3.js +0 -1
- package/dist/chunk-vddqv6fv.js +0 -1
- package/dist/chunk-w4zvftrw.js +0 -5
- package/dist/chunk-wa7v7akz.js +0 -3
- package/dist/chunk-wxwqz67n.js +0 -1
- package/dist/chunk-x9hm3p3a.js +0 -1
- package/dist/chunk-xd2g4zjx.js +0 -1
- package/dist/web/assets/ChatView-Y-6k-ayR.js +0 -7
- package/dist/web/assets/McpModal-BO-85gll.js +0 -5
- package/dist/web/assets/SettingsModal-CW87OnxI.js +0 -1
- package/dist/web/assets/SkillsModal-Q8ZFPhys.js +0 -1
- package/dist/web/assets/TaskSwitcher-BzH-0QXr.js +0 -1
- package/dist/web/assets/index-B7etZcne.css +0 -1
- package/dist/web/assets/index-ClOgGy-I.js +0 -32
- package/dist/web/assets/useRequest-BvqVDnKl.js +0 -1
package/dist/chunk-a9pbpgkg.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{m as y,n as w,o as z,p as P}from"./chunk-383vbwmt.js";import{D,I as E}from"./chunk-1cvr3qtd.js";import"./chunk-g9n211y4.js";import{Na as $,za as A}from"./chunk-jqyvnmfr.js";import"./chunk-sf9pe2n6.js";import{nb as f,vb as X}from"./chunk-47dsd91k.js";import"./chunk-k0p9ecgc.js";import{Ob as h}from"./chunk-n5m2p0bq.js";import{Qb as x,Rb as k,Sb as O}from"./chunk-9sfmrb1j.js";import{Tb as N}from"./chunk-45dcfkwe.js";import"./chunk-g4q26d9a.js";import{oc as _}from"./chunk-r083b7vn.js";import"./chunk-yt39kfc6.js";import"./chunk-bnrce0hg.js";import"./chunk-w4zvftrw.js";import"./chunk-hjsm6ejs.js";import"./chunk-b4n34hrn.js";import"./chunk-v1p80wvh.js";import"./chunk-m4htdpr9.js";import"./chunk-4y28hykg.js";import"./chunk-kcwq1e7h.js";import"./chunk-thvwt4kc.js";import"./chunk-p4j4aawd.js";import"./chunk-6cv4gddv.js";import"./chunk-0rp2ck29.js";import{ge as L}from"./chunk-xkp4ph6v.js";import"./chunk-1kg9r8xp.js";import{we as U}from"./chunk-c9tzf9r5.js";import"./chunk-n9khyme2.js";import"./chunk-7xm3vjkz.js";import"./chunk-nfmsn652.js";import"./chunk-kcs3xa8f.js";import"./chunk-vvbd9fb5.js";import"./chunk-frcg8gea.js";import"./chunk-c2rhwxyn.js";import M from"yargs";import{hideBin as C}from"yargs/helpers";var I=new Set(Object.values(L));function S(j){if(j&&I.has(j))return j;return}function c(j){return j.command("* [message]","Print response and exit (useful for pipes)",(q)=>q.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(q)=>{if(!q.p)return;let B=await v(q);process.exit(B)})}async function v(j,q=process){let B;try{await y();let Q=await w({message:j.message,_:j._,defaultMessage:"Hello"}),K=await z(Q);if(K.mode==="output"){if(K.content)q.stdout.write(`${K.content}
|
|
2
|
-
`);return K.exitCode??0}let T=K.content,Y=T.trimStart().startsWith("!")?T.trimStart().slice(1).trim():void 0,{sessionId:G,messages:b,metadata:V}=await P({sessionId:j.sessionId,continue:j.continue,resume:j.resume,forkSession:j.forkSession,fallbackSessionPrefix:"print"}),H=V?.projectPath??U(),W=S(j.permissionMode)??V?.permissionMode??_()?.permissionMode??"default";await X.setSessionPermissionMode(G,H,W);let F=await $.cancelPendingNonInteractive(H,G)?await X.loadSession(G,H):b;if(B=await D.create({sessionId:G,workspaceRoot:H,modelId:j.model,permissionMode:W,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig,agents:j.agents?N(j.agents):void 0,...F.length>0?{sessionStart:{isResume:!0,resumeSessionId:G}}:{}}),Y!==void 0){let J=await B.executeUserShellCommand(Y);if(j.outputFormat==="json")q.stdout.write(`${JSON.stringify(J,null,2)}
|
|
3
|
-
`);else if(j.outputFormat==="stream-json")q.stdout.write(`${JSON.stringify({type:"user_shell_completed",executionId:J.executionId,record:J.record})}
|
|
4
|
-
`);else q.stdout.write(`${f(J.record)}
|
|
5
|
-
`);return J.record.status==="completed"?0:J.record.status==="aborted"?130:J.record.exitCode??1}let R=await E.createWithRuntime(B,{sessionId:G,systemPrompt:j.systemPrompt,appendSystemPrompt:j.appendSystemPrompt,maxTurns:j.maxTurns,modelId:j.model,permissionMode:W,toolWhitelist:j.allowedTools,toolBlacklist:j.disallowedTools,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig}),Z=(await A(R.chatStream(T,{messages:[...F],userId:"cli-user",sessionId:G,workspaceRoot:H,permissionMode:W}))).finalMessage||"";if(j.outputFormat==="json")q.stdout.write(`${JSON.stringify({response:Z,input:T,model:j.model,timestamp:new Date().toISOString()},null,2)}
|
|
6
|
-
`);else if(j.outputFormat==="stream-json")q.stdout.write(`${JSON.stringify({type:"response",content:Z})}
|
|
7
|
-
`);else q.stdout.write(`${Z}
|
|
8
|
-
`);return 0}catch(Q){return q.stderr.write(`Error: ${Q instanceof Error?Q.message:"未知错误"}
|
|
9
|
-
`),1}finally{await B?.dispose()}}async function Hj(){if(process.argv.slice(2).findIndex((B)=>B==="--print"||B==="-p")===-1)return!1;try{let{print:B,"output-format":Q,"include-partial-messages":K,"input-format":T,"system-prompt":Y,"append-system-prompt":G,"max-turns":b,...V}=h,H=M(C(process.argv)).scriptName("blade").strict(!1).options(V).middleware([k,x,O]);return c(H),await H.parse(),!0}catch(B){console.error(`Print mode error: ${B instanceof Error?B.message:"未知错误"}`),process.exit(1)}}export{v as runPrint,Hj as handlePrintMode};
|
package/dist/chunk-c8rky275.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{m as Zq,n as $q,o as Gq,p as Vq}from"./chunk-383vbwmt.js";import{q as Yq}from"./chunk-76d7p64v.js";import{D as r,E as s,F as a,H as k,I as o}from"./chunk-1cvr3qtd.js";import"./chunk-g9n211y4.js";import{Ca as v,Na as i,za as l}from"./chunk-jqyvnmfr.js";import"./chunk-sf9pe2n6.js";import{vb as S}from"./chunk-47dsd91k.js";import"./chunk-k0p9ecgc.js";import{Ob as t}from"./chunk-n5m2p0bq.js";import{Qb as e,Rb as qq,Sb as Qq}from"./chunk-9sfmrb1j.js";import{Tb as n}from"./chunk-45dcfkwe.js";import"./chunk-g4q26d9a.js";import{rc as u}from"./chunk-r083b7vn.js";import"./chunk-yt39kfc6.js";import"./chunk-bnrce0hg.js";import"./chunk-w4zvftrw.js";import"./chunk-hjsm6ejs.js";import"./chunk-b4n34hrn.js";import"./chunk-v1p80wvh.js";import"./chunk-m4htdpr9.js";import"./chunk-4y28hykg.js";import"./chunk-kcwq1e7h.js";import"./chunk-thvwt4kc.js";import"./chunk-p4j4aawd.js";import"./chunk-6cv4gddv.js";import"./chunk-0rp2ck29.js";import{ge as d,he as p,je as q,ke as F,me as j,ne as m}from"./chunk-xkp4ph6v.js";import"./chunk-1kg9r8xp.js";import{we as x}from"./chunk-c9tzf9r5.js";import"./chunk-n9khyme2.js";import"./chunk-7xm3vjkz.js";import"./chunk-nfmsn652.js";import"./chunk-kcs3xa8f.js";import"./chunk-vvbd9fb5.js";import"./chunk-frcg8gea.js";import"./chunk-c2rhwxyn.js";import lq from"yargs";import{hideBin as vq}from"yargs/helpers";var w=1;function B(Z){return q.Object({event_version:q.Literal(w),...Z})}var bq=B({type:q.Literal("content_delta"),delta:q.String()}),Aq=B({type:q.Literal("thinking_delta"),delta:q.String()}),Hq=B({type:q.Literal("thinking"),content:q.String()}),zq=B({type:q.Literal("stream_end")}),Rq=B({type:q.Literal("content"),content:q.String()}),T=j(["readonly","write","execute"]),Mq=B({type:q.Literal("tool_start"),tool_name:q.String(),summary:q.String(),target:q.Optional(q.String()),tool_kind:q.Optional(T)}),Eq=B({type:q.Literal("tool_progress"),tool_name:q.String(),message:q.String(),progress:q.Optional(q.Number()),total:q.Optional(q.Number())}),Pq=B({type:q.Literal("tool_result"),tool_name:q.String(),summary:q.String(),target:q.Optional(q.String()),tool_kind:q.Optional(T),success:q.Optional(q.Boolean()),error_type:q.Optional(q.String()),error_message:q.Optional(q.String())}),Nq=B({type:q.Literal("mcp_catalog_changed"),revision:q.Integer({minimum:1}),server_name:q.String(),added:q.Array(q.String()),removed:q.Array(q.String()),updated:q.Array(q.String())}),fq=B({type:q.Literal("mcp_content_changed"),revision:q.Integer({minimum:1}),server_name:q.String(),content_kind:j(["resources","resource_templates","prompts"]),added:q.Array(q.String()),removed:q.Array(q.String()),updated:q.Array(q.String())}),xq=B({type:q.Literal("mcp_resource_updated"),revision:q.Integer({minimum:1}),server_name:q.String(),uri:q.String()}),Lq=B({type:q.Literal("mcp_connection_changed"),revision:q.Integer({minimum:1}),server_name:q.String(),phase:j(["reconnecting","recovered","failed"]),reason:q.String(),attempt:q.Integer({minimum:0}),max_attempts:q.Integer({minimum:0}),next_retry_at:q.Optional(q.Integer({minimum:0})),error:q.Optional(q.String())}),Iq=B({type:q.Literal("mcp_log"),revision:q.Integer({minimum:1}),server_name:q.String(),level:j(["debug","info","notice","warning","error","critical","alert","emergency"]),logger:q.Optional(q.String()),message:q.String(),projected_bytes:q.Integer({minimum:0}),data_sha256:q.String(),truncated:q.Boolean(),details_omitted:q.Boolean(),timestamp:q.Integer({minimum:0}),synthetic:q.Optional(q.Boolean())}),Jq=B({type:q.Literal("mcp_instructions_changed"),revision:q.Integer({minimum:0}),server_name:q.String(),action:j(["added","removed"]),reason:j(["snapshot","connection","disconnection"]),text:q.Optional(q.String()),source_bytes:q.Optional(q.Integer({minimum:0})),projected_bytes:q.Optional(q.Integer({minimum:0})),sha256:q.Optional(q.String()),truncated:q.Optional(q.Boolean()),details_omitted:q.Optional(q.Boolean())}),Wq=B({type:q.Literal("mcp_task_changed"),revision:q.Integer({minimum:0}),task_id:q.String(),server_name:q.String(),tool_name:q.String(),status:j(["working","input_required","interrupted","completed","failed","cancelled"]),status_message:q.Optional(q.String()),created_at:q.Integer({minimum:0}),updated_at:q.Integer({minimum:0}),completed_at:q.Optional(q.Integer({minimum:0})),has_result:q.Boolean(),error:q.Optional(q.String())}),Sq=B({type:q.Literal("project_rules_loaded"),files:q.Array(q.Object({id:q.String(),relative_path:q.String(),source:j(["project","local"]),conditional:q.Boolean(),content_sha256:q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:q.Array(q.String()),blocked_write:q.Boolean()}),Oq=B({type:q.Literal("user_shell_started"),execution_id:q.String(),command:q.String(),auxiliary:q.Boolean()}),hq=B({type:q.Literal("user_shell_output"),execution_id:q.String(),stream:j(["stdout","stderr"]),chunk:q.String(),stream_truncated:q.Boolean()}),Cq=B({type:q.Literal("user_shell_completed"),execution_id:q.String(),message_id:q.String(),status:j(["completed","failed","aborted","timed_out","spawn_error"]),exit_code:q.Union([q.Integer(),q.Null()]),duration_ms:q.Number({minimum:0}),stdout:q.String(),stderr:q.String(),truncated:q.Boolean(),auxiliary:q.Boolean()}),Fq=B({type:q.Literal("phase"),phase:j(["turn","searching","inspecting","target_hit","executing","completed"]),status:j(["ongoing","hit","done"]),message:q.String(),turn:q.Optional(q.Number()),tool_name:q.Optional(q.String()),target:q.Optional(q.String())}),kq=B({type:q.Literal("tool_detail"),tool_name:q.String(),detail:q.String()}),wq=B({type:q.Literal("task_update"),tasks:q.Array(k)}),Tq=B({type:q.Literal("subagent"),state:j(["spawned","completed"]),session_id:q.String(),subagent_type:q.Optional(q.String()),success:q.Optional(q.Boolean()),summary:q.Optional(q.String()),verification_verdict:q.Optional(j(["pass","fail","partial"])),resumed_from:q.Optional(q.String()),root_agent_id:q.Optional(q.String()),resume_depth:q.Optional(q.Integer({minimum:0}))}),yq=B({type:q.Literal("token_usage"),input_tokens:q.Number(),output_tokens:q.Number(),total_tokens:q.Number(),max_context_tokens:q.Number(),cache_read_tokens:q.Optional(q.Number()),cache_write_tokens:q.Optional(q.Number()),cost_usd:q.Optional(q.Number())}),gq=B({type:q.Literal("compacting"),state:j(["started","completed"])}),cq=B({type:q.Literal("turn_limit"),turns_count:q.Number(),action:q.Literal("continue")}),dq=B({type:q.Literal("task_session"),session_id:q.String(),project_path:q.String(),source_project_path:q.String(),isolation:j(["local","worktree"]),worktree_branch:q.Optional(q.String()),base_commit:q.Optional(q.String())}),pq=B({type:q.Literal("task_admission"),state:j(["queued","running"]),queue_position:q.Optional(q.Integer({minimum:1})),queue_depth:q.Integer({minimum:0}),in_flight:q.Integer({minimum:0}),max_concurrent_tasks:q.Integer({minimum:1})}),mq=B({type:q.Literal("output"),content:q.String(),exit_code:q.Number()}),uq=B({type:q.Literal("error"),message:q.String()}),XQ=F(q.Union([bq,Aq,Hq,zq,Rq,Mq,Eq,Pq,Nq,fq,xq,Lq,Iq,Jq,Wq,Sq,Oq,hq,Cq,Fq,kq,wq,Tq,yq,gq,cq,dq,pq,mq,uq]));function y(Z,$){return{event_version:w,type:Z,...$}}function iq(Z){if(Z?.signal)return{signal:Z.signal,dispose:()=>{return}};let $=new AbortController,G=()=>$.abort("interrupt");return process.once("SIGINT",G),process.once("SIGTERM",G),{signal:$.signal,dispose:()=>{process.removeListener("SIGINT",G),process.removeListener("SIGTERM",G)}}}var rq=j(["text","jsonl"]),sq=q.Object({headless:q.Optional(q.Boolean()),message:q.Optional(q.String()),_:q.Optional(q.Array(q.Union([q.String(),q.Number()]))),model:q.Optional(q.String()),systemPrompt:q.Optional(q.String()),appendSystemPrompt:q.Optional(q.String()),maxTurns:q.Optional(q.Refine(q.Integer({maximum:m}),(Z)=>Z===-1||Z>0,()=>"must be -1 or a positive integer")),permissionMode:q.Optional(q.Enum(d)),mcpConfig:q.Optional(q.Array(q.String())),strictMcpConfig:q.Optional(q.Boolean()),sessionId:q.Optional(q.String()),allowedTools:q.Optional(q.Array(q.String())),disallowedTools:q.Optional(q.Array(q.String())),agents:q.Optional(q.String()),continue:q.Optional(q.Boolean()),resume:q.Optional(q.Union([q.String(),q.Boolean()])),forkSession:q.Optional(q.Boolean()),taskIsolation:q.Optional(j(["local","worktree"])),outputFormat:q.Optional(rq)});class Xq{openedThinking=!1;wroteAssistantContent=!1;markAssistantContent(){this.wroteAssistantContent=!0}setThinkingOpened(Z){this.openedThinking=Z}hasOpenThinking(){return this.openedThinking}completeStream(){let Z={openedThinking:this.openedThinking,wroteAssistantContent:this.wroteAssistantContent};return this.openedThinking=!1,this.wroteAssistantContent=!1,Z}}function aq(Z){return Z.issues.map(($)=>`${$.path.join(".")||"options"}: ${$.message}`).join("; ")}function oq(Z){let $=p(sq,Z);if(!$.success)throw Error(`Invalid headless options: ${aq($.error)}`);return $.data}function nq(Z){return Z.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",($)=>$.positional("message",{describe:"Message to process",type:"string"}).option("headless",{type:"boolean",describe:"Run full agent loop without Ink UI and print events to the terminal"}).option("model",{describe:"Model ID for this run",type:"string"}).option("system-prompt",{describe:"Replace the default system prompt",type:"string"}).option("append-system-prompt",{describe:"Append a system prompt to 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"}).option("output-format",{alias:["outputFormat"],choices:["text","jsonl"],describe:"Headless output format",type:"string"}).option("task-isolation",{alias:["taskIsolation"],choices:["local","worktree"],describe:"Dispatch a new durable task in the selected workspace mode",type:"string"}),async($)=>{if(!$.headless)return;let G=await ZQ($);process.exit(G)})}function _(Z,$=""){Z.write(`${$}
|
|
2
|
-
`)}function tq(Z){return`[task] [${Z.status}] ${Z.subject}`}function eq(){return{requestConfirmation:async(Z)=>Z.type==="mcpElicitation"?{approved:!1,reason:"headless-mcp-elicitation-unavailable",elicitation:{action:"cancel"}}:Z.type==="mcpSampling"?{approved:!1,reason:"headless-mcp-sampling-unavailable"}:{approved:!0,reason:"headless-auto-approved",scope:"session"}}}function qQ(Z){if(!(Z instanceof Error))return"Unknown error";let Q=Z.lastError??Z;if(Q.responseBody)try{let K=JSON.parse(Q.responseBody)?.error?.message;if(K)return Q.statusCode?`${K} (HTTP ${Q.statusCode})`:K}catch{}let Y=Z.message.match(/Last error:\s*(.+)$/);if(Y)return Y[1];return Z.message}function QQ(Z){return Z==="jsonl"?"jsonl":"text"}function g(Z,$){let G=(...Q)=>{for(let Y of Q){let U=$[Y];if(typeof U==="string"&&U.trim()!=="")return U}return};switch(Z){case"Read":case"Edit":case"Write":case"UndoEdit":return G("file_path");case"ApplyPatch":return"multi-file patch";case"NotebookEdit":return G("notebook_path");case"Grep":return G("path","pattern");case"Glob":return G("pattern");case"WebFetch":return G("url");case"WebSearch":return G("query");case"Bash":return G("command","description");case"Task":return G("description");case"LSP":return G("filePath","operation");case"EnterWorktree":return G("name");case"ExitWorktree":return G("action");default:return}}function YQ(Z,$,G,Q){let Y=new Set(["Glob","Grep","WebSearch","LS"]),U=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","ApplyPatch","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Z)&&!Q.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${$}`,shouldLockTarget:!0};if(Q.targetLocked)return{phase:"executing",status:"hit",message:G?`Working within target: ${$}`:`Executing: ${$}`,shouldLockTarget:!1};if(Y.has(Z))return{phase:"searching",status:"ongoing",message:`Still searching: ${$}`,shouldLockTarget:!1};if(U.has(Z))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${$}`,shouldLockTarget:!1};return{phase:"executing",status:Q.targetLocked?"hit":"ongoing",message:`Executing: ${$}`,shouldLockTarget:!1}}function c(Z,$){let G=(Q,Y)=>{Z.stdout.write(`${JSON.stringify(y(Q,Y))}
|
|
3
|
-
`)};return{contentDelta(Q){if($==="jsonl"){G("content_delta",{delta:Q});return}Z.stdout.write(Q)},thinkingDelta(Q,Y){if($==="jsonl")return G("thinking_delta",{delta:Q}),Y;if(!Y)Z.stderr.write("[thinking] ");return Z.stderr.write(Q),!0},thinking(Q){if($==="jsonl"){G("thinking",{content:Q});return}_(Z.stderr,`[thinking] ${Q}`)},streamEnd(Q,Y){if($==="jsonl"){G("stream_end",{});return}if(Y)Z.stderr.write(`
|
|
4
|
-
`);if(Q)Z.stdout.write(`
|
|
5
|
-
`)},content(Q){if($==="jsonl"){G("content",{content:Q});return}_(Z.stdout,Q)},toolStart(Q,Y,U,K){if($==="jsonl"){G("tool_start",{tool_name:Q,summary:Y,target:U,tool_kind:K});return}_(Z.stderr,`[tool:start] ${Y}`)},toolProgress(Q,Y,U,K){if($==="jsonl"){G("tool_progress",{tool_name:Q,message:Y,progress:U,total:K});return}_(Z.stderr,`[tool:progress] ${Q}: ${Y}`)},toolResult(Q,Y,U,K,A){if($==="jsonl"){G("tool_result",{tool_name:Q,summary:Y,target:U,tool_kind:K,success:A?.success,error_type:A?.errorType,error_message:A?.errorMessage});return}_(Z.stderr,`[tool:result] ${Y}`)},mcpCatalogChanged(Q){if($==="jsonl"){G("mcp_catalog_changed",{revision:Q.revision,server_name:Q.serverName,added:Q.added,removed:Q.removed,updated:Q.updated});return}_(Z.stderr,`[mcp:catalog] r${Q.revision} ${Q.serverName} +${Q.added.length} -${Q.removed.length} ~${Q.updated.length}`)},mcpContentChanged(Q){if($==="jsonl"){G("mcp_content_changed",{revision:Q.revision,server_name:Q.serverName,content_kind:Q.contentKind==="resourceTemplates"?"resource_templates":Q.contentKind,added:Q.added,removed:Q.removed,updated:Q.updated});return}_(Z.stderr,`[mcp:${Q.contentKind}] r${Q.revision} ${Q.serverName} +${Q.added.length} -${Q.removed.length} ~${Q.updated.length}`)},mcpResourceUpdated(Q){if($==="jsonl"){G("mcp_resource_updated",{revision:Q.revision,server_name:Q.serverName,uri:Q.uri});return}_(Z.stderr,`[mcp:resource] r${Q.revision} ${Q.serverName} updated ${Q.uri}`)},mcpConnectionChanged(Q){if($==="jsonl"){G("mcp_connection_changed",{revision:Q.revision,server_name:Q.serverName,phase:Q.phase,reason:Q.reason,attempt:Q.attempt,max_attempts:Q.maxAttempts,...Q.nextRetryAt!==void 0?{next_retry_at:Q.nextRetryAt}:{},...Q.error?{error:Q.error}:{}});return}_(Z.stderr,`[mcp:connection] r${Q.revision} ${Q.serverName} ${Q.phase} ${Q.attempt}/${Q.maxAttempts}`)},mcpLog(Q){if($==="jsonl"){G("mcp_log",{revision:Q.revision,server_name:Q.serverName,level:Q.level,logger:Q.logger,message:Q.message,projected_bytes:Q.projectedBytes,data_sha256:Q.dataSha256,truncated:Q.truncated,details_omitted:Q.detailsOmitted,timestamp:Q.timestamp,synthetic:Q.synthetic});return}_(Z.stderr,`[mcp:log] ${Q.level} ${Q.serverName}${Q.logger?` logger=${Q.logger}`:""}: ${Q.message}`)},mcpInstructionsChanged(Q){if($==="jsonl"){G("mcp_instructions_changed",{revision:Q.revision,server_name:Q.serverName,action:Q.action,reason:Q.reason,text:Q.text,source_bytes:Q.sourceBytes,projected_bytes:Q.projectedBytes,sha256:Q.sha256,truncated:Q.truncated,details_omitted:Q.detailsOmitted});return}_(Z.stderr,`[mcp:instructions] ${Q.action} ${Q.serverName}${Q.truncated?" (truncated)":""}`)},mcpTaskChanged(Q){if($==="jsonl"){G("mcp_task_changed",{revision:Q.revision,task_id:Q.taskId,server_name:Q.serverName,tool_name:Q.toolName,status:Q.status,status_message:Q.statusMessage,created_at:Q.createdAt,updated_at:Q.updatedAt,completed_at:Q.completedAt,has_result:Q.hasResult,error:Q.error});return}_(Z.stderr,`[mcp:task] ${Q.taskId} ${Q.serverName}/${Q.toolName} `+Q.status)},projectRulesLoaded(Q){if($==="jsonl"){G("project_rules_loaded",{files:Q.files.map((Y)=>({id:Y.id,relative_path:Y.relativePath,source:Y.source,conditional:Y.conditional,content_sha256:Y.contentSha256})),trigger_paths:Q.triggerPaths,blocked_write:Q.blockedWrite});return}_(Z.stderr,`[project-rules] loaded ${Q.files.length} file(s)${Q.blockedWrite?" before write":""}`)},userShellStarted(Q,Y,U){if($==="jsonl"){G("user_shell_started",{execution_id:Q,command:Y,auxiliary:U});return}_(Z.stderr,`[user-shell:start] ${Y}`)},userShellOutput(Q,Y,U,K){if($==="jsonl"){G("user_shell_output",{execution_id:Q,stream:Y,chunk:U,stream_truncated:K});return}(Y==="stderr"?Z.stderr:Z.stdout).write(U)},userShellCompleted(Q){if($==="jsonl"){G("user_shell_completed",{execution_id:Q.executionId,message_id:Q.messageId,status:Q.record.status,exit_code:Q.record.exitCode,duration_ms:Q.record.durationMs,stdout:Q.record.stdout,stderr:Q.record.stderr,truncated:Q.record.truncated,auxiliary:Q.auxiliary});return}_(Z.stderr,`[user-shell:${Q.record.status}] exit=${Q.record.exitCode??"null"} ${Q.record.durationMs}ms`)},phase(Q,Y,U,K={}){if($==="jsonl"){G("phase",{phase:Q,status:Y,message:U,turn:K.turn,tool_name:K.toolName,target:K.target});return}_(Z.stderr,`[phase:${Q}] ${U}`)},toolDetail(Q,Y){if($==="jsonl"){G("tool_detail",{tool_name:Q,detail:Y});return}_(Z.stderr,Y)},taskUpdate(Q){if($==="jsonl"){G("task_update",{tasks:Q});return}for(let Y of Q)_(Z.stderr,tq(Y))},subagent(Q){let Y=Q.kind==="subagent_spawned";if($==="jsonl"){G("subagent",{state:Y?"spawned":"completed",session_id:Q.sessionId,subagent_type:Q.type,success:Y?void 0:Q.success,summary:Y?void 0:Q.summary,verification_verdict:Y?void 0:Q.verificationVerdict,resumed_from:Q.resumedFrom,root_agent_id:Q.rootAgentId,resume_depth:Q.resumeDepth});return}_(Z.stderr,`[subagent:${Y?"spawned":"completed"}] ${Q.sessionId}${Q.resumedFrom?` resumed from ${Q.resumedFrom}`:""}`)},tokenUsage(Q){if($==="jsonl"){G("token_usage",{input_tokens:Q.inputTokens,output_tokens:Q.outputTokens,total_tokens:Q.totalTokens,max_context_tokens:Q.maxContextTokens,cache_read_tokens:Q.cacheReadTokens,cache_write_tokens:Q.cacheWriteTokens,cost_usd:Q.costUsd});return}_(Z.stderr,`[tokens] in=${Q.inputTokens} out=${Q.outputTokens} total=${Q.totalTokens} / ${Q.maxContextTokens}`)},compacting(Q){if($==="jsonl"){G("compacting",{state:Q?"started":"completed"});return}_(Z.stderr,Q?"[context] compacting started":"[context] compacting completed")},turnLimit(Q){if($==="jsonl"){G("turn_limit",{turns_count:Q,action:"continue"});return}_(Z.stderr,`[turn-limit] continuing after ${Q} turns`)},taskSession(Q){if($==="jsonl"){G("task_session",{session_id:Q.sessionId,project_path:Q.projectPath,source_project_path:Q.sourceProjectPath,isolation:Q.isolation,worktree_branch:Q.worktreeBranch,base_commit:Q.baseCommit});return}_(Z.stderr,`[task:${Q.isolation}] ${Q.sessionId} ${Q.sourceProjectPath} -> ${Q.projectPath}${Q.worktreeBranch?` (${Q.worktreeBranch})`:""}`)},taskAdmission(Q){if($==="jsonl"){G("task_admission",{state:Q.state,queue_position:Q.queuePosition,queue_depth:Q.queueDepth,in_flight:Q.inFlight,max_concurrent_tasks:Q.maxConcurrentTasks});return}_(Z.stderr,Q.state==="queued"?`[task:queued] position ${Q.queuePosition??1}/${Q.queueDepth} (running ${Q.inFlight}/${Q.maxConcurrentTasks})`:`[task:running] admitted (running ${Q.inFlight}/${Q.maxConcurrentTasks})`)},output(Q,Y=0){if($==="jsonl"){G("output",{content:Q,exit_code:Y});return}_(Y===0?Z.stdout:Z.stderr,Q)},error(Q){if($==="jsonl"){G("error",{message:Q});return}_(Z.stderr,Q)}}}async function ZQ(Z,$={stdout:process.stdout,stderr:process.stderr},G){let Q="text",Y=c($,Q),U=new Xq,K={targetLocked:!1},A,P,L=iq(G);try{let D=oq(Z);Q=QQ(D.outputFormat),Y=c($,Q),await Zq();let Dq=await $q(D),H=await Gq(Dq);if(H.mode==="output"){if(H.content)Y.output(H.content,H.exitCode??0);return H.exitCode??0}let J=H.content.trimStart().startsWith("!")?H.content.trimStart().slice(1).trim():void 0;if(J!==void 0&&D.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(D.taskIsolation&&(D.continue||D.resume||D.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:z,messages:O,metadata:h}=await Vq({sessionId:D.sessionId,continue:D.continue,resume:D.resume,forkSession:D.forkSession,fallbackSessionPrefix:"headless"}),N=D.permissionMode??h?.permissionMode??"yolo",C=D.model&&D.model!=="inherit"?D.model:u()?.id,b=D.taskIsolation?await Yq.createSessionTask({sessionId:z,prompt:H.content,sourceProjectPath:x(),isolation:D.taskIsolation,dispatch:{version:1,prompt:H.content,sourceProjectPath:x(),isolation:D.taskIsolation,permissionMode:N,...C?{modelId:C}:{}}}):void 0,R=b?.metadata.projectPath??h?.projectPath??x();if(!b)await S.setSessionPermissionMode(z,R,N);let Bq=b?!1:await i.cancelPendingNonInteractive(R,z);if(b)Y.taskSession({sessionId:z,projectPath:R,sourceProjectPath:b.metadata.taskSourceProjectPath??x(),isolation:D.taskIsolation,worktreeBranch:b.metadata.taskWorktreeBranch,baseCommit:b.metadata.taskBaseCommit}),P=v.subscribe((V)=>{if(V.type!=="task.status"||V.sessionId!==z||V.projectPath!==R||!["queued","running"].includes(String(V.properties.taskStatus))||typeof V.properties.taskQueueDepth!=="number"||typeof V.properties.taskInFlight!=="number"||typeof V.properties.taskConcurrencyLimit!=="number")return;Y.taskAdmission({state:V.properties.taskStatus,queuePosition:typeof V.properties.taskQueuePosition==="number"?V.properties.taskQueuePosition:void 0,queueDepth:V.properties.taskQueueDepth,inFlight:V.properties.taskInFlight,maxConcurrentTasks:V.properties.taskConcurrencyLimit})});let Uq={messages:Bq?await S.loadSession(z,R):[...O],userId:"cli-user",sessionId:z,workspaceRoot:R,permissionMode:N,signal:L.signal,...b?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:eq()};if(A=await r.create({sessionId:z,workspaceRoot:R,modelId:D.model,permissionMode:N,mcpConfig:D.mcpConfig,strictMcpConfig:D.strictMcpConfig,agents:D.agents?n(D.agents):void 0,...b?.taskWorktree?{taskWorktree:b.taskWorktree}:{},...b?.metadata.taskIsolation?{taskIsolation:b.metadata.taskIsolation}:{},...O.length>0?{sessionStart:{isResume:!0,resumeSessionId:z}}:{}}),J!==void 0){let V=await A.executeUserShellCommand(J,{signal:L.signal,onEvent:(X)=>{if(X.type==="started")Y.userShellStarted(X.executionId,X.command,X.auxiliary);else if(X.type==="output")Y.userShellOutput(X.executionId,X.stream,X.chunk,X.streamTruncated)}});return Y.userShellCompleted(V),V.record.status==="completed"?0:V.record.status==="aborted"?130:V.record.exitCode??1}let _q=D.maxTurns??A.getConfig().maxTurns,Kq=b?.taskWorktree?[...new Set([...D.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:D.disallowedTools,jq=await o.createWithRuntime(A,{sessionId:z,systemPrompt:D.systemPrompt,appendSystemPrompt:D.appendSystemPrompt,maxTurns:D.maxTurns,modelId:D.model,permissionMode:N,toolWhitelist:D.allowedTools,toolBlacklist:Kq,mcpConfig:D.mcpConfig,strictMcpConfig:D.strictMcpConfig}),W=await l(jq.chatStream(H.content,Uq,{stream:!0,signal:L.signal,maxTurns:D.maxTurns,..._q===-1?{onTurnLimitReached:async(V)=>{return Y.turnLimit(V.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(V)=>{switch(V.kind){case"content_delta":U.markAssistantContent(),Y.contentDelta(V.delta);break;case"thinking_delta":U.setThinkingOpened(Y.thinkingDelta(V.delta,U.hasOpenThinking()));break;case"stream_end":{let X=U.completeStream();Y.streamEnd(X.wroteAssistantContent,X.openedThinking);break}case"tool_start":{let X=V.toolCall;if(!("function"in X))break;if(["TaskCreate","TaskUpdate","TaskList"].includes(X.function.name))break;try{let M=JSON.parse(X.function.arguments),E=s(X.function.name,M),f=g(X.function.name,M),I=YQ(X.function.name,E,f,K);if(I.shouldLockTarget)K.targetLocked=!0;Y.phase(I.phase,I.status,I.message,{toolName:X.function.name,target:f}),Y.toolStart(X.function.name,E,f,V.toolKind)}catch{Y.phase(K.targetLocked?"executing":"searching",K.targetLocked?"hit":"ongoing",K.targetLocked?`Working within target: ${X.function.name}`:`Still searching: ${X.function.name}`,{toolName:X.function.name}),Y.toolStart(X.function.name,X.function.name,void 0,V.toolKind)}break}case"tool_progress":{let X=V.toolCall;if(!("function"in X))break;Y.toolProgress(X.function.name,V.update.message,V.update.progress,V.update.total);break}case"tool_result":{let X=V.toolCall;if(!("function"in X))break;let M;try{let f=JSON.parse(X.function.arguments);M=g(X.function.name,f)}catch{M=void 0}let E=a(X.function.name,V.result);if(Y.toolResult(X.function.name,E.summary,M,void 0,{success:V.result.success,errorType:V.result.error?.type,errorMessage:V.result.error?.message}),E.detail)Y.toolDetail(X.function.name,E.detail);break}case"token_usage":Y.tokenUsage(V.usage);break;case"compaction":Y.compacting(V.phase==="start");break;case"task_update":Y.taskUpdate(V.tasks);break;case"mcp_catalog_changed":Y.mcpCatalogChanged(V);break;case"mcp_content_changed":Y.mcpContentChanged(V);break;case"mcp_resource_updated":Y.mcpResourceUpdated(V);break;case"mcp_connection_changed":Y.mcpConnectionChanged(V);break;case"mcp_log":Y.mcpLog(V);break;case"mcp_instructions_changed":Y.mcpInstructionsChanged(V);break;case"mcp_task_changed":Y.mcpTaskChanged(V);break;case"project_rules_loaded":Y.projectRulesLoaded(V);break;case"steering_applied":case"follow_up_started":case"goal_updated":case"goal_continuation_started":break;case"subagent_spawned":case"subagent_completed":Y.subagent(V);break;case"model_fallback":break;case"turn_start":if(V.turn===1)K.targetLocked=!1;Y.phase("turn",K.targetLocked?"hit":"ongoing",`Turn ${V.turn} started`,{turn:V.turn});break;default:{let X=V}}});if(W.metadata?.outputTruncated)Y.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!W.success)return Y.error(`Error: ${W.error?.message??"Agent execution failed"}`),1;return Y.phase("completed","done","Headless run completed"),0}catch(D){if(U.hasOpenThinking()&&Q==="text")$.stderr.write(`
|
|
6
|
-
`);return Y.error(`Error: ${qQ(D)}`),1}finally{P?.();try{await A?.dispose()}finally{L.dispose()}}}async function OQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:G,"output-format":Q,"system-prompt":Y,"append-system-prompt":U,"max-turns":K,...A}=t,P=lq(vq(process.argv)).scriptName("blade").strict(!1).options(A).middleware([qq,e,Qq]);return nq(P),await P.parse(),!0}export{ZQ as runHeadless,OQ as handleHeadlessMode,sq as HeadlessOptionsSchema};
|
package/dist/chunk-j1sd03h7.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as a,i as b,j as c,k as d,l as e}from"./chunk-p196e4rq.js";import"./chunk-c2rhwxyn.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
|