blade-code 0.4.1 → 0.4.3

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 (64) hide show
  1. package/dist/blade.js +4 -3084
  2. package/dist/chunk-094ekgv6.js +41 -0
  3. package/dist/chunk-1dvhq0mn.js +2 -0
  4. package/dist/chunk-420vamtq.js +1 -0
  5. package/dist/chunk-52k9k0w8.js +1 -0
  6. package/dist/chunk-5mtjqqav.js +8 -0
  7. package/dist/chunk-5zkcs06z.js +3 -0
  8. package/dist/chunk-76emdpxa.js +76 -0
  9. package/dist/chunk-7g20yr9m.js +1 -0
  10. package/dist/chunk-7ycmx7c2.js +2 -0
  11. package/dist/chunk-80jc465v.js +13 -0
  12. package/dist/chunk-8jwqy5d0.js +49 -0
  13. package/dist/chunk-bhjw4b73.js +1 -0
  14. package/dist/chunk-c7e33j6k.js +6 -0
  15. package/dist/chunk-ehcjnwnr.js +582 -0
  16. package/dist/chunk-esnkk33h.js +21 -0
  17. package/dist/chunk-g5pasj7t.js +1 -0
  18. package/dist/chunk-gm59f5pe.js +1 -0
  19. package/dist/chunk-h3ccyfqj.js +1 -0
  20. package/dist/chunk-hbv7nxdh.js +6 -0
  21. package/dist/chunk-hhnst8br.js +4 -0
  22. package/dist/chunk-hwhz4m2c.js +157 -0
  23. package/dist/chunk-hwkdy2ez.js +2 -0
  24. package/dist/chunk-j2ag7hh6.js +2 -0
  25. package/dist/chunk-jz59sjzb.js +6 -0
  26. package/dist/chunk-njy55zd2.js +34 -0
  27. package/dist/chunk-p0n9ggyv.js +6 -0
  28. package/dist/chunk-phzbecpx.js +2 -0
  29. package/dist/chunk-q4hrt6r4.js +1 -0
  30. package/dist/chunk-qbm9qrtg.js +2063 -0
  31. package/dist/chunk-qwfywxs2.js +2 -0
  32. package/dist/chunk-set7v1rf.js +3 -0
  33. package/dist/chunk-tf0m57f5.js +4 -0
  34. package/dist/chunk-th432d0b.js +1 -0
  35. package/dist/chunk-vwn39c84.js +2 -0
  36. package/dist/chunk-y5g06jmk.js +24 -0
  37. package/dist/chunk-yddnm9n2.js +1 -0
  38. package/dist/chunk-yjs7nvr5.js +1 -0
  39. package/dist/chunk-zs7xeymy.js +1 -0
  40. package/dist/chunk-zszvkp6z.js +10 -0
  41. package/dist/web/assets/CodeBlockHighlighter-C86flFwh.js +1 -0
  42. package/dist/web/assets/FilePreview-R1mRzyRz.js +7 -0
  43. package/dist/web/assets/MarkdownRenderer-B46lJYAn.js +1 -0
  44. package/dist/web/assets/McpModal-QRv5Ij61.js +5 -0
  45. package/dist/web/assets/SettingsModal-D-mi6mUR.js +1 -0
  46. package/dist/web/assets/SettingsStore-Dmo3sZ_R.js +1 -0
  47. package/dist/web/assets/SkillsModal-DNXjbjEs.js +1 -0
  48. package/dist/web/assets/TerminalPanel-DG_Q4UKr.js +1 -0
  49. package/dist/web/assets/dialog-CsiChiYt.js +1 -0
  50. package/dist/web/assets/index-BeYCsOvo.js +10 -0
  51. package/dist/web/assets/index-DmXmCQOW.css +1 -0
  52. package/dist/web/assets/useRequest-BJp539HQ.js +1 -0
  53. package/dist/web/assets/vendor-icons-DlzC8I7m.js +166 -0
  54. package/dist/web/assets/vendor-markdown-DIcugY1e.js +36 -0
  55. package/dist/web/assets/vendor-monaco-w6PwaWGP.js +11 -0
  56. package/dist/web/assets/vendor-radix-CfxBc_4-.js +45 -0
  57. package/dist/web/assets/vendor-react-Dm1xU4bP.js +49 -0
  58. package/dist/web/assets/vendor-xterm-9CEnUXvW.css +32 -0
  59. package/dist/web/assets/vendor-xterm-DuYZoU4T.js +49 -0
  60. package/dist/web/index.html +2 -2
  61. package/package.json +4 -1
  62. package/dist/web/assets/index-CVfbjhXj.js +0 -11
  63. package/dist/web/assets/index-C_uNajWk.js +0 -360
  64. package/dist/web/assets/index-QhJxewcm.css +0 -32
