blade-code 0.10.24 → 0.10.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blade.js +2 -2
- package/dist/chunk-01n8k1jj.js +1 -0
- package/dist/{chunk-1gkpjhts.js → chunk-0q4jbbm5.js} +1 -1
- package/dist/{chunk-9c3jjbgd.js → chunk-1g5h4zv6.js} +1 -1
- package/dist/{chunk-xzdpdwhz.js → chunk-1hzj6s0f.js} +2 -2
- package/dist/chunk-1mh2285d.js +200 -0
- package/dist/{chunk-26zhy301.js → chunk-20kg90zt.js} +2 -2
- package/dist/{chunk-18n15nn8.js → chunk-35d5gdgw.js} +1 -1
- package/dist/{chunk-f8zz4se0.js → chunk-46yg6dfr.js} +2 -2
- package/dist/{chunk-f4ksxskk.js → chunk-4aem0m2n.js} +1 -1
- package/dist/chunk-58tpe6nx.js +44 -0
- package/dist/{chunk-phzy5kqq.js → chunk-58yqrbey.js} +1 -1
- package/dist/{chunk-5xph8r1k.js → chunk-5mtryjjc.js} +1 -1
- package/dist/chunk-5yr2c8gz.js +25 -0
- package/dist/chunk-6axhk4r7.js +2 -0
- package/dist/chunk-6k74z0eb.js +2 -0
- package/dist/{chunk-yac1ga9w.js → chunk-6srz3q5d.js} +1 -1
- package/dist/{chunk-d2kzet1k.js → chunk-7jv8thn1.js} +2 -2
- package/dist/{chunk-3fkj59nv.js → chunk-89gswfb2.js} +1 -1
- package/dist/{chunk-w56y2pvk.js → chunk-8htfb5zn.js} +2 -2
- package/dist/{chunk-hpmxmkzc.js → chunk-9ka0bdry.js} +1 -1
- package/dist/{chunk-m13jrgp9.js → chunk-a4cyec1y.js} +2 -2
- package/dist/chunk-aa28p37g.js +2 -0
- package/dist/chunk-acf5v2fv.js +2 -0
- package/dist/chunk-b5fegjt7.js +6 -0
- package/dist/chunk-bbjtt28z.js +1 -0
- package/dist/{chunk-6vfe3409.js → chunk-ct2x59pr.js} +1 -1
- package/dist/chunk-d9jz1edf.js +100 -0
- package/dist/chunk-dxgzyy09.js +1 -0
- package/dist/{chunk-j8ggq1z4.js → chunk-ebffhjma.js} +2 -2
- package/dist/{chunk-bp886b8j.js → chunk-edyxa2jw.js} +1 -1
- package/dist/{chunk-k2b95m2p.js → chunk-eqa706gn.js} +2 -2
- package/dist/chunk-f88wkyfm.js +1 -0
- package/dist/{chunk-aw8s1sej.js → chunk-fbc5zfq7.js} +1 -1
- package/dist/chunk-fkwqgqsw.js +1 -0
- package/dist/{chunk-m27w377p.js → chunk-fnt1z0y8.js} +1 -1
- package/dist/chunk-gahvpbbs.js +1 -0
- package/dist/{chunk-57q5wn4g.js → chunk-gn37wxwg.js} +1 -1
- package/dist/chunk-h2npwqz9.js +10 -0
- package/dist/{chunk-c674mmtj.js → chunk-jt55ct49.js} +2 -2
- package/dist/{chunk-xjqcc0nt.js → chunk-k99rbzqw.js} +1 -1
- package/dist/{chunk-wjqctwyr.js → chunk-kskg7crs.js} +26 -41
- package/dist/{chunk-p1dp2xgq.js → chunk-kvd5nexw.js} +1 -1
- package/dist/chunk-kwe0a3xw.js +1 -0
- package/dist/chunk-m7x4ya6m.js +1 -0
- package/dist/chunk-mqsxghqb.js +1 -0
- package/dist/chunk-nar8qz5t.js +1 -0
- package/dist/{chunk-5sw8j9ae.js → chunk-nt6xmzk0.js} +1 -1
- package/dist/chunk-p6nhdbdw.js +116 -0
- package/dist/{chunk-67ekta7b.js → chunk-pja0tttq.js} +1 -1
- package/dist/{chunk-my2jwz6y.js → chunk-px3t1rxa.js} +2 -2
- package/dist/chunk-pyfag66h.js +1 -0
- package/dist/chunk-q1papzdc.js +1 -0
- package/dist/{chunk-pccn8ndq.js → chunk-r46ws0q8.js} +2 -2
- package/dist/{chunk-bw7vknjr.js → chunk-rgafk34p.js} +1 -1
- package/dist/chunk-rth3jfdq.js +2 -0
- package/dist/{chunk-nqpcwa0k.js → chunk-rtktz9v1.js} +233 -231
- package/dist/{chunk-s14wmzm3.js → chunk-s1khjfye.js} +2 -2
- package/dist/{chunk-vns8g2rv.js → chunk-sprjrvn6.js} +1 -1
- package/dist/chunk-ss449b56.js +1 -0
- package/dist/{chunk-yaxapgbm.js → chunk-tg1mf1tf.js} +1 -1
- package/dist/{chunk-x6tns9d8.js → chunk-tnrrnzzv.js} +1 -1
- package/dist/chunk-v508x7cg.js +0 -0
- package/dist/chunk-vc2c8wkx.js +2 -0
- package/dist/chunk-vp50e95n.js +3 -0
- package/dist/chunk-wg8p9g0z.js +1 -0
- package/dist/chunk-xkb48pvz.js +1 -0
- package/dist/{chunk-t327cwnb.js → chunk-xp44jtsd.js} +1 -1
- package/dist/chunk-y2en7qvs.js +6 -0
- package/dist/{chunk-86zsjamb.js → chunk-zs9mwd17.js} +3 -3
- package/dist/web/assets/{ChatView-CCxjYDmJ.js → ChatView-Crna6-ID.js} +2 -2
- package/dist/web/assets/{CodeBlockHighlighter-D9MqsrZP.js → CodeBlockHighlighter-coWjWCyT.js} +1 -1
- package/dist/web/assets/{FilePreview-Cn5HOlPw.js → FilePreview-BKcCbpvz.js} +2 -2
- package/dist/web/assets/{MarkdownRenderer-ALTOCdfi.js → MarkdownRenderer-BqV1nvf1.js} +3 -3
- package/dist/web/assets/{SettingsModal-Dk69F1bS.js → SettingsModal-BOMswk9P.js} +2 -2
- package/dist/web/assets/{TaskSwitcher-DRZZocE1.js → TaskSwitcher-BEW2DhW3.js} +1 -1
- package/dist/web/assets/{TerminalPanel-ByAqKZ47.js → TerminalPanel-BXzypTz6.js} +1 -1
- package/dist/web/assets/index-DqXKkjcp.js +11 -0
- package/dist/web/index.html +1 -1
- package/package.json +2 -1
- package/dist/chunk-014rwj5b.js +0 -1
- package/dist/chunk-0568ndm9.js +0 -200
- package/dist/chunk-1pkca2km.js +0 -3
- package/dist/chunk-2wpnzjme.js +0 -1
- package/dist/chunk-3ak60ndt.js +0 -1
- package/dist/chunk-3qmwt188.js +0 -100
- package/dist/chunk-4a02yjg9.js +0 -2
- package/dist/chunk-6pb6zs96.js +0 -2
- package/dist/chunk-7dqc10sc.js +0 -1
- package/dist/chunk-ag07wwer.js +0 -2
- package/dist/chunk-bpz0g8ej.js +0 -2
- package/dist/chunk-bvwq5wth.js +0 -6
- package/dist/chunk-c29y2s8g.js +0 -2
- package/dist/chunk-d70mtcp4.js +0 -1
- package/dist/chunk-e71qm105.js +0 -1
- package/dist/chunk-edqtngzr.js +0 -44
- package/dist/chunk-f0mt91sr.js +0 -1
- package/dist/chunk-gwe547ww.js +0 -1
- package/dist/chunk-m486vmtn.js +0 -1
- package/dist/chunk-n00mknme.js +0 -25
- package/dist/chunk-n54tp9wr.js +0 -1
- package/dist/chunk-pq7tk058.js +0 -6
- package/dist/chunk-q5sewfn5.js +0 -1
- package/dist/chunk-qg87zezq.js +0 -1
- package/dist/chunk-r14bz8va.js +0 -1
- package/dist/chunk-rtkhyp1g.js +0 -1
- package/dist/chunk-s4mqw4wa.js +0 -116
- package/dist/chunk-sgnjekfb.js +0 -1
- package/dist/chunk-tetxqw28.js +0 -1
- package/dist/chunk-vmzf4nvh.js +0 -2
- package/dist/chunk-zm3zn23k.js +0 -10
- package/dist/web/assets/index-CRCirUK7.js +0 -11
package/dist/chunk-n00mknme.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import{kd as D}from"./chunk-qg87zezq.js";import{ld as G0}from"./chunk-xjqcc0nt.js";import{bf as U0,se as H0}from"./chunk-edqtngzr.js";import{tf as $0}from"./chunk-p1dp2xgq.js";import{yf as A}from"./chunk-c674mmtj.js";import{nanoid as J0}from"nanoid";import{devtools as v0,subscribeWithSelector as k0}from"zustand/middleware";import{createStore as f0}from"zustand/vanilla";var _0={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)"}},K0={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)"}},W0={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)"}},q0={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)"}},O0={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)"}},w0={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)"}},B0={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)"}},D0={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)"}},x0={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)"}},E0={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)"}},L0={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)"}},A0={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)"}},P0={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)"}},l=[{id:"ayu-dark",label:"Ayu Dark",theme:_0,tags:["dark","popular"]},{id:"dracula",label:"Dracula",theme:K0,tags:["dark","popular"]},{id:"monokai",label:"Monokai",theme:W0,tags:["dark","classic"]},{id:"nord",label:"Nord",theme:q0,tags:["dark","minimal"]},{id:"solarized-light",label:"Solarized Light",theme:O0,tags:["light"]},{id:"solarized-dark",label:"Solarized Dark",theme:w0,tags:["dark"]},{id:"tokyo-night",label:"Tokyo Night",theme:B0,tags:["dark","popular"]},{id:"github",label:"GitHub",theme:D0,tags:["light","minimal"]},{id:"gruvbox",label:"Gruvbox",theme:x0,tags:["dark","warm"]},{id:"one-dark",label:"One Dark",theme:E0,tags:["dark","popular"]},{id:"catppuccin",label:"Catppuccin",theme:L0,tags:["dark","pastel"]},{id:"rose-pine",label:"Rose Pine",theme:A0,tags:["dark","elegant"]},{id:"kanagawa",label:"Kanagawa",theme:P0,tags:["dark","japanese"]}];var i={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"}},v={name:"default",colors:i,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)"}},N0={...v,name:"dark",colors:{...i,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 n{currentTheme=v;themes=new Map;constructor(){this.themes.set("default",v),this.themes.set("dark",N0);for(let X of l)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 o=new n;var R0={initializationStatus:"idle",initializationError:null,activeModal:"none",sessionSelectorData:void 0,modelEditorTarget:null,tasks:[],awaitingSecondCtrlC:!1,thinkingModeEnabled:!1,reasoningEffort:"off",serviceTier:"auto",responseVerbosity:"auto",communicationStyle:"auto",subagentProgress:null,subagentProgresses:{}},k=(X)=>({...R0,actions:{setInitializationStatus:(Z)=>{X((Y)=>({app:{...Y.app,initializationStatus:Z}}))},setInitializationError:(Z)=>{X((Y)=>({app:{...Y.app,initializationError:Z}}))},setActiveModal:(Z)=>{X((Y)=>({app:{...Y.app,activeModal:Z}}))},showSessionSelector:(Z,Y="resume")=>{X((Q)=>({app:{...Q.app,activeModal:"sessionSelector",sessionSelectorData:{intent:Y,sessions:Z}}}))},showModelEditWizard:(Z)=>{X((Y)=>({app:{...Y.app,activeModal:"modelEditWizard",modelEditorTarget:Z}}))},closeModal:()=>{X((Z)=>({app:{...Z.app,activeModal:"none",sessionSelectorData:void 0,modelEditorTarget:null}}))},setTasks:(Z)=>{X((Y)=>({app:{...Y.app,tasks:Z}}))},updateTask:(Z)=>{X((Y)=>({app:{...Y.app,tasks:Y.app.tasks.map((Q)=>Q.id===Z.id?Z:Q)}}))},setAwaitingSecondCtrlC:(Z)=>{X((Y)=>({app:{...Y.app,awaitingSecondCtrlC:Z}}))},setReasoningEffort:(Z)=>{X((Y)=>({app:{...Y.app,reasoningEffort:Z,thinkingModeEnabled:Z!=="off"}}))},setServiceTier:(Z)=>{X((Y)=>({app:{...Y.app,serviceTier:Z}}))},setResponseVerbosity:(Z)=>{X((Y)=>({app:{...Y.app,responseVerbosity:Z}}))},setCommunicationStyle:(Z)=>{X((Y)=>({app:{...Y.app,communicationStyle:Z}}))},setThinkingModeEnabled:(Z)=>{X((Y)=>({app:{...Y.app,thinkingModeEnabled:Z,reasoningEffort:Z?"auto":"off"}}))},toggleThinkingMode:()=>{X((Z)=>({app:{...Z.app,thinkingModeEnabled:!Z.app.thinkingModeEnabled,reasoningEffort:Z.app.thinkingModeEnabled?"off":"auto"}}))},startSubagentProgress:(Z,Y,Q)=>{X(($)=>({app:{...$.app,subagentProgresses:{...$.app.subagentProgresses,[Z]:{id:Z,type:Y,description:Q,status:"running",startTime:Date.now()}},subagentProgress:{id:Z,type:Y,description:Q,status:"running",startTime:Date.now()}}}))},updateSubagentTool:(Z,Y)=>{X((Q)=>{let $=Q.app.subagentProgresses[Z];if(!$)return Q;let G={...$,currentTool:Y};return{app:{...Q.app,subagentProgresses:{...Q.app.subagentProgresses,[Z]:G},subagentProgress:Q.app.subagentProgress?.id===Z?G:Q.app.subagentProgress}}})},completeSubagentProgress:(Z,Y)=>{X((Q)=>{let $=Q.app.subagentProgresses[Z];if(!$)return Q;let G={...$,status:Y?"completed":"failed",currentTool:void 0};return{app:{...Q.app,subagentProgresses:{...Q.app.subagentProgresses,[Z]:G},subagentProgress:Q.app.subagentProgress?.id===Z?G:Q.app.subagentProgress}}}),setTimeout(()=>{X((Q)=>{let $=Q.app.subagentProgresses[Z];if(!$||$.status==="running")return Q;let G={...Q.app.subagentProgresses};delete G[Z];let V=Object.values(G);return{app:{...Q.app,subagentProgresses:G,subagentProgress:Q.app.subagentProgress?.id===Z?V[V.length-1]??null:Q.app.subagentProgress}}})},1500)}}});var y0={isProcessing:!1,abortController:null,pendingCommands:[],recoveredSteeringCount:0},f=(X,Z)=>({...y0,actions:{setProcessing:(Y)=>{X((Q)=>({command:{...Q.command,isProcessing:Y},...!Y?{session:{...Q.session,providerRetry:null,providerStall:null}}:{}}))},createAbortController:()=>{let Y=Z().command.abortController;if(Y&&!Y.signal.aborted)Y.abort("interrupted-by-new-command");let Q=new AbortController;return X(($)=>({command:{...$.command,abortController:Q}})),Q},getAbortController:()=>{return Z().command.abortController},clearAbortController:(Y)=>{let Q=Z().command.abortController;if(Y!==void 0&&Q!==Y)return;X(($)=>({command:{...$.command,abortController:null}}))},abort:(Y)=>{let{abortController:Q}=Z().command;if(Q&&!Q.signal.aborted)Q.abort(Y??"user-cancel");X(($)=>({command:{...$.command,isProcessing:!1,pendingCommands:[]},session:{...$.session,providerRetry:null,providerStall:null}}))},enqueueCommand:(Y)=>{X((Q)=>({command:{...Q.command,pendingCommands:[...Q.command.pendingCommands,Y]}}))},dequeueCommand:()=>{let{pendingCommands:Y}=Z().command;if(Y.length===0)return;let[Q,...$]=Y;return X((G)=>({command:{...G.command,pendingCommands:$}})),Q},clearQueue:()=>{X((Y)=>({command:{...Y.command,pendingCommands:[]}}))},setRecoveredSteeringCount:(Y)=>{X((Q)=>({command:{...Q.command,recoveredSteeringCount:Math.max(0,Y)}}))}}});var T0={config:null},u=(X,Z)=>({...T0,actions:{setConfig:(Y)=>{A().configureModelProviders(Y.modelProviders,Y.models),X((Q)=>({config:{...Q.config,config:Y}}))},updateConfig:(Y)=>{let Q=Z().config.config;if(!Q)throw Error(`[ConfigSlice] Config not initialized. Cannot update: ${JSON.stringify(Y)}`);let $={...Q,...Y};if(Y.modelProviders||Y.models)A().configureModelProviders($.modelProviders,$.models);X((G)=>({config:{...G.config,config:$}}))}}});var S0={currentFocus:"main-input",previousFocus:null},p=(X)=>({...S0,actions:{setFocus:(Z)=>{X((Y)=>({focus:{...Y.focus,currentFocus:Z,previousFocus:Y.focus.currentFocus}}))},restorePreviousFocus:()=>{X((Z)=>({focus:{...Z.focus,currentFocus:Z.focus.previousFocus||"main-input",previousFocus:null}}))}}});function m(X,Z,Y,Q){let $=X.messages.find((V)=>V.id===Z);if($)return $;let G={id:Z,role:Y,content:"",timestamp:Q};return X.messages.push(G),G}function a(X,Z){let Y=Date.parse(Z.timestamp)||Date.now();switch(Z.type){case"message_created":return m(X,Z.data.messageId,Z.data.role,Y),X;case"part_created":case"part_updated":{let{messageId:Q,partType:$,payload:G,partId:V}=Z.data,J=X.messages.find((F)=>F.id===Q)??m(X,Q,"assistant",Y);if($==="text"){let F=G.text??"";X.streamingText.delete(V),J.content=F}else if($==="image")J.content=J.content?`${J.content}
|
|
2
|
-
[Image]`:"[Image]";return X}default:return X}}function s(X,Z){if(Z.channel!=="content")return X;let Y=X.messages.find((G)=>G.id===Z.messageId)??m(X,Z.messageId,"assistant",Date.now()),$=(X.streamingText.get(Z.partId)?.text??"")+Z.delta;return X.streamingText.set(Z.partId,{messageId:Z.messageId,text:$}),Y.content=$,X}function t(X,Z,Y,Q=0,$=0,G){let V=A(),J=G?V.models.getModel(G,X):V.models.getModels().find((K)=>K.id===X);if(!J)return 0;let F=J.cost,z=Z/1e6*F.input+Y/1e6*F.output+Q/1e6*F.cacheRead+$/1e6*F.cacheWrite;return Math.round(z*1e6)/1e6}var W={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 t0(X){let Z=[],Y=X.split(/\r?\n/),Q=!1,$=[],G=null,V=0,J=!1,F=[],z=[],K=!1,w=[],E=!1,j=[],H=0,U=!0;for(let O=0;O<Y.length;O++){let q=Y[O];if(K){if(q.match(W.diffEnd)){try{let B=JSON.parse(w.join(`
|
|
3
|
-
`));Z.push({type:"diff",content:"",diffData:{patch:B.patch,startLine:B.startLine,matchLine:B.matchLine}})}catch(B){Z.push({type:"text",content:w.join(`
|
|
4
|
-
`)})}K=!1,w=[],U=!1;continue}w.push(q);continue}if(q.match(W.diffStart)){K=!0,w=[],U=!1;continue}if(Q){let B=q.match(W.codeBlock),L=q.trim()==="```";if(B&&B[1])V++,$.push(q);else if(L)if(V>0)V--,$.push(q);else{let j0=$.join(`
|
|
5
|
-
`);Z.push({type:"code",content:j0,language:G||void 0}),Q=!1,$=[],G=null,V=0,U=!1}else $.push(q);continue}let S=q.match(W.codeBlock);if(S){Q=!0,G=S[1]||null,V=0,U=!1;continue}let N=q.match(W.table),z0=q.match(W.tableSeparator);if(N&&!J){if(O+1<Y.length){if(Y[O+1].match(W.tableSeparator)){J=!0,F=N[1].split("|").map((L)=>L.trim()).filter((L)=>L.length>0),z=[],U=!1;continue}}}if(J&&z0)continue;if(J&&N){let B=N[1].split("|").map((L)=>L.trim()).filter((L)=>L.length>0);while(B.length<F.length)B.push("");if(B.length>F.length)B.length=F.length;z.push(B);continue}if(J&&!N){if(F.length>0&&z.length>0)Z.push({type:"table",content:"",tableData:{headers:F,rows:z}});J=!1,F=[],z=[]}let h=q.match(W.blockquote);if(h){let B=h[1].length,L=h[2]||"";if(E&&B===H)j.push(L);else{if(E)Z.push({type:"blockquote",content:j.join(`
|
|
6
|
-
`),blockquoteLevel:H,blockquoteLines:[...j]});E=!0,H=B,j=[L]}U=!1;continue}if(E)Z.push({type:"blockquote",content:j.join(`
|
|
7
|
-
`),blockquoteLevel:H,blockquoteLines:[...j]}),E=!1,j=[],H=0;let M=q.match(W.heading);if(M){Z.push({type:"heading",content:M[2],level:M[1].length}),U=!1;continue}let I=q.match(W.ulItem);if(I){Z.push({type:"list",content:I[3],listType:"ul",marker:I[2],indentation:I[1].length}),U=!1;continue}let C=q.match(W.olItem);if(C){Z.push({type:"list",content:C[3],listType:"ol",marker:C[2],indentation:C[1].length}),U=!1;continue}if(q.match(W.hr)){Z.push({type:"hr",content:""}),U=!1;continue}if(q.trim().length===0){if(!U)Z.push({type:"empty",content:""}),U=!0;continue}let d=q.match(W.commandMessage);if(d){Z.push({type:"command-message",content:d[1]}),U=!1;continue}Z.push({type:"text",content:q}),U=!1}if(Q){let O=$.join(`
|
|
8
|
-
`);Z.push({type:"code",content:O,language:G||void 0})}if(J&&F.length>0&&z.length>0)Z.push({type:"table",content:"",tableData:{headers:F,rows:z}});if(E&&j.length>0)Z.push({type:"blockquote",content:j.join(`
|
|
9
|
-
`),blockquoteLevel:H,blockquoteLines:[...j]});while(Z.length>0&&Z[Z.length-1].type==="empty")Z.pop();return Z}var P=new Map;function I0(){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 C0(X){let Z=P.get(X);if(Z)return Z;let Y={state:I0(),blocks:[],pendingLine:"",finalized:!1};return P.set(X,Y),Y}function e(X){return X.endsWith("\r")?X.slice(0,-1):X}function Q0(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 g(X,Z){if(X.blockquoteLines.length>0)Z.push({type:"blockquote",content:X.blockquoteLines.join(`
|
|
10
|
-
`),blockquoteLevel:X.blockquoteLevel,blockquoteLines:[...X.blockquoteLines]});X.inBlockquote=!1,X.blockquoteLines=[],X.blockquoteLevel=0}function X0(X,Z){let Y=X.codeBlockContent.join(`
|
|
11
|
-
`);Z.push({type:"code",content:Y,language:X.codeBlockLang||void 0}),X.inCodeBlock=!1,X.codeBlockContent=[],X.codeBlockLang=null,X.codeBlockDepth=0,X.lastLineEmpty=!1}function c(X,Z,Y=!0){let{state:Q,blocks:$}=Z;if(Q.pendingTableHeader!==null){if(X.match(W.tableSeparator)){Q.inTable=!0,Q.tableHeaders=Q.pendingTableHeader.slice(1,-1).split("|").map((H)=>H.trim()).filter((H)=>H.length>0),Q.tableRows=[],Q.pendingTableHeader=null,Q.lastLineEmpty=!1;return}$.push({type:"text",content:Q.pendingTableHeader}),Q.pendingTableHeader=null,Q.lastLineEmpty=!1}if(Q.inDiff){if(X.match(W.diffEnd)){try{let H=JSON.parse(Q.diffContent.join(`
|
|
12
|
-
`));$.push({type:"diff",content:"",diffData:{patch:H.patch,startLine:H.startLine,matchLine:H.matchLine}})}catch(H){$.push({type:"text",content:Q.diffContent.join(`
|
|
13
|
-
`)})}Q.inDiff=!1,Q.diffContent=[],Q.lastLineEmpty=!1;return}Q.diffContent.push(X);return}if(X.match(W.diffStart)){Q.inDiff=!0,Q.diffContent=[],Q.lastLineEmpty=!1;return}if(Q.inCodeBlock){let H=X.match(W.codeBlock),U=X.trim()==="```";if(H&&H[1])Q.codeBlockDepth++,Q.codeBlockContent.push(X);else if(U)if(Q.codeBlockDepth>0)Q.codeBlockDepth--,Q.codeBlockContent.push(X);else X0(Q,$);else Q.codeBlockContent.push(X);return}let G=X.match(W.codeBlock);if(G){Q.inCodeBlock=!0,Q.codeBlockLang=G[1]||null,Q.codeBlockDepth=0,Q.lastLineEmpty=!1;return}let V=X.match(W.table),J=X.match(W.tableSeparator);if(V&&!Q.inTable){Q.pendingTableHeader=X;return}if(Q.inTable&&J)return;if(Q.inTable&&V){let H=V[1].split("|").map((U)=>U.trim()).filter((U)=>U.length>0);while(H.length<Q.tableHeaders.length)H.push("");if(H.length>Q.tableHeaders.length)H.length=Q.tableHeaders.length;Q.tableRows.push(H);return}if(Q.inTable&&!V){if(Q0(Q,$),Y){c(X,Z,!1);return}}let F=X.match(W.blockquote);if(F){let H=F[1].length,U=F[2]||"";if(Q.inBlockquote&&H===Q.blockquoteLevel)Q.blockquoteLines.push(U);else{if(Q.inBlockquote)g(Q,$);Q.inBlockquote=!0,Q.blockquoteLevel=H,Q.blockquoteLines=[U]}Q.lastLineEmpty=!1;return}if(Q.inBlockquote)g(Q,$);let z=X.match(W.heading);if(z){$.push({type:"heading",content:z[2],level:z[1].length}),Q.lastLineEmpty=!1;return}let K=X.match(W.ulItem);if(K){$.push({type:"list",content:K[3],listType:"ul",marker:K[2],indentation:K[1].length}),Q.lastLineEmpty=!1;return}let w=X.match(W.olItem);if(w){$.push({type:"list",content:w[3],listType:"ol",marker:w[2],indentation:w[1].length}),Q.lastLineEmpty=!1;return}if(X.match(W.hr)){$.push({type:"hr",content:""}),Q.lastLineEmpty=!1;return}if(X.trim().length===0){if(!Q.lastLineEmpty)$.push({type:"empty",content:""}),Q.lastLineEmpty=!0;return}let j=X.match(W.commandMessage);if(j){$.push({type:"command-message",content:j[1]}),Q.lastLineEmpty=!1;return}$.push({type:"text",content:X}),Q.lastLineEmpty=!1}function X1(X,Z){if(!X||!Z)return;let Y=C0(X);if(Y.finalized)return;let Q=Y.pendingLine+Z,$=Q.split(`
|
|
14
|
-
`),G=Q.endsWith(`
|
|
15
|
-
`),V=G?$:$.slice(0,-1);Y.pendingLine=G?"":$[$.length-1]??"";for(let J of V)c(e(J),Y)}function Y1(X){let Z=P.get(X);if(!Z||Z.finalized)return;if(Z.pendingLine)c(e(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)X0(Z.state,Z.blocks);if(Z.state.inTable)Q0(Z.state,Z.blocks);if(Z.state.inBlockquote)g(Z.state,Z.blocks);if(Z.state.inDiff)Z.blocks.push({type:"text",content:Z.state.diffContent.join(`
|
|
16
|
-
`)}),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 Z1(X){let Z=P.get(X);if(!Z||!Z.finalized)return null;return Z.blocks}function $1(X){let Z=P.get(X);if(!Z)return null;return Z.blocks}function b0(X){let Z=P.get(X);if(!Z)return null;let Y=[],Q=Z.state;if(Q.inDiff)Y.push("<<<DIFF>>>"),Y.push(...Q.diffContent);else if(Q.inCodeBlock){let $=Q.codeBlockLang?`\`\`\`${Q.codeBlockLang}`:"```";Y.push($),Y.push(...Q.codeBlockContent)}else if(Q.inTable){if(Q.tableHeaders.length>0){Y.push(`| ${Q.tableHeaders.join(" | ")} |`),Y.push(`| ${Q.tableHeaders.map(()=>"---").join(" | ")} |`);for(let $ of Q.tableRows)Y.push(`| ${$.join(" | ")} |`)}}else if(Q.inBlockquote){let $=">".repeat(Q.blockquoteLevel)+" ";for(let G of Q.blockquoteLines)Y.push($+G)}else if(Q.pendingTableHeader)Y.push(Q.pendingTableHeader);if(Z.pendingLine)Y.push(Z.pendingLine);return Y.length>0?Y:null}function G1(X){let Z=P.get(X);if(!Z)return null;let Y="text";if(Z.state.inDiff)Y="diff";else if(Z.state.inCodeBlock)Y="code";else if(Z.state.inTable||Z.state.pendingTableHeader)Y="table";let Q=b0(X);if(!Q||Q.length===0)return null;return{lines:Q,mode:Y}}function V1(X){P.delete(X)}function b(){P.clear()}var Y0=2000,T=[];function h0(){let X=T;return T=[],X}var y={messages:[],streamingText:new Map};function M0(){y={messages:[],streamingText:new Map}}var V0={inputTokens:0,outputTokens:0,totalTokens:0,maxContextTokens:0,totalInputTokens:0,totalOutputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,turnCount:0,estimatedCostUsd:0},Z0={sessionId:G0("tui"),workspaceRoot:$0(),messages:[],restoredContextMessages:null,restoredVisibleMessageCount:0,isCompacting:!1,currentCommand:null,error:null,isActive:!0,tokenUsage:{...V0},currentThinkingContent:null,thinkingExpanded:!1,clearCount:0,historyExpanded:!1,expandedMessageCount:100,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,finalizingStreamingMessageId:null,providerRetry:null,providerStall:null},r=(X,Z)=>({...Z0,actions:{addMessage:(Y)=>{X((Q)=>({session:{...Q.session,messages:[...Q.session.messages,Y],error:null}}))},addUserMessage:(Y)=>{let Q={id:`user-${Date.now()}-${Math.random()}`,role:"user",content:Y,timestamp:Date.now()};Z().session.actions.addMessage(Q)},addAssistantMessage:(Y,Q)=>{let $={id:`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:Y,timestamp:Date.now(),thinkingContent:Q};Z().session.actions.addMessage($)},replaceLastAssistantMessage:(Y)=>{X((Q)=>{let $=Q.session.messages.findLastIndex((G)=>G.role==="assistant");if($<0)return{session:{...Q.session,messages:[...Q.session.messages,{id:`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:Y,timestamp:Date.now()}]}};return{session:{...Q.session,messages:Q.session.messages.map((G,V)=>V===$?{...G,content:Y}:G)}}})},addAssistantMessageAndClearThinking:(Y)=>{let Q=Z().session.currentThinkingContent,$={id:`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:Y,timestamp:Date.now(),thinkingContent:Q||void 0};X((G)=>({session:{...G.session,messages:[...G.session.messages,$],currentThinkingContent:null,error:null}}))},addToolMessage:(Y,Q)=>{let $={id:`tool-${Date.now()}-${Math.random()}`,role:"tool",content:Y,timestamp:Date.now(),metadata:Q};Z().session.actions.addMessage($)},setCompacting:(Y)=>{X((Q)=>({session:{...Q.session,isCompacting:Y}}))},setCommand:(Y)=>{X((Q)=>({session:{...Q.session,currentCommand:Y}}))},setError:(Y)=>{X((Q)=>({session:{...Q.session,error:Y}}))},clearMessages:()=>{b(),X((Y)=>({session:{...Y.session,messages:[],restoredContextMessages:null,restoredVisibleMessageCount:0,error:null,clearCount:Y.session.clearCount+1}}))},setCompactedContext:(Y)=>{X((Q)=>({session:{...Q.session,restoredContextMessages:[...Y],restoredVisibleMessageCount:Q.session.messages.length}}))},resetSession:()=>{b(),X((Y)=>({session:{...Y.session,...Z0,sessionId:Y.session.sessionId,isActive:!0}}))},restoreSession:(Y,Q,$,G)=>{b(),X((V)=>({session:{...V.session,sessionId:Y,workspaceRoot:G??V.session.workspaceRoot,messages:Q,restoredContextMessages:$??null,restoredVisibleMessageCount:$?Q.length:0,error:null,isActive:!0}}))},updateTokenUsage:(Y)=>{X((Q)=>{let $=Q.session.tokenUsage,{costUsd:G,...V}=Y,J=Math.max(0,Y.inputTokens??0),F=Math.max(0,Y.outputTokens??0),z=Math.max(0,Y.cacheReadTokens??0),K=Math.max(0,Y.cacheWriteTokens??0),w=$.totalInputTokens+J,E=$.totalOutputTokens+F,j=$.cacheReadTokens+z,H=$.cacheWriteTokens+K,U=Q.config?.config,O=U?.models?.find((N)=>N.id===U.currentModelId),q=O?.model??"",S=G??t(q,Math.max(0,J-z-K),F,z,K,O?.provider);return{session:{...Q.session,tokenUsage:{...$,...V,totalInputTokens:w,totalOutputTokens:E,cacheReadTokens:j,cacheWriteTokens:H,estimatedCostUsd:$.estimatedCostUsd+Math.max(0,S)}}}})},resetContextUsage:()=>{X((Y)=>({session:{...Y.session,tokenUsage:{...Y.session.tokenUsage,inputTokens:0,outputTokens:0,totalTokens:0}}}))},resetTokenUsage:()=>{X((Y)=>({session:{...Y.session,tokenUsage:{...V0}}}))},setCurrentThinkingContent:(Y)=>{if(Z().session.currentThinkingContent===Y)return;X((Q)=>({session:{...Q.session,currentThinkingContent:Y}}))},appendThinkingContent:(Y)=>{X((Q)=>({session:{...Q.session,currentThinkingContent:(Q.session.currentThinkingContent||"")+Y}}))},setThinkingExpanded:(Y)=>{X((Q)=>({session:{...Q.session,thinkingExpanded:Y}}))},toggleThinkingExpanded:()=>{X((Y)=>({session:{...Y.session,thinkingExpanded:!Y.session.thinkingExpanded}}))},setHistoryExpanded:(Y)=>{X((Q)=>({session:{...Q.session,historyExpanded:Y}}))},toggleHistoryExpanded:()=>{X((Y)=>({session:{...Y.session,historyExpanded:!Y.session.historyExpanded}}))},setExpandedMessageCount:(Y)=>{X((Q)=>({session:{...Q.session,expandedMessageCount:Y}}))},incrementClearCount:()=>{X((Y)=>({session:{...Y.session,clearCount:Y.session.clearCount+1}}))},startStreamingAssistantMessage:()=>{let Y=`assistant-${Date.now()}-${Math.random()}`,Q={id:Y,role:"assistant",content:"",timestamp:Date.now()};return T=[],X(($)=>({session:{...$.session,messages:[...$.session.messages,Q],currentStreamingMessageId:Y,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,error:null}})),Y},appendAssistantContent:(Y)=>{let Q=Z().session.currentStreamingMessageId,$=Q??`assistant-${Date.now()}-${Math.random()}`;return T.push(Y),X((G)=>{let V=(O)=>O.endsWith("\r")?O.slice(0,-1):O,J=Q?G.session.currentStreamingLines:[],F=Q?G.session.currentStreamingTail:"",z=Q?G.session.currentStreamingLineCount:0,K=Q?G.session.currentStreamingVersion:0,E=(F+Y).split(`
|
|
17
|
-
`),j=E.slice(0,-1).map(V),H=V(E[E.length-1]??""),U=J;if(j.length>0){if(U=[...J,...j],U.length>Y0){let O=U.length-Y0;U=U.slice(O)}}return{session:{...G.session,currentStreamingMessageId:$,currentStreamingLines:U,currentStreamingTail:H,currentStreamingLineCount:z+j.length,currentStreamingVersion:K+1,error:null}}}),$},finalizeStreamingMessage:(Y,Q)=>{let $=h0();X((G)=>{let V=G.session.currentStreamingMessageId,F=$.join("")+(Y||""),z=(G.session.currentThinkingContent||"")+(Q||"");if(F.length>0){let K={id:V||`assistant-${Date.now()}-${Math.random()}`,role:"assistant",content:F,timestamp:Date.now(),thinkingContent:z||void 0};return{session:{...G.session,messages:[...G.session.messages,K],currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,currentThinkingContent:null,finalizingStreamingMessageId:K.id}}}return{session:{...G.session,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,currentThinkingContent:null,finalizingStreamingMessageId:null}}})},clearFinalizingStreamingMessageId:()=>{X((Y)=>({session:{...Y.session,finalizingStreamingMessageId:null}}))},discardStreamingMessage:()=>{T=[],X((Y)=>({session:{...Y.session,currentStreamingMessageId:null,currentStreamingChunks:[],currentStreamingLines:[],currentStreamingTail:"",currentStreamingLineCount:0,currentStreamingVersion:0,finalizingStreamingMessageId:null}}))},setProviderRetry:(Y)=>{X((Q)=>({session:{...Q.session,providerRetry:Y}}))},setProviderStall:(Y)=>{X((Q)=>({session:{...Q.session,providerStall:Y}}))},applyCommittedEvent:(Y)=>{a(y,Y),X((Q)=>({session:{...Q.session,messages:[...y.messages],error:null}}))},applyStreamingDelta:(Y)=>{s(y,Y),X((Q)=>({session:{...Q.session,messages:[...y.messages]}}))},resetConversationProjection:()=>{M0()}}});var u0=f0()(v0(k0((...X)=>({session:r(...X),app:k(...X),config:u(...X),focus:p(...X),command:f(...X)})),{name:"BladeStore",enabled:!0})),_=()=>u0.getState(),y1=()=>_().session.actions,T1=()=>_().app.actions,S1=()=>_().session.messages,x=()=>_().config.config,R=null;async function I1(){if(x()!==null)return;if(R)return R;return R=(async()=>{try{let Y=await U0.getInstance().initialize();_().config.actions.setConfig(Y)}catch(Z){throw R=null,Error(`[FAIL] Store 未初始化且无法自动初始化
|
|
18
|
-
|
|
19
|
-
`+`原因: ${Z instanceof Error?Z.message:"未知错误"}
|
|
20
|
-
|
|
21
|
-
`+`请确保:
|
|
22
|
-
`+`1. 配置文件格式正确 (~/.blade/config.json)
|
|
23
|
-
`+`2. 运行 blade 进行首次配置
|
|
24
|
-
`+"3. 配置文件权限正确")}finally{R=null}})(),R}var C1=()=>_().config.config?.models??[],b1=()=>{let X=x();if(!X)return;let Z=X.currentModelId;return X.models.find((Q)=>Q.id===Z)??X.models[0]},h1=(X)=>{let Z=x();if(!Z)return;return Z.models.find((Y)=>Y.id===X)},M1=()=>_().config.config?.mcpServers??{},v1=()=>_().app.thinkingModeEnabled,k1=()=>_().app.reasoningEffort,f1=()=>_().app.serviceTier,u1=()=>_().app.responseVerbosity,p1=()=>_().app.communicationStyle,F0=()=>({setPermissionMode:async(X)=>{_().config.actions.updateConfig({permissionMode:X})},setTheme:async(X,Z={})=>{try{o.setTheme(X)}catch{return}_().config.actions.updateConfig({theme:X}),await D().save({theme:X},{scope:"global",...Z})},setLanguage:async(X,Z={})=>{_().config.actions.updateConfig({language:X}),await D().save({language:X},{scope:"global",...Z})},setDebug:async(X,Z={})=>{_().config.actions.updateConfig({debug:X}),await D().save({debug:X},{scope:"global",...Z})},setTemperature:async(X,Z={})=>{_().config.actions.updateConfig({temperature:X}),await D().save({temperature:X},{scope:"global",...Z})},updateConfig:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");let Q={...Y};_().config.actions.updateConfig(X);try{await D().save(X,Z)}catch($){throw _().config.actions.setConfig(Q),$}},flush:async()=>{await D().flush()},appendPermissionAllowRule:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");let Q=Y.permissions?.allow||[];if(!Q.includes(X)){let $=[...Q,X];_().config.actions.updateConfig({permissions:{...Y.permissions,allow:$}})}await D().appendPermissionRule(X,Z)},appendLocalPermissionAllowRule:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");let Q=Y.permissions?.allow||[];if(!Q.includes(X)){let $=[...Q,X];_().config.actions.updateConfig({permissions:{...Y.permissions,allow:$}})}await D().appendLocalPermissionRule(X,Z)},setCurrentModel:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");if(!Y.models.find(($)=>$.id===X))throw Error(`Model not found: ${X}`);_().config.actions.updateConfig({currentModelId:X}),await D().save({currentModelId:X},{scope:"global",...Z})},addModel:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");let Q="id"in X?X:{id:J0(),...X};if(Y.models.find((J)=>J.provider===Q.provider&&J.model===Q.model))throw Error(`Model already configured: ${Q.provider}/${Q.model}`);let V={models:[...Y.models,Q]};if(Y.models.length===0)V.currentModelId=Q.id;return _().config.actions.updateConfig(V),await D().save(V,{scope:"global",...Z}),Q},addModelWithProvider:async(X,Z,Y={})=>{let Q=x();if(!Q)throw Error("Config not initialized");let $=X.provider;if(Q.modelProviders[$])throw Error(`Model provider already configured: ${$}`);let G="id"in X?X:{id:J0(),...X};if(Q.models.find((K)=>K.provider===$&&K.model===G.model))throw Error(`Model already configured: ${$}/${G.model}`);let J=Q,F=[...Q.models,G],z={modelProviders:{...Q.modelProviders,[$]:Z},models:F};if(Q.models.length===0)z.currentModelId=G.id;A().registerModelProvider($,Z,[G.model]),_().config.actions.updateConfig(z);try{return await D().save(z,{scope:"global",...Y}),G}catch(K){throw _().config.actions.setConfig(J),A().configureModelProviders(J.modelProviders,J.models),K}},updateModelWithProvider:async(X,Z,Y,Q={})=>{let $=x();if(!$)throw Error("Config not initialized");let G=Z.provider;if(!G)throw Error("Model provider is required");if($.modelProviders[G])throw Error(`Model provider already configured: ${G}`);let V=$.models.findIndex((w)=>w.id===X);if(V===-1)throw Error(`Model not found: ${X}`);let J={...$.models[V],...Z};if(!J.model)throw Error("Model ID is required");let F=$,z=[...$.models];z[V]=J;let K={modelProviders:{...$.modelProviders,[G]:Y},models:z};A().registerModelProvider(G,Y,[J.model]),_().config.actions.updateConfig(K);try{await D().save(K,{scope:"global",...Q})}catch(w){throw _().config.actions.setConfig(F),A().configureModelProviders(F.modelProviders,F.models),w}},updateModelProvider:async(X,Z,Y={})=>{let Q=x();if(!Q)throw Error("Config not initialized");if(!Q.modelProviders[X])throw Error(`Model provider not found: ${X}`);let $=Q.models.filter((G)=>G.provider===X).map((G)=>G.model);A().registerModelProvider(X,Z,$),await F0().updateConfig({modelProviders:{...Q.modelProviders,[X]:Z}},{scope:"global",immediate:!0,...Y})},removeModelProvider:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");if(!Y.modelProviders[X])throw Error(`Model provider not found: ${X}`);let Q=Y.models.filter((j)=>j.provider===X),$=Y.models.filter((j)=>j.fallbackModels?.some((H)=>H.provider===X));if(!Z.removeModels&&(Q.length>0||$.length>0))throw Error(`Model provider is still referenced by ${Q.length} model(s) and ${$.length} fallback configuration(s)`);let G=Q.map((j)=>j.id),V=Y.models.filter((j)=>j.provider!==X).map((j)=>{let H=j.fallbackModels?.filter((q)=>q.provider!==X),{fallbackModels:U,...O}=j;return H?.length?{...O,fallbackModels:H}:O});if(V.length===0)throw Error("Cannot remove the provider that owns the only model");let J={...Y.modelProviders};delete J[X];let F={modelProviders:J,models:V};if(G.includes(Y.currentModelId))F.currentModelId=V[0].id;let z=A(),K=await z.credentials.read(X);await z.credentials.delete(X);let{removeModels:w,...E}=Z;try{return await F0().updateConfig(F,{scope:"global",immediate:!0,...E}),{removedModelIds:G}}catch(j){if(K)await z.credentials.modify(X,async()=>K);throw j}},updateModel:async(X,Z,Y={})=>{let Q=x();if(!Q)throw Error("Config not initialized");let $=Q.models.findIndex((V)=>V.id===X);if($===-1)throw Error(`Model not found: ${X}`);let G=[...Q.models];G[$]={...G[$],...Z},_().config.actions.updateConfig({models:G}),await D().save({models:G},{scope:"global",...Y})},removeModel:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");if(Y.models.length===1)throw Error("Cannot remove the only model");let Q=Y.models.filter((G)=>G.id!==X),$={models:Q};if(Y.currentModelId===X)$.currentModelId=Q[0].id;_().config.actions.updateConfig($),await D().save($,{scope:"global",...Z})},addMcpServer:async(X,Z,Y={})=>{let Q=x();if(!Q)throw Error("Config not initialized");let $=Q.mcpServers??{},G=H0(Z),V={...Z,...G?{oauth:G}:{}},J={...$,[X]:V};_().config.actions.updateConfig({mcpServers:J}),await D().save({mcpServers:J},{scope:"project",...Y})},removeMcpServer:async(X,Z={})=>{let Y=x();if(!Y)throw Error("Config not initialized");let $={...Y.mcpServers??{}};delete $[X],_().config.actions.updateConfig({mcpServers:$}),await D().save({mcpServers:$},{scope:"project",...Z})}});
|
|
25
|
-
export{l as Lc,o as Mc,W as Nc,t0 as Oc,X1 as Pc,Y1 as Qc,Z1 as Rc,$1 as Sc,G1 as Tc,V1 as Uc,u0 as Vc,_ as Wc,y1 as Xc,T1 as Yc,S1 as Zc,x as _c,I1 as $c,C1 as ad,b1 as bd,h1 as cd,M1 as dd,v1 as ed,k1 as fd,f1 as gd,u1 as hd,p1 as id,F0 as jd};
|
package/dist/chunk-n54tp9wr.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$c as g,Vc as a,Wc as b,Xc as c,Yc as d,Zc as e,_c as f,ad as h,bd as i,cd as j,dd as k,ed as l,fd as m,gd as n,hd as o,id as p,jd as q}from"./chunk-n00mknme.js";import"./chunk-qg87zezq.js";import"./chunk-xjqcc0nt.js";import"./chunk-w56y2pvk.js";import"./chunk-edqtngzr.js";import"./chunk-vmzf4nvh.js";import"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-pccn8ndq.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";export{a as vanillaStore,c as sessionActions,l as getThinkingModeEnabled,b as getState,n as getServiceTier,o as getResponseVerbosity,m as getReasoningEffort,j as getModelById,e as getMessages,k as getMcpServers,i as getCurrentModel,f as getConfig,p as getCommunicationStyle,h as getAllModels,g as ensureStoreInitialized,q as configActions,d as appActions};
|
package/dist/chunk-pq7tk058.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{m as Gq,n as Vq,o as Xq,p as Bq,q as Kq}from"./chunk-t327cwnb.js";import{s as $q}from"./chunk-phzy5kqq.js";import{F as a,H as o,I as n,K as y,L as t}from"./chunk-nqpcwa0k.js";import"./chunk-yaxapgbm.js";import"./chunk-3fkj59nv.js";import{$a as s,Ma as i,ib as r}from"./chunk-0568ndm9.js";import"./chunk-4dnvydyv.js";import{Xb as S,fc as h}from"./chunk-3qmwt188.js";import"./chunk-s4mqw4wa.js";import{yc as qq}from"./chunk-k2b95m2p.js";import{Ac as Qq,Bc as Yq,Cc as Zq}from"./chunk-bvwq5wth.js";import{Dc as e}from"./chunk-ag07wwer.js";import"./chunk-j8ggq1z4.js";import{bd as v}from"./chunk-n00mknme.js";import"./chunk-qg87zezq.js";import"./chunk-xjqcc0nt.js";import"./chunk-f8zz4se0.js";import"./chunk-xzdpdwhz.js";import"./chunk-m27w377p.js";import"./chunk-d2kzet1k.js";import"./chunk-wjqctwyr.js";import"./chunk-5xph8r1k.js";import"./chunk-5sw8j9ae.js";import"./chunk-18n15nn8.js";import"./chunk-86zsjamb.js";import"./chunk-6pb6zs96.js";import"./chunk-w56y2pvk.js";import"./chunk-edqtngzr.js";import{df as m,ef as l}from"./chunk-vmzf4nvh.js";import{hf as u,jf as Q,kf as w,mf as j}from"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import{tf as I}from"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-pccn8ndq.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";import nq from"yargs";import{hideBin as tq}from"yargs/helpers";var g=1;function K(Y){return Q.Object({event_version:Q.Literal(g),...Y})}var Uq=K({type:Q.Literal("content_delta"),delta:Q.String()}),Rq=K({type:Q.Literal("thinking_delta"),delta:Q.String()}),Mq=K({type:Q.Literal("thinking"),content:Q.String()}),Pq=K({type:Q.Literal("stream_end")}),fq=K({type:Q.Literal("content"),content:Q.String()}),Nq=K({type:Q.Literal("structured_output"),output:Q.Record(Q.String(),Q.Unknown()),schema_digest:Q.String({pattern:"^[a-f0-9]{64}$"})}),T=j(["readonly","write","execute"]),Eq=K({type:Q.Literal("tool_start"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T)}),xq=K({type:Q.Literal("tool_progress"),tool_name:Q.String(),message:Q.String(),progress:Q.Optional(Q.Number()),total:Q.Optional(Q.Number())}),Iq=K({type:Q.Literal("tool_result"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T),success:Q.Optional(Q.Boolean()),error_type:Q.Optional(Q.String()),error_message:Q.Optional(Q.String())}),Jq=K({type:Q.Literal("mcp_catalog_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Lq=K({type:Q.Literal("mcp_content_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),content_kind:j(["resources","resource_templates","prompts"]),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Wq=K({type:Q.Literal("mcp_resource_updated"),revision:Q.Integer({minimum:1}),server_name:Q.String(),uri:Q.String()}),Sq=K({type:Q.Literal("mcp_connection_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),phase:j(["reconnecting","recovered","failed"]),reason:Q.String(),attempt:Q.Integer({minimum:0}),max_attempts:Q.Integer({minimum:0}),next_retry_at:Q.Optional(Q.Integer({minimum:0})),error:Q.Optional(Q.String())}),Oq=K({type:Q.Literal("mcp_log"),revision:Q.Integer({minimum:1}),server_name:Q.String(),level:j(["debug","info","notice","warning","error","critical","alert","emergency"]),logger:Q.Optional(Q.String()),message:Q.String(),projected_bytes:Q.Integer({minimum:0}),data_sha256:Q.String(),truncated:Q.Boolean(),details_omitted:Q.Boolean(),timestamp:Q.Integer({minimum:0}),synthetic:Q.Optional(Q.Boolean())}),hq=K({type:Q.Literal("mcp_instructions_changed"),revision:Q.Integer({minimum:0}),server_name:Q.String(),action:j(["added","removed"]),reason:j(["snapshot","connection","disconnection"]),text:Q.Optional(Q.String()),source_bytes:Q.Optional(Q.Integer({minimum:0})),projected_bytes:Q.Optional(Q.Integer({minimum:0})),sha256:Q.Optional(Q.String()),truncated:Q.Optional(Q.Boolean()),details_omitted:Q.Optional(Q.Boolean())}),Cq=K({type:Q.Literal("mcp_task_changed"),revision:Q.Integer({minimum:0}),task_id:Q.String(),server_name:Q.String(),tool_name:Q.String(),status:j(["working","input_required","interrupted","completed","failed","cancelled"]),status_message:Q.Optional(Q.String()),created_at:Q.Integer({minimum:0}),updated_at:Q.Integer({minimum:0}),completed_at:Q.Optional(Q.Integer({minimum:0})),has_result:Q.Boolean(),error:Q.Optional(Q.String())}),kq=K({type:Q.Literal("project_rules_loaded"),files:Q.Array(Q.Object({id:Q.String(),relative_path:Q.String(),source:j(["project","local"]),conditional:Q.Boolean(),content_sha256:Q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:Q.Array(Q.String()),blocked_write:Q.Boolean()}),Fq=K({type:Q.Literal("user_shell_started"),execution_id:Q.String(),command:Q.String(),auxiliary:Q.Boolean()}),wq=K({type:Q.Literal("user_shell_output"),execution_id:Q.String(),stream:j(["stdout","stderr"]),chunk:Q.String(),stream_truncated:Q.Boolean()}),yq=K({type:Q.Literal("user_shell_completed"),execution_id:Q.String(),message_id:Q.String(),status:j(["completed","failed","aborted","timed_out","spawn_error"]),exit_code:Q.Union([Q.Integer(),Q.Null()]),duration_ms:Q.Number({minimum:0}),stdout:Q.String(),stderr:Q.String(),truncated:Q.Boolean(),auxiliary:Q.Boolean()}),gq=K({type:Q.Literal("phase"),phase:j(["turn","searching","inspecting","target_hit","executing","completed"]),status:j(["ongoing","hit","done"]),message:Q.String(),turn:Q.Optional(Q.Number()),tool_name:Q.Optional(Q.String()),target:Q.Optional(Q.String())}),Tq=K({type:Q.Literal("tool_detail"),tool_name:Q.String(),detail:Q.String()}),cq=K({type:Q.Literal("task_update"),tasks:Q.Array(y)}),dq=K({type:Q.Literal("goal"),state:j(["updated","cleared"]),goal_id:Q.Optional(Q.String()),status:Q.Optional(j(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"])),verification_attempt:Q.Optional(Q.Integer({minimum:1})),verification_status:Q.Optional(j(["pending","pass","fail","partial"])),verifier_session_id:Q.Optional(Q.String()),verification_evidence_sha256:Q.Optional(Q.String({pattern:"^[a-f0-9]{64}$"}))}),pq=K({type:Q.Literal("subagent"),state:j(["spawned","completed"]),session_id:Q.String(),subagent_type:Q.Optional(Q.String()),success:Q.Optional(Q.Boolean()),summary:Q.Optional(Q.String()),verification_verdict:Q.Optional(j(["pass","fail","partial"])),resumed_from:Q.Optional(Q.String()),root_agent_id:Q.Optional(Q.String()),resume_depth:Q.Optional(Q.Integer({minimum:0}))}),mq=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())}),uq=K({type:Q.Literal("compacting"),state:j(["started","completed"]),reason:Q.Optional(j(["threshold","context_limit","turn_limit","manual"])),strategy:Q.Optional(j(["llm","fallback","snip"])),outcome:Q.Optional(j(["completed","fallback","failed"])),pre_tokens:Q.Optional(Q.Number({minimum:0})),post_tokens:Q.Optional(Q.Number({minimum:0}))}),lq=K({type:Q.Literal("provider_retry"),phase:j(["scheduled","attempt","recovered","exhausted"]),attempt:Q.Integer({minimum:0}),max_retries:Q.Integer({minimum:0}),reason:j(["rate_limit","server_error","timeout","transport","stream_closed"]),status_code:Q.Optional(Q.Integer({minimum:100,maximum:599})),delay_ms:Q.Optional(Q.Integer({minimum:0})),next_retry_at:Q.Optional(Q.Integer({minimum:0}))}),vq=K({type:Q.Literal("provider_stall"),phase:j(["detected","recovered"]),stall_count:Q.Integer({minimum:1}),duration_ms:Q.Integer({minimum:0}),warning_after_ms:Q.Integer({minimum:1}),timeout_ms:Q.Integer({minimum:1}),output_started:Q.Boolean()}),iq=K({type:Q.Literal("turn_limit"),turns_count:Q.Number(),action:Q.Literal("continue")}),sq=K({type:Q.Literal("task_session"),session_id:Q.String(),project_path:Q.String(),source_project_path:Q.String(),isolation:j(["local","worktree"]),worktree_branch:Q.Optional(Q.String()),base_commit:Q.Optional(Q.String())}),rq=K({type:Q.Literal("task_admission"),state:j(["queued","running"]),queue_position:Q.Optional(Q.Integer({minimum:1})),queue_depth:Q.Integer({minimum:0}),in_flight:Q.Integer({minimum:0}),max_concurrent_tasks:Q.Integer({minimum:1})}),aq=K({type:Q.Literal("output"),content:Q.String(),exit_code:Q.Number()}),oq=K({type:Q.Literal("error"),message:Q.String()}),zQ=w(Q.Union([Uq,Rq,Mq,Pq,fq,Nq,Eq,xq,Iq,Jq,Lq,Wq,Sq,Oq,hq,Cq,kq,Fq,wq,yq,gq,Tq,cq,dq,pq,mq,uq,lq,vq,iq,sq,rq,aq,oq]));function c(Y,Z){return{event_version:g,type:Y,...Z}}function eq(Y){if(Y?.signal)return{signal:Y.signal,dispose:()=>{return}};let Z=new AbortController,H=()=>Z.abort("interrupt");return process.once("SIGINT",H),process.once("SIGTERM",H),{signal:Z.signal,dispose:()=>{process.removeListener("SIGINT",H),process.removeListener("SIGTERM",H)}}}var qQ=j(["text","jsonl"]),QQ=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:l}),(Y)=>Y===-1||Y>0,()=>"must be -1 or a positive integer")),permissionMode:Q.Optional(Q.Enum(m)),mcpConfig:Q.Optional(Q.Array(Q.String())),strictMcpConfig:Q.Optional(Q.Boolean()),sessionId:Q.Optional(Q.String()),allowedTools:Q.Optional(Q.Array(Q.String())),disallowedTools:Q.Optional(Q.Array(Q.String())),agents:Q.Optional(Q.String()),continue:Q.Optional(Q.Boolean()),resume:Q.Optional(Q.Union([Q.String(),Q.Boolean()])),forkSession:Q.Optional(Q.Boolean()),taskIsolation:Q.Optional(j(["local","worktree"])),outputFormat:Q.Optional(qQ),jsonSchema:Q.Optional(Q.String()),outputSchema:Q.Optional(Q.String())});class Dq{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 YQ(Y){return Y.issues.map((Z)=>`${Z.path.join(".")||"options"}: ${Z.message}`).join("; ")}function ZQ(Y){let Z=u(QQ,Y);if(!Z.success)throw Error(`Invalid headless options: ${YQ(Z.error)}`);return Z.data}function $Q(Y){return Y.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",(Z)=>Z.positional("message",{describe:"Message to process",type:"string"}).option("headless",{type:"boolean",describe:"Run full agent loop without Ink UI and print events to the terminal"}).option("model",{describe:"Model ID for this run",type:"string"}).option("system-prompt",{describe:"Replace the default system prompt",type:"string"}).option("append-system-prompt",{describe:"Append a system prompt to the default system prompt",type:"string"}).option("max-turns",{alias:["maxTurns"],describe:"Maximum conversation turns (-1: unlimited, N>0: limit to N turns)",type:"number"}).option("output-format",{alias:["outputFormat"],choices:["text","jsonl"],describe:"Headless output format",type:"string"}).option("json-schema",{alias:["jsonSchema"],describe:"Inline JSON Schema for the structured final response",type:"string"}).option("output-schema",{alias:["outputSchema"],describe:"Path to a JSON Schema file for the structured final response",type:"string"}).option("task-isolation",{alias:["taskIsolation"],choices:["local","worktree"],describe:"Dispatch a new durable task in the selected workspace mode",type:"string"}),async(Z)=>{if(!Z.headless)return;let H=await DQ(Z);process.exit(H)})}function D(Y,Z=""){Y.write(`${Z}
|
|
2
|
-
`)}function GQ(Y){return`[task] [${Y.status}] ${Y.subject}`}function VQ(){return{requestConfirmation:async(Y)=>Y.type==="mcpElicitation"?{approved:!1,reason:"headless-mcp-elicitation-unavailable",elicitation:{action:"cancel"}}:Y.type==="mcpSampling"?{approved:!1,reason:"headless-mcp-sampling-unavailable"}:{approved:!0,reason:"headless-auto-approved",scope:"session"}}}function XQ(Y){if(!(Y instanceof Error))return"Unknown error";let V=Y.lastError??Y;if(V.responseBody)try{let b=JSON.parse(V.responseBody)?.error?.message;if(b)return V.statusCode?`${b} (HTTP ${V.statusCode})`:b}catch{}let q=Y.message.match(/Last error:\s*(.+)$/);if(q)return q[1];return Y.message}function BQ(Y){return Y==="jsonl"?"jsonl":"text"}function d(Y,Z){let H=(...V)=>{for(let q of V){let $=Z[q];if(typeof $==="string"&&$.trim()!=="")return $}return};switch(Y){case"Read":case"Edit":case"Write":case"UndoEdit":return H("file_path");case"ApplyPatch":return"multi-file patch";case"NotebookEdit":return H("notebook_path");case"Grep":return H("path","pattern");case"Glob":return H("pattern");case"WebFetch":return H("url");case"WebSearch":return H("query");case"Bash":return H("command","description");case"Task":return H("description");case"LSP":return H("filePath","operation");case"EnterWorktree":return H("name");case"ExitWorktree":return H("action");default:return}}function KQ(Y,Z,H,V){let q=new Set(["Glob","Grep","WebSearch","LS"]),$=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","ApplyPatch","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Y)&&!V.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${Z}`,shouldLockTarget:!0};if(V.targetLocked)return{phase:"executing",status:"hit",message:H?`Working within target: ${Z}`:`Executing: ${Z}`,shouldLockTarget:!1};if(q.has(Y))return{phase:"searching",status:"ongoing",message:`Still searching: ${Z}`,shouldLockTarget:!1};if($.has(Y))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${Z}`,shouldLockTarget:!1};return{phase:"executing",status:V.targetLocked?"hit":"ongoing",message:`Executing: ${Z}`,shouldLockTarget:!1}}function p(Y,Z,H=!1){let V=(q,$)=>{Y.stdout.write(`${JSON.stringify(c(q,$))}
|
|
3
|
-
`)};return{contentDelta(q){if(Z==="jsonl"){V("content_delta",{delta:q});return}if(H)return;Y.stdout.write(q)},thinkingDelta(q,$){if(Z==="jsonl")return V("thinking_delta",{delta:q}),$;if(!$)Y.stderr.write("[thinking] ");return Y.stderr.write(q),!0},thinking(q){if(Z==="jsonl"){V("thinking",{content:q});return}D(Y.stderr,`[thinking] ${q}`)},streamEnd(q,$){if(Z==="jsonl"){V("stream_end",{});return}if($)Y.stderr.write(`
|
|
4
|
-
`);if(q)Y.stdout.write(`
|
|
5
|
-
`)},content(q){if(Z==="jsonl"){V("content",{content:q});return}D(Y.stdout,q)},structuredOutput(q){if(Z==="jsonl"){V("structured_output",{output:q.output,schema_digest:q.schemaDigest});return}D(Y.stdout,JSON.stringify(q.output))},toolStart(q,$,b,z){if(Z==="jsonl"){V("tool_start",{tool_name:q,summary:$,target:b,tool_kind:z});return}D(Y.stderr,`[tool:start] ${$}`)},toolProgress(q,$,b,z){if(Z==="jsonl"){V("tool_progress",{tool_name:q,message:$,progress:b,total:z});return}D(Y.stderr,`[tool:progress] ${q}: ${$}`)},toolResult(q,$,b,z,R){if(Z==="jsonl"){V("tool_result",{tool_name:q,summary:$,target:b,tool_kind:z,success:R?.success,error_type:R?.errorType,error_message:R?.errorMessage});return}D(Y.stderr,`[tool:result] ${$}`)},mcpCatalogChanged(q){if(Z==="jsonl"){V("mcp_catalog_changed",{revision:q.revision,server_name:q.serverName,added:q.added,removed:q.removed,updated:q.updated});return}D(Y.stderr,`[mcp:catalog] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpContentChanged(q){if(Z==="jsonl"){V("mcp_content_changed",{revision:q.revision,server_name:q.serverName,content_kind:q.contentKind==="resourceTemplates"?"resource_templates":q.contentKind,added:q.added,removed:q.removed,updated:q.updated});return}D(Y.stderr,`[mcp:${q.contentKind}] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpResourceUpdated(q){if(Z==="jsonl"){V("mcp_resource_updated",{revision:q.revision,server_name:q.serverName,uri:q.uri});return}D(Y.stderr,`[mcp:resource] r${q.revision} ${q.serverName} updated ${q.uri}`)},mcpConnectionChanged(q){if(Z==="jsonl"){V("mcp_connection_changed",{revision:q.revision,server_name:q.serverName,phase:q.phase,reason:q.reason,attempt:q.attempt,max_attempts:q.maxAttempts,...q.nextRetryAt!==void 0?{next_retry_at:q.nextRetryAt}:{},...q.error?{error:q.error}:{}});return}D(Y.stderr,`[mcp:connection] r${q.revision} ${q.serverName} ${q.phase} ${q.attempt}/${q.maxAttempts}`)},mcpLog(q){if(Z==="jsonl"){V("mcp_log",{revision:q.revision,server_name:q.serverName,level:q.level,logger:q.logger,message:q.message,projected_bytes:q.projectedBytes,data_sha256:q.dataSha256,truncated:q.truncated,details_omitted:q.detailsOmitted,timestamp:q.timestamp,synthetic:q.synthetic});return}D(Y.stderr,`[mcp:log] ${q.level} ${q.serverName}${q.logger?` logger=${q.logger}`:""}: ${q.message}`)},mcpInstructionsChanged(q){if(Z==="jsonl"){V("mcp_instructions_changed",{revision:q.revision,server_name:q.serverName,action:q.action,reason:q.reason,text:q.text,source_bytes:q.sourceBytes,projected_bytes:q.projectedBytes,sha256:q.sha256,truncated:q.truncated,details_omitted:q.detailsOmitted});return}D(Y.stderr,`[mcp:instructions] ${q.action} ${q.serverName}${q.truncated?" (truncated)":""}`)},mcpTaskChanged(q){if(Z==="jsonl"){V("mcp_task_changed",{revision:q.revision,task_id:q.taskId,server_name:q.serverName,tool_name:q.toolName,status:q.status,status_message:q.statusMessage,created_at:q.createdAt,updated_at:q.updatedAt,completed_at:q.completedAt,has_result:q.hasResult,error:q.error});return}D(Y.stderr,`[mcp:task] ${q.taskId} ${q.serverName}/${q.toolName} `+q.status)},projectRulesLoaded(q){if(Z==="jsonl"){V("project_rules_loaded",{files:q.files.map(($)=>({id:$.id,relative_path:$.relativePath,source:$.source,conditional:$.conditional,content_sha256:$.contentSha256})),trigger_paths:q.triggerPaths,blocked_write:q.blockedWrite});return}D(Y.stderr,`[project-rules] loaded ${q.files.length} file(s)${q.blockedWrite?" before write":""}`)},userShellStarted(q,$,b){if(Z==="jsonl"){V("user_shell_started",{execution_id:q,command:$,auxiliary:b});return}D(Y.stderr,`[user-shell:start] ${$}`)},userShellOutput(q,$,b,z){if(Z==="jsonl"){V("user_shell_output",{execution_id:q,stream:$,chunk:b,stream_truncated:z});return}($==="stderr"?Y.stderr:Y.stdout).write(b)},userShellCompleted(q){if(Z==="jsonl"){V("user_shell_completed",{execution_id:q.executionId,message_id:q.messageId,status:q.record.status,exit_code:q.record.exitCode,duration_ms:q.record.durationMs,stdout:q.record.stdout,stderr:q.record.stderr,truncated:q.record.truncated,auxiliary:q.auxiliary});return}D(Y.stderr,`[user-shell:${q.record.status}] exit=${q.record.exitCode??"null"} ${q.record.durationMs}ms`)},phase(q,$,b,z={}){if(Z==="jsonl"){V("phase",{phase:q,status:$,message:b,turn:z.turn,tool_name:z.toolName,target:z.target});return}D(Y.stderr,`[phase:${q}] ${b}`)},toolDetail(q,$){if(Z==="jsonl"){V("tool_detail",{tool_name:q,detail:$});return}D(Y.stderr,$)},taskUpdate(q){if(Z==="jsonl"){V("task_update",{tasks:q});return}for(let $ of q)D(Y.stderr,GQ($))},goal(q){if(Z==="jsonl"){V("goal",{state:q.goal?"updated":"cleared",goal_id:q.goal?.goalId,status:q.goal?.status,verification_attempt:q.goal?.completionVerification?.attempt,verification_status:q.goal?.completionVerification?.status,verifier_session_id:q.goal?.completionVerification?.verifierSessionId,verification_evidence_sha256:q.goal?.completionVerification?.evidenceSha256});return}if(q.goal)D(Y.stderr,`[goal:${q.goal.status}] ${q.goal.objective}`);else D(Y.stderr,"[goal:cleared]")},subagent(q){let $=q.kind==="subagent_spawned";if(Z==="jsonl"){V("subagent",{state:$?"spawned":"completed",session_id:q.sessionId,subagent_type:q.type,success:$?void 0:q.success,summary:$?void 0:q.summary,verification_verdict:$?void 0:q.verificationVerdict,resumed_from:q.resumedFrom,root_agent_id:q.rootAgentId,resume_depth:q.resumeDepth});return}D(Y.stderr,`[subagent:${$?"spawned":"completed"}] ${q.sessionId}${q.resumedFrom?` resumed from ${q.resumedFrom}`:""}`)},tokenUsage(q){if(Z==="jsonl"){V("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}D(Y.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){let $=q.phase==="start";if(Z==="jsonl"){V("compacting",{state:$?"started":"completed",reason:q.reason,strategy:q.strategy,outcome:q.outcome,pre_tokens:q.preTokens,post_tokens:q.postTokens});return}D(Y.stderr,$?`[context] compacting started${q.reason?` (${q.reason})`:""}`:`[context] compacting ${q.outcome??"completed"}`)},providerRetry(q){if(Z==="jsonl"){V("provider_retry",{phase:q.phase,attempt:q.attempt,max_retries:q.maxRetries,reason:q.reason,status_code:q.statusCode,delay_ms:q.delayMs,next_retry_at:q.nextRetryAt});return}let $=q.delayMs!==void 0?` in ${Math.max(0,Math.ceil(q.delayMs/1000))}s`:"";D(Y.stderr,`[provider-retry:${q.phase}] ${q.attempt}/${q.maxRetries} ${q.reason}${$}`)},providerStall(q){if(Z==="jsonl"){V("provider_stall",{phase:q.phase,stall_count:q.stallCount,duration_ms:q.durationMs,warning_after_ms:q.warningAfterMs,timeout_ms:q.timeoutMs,output_started:q.outputStarted});return}D(Y.stderr,`[provider-stall:${q.phase}] ${q.durationMs}ms / ${q.timeoutMs}ms`)},turnLimit(q){if(Z==="jsonl"){V("turn_limit",{turns_count:q,action:"continue"});return}D(Y.stderr,`[turn-limit] continuing after ${q} turns`)},taskSession(q){if(Z==="jsonl"){V("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}D(Y.stderr,`[task:${q.isolation}] ${q.sessionId} ${q.sourceProjectPath} -> ${q.projectPath}${q.worktreeBranch?` (${q.worktreeBranch})`:""}`)},taskAdmission(q){if(Z==="jsonl"){V("task_admission",{state:q.state,queue_position:q.queuePosition,queue_depth:q.queueDepth,in_flight:q.inFlight,max_concurrent_tasks:q.maxConcurrentTasks});return}D(Y.stderr,q.state==="queued"?`[task:queued] position ${q.queuePosition??1}/${q.queueDepth} (running ${q.inFlight}/${q.maxConcurrentTasks})`:`[task:running] admitted (running ${q.inFlight}/${q.maxConcurrentTasks})`)},output(q,$=0){if(Z==="jsonl"){V("output",{content:q,exit_code:$});return}D($===0?Y.stdout:Y.stderr,q)},error(q){if(Z==="jsonl"){V("error",{message:q});return}D(Y.stderr,q)}}}async function DQ(Y,Z={stdout:process.stdout,stderr:process.stderr},H){let V="text",q=p(Z,V),$=new Dq,b={targetLocked:!1},z,R,J=eq(H);try{let B=ZQ(Y);V=BQ(B.outputFormat);let P=await Bq(B);q=p(Z,V,Boolean(P)),await Gq();let jq=await Vq(B),A=await Xq(jq);if(A.mode==="output"){if(A.content)q.output(A.content,A.exitCode??0);return A.exitCode??0}let L=A.content.trimStart().startsWith("!")?A.content.trimStart().slice(1).trim():void 0;if(L!==void 0&&B.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(L!==void 0&&P)throw Error("Output schemas cannot be combined with user shell commands");if(B.taskIsolation&&(B.continue||B.resume||B.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:U,messages:C,metadata:k}=await Kq({sessionId:B.sessionId,continue:B.continue,resume:B.resume,forkSession:B.forkSession,fallbackSessionPrefix:"headless"}),E=B.permissionMode??k?.permissionMode??"yolo",F=B.model&&B.model!=="inherit"?B.model:v()?.id,_=B.taskIsolation?await $q.createSessionTask({sessionId:U,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,dispatch:{version:1,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,permissionMode:E,...F?{modelId:F}:{},...P?{outputSchema:P}:{}}}):void 0,M=_?.metadata.projectPath??k?.projectPath??I();if(!_)await h.setSessionPermissionMode(U,M,E);let bq=_?!1:await r.cancelPendingNonInteractive(M,U);if(_)q.taskSession({sessionId:U,projectPath:M,sourceProjectPath:_.metadata.taskSourceProjectPath??I(),isolation:B.taskIsolation,worktreeBranch:_.metadata.taskWorktreeBranch,baseCommit:_.metadata.taskBaseCommit}),R=i.subscribe((G)=>{if(G.type!=="task.status"||G.sessionId!==U||G.projectPath!==M||!["queued","running"].includes(String(G.properties.taskStatus))||typeof G.properties.taskQueueDepth!=="number"||typeof G.properties.taskInFlight!=="number"||typeof G.properties.taskConcurrencyLimit!=="number")return;q.taskAdmission({state:G.properties.taskStatus,queuePosition:typeof G.properties.taskQueuePosition==="number"?G.properties.taskQueuePosition:void 0,queueDepth:G.properties.taskQueueDepth,inFlight:G.properties.taskInFlight,maxConcurrentTasks:G.properties.taskConcurrencyLimit})});let Hq={messages:bq?await h.loadSessionModelContext(U,M):[...C],userId:"cli-user",sessionId:U,workspaceRoot:M,permissionMode:E,signal:J.signal,..._?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:VQ()};if(z=await a.create({sessionId:U,workspaceRoot:M,modelId:B.model,permissionMode:E,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig,agents:B.agents?e(B.agents):void 0,..._?.taskWorktree?{taskWorktree:_.taskWorktree}:{},..._?.metadata.taskIsolation?{taskIsolation:_.metadata.taskIsolation}:{},...C.length>0?{sessionStart:{isResume:!0,resumeSessionId:U}}:{}}),L!==void 0){let G=await z.executeUserShellCommand(L,{signal:J.signal,onEvent:(X)=>{if(X.type==="started")q.userShellStarted(X.executionId,X.command,X.auxiliary);else if(X.type==="output")q.userShellOutput(X.executionId,X.stream,X.chunk,X.streamTruncated)}});return q.userShellCompleted(G),G.record.status==="completed"?0:G.record.status==="aborted"?130:G.record.exitCode??1}let zq=B.maxTurns??z.getConfig().maxTurns,_q=_?.taskWorktree?[...new Set([...B.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:B.disallowedTools,Aq=await t.createWithRuntime(z,{sessionId:U,systemPrompt:B.systemPrompt,appendSystemPrompt:B.appendSystemPrompt,maxTurns:B.maxTurns,modelId:B.model,permissionMode:E,toolWhitelist:B.allowedTools,toolBlacklist:_q,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig}),O=await s(Aq.chatStream(A.content,Hq,{stream:!0,signal:J.signal,maxTurns:B.maxTurns,outputSchema:P,...zq===-1?{onTurnLimitReached:async(G)=>{return q.turnLimit(G.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(G)=>{switch(G.kind){case"content_delta":if(!P||V==="jsonl")$.markAssistantContent();q.contentDelta(G.delta);break;case"thinking_delta":$.setThinkingOpened(q.thinkingDelta(G.delta,$.hasOpenThinking()));break;case"stream_end":{let X=$.completeStream();q.streamEnd(X.wroteAssistantContent,X.openedThinking);break}case"tool_start":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;if(["TaskCreate","TaskUpdate","TaskList"].includes(X.function.name))break;try{let f=JSON.parse(X.function.arguments),N=o(X.function.name,f),x=d(X.function.name,f),W=KQ(X.function.name,N,x,b);if(W.shouldLockTarget)b.targetLocked=!0;q.phase(W.phase,W.status,W.message,{toolName:X.function.name,target:x}),q.toolStart(X.function.name,N,x,G.toolKind)}catch{q.phase(b.targetLocked?"executing":"searching",b.targetLocked?"hit":"ongoing",b.targetLocked?`Working within target: ${X.function.name}`:`Still searching: ${X.function.name}`,{toolName:X.function.name}),q.toolStart(X.function.name,X.function.name,void 0,G.toolKind)}break}case"tool_progress":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;q.toolProgress(X.function.name,G.update.message,G.update.progress,G.update.total);break}case"tool_result":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;let f;try{let x=JSON.parse(X.function.arguments);f=d(X.function.name,x)}catch{f=void 0}let N=n(X.function.name,G.result);if(q.toolResult(X.function.name,N.summary,f,void 0,{success:G.result.success,errorType:G.result.error?.type,errorMessage:G.result.error?.message}),N.detail)q.toolDetail(X.function.name,N.detail);break}case"token_usage":q.tokenUsage(G.usage);break;case"compaction":q.compacting(G);break;case"task_update":q.taskUpdate(G.tasks);break;case"structured_output":q.structuredOutput(G);break;case"mcp_catalog_changed":q.mcpCatalogChanged(G);break;case"mcp_content_changed":q.mcpContentChanged(G);break;case"mcp_resource_updated":q.mcpResourceUpdated(G);break;case"mcp_connection_changed":q.mcpConnectionChanged(G);break;case"mcp_log":q.mcpLog(G);break;case"mcp_instructions_changed":q.mcpInstructionsChanged(G);break;case"mcp_task_changed":q.mcpTaskChanged(G);break;case"project_rules_loaded":q.projectRulesLoaded(G);break;case"steering_applied":case"follow_up_started":case"goal_continuation_started":break;case"goal_updated":q.goal(G);break;case"subagent_spawned":case"subagent_completed":q.subagent(G);break;case"model_fallback":break;case"provider_retry":q.providerRetry(G);break;case"provider_stall":q.providerStall(G);break;case"turn_start":if(G.turn===1)b.targetLocked=!1;q.phase("turn",b.targetLocked?"hit":"ongoing",`Turn ${G.turn} started`,{turn:G.turn});break;default:{let X=G}}});if(O.metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!O.success)return q.error(`Error: ${O.error?.message??"Agent execution failed"}`),1;return q.phase("completed","done","Headless run completed"),0}catch(B){if($.hasOpenThinking()&&V==="text")Z.stderr.write(`
|
|
6
|
-
`);return q.error(`Error: ${XQ(B)}`),1}finally{R?.();try{await z?.dispose()}finally{J.dispose()}}}async function cQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:H,"output-format":V,"system-prompt":q,"append-system-prompt":$,"max-turns":b,...z}=qq,R=nq(tq(process.argv)).scriptName("blade").strict(!1).options(z).middleware([Yq,Qq,Zq]);return $Q(R),await R.parse(),!0}export{DQ as runHeadless,cQ as handleHeadlessMode,QQ as HeadlessOptionsSchema};
|
package/dist/chunk-q5sewfn5.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as y,g as A,h as C,i as D}from"./chunk-1pkca2km.js";import"./chunk-57q5wn4g.js";import"./chunk-bp886b8j.js";import"./chunk-9c3jjbgd.js";import"./chunk-phzy5kqq.js";import"./chunk-nqpcwa0k.js";import"./chunk-yaxapgbm.js";import"./chunk-3fkj59nv.js";import"./chunk-0568ndm9.js";import"./chunk-4dnvydyv.js";import"./chunk-3qmwt188.js";import"./chunk-s4mqw4wa.js";import"./chunk-j8ggq1z4.js";import{$c as q}from"./chunk-n00mknme.js";import"./chunk-qg87zezq.js";import"./chunk-xjqcc0nt.js";import"./chunk-f8zz4se0.js";import"./chunk-xzdpdwhz.js";import"./chunk-m27w377p.js";import"./chunk-d2kzet1k.js";import"./chunk-wjqctwyr.js";import"./chunk-5xph8r1k.js";import"./chunk-5sw8j9ae.js";import"./chunk-18n15nn8.js";import"./chunk-86zsjamb.js";import"./chunk-6pb6zs96.js";import"./chunk-w56y2pvk.js";import"./chunk-edqtngzr.js";import"./chunk-vmzf4nvh.js";import"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-pccn8ndq.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.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};
|
package/dist/chunk-qg87zezq.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{pe as F}from"./chunk-w56y2pvk.js";import{tf as G}from"./chunk-p1dp2xgq.js";import{promises as $}from"node:fs";import b from"node:os";import W from"node:path";import{Mutex as j}from"async-mutex";import{merge as N}from"lodash-es";import A from"write-file-atomic";var B=F("Service"),Z={models:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},modelProviders:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},currentModelId:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},temperature:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},maxOutputTokens:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},timeout:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},theme:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},uiTheme:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},language:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},debug:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},fontSize:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},autoSaveSessions:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifyBuild:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifyErrors:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifySounds:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},privacyTelemetry:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},privacyCrash:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},communicationStyle:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},permissionMode:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},permissions:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},hooks:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},enabledPlugins:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},pluginSourcePolicy:{target:"settings",defaultScope:"global",mergeStrategy:"replace",persistable:!0},env:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},disableAllHooks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxTurns:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxConcurrentTasks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxQueuedTasks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},mcpServers:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},lspServers:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},stream:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},topP:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},topK:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},mcpEnabled:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},systemPrompt:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},appendSystemPrompt:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},initialMessage:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},resumeSessionId:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},forkSession:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},allowedTools:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},disallowedTools:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},mcpConfigPaths:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},strictMcpConfig:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},addDirs:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},outputFormat:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},inputFormat:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},print:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},includePartialMessages:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},replayUserMessages:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},agentsConfig:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},settingSources:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1}},S=new Set(Object.entries(Z).filter(([q,z])=>z.persistable).map(([q])=>q)),m=new Set(Object.entries(Z).filter(([q,z])=>!z.persistable).map(([q])=>q));class V{static instance=null;pendingUpdates=new Map;timers=new Map;fileLocks=new Map;lastSaveError=null;debounceDelay=300;constructor(){}static getInstance(){if(!V.instance)V.instance=new V;return V.instance}static resetInstance(){if(V.instance)for(let q of V.instance.timers.values())clearTimeout(q);V.instance=null}async save(q,z={}){this.validatePersistableFields(q);let H=this.groupUpdatesByTarget(q,z.scope,z.projectDir);if(z.immediate)await Promise.all(Array.from(H.entries()).map(([J,K])=>this.flushTarget(J,K)));else for(let[J,K]of H)this.scheduleSave(J,K)}async flush(){for(let z of this.timers.values())clearTimeout(z);this.timers.clear();let q=Array.from(this.pendingUpdates.entries()).map(([z,H])=>this.flushTarget(z,H));this.pendingUpdates.clear(),await Promise.all(q)}getLastSaveError(){return this.lastSaveError}clearLastSaveError(){this.lastSaveError=null}async appendPermissionRule(q,z={}){await this.appendPermissionRuleForDecision(q,"allow",z)}async appendPermissionDenyRule(q,z={}){await this.appendPermissionRuleForDecision(q,"deny",z)}async appendPermissionRuleForDecision(q,z,H){let J=H.scope??"local",K=this.resolveFilePath("settings",J,H.projectDir);await this.flushTargetWithModifier(K,(M)=>{let Q=M.permissions??{allow:[],ask:[],deny:[]},X={allow:z==="allow"?this.dedupeArray([...Q.allow||[],q]):Q.allow||[],ask:Q.ask||[],deny:z==="deny"?this.dedupeArray([...Q.deny||[],q]):Q.deny||[]};return{...M,permissions:X}})}async appendLocalPermissionRule(q,z={}){await this.appendPermissionRule(q,{...z,scope:"local"})}async appendLocalPermissionDenyRule(q,z={}){await this.appendPermissionDenyRule(q,{...z,scope:"local"})}async removePluginSetting(q,z={}){let H=z.scope??"local",J=this.resolveFilePath("settings",H,z.projectDir);await this.flushTargetWithModifier(J,(K)=>{let M={...K.enabledPlugins??{}};delete M[q];let Q={...K};if(Object.keys(M).length>0)Q.enabledPlugins=M;else delete Q.enabledPlugins;return Q})}validatePersistableFields(q){for(let z of Object.keys(q)){let H=Z[z];if(!H)throw Error(`Unknown config field: ${z}`);if(!H.persistable)throw Error(`Field "${z}" is non-persistable and cannot be saved to config files. Non-persistable fields are runtime-only and only valid for the current session.`)}}groupUpdatesByTarget(q,z,H){let J=new Map;for(let[K,M]of Object.entries(q)){let Q=Z[K];if(!Q)continue;let X=z??Q.defaultScope,Y=this.resolveFilePath(Q.target,X,H);if(!J.has(Y))J.set(Y,{});J.get(Y)[K]=M}return J}resolveFilePath(q,z,H){let J=H??G();if(q==="config")return z==="global"?W.join(b.homedir(),".blade","config.json"):W.join(J,".blade","config.json");switch(z){case"local":return W.join(J,".blade","settings.local.json");case"project":return W.join(J,".blade","settings.json");case"global":return W.join(b.homedir(),".blade","settings.json");default:return W.join(J,".blade","settings.local.json")}}scheduleSave(q,z){let H=this.pendingUpdates.get(q)??{},J=this.mergePendingUpdates(H,z);this.pendingUpdates.set(q,J);let K=this.timers.get(q);if(K)clearTimeout(K);let M=setTimeout(async()=>{let Q=this.pendingUpdates.get(q);if(Q){this.pendingUpdates.delete(q),this.timers.delete(q);try{await this.flushTarget(q,Q),this.lastSaveError=null}catch(X){let Y=X instanceof Error?X:Error(String(X));this.lastSaveError=Y,B.error(`Failed to save config to ${q}:`,Y.message),B.error("Stack trace:",Y.stack)}}},this.debounceDelay);this.timers.set(q,M)}mergePendingUpdates(q,z){let H={...q};for(let[J,K]of Object.entries(z)){let M=Z[J];if(!M){H[J]=K;continue}switch(M.mergeStrategy){case"replace":H[J]=K;break;case"append-dedupe":this.applyAppendDedupe(H,J,K);break;case"deep-merge":this.applyDeepMerge(H,J,K);break}}return H}async flushTarget(q,z){let H=this.fileLocks.get(q);if(!H)H=new j,this.fileLocks.set(q,H);await H.runExclusive(async()=>{await this.performWrite(q,z)})}async flushTargetWithModifier(q,z){let H=this.fileLocks.get(q);if(!H)H=new j,this.fileLocks.set(q,H);await H.runExclusive(async()=>{await $.mkdir(W.dirname(q),{recursive:!0,mode:493});let J={};try{let M=await $.readFile(q,"utf-8");J=JSON.parse(M)}catch{J={}}let K=z(J);await this.atomicWrite(q,K)})}async performWrite(q,z){await $.mkdir(W.dirname(q),{recursive:!0,mode:493});let H={};try{let K=await $.readFile(q,"utf-8");H=JSON.parse(K)}catch{H={}}let J={...H};for(let[K,M]of Object.entries(z)){let Q=Z[K];if(!Q){J[K]=M;continue}switch(Q.mergeStrategy){case"replace":J[K]=M;break;case"append-dedupe":this.applyAppendDedupe(J,K,M);break;case"deep-merge":this.applyDeepMerge(J,K,M);break}}await this.atomicWrite(q,J)}applyAppendDedupe(q,z,H){if(z==="permissions"&&typeof H==="object"&&H!==null){let J=q[z]??{allow:[],ask:[],deny:[]},K=H;q[z]={allow:this.dedupeArray([...J.allow||[],...K.allow||[]]),ask:this.dedupeArray([...J.ask||[],...K.ask||[]]),deny:this.dedupeArray([...J.deny||[],...K.deny||[]])}}else if(Array.isArray(H)){let J=Array.isArray(q[z])?q[z]:[];q[z]=this.dedupeArray([...J,...H])}else q[z]=H}applyDeepMerge(q,z,H){if(typeof H==="object"&&H!==null&&!Array.isArray(H)){let J=typeof q[z]==="object"&&q[z]!==null?q[z]:{};q[z]=N({},J,H)}else q[z]=H}dedupeArray(q){return Array.from(new Set(q))}async atomicWrite(q,z){await A(q,JSON.stringify(z,null,2),{mode:384,encoding:"utf-8"})}}function O(){return V.getInstance()}export{O as kd};
|
package/dist/chunk-r14bz8va.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ac as a,bc as b,cc as c,dc as d,ec as e,fc as f}from"./chunk-3qmwt188.js";import"./chunk-s4mqw4wa.js";import"./chunk-m27w377p.js";import"./chunk-5sw8j9ae.js";import"./chunk-6pb6zs96.js";import"./chunk-w56y2pvk.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";export{a as __setSessionSnapshotIOForTesting,b as __resetSessionSnapshotIOForTesting,f as SessionService,c as SessionMissingCreationError,d as SessionArchivedError,e as SessionArchiveConflictError};
|
package/dist/chunk-rtkhyp1g.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$a as f,Sa as a,Ta as b,Va as c,Za as d,_a as e,ab as g,bb as h,cb as i,db as j,eb as k,jb as l,kb as m,lb as n,mb as o,nb as p,ob as q,pb as r}from"./chunk-0568ndm9.js";import"./chunk-4dnvydyv.js";import"./chunk-3qmwt188.js";import"./chunk-s4mqw4wa.js";import"./chunk-xjqcc0nt.js";import"./chunk-f8zz4se0.js";import"./chunk-m27w377p.js";import"./chunk-5xph8r1k.js";import"./chunk-5sw8j9ae.js";import"./chunk-86zsjamb.js";import"./chunk-6pb6zs96.js";import"./chunk-w56y2pvk.js";import"./chunk-vmzf4nvh.js";import"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";export{g as saveUserMessage,i as saveToolUse,j as saveToolResult,k as saveCompaction,h as saveAssistantMessage,d as isRootSystemPrompt,m as handleTaskListUpdate,n as handleSkillActivation,o as extractModelSwitch,r as executeLoopGenerator,f as drainLoop,c as checkStopHook,a as checkOutputRecovery,b as checkIncompleteIntent,q as checkAndCompactInLoop,p as applyToolDomainEffects,l as StreamingToolExecutor,e as ConversationState};
|
package/dist/chunk-s4mqw4wa.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import{pe as n}from"./chunk-w56y2pvk.js";import{Nf as l,Pf as C,Rf as N,Vf as L,Wf as o}from"./chunk-s14wmzm3.js";import{Xf as f}from"./chunk-vns8g2rv.js";import{stat as i}from"node:fs/promises";import B from"node:path";import*as U from"node:path";var a=50,s=100,t=/^[A-Za-z0-9_-]+$/,e=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function __(_){return typeof _==="string"&&e.test(_)&&Number.isFinite(Date.parse(_))}function p(_){return typeof _==="string"&&U.isAbsolute(_)}function E_(_){return Buffer.from(JSON.stringify(_),"utf8").toString("base64url")}function R_(_){try{if(!t.test(_))throw Error("invalid");let E=Buffer.from(_,"base64url").toString("utf8");if(Buffer.from(E,"utf8").toString("base64url")!==_)throw Error("invalid");let R=JSON.parse(E);if(R.version!==1||typeof R.includeSubagents!=="boolean"||R.archived!==void 0&&typeof R.archived!=="boolean"||!(R.cwd===null||p(R.cwd))||!__(R.lastMessageTime)||!p(R.projectPath)||!C(R.sessionId))throw Error("invalid");return{version:1,cwd:R.cwd===null?null:U.resolve(R.cwd),includeSubagents:R.includeSubagents,archived:R.archived??!1,lastMessageTime:R.lastMessageTime,projectPath:U.resolve(R.projectPath),sessionId:R.sessionId}}catch{throw Error("Invalid session cursor")}}function q(_){let E="";for(let R=0;R<_.length;R+=1)E+=_.charCodeAt(R).toString(16).padStart(4,"0");return E}function W_(_){if(!_.cursor)return;let E=R_(_.cursor);if(E.cwd!==_.cwd||E.includeSubagents!==_.includeSubagents||(E.archived??!1)!==_.archived)throw Error("Session cursor scope does not match this query");return E}function w_(_={}){let{cwd:E,cursor:R,limit:W,includeSubagents:$=!1,archived:H=!1}=_;if(E!==void 0&&!U.isAbsolute(E))throw Error("Session catalog cwd must be absolute");let k=W===void 0?a:W;if(!Number.isInteger(k)||k<1||k>s)throw Error("Session catalog limit must be an integer from 1 to 100");return{cwd:E===void 0?null:U.resolve(E),cursor:R??void 0,limit:k,includeSubagents:$,archived:H}}function $_(_,E){if(_.lastMessageTime>E.lastMessageTime)return-1;if(_.lastMessageTime<E.lastMessageTime)return 1;if(_.projectPath<E.projectPath)return-1;if(_.projectPath>E.projectPath)return 1;if(_.sessionId<E.sessionId)return-1;if(_.sessionId>E.sessionId)return 1;return 0}function x_(_,E){let R=[..._],W=W_(E);if(W)R=R.filter((k)=>$_(k,{sessionId:W.sessionId,projectPath:W.projectPath,lastMessageTime:W.lastMessageTime})>0);let $=R.slice(0,E.limit);if($.length===0||R.length<=$.length)return{sessions:$};let H=$[$.length-1];return{sessions:$,nextCursor:E_({version:1,cwd:E.cwd,includeSubagents:E.includeSubagents,archived:E.archived,lastMessageTime:H.lastMessageTime,projectPath:H.projectPath,sessionId:H.sessionId})}}function k_(_){return _.type==="message_created"||_.type==="part_created"||_.type==="part_updated"||_.type==="turn_started"||_.type==="turn_completed"||_.type==="turn_aborted"||_.type==="interaction_requested"||_.type==="interaction_responded"||_.type==="interaction_recovered"||_.type==="review_started"||_.type==="review_completed"}function J(_){return _.type==="message_created"&&_.data.role==="user"&&(_.data.inboxMessageId!==void 0||_.data.parentMessageId===void 0)}function u(_,E){let R=_.find((W)=>J(W)&&W.data.messageId===E);if(!R)throw Error(`Rewind checkpoint not found: ${E}`);return{messageId:E,preview:P(_,E),createdAt:R.data.createdAt}}function P(_,E){let R=_.flatMap((W)=>{if(W.type!=="part_created"||W.data.messageId!==E)return[];if(W.data.partType==="text"){let $=W.data.payload;return typeof $.text==="string"?[$.text]:[]}if(W.data.partType==="image")return["[Image]"];return[]}).join("").trim();if(R.length<=160)return R;return`${R.slice(0,160)}...`}function c(_,E){u(_,E);let R=_.findIndex((k)=>k.type==="message_created"&&k.data.messageId===E),W=_[R],$=W?.type==="message_created"?W.data.inboxMessageId:void 0,H=new Set(_.flatMap((k)=>k.type==="turn_started"&&$&&k.data.inputMessageIds?.includes($)?[k.data.turnId]:[]));return _.filter((k,M)=>{if((k.type==="turn_started"||k.type==="turn_completed"||k.type==="turn_aborted")&&H.has(k.data.turnId))return!1;return M<R||!k_(k)})}function z(_){let E=[];for(let R of _){if(R.type!=="session_rewound"){E.push(R);continue}if(u(E,R.data.targetMessageId),R.data.mode!=="code")E=c(E,R.data.targetMessageId)}return E}function I_(_){let E=z(_);return E.filter(J).map((R)=>({messageId:R.data.messageId,preview:P(E,R.data.messageId),createdAt:R.data.createdAt})).reverse()}function q_(_,E){let R=z(_),W=u(R,E),$=R.findIndex((k)=>k.type==="message_created"&&k.data.messageId===E),H=R.slice($);return{checkpoint:W,projectedEntries:c(R,E),removedTurns:H.filter(J).length,snapshotMessageIds:H.flatMap((k)=>k.type==="part_created"&&k.data.partType==="tool_call"?[k.data.partId]:[])}}import*as x from"node:fs";import{createReadStream as H_}from"node:fs";import*as X from"node:fs/promises";import*as y from"node:path";import{createInterface as M_}from"node:readline";var S=65536;function Q_(_,E,R){let W=_.trim();if(!W)return;try{return JSON.parse(W)}catch($){throw Error(`Invalid session JSONL in ${R} at line ${E}`,{cause:$})}}function w(_,E="session transcript"){let R=_.split(`
|
|
2
|
-
`),W=!_.endsWith(`
|
|
3
|
-
`),$=[];for(let[H,k]of R.entries())try{let M=Q_(k,H+1,E);if(M){if(typeof M.seq!=="number")M.seq=$.length+1;$.push(M)}}catch(M){if(W&&H===R.length-1)break;throw M}return $}class Y{static appendQueues=new Map;filePath;constructor(_){this.filePath=_}static maxSeq(_){let E=0;for(let R of _)if(typeof R.seq==="number"&&R.seq>E)E=R.seq;return E}static stampSeqFrom(_,E){let R=E;return _.map((W)=>{if(typeof W.seq==="number"){if(W.seq>R)R=W.seq;return W}return R+=1,{...W,seq:R}})}static stampSeq(_,E){return Y.stampSeqFrom(_,Y.maxSeq(E))}async append(_){try{let[E]=await this.appendEntries([_]);return E}catch(E){throw console.error(`[JSONLStore] 追加写入失败: ${this.filePath}`,E),E}}async appendBatch(_){try{return await this.appendEntries(_)}catch(E){throw console.error(`[JSONLStore] 批量追加写入失败: ${this.filePath}`,E),E}}async appendEntries(_){if(_.length===0)return[];return this.enqueue(async()=>{await X.mkdir(y.dirname(this.filePath),{recursive:!0,mode:493});let E=await X.open(this.filePath,"a+",384);try{let R=await this.repairIncompleteTail(E),W=await this.readTailSeq(E),$=Y.stampSeqFrom(_,W),H=`${$.map((k)=>JSON.stringify(k)).join(`
|
|
4
|
-
`)}
|
|
5
|
-
`;return await E.appendFile(R+H,"utf8"),await E.sync(),$}finally{await E.close()}})}async createExclusive(_){if(_.length===0)throw Error("Cannot create an empty session transcript");await X.mkdir(y.dirname(this.filePath),{recursive:!0,mode:493});let E;try{E=await X.open(this.filePath,"wx",384);let W=`${Y.stampSeq(_,[]).map(($)=>JSON.stringify($)).join(`
|
|
6
|
-
`)}
|
|
7
|
-
`;await E.writeFile(W,"utf-8"),await E.sync()}catch(R){if(E)await E.close(),E=void 0,await X.unlink(this.filePath).catch(()=>{return});throw R}finally{await E?.close()}}async readAll(){if(!x.existsSync(this.filePath))return[];let _=await X.readFile(this.filePath,"utf-8");return w(_,this.filePath)}async readStream(_){return new Promise((E,R)=>{if(!x.existsSync(this.filePath)){E();return}let W=H_(this.filePath,"utf-8"),$=M_({input:W,crlfDelay:Number.POSITIVE_INFINITY}),H=0;$.on("line",async(k)=>{let M=k.trim();if(M.length===0)return;try{let V=JSON.parse(M);if(H+=1,typeof V.seq!=="number")V.seq=H;await _(V)}catch(V){console.warn(`[JSONLStore] 解析 JSON 行失败: ${M}`,V)}}),$.on("close",()=>E()),$.on("error",R),W.on("error",R)})}async filter(_){let E=[];return await this.readStream((R)=>{if(_(R))E.push(R)}),E}async readLast(_){return(await this.readAll()).slice(-_)}async readFromSeq(_){return(await this.readAll()).filter((R)=>(R.seq??0)>=_)}async getStats(){try{if(!x.existsSync(this.filePath))return{exists:!1,size:0,lineCount:0};let _=await X.stat(this.filePath),R=(await X.readFile(this.filePath,"utf-8")).split(`
|
|
8
|
-
`).filter((W)=>W.trim().length>0).length;return{exists:!0,size:_.size,lineCount:R}}catch(_){return console.error(`[JSONLStore] 获取统计信息失败: ${this.filePath}`,_),{exists:!1,size:0,lineCount:0}}}async exists(){try{return await X.access(this.filePath),!0}catch{return!1}}async delete(){try{return await this.enqueue(async()=>{try{return await X.unlink(this.filePath),!0}catch(_){if(_.code==="ENOENT")return!1;throw _}})}catch(_){throw console.error(`[JSONLStore] 删除文件失败: ${this.filePath}`,_),_}}async deleteValidated(_){return this.enqueue(async()=>{let E;try{E=await X.open(this.filePath,"r")}catch(W){if(W.code==="ENOENT")return!1;throw W}let R;try{R=w(await E.readFile("utf8"),"session transcript")}finally{await E.close()}if(!_(R))return!1;try{return await X.unlink(this.filePath),!0}catch(W){if(W.code==="ENOENT")return!1;throw W}})}async appendValidated(_){return this.appendValidatedAsync(async(E)=>_(E))}async appendValidatedBatch(_){return this.appendValidatedBatchAsync(async(E)=>_(E))}async appendValidatedBatchAsync(_){return this.enqueue(async()=>{let E=await X.open(this.filePath,"r+");try{let{entries:R,separator:W,size:$}=await this.readCommittedState(E,"session transcript"),H=await _(R);if(H.length===0)return[];let k=Y.stampSeq(H,R),M=`${k.map((V)=>JSON.stringify(V)).join(`
|
|
9
|
-
`)}
|
|
10
|
-
`;return await E.write(W+M,$,"utf8"),await E.sync(),k}finally{await E.close()}})}async appendValidatedAsync(_){return this.enqueue(async()=>{let E=await X.open(this.filePath,"r+");try{let{entries:R,separator:W,size:$}=await this.readCommittedState(E,"session transcript"),H=await _(R),[k]=Y.stampSeq([H],R),M=`${W}${JSON.stringify(k)}
|
|
11
|
-
`;return await E.write(M,$,"utf8"),await E.sync(),k}finally{await E.close()}})}getFilePath(){return this.filePath}async enqueue(_){let R=(Y.appendQueues.get(this.filePath)??Promise.resolve()).catch(()=>{return}).then(_),W=R.then(()=>{return},()=>{return});Y.appendQueues.set(this.filePath,W);try{return await R}finally{if(Y.appendQueues.get(this.filePath)===W)Y.appendQueues.delete(this.filePath)}}async readCommittedState(_,E=this.filePath){let R=await this.repairIncompleteTail(_),W=await _.readFile("utf8"),$=w(W,E),{size:H}=await _.stat();return{entries:$,separator:R,size:H}}async readTailSeq(_){let{size:E}=await _.stat();if(E===0)return 0;let R=Math.max(0,E-S),W=Buffer.allocUnsafe(E-R);await _.read(W,0,W.length,R);let $=W.toString("utf8").split(`
|
|
12
|
-
`);for(let k=$.length-1;k>=0;k--){let M=$[k].trim();if(!M)continue;if(k===0&&R>0)break;try{let V=JSON.parse(M).seq;if(typeof V==="number")return V}catch{}break}let H=await _.readFile("utf8");return Y.maxSeq(w(H,this.filePath))}async repairIncompleteTail(_){let{size:E}=await _.stat();if(E===0)return"";let R=Buffer.allocUnsafe(1);if(await _.read(R,0,1,E-1),R[0]===10)return"";let W=await this.findTailStart(_,E),$=Buffer.allocUnsafe(E-W);await _.read($,0,$.length,W);try{return JSON.parse($.toString("utf8").trim()),`
|
|
13
|
-
`}catch{return await _.truncate(W),""}}async findTailStart(_,E){let R=E;while(R>0){let W=Math.max(0,R-S),$=Buffer.allocUnsafe(R-W);await _.read($,0,$.length,W);let H=$.lastIndexOf(10);if(H>=0)return W+H+1;R=W}return 0}}function V_(){return typeof globalThis.Bun<"u"}function X_(_){return{exec:(E)=>_.exec(E),prepare:(E)=>{let R=_.prepare(E);return{run:(...W)=>{R.run(...W)},get:(...W)=>R.get(...W),all:(...W)=>R.all(...W)}},transaction:(E)=>_.transaction(E)(),pragma:(E)=>_.pragma(E,{simple:!0}),close:()=>_.close()}}function Y_(_){return{exec:(E)=>_.exec(E),prepare:(E)=>{let R=_.query(E);return{run:(...W)=>{R.run(...W)},get:(...W)=>R.get(...W),all:(...W)=>R.all(...W)}},transaction:(E)=>_.transaction(E)(),pragma:(E)=>{let R=_.query(`PRAGMA ${E}`).get();if(!R)return;let W=Object.values(R);return W.length===1?W[0]:R},close:()=>_.close()}}var G_=["PRAGMA journal_mode=WAL;","PRAGMA busy_timeout=5000;","PRAGMA synchronous=NORMAL;","PRAGMA foreign_keys=ON;"].join(`
|
|
14
|
-
`);async function m(_){try{let E;if(V_()){let{Database:W}=await import("bun:sqlite");E=Y_(new W(_))}else{let $=(await import("better-sqlite3")).default;E=X_(new $(_))}return E.exec(G_),E}catch{return null}}function h(_){let E=Number(_.pragma("user_version")??0);if(E===3)return;if(E>0&&E!==3)_.exec(`
|
|
15
|
-
DROP TABLE IF EXISTS parts_fts;
|
|
16
|
-
DROP TABLE IF EXISTS parts;
|
|
17
|
-
DROP TABLE IF EXISTS sessions;
|
|
18
|
-
DROP TABLE IF EXISTS projection_state;
|
|
19
|
-
`);_.exec(`
|
|
20
|
-
CREATE TABLE IF NOT EXISTS projection_state (
|
|
21
|
-
project_path TEXT NOT NULL,
|
|
22
|
-
session_id TEXT NOT NULL,
|
|
23
|
-
last_seq INTEGER NOT NULL DEFAULT 0,
|
|
24
|
-
file_size INTEGER NOT NULL DEFAULT 0,
|
|
25
|
-
mtime_ms INTEGER NOT NULL DEFAULT 0,
|
|
26
|
-
PRIMARY KEY (project_path, session_id)
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
CREATE TABLE IF NOT EXISTS sessions (
|
|
30
|
-
project_path TEXT NOT NULL,
|
|
31
|
-
session_id TEXT NOT NULL,
|
|
32
|
-
root_id TEXT,
|
|
33
|
-
parent_id TEXT,
|
|
34
|
-
relation_type TEXT,
|
|
35
|
-
title TEXT,
|
|
36
|
-
agent_type TEXT,
|
|
37
|
-
model TEXT,
|
|
38
|
-
task_status TEXT,
|
|
39
|
-
archived_at TEXT,
|
|
40
|
-
last_message_time TEXT,
|
|
41
|
-
project_sort_key TEXT NOT NULL,
|
|
42
|
-
session_sort_key TEXT NOT NULL,
|
|
43
|
-
first_message_time TEXT,
|
|
44
|
-
message_count INTEGER NOT NULL DEFAULT 0,
|
|
45
|
-
has_errors INTEGER NOT NULL DEFAULT 0,
|
|
46
|
-
is_subagent INTEGER NOT NULL DEFAULT 0,
|
|
47
|
-
-- 完整 StoredSessionMetadata JSON,读回时直接反序列化,保证与 JSONL 路径一致。
|
|
48
|
-
metadata_json TEXT NOT NULL,
|
|
49
|
-
PRIMARY KEY (project_path, session_id)
|
|
50
|
-
);
|
|
51
|
-
CREATE INDEX IF NOT EXISTS idx_sessions_catalog ON sessions(
|
|
52
|
-
last_message_time DESC,
|
|
53
|
-
project_sort_key ASC,
|
|
54
|
-
session_sort_key ASC
|
|
55
|
-
);
|
|
56
|
-
CREATE INDEX IF NOT EXISTS idx_sessions_archived ON sessions(
|
|
57
|
-
archived_at,
|
|
58
|
-
project_path,
|
|
59
|
-
parent_id
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
CREATE TABLE IF NOT EXISTS parts (
|
|
63
|
-
project_path TEXT NOT NULL,
|
|
64
|
-
session_id TEXT NOT NULL,
|
|
65
|
-
part_id TEXT NOT NULL,
|
|
66
|
-
message_id TEXT,
|
|
67
|
-
part_type TEXT,
|
|
68
|
-
role TEXT,
|
|
69
|
-
seq INTEGER,
|
|
70
|
-
timestamp TEXT,
|
|
71
|
-
text TEXT,
|
|
72
|
-
PRIMARY KEY (project_path, session_id, part_id)
|
|
73
|
-
);
|
|
74
|
-
CREATE INDEX IF NOT EXISTS idx_parts_session ON parts(project_path, session_id);
|
|
75
|
-
|
|
76
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS parts_fts USING fts5(
|
|
77
|
-
text,
|
|
78
|
-
project_path UNINDEXED,
|
|
79
|
-
session_id UNINDEXED,
|
|
80
|
-
part_id UNINDEXED,
|
|
81
|
-
role UNINDEXED,
|
|
82
|
-
timestamp UNINDEXED,
|
|
83
|
-
seq UNINDEXED,
|
|
84
|
-
tokenize = 'unicode61'
|
|
85
|
-
);
|
|
86
|
-
`),_.exec("PRAGMA user_version=3;")}var T_=n("Service"),D;function d(){return B.join(L(),"index.db")}async function Z_(){let _=d();if(D&&D.path===_)return D.db;let E=(async()=>{let R=await m(_);if(!R)return null;try{return h(R),R}catch{return null}})();return D={path:_,db:E},E}function K_(){D=void 0}function U_(_){if(_&&typeof _==="object"){let E=_.text;if(typeof E==="string")return E}return null}function g_(_,E,R,W){_.prepare("DELETE FROM parts WHERE project_path=? AND session_id=?").run(E,R),_.prepare("DELETE FROM parts_fts WHERE project_path=? AND session_id=?").run(E,R);let $=new Map;for(let M of W)if(M.type==="message_created")$.set(M.data.messageId,M.data.role);let H=_.prepare(`INSERT OR REPLACE INTO parts
|
|
87
|
-
(project_path, session_id, part_id, message_id, part_type, role, seq, timestamp, text)
|
|
88
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`),k=_.prepare(`INSERT INTO parts_fts (text, project_path, session_id, part_id, role, timestamp, seq)
|
|
89
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)`);for(let M of W){if(M.type!=="part_created"&&M.type!=="part_updated")continue;if(M.data.partType!=="text")continue;let V=U_(M.data.payload);if(V===null)continue;let G=$.get(M.data.messageId)??"assistant",g=M.seq??0;if(H.run(E,R,M.data.partId,M.data.messageId,M.data.partType,G,g,M.timestamp,V),G==="user"||G==="assistant")k.run(V,E,R,M.data.partId,G,M.timestamp,g)}}function F_(_,E){_.prepare(`INSERT INTO sessions
|
|
90
|
-
(project_path, session_id, root_id, parent_id, relation_type, title,
|
|
91
|
-
agent_type, model, task_status, archived_at, last_message_time, project_sort_key,
|
|
92
|
-
session_sort_key, first_message_time, message_count, has_errors,
|
|
93
|
-
is_subagent, metadata_json)
|
|
94
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
95
|
-
ON CONFLICT(project_path, session_id) DO UPDATE SET
|
|
96
|
-
root_id=excluded.root_id, parent_id=excluded.parent_id,
|
|
97
|
-
relation_type=excluded.relation_type, title=excluded.title,
|
|
98
|
-
agent_type=excluded.agent_type, model=excluded.model,
|
|
99
|
-
task_status=excluded.task_status, archived_at=excluded.archived_at,
|
|
100
|
-
last_message_time=excluded.last_message_time,
|
|
101
|
-
project_sort_key=excluded.project_sort_key,
|
|
102
|
-
session_sort_key=excluded.session_sort_key,
|
|
103
|
-
first_message_time=excluded.first_message_time, message_count=excluded.message_count,
|
|
104
|
-
has_errors=excluded.has_errors, is_subagent=excluded.is_subagent,
|
|
105
|
-
metadata_json=excluded.metadata_json`).run(E.projectPath,E.sessionId,E.rootId,E.parentId??null,E.relationType??null,E.title??null,E.agentType??null,E.model??null,E.taskStatus,E.archivedAt??null,E.lastMessageTime,q(E.projectPath),q(E.sessionId),E.firstMessageTime,E.messageCount,E.hasErrors?1:0,E.relationType==="subagent"?1:0,JSON.stringify(E))}function r(_,E,R){for(let W of["sessions","parts","parts_fts"])_.prepare(`DELETE FROM ${W} WHERE project_path=? AND session_id=?`).run(E,R)}function j(_,E,R){r(_,E,R),_.prepare("DELETE FROM projection_state WHERE project_path=? AND session_id=?").run(E,R)}function O(_,E,R,W,$,H){_.prepare(`INSERT INTO projection_state
|
|
106
|
-
(project_path, session_id, last_seq, file_size, mtime_ms)
|
|
107
|
-
VALUES (?, ?, ?, ?, ?)
|
|
108
|
-
ON CONFLICT(project_path, session_id) DO UPDATE SET
|
|
109
|
-
last_seq=excluded.last_seq, file_size=excluded.file_size,
|
|
110
|
-
mtime_ms=excluded.mtime_ms`).run(E,R,W,$,H)}async function D_(_,E,R,W,$=N(R,E)){let H;try{let Q=await i($);H={size:Q.size,mtimeMs:Q.mtimeMs}}catch{return _.transaction(()=>j(_,R,E)),!0}let k=_.prepare("SELECT last_seq, file_size, mtime_ms FROM projection_state WHERE project_path=? AND session_id=?").get(R,E);if(k&&k.file_size===H.size&&k.mtime_ms===Math.floor(H.mtimeMs))return!1;let V=await new Y($).readAll(),G=V.reduce((Q,Z)=>typeof Z.seq==="number"&&Z.seq>Q?Z.seq:Q,0),g=z(V),T=W(V,E,R);if(V.length===0||!T)return _.transaction(()=>{r(_,R,E),O(_,R,E,G,H.size,Math.floor(H.mtimeMs))}),!0;let F=_.prepare("SELECT last_message_time FROM sessions WHERE project_path=? AND session_id=?").get(T.projectPath,T.sessionId),A=B.resolve($)===B.resolve(N(T.projectPath,T.sessionId));if(F&&!A&&typeof F.last_message_time==="string"&&F.last_message_time>T.lastMessageTime)return O(_,R,E,G,H.size,Math.floor(H.mtimeMs)),!0;return _.transaction(()=>{F_(_,T),g_(_,T.projectPath,T.sessionId,g),O(_,R,E,G,H.size,Math.floor(H.mtimeMs))}),!0}var b=new WeakMap;async function B_(_,E,R=0){let W=b.get(_)??{};if(b.set(_,W),W.inFlight)return W.inFlight;if(R>0&&W.lastCompletedAt!==void 0&&Date.now()-W.lastCompletedAt<=R)return;let $=A_(_,E);W.inFlight=$;try{await $,W.lastCompletedAt=Date.now()}finally{if(W.inFlight===$)W.inFlight=void 0}}async function A_(_,E){let{readdir:R}=await import("node:fs/promises"),W=await o(),$=new Set,k=(await Promise.all(W.map(async(Q)=>{let Z=l(Q),K=B.join(L(),"projects",Q);try{return(await R(K)).flatMap((I)=>{if(!I.endsWith(".jsonl"))return[];let v=I.slice(0,-6);if(!C(v))return[];return[{filePath:B.join(K,I),projectPath:Z,sessionId:v}]})}catch{return[]}}))).flat();for(let Q of k)$.add(`${Q.projectPath}\x00${Q.sessionId}`);let M=_.prepare(`SELECT project_path, session_id, last_seq, file_size, mtime_ms
|
|
111
|
-
FROM projection_state`).all(),V=new Map(M.map((Q)=>[`${Q.project_path}\x00${Q.session_id}`,Q])),G=[],g=Math.min(128,k.length),T=0;await Promise.all(Array.from({length:g},async()=>{while(T<k.length){let Q=k[T++];if(!Q)continue;try{let Z=await i(Q.filePath),K=V.get(`${Q.projectPath}\x00${Q.sessionId}`);if(K&&K.file_size===Z.size&&K.mtime_ms===Math.floor(Z.mtimeMs))continue}catch{}G.push(Q)}}));let F=Math.min(32,G.length),A=0;await Promise.all(Array.from({length:F},async()=>{while(A<G.length){let Q=G[A++];if(!Q)continue;try{await D_(_,Q.sessionId,Q.projectPath,E,Q.filePath)}catch(Z){if(Z.code!=="ENOENT")T_.warn(`[SessionService] Skipping invalid session transcript: ${Q.sessionId}`)}}}));for(let Q of M)if(!$.has(`${Q.project_path}\x00${Q.session_id}`))_.transaction(()=>j(_,Q.project_path,Q.session_id))}function o_(_,E,R){_.transaction(()=>j(_,R,E))}async function n_(_){let{rm:E}=await import("node:fs/promises");K_();let R=d();for(let H of["","-wal","-shm"])await E(`${R}${H}`,{force:!0}).catch(()=>{return});let W=await Z_();if(!W)return null;return await B_(W,_),W.prepare("SELECT COUNT(*) c FROM sessions").get()?.c??0}function i_(_,E,R,W){let $=E.replace(/["*]/g," ").trim().split(/\s+/)[0];if(!$)return[];let H=`"${$}"*`,k=R?`SELECT session_id, role, timestamp, text FROM parts_fts
|
|
112
|
-
WHERE parts_fts MATCH ? AND project_path = ?
|
|
113
|
-
ORDER BY timestamp DESC LIMIT ?`:`SELECT session_id, role, timestamp, text FROM parts_fts
|
|
114
|
-
WHERE parts_fts MATCH ?
|
|
115
|
-
ORDER BY timestamp DESC LIMIT ?`,M=_.prepare(k);return R?M.all(H,R,W):M.all(H,W)}
|
|
116
|
-
export{z as gc,I_ as hc,q_ as ic,w as jc,Y as kc,q as lc,W_ as mc,w_ as nc,$_ as oc,x_ as pc,d as qc,Z_ as rc,K_ as sc,D_ as tc,B_ as uc,o_ as vc,n_ as wc,i_ as xc};
|
package/dist/chunk-sgnjekfb.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{qc as a,rc as b,sc as c,tc as d,uc as e,vc as f,wc as g,xc as h}from"./chunk-s4mqw4wa.js";import"./chunk-w56y2pvk.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";export{d as syncSession,e as syncAll,h as searchProjectionText,c as resetProjectionDbCache,f as removeSessionFromProjection,g as rebuildProjectionIndex,b as getProjectionDb,a as getIndexDbPath};
|
package/dist/chunk-tetxqw28.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ad as c,yd as a,zd as b}from"./chunk-d2kzet1k.js";import"./chunk-edqtngzr.js";import"./chunk-vmzf4nvh.js";import"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import"./chunk-c29y2s8g.js";import"./chunk-pccn8ndq.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";export{c as snapshotWorkspaceModelResources,b as resolveWorkspaceModelResources,a as cloneWorkspaceModelConfig};
|
package/dist/chunk-vmzf4nvh.js
DELETED
package/dist/chunk-zm3zn23k.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{f as Q,g as R,h as T,i as W}from"./chunk-1pkca2km.js";import"./chunk-57q5wn4g.js";import"./chunk-bp886b8j.js";import"./chunk-9c3jjbgd.js";import"./chunk-phzy5kqq.js";import"./chunk-nqpcwa0k.js";import"./chunk-yaxapgbm.js";import"./chunk-3fkj59nv.js";import"./chunk-0568ndm9.js";import"./chunk-4dnvydyv.js";import"./chunk-3qmwt188.js";import"./chunk-s4mqw4wa.js";import"./chunk-j8ggq1z4.js";import{$c as M}from"./chunk-n00mknme.js";import"./chunk-qg87zezq.js";import"./chunk-xjqcc0nt.js";import"./chunk-f8zz4se0.js";import"./chunk-xzdpdwhz.js";import"./chunk-m27w377p.js";import"./chunk-d2kzet1k.js";import"./chunk-wjqctwyr.js";import"./chunk-5xph8r1k.js";import"./chunk-5sw8j9ae.js";import"./chunk-18n15nn8.js";import"./chunk-86zsjamb.js";import"./chunk-6pb6zs96.js";import"./chunk-w56y2pvk.js";import"./chunk-edqtngzr.js";import"./chunk-vmzf4nvh.js";import"./chunk-hpmxmkzc.js";import"./chunk-bpz0g8ej.js";import"./chunk-p1dp2xgq.js";import"./chunk-c674mmtj.js";import"./chunk-1gkpjhts.js";import{Gf as J}from"./chunk-c29y2s8g.js";import"./chunk-pccn8ndq.js";import"./chunk-x6tns9d8.js";import"./chunk-s14wmzm3.js";import"./chunk-vns8g2rv.js";import b from"chalk";import H from"open";var $=`
|
|
2
|
-
____ _ _
|
|
3
|
-
| __ )| | __ _ __| | ___
|
|
4
|
-
| _ \\| |/ _\` |/ _\` |/ _ \\
|
|
5
|
-
| |_) | | (_| | (_| | __/
|
|
6
|
-
|____/|_|\\__,_|\\__,_|\\___|
|
|
7
|
-
`,E={command:"web",describe:"Start Blade server and open web interface",builder:Q,handler:async(X)=>{let F=R(X);if(await M(),!process.env.BLADE_SERVER_PASSWORD)console.log(b.yellow("[WARN] BLADE_SERVER_PASSWORD is not set; server is unsecured.")),console.log(b.gray(` Set this environment variable to enable Basic Auth.
|
|
8
|
-
`));let C=await W.listenAsync(F);if(console.log(b.cyan($)),console.log(b.gray(` v${J()}
|
|
9
|
-
`)),F.hostname==="0.0.0.0"){let q=`http://localhost:${C.port}`;console.log(b.blue.bold(" Local access: "),b.white(q));let Y=T();for(let Z of Y)console.log(b.blue.bold(" Network access: "),b.white(`http://${Z}:${C.port}`));H(q).catch(()=>{})}else{let q=C.url.toString();console.log(b.blue.bold(" Web interface: "),b.white(q)),H(q).catch(()=>{})}console.log(""),console.log(b.gray(` Press Ctrl+C to stop the server.
|
|
10
|
-
`)),await new Promise(()=>{}),await C.stop()}};export{E as webCommand};
|