blade-code 0.10.2 → 0.10.4

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 (108) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-8nm1hqr1.js → chunk-0n97186m.js} +2 -2
  3. package/dist/{chunk-t8q9ks7e.js → chunk-15d49qty.js} +1 -1
  4. package/dist/{chunk-tm2ckreq.js → chunk-1ndryz4h.js} +20 -20
  5. package/dist/{chunk-d9ddpapp.js → chunk-35yktzm1.js} +1 -1
  6. package/dist/chunk-4ncbd4k0.js +1 -0
  7. package/dist/{chunk-qhf0knnx.js → chunk-5t0vs4hz.js} +1 -1
  8. package/dist/{chunk-zkbf8n6y.js → chunk-5twefby5.js} +1 -1
  9. package/dist/{chunk-ct32ngah.js → chunk-5ze48kg7.js} +8 -8
  10. package/dist/{chunk-sndbq5xt.js → chunk-63ysxybd.js} +1 -1
  11. package/dist/{chunk-nah0cbnp.js → chunk-6tx8k249.js} +2 -2
  12. package/dist/chunk-7443b95r.js +1 -0
  13. package/dist/chunk-79s052sw.js +2 -0
  14. package/dist/{chunk-e2ccyhgz.js → chunk-90fnvvcf.js} +1 -1
  15. package/dist/{chunk-6n5xdf2r.js → chunk-948qe2pp.js} +1 -1
  16. package/dist/{chunk-mjp61rqd.js → chunk-9ffr01c3.js} +1 -1
  17. package/dist/chunk-9kwt0w46.js +180 -0
  18. package/dist/chunk-a7a74pza.js +1484 -0
  19. package/dist/{chunk-5tfzehcg.js → chunk-age5tc86.js} +3 -3
  20. package/dist/{chunk-44wkjs2j.js → chunk-an96c54z.js} +2 -2
  21. package/dist/{chunk-m9zpxzg2.js → chunk-b9v7waxf.js} +2 -2
  22. package/dist/{chunk-2beq0syt.js → chunk-bexgcc2d.js} +1 -1
  23. package/dist/chunk-ccwskwb3.js +1 -0
  24. package/dist/{chunk-bpzv054r.js → chunk-csr5vppa.js} +8 -8
  25. package/dist/chunk-d4zw0xxe.js +1 -0
  26. package/dist/chunk-d5a66cgn.js +160 -0
  27. package/dist/chunk-d7xb0vp1.js +1 -0
  28. package/dist/{chunk-af49jmns.js → chunk-dqvcgwhe.js} +2 -2
  29. package/dist/{chunk-kq5my0yy.js → chunk-drrdzmaa.js} +2 -2
  30. package/dist/{chunk-px5ck9pf.js → chunk-ea7wsges.js} +2 -2
  31. package/dist/{chunk-vjpd3nee.js → chunk-epj56s0n.js} +1 -1
  32. package/dist/chunk-f647z66n.js +1 -0
  33. package/dist/{chunk-2km4w0ky.js → chunk-ffp3ypbb.js} +2 -2
  34. package/dist/{chunk-0h81hxkw.js → chunk-fvhc1yj8.js} +1 -1
  35. package/dist/{chunk-k9a1vb8a.js → chunk-fx87s3mb.js} +2 -2
  36. package/dist/chunk-g6h6h8xr.js +1 -0
  37. package/dist/{chunk-d3236505.js → chunk-gb54hc78.js} +1 -1
  38. package/dist/{chunk-fjw32ex5.js → chunk-gxmrakrk.js} +1 -1
  39. package/dist/{chunk-a7nbn5kf.js → chunk-gxzbv67r.js} +2 -2
  40. package/dist/chunk-jbnrscvz.js +1 -0
  41. package/dist/{chunk-88vy9hh0.js → chunk-jza1rsan.js} +1 -1
  42. package/dist/chunk-kkd7mm55.js +1 -0
  43. package/dist/{chunk-ws3gc024.js → chunk-mxqpg4gy.js} +1 -1
  44. package/dist/chunk-n2s54h1r.js +1 -0
  45. package/dist/{chunk-k89phc5j.js → chunk-nr53mq0k.js} +2 -2
  46. package/dist/chunk-pehpndk9.js +1 -0
  47. package/dist/{chunk-jxv6r0c7.js → chunk-qda309d9.js} +2 -2
  48. package/dist/{chunk-beqaxytd.js → chunk-qm11hjd3.js} +1 -1
  49. package/dist/{chunk-y0hwzmdn.js → chunk-rv80ak15.js} +1 -1
  50. package/dist/{chunk-8mepk4tc.js → chunk-scq3ns6v.js} +2 -2
  51. package/dist/chunk-t8x2qpe2.js +1 -0
  52. package/dist/{chunk-4vaywb2r.js → chunk-tq52pbde.js} +1 -1
  53. package/dist/chunk-tx8f345j.js +1 -0
  54. package/dist/chunk-v8kp3ep9.js +6 -0
  55. package/dist/{chunk-vvy506b3.js → chunk-v93hcxe7.js} +1 -1
  56. package/dist/{chunk-rkzds6k8.js → chunk-ve9cke2g.js} +2 -2
  57. package/dist/{chunk-6sc78810.js → chunk-vxymgh8e.js} +5 -5
  58. package/dist/chunk-wdbmbk6h.js +10 -0
  59. package/dist/{chunk-gr5mzxdf.js → chunk-xkzy5wbm.js} +1 -1
  60. package/dist/{chunk-m5tjrr5c.js → chunk-xq8vf15n.js} +2 -2
  61. package/dist/{chunk-th7sxjtk.js → chunk-ydtcvxsm.js} +1 -1
  62. package/dist/{chunk-wvj9h7mb.js → chunk-ygx03mdh.js} +1 -1
  63. package/dist/chunk-ys8bp9jm.js +1 -0
  64. package/dist/{chunk-6hj2dk75.js → chunk-z906d5tb.js} +2 -2
  65. package/dist/chunk-zswrw5f9.js +3 -0
  66. package/dist/chunk-zyz82mcd.js +1 -0
  67. package/dist/web/assets/{ChatView-CnwNosSG.js → ChatView-iK7ff8qU.js} +5 -5
  68. package/dist/web/assets/{CodeBlockHighlighter-CBo_AxjZ.js → CodeBlockHighlighter-BoJp_Xb0.js} +1 -1
  69. package/dist/web/assets/{FilePreview-hNo6RCNY.js → FilePreview-Bi1HWOvY.js} +2 -2
  70. package/dist/web/assets/{MarkdownRenderer-BON4fqSr.js → MarkdownRenderer-DMW1pg5N.js} +3 -3
  71. package/dist/web/assets/McpModal-CHUqitJ6.js +5 -0
  72. package/dist/web/assets/SettingsModal-zsS9O6SW.js +1 -0
  73. package/dist/web/assets/SkillsModal-C2oTDXoy.js +1 -0
  74. package/dist/web/assets/{TaskSwitcher-Ds8CBVtp.js → TaskSwitcher-CncVasNA.js} +1 -1
  75. package/dist/web/assets/{TerminalPanel-Dm4bu6ib.js → TerminalPanel-CBi2mUxx.js} +1 -1
  76. package/dist/web/assets/index-B7etZcne.css +1 -0
  77. package/dist/web/assets/index-DvDtvgA4.js +32 -0
  78. package/dist/web/assets/useRequest-BvqVDnKl.js +1 -0
  79. package/dist/web/assets/{vendor-icons-CsBKlDXT.js → vendor-icons-D_AkWmWB.js} +70 -60
  80. package/dist/web/assets/{vendor-radix-DXRuAJHH.js → vendor-radix-DBy9B2DN.js} +1 -1
  81. package/dist/web/index.html +4 -4
  82. package/package.json +1 -1
  83. package/dist/chunk-0h9m2fqd.js +0 -160
  84. package/dist/chunk-1wyfb6s7.js +0 -1
  85. package/dist/chunk-3vyjshqp.js +0 -1
  86. package/dist/chunk-6g21dh3n.js +0 -1
  87. package/dist/chunk-asbp4cv4.js +0 -1
  88. package/dist/chunk-bqk3wqts.js +0 -1
  89. package/dist/chunk-cjdnfyy0.js +0 -1485
  90. package/dist/chunk-d8zj7c0t.js +0 -6
  91. package/dist/chunk-gafbzeyk.js +0 -1
  92. package/dist/chunk-jv4nkkb5.js +0 -1
  93. package/dist/chunk-m3tx1k0s.js +0 -1
  94. package/dist/chunk-m78ceafk.js +0 -1
  95. package/dist/chunk-nqq4sbmv.js +0 -1
  96. package/dist/chunk-p7ppnewt.js +0 -3
  97. package/dist/chunk-qev36qrb.js +0 -2
  98. package/dist/chunk-tckfyfsx.js +0 -1
  99. package/dist/chunk-xhpezpjq.js +0 -10
  100. package/dist/chunk-y5vq7gek.js +0 -174
  101. package/dist/chunk-ydqeg4p8.js +0 -1
  102. package/dist/chunk-yknrffcs.js +0 -1
  103. package/dist/chunk-ymmtbq2b.js +0 -1
  104. package/dist/chunk-z2yzyr9h.js +0 -1
  105. package/dist/web/assets/McpModal-Go_8v1Vu.js +0 -5
  106. package/dist/web/assets/SettingsModal-CRu1zGQf.js +0 -1
  107. package/dist/web/assets/index-BNsnHxlt.js +0 -32
  108. package/dist/web/assets/index-DVTiq-7u.css +0 -1
