blade-code 0.8.2 → 0.9.0

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 (90) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/chunk-0abtfzm6.js +1 -0
  3. package/dist/chunk-0zkhjsbv.js +1 -0
  4. package/dist/chunk-119fhp5q.js +9 -0
  5. package/dist/{chunk-j77gyhpf.js → chunk-1rpgvk3r.js} +1 -1
  6. package/dist/{chunk-81p4kz0b.js → chunk-1v2n922p.js} +1 -1
  7. package/dist/{chunk-9xvnrq7m.js → chunk-2fbwmdvg.js} +2 -2
  8. package/dist/chunk-3qgj2y5r.js +1 -0
  9. package/dist/{chunk-887qxhn5.js → chunk-45bme7n9.js} +2 -2
  10. package/dist/{chunk-w11ht6f9.js → chunk-5jq01mg6.js} +2 -2
  11. package/dist/{chunk-p4yrmzyr.js → chunk-5nye3k5w.js} +1 -1
  12. package/dist/chunk-7pevqbfd.js +2 -0
  13. package/dist/chunk-8dqvnx7n.js +2 -0
  14. package/dist/chunk-8edsvxf3.js +1 -0
  15. package/dist/{chunk-11s7t9dp.js → chunk-8vemqfe4.js} +2 -2
  16. package/dist/{chunk-5fw9k1ff.js → chunk-8vtznxpq.js} +2 -2
  17. package/dist/chunk-936ft6kq.js +2 -0
  18. package/dist/chunk-9ax02vtg.js +22 -0
  19. package/dist/chunk-9qknesxs.js +6 -0
  20. package/dist/chunk-acegy4td.js +3 -0
  21. package/dist/chunk-aewrn5xp.js +1 -0
  22. package/dist/{chunk-fpdqvnmq.js → chunk-aq7wf2zt.js} +2 -2
  23. package/dist/{chunk-5ad4qmfj.js → chunk-ax7bx0j8.js} +1 -1
  24. package/dist/chunk-b10vr4xj.js +2 -0
  25. package/dist/{chunk-1x3846v7.js → chunk-bc6wbcrs.js} +1 -1
  26. package/dist/chunk-bfgm5k3e.js +1566 -0
  27. package/dist/chunk-cf3fhs7j.js +1 -0
  28. package/dist/chunk-d7y2mf7c.js +4 -0
  29. package/dist/chunk-e1586s4t.js +1 -0
  30. package/dist/chunk-enk621t7.js +98 -0
  31. package/dist/chunk-fpr6d8zc.js +2 -0
  32. package/dist/{chunk-fkaebj8c.js → chunk-gagt42k2.js} +1 -1
  33. package/dist/chunk-gdm1xzvp.js +2 -0
  34. package/dist/chunk-gm62cfjw.js +1 -0
  35. package/dist/chunk-h3bjmkvz.js +1 -0
  36. package/dist/{chunk-9b297mzh.js → chunk-j8en7x02.js} +1 -1
  37. package/dist/{chunk-6jq8h5s9.js → chunk-jyr9417h.js} +2 -2
  38. package/dist/chunk-mcnfbhpr.js +6 -0
  39. package/dist/{chunk-6x6zqjcs.js → chunk-mns8e65q.js} +1 -1
  40. package/dist/chunk-mpkr3s6b.js +3 -0
  41. package/dist/chunk-n9tgxfvw.js +615 -0
  42. package/dist/{chunk-w4xcmzjm.js → chunk-ppyg431d.js} +1 -1
  43. package/dist/chunk-qxhrzws6.js +1 -0
  44. package/dist/{chunk-y08szyf9.js → chunk-r6h7eja3.js} +20 -20
  45. package/dist/chunk-r8pjwjt6.js +1 -0
  46. package/dist/chunk-rmfk5f9m.js +2 -0
  47. package/dist/chunk-rrg9bw8r.js +25 -0
  48. package/dist/chunk-w3me85va.js +2 -0
  49. package/dist/{chunk-f3pvwxp8.js → chunk-wtxwny0p.js} +3 -3
  50. package/dist/{chunk-s1y8w68s.js → chunk-x40fkg4z.js} +2 -2
  51. package/dist/{chunk-0z5qe4m2.js → chunk-x548f12z.js} +1 -1
  52. package/dist/chunk-xtfzjb72.js +6 -0
  53. package/dist/{chunk-kne7h7p5.js → chunk-z0qxaky4.js} +1 -1
  54. package/dist/web/assets/{FilePreview-60E51igH.js → FilePreview-DpovIbME.js} +1 -1
  55. package/dist/web/assets/{MarkdownRenderer-DU7jPn9K.js → MarkdownRenderer-73wC_SGk.js} +1 -1
  56. package/dist/web/assets/{McpModal-CAMU6yrS.js → McpModal-CIpxuyTG.js} +1 -1
  57. package/dist/web/assets/{SettingsModal-Cjj8NUQy.js → SettingsModal-BBa1libe.js} +1 -1
  58. package/dist/web/assets/{SettingsStore-CjvkbtuZ.js → SettingsStore-C8YBWQPS.js} +1 -1
  59. package/dist/web/assets/{SkillsModal-Cyc2JAFj.js → SkillsModal-DArZ-nCX.js} +1 -1
  60. package/dist/web/assets/{TerminalPanel-DI-Ls-U8.js → TerminalPanel-BX7C7qiD.js} +1 -1
  61. package/dist/web/assets/index-Ch0eqSLM.css +1 -0
  62. package/dist/web/assets/index-DIWzaS2_.js +16 -0
  63. package/dist/web/index.html +2 -2
  64. package/package.json +2 -1
  65. package/dist/chunk-0g9cb41d.js +0 -3
  66. package/dist/chunk-1evg2hdd.js +0 -2
  67. package/dist/chunk-3wghk9bp.js +0 -1
  68. package/dist/chunk-4fye39a8.js +0 -2
  69. package/dist/chunk-510rwhx6.js +0 -1
  70. package/dist/chunk-6avkjdjc.js +0 -615
  71. package/dist/chunk-83dkggbx.js +0 -1
  72. package/dist/chunk-8epvwyg8.js +0 -6
  73. package/dist/chunk-8fp3q919.js +0 -24
  74. package/dist/chunk-9jkbykwq.js +0 -1
  75. package/dist/chunk-a83s9mww.js +0 -1
  76. package/dist/chunk-a90mfxv9.js +0 -3
  77. package/dist/chunk-btst30by.js +0 -6
  78. package/dist/chunk-e9t5ga1b.js +0 -1
  79. package/dist/chunk-eycs00af.js +0 -1577
  80. package/dist/chunk-gvf4gff0.js +0 -9
  81. package/dist/chunk-j14rn2dx.js +0 -22
  82. package/dist/chunk-kcjgbbec.js +0 -1
  83. package/dist/chunk-q223bq79.js +0 -1
  84. package/dist/chunk-qwfqp465.js +0 -2
  85. package/dist/chunk-rxjt7ma7.js +0 -2
  86. package/dist/chunk-x83a97eh.js +0 -1
  87. package/dist/chunk-yfcfx0zk.js +0 -6
  88. package/dist/chunk-zns65xsy.js +0 -2
  89. package/dist/web/assets/index-BC0ssrep.js +0 -16
  90. package/dist/web/assets/index-Ci6gCUjf.css +0 -1