@@ -0,0 +1,21 @@
1
+ import{sb as Y,xb as Z}from"./chunk-7ycmx7c2.js";import{execSync as A}from"child_process";import{existsSync as N,realpathSync as E}from"fs";import{basename as I,isAbsolute as _,resolve as F}from"path";import*as Q from"os";import*as H from"path";function T(){let B=Z(),q=J(B);return{workingDirectory:B,projectRoot:q,platform:`${Q.platform()} (${Q.arch()})`,nodeVersion:process.version,currentDate:new Date().toISOString().split("T")[0],homeDirectory:Q.homedir()}}function U(B,q){try{return A(q,{cwd:B,encoding:"utf8",stdio:["pipe","pipe","ignore"]}).trim()}catch{return null}}function f(B={}){let{includeGitSnapshot:q=!1}=B,z=T(),K=N(H.join(z.projectRoot,".git")),$=I(process.env.SHELL||"unknown"),V=["package.json","tsconfig.json","BLADE.md",".env.example"].filter((M)=>N(H.join(z.projectRoot,M))).map((M)=>`- \`${H.join(z.projectRoot,M)}\``),L=`# Environment
2
+ You have been invoked in the following environment:
3
+ - Primary working directory: ${z.workingDirectory}
4
+ - Is a git repository: ${K?"true":"false"}
5
+ - Platform: ${z.platform}
6
+ - Shell: ${$}
7
+ - Node.js: ${z.nodeVersion}`;if(q&&K){let M=U(z.projectRoot,"git rev-parse --abbrev-ref HEAD"),W=U(z.projectRoot,"git status --short"),X=U(z.projectRoot,"git log --oneline -n 3");if(M)L+=`
8
+ - Current branch: ${M}`;if(W)L+=`
9
+
10
+ Working tree status:
11
+ ${W}`;if(X)L+=`
12
+
13
+ Recent commits:
14
+ ${X}`}if(L+=`
15
+
16
+ When using file tools (read, write, edit), provide absolute paths based on: \`${z.workingDirectory}/\``,V.length>0)L+=`
17
+
18
+ Key project files at root for quick reference:
19
+ ${V.join(`
20
+ `)}`;return L}function J(B){let q=B,z=null;while(q!==H.dirname(q)){if(N(H.join(q,".git")))return q;if(N(H.join(q,".blade")))return q;if(N(H.join(q,".claude")))return q;if(!z&&N(H.join(q,"package.json")))z=q;q=H.dirname(q)}return z??B}function k(B,q){let z=_(B)?B:F(q||process.cwd(),B),K;try{K=E(z)}catch{K=z}Y(K)}
21
+ export{f as Z,J as _,k as $};
@@ -0,0 +1 @@
1
+ import"./chunk-j2ag7hh6.js";var d={command:"install [target]",describe:"Install Blade native build. Use [target] to specify version (stable, latest, or specific version)",builder:(b)=>{return b.positional("target",{describe:"Version to install",type:"string",default:"stable",choices:["stable","latest"]}).option("force",{type:"boolean",describe:"Force reinstall",default:!1}).example([["$0 install","Install stable version"],["$0 install latest","Install latest version"],["$0 install --force","Force reinstall stable version"]])},handler:async(b)=>{console.log(`Installing Blade ${b.target}...`);try{if(b.force)console.log("Force reinstall enabled");console.log("Downloading..."),console.log("Installing..."),console.log("Installation completed successfully")}catch(c){console.error(`Error: Installation failed: ${c instanceof Error?c.message:"未知错误"}`),process.exit(1)}}};export{d as installCommands};
@@ -0,0 +1 @@
1
+ import{a as y,b as A,c as C,d as D}from"./chunk-hwkdy2ez.js";import"./chunk-vwn39c84.js";import"./chunk-qbm9qrtg.js";import"./chunk-njy55zd2.js";import"./chunk-esnkk33h.js";import"./chunk-phzbecpx.js";import"./chunk-8jwqy5d0.js";import{Aa as q}from"./chunk-76emdpxa.js";import"./chunk-y5g06jmk.js";import"./chunk-ehcjnwnr.js";import"./chunk-yddnm9n2.js";import"./chunk-094ekgv6.js";import"./chunk-5mtjqqav.js";import"./chunk-7ycmx7c2.js";import"./chunk-set7v1rf.js";import"./chunk-j2ag7hh6.js";import H from"chalk";var R={command:"serve",describe:"Start a headless Blade server (no browser)",builder:y,handler:async(E)=>{let f=A(E);if(await q(),!process.env.BLADE_SERVER_PASSWORD)console.log(H.yellow("Warning: BLADE_SERVER_PASSWORD is not set; server is unsecured."));let b=await D.listenAsync(f);if(console.log(`Blade server listening on http://${b.hostname}:${b.port}`),f.hostname==="0.0.0.0"){let F=C();for(let G of F)console.log(` Network: http://${G}:${b.port}`)}await new Promise(()=>{}),await b.stop()}};export{R as serveCommand};
@@ -0,0 +1 @@
1
+ import{ga as a}from"./chunk-8jwqy5d0.js";import"./chunk-76emdpxa.js";import"./chunk-y5g06jmk.js";import"./chunk-7ycmx7c2.js";import"./chunk-set7v1rf.js";import"./chunk-j2ag7hh6.js";export{a as SpecManager};
@@ -0,0 +1,6 @@
1
+ import{p as z,q as g,r as v,s as p}from"./chunk-hhnst8br.js";import{t as E}from"./chunk-1dvhq0mn.js";import{v as S,w as h,x as c}from"./chunk-jz59sjzb.js";import{G as w,I as F,J as y,L as x,M as C}from"./chunk-qbm9qrtg.js";import"./chunk-njy55zd2.js";import"./chunk-esnkk33h.js";import"./chunk-phzbecpx.js";import"./chunk-8jwqy5d0.js";import"./chunk-76emdpxa.js";import"./chunk-y5g06jmk.js";import{Sa as O}from"./chunk-ehcjnwnr.js";import"./chunk-yddnm9n2.js";import"./chunk-094ekgv6.js";import"./chunk-5mtjqqav.js";import{wb as H,xb as T}from"./chunk-7ycmx7c2.js";import"./chunk-set7v1rf.js";import"./chunk-j2ag7hh6.js";import bq from"yargs";import{hideBin as Uq}from"yargs/helpers";import{z as b}from"zod";import{z as Q}from"zod";var L=1,V=Q.object({event_version:Q.literal(L)}),i=V.extend({type:Q.literal("content_delta"),delta:Q.string()}),n=V.extend({type:Q.literal("thinking_delta"),delta:Q.string()}),r=V.extend({type:Q.literal("thinking"),content:Q.string()}),s=V.extend({type:Q.literal("stream_end")}),o=V.extend({type:Q.literal("content"),content:Q.string()}),a=V.extend({type:Q.literal("tool_start"),tool_name:Q.string(),summary:Q.string(),target:Q.string().optional(),tool_kind:Q.enum(["readonly","write","execute"]).optional()}),t=V.extend({type:Q.literal("tool_result"),tool_name:Q.string(),summary:Q.string(),target:Q.string().optional(),tool_kind:Q.enum(["readonly","write","execute"]).optional()}),e=V.extend({type:Q.literal("phase"),phase:Q.enum(["turn","searching","inspecting","target_hit","executing","completed"]),status:Q.enum(["ongoing","hit","done"]),message:Q.string(),turn:Q.number().optional(),tool_name:Q.string().optional(),target:Q.string().optional()}),qq=V.extend({type:Q.literal("tool_detail"),tool_name:Q.string(),detail:Q.string()}),Gq=V.extend({type:Q.literal("task_update"),tasks:Q.array(x)}),Qq=V.extend({type:Q.literal("token_usage"),input_tokens:Q.number(),output_tokens:Q.number(),total_tokens:Q.number(),max_context_tokens:Q.number()}),Xq=V.extend({type:Q.literal("compacting"),state:Q.enum(["started","completed"])}),Yq=V.extend({type:Q.literal("turn_limit"),turns_count:Q.number(),action:Q.literal("continue")}),Zq=V.extend({type:Q.literal("output"),content:Q.string(),exit_code:Q.number()}),$q=V.extend({type:Q.literal("error"),message:Q.string()}),Nq=Q.discriminatedUnion("type",[i,n,r,s,o,a,t,e,qq,Gq,Qq,Xq,Yq,Zq,$q]);function N(G,X){return{event_version:L,type:G,...X}}var Kq=b.enum(["text","jsonl"]),Aq=b.object({headless:b.boolean().optional(),message:b.string().optional(),_:b.array(b.union([b.string(),b.number()])).optional(),model:b.string().optional(),systemPrompt:b.string().optional(),appendSystemPrompt:b.string().optional(),maxTurns:b.number().int().refine((G)=>G===-1||G>0,{message:"must be -1 or a positive integer"}).optional(),permissionMode:b.nativeEnum(H).optional(),mcpConfig:b.array(b.string()).optional(),strictMcpConfig:b.boolean().optional(),sessionId:b.string().optional(),allowedTools:b.array(b.string()).optional(),disallowedTools:b.array(b.string()).optional(),continue:b.boolean().optional(),resume:b.union([b.string(),b.boolean()]).optional(),outputFormat:Kq.optional()});class d{openedThinking=!1;wroteAssistantContent=!1;markAssistantContent(){this.wroteAssistantContent=!0}setThinkingOpened(G){this.openedThinking=G}hasOpenThinking(){return this.openedThinking}completeStream(){let G={openedThinking:this.openedThinking,wroteAssistantContent:this.wroteAssistantContent};return this.openedThinking=!1,this.wroteAssistantContent=!1,G}}function Rq(G){return G.issues.map((X)=>`${X.path.join(".")||"options"}: ${X.message}`).join("; ")}function Vq(G){let X=Aq.safeParse(G);if(!X.success)throw Error(`Invalid headless options: ${Rq(X.error)}`);return X.data}function _q(G){return G.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",(X)=>X.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"}),async(X)=>{if(!X.headless)return;let Y=await Bq(X);process.exit(Y)})}function _(G,X=""){G.write(`${X}
2
+ `)}function Dq(G){return`[task] [${G.status}] ${G.subject}`}function Mq(){return{requestConfirmation:async(G)=>({approved:!0,reason:"headless-auto-approved",scope:"session"})}}function jq(G){if(!(G instanceof Error))return"Unknown error";let q=G.lastError??G;if(q.responseBody)try{let A=JSON.parse(q.responseBody)?.error?.message;if(A)return q.statusCode?`${A} (HTTP ${q.statusCode})`:A}catch{}let Z=G.message.match(/Last error:\s*(.+)$/);if(Z)return Z[1];return G.message}function fq(G){return G==="jsonl"?"jsonl":"text"}function W(G,X){let Y=(...q)=>{for(let Z of q){let U=X[Z];if(typeof U==="string"&&U.trim()!=="")return U}return};switch(G){case"Read":case"Edit":case"Write":case"UndoEdit":return Y("file_path");case"NotebookEdit":return Y("notebook_path");case"Grep":return Y("path","pattern");case"Glob":return Y("pattern");case"WebFetch":return Y("url");case"WebSearch":return Y("query");case"Bash":return Y("description","command");case"Task":return Y("description");case"LSP":return Y("filePath","operation");default:return}}function Pq(G,X,Y,q){let Z=new Set(["Glob","Grep","WebSearch","LS"]),U=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","NotebookEdit","Bash","LSP","UndoEdit"]).has(G)&&!q.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${X}`,shouldLockTarget:!0};if(q.targetLocked)return{phase:"executing",status:"hit",message:Y?`Working within target: ${X}`:`Executing: ${X}`,shouldLockTarget:!1};if(Z.has(G))return{phase:"searching",status:"ongoing",message:`Still searching: ${X}`,shouldLockTarget:!1};if(U.has(G))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${X}`,shouldLockTarget:!1};return{phase:"executing",status:q.targetLocked?"hit":"ongoing",message:`Executing: ${X}`,shouldLockTarget:!1}}function k(G,X){let Y=(q,Z)=>{G.stdout.write(`${JSON.stringify(N(q,Z))}
3
+ `)};return{contentDelta(q){if(X==="jsonl"){Y("content_delta",{delta:q});return}G.stdout.write(q)},thinkingDelta(q,Z){if(X==="jsonl")return Y("thinking_delta",{delta:q}),Z;if(!Z)G.stderr.write("[thinking] ");return G.stderr.write(q),!0},thinking(q){if(X==="jsonl"){Y("thinking",{content:q});return}_(G.stderr,`[thinking] ${q}`)},streamEnd(q,Z){if(X==="jsonl"){Y("stream_end",{});return}if(Z)G.stderr.write(`
4
+ `);if(q)G.stdout.write(`
5
+ `)},content(q){if(X==="jsonl"){Y("content",{content:q});return}_(G.stdout,q)},toolStart(q,Z,U,A){if(X==="jsonl"){Y("tool_start",{tool_name:q,summary:Z,target:U,tool_kind:A});return}_(G.stderr,`[tool:start] ${Z}`)},toolResult(q,Z,U,A){if(X==="jsonl"){Y("tool_result",{tool_name:q,summary:Z,target:U,tool_kind:A});return}_(G.stderr,`[tool:result] ${Z}`)},phase(q,Z,U,A={}){if(X==="jsonl"){Y("phase",{phase:q,status:Z,message:U,turn:A.turn,tool_name:A.toolName,target:A.target});return}_(G.stderr,`[phase:${q}] ${U}`)},toolDetail(q,Z){if(X==="jsonl"){Y("tool_detail",{tool_name:q,detail:Z});return}_(G.stderr,Z)},taskUpdate(q){if(X==="jsonl"){Y("task_update",{tasks:q});return}for(let Z of q)_(G.stderr,Dq(Z))},tokenUsage(q){if(X==="jsonl"){Y("token_usage",{input_tokens:q.inputTokens,output_tokens:q.outputTokens,total_tokens:q.totalTokens,max_context_tokens:q.maxContextTokens});return}_(G.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){if(X==="jsonl"){Y("compacting",{state:q?"started":"completed"});return}_(G.stderr,q?"[context] compacting started":"[context] compacting completed")},turnLimit(q){if(X==="jsonl"){Y("turn_limit",{turns_count:q,action:"continue"});return}_(G.stderr,`[turn-limit] continuing after ${q} turns`)},output(q,Z=0){if(X==="jsonl"){Y("output",{content:q,exit_code:Z});return}_(Z===0?G.stdout:G.stderr,q)},error(q){if(X==="jsonl"){Y("error",{message:q});return}_(G.stderr,q)}}}async function Bq(G,X={stdout:process.stdout,stderr:process.stderr}){let Y="text",q=k(X,Y),Z=new d,U={targetLocked:!1},A;try{let K=Vq(G);Y=fq(K.outputFormat),q=k(X,Y),await z();let P=await g(K),D=await v(P);if(D.mode==="output"){if(D.content)q.output(D.content,D.exitCode??0);return D.exitCode??0}let J=K.permissionMode??"yolo",{sessionId:I,messages:u}=await p({sessionId:K.sessionId,continue:K.continue,resume:K.resume,fallbackSessionPrefix:"headless"}),m={messages:[...u],userId:"cli-user",sessionId:I,workspaceRoot:T(),permissionMode:J,confirmationHandler:Mq()};A=await w.create({sessionId:I,modelId:K.model,mcpConfig:K.mcpConfig,strictMcpConfig:K.strictMcpConfig});let l=await C.createWithRuntime(A,{sessionId:I,systemPrompt:K.systemPrompt,appendSystemPrompt:K.appendSystemPrompt,maxTurns:K.maxTurns,modelId:K.model,permissionMode:J,toolWhitelist:K.allowedTools,toolBlacklist:K.disallowedTools,mcpConfig:K.mcpConfig,strictMcpConfig:K.strictMcpConfig});if((await O(l.chatStream(D.content,m,{stream:!0,maxTurns:K.maxTurns,onTurnLimitReached:async(R)=>{return q.turnLimit(R.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}),async(R)=>{switch(R.kind){case"content_delta":Z.markAssistantContent(),q.contentDelta(R.delta);break;case"thinking_delta":Z.setThinkingOpened(q.thinkingDelta(R.delta,Z.hasOpenThinking()));break;case"stream_end":{let $=Z.completeStream();q.streamEnd($.wroteAssistantContent,$.openedThinking);break}case"tool_start":{let $=R.toolCall;if(!("function"in $))break;if(["TaskCreate","TaskUpdate","TaskList"].includes($.function.name))break;try{let M=JSON.parse($.function.arguments),j=F($.function.name,M),f=W($.function.name,M),B=Pq($.function.name,j,f,U);if(B.shouldLockTarget)U.targetLocked=!0;q.phase(B.phase,B.status,B.message,{toolName:$.function.name,target:f}),q.toolStart($.function.name,j,f,R.toolKind)}catch{q.phase(U.targetLocked?"executing":"searching",U.targetLocked?"hit":"ongoing",U.targetLocked?`Working within target: ${$.function.name}`:`Still searching: ${$.function.name}`,{toolName:$.function.name}),q.toolStart($.function.name,$.function.name,void 0,R.toolKind)}break}case"tool_result":{let $=R.toolCall;if(!("function"in $))break;let M;try{let f=JSON.parse($.function.arguments);M=W($.function.name,f)}catch{M=void 0}let j=y($.function.name,R.result);if(q.toolResult($.function.name,j.summary,M,void 0),j.detail)q.toolDetail($.function.name,j.detail);break}case"token_usage":q.tokenUsage(R.usage);break;case"compaction":q.compacting(R.phase==="start");break;case"task_update":q.taskUpdate(R.tasks);break;case"model_fallback":break;case"turn_start":if(R.turn===1)U.targetLocked=!1;q.phase("turn",U.targetLocked?"hit":"ongoing",`Turn ${R.turn} started`,{turn:R.turn});break;default:{let $=R}}})).metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");return q.phase("completed","done","Headless run completed"),0}catch(K){if(Z.hasOpenThinking()&&Y==="text")X.stderr.write(`
6
+ `);return q.error(`Error: ${jq(K)}`),1}finally{await A?.dispose()}}async function vq(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:Y,"output-format":q,"system-prompt":Z,"append-system-prompt":U,"max-turns":A,...K}=E,P=bq(Uq(process.argv)).scriptName("blade").strict(!1).options(K).middleware([S,h,c]);return _q(P),await P.parse(),!0}export{Bq as runHeadless,vq as handleHeadlessMode,Aq as HeadlessOptionsSchema};
@@ -0,0 +1,4 @@
1
+ import{N as l,O as c,P as m,S as g,U as d}from"./chunk-qbm9qrtg.js";import{xb as u}from"./chunk-7ycmx7c2.js";async function C(){if((await l().initialize(u(),[])).plugins.length>0)await c()}async function h(t){let e=t.message||t._?.[0];if(typeof e==="string"&&e.trim())return e;let n=t.stdin??process.stdin;if(!n.isTTY){let a=[];for await(let i of n)a.push(i);return Buffer.concat(a).toString("utf-8").trim()}if(t.defaultMessage!==void 0)return t.defaultMessage;throw Error("No input provided")}async function R(t){if(!g(t))return{mode:"agent",content:t};let e=await d(t,{cwd:u(),workspaceRoot:u()});if(!e.success)return{mode:"output",content:`Error: ${e.error||"未知错误"}`,exitCode:1};let n=e.data;if(n?.action==="invoke_skill"){let{skillName:a,skillArgs:i}=n;return{mode:"agent",content:i?`Please use the "${a}" skill to help me with: ${i}`:`Please use the "${a}" skill.`}}if(n?.action==="invoke_custom_command"||n?.action==="invoke_plugin_command"){let a=n.processedContent;return{mode:"agent",content:`# Custom Command: /${n.commandName}
2
+
3
+ ${a}`}}return{mode:"output",content:e.content||e.message||"",exitCode:0}}function r(t){if(!(t instanceof Error))return!1;return t.message.includes("未找到会话")||t.message.includes("ENOENT")||t.message.includes("no such file")}async function s(t){try{return await m.loadSession(t,u())}catch(e){if(r(e))return null;throw e}}async function N(t){if(t.resume===!0||t.resume==="true")throw Error("--resume without a session ID is only supported in interactive UI mode");if(typeof t.resume==="string"&&t.resume.length>0)return{sessionId:t.resume,messages:await m.loadSession(t.resume)};if(t.continue){let e=await m.listSessions();if(e.length>0){let n=e[0].sessionId;return{sessionId:n,messages:await m.loadSession(n)}}}if(t.sessionId)return{sessionId:t.sessionId,messages:await s(t.sessionId)??[]};return{sessionId:`${t.fallbackSessionPrefix}-${Date.now()}`,messages:[]}}
4
+ export{C as p,h as q,R as r,N as s};