blade-code 0.10.65 → 0.10.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-czb954vz.js → chunk-0j22w4wh.js} +1 -1
  3. package/dist/{chunk-tb4jmrkp.js → chunk-0qtrv97b.js} +1 -1
  4. package/dist/chunk-0scxrkcf.js +1 -0
  5. package/dist/{chunk-eg5mh9m9.js → chunk-0wxkymqv.js} +1 -1
  6. package/dist/{chunk-s16x4qkb.js → chunk-1c69c4rd.js} +1 -1
  7. package/dist/{chunk-ca5mm1gk.js → chunk-1z9wct9w.js} +1 -1
  8. package/dist/chunk-2eq5dyga.js +1 -0
  9. package/dist/{chunk-h127mgg2.js → chunk-2kkpn41a.js} +2 -2
  10. package/dist/{chunk-j6w1vf2q.js → chunk-2xk6m4fc.js} +12 -3
  11. package/dist/{chunk-ka2kn5bs.js → chunk-30kmydfj.js} +2 -2
  12. package/dist/{chunk-yrtmkb4a.js → chunk-4sztphe9.js} +1 -1
  13. package/dist/{chunk-5qaacj3x.js → chunk-50jthhfq.js} +1 -1
  14. package/dist/{chunk-ky32s7az.js → chunk-5147jh26.js} +1 -1
  15. package/dist/{chunk-aphcj8rz.js → chunk-5d2cdvdy.js} +1 -1
  16. package/dist/chunk-69j98a7j.js +166 -0
  17. package/dist/{chunk-ngmajm4h.js → chunk-6pyktfa4.js} +1 -1
  18. package/dist/chunk-89090tyx.js +1 -0
  19. package/dist/chunk-8c677xtx.js +1 -0
  20. package/dist/{chunk-zxwdtn6q.js → chunk-8nmwft1y.js} +9 -9
  21. package/dist/{chunk-1vt7e9e7.js → chunk-98n2rxmq.js} +2 -2
  22. package/dist/{chunk-57gp2px5.js → chunk-a2594p5r.js} +1 -1
  23. package/dist/{chunk-wzkr0p09.js → chunk-a3xnd8cg.js} +2 -2
  24. package/dist/{chunk-svczh6hn.js → chunk-abef6dq1.js} +2 -2
  25. package/dist/chunk-ax9ftraa.js +1 -0
  26. package/dist/{chunk-sbpb7pcc.js → chunk-b66veqye.js} +2 -2
  27. package/dist/{chunk-a1m7wr7r.js → chunk-bbcb9jzb.js} +1 -1
  28. package/dist/{chunk-5gjqdbxb.js → chunk-bjqjdw34.js} +2 -2
  29. package/dist/chunk-c8zcyvss.js +1 -0
  30. package/dist/{chunk-hbbpe5f0.js → chunk-cdy9efgm.js} +1 -1
  31. package/dist/chunk-dc64v4sa.js +1 -0
  32. package/dist/{chunk-s1xp6g8m.js → chunk-dktrankr.js} +1 -1
  33. package/dist/chunk-e7pssnr9.js +1 -0
  34. package/dist/chunk-eq99gcj8.js +1 -0
  35. package/dist/{chunk-y51v2jvh.js → chunk-f99n8812.js} +2 -2
  36. package/dist/{chunk-015t2dey.js → chunk-gezg1mpa.js} +1 -1
  37. package/dist/{chunk-1jm8njkw.js → chunk-h0ft81a3.js} +1 -1
  38. package/dist/{chunk-5ntrhs8k.js → chunk-ha50z8dp.js} +1 -1
  39. package/dist/{chunk-k4t45b64.js → chunk-hat9v5c5.js} +1 -1
  40. package/dist/{chunk-arzhhj0e.js → chunk-hcv17986.js} +1 -1
  41. package/dist/{chunk-zpwasxzh.js → chunk-j38jh128.js} +2 -2
  42. package/dist/chunk-jmjn6zcc.js +1 -0
  43. package/dist/{chunk-d39xaa7w.js → chunk-k0pa8874.js} +1 -1
  44. package/dist/{chunk-pfmmvpfh.js → chunk-k99r5c4v.js} +3 -3
  45. package/dist/chunk-kmarzy98.js +1 -0
  46. package/dist/{chunk-m6a1c1tg.js → chunk-kv0bkxhd.js} +1 -1
  47. package/dist/{chunk-2yxdneb9.js → chunk-m57w4p91.js} +1 -1
  48. package/dist/{chunk-4t89y8nj.js → chunk-nt55nz8d.js} +40 -40
  49. package/dist/chunk-p0b4mv7e.js +10 -0
  50. package/dist/{chunk-6tacv9rs.js → chunk-ppsvzgs5.js} +2 -2
  51. package/dist/{chunk-e11kmyt3.js → chunk-pzb5sqwd.js} +1 -1
  52. package/dist/{chunk-9yvw5xy3.js → chunk-q3mfescm.js} +2 -2
  53. package/dist/{chunk-98qmtexa.js → chunk-qdah5kkc.js} +243 -243
  54. package/dist/{chunk-rd7jwwse.js → chunk-rf01e14b.js} +1 -1
  55. package/dist/chunk-rhs1dv6w.js +1 -0
  56. package/dist/{chunk-53tb8vvv.js → chunk-s7jsadnc.js} +2 -2
  57. package/dist/{chunk-793067rd.js → chunk-t2gq918a.js} +2 -2
  58. package/dist/chunk-t89q7d03.js +22 -0
  59. package/dist/{chunk-gafk33py.js → chunk-t8xmh4w2.js} +1 -1
  60. package/dist/{chunk-9ebwtazz.js → chunk-te21eb71.js} +1 -1
  61. package/dist/{chunk-edd8n5r0.js → chunk-th4jjfgm.js} +1 -1
  62. package/dist/{chunk-7mdbwjxj.js → chunk-v0rsz1rt.js} +1 -1
  63. package/dist/{chunk-z228cmc5.js → chunk-w6p2hcfw.js} +1 -1
  64. package/dist/{chunk-ejsggxs4.js → chunk-xny9q252.js} +2 -2
  65. package/dist/chunk-xz6y0w4n.js +2 -0
  66. package/dist/{chunk-rabt8yyf.js → chunk-ybv6stfh.js} +2 -2
  67. package/dist/{chunk-5ha0vf37.js → chunk-yn51162x.js} +1 -1
  68. package/dist/{chunk-eharmsjt.js → chunk-ypqp368c.js} +2 -2
  69. package/dist/{chunk-r94jtbd2.js → chunk-yvg961q3.js} +1 -1
  70. package/dist/chunk-yy6h97k0.js +1 -0
  71. package/dist/{chunk-a49dy92d.js → chunk-zdxxqchm.js} +2 -2
  72. package/dist/chunk-zk42hrdh.js +1 -0
  73. package/dist/{chunk-bnp9asmd.js → chunk-zvz2cnt4.js} +1 -1
  74. package/dist/web/assets/{ChatView-Jfq-sqKG.js → ChatView-BVrhnE2j.js} +6 -6
  75. package/dist/web/assets/{CodeBlockHighlighter-C9DvlG-V.js → CodeBlockHighlighter-Dy7QpAmC.js} +1 -1
  76. package/dist/web/assets/{FilePreview-YPtQcXr3.js → FilePreview-BI3nkxz1.js} +2 -2
  77. package/dist/web/assets/KanbanBoard-D5dYOyPH.js +1 -0
  78. package/dist/web/assets/{MarkdownRenderer-CpUKw2Gk.js → MarkdownRenderer-Da1vB81L.js} +12 -12
  79. package/dist/web/assets/{SettingsModal-BfDHa4xn.js → SettingsModal-jcCFqLqS.js} +2 -2
  80. package/dist/web/assets/TaskSwitcher-CQ--jOLB.js +1 -0
  81. package/dist/web/assets/{TerminalPanel-CDq3_gCr.js → TerminalPanel-CWzjEXOb.js} +1 -1
  82. package/dist/web/assets/index-BOgOL4hG.js +11 -0
  83. package/dist/web/assets/index-DbWgTuT3.css +1 -0
  84. package/dist/web/assets/{vendor-icons-ICv1v-tf.js → vendor-icons-B63aW_OM.js} +82 -62
  85. package/dist/web/index.html +3 -3
  86. package/package.json +2 -2
  87. package/dist/chunk-0h74p1h8.js +0 -1
  88. package/dist/chunk-18nkg8hr.js +0 -1
  89. package/dist/chunk-197qz36b.js +0 -1
  90. package/dist/chunk-2vdq0fav.js +0 -1
  91. package/dist/chunk-4a75gwa1.js +0 -1
  92. package/dist/chunk-76ks3ygm.js +0 -10
  93. package/dist/chunk-8wvk5rgg.js +0 -1
  94. package/dist/chunk-98vestg4.js +0 -22
  95. package/dist/chunk-b7p7ywe6.js +0 -1
  96. package/dist/chunk-cxc2q3yy.js +0 -1
  97. package/dist/chunk-fv3aggr5.js +0 -1
  98. package/dist/chunk-fz60jh3y.js +0 -2
  99. package/dist/chunk-m19xed90.js +0 -1
  100. package/dist/chunk-mr5c4yzr.js +0 -1
  101. package/dist/chunk-pr8a6xfm.js +0 -1
  102. package/dist/chunk-pwehsv52.js +0 -159
  103. package/dist/chunk-w4eskwzj.js +0 -1
  104. package/dist/chunk-y8zk4r3y.js +0 -1
  105. package/dist/web/assets/TaskSwitcher-DacXxQcV.js +0 -1
  106. package/dist/web/assets/index-Dxdnbd79.css +0 -1
  107. package/dist/web/assets/index-t4mGaG1Z.js +0 -11