@@ -1 +0,0 @@
1
- import{g as a,h as b,i as c,j as d,k as e}from"./chunk-6x6zqjcs.js";import"./chunk-w4xcmzjm.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
@@ -1,6 +0,0 @@
1
- import{z as b}from"./chunk-4fye39a8.js";import{ta as T}from"./chunk-8fp3q919.js";import{Fa as S,Ga as h}from"./chunk-j14rn2dx.js";import{Ab as n,Db as r,yb as f}from"./chunk-0z5qe4m2.js";import{Gb as c,Jb as O,Lb as y}from"./chunk-rxjt7ma7.js";import{Vb as M}from"./chunk-9xvnrq7m.js";import{promises as N}from"node:fs";import E from"node:path";var k=["systemPrompt","appendSystemPrompt","initialMessage","resumeSessionId","forkSession","allowedTools","disallowedTools","mcpConfigPaths","strictMcpConfig","model","addDirs","outputFormat","inputFormat","print","includePartialMessages","replayUserMessages","agentsConfig","settingSources"],B=new Set([...Object.keys(S),...k]),a=n.Number({exclusiveMinimum:0}),l=n.String({minLength:1}),m=n.Array(n.String()),C=n.Object({currentModelId:n.Optional(n.String()),models:n.Optional(n.Array(n.Object({id:l,displayName:n.Optional(l),provider:l,model:l,overrides:n.Optional(n.Object({baseUrl:n.Optional(n.String()),temperature:n.Optional(n.Number()),maxOutputTokens:n.Optional(a),timeout:n.Optional(a),apiVersion:n.Optional(n.String()),customHeaders:n.Optional(n.Record(n.String(),n.String())),maxRetries:n.Optional(n.Integer({minimum:0})),enablePromptCaching:n.Optional(n.Boolean())})),fallbackModels:n.Optional(n.Array(n.Object({provider:l,model:l})))}))),temperature:n.Optional(n.Number()),maxOutputTokens:n.Optional(a),stream:n.Optional(n.Boolean()),topP:n.Optional(n.Number()),topK:n.Optional(n.Number()),timeout:n.Optional(a),theme:n.Optional(n.String()),uiTheme:n.Optional(r(["light","dark","system"])),language:n.Optional(n.String()),fontSize:n.Optional(a),autoSaveSessions:n.Optional(n.Boolean()),notifyBuild:n.Optional(n.Boolean()),notifyErrors:n.Optional(n.Boolean()),notifySounds:n.Optional(n.Boolean()),privacyTelemetry:n.Optional(n.Boolean()),privacyCrash:n.Optional(n.Boolean()),debug:n.Optional(n.Union([n.Boolean(),n.String()])),mcpEnabled:n.Optional(n.Boolean()),mcpServers:n.Optional(n.Record(n.String(),n.Record(n.String(),n.Unknown()))),permissionMode:n.Optional(n.Enum(O)),maxTurns:n.Optional(n.Integer({minimum:-1,maximum:y})),systemPrompt:n.Optional(n.String()),appendSystemPrompt:n.Optional(n.String()),initialMessage:n.Optional(n.String()),resumeSessionId:n.Optional(n.String()),forkSession:n.Optional(n.Boolean()),allowedTools:n.Optional(n.Array(l)),disallowedTools:n.Optional(n.Array(l)),mcpConfigPaths:n.Optional(n.Array(l)),strictMcpConfig:n.Optional(n.Boolean()),model:n.Optional(l),addDirs:n.Optional(n.Array(l)),outputFormat:n.Optional(r(["text","json","stream-json","jsonl"])),inputFormat:n.Optional(r(["text","stream-json"])),print:n.Optional(n.Boolean()),includePartialMessages:n.Optional(n.Boolean()),replayUserMessages:n.Optional(n.Boolean()),agentsConfig:n.Optional(n.String()),settingSources:n.Optional(n.String()),permissions:n.Optional(n.Object({allow:n.Optional(m),ask:n.Optional(m),deny:n.Optional(m)})),env:n.Optional(n.Record(n.String(),n.String())),hooks:n.Optional(n.Record(n.String(),n.Unknown())),disableAllHooks:n.Optional(n.Boolean())}),R=[["systemPrompt","systemPrompt"],["appendSystemPrompt","appendSystemPrompt"],["initialMessage","initialMessage"],["resumeSessionId","sessionId"],["forkSession","forkSession"],["allowedTools","allowedTools"],["disallowedTools","disallowedTools"],["mcpConfigPaths","mcpConfig"],["strictMcpConfig","strictMcpConfig"],["model","model"],["addDirs","addDir"],["outputFormat","outputFormat"],["inputFormat","inputFormat"],["print","print"],["includePartialMessages","includePartialMessages"],["replayUserMessages","replayUserMessages"],["agentsConfig","agents"],["settingSources","settingSources"],["permissionMode","permissionMode"],["maxTurns","maxTurns"]];function u(o,e){let t;try{t=JSON.parse(o)}catch(i){let p=i instanceof Error?`: ${i.message}`:"";throw Error(`Invalid JSON provided to --settings (${e})${p}`)}if(!t||typeof t!=="object"||Array.isArray(t))throw Error("--settings must contain a JSON object");for(let i of Object.keys(t))if(!B.has(i))throw Error(`Unknown --settings field: ${i}`);let s=f(C,t);if(!s.success){let i=s.error.issues.map((p)=>`${p.path.join(".")||"settings"}: ${p.message}`).join("; ");throw Error(`Invalid --settings value: ${i}`)}return s.data}async function w(o){if(o===void 0)return;let e=o.trim();if(!e)throw Error("--settings requires a JSON object or file path");if(e.startsWith("{"))return u(e,"inline JSON");let t=E.resolve(c(),e),s;try{s=await N.readFile(t,"utf8")}catch(i){let p=i instanceof Error?`: ${i.message}`:"";throw Error(`Unable to read --settings file ${t}${p}`)}return u(s,t)}function P(o,e){if(!e)return;let t=e;for(let[s,i]of R){if(s==="permissionMode"&&o.yolo===!0)continue;if(o[i]===void 0&&t[s]!==void 0)o[i]=t[s]}}var d=M("General"),z=(o)=>{if(o.yolo){if(o.permissionMode&&o.permissionMode!=="yolo")throw Error("Cannot use both --yolo and --permission-mode with different values");o.permissionMode="yolo"}if(Array.isArray(o.allowedTools))o.allowedTools=o.allowedTools.flatMap((e)=>e.split(",").map((t)=>t.trim()).filter((t)=>t.length>0));if(Array.isArray(o.disallowedTools))o.disallowedTools=o.disallowedTools.flatMap((e)=>e.split(",").map((t)=>t.trim()).filter((t)=>t.length>0));if(Array.isArray(o.allowedTools)&&Array.isArray(o.disallowedTools)){let e=o.allowedTools.filter((t)=>o.disallowedTools.includes(t));if(e.length>0)throw Error(`Tools cannot be both allowed and disallowed: ${e.join(", ")}`)}},L=async(o)=>{let e=await w(typeof o.settings==="string"?o.settings:void 0);if(P(o,e),typeof o.agents==="string")b(o.agents);I(o);try{let s=await h.getInstance().initialize(e);if(T().config.actions.setConfig(s),o.debug)d.info("[CLI] 配置已加载到 Store")}catch(t){d.error("[CLI] [FAIL] 配置初始化失败",t instanceof Error?t.message:t),console.error(`
2
- [FAIL] 配置初始化失败
3
- `),console.error("原因:",t instanceof Error?t.message:"未知错误"),console.error(`
4
- 请检查:`),console.error(" 1. 配置文件格式是否正确 (~/.blade/config.json)"),console.error(" 2. 是否需要运行 blade 进行首次配置"),console.error(` 3. 配置文件权限是否正确
5
- `),process.exit(1)}};function I(o){if(o.continue&&o.resume)throw Error("Cannot use both --continue and --resume flags simultaneously");if(o.forkSession&&!o.continue&&!o.resume)throw Error("--fork-session requires --resume or --continue");if(o.sessionId&&(o.continue||o.resume)&&!o.forkSession)throw Error("--session-id can only be combined with --resume or --continue when --fork-session is set")}var V=(o)=>{if(o.outputFormat&&o.outputFormat!=="text"&&!o.print&&!o.headless)throw Error("--output-format can only be used with --print or --headless");if(o.headless&&o.outputFormat&&!["text","jsonl"].includes(o.outputFormat))throw Error(`--headless only supports --output-format text|jsonl, but got "${o.outputFormat}". Use --print for json|stream-json support.`);if(o.print&&o.outputFormat&&!["text","json","stream-json"].includes(o.outputFormat))throw Error(`--print only supports --output-format text|json|stream-json, but got "${o.outputFormat}". Use --headless for jsonl support.`);if(o.inputFormat==="stream-json"&&o.print)d.warn("[WARN] Warning: stream-json input format may not work as expected with --print")};
6
- export{z as w,L as x,V as y};
@@ -1,24 +0,0 @@
1
- import{Ga as Y0,Ia as x}from"./chunk-j14rn2dx.js";import{Eb as Q0}from"./chunk-81p4kz0b.js";import{fc as l}from"./chunk-0g9cb41d.js";import{nanoid as I0}from"nanoid";import{devtools as N0,subscribeWithSelector as R0}from"zustand/middleware";import{createStore as y0}from"zustand/vanilla";var V0={name:"ayu-dark",colors:{primary:"#ffcc66",secondary:"#bae67e",accent:"#73d0ff",success:"#bae67e",warning:"#ffcc66",error:"#ff3333",info:"#73d0ff",light:"#f0f0f0",dark:"#000000",muted:"#5c6773",highlight:"#2d323b",text:{primary:"#e6e1cf",secondary:"#bae67e",muted:"#5c6773",light:"#ffffff"},background:{primary:"#0f1419",secondary:"#14191f",dark:"#000000"},border:{light:"#2d323b",dark:"#000000"},syntax:{comment:"#5c6773",string:"#bae67e",number:"#ffcc66",keyword:"#ff8f40",function:"#73d0ff",variable:"#e6e1cf",operator:"#f29e74",type:"#73d0ff",tag:"#ff8f40",attr:"#ffd580",default:"#e6e1cf"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.2)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px 0 rgba(0, 0, 0, 0.2)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2)"}},G0={name:"dracula",colors:{primary:"#bd93f9",secondary:"#ffb86c",accent:"#ff79c6",success:"#50fa7b",warning:"#f1fa8c",error:"#ff5555",info:"#8be9fd",light:"#f8f8f2",dark:"#282a36",muted:"#6272a4",highlight:"#44475a",text:{primary:"#f8f8f2",secondary:"#f1fa8c",muted:"#6272a4",light:"#ffffff"},background:{primary:"#282a36",secondary:"#44475a",dark:"#21222c"},border:{light:"#44475a",dark:"#000000"},syntax:{comment:"#6272a4",string:"#f1fa8c",number:"#bd93f9",keyword:"#ff79c6",function:"#50fa7b",variable:"#f8f8f2",operator:"#ff79c6",type:"#8be9fd",tag:"#ff79c6",attr:"#50fa7b",default:"#f8f8f2"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(40, 42, 54, 0.2)",base:"0 1px 3px 0 rgba(40, 42, 54, 0.3), 0 1px 2px 0 rgba(40, 42, 54, 0.2)",lg:"0 10px 15px -3px rgba(40, 42, 54, 0.3), 0 4px 6px -2px rgba(40, 42, 54, 0.2)"}},F0={name:"monokai",colors:{primary:"#66d9ef",secondary:"#a6e22e",accent:"#f92672",success:"#a6e22e",warning:"#e6db74",error:"#f92672",info:"#66d9ef",light:"#f8f8f2",dark:"#272822",muted:"#75715e",highlight:"#3e3d32",text:{primary:"#f8f8f2",secondary:"#e6db74",muted:"#75715e",light:"#ffffff"},background:{primary:"#272822",secondary:"#3e3d32",dark:"#1e1f1c"},border:{light:"#3e3d32",dark:"#000000"},syntax:{comment:"#75715e",string:"#e6db74",number:"#ae81ff",keyword:"#f92672",function:"#a6e22e",variable:"#f8f8f2",operator:"#f92672",type:"#66d9ef",tag:"#f92672",attr:"#a6e22e",default:"#f8f8f2"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(39, 40, 34, 0.2)",base:"0 1px 3px 0 rgba(39, 40, 34, 0.3), 0 1px 2px 0 rgba(39, 40, 34, 0.2)",lg:"0 10px 15px -3px rgba(39, 40, 34, 0.3), 0 4px 6px -2px rgba(39, 40, 34, 0.2)"}},J0={name:"nord",colors:{primary:"#88c0d0",secondary:"#81a1c1",accent:"#b48ead",success:"#a3be8c",warning:"#ebcb8b",error:"#bf616a",info:"#88c0d0",light:"#eceff4",dark:"#2e3440",muted:"#4c566a",highlight:"#434c5e",text:{primary:"#eceff4",secondary:"#d8dee9",muted:"#4c566a",light:"#ffffff"},background:{primary:"#2e3440",secondary:"#3b4252",dark:"#242933"},border:{light:"#434c5e",dark:"#000000"},syntax:{comment:"#616e88",string:"#a3be8c",number:"#b48ead",keyword:"#81a1c1",function:"#88c0d0",variable:"#d8dee9",operator:"#81a1c1",type:"#8fbcbb",tag:"#81a1c1",attr:"#8fbcbb",default:"#eceff4"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(46, 52, 64, 0.2)",base:"0 1px 3px 0 rgba(46, 52, 64, 0.3), 0 1px 2px 0 rgba(46, 52, 64, 0.2)",lg:"0 10px 15px -3px rgba(46, 52, 64, 0.3), 0 4px 6px -2px rgba(46, 52, 64, 0.2)"}},j0={name:"solarized-light",colors:{primary:"#268bd2",secondary:"#2aa198",accent:"#d33682",success:"#859900",warning:"#cb4b16",error:"#dc322f",info:"#268bd2",light:"#fdf6e3",dark:"#073642",muted:"#93a1a1",highlight:"#eee8d5",text:{primary:"#586e75",secondary:"#657b83",muted:"#93a1a1",light:"#002b36"},background:{primary:"#fdf6e3",secondary:"#eee8d5",dark:"#073642"},border:{light:"#eee8d5",dark:"#073642"},syntax:{comment:"#93a1a1",string:"#2aa198",number:"#d33682",keyword:"#859900",function:"#268bd2",variable:"#657b83",operator:"#859900",type:"#b58900",tag:"#268bd2",attr:"#93a1a1",default:"#657b83"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(253, 246, 227, 0.2)",base:"0 1px 3px 0 rgba(253, 246, 227, 0.3), 0 1px 2px 0 rgba(253, 246, 227, 0.2)",lg:"0 10px 15px -3px rgba(253, 246, 227, 0.3), 0 4px 6px -2px rgba(253, 246, 227, 0.2)"}},U0={name:"solarized-dark",colors:{primary:"#268bd2",secondary:"#2aa198",accent:"#d33682",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#268bd2",light:"#fdf6e3",dark:"#073642",muted:"#586e75",highlight:"#073642",text:{primary:"#839496",secondary:"#93a1a1",muted:"#586e75",light:"#fdf6e3"},background:{primary:"#002b36",secondary:"#073642",dark:"#001f29"},border:{light:"#073642",dark:"#000000"},syntax:{comment:"#586e75",string:"#2aa198",number:"#d33682",keyword:"#859900",function:"#268bd2",variable:"#839496",operator:"#859900",type:"#b58900",tag:"#268bd2",attr:"#93a1a1",default:"#839496"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(0, 43, 54, 0.2)",base:"0 1px 3px 0 rgba(0, 43, 54, 0.3), 0 1px 2px 0 rgba(0, 43, 54, 0.2)",lg:"0 10px 15px -3px rgba(0, 43, 54, 0.3), 0 4px 6px -2px rgba(0, 43, 54, 0.2)"}},H0={name:"tokyo-night",colors:{primary:"#7aa2f7",secondary:"#7dcfff",accent:"#bb9af7",success:"#9ece6a",warning:"#e0af68",error:"#f7768e",info:"#7aa2f7",light:"#c0caf5",dark:"#1a1b26",muted:"#565f89",highlight:"#292e42",text:{primary:"#a9b1d6",secondary:"#c0caf5",muted:"#565f89",light:"#ffffff"},background:{primary:"#1a1b26",secondary:"#292e42",dark:"#16161e"},border:{light:"#292e42",dark:"#000000"},syntax:{comment:"#565f89",string:"#9ece6a",number:"#ff9e64",keyword:"#bb9af7",function:"#7aa2f7",variable:"#c0caf5",operator:"#89ddff",type:"#7dcfff",tag:"#f7768e",attr:"#7aa2f7",default:"#a9b1d6"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(26, 27, 38, 0.2)",base:"0 1px 3px 0 rgba(26, 27, 38, 0.3), 0 1px 2px 0 rgba(26, 27, 38, 0.2)",lg:"0 10px 15px -3px rgba(26, 27, 38, 0.3), 0 4px 6px -2px rgba(26, 27, 38, 0.2)"}},z0={name:"github",colors:{primary:"#0969da",secondary:"#8250df",accent:"#bc4c00",success:"#1a7f37",warning:"#bc4c00",error:"#d1242f",info:"#0969da",light:"#f6f8fa",dark:"#24292f",muted:"#6e7781",highlight:"#ddf4ff",text:{primary:"#24292f",secondary:"#57606a",muted:"#6e7781",light:"#ffffff"},background:{primary:"#ffffff",secondary:"#f6f8fa",dark:"#24292f"},border:{light:"#d0d7de",dark:"#24292f"},syntax:{comment:"#6e7781",string:"#0a3069",number:"#0550ae",keyword:"#cf222e",function:"#8250df",variable:"#24292f",operator:"#cf222e",type:"#0550ae",tag:"#116329",attr:"#0550ae",default:"#24292f"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(255, 255, 255, 0.2)",base:"0 1px 3px 0 rgba(255, 255, 255, 0.3), 0 1px 2px 0 rgba(255, 255, 255, 0.2)",lg:"0 10px 15px -3px rgba(255, 255, 255, 0.3), 0 4px 6px -2px rgba(255, 255, 255, 0.2)"}},_0={name:"gruvbox",colors:{primary:"#83a598",secondary:"#8ec07c",accent:"#d3869b",success:"#b8bb26",warning:"#fabd2f",error:"#fb4934",info:"#83a598",light:"#fbf1c7",dark:"#282828",muted:"#928374",highlight:"#3c3836",text:{primary:"#ebdbb2",secondary:"#d5c4a1",muted:"#928374",light:"#ffffff"},background:{primary:"#282828",secondary:"#3c3836",dark:"#1d2021"},border:{light:"#3c3836",dark:"#000000"},syntax:{comment:"#928374",string:"#b8bb26",number:"#d3869b",keyword:"#fb4934",function:"#8ec07c",variable:"#ebdbb2",operator:"#fe8019",type:"#fabd2f",tag:"#fb4934",attr:"#b8bb26",default:"#ebdbb2"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(40, 40, 40, 0.2)",base:"0 1px 3px 0 rgba(40, 40, 40, 0.3), 0 1px 2px 0 rgba(40, 40, 40, 0.2)",lg:"0 10px 15px -3px rgba(40, 40, 40, 0.3), 0 4px 6px -2px rgba(40, 40, 40, 0.2)"}},K0={name:"one-dark",colors:{primary:"#61afef",secondary:"#c678dd",accent:"#e5c07b",success:"#98c379",warning:"#e5c07b",error:"#e06c75",info:"#56b6c2",light:"#abb2bf",dark:"#282c34",muted:"#5c6370",highlight:"#3e4451",text:{primary:"#abb2bf",secondary:"#c6c8d0",muted:"#5c6370",light:"#ffffff"},background:{primary:"#282c34",secondary:"#3e4451",dark:"#21252b"},border:{light:"#3e4451",dark:"#000000"},syntax:{comment:"#5c6370",string:"#98c379",number:"#d19a66",keyword:"#c678dd",function:"#61afef",variable:"#e06c75",operator:"#56b6c2",type:"#e5c07b",tag:"#e06c75",attr:"#d19a66",default:"#abb2bf"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(40, 44, 52, 0.2)",base:"0 1px 3px 0 rgba(40, 44, 52, 0.3), 0 1px 2px 0 rgba(40, 44, 52, 0.2)",lg:"0 10px 15px -3px rgba(40, 44, 52, 0.3), 0 4px 6px -2px rgba(40, 44, 52, 0.2)"}},W0={name:"catppuccin",colors:{primary:"#89b4fa",secondary:"#cba6f7",accent:"#f5c2e7",success:"#a6e3a1",warning:"#f9e2af",error:"#f38ba8",info:"#89dceb",light:"#cdd6f4",dark:"#11111b",muted:"#6c7086",highlight:"#181825",text:{primary:"#cdd6f4",secondary:"#bac2de",muted:"#6c7086",light:"#ffffff"},background:{primary:"#1e1e2e",secondary:"#181825",dark:"#11111b"},border:{light:"#181825",dark:"#000000"},syntax:{comment:"#6c7086",string:"#a6e3a1",number:"#fab387",keyword:"#cba6f7",function:"#89b4fa",variable:"#cdd6f4",operator:"#89dceb",type:"#f5c2e7",tag:"#f38ba8",attr:"#89b4fa",default:"#cdd6f4"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(30, 30, 46, 0.2)",base:"0 1px 3px 0 rgba(30, 30, 46, 0.3), 0 1px 2px 0 rgba(30, 30, 46, 0.2)",lg:"0 10px 15px -3px rgba(30, 30, 46, 0.3), 0 4px 6px -2px rgba(30, 30, 46, 0.2)"}},O0={name:"rose-pine",colors:{primary:"#9ccfd8",secondary:"#c4a7e7",accent:"#f6c177",success:"#31748f",warning:"#f6c177",error:"#eb6f92",info:"#9ccfd8",light:"#e0def4",dark:"#191724",muted:"#6e6a86",highlight:"#1f1d2e",text:{primary:"#e0def4",secondary:"#cecacd",muted:"#6e6a86",light:"#ffffff"},background:{primary:"#191724",secondary:"#1f1d2e",dark:"#12101a"},border:{light:"#1f1d2e",dark:"#000000"},syntax:{comment:"#6e6a86",string:"#9ccfd8",number:"#ea9a97",keyword:"#c4a7e7",function:"#31748f",variable:"#e0def4",operator:"#f6c177",type:"#9ccfd8",tag:"#eb6f92",attr:"#f6c177",default:"#e0def4"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(25, 23, 36, 0.2)",base:"0 1px 3px 0 rgba(25, 23, 36, 0.3), 0 1px 2px 0 rgba(25, 23, 36, 0.2)",lg:"0 10px 15px -3px rgba(25, 23, 36, 0.3), 0 4px 6px -2px rgba(25, 23, 36, 0.2)"}},q0={name:"kanagawa",colors:{primary:"#8ba4b0",secondary:"#a292a3",accent:"#c47fd5",success:"#76946a",warning:"#c0a36e",error:"#c34043",info:"#7e9cd8",light:"#dcd7ba",dark:"#1f1f28",muted:"#727169",highlight:"#2a2a37",text:{primary:"#dcd7ba",secondary:"#c8c093",muted:"#727169",light:"#ffffff"},background:{primary:"#1f1f28",secondary:"#2a2a37",dark:"#16161d"},border:{light:"#2a2a37",dark:"#000000"},syntax:{comment:"#727169",string:"#98bb6c",number:"#d27e99",keyword:"#957fb8",function:"#7e9cd8",variable:"#dcd7ba",operator:"#c0a36e",type:"#7aa89f",tag:"#c34043",attr:"#7fb4ca",default:"#dcd7ba"}},spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(31, 31, 40, 0.2)",base:"0 1px 3px 0 rgba(31, 31, 40, 0.3), 0 1px 2px 0 rgba(31, 31, 40, 0.2)",lg:"0 10px 15px -3px rgba(31, 31, 40, 0.3), 0 4px 6px -2px rgba(31, 31, 40, 0.2)"}},d=[{id:"ayu-dark",label:"Ayu Dark",theme:V0,tags:["dark","popular"]},{id:"dracula",label:"Dracula",theme:G0,tags:["dark","popular"]},{id:"monokai",label:"Monokai",theme:F0,tags:["dark","classic"]},{id:"nord",label:"Nord",theme:J0,tags:["dark","minimal"]},{id:"solarized-light",label:"Solarized Light",theme:j0,tags:["light"]},{id:"solarized-dark",label:"Solarized Dark",theme:U0,tags:["dark"]},{id:"tokyo-night",label:"Tokyo Night",theme:H0,tags:["dark","popular"]},{id:"github",label:"GitHub",theme:z0,tags:["light","minimal"]},{id:"gruvbox",label:"Gruvbox",theme:_0,tags:["dark","warm"]},{id:"one-dark",label:"One Dark",theme:K0,tags:["dark","popular"]},{id:"catppuccin",label:"Catppuccin",theme:W0,tags:["dark","pastel"]},{id:"rose-pine",label:"Rose Pine",theme:O0,tags:["dark","elegant"]},{id:"kanagawa",label:"Kanagawa",theme:q0,tags:["dark","japanese"]}];var r={primary:"#0066cc",secondary:"#6c757d",accent:"#e83e8c",success:"#28a745",warning:"#ffc107",error:"#dc3545",info:"#17a2b8",light:"#f8f9fa",dark:"#343a40",muted:"#6c757d",highlight:"#fff3cd",text:{primary:"#212529",secondary:"#6c757d",muted:"#6c757d",light:"#ffffff"},background:{primary:"#ffffff",secondary:"#f8f9fa",dark:"#343a40"},border:{light:"#dee2e6",dark:"#495057"},syntax:{comment:"#6c757d",string:"#28a745",number:"#e83e8c",keyword:"#007bff",function:"#17a2b8",variable:"#495057",operator:"#ffc107",type:"#007bff",tag:"#dc3545",attr:"#ffc107",default:"#212529"}},M={name:"default",colors:r,spacing:{xs:0.25,sm:0.5,md:1,lg:1.5,xl:2},typography:{fontSize:{xs:0.75,sm:0.875,base:1,lg:1.125,xl:1.25,"2xl":1.5,"3xl":1.875},fontWeight:{light:300,normal:400,medium:500,semibold:600,bold:700}},borderRadius:{sm:0.125,base:0.25,lg:0.5,xl:0.75},boxShadow:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)"}},w0={...M,name:"dark",colors:{...r,text:{primary:"#ffffff",secondary:"#e2e8f0",muted:"#94a3b8",light:"#000000"},background:{primary:"#1e293b",secondary:"#334155",dark:"#0f172a"},border:{light:"#475569",dark:"#64748b"},syntax:{comment:"#94a3b8",string:"#34d399",number:"#f472b6",keyword:"#60a5fa",function:"#06b6d4",variable:"#e2e8f0",operator:"#fbbf24",type:"#60a5fa",tag:"#fb7185",attr:"#fbbf24",default:"#ffffff"}}};class c{currentTheme=M;themes=new Map;constructor(){this.themes.set("default",M),this.themes.set("dark",w0);for(let X of d)this.themes.set(X.id,X.theme)}setTheme(X){let Z=this.themes.get(X);if(Z)this.currentTheme=Z;else throw Error(`Theme '${X}' not found`)}getTheme(){return this.currentTheme}getAvailableThemes(){return Array.from(this.themes.keys())}getCurrentThemeName(){return this.currentTheme.name}getThemeByName(X){return this.themes.get(X)}hasTheme(X){return this.themes.has(X)}}var i=new c;var x0={initializationStatus:"idle",initializationError:null,activeModal:"none",sessionSelectorData:void 0,modelEditorTarget:null,tasks:[],awaitingSecondCtrlC:!1,thinkingModeEnabled:!1,subagentProgress:null},f=(X)=>({...x0,actions:{setInitializationStatus:(Z)=>{X((Q)=>({app:{...Q.app,initializationStatus:Z}}))},setInitializationError:(Z)=>{X((Q)=>({app:{...Q.app,initializationError:Z}}))},setActiveModal:(Z)=>{X((Q)=>({app:{...Q.app,activeModal:Z}}))},showSessionSelector:(Z,Q="resume")=>{X((Y)=>({app:{...Y.app,activeModal:"sessionSelector",sessionSelectorData:{intent:Q,sessions:Z}}}))},showModelEditWizard:(Z)=>{X((Q)=>({app:{...Q.app,activeModal:"modelEditWizard",modelEditorTarget:Z}}))},closeModal:()=>{X((Z)=>({app:{...Z.app,activeModal:"none",sessionSelectorData:void 0,modelEditorTarget:null}}))},setTasks:(Z)=>{X((Q)=>({app:{...Q.app,tasks:Z}}))},updateTask:(Z)=>{X((Q)=>({app:{...Q.app,tasks:Q.app.tasks.map((Y)=>Y.id===Z.id?Z:Y)}}))},setAwaitingSecondCtrlC:(Z)=>{X((Q)=>({app:{...Q.app,awaitingSecondCtrlC:Z}}))},setThinkingModeEnabled:(Z)=>{X((Q)=>({app:{...Q.app,thinkingModeEnabled:Z}}))},toggleThinkingMode:()=>{X((Z)=>({app:{...Z.app,thinkingModeEnabled:!Z.app.thinkingModeEnabled}}))},startSubagentProgress:(Z,Q,Y)=>{X(($)=>({app:{...$.app,subagentProgress:{id:Z,type:Q,description:Y,status:"running",startTime:Date.now()}}}))},updateSubagentTool:(Z)=>{X((Q)=>{if(!Q.app.subagentProgress)return Q;return{app:{...Q.app,subagentProgress:{...Q.app.subagentProgress,currentTool:Z}}}})},completeSubagentProgress:(Z)=>{X((Q)=>{if(!Q.app.subagentProgress)return Q;return{app:{...Q.app,subagentProgress:{...Q.app.subagentProgress,status:Z?"completed":"failed",currentTool:void 0}}}}),setTimeout(()=>{X((Q)=>({app:{...Q.app,subagentProgress:null}}))},1500)}}});var P0={isProcessing:!1,abortController:null,pendingCommands:[],recoveredSteeringCount:0},b=(X,Z)=>({...P0,actions:{setProcessing:(Q)=>{X((Y)=>({command:{...Y.command,isProcessing:Q}}))},createAbortController:()=>{let Q=Z().command.abortController;if(Q&&!Q.signal.aborted)Q.abort("interrupted-by-new-command");let Y=new AbortController;return X(($)=>({command:{...$.command,abortController:Y}})),Y},getAbortController:()=>{return Z().command.abortController},clearAbortController:(Q)=>{let Y=Z().command.abortController;if(Q!==void 0&&Y!==Q)return;X(($)=>({command:{...$.command,abortController:null}}))},abort:(Q)=>{let{abortController:Y}=Z().command;if(Y&&!Y.signal.aborted)Y.abort(Q??"user-cancel");X(($)=>({command:{...$.command,isProcessing:!1,pendingCommands:[]}}))},enqueueCommand:(Q)=>{X((Y)=>({command:{...Y.command,pendingCommands:[...Y.command.pendingCommands,Q]}}))},dequeueCommand:()=>{let{pendingCommands:Q}=Z().command;if(Q.length===0)return;let[Y,...$]=Q;return X((V)=>({command:{...V.command,pendingCommands:$}})),Y},clearQueue:()=>{X((Q)=>({command:{...Q.command,pendingCommands:[]}}))},setRecoveredSteeringCount:(Q)=>{X((Y)=>({command:{...Y.command,recoveredSteeringCount:Math.max(0,Q)}}))}}});var v0={config:null},h=(X)=>({...v0,actions:{setConfig:(Z)=>{X((Q)=>({config:{...Q.config,config:Z}}))},updateConfig:(Z)=>{X((Q)=>{if(!Q.config.config)throw Error(`[ConfigSlice] Config not initialized. Cannot update: ${JSON.stringify(Z)}`);return{config:{...Q.config,config:{...Q.config.config,...Z}}}})}}});var D0={currentFocus:"main-input",previousFocus:null},p=(X)=>({...D0,actions:{setFocus:(Z)=>{X((Q)=>({focus:{...Q.focus,currentFocus:Z,previousFocus:Q.focus.currentFocus}}))},restorePreviousFocus:()=>{X((Z)=>({focus:{...Z.focus,currentFocus:Z.focus.previousFocus||"main-input",previousFocus:null}}))}}});function o(X,Z,Q,Y=0,$=0,V){let J=l(),H=V?J.models.getModel(V,X):J.models.getModels().find((W)=>W.id===X);if(!H)return 0;let U=H.cost,_=Z/1e6*U.input+Q/1e6*U.output+Y/1e6*U.cacheRead+$/1e6*U.cacheWrite;return Math.round(_*1e6)/1e6}var j={codeBlock:/^```(\w+)?\s*$/,heading:/^ *(#{1,4}) +(.+)/,blockquote:/^(>+)\s?(.*)/,ulItem:/^([ \t]*)([-*+]) +(.+)/,olItem:/^([ \t]*)(\d+)\. +(.+)/,hr:/^ *([-*_] *){3,} *$/,table:/^\|(.+)\|$/,tableSeparator:/^\|[\s]*:?-+:?[\s]*(\|[\s]*:?-+:?[\s]*)+\|?$/,diffStart:/^<<<DIFF>>>$/,diffEnd:/^<<<\/DIFF>>>$/,commandMessage:/<command-message>(.*?)<\/command-message>/};function g0(X){let Z=[],Q=X.split(/\r?\n/),Y=!1,$=[],V=null,J=0,H=!1,U=[],_=[],W=!1,P=[],v=!1,O=[],F=0,G=!0;for(let w=0;w<Q.length;w++){let K=Q[w];if(W){if(K.match(j.diffEnd)){try{let q=JSON.parse(P.join(`
2
- `));Z.push({type:"diff",content:"",diffData:{patch:q.patch,startLine:q.startLine,matchLine:q.matchLine}})}catch(q){Z.push({type:"text",content:P.join(`
3
- `)})}W=!1,P=[],G=!1;continue}P.push(K);continue}if(K.match(j.diffStart)){W=!0,P=[],G=!1;continue}if(Y){let q=K.match(j.codeBlock),D=K.trim()==="```";if(q&&q[1])J++,$.push(K);else if(D)if(J>0)J--,$.push(K);else{let $0=$.join(`
4
- `);Z.push({type:"code",content:$0,language:V||void 0}),Y=!1,$=[],V=null,J=0,G=!1}else $.push(K);continue}let N=K.match(j.codeBlock);if(N){Y=!0,V=N[1]||null,J=0,G=!1;continue}let A=K.match(j.table),Z0=K.match(j.tableSeparator);if(A&&!H){if(w+1<Q.length){if(Q[w+1].match(j.tableSeparator)){H=!0,U=A[1].split("|").map((D)=>D.trim()).filter((D)=>D.length>0),_=[],G=!1;continue}}}if(H&&Z0)continue;if(H&&A){let q=A[1].split("|").map((D)=>D.trim()).filter((D)=>D.length>0);while(q.length<U.length)q.push("");if(q.length>U.length)q.length=U.length;_.push(q);continue}if(H&&!A){if(U.length>0&&_.length>0)Z.push({type:"table",content:"",tableData:{headers:U,rows:_}});H=!1,U=[],_=[]}let S=K.match(j.blockquote);if(S){let q=S[1].length,D=S[2]||"";if(v&&q===F)O.push(D);else{if(v)Z.push({type:"blockquote",content:O.join(`
5
- `),blockquoteLevel:F,blockquoteLines:[...O]});v=!0,F=q,O=[D]}G=!1;continue}if(v)Z.push({type:"blockquote",content:O.join(`
6
- `),blockquoteLevel:F,blockquoteLines:[...O]}),v=!1,O=[],F=0;let T=K.match(j.heading);if(T){Z.push({type:"heading",content:T[2],level:T[1].length}),G=!1;continue}let R=K.match(j.ulItem);if(R){Z.push({type:"list",content:R[3],listType:"ul",marker:R[2],indentation:R[1].length}),G=!1;continue}let y=K.match(j.olItem);if(y){Z.push({type:"list",content:y[3],listType:"ol",marker:y[2],indentation:y[1].length}),G=!1;continue}if(K.match(j.hr)){Z.push({type:"hr",content:""}),G=!1;continue}if(K.trim().length===0){if(!G)Z.push({type:"empty",content:""}),G=!0;continue}let g=K.match(j.commandMessage);if(g){Z.push({type:"command-message",content:g[1]}),G=!1;continue}Z.push({type:"text",content:K}),G=!1}if(Y){let w=$.join(`
7
- `);Z.push({type:"code",content:w,language:V||void 0})}if(H&&U.length>0&&_.length>0)Z.push({type:"table",content:"",tableData:{headers:U,rows:_}});if(v&&O.length>0)Z.push({type:"blockquote",content:O.join(`
8
- `),blockquoteLevel:F,blockquoteLines:[...O]});while(Z.length>0&&Z[Z.length-1].type==="empty")Z.pop();return Z}var E=new Map;function B0(){return{inCodeBlock:!1,codeBlockContent:[],codeBlockLang:null,codeBlockDepth:0,inTable:!1,tableHeaders:[],tableRows:[],inDiff:!1,diffContent:[],inBlockquote:!1,blockquoteLines:[],blockquoteLevel:0,lastLineEmpty:!0,pendingTableHeader:null}}function E0(X){let Z=E.get(X);if(Z)return Z;let Q={state:B0(),blocks:[],pendingLine:"",finalized:!1};return E.set(X,Q),Q}function n(X){return X.endsWith("\r")?X.slice(0,-1):X}function a(X,Z){if(X.tableHeaders.length>0&&X.tableRows.length>0)Z.push({type:"table",content:"",tableData:{headers:X.tableHeaders,rows:X.tableRows}});X.inTable=!1,X.tableHeaders=[],X.tableRows=[]}function k(X,Z){if(X.blockquoteLines.length>0)Z.push({type:"blockquote",content:X.blockquoteLines.join(`
9
- `),blockquoteLevel:X.blockquoteLevel,blockquoteLines:[...X.blockquoteLines]});X.inBlockquote=!1,X.blockquoteLines=[],X.blockquoteLevel=0}function s(X,Z){let Q=X.codeBlockContent.join(`
10
- `);Z.push({type:"code",content:Q,language:X.codeBlockLang||void 0}),X.inCodeBlock=!1,X.codeBlockContent=[],X.codeBlockLang=null,X.codeBlockDepth=0,X.lastLineEmpty=!1}function u(X,Z,Q=!0){let{state:Y,blocks:$}=Z;if(Y.pendingTableHeader!==null){if(X.match(j.tableSeparator)){Y.inTable=!0,Y.tableHeaders=Y.pendingTableHeader.slice(1,-1).split("|").map((F)=>F.trim()).filter((F)=>F.length>0),Y.tableRows=[],Y.pendingTableHeader=null,Y.lastLineEmpty=!1;return}$.push({type:"text",content:Y.pendingTableHeader}),Y.pendingTableHeader=null,Y.lastLineEmpty=!1}if(Y.inDiff){if(X.match(j.diffEnd)){try{let F=JSON.parse(Y.diffContent.join(`
11
- `));$.push({type:"diff",content:"",diffData:{patch:F.patch,startLine:F.startLine,matchLine:F.matchLine}})}catch(F){$.push({type:"text",content:Y.diffContent.join(`
12
- `)})}Y.inDiff=!1,Y.diffContent=[],Y.lastLineEmpty=!1;return}Y.diffContent.push(X);return}if(X.match(j.diffStart)){Y.inDiff=!0,Y.diffContent=[],Y.lastLineEmpty=!1;return}if(Y.inCodeBlock){let F=X.match(j.codeBlock),G=X.trim()==="```";if(F&&F[1])Y.codeBlockDepth++,Y.codeBlockContent.push(X);else if(G)if(Y.codeBlockDepth>0)Y.codeBlockDepth--,Y.codeBlockContent.push(X);else s(Y,$);else Y.codeBlockContent.push(X);return}let V=X.match(j.codeBlock);if(V){Y.inCodeBlock=!0,Y.codeBlockLang=V[1]||null,Y.codeBlockDepth=0,Y.lastLineEmpty=!1;return}let J=X.match(j.table),H=X.match(j.tableSeparator);if(J&&!Y.inTable){Y.pendingTableHeader=X;return}if(Y.inTable&&H)return;if(Y.inTable&&J){let F=J[1].split("|").map((G)=>G.trim()).filter((G)=>G.length>0);while(F.length<Y.tableHeaders.length)F.push("");if(F.length>Y.tableHeaders.length)F.length=Y.tableHeaders.length;Y.tableRows.push(F);return}if(Y.inTable&&!J){if(a(Y,$),Q){u(X,Z,!1);return}}let U=X.match(j.blockquote);if(U){let F=U[1].length,G=U[2]||"";if(Y.inBlockquote&&F===Y.blockquoteLevel)Y.blockquoteLines.push(G);else{if(Y.inBlockquote)k(Y,$);Y.inBlockquote=!0,Y.blockquoteLevel=F,Y.blockquoteLines=[G]}Y.lastLineEmpty=!1;return}if(Y.inBlockquote)k(Y,$);let _=X.match(j.heading);if(_){$.push({type:"heading",content:_[2],level:_[1].length}),Y.lastLineEmpty=!1;return}let W=X.match(j.ulItem);if(W){$.push({type:"list",content:W[3],listType:"ul",marker:W[2],indentation:W[1].length}),Y.lastLineEmpty=!1;return}let P=X.match(j.olItem);if(P){$.push({type:"list",content:P[3],listType:"ol",marker:P[2],indentation:P[1].length}),Y.lastLineEmpty=!1;return}if(X.match(j.hr)){$.push({type:"hr",content:""}),Y.lastLineEmpty=!1;return}if(X.trim().length===0){if(!Y.lastLineEmpty)$.push({type:"empty",content:""}),Y.lastLineEmpty=!0;return}let O=X.match(j.commandMessage);if(O){$.push({type:"command-message",content:O[1]}),Y.lastLineEmpty=!1;return}$.push({type:"text",content:X}),Y.lastLineEmpty=!1}function c0(X,Z){if(!X||!Z)return;let Q=E0(X);if(Q.finalized)return;let Y=Q.pendingLine+Z,$=Y.split(`
13
- `),V=Y.endsWith(`
14
- `),J=V?$:$.slice(0,-1);Q.pendingLine=V?"":$[$.length-1]??"";for(let H of J)u(n(H),Q)}function i0(X){let Z=E.get(X);if(!Z||Z.finalized)return;if(Z.pendingLine)u(n(Z.pendingLine),Z),Z.pendingLine="";if(Z.state.pendingTableHeader!==null)Z.blocks.push({type:"text",content:Z.state.pendingTableHeader}),Z.state.pendingTableHeader=null;if(Z.state.inCodeBlock)s(Z.state,Z.blocks);if(Z.state.inTable)a(Z.state,Z.blocks);if(Z.state.inBlockquote)k(Z.state,Z.blocks);if(Z.state.inDiff)Z.blocks.push({type:"text",content:Z.state.diffContent.join(`
15
- `)}),Z.state.inDiff=!1,Z.state.diffContent=[];while(Z.blocks.length>0&&Z.blocks[Z.blocks.length-1].type==="empty")Z.blocks.pop();Z.finalized=!0}function l0(X){let Z=E.get(X);if(!Z||!Z.finalized)return null;return Z.blocks}function o0(X){let Z=E.get(X);if(!Z)return null;return Z.blocks}function A0(X){let Z=E.get(X);if(!Z)return null;let Q=[],Y=Z.state;if(Y.inDiff)Q.push("<<<DIFF>>>"),Q.push(...Y.diffContent);else if(Y.inCodeBlock){let $=Y.codeBlockLang?`\`\`\`${Y.codeBlockLang}`:"```";Q.push($),Q.push(...Y.codeBlockContent)}else if(Y.inTable){if(Y.tableHeaders.length>0){Q.push(`| ${Y.tableHeaders.join(" | ")} |`),Q.push(`| ${Y.tableHeaders.map(()=>"---").join(" | ")} |`);for(let $ of Y.tableRows)Q.push(`| ${$.join(" | ")} |`)}}else if(Y.inBlockquote){let $=">".repeat(Y.blockquoteLevel)+" ";for(let V of Y.blockquoteLines)Q.push($+V)}else if(Y.pendingTableHeader)Q.push(Y.pendingTableHeader);if(Z.pendingLine)Q.push(Z.pendingLine);return Q.length>0?Q:null}function n0(X){let Z=E.get(X);if(!Z)return null;let Q="text";if(Z.state.inDiff)Q="diff";else if(Z.state.inCodeBlock)Q="code";else if(Z.state.inTable||Z.state.pendingTableHeader)Q="table";let Y=A0(X);if(!Y||Y.length===0)return null;return{lines:Y,mode:Q}}function a0(X){E.delete(X)}function C(){E.clear()}var t=2000,I=[];function L0(){let X=I;return I=[],X}var X0={inputTokens:0,outputTokens:0,totalTokens:0,maxContextTokens:0,totalInputTokens:0,totalOutputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,turnCount:0,estimatedCostUsd:0},e={sessionId:Q0("tui"),messages:[],restoredContextMessages:null,restoredVisibleMessageCount:0,isCompacting:!1,currentCommand:null,error:null,isActive:!0,tokenUsage:{...X0},currentThinkingContent:null,thinkingExpanded:!1,clearCount:0,historyExpanded:!1,expandedMessageCount:100,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,finalizingStreamingMessageId:null},m=(X,Z)=>({...e,actions:{addMessage:(Q)=>{X((Y)=>({session:{...Y.session,messages:[...Y.session.messages,Q],error:null}}))},addUserMessage:(Q)=>{let Y={id:`user-${Date.now()}-${Math.random()}`,role:"user",content:Q,timestamp:Date.now()};Z().session.actions.addMessage(Y)},addAssistantMessage:(Q,Y)=>{let $={id:`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:Q,timestamp:Date.now(),thinkingContent:Y};Z().session.actions.addMessage($)},addAssistantMessageAndClearThinking:(Q)=>{let Y=Z().session.currentThinkingContent,$={id:`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:Q,timestamp:Date.now(),thinkingContent:Y||void 0};X((V)=>({session:{...V.session,messages:[...V.session.messages,$],currentThinkingContent:null,error:null}}))},addToolMessage:(Q,Y)=>{let $={id:`tool-${Date.now()}-${Math.random()}`,role:"tool",content:Q,timestamp:Date.now(),metadata:Y};Z().session.actions.addMessage($)},setCompacting:(Q)=>{X((Y)=>({session:{...Y.session,isCompacting:Q}}))},setCommand:(Q)=>{X((Y)=>({session:{...Y.session,currentCommand:Q}}))},setError:(Q)=>{X((Y)=>({session:{...Y.session,error:Q}}))},clearMessages:()=>{C(),X((Q)=>({session:{...Q.session,messages:[],restoredContextMessages:null,restoredVisibleMessageCount:0,error:null,clearCount:Q.session.clearCount+1}}))},setCompactedContext:(Q)=>{X((Y)=>({session:{...Y.session,restoredContextMessages:[...Q],restoredVisibleMessageCount:Y.session.messages.length}}))},resetSession:()=>{C(),X((Q)=>({session:{...Q.session,...e,sessionId:Q.session.sessionId,isActive:!0}}))},restoreSession:(Q,Y,$)=>{C(),X((V)=>({session:{...V.session,sessionId:Q,messages:Y,restoredContextMessages:$??null,restoredVisibleMessageCount:$?Y.length:0,error:null,isActive:!0}}))},updateTokenUsage:(Q)=>{X((Y)=>{let $=Y.session.tokenUsage,{costUsd:V,...J}=Q,H=Math.max(0,Q.inputTokens??0),U=Math.max(0,Q.outputTokens??0),_=Math.max(0,Q.cacheReadTokens??0),W=Math.max(0,Q.cacheWriteTokens??0),P=$.totalInputTokens+H,v=$.totalOutputTokens+U,O=$.cacheReadTokens+_,F=$.cacheWriteTokens+W,G=Y.config?.config,w=G?.models?.find((A)=>A.id===G.currentModelId),K=w?.model??"",N=V??o(K,Math.max(0,H-_-W),U,_,W,w?.provider);return{session:{...Y.session,tokenUsage:{...$,...J,totalInputTokens:P,totalOutputTokens:v,cacheReadTokens:O,cacheWriteTokens:F,estimatedCostUsd:$.estimatedCostUsd+Math.max(0,N)}}}})},resetContextUsage:()=>{X((Q)=>({session:{...Q.session,tokenUsage:{...Q.session.tokenUsage,inputTokens:0,outputTokens:0,totalTokens:0}}}))},resetTokenUsage:()=>{X((Q)=>({session:{...Q.session,tokenUsage:{...X0}}}))},setCurrentThinkingContent:(Q)=>{if(Z().session.currentThinkingContent===Q)return;X((Y)=>({session:{...Y.session,currentThinkingContent:Q}}))},appendThinkingContent:(Q)=>{X((Y)=>({session:{...Y.session,currentThinkingContent:(Y.session.currentThinkingContent||"")+Q}}))},setThinkingExpanded:(Q)=>{X((Y)=>({session:{...Y.session,thinkingExpanded:Q}}))},toggleThinkingExpanded:()=>{X((Q)=>({session:{...Q.session,thinkingExpanded:!Q.session.thinkingExpanded}}))},setHistoryExpanded:(Q)=>{X((Y)=>({session:{...Y.session,historyExpanded:Q}}))},toggleHistoryExpanded:()=>{X((Q)=>({session:{...Q.session,historyExpanded:!Q.session.historyExpanded}}))},setExpandedMessageCount:(Q)=>{X((Y)=>({session:{...Y.session,expandedMessageCount:Q}}))},incrementClearCount:()=>{X((Q)=>({session:{...Q.session,clearCount:Q.session.clearCount+1}}))},startStreamingAssistantMessage:()=>{let Q=`assistant-${Date.now()}-${Math.random()}`,Y={id:Q,role:"assistant",content:"",timestamp:Date.now()};return I=[],X(($)=>({session:{...$.session,messages:[...$.session.messages,Y],currentStreamingMessageId:Q,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,error:null}})),Q},appendAssistantContent:(Q)=>{let Y=Z().session.currentStreamingMessageId,$=Y??`assistant-${Date.now()}-${Math.random()}`;return I.push(Q),X((V)=>{let J=(w)=>w.endsWith("\r")?w.slice(0,-1):w,H=Y?V.session.currentStreamingLines:[],U=Y?V.session.currentStreamingTail:"",_=Y?V.session.currentStreamingLineCount:0,W=Y?V.session.currentStreamingVersion:0,v=(U+Q).split(`
16
- `),O=v.slice(0,-1).map(J),F=J(v[v.length-1]??""),G=H;if(O.length>0){if(G=[...H,...O],G.length>t){let w=G.length-t;G=G.slice(w)}}return{session:{...V.session,currentStreamingMessageId:$,currentStreamingLines:G,currentStreamingTail:F,currentStreamingLineCount:_+O.length,currentStreamingVersion:W+1,error:null}}}),$},finalizeStreamingMessage:(Q,Y)=>{let $=L0();X((V)=>{let J=V.session.currentStreamingMessageId,U=$.join("")+(Q||""),_=(V.session.currentThinkingContent||"")+(Y||"");if(U.length>0){let W={id:J||`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:U,timestamp:Date.now(),thinkingContent:_||void 0};return{session:{...V.session,messages:[...V.session.messages,W],currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,currentThinkingContent:null,finalizingStreamingMessageId:W.id}}}return{session:{...V.session,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,currentThinkingContent:null,finalizingStreamingMessageId:null}}})},clearFinalizingStreamingMessageId:()=>{X((Q)=>({session:{...Q.session,finalizingStreamingMessageId:null}}))},discardStreamingMessage:()=>{I=[],X((Q)=>({session:{...Q.session,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,finalizingStreamingMessageId:null}}))}}});var C0=y0()(N0(R0((...X)=>({session:m(...X),app:f(...X),config:h(...X),focus:p(...X),command:b(...X)})),{name:"BladeStore",enabled:!0})),z=()=>C0.getState(),K1=()=>z().session.actions,W1=()=>z().app.actions,O1=()=>z().session.messages,B=()=>z().config.config,L=null;async function q1(){if(B()!==null)return;if(L)return L;return L=(async()=>{try{let Q=await Y0.getInstance().initialize();z().config.actions.setConfig(Q)}catch(Z){throw L=null,Error(`[FAIL] Store 未初始化且无法自动初始化
17
-
18
- `+`原因: ${Z instanceof Error?Z.message:"未知错误"}
19
-
20
- `+`请确保:
21
- `+`1. 配置文件格式正确 (~/.blade/config.json)
22
- `+`2. 运行 blade 进行首次配置
23
- `+"3. 配置文件权限正确")}finally{L=null}})(),L}var w1=()=>z().config.config?.models??[],x1=()=>{let X=B();if(!X)return;let Z=X.currentModelId;return X.models.find((Y)=>Y.id===Z)??X.models[0]},P1=(X)=>{let Z=B();if(!Z)return;return Z.models.find((Q)=>Q.id===X)},v1=()=>z().config.config?.mcpServers??{},D1=()=>z().app.thinkingModeEnabled,B1=()=>({setPermissionMode:async(X)=>{z().config.actions.updateConfig({permissionMode:X})},setTheme:async(X,Z={})=>{try{i.setTheme(X)}catch{return}z().config.actions.updateConfig({theme:X}),await x().save({theme:X},{scope:"global",...Z})},setLanguage:async(X,Z={})=>{z().config.actions.updateConfig({language:X}),await x().save({language:X},{scope:"global",...Z})},setDebug:async(X,Z={})=>{z().config.actions.updateConfig({debug:X}),await x().save({debug:X},{scope:"global",...Z})},setTemperature:async(X,Z={})=>{z().config.actions.updateConfig({temperature:X}),await x().save({temperature:X},{scope:"global",...Z})},updateConfig:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");let Y={...Q};z().config.actions.updateConfig(X);try{await x().save(X,Z)}catch($){throw z().config.actions.setConfig(Y),$}},flush:async()=>{await x().flush()},appendPermissionAllowRule:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");let Y=Q.permissions?.allow||[];if(!Y.includes(X)){let $=[...Y,X];z().config.actions.updateConfig({permissions:{...Q.permissions,allow:$}})}await x().appendPermissionRule(X,Z)},appendLocalPermissionAllowRule:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");let Y=Q.permissions?.allow||[];if(!Y.includes(X)){let $=[...Y,X];z().config.actions.updateConfig({permissions:{...Q.permissions,allow:$}})}await x().appendLocalPermissionRule(X,Z)},setCurrentModel:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");if(!Q.models.find(($)=>$.id===X))throw Error(`Model not found: ${X}`);z().config.actions.updateConfig({currentModelId:X}),await x().save({currentModelId:X},{scope:"global",...Z})},addModel:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");let Y="id"in X?X:{id:I0(),...X};if(Q.models.find((H)=>H.provider===Y.provider&&H.model===Y.model))throw Error(`Model already configured: ${Y.provider}/${Y.model}`);let J={models:[...Q.models,Y]};if(Q.models.length===0)J.currentModelId=Y.id;return z().config.actions.updateConfig(J),await x().save(J,{scope:"global",...Z}),Y},updateModel:async(X,Z,Q={})=>{let Y=B();if(!Y)throw Error("Config not initialized");let $=Y.models.findIndex((J)=>J.id===X);if($===-1)throw Error(`Model not found: ${X}`);let V=[...Y.models];V[$]={...V[$],...Z},z().config.actions.updateConfig({models:V}),await x().save({models:V},{scope:"global",...Q})},removeModel:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");if(Q.models.length===1)throw Error("Cannot remove the only model");let Y=Q.models.filter((V)=>V.id!==X),$={models:Y};if(Q.currentModelId===X)$.currentModelId=Y[0].id;z().config.actions.updateConfig($),await x().save($,{scope:"global",...Z})},addMcpServer:async(X,Z,Q={})=>{let Y=B();if(!Y)throw Error("Config not initialized");let V={...Y.mcpServers??{},[X]:Z};z().config.actions.updateConfig({mcpServers:V}),await x().save({mcpServers:V},{scope:"project",...Q})},removeMcpServer:async(X,Z={})=>{let Q=B();if(!Q)throw Error("Config not initialized");let $={...Q.mcpServers??{}};delete $[X],z().config.actions.updateConfig({mcpServers:$}),await x().save({mcpServers:$},{scope:"project",...Z})}});
24
- export{d as ia,i as ja,j as ka,g0 as la,c0 as ma,i0 as na,l0 as oa,o0 as pa,n0 as qa,a0 as ra,C0 as sa,z as ta,K1 as ua,W1 as va,O1 as wa,B as xa,q1 as ya,w1 as za,x1 as Aa,P1 as Ba,v1 as Ca,D1 as Da,B1 as Ea};
@@ -1 +0,0 @@
1
- import{u as a,v as b}from"./chunk-1evg2hdd.js";import"./chunk-887qxhn5.js";import"./chunk-w4xcmzjm.js";export{a as globalOptions,b as cliConfig};
@@ -1 +0,0 @@
1
- import{a as y,b as A,c as C,d as D}from"./chunk-zns65xsy.js";import"./chunk-1x3846v7.js";import"./chunk-qwfqp465.js";import"./chunk-eycs00af.js";import"./chunk-kne7h7p5.js";import"./chunk-6jq8h5s9.js";import"./chunk-fpdqvnmq.js";import{ya as q}from"./chunk-8fp3q919.js";import"./chunk-j14rn2dx.js";import"./chunk-11s7t9dp.js";import"./chunk-887qxhn5.js";import"./chunk-6avkjdjc.js";import"./chunk-p4yrmzyr.js";import"./chunk-f3pvwxp8.js";import"./chunk-0z5qe4m2.js";import"./chunk-81p4kz0b.js";import"./chunk-rxjt7ma7.js";import"./chunk-5fw9k1ff.js";import"./chunk-9xvnrq7m.js";import"./chunk-0g9cb41d.js";import"./chunk-w4xcmzjm.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};
@@ -1,3 +0,0 @@
1
- import{Ga as t}from"./chunk-j14rn2dx.js";import{Kb as r}from"./chunk-rxjt7ma7.js";import"./chunk-9xvnrq7m.js";import"./chunk-0g9cb41d.js";import{gc as s}from"./chunk-w4xcmzjm.js";var m={command:"doctor",describe:"Check the health of your Blade installation",handler:async()=>{console.log(`Running Blade health check...
2
- `);let e=0;try{await t.getInstance().initialize(),console.log("[OK] Configuration: OK")}catch(o){console.log("[FAIL] Configuration: FAILED"),console.log(` Error: ${o instanceof Error?o.message:"未知错误"}`),e++}let n=process.version;if(parseInt(n.slice(1).split(".")[0])>=18)console.log(`[OK] Node.js version: ${n}`);else console.log(`[WARN] Node.js version: ${n} (recommended: v18+)`),e++;try{let o=await import("fs/promises"),i=r();await o.access(i,(await import("fs")).constants.R_OK|(await import("fs")).constants.W_OK),console.log("[OK] File system permissions: OK")}catch(o){console.log("[FAIL] File system permissions: FAILED"),console.log(" Error: Cannot read/write in current directory"),e++}try{await import("ink"),console.log("[OK] Dependencies: OK")}catch(o){console.log("[FAIL] Dependencies: FAILED"),console.log(" Error: Missing required dependencies"),e++}if(console.log(`
3
- Health Check Summary:`),e===0)console.log("All checks passed! Blade is ready to use.");else console.log(`Warning: Found ${e} issue(s). Please resolve them for optimal performance.`),process.exit(1)}};export{m as doctorCommands};
@@ -1,6 +0,0 @@
1
- import{p as r}from"./chunk-qwfqp465.js";import{q as s,r as n,s as o,t as a}from"./chunk-w11ht6f9.js";import{u as m}from"./chunk-1evg2hdd.js";import{w as l,x as p,y as i}from"./chunk-8epvwyg8.js";import{z as u}from"./chunk-4fye39a8.js";import{P as d,Q as v,R as y,T as O,U as T}from"./chunk-eycs00af.js";import"./chunk-kne7h7p5.js";import"./chunk-6jq8h5s9.js";import"./chunk-fpdqvnmq.js";import"./chunk-8fp3q919.js";import"./chunk-j14rn2dx.js";import"./chunk-11s7t9dp.js";import"./chunk-887qxhn5.js";import{cb as g}from"./chunk-6avkjdjc.js";import"./chunk-p4yrmzyr.js";import"./chunk-f3pvwxp8.js";import{Ab as q,Bb as W,Db as _,yb as S}from"./chunk-0z5qe4m2.js";import"./chunk-81p4kz0b.js";import{Jb as k,Kb as J,Lb as c}from"./chunk-rxjt7ma7.js";import"./chunk-5fw9k1ff.js";import"./chunk-9xvnrq7m.js";import"./chunk-0g9cb41d.js";import"./chunk-w4xcmzjm.js";import Iq from"yargs";import{hideBin as Jq}from"yargs/helpers";var F=1;function K(Y){return q.Object({event_version:q.Literal(F),...Y})}var Gq=K({type:q.Literal("content_delta"),delta:q.String()}),Xq=K({type:q.Literal("thinking_delta"),delta:q.String()}),Bq=K({type:q.Literal("thinking"),content:q.String()}),Uq=K({type:q.Literal("stream_end")}),Vq=K({type:q.Literal("content"),content:q.String()}),w=_(["readonly","write","execute"]),Dq=K({type:q.Literal("tool_start"),tool_name:q.String(),summary:q.String(),target:q.Optional(q.String()),tool_kind:q.Optional(w)}),Kq=K({type:q.Literal("tool_result"),tool_name:q.String(),summary:q.String(),target:q.Optional(q.String()),tool_kind:q.Optional(w),success:q.Optional(q.Boolean()),error_type:q.Optional(q.String()),error_message:q.Optional(q.String())}),bq=K({type:q.Literal("phase"),phase:_(["turn","searching","inspecting","target_hit","executing","completed"]),status:_(["ongoing","hit","done"]),message:q.String(),turn:q.Optional(q.Number()),tool_name:q.Optional(q.String()),target:q.Optional(q.String())}),jq=K({type:q.Literal("tool_detail"),tool_name:q.String(),detail:q.String()}),_q=K({type:q.Literal("task_update"),tasks:q.Array(O)}),zq=K({type:q.Literal("subagent"),state:_(["spawned","completed"]),session_id:q.String(),subagent_type:q.Optional(q.String()),success:q.Optional(q.Boolean()),summary:q.Optional(q.String()),resumed_from:q.Optional(q.String()),root_agent_id:q.Optional(q.String()),resume_depth:q.Optional(q.Integer({minimum:0}))}),Aq=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())}),Mq=K({type:q.Literal("compacting"),state:_(["started","completed"])}),Hq=K({type:q.Literal("turn_limit"),turns_count:q.Number(),action:q.Literal("continue")}),Rq=K({type:q.Literal("task_session"),session_id:q.String(),project_path:q.String(),source_project_path:q.String(),isolation:_(["local","worktree"]),worktree_branch:q.Optional(q.String()),base_commit:q.Optional(q.String())}),fq=K({type:q.Literal("output"),content:q.String(),exit_code:q.Number()}),xq=K({type:q.Literal("error"),message:q.String()}),vq=W(q.Union([Gq,Xq,Bq,Uq,Vq,Dq,Kq,bq,jq,_q,zq,Aq,Mq,Hq,Rq,fq,xq]));function E(Y,$){return{event_version:F,type:Y,...$}}function Pq(Y){if(Y?.signal)return{signal:Y.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 Lq=_(["text","jsonl"]),Nq=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:c}),(Y)=>Y===-1||Y>0,()=>"must be -1 or a positive integer")),permissionMode:q.Optional(q.Enum(k)),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(_(["local","worktree"])),outputFormat:q.Optional(Lq)});class t{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 Wq(Y){return Y.issues.map(($)=>`${$.path.join(".")||"options"}: ${$.message}`).join("; ")}function Oq(Y){let $=S(Nq,Y);if(!$.success)throw Error(`Invalid headless options: ${Wq($.error)}`);return $.data}function Fq(Y){return Y.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 Sq($);process.exit(G)})}function b(Y,$=""){Y.write(`${$}
2
- `)}function wq(Y){return`[task] [${Y.status}] ${Y.subject}`}function Eq(){return{requestConfirmation:async(Y)=>({approved:!0,reason:"headless-auto-approved",scope:"session"})}}function Cq(Y){if(!(Y instanceof Error))return"Unknown error";let Q=Y.lastError??Y;if(Q.responseBody)try{let U=JSON.parse(Q.responseBody)?.error?.message;if(U)return Q.statusCode?`${U} (HTTP ${Q.statusCode})`:U}catch{}let Z=Y.message.match(/Last error:\s*(.+)$/);if(Z)return Z[1];return Y.message}function hq(Y){return Y==="jsonl"?"jsonl":"text"}function C(Y,$){let G=(...Q)=>{for(let Z of Q){let D=$[Z];if(typeof D==="string"&&D.trim()!=="")return D}return};switch(Y){case"Read":case"Edit":case"Write":case"UndoEdit":return G("file_path");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 kq(Y,$,G,Q){let Z=new Set(["Glob","Grep","WebSearch","LS"]),D=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Y)&&!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(Z.has(Y))return{phase:"searching",status:"ongoing",message:`Still searching: ${$}`,shouldLockTarget:!1};if(D.has(Y))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${$}`,shouldLockTarget:!1};return{phase:"executing",status:Q.targetLocked?"hit":"ongoing",message:`Executing: ${$}`,shouldLockTarget:!1}}function h(Y,$){let G=(Q,Z)=>{Y.stdout.write(`${JSON.stringify(E(Q,Z))}
3
- `)};return{contentDelta(Q){if($==="jsonl"){G("content_delta",{delta:Q});return}Y.stdout.write(Q)},thinkingDelta(Q,Z){if($==="jsonl")return G("thinking_delta",{delta:Q}),Z;if(!Z)Y.stderr.write("[thinking] ");return Y.stderr.write(Q),!0},thinking(Q){if($==="jsonl"){G("thinking",{content:Q});return}b(Y.stderr,`[thinking] ${Q}`)},streamEnd(Q,Z){if($==="jsonl"){G("stream_end",{});return}if(Z)Y.stderr.write(`
4
- `);if(Q)Y.stdout.write(`
5
- `)},content(Q){if($==="jsonl"){G("content",{content:Q});return}b(Y.stdout,Q)},toolStart(Q,Z,D,U){if($==="jsonl"){G("tool_start",{tool_name:Q,summary:Z,target:D,tool_kind:U});return}b(Y.stderr,`[tool:start] ${Z}`)},toolResult(Q,Z,D,U,j){if($==="jsonl"){G("tool_result",{tool_name:Q,summary:Z,target:D,tool_kind:U,success:j?.success,error_type:j?.errorType,error_message:j?.errorMessage});return}b(Y.stderr,`[tool:result] ${Z}`)},phase(Q,Z,D,U={}){if($==="jsonl"){G("phase",{phase:Q,status:Z,message:D,turn:U.turn,tool_name:U.toolName,target:U.target});return}b(Y.stderr,`[phase:${Q}] ${D}`)},toolDetail(Q,Z){if($==="jsonl"){G("tool_detail",{tool_name:Q,detail:Z});return}b(Y.stderr,Z)},taskUpdate(Q){if($==="jsonl"){G("task_update",{tasks:Q});return}for(let Z of Q)b(Y.stderr,wq(Z))},subagent(Q){let Z=Q.kind==="subagent_spawned";if($==="jsonl"){G("subagent",{state:Z?"spawned":"completed",session_id:Q.sessionId,subagent_type:Z?Q.type:void 0,success:Z?void 0:Q.success,summary:Z?void 0:Q.summary,resumed_from:Q.resumedFrom,root_agent_id:Q.rootAgentId,resume_depth:Q.resumeDepth});return}b(Y.stderr,`[subagent:${Z?"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}b(Y.stderr,`[tokens] in=${Q.inputTokens} out=${Q.outputTokens} total=${Q.totalTokens} / ${Q.maxContextTokens}`)},compacting(Q){if($==="jsonl"){G("compacting",{state:Q?"started":"completed"});return}b(Y.stderr,Q?"[context] compacting started":"[context] compacting completed")},turnLimit(Q){if($==="jsonl"){G("turn_limit",{turns_count:Q,action:"continue"});return}b(Y.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}b(Y.stderr,`[task:${Q.isolation}] ${Q.sessionId} ${Q.sourceProjectPath} -> ${Q.projectPath}${Q.worktreeBranch?` (${Q.worktreeBranch})`:""}`)},output(Q,Z=0){if($==="jsonl"){G("output",{content:Q,exit_code:Z});return}b(Z===0?Y.stdout:Y.stderr,Q)},error(Q){if($==="jsonl"){G("error",{message:Q});return}b(Y.stderr,Q)}}}async function Sq(Y,$={stdout:process.stdout,stderr:process.stderr},G){let Q="text",Z=h($,Q),D=new t,U={targetLocked:!1},j,M=Pq(G);try{let X=Oq(Y);Q=hq(X.outputFormat),Z=h($,Q),await s();let e=await n(X),A=await o(e);if(A.mode==="output"){if(A.content)Z.output(A.content,A.exitCode??0);return A.exitCode??0}let N=X.permissionMode??"yolo";if(X.taskIsolation&&(X.continue||X.resume||X.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:f,messages:qq}=await a({sessionId:X.sessionId,continue:X.continue,resume:X.resume,forkSession:X.forkSession,fallbackSessionPrefix:"headless"}),z=X.taskIsolation?await r.createSessionTask({sessionId:f,prompt:A.content,sourceProjectPath:J(),isolation:X.taskIsolation}):void 0,P=z?.metadata.projectPath??J();if(z)Z.taskSession({sessionId:f,projectPath:P,sourceProjectPath:z.metadata.taskSourceProjectPath??J(),isolation:X.taskIsolation,worktreeBranch:z.metadata.taskWorktreeBranch,baseCommit:z.metadata.taskBaseCommit});let Qq={messages:[...qq],userId:"cli-user",sessionId:f,workspaceRoot:P,permissionMode:N,signal:M.signal,...z?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:Eq()};j=await d.create({sessionId:f,workspaceRoot:P,modelId:X.model,mcpConfig:X.mcpConfig,strictMcpConfig:X.strictMcpConfig,agents:X.agents?u(X.agents):void 0,...z?.taskWorktree?{taskWorktree:z.taskWorktree}:{}});let Yq=X.maxTurns??j.getConfig().maxTurns,Zq=z?.taskWorktree?[...new Set([...X.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:X.disallowedTools,$q=await T.createWithRuntime(j,{sessionId:f,systemPrompt:X.systemPrompt,appendSystemPrompt:X.appendSystemPrompt,maxTurns:X.maxTurns,modelId:X.model,permissionMode:N,toolWhitelist:X.allowedTools,toolBlacklist:Zq,mcpConfig:X.mcpConfig,strictMcpConfig:X.strictMcpConfig}),L=await g($q.chatStream(A.content,Qq,{stream:!0,signal:M.signal,maxTurns:X.maxTurns,...Yq===-1?{onTurnLimitReached:async(V)=>{return Z.turnLimit(V.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(V)=>{switch(V.kind){case"content_delta":D.markAssistantContent(),Z.contentDelta(V.delta);break;case"thinking_delta":D.setThinkingOpened(Z.thinkingDelta(V.delta,D.hasOpenThinking()));break;case"stream_end":{let B=D.completeStream();Z.streamEnd(B.wroteAssistantContent,B.openedThinking);break}case"tool_start":{let B=V.toolCall;if(!("function"in B))break;if(["TaskCreate","TaskUpdate","TaskList"].includes(B.function.name))break;try{let H=JSON.parse(B.function.arguments),R=v(B.function.name,H),x=C(B.function.name,H),I=kq(B.function.name,R,x,U);if(I.shouldLockTarget)U.targetLocked=!0;Z.phase(I.phase,I.status,I.message,{toolName:B.function.name,target:x}),Z.toolStart(B.function.name,R,x,V.toolKind)}catch{Z.phase(U.targetLocked?"executing":"searching",U.targetLocked?"hit":"ongoing",U.targetLocked?`Working within target: ${B.function.name}`:`Still searching: ${B.function.name}`,{toolName:B.function.name}),Z.toolStart(B.function.name,B.function.name,void 0,V.toolKind)}break}case"tool_result":{let B=V.toolCall;if(!("function"in B))break;let H;try{let x=JSON.parse(B.function.arguments);H=C(B.function.name,x)}catch{H=void 0}let R=y(B.function.name,V.result);if(Z.toolResult(B.function.name,R.summary,H,void 0,{success:V.result.success,errorType:V.result.error?.type,errorMessage:V.result.error?.message}),R.detail)Z.toolDetail(B.function.name,R.detail);break}case"token_usage":Z.tokenUsage(V.usage);break;case"compaction":Z.compacting(V.phase==="start");break;case"task_update":Z.taskUpdate(V.tasks);break;case"steering_applied":case"follow_up_started":case"goal_updated":case"goal_continuation_started":break;case"subagent_spawned":case"subagent_completed":Z.subagent(V);break;case"model_fallback":break;case"turn_start":if(V.turn===1)U.targetLocked=!1;Z.phase("turn",U.targetLocked?"hit":"ongoing",`Turn ${V.turn} started`,{turn:V.turn});break;default:{let B=V}}});if(L.metadata?.outputTruncated)Z.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!L.success)return Z.error(`Error: ${L.error?.message??"Agent execution failed"}`),1;return Z.phase("completed","done","Headless run completed"),0}catch(X){if(D.hasOpenThinking()&&Q==="text")$.stderr.write(`
6
- `);return Z.error(`Error: ${Cq(X)}`),1}finally{try{await j?.dispose()}finally{M.dispose()}}}async function $Q(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:G,"output-format":Q,"system-prompt":Z,"append-system-prompt":D,"max-turns":U,...j}=m,M=Iq(Jq(process.argv)).scriptName("blade").strict(!1).options(j).middleware([p,l,i]);return Fq(M),await M.parse(),!0}export{Sq as runHeadless,$Q as handleHeadlessMode,Nq as HeadlessOptionsSchema};
@@ -1 +0,0 @@
1
- import{w as a,x as b,y as c}from"./chunk-8epvwyg8.js";import"./chunk-4fye39a8.js";import"./chunk-kne7h7p5.js";import"./chunk-8fp3q919.js";import"./chunk-j14rn2dx.js";import"./chunk-0z5qe4m2.js";import"./chunk-81p4kz0b.js";import"./chunk-rxjt7ma7.js";import"./chunk-9xvnrq7m.js";import"./chunk-0g9cb41d.js";import"./chunk-w4xcmzjm.js";export{a as validatePermissions,c as validateOutput,b as loadConfiguration};