package/dist/blade.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{Hb as W}from"./chunk-5tfzehcg.js";import{Kb as F,Lb as M}from"./chunk-kq5my0yy.js";import"./chunk-m9zpxzg2.js";import"./chunk-gafbzeyk.js";import"./chunk-0h81hxkw.js";import"./chunk-6sc78810.js";import"./chunk-beqaxytd.js";import{cd as T}from"./chunk-jxv6r0c7.js";import"./chunk-bpzv054r.js";import"./chunk-4vaywb2r.js";import"./chunk-qev36qrb.js";import{ge as N,he as B}from"./chunk-vjpd3nee.js";import"./chunk-a7nbn5kf.js";import"./chunk-2beq0syt.js";import"./chunk-k89phc5j.js";import"./chunk-6hj2dk75.js";import"./chunk-6n5xdf2r.js";import"./chunk-8nm1hqr1.js";import{Le as K}from"./chunk-mjp61rqd.js";import C from"node:path";var E=process.argv.slice(2),I=p(E),v=I!==null;if(I!==null)T.setGlobalDebug(I);function p(Q){for(let Y=0;Y<Q.length;Y+=1){let U=Q[Y];if(U==="--debug"||U==="-d"){let X=Q[Y+1];return X&&!X.startsWith("-")?X:!0}if(U.startsWith("--debug="))return U.slice(8)||!0}return null}function u(Q){return Q.length===1&&(Q[0]==="--version"||Q[0]==="-V")}function q(Q,...Y){return Q.some((U)=>Y.some((X)=>U===X||U.startsWith(`${X}=`)))}function c(Q,...Y){let U=[];for(let X=0;X<Q.length;X+=1){let G=Q[X],z=Y.find(($)=>G.startsWith(`${$}=`));if(z){let $=G.slice(z.length+1);if($)U.push($);continue}if(Y.includes(G)){let $=Q[X+1];if($&&!$.startsWith("-"))U.push($),X+=1}}return U}async function m(){if(u(E)){let{getVersion:J}=await import("./chunk-bqk3wqts.js");console.log(J());return}let Q=process.cwd(),Y=F(Q);M(Y),N(B());let U=c(E,"--plugin-dir","--pluginDir");if(U.length>0){let{configureInvocationPluginDirs:J}=await import("./chunk-yknrffcs.js");J(U.map((Z)=>C.resolve(Q,Z)))}if(q(E,"--trust-workspace","--trustWorkspace")){let{WorkspaceTrustService:J}=await import("./chunk-6g21dh3n.js");await J.getInstance().trust(B())}if(process.getuid&&process.getuid()===0){let J=!!process.env.SUDO_USER,Z=!!process.env.BLADE_ALLOW_ROOT;if(J&&!Z)console.error(""),console.error("Error: 请不要使用 sudo 运行 blade"),console.error(""),console.error("原因:"),console.error(" 使用 sudo 会创建属于 root 的配置文件,"),console.error(" 导致普通用户无法访问。"),console.error(""),console.error("正确用法:"),console.error(" blade # 直接运行,不要加 sudo"),console.error(""),console.error("如果遇到权限错误,请运行:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("如果你确实需要以 root 运行(容器/CI),设置环境变量:"),console.error(" BLADE_ALLOW_ROOT=1 blade"),console.error(""),process.exit(1)}if(q(E,"--headless")){let{handleHeadlessMode:J}=await import("./chunk-d8zj7c0t.js");if(await J())return}if(W(),q(E,"--print","-p")){let{handlePrintMode:J}=await import("./chunk-gr5mzxdf.js");if(await J())return}if(E.includes("--acp")){let{runAcpIntegration:J}=await import("./chunk-ct32ngah.js");await J();return}let[{default:X},{hideBin:G},{cliConfig:z,globalOptions:$},{loadConfiguration:_,validateOutput:D,validatePermissions:R},{doctorCommands:S},{installCommands:k},{mcpCommands:O},{projectsCommands:y},{serveCommand:b},{updateCommands:V},{webCommand:P}]=await Promise.all([import("yargs"),import("yargs/helpers"),import("./chunk-1wyfb6s7.js"),import("./chunk-3vyjshqp.js"),import("./chunk-rkzds6k8.js"),import("./chunk-d3236505.js"),import("./chunk-y0hwzmdn.js"),import("./chunk-vvy506b3.js"),import("./chunk-ydqeg4p8.js"),import("./chunk-zkbf8n6y.js"),import("./chunk-xhpezpjq.js")]),x=X(G(process.argv)).scriptName(z.scriptName).usage(z.usage).version(z.version).locale(z.locale).showHelpOnFail(z.showHelpOnFail).demandCommand(0,"").recommendCommands().strict(z.strict).parserConfiguration({"populate--":!0}).options($).middleware([_,R,D]).command(O).command(y).command(S).command(V).command(k).command(P).command(b).completion("completion",!1).help("help","Show help").alias("help","h").alias("version","V").fail((J,Z,L)=>{if(Z){if(console.error("An error occurred:"),console.error(Z.message),v&&Z.stack)console.error(`
2
+ import{Rb as W}from"./chunk-age5tc86.js";import{Ub as F,Vb as M}from"./chunk-drrdzmaa.js";import"./chunk-b9v7waxf.js";import"./chunk-g6h6h8xr.js";import"./chunk-fvhc1yj8.js";import"./chunk-vxymgh8e.js";import"./chunk-qm11hjd3.js";import{md as T}from"./chunk-qda309d9.js";import"./chunk-csr5vppa.js";import"./chunk-tq52pbde.js";import"./chunk-79s052sw.js";import{qe as N,re as B}from"./chunk-epj56s0n.js";import"./chunk-gxzbv67r.js";import"./chunk-bexgcc2d.js";import"./chunk-nr53mq0k.js";import"./chunk-z906d5tb.js";import"./chunk-948qe2pp.js";import"./chunk-0n97186m.js";import{Ve as K}from"./chunk-9ffr01c3.js";import C from"node:path";var E=process.argv.slice(2),I=p(E),v=I!==null;if(I!==null)T.setGlobalDebug(I);function p(Q){for(let Y=0;Y<Q.length;Y+=1){let U=Q[Y];if(U==="--debug"||U==="-d"){let X=Q[Y+1];return X&&!X.startsWith("-")?X:!0}if(U.startsWith("--debug="))return U.slice(8)||!0}return null}function u(Q){return Q.length===1&&(Q[0]==="--version"||Q[0]==="-V")}function q(Q,...Y){return Q.some((U)=>Y.some((X)=>U===X||U.startsWith(`${X}=`)))}function c(Q,...Y){let U=[];for(let X=0;X<Q.length;X+=1){let G=Q[X],z=Y.find(($)=>G.startsWith(`${$}=`));if(z){let $=G.slice(z.length+1);if($)U.push($);continue}if(Y.includes(G)){let $=Q[X+1];if($&&!$.startsWith("-"))U.push($),X+=1}}return U}async function m(){if(u(E)){let{getVersion:J}=await import("./chunk-kkd7mm55.js");console.log(J());return}let Q=process.cwd(),Y=F(Q);M(Y),N(B());let U=c(E,"--plugin-dir","--pluginDir");if(U.length>0){let{configureInvocationPluginDirs:J}=await import("./chunk-tx8f345j.js");J(U.map((Z)=>C.resolve(Q,Z)))}if(q(E,"--trust-workspace","--trustWorkspace")){let{WorkspaceTrustService:J}=await import("./chunk-ccwskwb3.js");await J.getInstance().trust(B())}if(process.getuid&&process.getuid()===0){let J=!!process.env.SUDO_USER,Z=!!process.env.BLADE_ALLOW_ROOT;if(J&&!Z)console.error(""),console.error("Error: 请不要使用 sudo 运行 blade"),console.error(""),console.error("原因:"),console.error(" 使用 sudo 会创建属于 root 的配置文件,"),console.error(" 导致普通用户无法访问。"),console.error(""),console.error("正确用法:"),console.error(" blade # 直接运行,不要加 sudo"),console.error(""),console.error("如果遇到权限错误,请运行:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("如果你确实需要以 root 运行(容器/CI),设置环境变量:"),console.error(" BLADE_ALLOW_ROOT=1 blade"),console.error(""),process.exit(1)}if(q(E,"--headless")){let{handleHeadlessMode:J}=await import("./chunk-v8kp3ep9.js");if(await J())return}if(W(),q(E,"--print","-p")){let{handlePrintMode:J}=await import("./chunk-xkzy5wbm.js");if(await J())return}if(E.includes("--acp")){let{runAcpIntegration:J}=await import("./chunk-5ze48kg7.js");await J();return}let[{default:X},{hideBin:G},{cliConfig:z,globalOptions:$},{loadConfiguration:_,validateOutput:D,validatePermissions:R},{doctorCommands:S},{installCommands:k},{mcpCommands:O},{projectsCommands:y},{serveCommand:b},{updateCommands:V},{webCommand:P}]=await Promise.all([import("yargs"),import("yargs/helpers"),import("./chunk-ys8bp9jm.js"),import("./chunk-jbnrscvz.js"),import("./chunk-ve9cke2g.js"),import("./chunk-gb54hc78.js"),import("./chunk-rv80ak15.js"),import("./chunk-v93hcxe7.js"),import("./chunk-d4zw0xxe.js"),import("./chunk-5twefby5.js"),import("./chunk-wdbmbk6h.js")]),x=X(G(process.argv)).scriptName(z.scriptName).usage(z.usage).version(z.version).locale(z.locale).showHelpOnFail(z.showHelpOnFail).demandCommand(0,"").recommendCommands().strict(z.strict).parserConfiguration({"populate--":!0}).options($).middleware([_,R,D]).command(O).command(y).command(S).command(V).command(k).command(P).command(b).completion("completion",!1).help("help","Show help").alias("help","h").alias("version","V").fail((J,Z,L)=>{if(Z){if(console.error("An error occurred:"),console.error(Z.message),v&&Z.stack)console.error(`
3
3
  Stack trace:`),console.error(Z.stack);else console.error(`
4
4
  Run with --debug to show the stack trace.`);process.exit(1)}if(J)console.error("Error: Invalid arguments:"),console.error(J),console.error(`
5
- Hint: Did you mean:`),L.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(J)=>{let Z=J._.slice(1),L=Z.length>0?Z.join(" "):void 0,h=import("./chunk-m78ceafk.js").then(({checkVersionOnStartup:j})=>j()),[{render:A},{createElement:w},{AppWrapper:f}]=await Promise.all([import("ink"),import("react"),import("./chunk-0h9m2fqd.js")]),H={...J,initialMessage:L,debug:J.debug,print:Boolean(J.print),versionCheckPromise:h};delete H._,delete H.$0,delete H.message,A(w(f,H),{patchConsole:!0,exitOnCtrlC:!1,alternateBuffer:!1})});try{await x.parse()}catch(J){console.error("Error: Parse error:",J),process.exit(1)}}if(K.main==K.module)m().catch(console.error);export{m as main};
5
+ Hint: Did you mean:`),L.showHelp(),process.exit(1)}).command("$0",!1,()=>{},async(J)=>{let Z=J._.slice(1),L=Z.length>0?Z.join(" "):void 0,h=import("./chunk-4ncbd4k0.js").then(({checkVersionOnStartup:j})=>j()),[{render:A},{createElement:w},{AppWrapper:f}]=await Promise.all([import("ink"),import("react"),import("./chunk-d5a66cgn.js")]),H={...J,initialMessage:L,debug:J.debug,print:Boolean(J.print),versionCheckPromise:h};delete H._,delete H.$0,delete H.message,A(w(f,H),{patchConsole:!0,exitOnCtrlC:!1,alternateBuffer:!1})});try{await x.parse()}catch(J){console.error("Error: Parse error:",J),process.exit(1)}}if(K.main==K.module)m().catch(console.error);export{m as main};
@@ -1,2 +1,2 @@
1
- import{Le as F}from"./chunk-mjp61rqd.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 Be,z as Ce,J as De,A as Ee,N as Fe,O as Ge,Q as He,T as Ie,E as Je,U as Ke};
1
+ import{Ve as F}from"./chunk-9ffr01c3.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 Le,z as Me,J as Ne,A as Oe,N as Pe,O as Qe,Q as Re,T as Se,E as Te,U as Ue};
@@ -1,3 +1,3 @@
1
- import{Ie as $,Je as F}from"./chunk-8nm1hqr1.js";import{promises as J}from"node:fs";import Q from"node:path";import{Mutex as U}from"async-mutex";import w from"write-file-atomic";var X=1;function D(k){if(!k||typeof k!=="object"||Array.isArray(k))return!1;let q=k;return typeof q.path==="string"&&Q.isAbsolute(q.path)&&typeof q.boundAt==="string"}async function Z(k){if(!Q.isAbsolute(k))throw Error("Project path must be absolute");let q=await J.realpath(k);if(!(await J.stat(q)).isDirectory())throw Error("Project path must be a directory");return q}class K{filePath;mutex=new U;constructor(k=Q.join(F(),"bound-projects.json")){this.filePath=k}async list(k){let q=await this.read(),z=await Z(k),H=new Map;for(let C of q.projects)H.set(C.path,C);if(!H.has(z))H.set(z,{path:z,boundAt:new Date(0).toISOString()});return(await Promise.all([...H.values()].map(async(C)=>{let L=!1;try{L=(await J.stat(C.path)).isDirectory()}catch{}return{path:C.path,name:Q.basename(C.path)||C.path,...L?{gitBranch:$(C.path)}:{},available:L,isCurrent:C.path===z,boundAt:C.boundAt}}))).sort((C,L)=>{if(C.isCurrent!==L.isCurrent)return C.isCurrent?-1:1;return C.name.localeCompare(L.name)})}async bind(k,q){return this.mutex.runExclusive(async()=>{let z=await Z(k),H=await this.read(),W=H.projects.find((M)=>M.path===z),C=W??{path:z,boundAt:new Date().toISOString()};if(!W)H.projects.push(C),await this.write(H);let L=await Z(q),A=$(z);return{path:z,name:Q.basename(z)||z,...A?{gitBranch:A}:{},available:!0,isCurrent:z===L,boundAt:C.boundAt}})}async unbind(k){return this.mutex.runExclusive(async()=>{if(!Q.isAbsolute(k))throw Error("Project path must be absolute");let q=await J.realpath(k).catch(()=>Q.resolve(k)),z=await this.read(),H=z.projects.filter((W)=>W.path!==q);if(H.length===z.projects.length)return!1;return z.projects=H,await this.write(z),!0})}async read(){try{let k=await J.readFile(this.filePath,"utf8"),q=JSON.parse(k);if(q.version!==X||!Array.isArray(q.projects))return{version:X,projects:[]};return{version:X,projects:q.projects.filter(D)}}catch(k){if(k.code==="ENOENT"||k instanceof SyntaxError)return{version:X,projects:[]};throw k}}async write(k){let q=Q.dirname(this.filePath);await J.mkdir(q,{recursive:!0,mode:448}),await J.chmod(q,448),await w(this.filePath,`${JSON.stringify(k,null,2)}
1
+ import{Se as $,Te as F}from"./chunk-0n97186m.js";import{promises as J}from"node:fs";import Q from"node:path";import{Mutex as U}from"async-mutex";import w from"write-file-atomic";var X=1;function D(k){if(!k||typeof k!=="object"||Array.isArray(k))return!1;let q=k;return typeof q.path==="string"&&Q.isAbsolute(q.path)&&typeof q.boundAt==="string"}async function Z(k){if(!Q.isAbsolute(k))throw Error("Project path must be absolute");let q=await J.realpath(k);if(!(await J.stat(q)).isDirectory())throw Error("Project path must be a directory");return q}class K{filePath;mutex=new U;constructor(k=Q.join(F(),"bound-projects.json")){this.filePath=k}async list(k){let q=await this.read(),z=await Z(k),H=new Map;for(let C of q.projects)H.set(C.path,C);if(!H.has(z))H.set(z,{path:z,boundAt:new Date(0).toISOString()});return(await Promise.all([...H.values()].map(async(C)=>{let L=!1;try{L=(await J.stat(C.path)).isDirectory()}catch{}return{path:C.path,name:Q.basename(C.path)||C.path,...L?{gitBranch:$(C.path)}:{},available:L,isCurrent:C.path===z,boundAt:C.boundAt}}))).sort((C,L)=>{if(C.isCurrent!==L.isCurrent)return C.isCurrent?-1:1;return C.name.localeCompare(L.name)})}async bind(k,q){return this.mutex.runExclusive(async()=>{let z=await Z(k),H=await this.read(),W=H.projects.find((M)=>M.path===z),C=W??{path:z,boundAt:new Date().toISOString()};if(!W)H.projects.push(C),await this.write(H);let L=await Z(q),A=$(z);return{path:z,name:Q.basename(z)||z,...A?{gitBranch:A}:{},available:!0,isCurrent:z===L,boundAt:C.boundAt}})}async unbind(k){return this.mutex.runExclusive(async()=>{if(!Q.isAbsolute(k))throw Error("Project path must be absolute");let q=await J.realpath(k).catch(()=>Q.resolve(k)),z=await this.read(),H=z.projects.filter((W)=>W.path!==q);if(H.length===z.projects.length)return!1;return z.projects=H,await this.write(z),!0})}async read(){try{let k=await J.readFile(this.filePath,"utf8"),q=JSON.parse(k);if(q.version!==X||!Array.isArray(q.projects))return{version:X,projects:[]};return{version:X,projects:q.projects.filter(D)}}catch(k){if(k.code==="ENOENT"||k instanceof SyntaxError)return{version:X,projects:[]};throw k}}async write(k){let q=Q.dirname(this.filePath);await J.mkdir(q,{recursive:!0,mode:448}),await J.chmod(q,448),await w(this.filePath,`${JSON.stringify(k,null,2)}
2
2
  `,{mode:384}),await J.chmod(this.filePath,384)}}var _=new K;
3
3
  export{_ as g};