blade-code 0.10.29 → 0.10.30

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 (52) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-5jxm20vq.js → chunk-1444wfhr.js} +1 -1
  3. package/dist/{chunk-xn5zf98b.js → chunk-1sswefqp.js} +1 -1
  4. package/dist/chunk-2wdmt91f.js +1 -0
  5. package/dist/{chunk-1p45ytbg.js → chunk-3y97cpzv.js} +1 -1
  6. package/dist/{chunk-1yyyt228.js → chunk-56hphybe.js} +1 -1
  7. package/dist/{chunk-bk649qwy.js → chunk-64hndcnj.js} +41 -41
  8. package/dist/{chunk-js9g83ty.js → chunk-6h9d9ykg.js} +1 -1
  9. package/dist/{chunk-m9rg16w4.js → chunk-7brnbdq8.js} +1 -1
  10. package/dist/{chunk-x1p5dmfv.js → chunk-7e7zgzag.js} +1 -1
  11. package/dist/{chunk-s0txchah.js → chunk-82jdnt03.js} +1 -1
  12. package/dist/{chunk-k98n1xwg.js → chunk-9mamc250.js} +1 -1
  13. package/dist/{chunk-66f2fv34.js → chunk-b634n0ts.js} +199 -199
  14. package/dist/{chunk-0mq1yd3k.js → chunk-btfxa4w8.js} +1 -1
  15. package/dist/chunk-d38t0wa2.js +6 -0
  16. package/dist/{chunk-mqezgpcw.js → chunk-e269454y.js} +1 -1
  17. package/dist/{chunk-fewpzx8s.js → chunk-e3qzedvj.js} +1 -1
  18. package/dist/{chunk-33wkt12h.js → chunk-f90v5vza.js} +1 -1
  19. package/dist/{chunk-amm31k3r.js → chunk-fr3kysfm.js} +1 -1
  20. package/dist/{chunk-c2sxy022.js → chunk-h9c7xec5.js} +1 -1
  21. package/dist/{chunk-tf9jmrwk.js → chunk-j3k3xdac.js} +1 -1
  22. package/dist/{chunk-b5btamzc.js → chunk-j7ebts5c.js} +1 -1
  23. package/dist/{chunk-z9ytq8tq.js → chunk-kk071ywk.js} +2 -2
  24. package/dist/{chunk-bbfeb6ry.js → chunk-kkpxmhjv.js} +3 -3
  25. package/dist/chunk-m3epqvpc.js +1 -0
  26. package/dist/{chunk-qv9xa4h1.js → chunk-m8jen593.js} +1 -1
  27. package/dist/{chunk-pamjbphm.js → chunk-mbrgz77y.js} +1 -1
  28. package/dist/{chunk-rfybbxab.js → chunk-n1byt26d.js} +1 -1
  29. package/dist/chunk-q9ghq6jw.js +204 -0
  30. package/dist/chunk-qs9wwe8d.js +9 -0
  31. package/dist/{chunk-q0c3fww1.js → chunk-qv1v32ts.js} +12 -12
  32. package/dist/{chunk-grt2wftd.js → chunk-rh5g6em4.js} +1 -1
  33. package/dist/{chunk-0yy41vwq.js → chunk-vx8a7e1j.js} +1 -1
  34. package/dist/{chunk-h45x1nem.js → chunk-x96czg8t.js} +1 -1
  35. package/dist/{chunk-fvfwmdp0.js → chunk-x9940mcy.js} +1 -1
  36. package/dist/{chunk-vz7hpwf0.js → chunk-xh2c6ycd.js} +1 -1
  37. package/dist/{chunk-v5q235ny.js → chunk-ze8rmhs1.js} +1 -1
  38. package/dist/web/assets/{ChatView-BtSSERlQ.js → ChatView-CjEyCR8V.js} +3 -3
  39. package/dist/web/assets/{CodeBlockHighlighter-CAuanOO0.js → CodeBlockHighlighter-DZxXrhQO.js} +1 -1
  40. package/dist/web/assets/{FilePreview-BKQ-EBj3.js → FilePreview-8fbolCzV.js} +1 -1
  41. package/dist/web/assets/{MarkdownRenderer-BdYjJ_NM.js → MarkdownRenderer-Bfm5TG2z.js} +3 -3
  42. package/dist/web/assets/{SettingsModal-CB6hM8fT.js → SettingsModal-KATzS3Iy.js} +1 -1
  43. package/dist/web/assets/{TaskSwitcher-sSD4B7C_.js → TaskSwitcher-BrfN6F0-.js} +1 -1
  44. package/dist/web/assets/{TerminalPanel-ZnEoQU6o.js → TerminalPanel-sbqhmFcK.js} +1 -1
  45. package/dist/web/assets/{index-DtOztVFd.js → index-xB4mFHWl.js} +3 -3
  46. package/dist/web/index.html +1 -1
  47. package/package.json +1 -1
  48. package/dist/chunk-5dt6199b.js +0 -1
  49. package/dist/chunk-5x26t0c4.js +0 -204
  50. package/dist/chunk-qgp7sqh2.js +0 -1
  51. package/dist/chunk-wxzsnptj.js +0 -6
  52. package/dist/chunk-zx8ktpc4.js +0 -9