@@ -0,0 +1,10 @@
1
+ import{f as T,g as W,h as X,i as Y}from"./chunk-kv0bkxhd.js";import"./chunk-dktrankr.js";import"./chunk-yvg961q3.js";import"./chunk-a2594p5r.js";import"./chunk-1c69c4rd.js";import"./chunk-0qtrv97b.js";import"./chunk-qdah5kkc.js";import"./chunk-pzb5sqwd.js";import"./chunk-5147jh26.js";import"./chunk-69j98a7j.js";import"./chunk-th4jjfgm.js";import"./chunk-8nmwft1y.js";import"./chunk-0wxkymqv.js";import"./chunk-zdxxqchm.js";import{qd as R}from"./chunk-xny9q252.js";import"./chunk-bjqjdw34.js";import{Md as Q}from"./chunk-a3xnd8cg.js";import"./chunk-v508x7cg.js";import"./chunk-0j22w4wh.js";import"./chunk-2kkpn41a.js";import"./chunk-f99n8812.js";import"./chunk-yn51162x.js";import"./chunk-b66veqye.js";import"./chunk-2xk6m4fc.js";import"./chunk-hat9v5c5.js";import"./chunk-cdy9efgm.js";import"./chunk-zvz2cnt4.js";import"./chunk-k99r5c4v.js";import"./chunk-m57w4p91.js";import"./chunk-abef6dq1.js";import"./chunk-h0ft81a3.js";import"./chunk-v0rsz1rt.js";import"./chunk-xz6y0w4n.js";import"./chunk-k0pa8874.js";import"./chunk-6pyktfa4.js";import"./chunk-98n2rxmq.js";import"./chunk-ypqp368c.js";import"./chunk-t8xmh4w2.js";import{jh as M}from"./chunk-j38jh128.js";import"./chunk-t2gq918a.js";import"./chunk-5d2cdvdy.js";import"./chunk-ppsvzgs5.js";import"./chunk-hcv17986.js";import m from"chalk";import K from"open";var A=`
2
+ ____ _ _
3
+ | __ )| | __ _ __| | ___
4
+ | _ \\| |/ _\` |/ _\` |/ _ \\
5
+ | |_) | | (_| | (_| | __/
6
+ |____/|_|\\__,_|\\__,_|\\___|
7
+ `,C={command:"web",describe:"Start Blade server and open web interface",builder:T,handler:async(Z)=>{let H=W(Z);if(await Q(),!process.env.BLADE_SERVER_PASSWORD)console.log(m.yellow("[WARN] BLADE_SERVER_PASSWORD is not set; server is unsecured.")),console.log(m.gray(` Set this environment variable to enable Basic Auth.
8
+ `));let F=await Y.listenAsync(H);if(console.log(m.cyan(A)),console.log(m.gray(` v${M()}
9
+ `)),H.hostname==="0.0.0.0"){let q=`http://localhost:${F.port}`;console.log(m.blue.bold(" Local access: "),m.white(q));let x=X();for(let z of x)console.log(m.blue.bold(" Network access: "),m.white(`http://${z}:${F.port}`));K(q).catch(()=>{})}else{let q=F.url.toString();console.log(m.blue.bold(" Web interface: "),m.white(q)),K(q).catch(()=>{})}console.log(""),console.log(m.gray(` Press Ctrl+C to stop the server.
10
+ `));let J,$=new Promise((q)=>{J=q}),b=R(async()=>{await F.stop(),J()});try{await $}finally{b(),await F.stop()}}};export{C as webCommand};
@@ -1,2 +1,2 @@
1
- import{zh as F}from"./chunk-arzhhj0e.js";import{execSync as G}from"node:child_process";import*as C from"node:os";import*as v from"node:path";function H(k){return v.resolve(k).replace(/[/\\]/g,"-").replace(/:/g,"_")}function M(k){let q=k.replace(/_/g,":");if(q.startsWith("-"))q="/"+q.slice(1);return q.replace(/-/g,"/")}function z(k){let q=H(k);return v.join(E(),"projects",q)}function J(k){return typeof k==="string"&&k!=="."&&k!==".."&&/^[A-Za-z0-9_-][A-Za-z0-9._-]{0,199}$/.test(k)}function A(k){if(!J(k))throw Error(`Invalid session ID: ${k}`)}function N(k,q){return A(q),v.join(z(k),`${q}.jsonl`)}function O(k,q){return A(q),v.join(z(k),`${q}.inbox.json`)}function Q(k,q){return A(q),v.join(z(k),`${q}.goal.json`)}function T(k){try{return G("git rev-parse --abbrev-ref HEAD",{cwd:k,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function E(){return process.env.BLADE_STORAGE_ROOT||v.join(C.homedir(),".blade")}async function U(){let{readdir:k}=await import("node:fs/promises");try{let q=v.join(E(),"projects");return(await k(q,{withFileTypes:!0})).filter((w)=>w.isDirectory()).map((w)=>w.name)}catch{return[]}}
2
- export{M as ph,z as qh,J as rh,A as sh,N as th,O as uh,Q as vh,T as wh,E as xh,U as yh};
1
+ import{Bh as F}from"./chunk-hcv17986.js";import{execSync as G}from"node:child_process";import*as C from"node:os";import*as v from"node:path";function H(k){return v.resolve(k).replace(/[/\\]/g,"-").replace(/:/g,"_")}function M(k){let q=k.replace(/_/g,":");if(q.startsWith("-"))q="/"+q.slice(1);return q.replace(/-/g,"/")}function z(k){let q=H(k);return v.join(E(),"projects",q)}function J(k){return typeof k==="string"&&k!=="."&&k!==".."&&/^[A-Za-z0-9_-][A-Za-z0-9._-]{0,199}$/.test(k)}function A(k){if(!J(k))throw Error(`Invalid session ID: ${k}`)}function N(k,q){return A(q),v.join(z(k),`${q}.jsonl`)}function O(k,q){return A(q),v.join(z(k),`${q}.inbox.json`)}function Q(k,q){return A(q),v.join(z(k),`${q}.goal.json`)}function T(k){try{return G("git rev-parse --abbrev-ref HEAD",{cwd:k,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function E(){return process.env.BLADE_STORAGE_ROOT||v.join(C.homedir(),".blade")}async function U(){let{readdir:k}=await import("node:fs/promises");try{let q=v.join(E(),"projects");return(await k(q,{withFileTypes:!0})).filter((w)=>w.isDirectory()).map((w)=>w.name)}catch{return[]}}
2
+ export{M as rh,z as sh,J as th,A as uh,N as vh,O as wh,Q as xh,T as yh,E as zh,U as Ah};
@@ -1,4 +1,4 @@
1
- import{Gb as Xt,Hb as bn,Ib as Tn,Jb as fn}from"./chunk-edd8n5r0.js";import{Pc as jt}from"./chunk-eg5mh9m9.js";import{Ze as Bt}from"./chunk-pfmmvpfh.js";import{Af as Ht,Bf as Ut,Cf as h,Df as qt,cf as xt,df as tn,ef as en,ff as zt,gf as U,hf as rn,if as gt,jf as mt,lf as dn,mf as En,nf as B,of as on,pf as pn,qf as cn,rf as lt,sf as un,tf as Mn,uf as wn,wf as S,zf as yn}from"./chunk-svczh6hn.js";import{ig as X,kg as x}from"./chunk-7mdbwjxj.js";import{ug as vt}from"./chunk-d39xaa7w.js";import{hh as nn,ih as sn}from"./chunk-zpwasxzh.js";import{zh as ss}from"./chunk-arzhhj0e.js";import{EventEmitter as hs}from"events";import Bn from"node:path";function An(t){if(t===void 0)return"undefined";if(typeof t==="string")return t;try{let i=JSON.stringify(t);return i===void 0?String(t):i}catch{return String(t)}}function _n(t){let i=t;switch(t.code){case"type":return`类型错误:${t.message}`;case"required":return"缺少必需参数";case"minLength":return`字符串过短:${t.message}`;case"maxLength":return`字符串过长:${t.message}`;case"minimum":case"exclusiveMinimum":return`数值太小:${t.message}`;case"maximum":case"exclusiveMaximum":return`数值太大:${t.message}`;case"minItems":return`数组元素过少:${t.message}`;case"maxItems":return`数组元素过多:${t.message}`;case"format":return`格式错误:${t.message}`;case"enum":return`必须是枚举允许的值之一:${t.message}`;case"const":return`必须是指定的字面量值:${t.message}`;case"additionalProperties":case"unevaluatedProperties":return`包含未知参数:${t.message}`;case"anyOf":case"oneOf":return"不符合任何有效的类型定义";case"~refine":return t.message||"自定义验证失败";default:return t.message||`验证失败:${An(i)}`}}class Jt extends Error{issues;type;constructor(t,i,n="validation_error"){super(t);this.issues=i;this.type=n;this.name="ToolValidationError"}}function Vt(t,i){let n=X(t,i);if(n.success)return n.data;let s=n.error.issues.map((r)=>({field:r.path.length>0?r.path.join("."):"root",message:_n(r),value:r.value})),e=s.length===1?`参数验证失败 [${s[0].field}]: ${s[0].message}`:`参数验证失败 (${s.length} 个错误):
1
+ import{Hb as Xt,Ib as bn,Jb as Tn,Kb as fn}from"./chunk-th4jjfgm.js";import{Rc as jt}from"./chunk-0wxkymqv.js";import{$e as Bt}from"./chunk-k99r5c4v.js";import{Bf as yn,Cf as Ht,Df as Ut,Ef as h,Ff as qt,ef as xt,ff as tn,gf as en,hf as zt,if as U,jf as rn,kf as gt,lf as mt,nf as dn,of as En,pf as B,qf as on,rf as pn,sf as cn,tf as lt,uf as un,vf as Mn,wf as wn,yf as S}from"./chunk-abef6dq1.js";import{kg as X,mg as x}from"./chunk-v0rsz1rt.js";import{wg as vt}from"./chunk-k0pa8874.js";import{jh as nn,kh as sn}from"./chunk-j38jh128.js";import{Bh as ss}from"./chunk-hcv17986.js";import{EventEmitter as hs}from"events";import Bn from"node:path";function An(t){if(t===void 0)return"undefined";if(typeof t==="string")return t;try{let i=JSON.stringify(t);return i===void 0?String(t):i}catch{return String(t)}}function _n(t){let i=t;switch(t.code){case"type":return`类型错误:${t.message}`;case"required":return"缺少必需参数";case"minLength":return`字符串过短:${t.message}`;case"maxLength":return`字符串过长:${t.message}`;case"minimum":case"exclusiveMinimum":return`数值太小:${t.message}`;case"maximum":case"exclusiveMaximum":return`数值太大:${t.message}`;case"minItems":return`数组元素过少:${t.message}`;case"maxItems":return`数组元素过多:${t.message}`;case"format":return`格式错误:${t.message}`;case"enum":return`必须是枚举允许的值之一:${t.message}`;case"const":return`必须是指定的字面量值:${t.message}`;case"additionalProperties":case"unevaluatedProperties":return`包含未知参数:${t.message}`;case"anyOf":case"oneOf":return"不符合任何有效的类型定义";case"~refine":return t.message||"自定义验证失败";default:return t.message||`验证失败:${An(i)}`}}class Jt extends Error{issues;type;constructor(t,i,n="validation_error"){super(t);this.issues=i;this.type=n;this.name="ToolValidationError"}}function Vt(t,i){let n=X(t,i);if(n.success)return n.data;let s=n.error.issues.map((r)=>({field:r.path.length>0?r.path.join("."):"root",message:_n(r),value:r.value})),e=s.length===1?`参数验证失败 [${s[0].field}]: ${s[0].message}`:`参数验证失败 (${s.length} 个错误):
2
2
  ${s.map((r)=>` - ${r.field}: ${r.message}`).join(`
3
3
  `)}`;throw new Jt(e,s)}function st(t){if(!t||typeof t!=="object")return;let i=t;if(i.type==="object"&&i.properties)i.required??=[],i.additionalProperties??=!1;for(let n of Object.values(i))if(Array.isArray(n))for(let s of n)st(s);else st(n)}function et(t){let i=JSON.parse(JSON.stringify(t,(n,s)=>n.startsWith("~")?void 0:s));return st(i),i}class rt{toolName;params;executeFn;descriptionFn;affectedPathsFn;constructor(t,i,n,s,e){this.toolName=t;this.params=i;this.executeFn=n;this.descriptionFn=s;this.affectedPathsFn=e}getDescription(){if(this.descriptionFn)return this.descriptionFn(this.params);return`执行工具: ${this.toolName}`}getAffectedPaths(){if(this.affectedPathsFn)return this.affectedPathsFn(this.params);return[]}async execute(t,i,n){let s={signal:t,updateOutput:i,...n};return this.executeFn(this.params,s)}}function Gt(t){return{name:t.name,displayName:t.displayName,kind:t.kind,isReadOnly:t.isReadOnly??jt(t.kind),isConcurrencySafe:t.isConcurrencySafe??!1,parallelism:t.parallelism??(t.isConcurrencySafe?"shared":"exclusive"),strict:t.strict??!1,description:t.description,version:t.version||"1.0.0",category:t.category,tags:t.tags||[],getFunctionDeclaration(){let i=et(t.schema),n=t.description.short;if(t.description.long)n+=`
4
4
 
@@ -1,4 +1,4 @@
1
- import"./chunk-v508x7cg.js";import{eg as Q}from"./chunk-svczh6hn.js";import"./chunk-1jm8njkw.js";import"./chunk-7mdbwjxj.js";import"./chunk-fz60jh3y.js";import{ug as L}from"./chunk-d39xaa7w.js";import"./chunk-ngmajm4h.js";import"./chunk-1vt7e9e7.js";import"./chunk-eharmsjt.js";import"./chunk-gafk33py.js";import"./chunk-zpwasxzh.js";import"./chunk-793067rd.js";import"./chunk-aphcj8rz.js";import"./chunk-6tacv9rs.js";import{zh as F}from"./chunk-arzhhj0e.js";var K=[22,19,0];function T(G){let A=/^v?(\d+)\.(\d+)\.(\d+)/.exec(G);if(!A)return!1;let H=A.slice(1).map(Number);for(let z=0;z<K.length;z++){let B=H[z]??0,J=K[z];if(B!==J)return B>J}return!0}var X={command:"doctor",describe:"Check the health of your Blade installation",builder:(G)=>G.option("rebuild-index",{type:"boolean",default:!1,describe:"Rebuild the SQLite session index from JSONL transcripts"}),handler:async(G)=>{if(G.rebuildIndex){console.log(`Rebuilding session index from JSONL transcripts...
2
- `);try{let{rebuildProjectionIndex:z}=await import("./chunk-2vdq0fav.js"),{SessionService:B}=await import("./chunk-197qz36b.js"),J=await z(B.projectionDeriverForSearch());if(J===null)console.log("[WARN] Session index unavailable (SQLite driver missing); reads fall back to JSONL scan.");else console.log(`[OK] Session index rebuilt: ${J} session(s) indexed.`)}catch(z){console.log("[FAIL] Session index rebuild failed"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),process.exit(1)}return}console.log(`Running Blade health check...
1
+ import"./chunk-v508x7cg.js";import{gg as Q}from"./chunk-abef6dq1.js";import"./chunk-h0ft81a3.js";import"./chunk-v0rsz1rt.js";import"./chunk-xz6y0w4n.js";import{wg as L}from"./chunk-k0pa8874.js";import"./chunk-6pyktfa4.js";import"./chunk-98n2rxmq.js";import"./chunk-ypqp368c.js";import"./chunk-t8xmh4w2.js";import"./chunk-j38jh128.js";import"./chunk-t2gq918a.js";import"./chunk-5d2cdvdy.js";import"./chunk-ppsvzgs5.js";import{Bh as F}from"./chunk-hcv17986.js";var K=[22,19,0];function T(G){let A=/^v?(\d+)\.(\d+)\.(\d+)/.exec(G);if(!A)return!1;let H=A.slice(1).map(Number);for(let z=0;z<K.length;z++){let B=H[z]??0,J=K[z];if(B!==J)return B>J}return!0}var X={command:"doctor",describe:"Check the health of your Blade installation",builder:(G)=>G.option("rebuild-index",{type:"boolean",default:!1,describe:"Rebuild the SQLite session index from JSONL transcripts"}),handler:async(G)=>{if(G.rebuildIndex){console.log(`Rebuilding session index from JSONL transcripts...
2
+ `);try{let{rebuildProjectionIndex:z}=await import("./chunk-kmarzy98.js"),{SessionService:B}=await import("./chunk-0scxrkcf.js"),J=await z(B.projectionDeriverForSearch());if(J===null)console.log("[WARN] Session index unavailable (SQLite driver missing); reads fall back to JSONL scan.");else console.log(`[OK] Session index rebuilt: ${J} session(s) indexed.`)}catch(z){console.log("[FAIL] Session index rebuild failed"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),process.exit(1)}return}console.log(`Running Blade health check...
3
3
  `);let A=0;try{await Q.getInstance().initialize(),console.log("[OK] Configuration: OK")}catch(z){console.log("[FAIL] Configuration: FAILED"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),A++}let H=process.version;if(T(H))console.log(`[OK] Node.js version: ${H}`);else console.log(`[WARN] Node.js version: ${H} (required: >=22.19.0)`),A++;try{let z=await import("fs/promises"),B=L();await z.access(B,(await import("fs")).constants.R_OK|(await import("fs")).constants.W_OK),console.log("[OK] File system permissions: OK")}catch(z){console.log("[FAIL] File system permissions: FAILED"),console.log(" Error: Cannot read/write in current directory"),A++}try{await import("ink"),console.log("[OK] Dependencies: OK")}catch(z){console.log("[FAIL] Dependencies: FAILED"),console.log(" Error: Missing required dependencies"),A++}if(console.log(`
4
4
  Health Check Summary:`),A===0)console.log("All checks passed! Blade is ready to use.");else console.log(`Warning: Found ${A} issue(s). Please resolve them for optimal performance.`),process.exit(1)}};export{T as isSupportedNodeVersion,X as doctorCommands};