@@ -1 +0,0 @@
1
- import{Kc as a,Lc as b}from"./chunk-0mq1yd3k.js";import"./chunk-x1p5dmfv.js";import"./chunk-37se34rx.js";export{a as globalOptions,b as cliConfig};
@@ -1,6 +0,0 @@
1
- import{m as Dq,n as bq,o as zq,p as Hq,q as Uq,r as _q}from"./chunk-rfybbxab.js";import{t as jq}from"./chunk-fewpzx8s.js";import{G as Qq,I as Yq,J as Zq,L as m,M as $q}from"./chunk-66f2fv34.js";import"./chunk-xn5zf98b.js";import"./chunk-1zpqxjj7.js";import{Na as t,ab as e,jb as qq}from"./chunk-5x26t0c4.js";import"./chunk-ej1z75jf.js";import{Qb as o,Ub as n,dc as h,oc as k}from"./chunk-fvfwmdp0.js";import"./chunk-4djps7bz.js";import"./chunk-rezjy4mp.js";import{Kc as Xq}from"./chunk-0mq1yd3k.js";import{Mc as Gq,Nc as Bq,Oc as Kq}from"./chunk-5jxm20vq.js";import{Pc as Vq}from"./chunk-48tz6s0s.js";import"./chunk-d9gthet1.js";import{nd as a}from"./chunk-pamjbphm.js";import"./chunk-v508x7cg.js";import"./chunk-6kc12pma.js";import"./chunk-4qtb8yf6.js";import"./chunk-4p9cwr9s.js";import"./chunk-vz0zsct0.js";import"./chunk-grt2wftd.js";import"./chunk-k98n1xwg.js";import"./chunk-0prp87ys.js";import"./chunk-9pww3s5m.js";import"./chunk-0rwz7tm0.js";import"./chunk-qv9xa4h1.js";import"./chunk-s3zfyy7r.js";import"./chunk-0yy41vwq.js";import{nf as s}from"./chunk-gdp6fg4e.js";import{of as i,qf as Q,rf as d,tf as D}from"./chunk-4qyhtrhx.js";import"./chunk-s6rdv601.js";import{Af as I}from"./chunk-1ggxyyar.js";import"./chunk-ekv4hpy8.js";import"./chunk-8gv6hsrf.js";import"./chunk-5m5nxkfs.js";import"./chunk-x1p5dmfv.js";import"./chunk-2d35rmyg.js";import"./chunk-d4327k1v.js";import"./chunk-heydawsf.js";import"./chunk-37se34rx.js";import $Q from"yargs";import{hideBin as VQ}from"yargs/helpers";var p=1;function K(Y){return Q.Object({event_version:Q.Literal(p),...Y})}var xq=K({type:Q.Literal("content_delta"),delta:Q.String()}),Eq=K({type:Q.Literal("thinking_delta"),delta:Q.String()}),Iq=K({type:Q.Literal("thinking"),content:Q.String()}),Jq=K({type:Q.Literal("stream_end")}),Lq=K({type:Q.Literal("content"),content:Q.String()}),Wq=K({type:Q.Literal("structured_output"),output:Q.Record(Q.String(),Q.Unknown()),schema_digest:Q.String({pattern:"^[a-f0-9]{64}$"})}),u=D(["readonly","write","execute"]),Sq=K({type:Q.Literal("tool_start"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(u)}),hq=K({type:Q.Literal("tool_progress"),tool_name:Q.String(),message:Q.String(),progress:Q.Optional(Q.Number()),total:Q.Optional(Q.Number())}),Cq=K({type:Q.Literal("tool_result"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(u),success:Q.Optional(Q.Boolean()),error_type:Q.Optional(Q.String()),error_message:Q.Optional(Q.String())}),Oq=K({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())}),kq=K({type:Q.Literal("mcp_content_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),content_kind:D(["resources","resource_templates","prompts"]),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Fq=K({type:Q.Literal("mcp_resource_updated"),revision:Q.Integer({minimum:1}),server_name:Q.String(),uri:Q.String()}),wq=K({type:Q.Literal("mcp_connection_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),phase:D(["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())}),gq=K({type:Q.Literal("mcp_log"),revision:Q.Integer({minimum:1}),server_name:Q.String(),level:D(["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())}),yq=K({type:Q.Literal("mcp_instructions_changed"),revision:Q.Integer({minimum:0}),server_name:Q.String(),action:D(["added","removed"]),reason:D(["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())}),Tq=K({type:Q.Literal("mcp_task_changed"),revision:Q.Integer({minimum:0}),task_id:Q.String(),server_name:Q.String(),tool_name:Q.String(),status:D(["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())}),cq=K({type:Q.Literal("project_rules_loaded"),files:Q.Array(Q.Object({id:Q.String(),relative_path:Q.String(),source:D(["project","local"]),conditional:Q.Boolean(),content_sha256:Q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:Q.Array(Q.String()),blocked_write:Q.Boolean()}),dq=K({type:Q.Literal("user_shell_started"),execution_id:Q.String(),command:Q.String(),auxiliary:Q.Boolean()}),mq=K({type:Q.Literal("user_shell_output"),execution_id:Q.String(),stream:D(["stdout","stderr"]),chunk:Q.String(),stream_truncated:Q.Boolean()}),pq=K({type:Q.Literal("user_shell_completed"),execution_id:Q.String(),message_id:Q.String(),status:D(["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()}),uq=K({type:Q.Literal("phase"),phase:D(["turn","searching","inspecting","target_hit","executing","completed"]),status:D(["ongoing","hit","done"]),message:Q.String(),turn:Q.Optional(Q.Number()),tool_name:Q.Optional(Q.String()),target:Q.Optional(Q.String())}),lq=K({type:Q.Literal("tool_detail"),tool_name:Q.String(),detail:Q.String()}),vq=K({type:Q.Literal("task_update"),tasks:Q.Array(m)}),rq=K({type:Q.Literal("goal"),state:D(["updated","cleared"]),goal_id:Q.Optional(Q.String()),status:Q.Optional(D(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"])),verification_attempt:Q.Optional(Q.Integer({minimum:1})),verification_status:Q.Optional(D(["pending","pass","fail","partial"])),verifier_session_id:Q.Optional(Q.String()),verification_evidence_sha256:Q.Optional(Q.String({pattern:"^[a-f0-9]{64}$"}))}),sq=K({type:Q.Literal("subagent"),state:D(["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(D(["pass","fail","partial"])),resumed_from:Q.Optional(Q.String()),root_agent_id:Q.Optional(Q.String()),resume_depth:Q.Optional(Q.Integer({minimum:0}))}),iq=K({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())}),aq=K({type:Q.Literal("compacting"),state:D(["started","completed"]),reason:Q.Optional(D(["threshold","context_limit","turn_limit","manual"])),strategy:Q.Optional(D(["llm","fallback","snip"])),outcome:Q.Optional(D(["completed","fallback","failed"])),pre_tokens:Q.Optional(Q.Number({minimum:0})),post_tokens:Q.Optional(Q.Number({minimum:0}))}),oq=K({type:Q.Literal("provider_retry"),phase:D(["scheduled","attempt","recovered","exhausted"]),attempt:Q.Integer({minimum:0}),max_retries:Q.Integer({minimum:0}),reason:D(["rate_limit","server_error","timeout","transport","stream_closed"]),status_code:Q.Optional(Q.Integer({minimum:100,maximum:599})),delay_ms:Q.Optional(Q.Integer({minimum:0})),next_retry_at:Q.Optional(Q.Integer({minimum:0}))}),nq=K({type:Q.Literal("provider_stall"),phase:D(["detected","recovered"]),stall_count:Q.Integer({minimum:1}),duration_ms:Q.Integer({minimum:0}),warning_after_ms:Q.Integer({minimum:1}),timeout_ms:Q.Integer({minimum:1}),output_started:Q.Boolean()}),tq=K({type:Q.Literal("action_stationarity"),phase:D(["detected","recovered","halted"]),tool_name:Q.String(),run_length:Q.Integer({minimum:1}),nudge_threshold:Q.Integer({minimum:1}),halt_threshold:Q.Integer({minimum:1}),progress_aware:Q.Boolean()}),eq=K({type:Q.Literal("turn_limit"),turns_count:Q.Number(),action:Q.Literal("continue")}),qQ=K({type:Q.Literal("task_session"),session_id:Q.String(),project_path:Q.String(),source_project_path:Q.String(),isolation:D(["local","worktree"]),worktree_branch:Q.Optional(Q.String()),base_commit:Q.Optional(Q.String())}),QQ=K({type:Q.Literal("task_admission"),state:D(["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})}),YQ=K({type:Q.Literal("output"),content:Q.String(),exit_code:Q.Number()}),ZQ=K({type:Q.Literal("error"),message:Q.String()}),fQ=d(Q.Union([xq,Eq,Iq,Jq,Lq,Wq,Sq,hq,Cq,Oq,kq,Fq,wq,gq,yq,Tq,cq,dq,mq,pq,uq,lq,vq,rq,sq,iq,aq,oq,nq,tq,eq,qQ,QQ,YQ,ZQ]));function l(Y,Z){return{event_version:p,type:Y,...Z}}function XQ(Y){if(Y?.signal)return{signal:Y.signal,dispose:()=>{return}};let Z=new AbortController,b=()=>Z.abort("interrupt");return process.once("SIGINT",b),process.once("SIGTERM",b),{signal:Z.signal,dispose:()=>{process.removeListener("SIGINT",b),process.removeListener("SIGTERM",b)}}}var GQ=D(["text","jsonl"]),BQ=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()),verificationAgent:Q.Optional(Q.Boolean()),maxTurns:Q.Optional(Q.Refine(Q.Integer(),(Y)=>Y===-1||Y>0,()=>"must be -1 (unlimited) or a positive integer")),permissionMode:Q.Optional(Q.Enum(s)),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(D(["local","worktree"])),outputFormat:Q.Optional(GQ),jsonSchema:Q.Optional(Q.String()),outputSchema:Q.Optional(Q.String())});class Aq{openedThinking=!1;wroteAssistantContent=!1;markAssistantContent(){this.wroteAssistantContent=!0}setThinkingOpened(Y){this.openedThinking=Y}hasOpenThinking(){return this.openedThinking}completeStream(){let Y={openedThinking:this.openedThinking,wroteAssistantContent:this.wroteAssistantContent};return this.openedThinking=!1,this.wroteAssistantContent=!1,Y}}function KQ(Y){return Y.issues.map((Z)=>`${Z.path.join(".")||"options"}: ${Z.message}`).join("; ")}function jQ(Y){let Z=i(BQ,Y);if(!Z.success)throw Error(`Invalid headless options: ${KQ(Z.error)}`);return Z.data}function DQ(Y){return Y.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",(Z)=>Z.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("verification-agent",{describe:"Run the built-in independent verification agent after non-trivial changes",type:"boolean",default:!0}).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("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("task-isolation",{alias:["taskIsolation"],choices:["local","worktree"],describe:"Dispatch a new durable task in the selected workspace mode",type:"string"}),async(Z)=>{if(!Z.headless)return;let b=await AQ(Z);process.exit(b)})}function j(Y,Z=""){Y.write(`${Z}
2
- `)}function bQ(Y){return`[task] [${Y.status}] ${Y.subject}`}function zQ(){return{requestConfirmation:async(Y)=>Y.type==="mcpElicitation"?{approved:!1,reason:"headless-mcp-elicitation-unavailable",elicitation:{action:"cancel"}}:Y.type==="mcpSampling"?{approved:!1,reason:"headless-mcp-sampling-unavailable"}:{approved:!0,reason:"headless-auto-approved",scope:"session"}}}function HQ(Y){if(!(Y instanceof Error))return"Unknown error";let X=Y.lastError??Y;if(X.responseBody)try{let z=JSON.parse(X.responseBody)?.error?.message;if(z)return X.statusCode?`${z} (HTTP ${X.statusCode})`:z}catch{}let q=Y.message.match(/Last error:\s*(.+)$/);if(q)return q[1];return Y.message}function UQ(Y){return Y==="jsonl"?"jsonl":"text"}function v(Y,Z){let b=(...X)=>{for(let q of X){let $=Z[q];if(typeof $==="string"&&$.trim()!=="")return $}return};switch(Y){case"Read":case"Edit":case"Write":case"UndoEdit":return b("file_path");case"ApplyPatch":return"multi-file patch";case"NotebookEdit":return b("notebook_path");case"Grep":return b("path","pattern");case"Glob":return b("pattern");case"WebFetch":return b("url");case"WebSearch":return b("query");case"Bash":return b("command","description");case"Task":return b("description");case"LSP":return b("filePath","operation");case"EnterWorktree":return b("name");case"ExitWorktree":return b("action");default:return}}function _Q(Y,Z,b,X){let q=new Set(["Glob","Grep","WebSearch","LS"]),$=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","ApplyPatch","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Y)&&!X.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${Z}`,shouldLockTarget:!0};if(X.targetLocked)return{phase:"executing",status:"hit",message:b?`Working within target: ${Z}`:`Executing: ${Z}`,shouldLockTarget:!1};if(q.has(Y))return{phase:"searching",status:"ongoing",message:`Still searching: ${Z}`,shouldLockTarget:!1};if($.has(Y))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${Z}`,shouldLockTarget:!1};return{phase:"executing",status:X.targetLocked?"hit":"ongoing",message:`Executing: ${Z}`,shouldLockTarget:!1}}function r(Y,Z,b=!1){let X=(q,$)=>{Y.stdout.write(`${JSON.stringify(l(q,$))}
3
- `)};return{contentDelta(q){if(Z==="jsonl"){X("content_delta",{delta:q});return}if(b)return;Y.stdout.write(q)},thinkingDelta(q,$){if(Z==="jsonl")return X("thinking_delta",{delta:q}),$;if(!$)Y.stderr.write("[thinking] ");return Y.stderr.write(q),!0},thinking(q){if(Z==="jsonl"){X("thinking",{content:q});return}j(Y.stderr,`[thinking] ${q}`)},streamEnd(q,$){if(Z==="jsonl"){X("stream_end",{});return}if($)Y.stderr.write(`
4
- `);if(q)Y.stdout.write(`
5
- `)},content(q){if(Z==="jsonl"){X("content",{content:q});return}j(Y.stdout,q)},structuredOutput(q){if(Z==="jsonl"){X("structured_output",{output:q.output,schema_digest:q.schemaDigest});return}j(Y.stdout,JSON.stringify(q.output))},toolStart(q,$,z,H){if(Z==="jsonl"){X("tool_start",{tool_name:q,summary:$,target:z,tool_kind:H});return}j(Y.stderr,`[tool:start] ${$}`)},toolProgress(q,$,z,H){if(Z==="jsonl"){X("tool_progress",{tool_name:q,message:$,progress:z,total:H});return}j(Y.stderr,`[tool:progress] ${q}: ${$}`)},toolResult(q,$,z,H,M){if(Z==="jsonl"){X("tool_result",{tool_name:q,summary:$,target:z,tool_kind:H,success:M?.success,error_type:M?.errorType,error_message:M?.errorMessage});return}j(Y.stderr,`[tool:result] ${$}`)},mcpCatalogChanged(q){if(Z==="jsonl"){X("mcp_catalog_changed",{revision:q.revision,server_name:q.serverName,added:q.added,removed:q.removed,updated:q.updated});return}j(Y.stderr,`[mcp:catalog] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpContentChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:${q.contentKind}] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpResourceUpdated(q){if(Z==="jsonl"){X("mcp_resource_updated",{revision:q.revision,server_name:q.serverName,uri:q.uri});return}j(Y.stderr,`[mcp:resource] r${q.revision} ${q.serverName} updated ${q.uri}`)},mcpConnectionChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:connection] r${q.revision} ${q.serverName} ${q.phase} ${q.attempt}/${q.maxAttempts}`)},mcpLog(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:log] ${q.level} ${q.serverName}${q.logger?` logger=${q.logger}`:""}: ${q.message}`)},mcpInstructionsChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:instructions] ${q.action} ${q.serverName}${q.truncated?" (truncated)":""}`)},mcpTaskChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:task] ${q.taskId} ${q.serverName}/${q.toolName} `+q.status)},projectRulesLoaded(q){if(Z==="jsonl"){X("project_rules_loaded",{files:q.files.map(($)=>({id:$.id,relative_path:$.relativePath,source:$.source,conditional:$.conditional,content_sha256:$.contentSha256})),trigger_paths:q.triggerPaths,blocked_write:q.blockedWrite});return}j(Y.stderr,`[project-rules] loaded ${q.files.length} file(s)${q.blockedWrite?" before write":""}`)},userShellStarted(q,$,z){if(Z==="jsonl"){X("user_shell_started",{execution_id:q,command:$,auxiliary:z});return}j(Y.stderr,`[user-shell:start] ${$}`)},userShellOutput(q,$,z,H){if(Z==="jsonl"){X("user_shell_output",{execution_id:q,stream:$,chunk:z,stream_truncated:H});return}($==="stderr"?Y.stderr:Y.stdout).write(z)},userShellCompleted(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[user-shell:${q.record.status}] exit=${q.record.exitCode??"null"} ${q.record.durationMs}ms`)},phase(q,$,z,H={}){if(Z==="jsonl"){X("phase",{phase:q,status:$,message:z,turn:H.turn,tool_name:H.toolName,target:H.target});return}j(Y.stderr,`[phase:${q}] ${z}`)},toolDetail(q,$){if(Z==="jsonl"){X("tool_detail",{tool_name:q,detail:$});return}j(Y.stderr,$)},taskUpdate(q){if(Z==="jsonl"){X("task_update",{tasks:q});return}for(let $ of q)j(Y.stderr,bQ($))},goal(q){if(Z==="jsonl"){X("goal",{state:q.goal?"updated":"cleared",goal_id:q.goal?.goalId,status:q.goal?.status,verification_attempt:q.goal?.completionVerification?.attempt,verification_status:q.goal?.completionVerification?.status,verifier_session_id:q.goal?.completionVerification?.verifierSessionId,verification_evidence_sha256:q.goal?.completionVerification?.evidenceSha256});return}if(q.goal)j(Y.stderr,`[goal:${q.goal.status}] ${q.goal.objective}`);else j(Y.stderr,"[goal:cleared]")},subagent(q){let $=q.kind==="subagent_spawned";if(Z==="jsonl"){X("subagent",{state:$?"spawned":"completed",session_id:q.sessionId,subagent_type:q.type,success:$?void 0:q.success,summary:$?void 0:q.summary,verification_verdict:$?void 0:q.verificationVerdict,resumed_from:q.resumedFrom,root_agent_id:q.rootAgentId,resume_depth:q.resumeDepth});return}j(Y.stderr,`[subagent:${$?"spawned":"completed"}] ${q.sessionId}${q.resumedFrom?` resumed from ${q.resumedFrom}`:""}`)},tokenUsage(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){let $=q.phase==="start";if(Z==="jsonl"){X("compacting",{state:$?"started":"completed",reason:q.reason,strategy:q.strategy,outcome:q.outcome,pre_tokens:q.preTokens,post_tokens:q.postTokens});return}j(Y.stderr,$?`[context] compacting started${q.reason?` (${q.reason})`:""}`:`[context] compacting ${q.outcome??"completed"}`)},providerRetry(q){if(Z==="jsonl"){X("provider_retry",{phase:q.phase,attempt:q.attempt,max_retries:q.maxRetries,reason:q.reason,status_code:q.statusCode,delay_ms:q.delayMs,next_retry_at:q.nextRetryAt});return}let $=q.delayMs!==void 0?` in ${Math.max(0,Math.ceil(q.delayMs/1000))}s`:"";j(Y.stderr,`[provider-retry:${q.phase}] ${q.attempt}/${q.maxRetries} ${q.reason}${$}`)},providerStall(q){if(Z==="jsonl"){X("provider_stall",{phase:q.phase,stall_count:q.stallCount,duration_ms:q.durationMs,warning_after_ms:q.warningAfterMs,timeout_ms:q.timeoutMs,output_started:q.outputStarted});return}j(Y.stderr,`[provider-stall:${q.phase}] ${q.durationMs}ms / ${q.timeoutMs}ms`)},actionStationarity(q){if(Z==="jsonl"){X("action_stationarity",{phase:q.phase,tool_name:q.toolName,run_length:q.runLength,nudge_threshold:q.nudgeThreshold,halt_threshold:q.haltThreshold,progress_aware:q.progressAware});return}j(Y.stderr,`[action-stationarity:${q.phase}] ${q.toolName} ${q.runLength}/${q.haltThreshold}`)},turnLimit(q){if(Z==="jsonl"){X("turn_limit",{turns_count:q,action:"continue"});return}j(Y.stderr,`[turn-limit] continuing after ${q} turns`)},taskSession(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[task:${q.isolation}] ${q.sessionId} ${q.sourceProjectPath} -> ${q.projectPath}${q.worktreeBranch?` (${q.worktreeBranch})`:""}`)},taskAdmission(q){if(Z==="jsonl"){X("task_admission",{state:q.state,queue_position:q.queuePosition,queue_depth:q.queueDepth,in_flight:q.inFlight,max_concurrent_tasks:q.maxConcurrentTasks});return}j(Y.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,$=0){if(Z==="jsonl"){X("output",{content:q,exit_code:$});return}j($===0?Y.stdout:Y.stderr,q)},error(q){if(Z==="jsonl"){X("error",{message:q});return}j(Y.stderr,q)}}}async function AQ(Y,Z={stdout:process.stdout,stderr:process.stderr},b){let X="text",q=r(Z,X),$=new Aq,z={targetLocked:!1},H,M,J=XQ(b);try{let G=jQ(Y);X=UQ(G.outputFormat);let N=await Uq(G);q=r(Z,X,Boolean(N)),await Dq();let F=G.forkSession!==!0&&(G.continue===!0||typeof G.resume==="string"&&G.resume.length>0)?await zq({message:G.message,_:G._,stdin:b?.stdin}):await bq({...G,stdin:b?.stdin}),L=F===void 0,_=L?{mode:"agent",content:""}:await Hq(F);if(_.mode==="output"){if(_.content)q.output(_.content,_.exitCode??0);return _.exitCode??0}let W=_.content.trimStart().startsWith("!")?_.content.trimStart().slice(1).trim():void 0;if(W!==void 0&&G.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(W!==void 0&&N)throw Error("Output schemas cannot be combined with user shell commands");if(G.taskIsolation&&(G.continue||G.resume||G.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:A,messages:w,metadata:g}=await _q({sessionId:G.sessionId,continue:G.continue,resume:G.resume,forkSession:G.forkSession,fallbackSessionPrefix:"headless"}),x=G.permissionMode??g?.permissionMode??"yolo",y=G.model&&G.model!=="inherit"?G.model:a()?.id,U=G.taskIsolation?await jq.createSessionTask({sessionId:A,prompt:_.content,sourceProjectPath:I(),isolation:G.taskIsolation,dispatch:{version:1,prompt:_.content,sourceProjectPath:I(),isolation:G.taskIsolation,permissionMode:x,...y?{modelId:y}:{},...N?{outputSchema:N}:{}}}):void 0,P=U?.metadata.projectPath??g?.projectPath??I();if(!U)await k.setSessionPermissionMode(A,P,x);let Mq=U?!1:await qq.cancelPendingNonInteractive(P,A);if(U)q.taskSession({sessionId:A,projectPath:P,sourceProjectPath:U.metadata.taskSourceProjectPath??I(),isolation:G.taskIsolation,worktreeBranch:U.metadata.taskWorktreeBranch,baseCommit:U.metadata.taskBaseCommit}),M=t.subscribe((V)=>{if(V.type!=="task.status"||V.sessionId!==A||V.projectPath!==P||!["queued","running"].includes(String(V.properties.taskStatus))||typeof V.properties.taskQueueDepth!=="number"||typeof V.properties.taskInFlight!=="number"||typeof V.properties.taskConcurrencyLimit!=="number")return;q.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 Pq={messages:Mq?await k.loadSessionModelContext(A,P):[...w],userId:"cli-user",sessionId:A,workspaceRoot:P,permissionMode:x,signal:J.signal,...U?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:zQ()};H=await Qq.create({sessionId:A,workspaceRoot:P,modelId:G.model,permissionMode:x,mcpConfig:G.mcpConfig,strictMcpConfig:G.strictMcpConfig,agents:G.agents?Vq(G.agents):void 0,...U?.taskWorktree?{taskWorktree:U.taskWorktree}:{},...U?.metadata.taskIsolation?{taskIsolation:U.metadata.taskIsolation}:{},...w.length>0?{sessionStart:{isResume:!0,resumeSessionId:A}}:{}});let C=L&&H.getPendingSteeringCount()>0,T=L&&!C?await H.getGoal():null,c=T?.status==="active"||T?.status==="verifying";if(L&&!C&&!c)throw Error("No unfinished turn or active goal to resume");if(W!==void 0){let V=await H.executeUserShellCommand(W,{signal:J.signal,onEvent:(B)=>{if(B.type==="started")q.userShellStarted(B.executionId,B.command,B.auxiliary);else if(B.type==="output")q.userShellOutput(B.executionId,B.stream,B.chunk,B.streamTruncated)}});return q.userShellCompleted(V),V.record.status==="completed"?0:V.record.status==="aborted"?130:V.record.exitCode??1}let Nq=G.maxTurns??H.getConfig().maxTurns,Rq=U?.taskWorktree?[...new Set([...G.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:G.disallowedTools,fq=await $q.createWithRuntime(H,{sessionId:A,systemPrompt:G.systemPrompt,appendSystemPrompt:G.appendSystemPrompt,maxTurns:G.maxTurns,modelId:G.model,permissionMode:x,toolWhitelist:G.allowedTools,toolBlacklist:Rq,mcpConfig:G.mcpConfig,strictMcpConfig:G.strictMcpConfig}),O=await e(fq.chatStream(_.content,Pq,{stream:!0,signal:J.signal,maxTurns:G.maxTurns,builtinVerification:G.verificationAgent!==!1,outputSchema:N,pendingInputOnly:C,goalContinuationOnly:c,...Nq===-1?{onTurnLimitReached:async(V)=>{return q.turnLimit(V.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(V)=>{switch(V.kind){case"content_delta":if(!N||X==="jsonl")$.markAssistantContent();q.contentDelta(V.delta);break;case"thinking_delta":$.setThinkingOpened(q.thinkingDelta(V.delta,$.hasOpenThinking()));break;case"stream_end":{let B=$.completeStream();q.streamEnd(B.wroteAssistantContent,B.openedThinking);break}case"tool_start":{let B=V.toolCall;if(!("function"in B))break;if(B.function.name===h)break;if(["TaskCreate","TaskUpdate","TaskList"].includes(B.function.name))break;try{let R=JSON.parse(B.function.arguments),f=Yq(B.function.name,R),E=v(B.function.name,R),S=_Q(B.function.name,f,E,z);if(S.shouldLockTarget)z.targetLocked=!0;q.phase(S.phase,S.status,S.message,{toolName:B.function.name,target:E}),q.toolStart(B.function.name,f,E,V.toolKind)}catch{q.phase(z.targetLocked?"executing":"searching",z.targetLocked?"hit":"ongoing",z.targetLocked?`Working within target: ${B.function.name}`:`Still searching: ${B.function.name}`,{toolName:B.function.name}),q.toolStart(B.function.name,B.function.name,void 0,V.toolKind)}break}case"tool_progress":{let B=V.toolCall;if(!("function"in B))break;if(B.function.name===h)break;q.toolProgress(B.function.name,V.update.message,V.update.progress,V.update.total);break}case"tool_result":{let B=V.toolCall;if(!("function"in B))break;if(B.function.name===h)break;let R;try{let E=JSON.parse(B.function.arguments);R=v(B.function.name,E)}catch{R=void 0}let f=n(Zq(B.function.name,V.result),o);if(q.toolResult(B.function.name,f.summary,R,void 0,{success:V.result.success,errorType:V.result.error?.type,errorMessage:V.result.error?.message}),f.detail)q.toolDetail(B.function.name,f.detail);break}case"token_usage":q.tokenUsage(V.usage);break;case"compaction":q.compacting(V);break;case"task_update":q.taskUpdate(V.tasks);break;case"structured_output":q.structuredOutput(V);break;case"mcp_catalog_changed":q.mcpCatalogChanged(V);break;case"mcp_content_changed":q.mcpContentChanged(V);break;case"mcp_resource_updated":q.mcpResourceUpdated(V);break;case"mcp_connection_changed":q.mcpConnectionChanged(V);break;case"mcp_log":q.mcpLog(V);break;case"mcp_instructions_changed":q.mcpInstructionsChanged(V);break;case"mcp_task_changed":q.mcpTaskChanged(V);break;case"project_rules_loaded":q.projectRulesLoaded(V);break;case"steering_applied":case"follow_up_started":case"goal_continuation_started":break;case"goal_updated":q.goal(V);break;case"subagent_spawned":case"subagent_completed":q.subagent(V);break;case"model_fallback":break;case"provider_retry":q.providerRetry(V);break;case"provider_stall":q.providerStall(V);break;case"action_stationarity":q.actionStationarity(V);break;case"turn_start":if(V.turn===1)z.targetLocked=!1;q.phase("turn",z.targetLocked?"hit":"ongoing",`Turn ${V.turn} started`,{turn:V.turn});break;default:{let B=V}}});if(O.metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!O.success)return q.error(`Error: ${O.error?.message??"Agent execution failed"}`),1;return q.phase("completed","done","Headless run completed"),0}catch(G){if($.hasOpenThinking()&&X==="text")Z.stderr.write(`
6
- `);return q.error(`Error: ${HQ(G)}`),1}finally{M?.();try{await H?.dispose()}finally{J.dispose()}}}async function sQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:b,"output-format":X,"system-prompt":q,"append-system-prompt":$,"max-turns":z,...H}=Xq,M=$Q(VQ(process.argv)).scriptName("blade").strict(!1).options(H).middleware([Bq,Gq,Kq]);return DQ(M),await M.parse(),!0}export{AQ as runHeadless,sQ as handleHeadlessMode,BQ as HeadlessOptionsSchema};
@@ -1,9 +0,0 @@
1
- import{m as S,n as c,o as g,p as d,q as m,r as l}from"./chunk-rfybbxab.js";import{G as y,M}from"./chunk-66f2fv34.js";import"./chunk-xn5zf98b.js";import"./chunk-1zpqxjj7.js";import{ab as h,jb as f}from"./chunk-5x26t0c4.js";import"./chunk-ej1z75jf.js";import{ac as w,oc as F}from"./chunk-fvfwmdp0.js";import"./chunk-4djps7bz.js";import"./chunk-rezjy4mp.js";import{Kc as v}from"./chunk-0mq1yd3k.js";import{Mc as R,Nc as C,Oc as I}from"./chunk-5jxm20vq.js";import{Pc as O}from"./chunk-48tz6s0s.js";import"./chunk-d9gthet1.js";import{kd as P}from"./chunk-pamjbphm.js";import"./chunk-v508x7cg.js";import"./chunk-6kc12pma.js";import"./chunk-4qtb8yf6.js";import"./chunk-4p9cwr9s.js";import"./chunk-vz0zsct0.js";import"./chunk-grt2wftd.js";import"./chunk-k98n1xwg.js";import"./chunk-0prp87ys.js";import"./chunk-9pww3s5m.js";import"./chunk-0rwz7tm0.js";import"./chunk-qv9xa4h1.js";import"./chunk-s3zfyy7r.js";import"./chunk-0yy41vwq.js";import{nf as x}from"./chunk-gdp6fg4e.js";import"./chunk-4qyhtrhx.js";import"./chunk-s6rdv601.js";import{Af as z}from"./chunk-1ggxyyar.js";import"./chunk-ekv4hpy8.js";import"./chunk-8gv6hsrf.js";import"./chunk-5m5nxkfs.js";import"./chunk-x1p5dmfv.js";import"./chunk-2d35rmyg.js";import"./chunk-d4327k1v.js";import"./chunk-heydawsf.js";import"./chunk-37se34rx.js";import u from"yargs";import{hideBin as r}from"yargs/helpers";var p=new Set(Object.values(x));function e(j){if(j&&p.has(j))return j;return}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 i(B);process.exit(q)})}async function i(j,B=process){let q;try{await S();let L=j.forkSession!==!0&&(j.continue===!0||typeof j.resume==="string"&&j.resume.length>0)?await g({message:j.message,_:j._}):await c({message:j.message,_:j._,defaultMessage:"Hello"}),K=L===void 0,Q=K?{mode:"agent",content:""}:await d(L);if(Q.mode==="output"){if(Q.content)B.stdout.write(`${Q.content}
2
- `);return Q.exitCode??0}let T=Q.content,W=await m(j),X=T.trimStart().startsWith("!")?T.trimStart().slice(1).trim():void 0;if(X!==void 0&&W)throw Error("Output schemas cannot be combined with user shell commands");let{sessionId:H,messages:a,metadata:A}=await l({sessionId:j.sessionId,continue:j.continue,resume:j.resume,forkSession:j.forkSession,fallbackSessionPrefix:"print"}),Y=A?.projectPath??z(),$=e(j.permissionMode)??A?.permissionMode??P()?.permissionMode??"default";await F.setSessionPermissionMode(H,Y,$);let D=await f.cancelPendingNonInteractive(Y,H)?await F.loadSessionModelContext(H,Y):a;q=await y.create({sessionId:H,workspaceRoot:Y,modelId:j.model,permissionMode:$,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig,agents:j.agents?O(j.agents):void 0,...D.length>0?{sessionStart:{isResume:!0,resumeSessionId:H}}:{}});let U=K&&q.getPendingSteeringCount()>0,E=K&&!U?await q.getGoal():null,G=E?.status==="active"||E?.status==="verifying";if(K&&!U&&!G)throw Error("No unfinished turn or active goal to resume");if(X!==void 0){let J=await q.executeUserShellCommand(X);if(j.outputFormat==="json")B.stdout.write(`${JSON.stringify(J,null,2)}
3
- `);else if(j.outputFormat==="stream-json")B.stdout.write(`${JSON.stringify({type:"user_shell_completed",executionId:J.executionId,record:J.record})}
4
- `);else B.stdout.write(`${w(J.record)}
5
- `);return J.record.status==="completed"?0:J.record.status==="aborted"?130:J.record.exitCode??1}let N=await M.createWithRuntime(q,{sessionId:H,systemPrompt:j.systemPrompt,appendSystemPrompt:j.appendSystemPrompt,maxTurns:j.maxTurns,modelId:j.model,permissionMode:$,toolWhitelist:j.allowedTools,toolBlacklist:j.disallowedTools,mcpConfig:j.mcpConfig,strictMcpConfig:j.strictMcpConfig}),k={messages:[...D],userId:"cli-user",sessionId:H,workspaceRoot:Y,permissionMode:$},V=await h(W||K?N.chatStream(T,k,{...W?{outputSchema:W}:{},pendingInputOnly:U,goalContinuationOnly:G}):N.chatStream(T,k));if(!V.success)throw Error(V.error?.message??"Agent execution failed");let _=V.finalMessage||"",b=V.metadata?.structuredOutput;if(j.outputFormat==="json")B.stdout.write(`${JSON.stringify({response:_,...b?{structured_output:b,output_schema_digest:V.metadata?.structuredOutputSchemaDigest}:{},input:T,model:j.model,timestamp:new Date().toISOString()},null,2)}
6
- `);else if(j.outputFormat==="stream-json")B.stdout.write(`${JSON.stringify(b?{type:"structured_output",output:b,schema_digest:V.metadata?.structuredOutputSchemaDigest}:{type:"response",content:_})}
7
- `);else B.stdout.write(`${_}
8
- `);return 0}catch(Z){return B.stderr.write(`Error: ${Z instanceof Error?Z.message:"未知错误"}
9
- `),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":Z,"include-partial-messages":L,"input-format":K,"system-prompt":Q,"append-system-prompt":T,"max-turns":W,...X}=v,H=u(r(process.argv)).scriptName("blade").strict(!1).options(X).middleware([C,R,I]);return n(H),await H.parse(),!0}catch(q){console.error(`Print mode error: ${q instanceof Error?q.message:"未知错误"}`),process.exit(1)}}export{i as runPrint,Fj as handlePrintMode};