eser 4.1.44 → 4.1.48

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 (223) hide show
  1. package/chunks/{add-IM5JC6QA.js → add-HBUORTI5.js} +1 -1
  2. package/chunks/ajan-CL22MZYV.js +2 -0
  3. package/chunks/{approve-4CQFJU5A.js → approve-UWBYGXCF.js} +1 -1
  4. package/chunks/{ask-UTEI7KGQ.js → ask-M3VS3GIJ.js} +1 -1
  5. package/chunks/{block-MQTVULY3.js → block-W76WKMS3.js} +1 -1
  6. package/chunks/{browser-JGBNWUEQ.js → browser-D536WJU3.js} +1 -1
  7. package/chunks/{build-IRLEBMJE.js → build-DPBRNANI.js} +2 -2
  8. package/chunks/{bun-HIMXX54I.js → bun-7XJSUU6Z.js} +1 -1
  9. package/chunks/{cancel-56EDMMFO.js → cancel-46C7E5N7.js} +1 -1
  10. package/chunks/{changelog-gen-USXHO6PE.js → changelog-gen-627BV77Z.js} +1 -1
  11. package/chunks/{chunk-3F23SLJA.js → chunk-2LF7QSIN.js} +28 -27
  12. package/chunks/{chunk-YURNTYEP.js → chunk-2TANTKYS.js} +1 -1
  13. package/chunks/{chunk-TELZ2ZFI.js → chunk-2YTW3JQ6.js} +1 -1
  14. package/chunks/{chunk-V3NJTF2Y.js → chunk-2ZYCRMUT.js} +1 -1
  15. package/chunks/chunk-3D5TBTM3.js +3 -0
  16. package/chunks/{chunk-LSET5TD3.js → chunk-3OG2MEF2.js} +1 -1
  17. package/chunks/{chunk-BSV66I74.js → chunk-4LQG2WOJ.js} +1 -1
  18. package/chunks/{chunk-OWQXQ33F.js → chunk-4X4NHXFE.js} +1 -1
  19. package/chunks/{chunk-H6HLRKRK.js → chunk-5JV6KQMP.js} +4 -4
  20. package/chunks/{chunk-ZRUM5PE7.js → chunk-6BILFSH2.js} +1 -1
  21. package/chunks/{chunk-6VHZQNHX.js → chunk-6DBKPC2O.js} +1 -1
  22. package/chunks/{chunk-BQT5RJZB.js → chunk-6G6UVWJN.js} +1 -1
  23. package/chunks/{chunk-4EJVA4QA.js → chunk-73IMECRI.js} +1 -1
  24. package/chunks/{chunk-SK6QUPJR.js → chunk-7KFSTOXR.js} +1 -1
  25. package/chunks/{chunk-FODF5MI2.js → chunk-7NKYCWAA.js} +1 -1
  26. package/chunks/{chunk-6E6JUBFH.js → chunk-ALFFE37K.js} +1 -1
  27. package/chunks/{chunk-UQRZJPYH.js → chunk-ATYDQCCJ.js} +1 -1
  28. package/chunks/{chunk-IBBGWXAI.js → chunk-C2IORZTF.js} +1 -1
  29. package/chunks/{chunk-H5GHXMIT.js → chunk-C7NZBKCW.js} +1 -1
  30. package/chunks/{chunk-IBB6UZR2.js → chunk-CVDLYIOW.js} +1 -1
  31. package/chunks/{chunk-IWXI3UYI.js → chunk-DLBRD3UT.js} +1 -1
  32. package/chunks/{chunk-QBQAOXEV.js → chunk-DM6U63HP.js} +1 -1
  33. package/chunks/chunk-DPZJWN2Y.js +2 -0
  34. package/chunks/{chunk-VE6XM5OZ.js → chunk-EQUPVWVY.js} +1 -1
  35. package/chunks/{chunk-2N62LL55.js → chunk-FNPBHLLZ.js} +1 -1
  36. package/chunks/{chunk-QMRKAC6C.js → chunk-FZ5WFU6R.js} +1 -1
  37. package/chunks/chunk-GVTM4EOU.js +4 -0
  38. package/chunks/{chunk-KZAPWWOT.js → chunk-H6P3EACV.js} +1 -1
  39. package/chunks/{chunk-IQQEVKBP.js → chunk-IIFFSCDJ.js} +1 -1
  40. package/chunks/{chunk-TYLYMZQC.js → chunk-IZUADMIU.js} +1 -1
  41. package/chunks/{chunk-2OKCK56H.js → chunk-J5HFD7AQ.js} +1 -1
  42. package/chunks/{chunk-3LDGQFQZ.js → chunk-JFKHBLJB.js} +1 -1
  43. package/chunks/{chunk-SMKZDN2Q.js → chunk-JO4JKJ7R.js} +1 -1
  44. package/chunks/{chunk-CXTPYPO4.js → chunk-KHBIOZJE.js} +1 -1
  45. package/chunks/{chunk-EXP2TZZC.js → chunk-L5OC7F24.js} +1 -1
  46. package/chunks/{chunk-7RL5ZFGE.js → chunk-LJ7A5HYR.js} +1 -1
  47. package/chunks/{chunk-SF6FT44C.js → chunk-LLA75EMV.js} +1 -1
  48. package/chunks/chunk-LWQPFCWC.js +5 -0
  49. package/chunks/{chunk-Z2LXZLZV.js → chunk-LYPDFFKK.js} +1 -1
  50. package/chunks/{chunk-2UHHAPKY.js → chunk-MTCPFQ5I.js} +1 -1
  51. package/chunks/{chunk-LYKN5EIM.js → chunk-MW3RJU6I.js} +1 -1
  52. package/chunks/{chunk-XOSAN6PX.js → chunk-N4NDBIQS.js} +1 -1
  53. package/chunks/{chunk-SH4H7OLV.js → chunk-NMEPQK3T.js} +1 -1
  54. package/chunks/{chunk-GKOMIH2B.js → chunk-NMSD4ZXJ.js} +1 -1
  55. package/chunks/{chunk-QD46ROBD.js → chunk-NTY267SI.js} +1 -1
  56. package/chunks/{chunk-VVWAUS3D.js → chunk-NVPQJFAI.js} +1 -1
  57. package/chunks/{chunk-L7RS6MQ5.js → chunk-O325ZU5M.js} +1 -1
  58. package/chunks/{chunk-3U5M6YO6.js → chunk-OLHBVIWG.js} +1 -1
  59. package/chunks/chunk-R2W7BL7V.js +2 -0
  60. package/chunks/{chunk-E423U2PP.js → chunk-R3UCRXDC.js} +1 -1
  61. package/chunks/{chunk-RIOYVPPP.js → chunk-R4GKIRAI.js} +1 -1
  62. package/chunks/{chunk-WPOZMPUR.js → chunk-RHVDIXOM.js} +1 -1
  63. package/chunks/{chunk-ZEFYMWGZ.js → chunk-RNFCAHVL.js} +2 -2
  64. package/chunks/{chunk-MBG7SPPO.js → chunk-SHN5MT56.js} +1 -1
  65. package/chunks/{chunk-RFHWH6ZX.js → chunk-TFRONHJA.js} +1 -1
  66. package/chunks/chunk-TMMAF763.js +10 -0
  67. package/chunks/{chunk-VWQLQJVX.js → chunk-TW23CULJ.js} +1 -1
  68. package/chunks/{chunk-TNWF37YQ.js → chunk-TZDEJTLC.js} +30 -30
  69. package/chunks/{chunk-MPGRKZIA.js → chunk-UEMWZOIU.js} +1 -1
  70. package/chunks/{chunk-QYMHLTVT.js → chunk-UGYRUVUH.js} +1 -1
  71. package/chunks/{chunk-YJ3ICGHV.js → chunk-ULIMXXRY.js} +1 -1
  72. package/chunks/{chunk-WF6JNPZS.js → chunk-VV47GXU5.js} +1 -1
  73. package/chunks/{chunk-4COCZPO5.js → chunk-WI2RW3YL.js} +1 -1
  74. package/chunks/{chunk-H7U2VQCK.js → chunk-WTMV5GTZ.js} +1 -1
  75. package/chunks/chunk-WZHVKEPB.js +17 -0
  76. package/chunks/{chunk-BNMKKNLB.js → chunk-X3L6GBUX.js} +1 -1
  77. package/chunks/chunk-XOMPQOI6.js +4 -0
  78. package/chunks/{chunk-2BEIAJ5J.js → chunk-XUV7CW3L.js} +1 -1
  79. package/chunks/chunk-YACXTCWF.js +2 -0
  80. package/chunks/{chunk-WWI6727S.js → chunk-YKEVDAWS.js} +1 -1
  81. package/chunks/chunk-YTF3BAQS.js +2 -0
  82. package/chunks/{chunk-6V6C6MWY.js → chunk-ZNP3NXAD.js} +1 -1
  83. package/chunks/claude-code-UJYCO6CN.js +2 -0
  84. package/chunks/{clone-DSVKII72.js → clone-455UAECS.js} +1 -1
  85. package/chunks/{cmd-YU4MVRRR.js → cmd-QE4P4DS4.js} +1 -1
  86. package/chunks/{commitmsg-FS52L6J5.js → commitmsg-57EMHAFY.js} +2 -2
  87. package/chunks/{concern-4HFEHA2X.js → concern-I6LCWEIC.js} +1 -1
  88. package/chunks/{deno-I5YAWOB6.js → deno-JAQWMICD.js} +1 -1
  89. package/chunks/{dev-JQS5G6PA.js → dev-JM7NU24M.js} +2 -2
  90. package/chunks/{done-OSUBA7YO.js → done-A5VWIFOF.js} +1 -1
  91. package/chunks/{file-tools-shared-LMF72D6S.js → file-tools-shared-YKDNDDHR.js} +1 -1
  92. package/chunks/{free-WTJTBNOK.js → free-5NMWMMYS.js} +1 -1
  93. package/chunks/{gh-PJ2JDGXG.js → gh-DJ2YTDQX.js} +2 -2
  94. package/chunks/{gh-contributors-EIM2PLGS.js → gh-contributors-SXUFX3SO.js} +1 -1
  95. package/chunks/{init-ZOMBOUG3.js → init-GBMYF3YG.js} +3 -3
  96. package/chunks/{init-2AZSHAPG.js → init-M3P2QCX2.js} +1 -1
  97. package/chunks/{install-J4D2DGTQ.js → install-USGLFPAU.js} +1 -1
  98. package/chunks/invoke-hook-6BKTP2JY.js +12 -0
  99. package/chunks/kiro-V6SMU4OL.js +2 -0
  100. package/chunks/{list-XFPTCIMR.js → list-M5DGQG46.js} +1 -1
  101. package/chunks/{list-PSLAM3H6.js → list-NX7RRO6R.js} +1 -1
  102. package/chunks/{list-NS7ECFDY.js → list-ZVCGDRUH.js} +1 -1
  103. package/chunks/{load-config-OGSPRY4L.js → load-config-JZNJVJXH.js} +1 -1
  104. package/chunks/loader-command-I5DTYP25.js +2 -0
  105. package/chunks/loader-reactor-P6I3MX5L.js +2 -0
  106. package/chunks/{main-BUEG2IMJ.js → main-JAGIKKVD.js} +2 -2
  107. package/chunks/manager-GN6J4AUV.js +7 -0
  108. package/chunks/manifest-3GT2RMQL.js +2 -0
  109. package/chunks/{mod-VRTH35WZ.js → mod-2WMXZZGJ.js} +2 -2
  110. package/chunks/{mod-G7PJEGW6.js → mod-4XKQZL6W.js} +1 -1
  111. package/chunks/{mod-Q6SI6S6S.js → mod-5NDTGNVM.js} +2 -2
  112. package/chunks/mod-7ICCX4OY.js +2 -0
  113. package/chunks/mod-IALKEUJL.js +9 -0
  114. package/chunks/{mod-WOZXOD2F.js → mod-KPIOBBDD.js} +1 -1
  115. package/chunks/{mod-XEK7FROU.js → mod-NSL6IJRQ.js} +1 -1
  116. package/chunks/{mod-2PIV6QCE.js → mod-OG7BBJP4.js} +1 -1
  117. package/chunks/mod-QCXWBSGJ.js +2 -0
  118. package/chunks/mod-TB73AJG3.js +23 -0
  119. package/chunks/{mod-II7CSZUT.js → mod-TRSW5SEU.js} +1 -1
  120. package/chunks/{mod-RO7WP3SA.js → mod-VZT7JWPZ.js} +1 -1
  121. package/chunks/{mod-U2MNO6EC.js → mod-W225AUFE.js} +1 -1
  122. package/chunks/{new-3ZN4U7FJ.js → new-SS67ZKMK.js} +3 -3
  123. package/chunks/next-TIUOHHFS.js +9 -0
  124. package/chunks/{node-ZGM6SXXI.js → node-WWA6BHRC.js} +1 -1
  125. package/chunks/ollama-DFG5G467.js +2 -0
  126. package/chunks/opencode-UA45VV3W.js +2 -0
  127. package/chunks/pack-7TGKWDRO.js +6 -0
  128. package/chunks/purge-IKPQWHBC.js +5 -0
  129. package/chunks/{recipe-applier-6SGY2W3A.js → recipe-applier-I2VBGHZU.js} +1 -1
  130. package/chunks/{registry-fetcher-H63ZWZHU.js → registry-fetcher-TGWYJ5GN.js} +1 -1
  131. package/chunks/release-SEKFNXRA.js +9 -0
  132. package/chunks/{release-notes-FSDHH2Y2.js → release-notes-UUCPVHBQ.js} +1 -1
  133. package/chunks/{release-tag-IOH5HGAA.js → release-tag-F4B6ICW4.js} +1 -1
  134. package/chunks/{reopen-7EX6OJ6E.js → reopen-G4IUIH73.js} +1 -1
  135. package/chunks/{reset-IZ76OH4F.js → reset-BJZ263XC.js} +1 -1
  136. package/chunks/rule-PQ6WRV5W.js +7 -0
  137. package/chunks/{run-FGMEIO57.js → run-DAKF5SJN.js} +1 -1
  138. package/chunks/run-Y4ESAQUK.js +4 -0
  139. package/chunks/{scripts-L2FZBUHU.js → scripts-VRQQ24O3.js} +1 -1
  140. package/chunks/{serve-VXA7O546.js → serve-OGJIE344.js} +2 -2
  141. package/chunks/{server-KJW4HWK7.js → server-VCPSLFZ2.js} +1 -1
  142. package/chunks/session-CFDY73RJ.js +2 -0
  143. package/chunks/spec-CYRR2XUA.js +2 -0
  144. package/chunks/{status-EHBO4FYW.js → status-ZE2SA6FP.js} +1 -1
  145. package/chunks/{sync-M6DR7ZI4.js → sync-N5STAT6M.js} +1 -1
  146. package/chunks/system-3236RFTI.js +2 -0
  147. package/chunks/{system-2FUKECOJ.js → system-6GEEPUXD.js} +1 -1
  148. package/chunks/{update-CV7JPZGM.js → update-VLYRDEH4.js} +1 -1
  149. package/chunks/validate-bom-ME2NQAP3.js +2 -0
  150. package/chunks/validate-case-conflict-QUNIB43P.js +2 -0
  151. package/chunks/validate-circular-deps-DLUCIW7T.js +2 -0
  152. package/chunks/validate-commit-msg-SRLJRTKU.js +2 -0
  153. package/chunks/validate-docs-43LWHLVW.js +2 -0
  154. package/chunks/validate-eof-RV3IK6ZM.js +2 -0
  155. package/chunks/validate-export-names-D5I5DZTN.js +2 -0
  156. package/chunks/validate-filenames-WNLZI2S6.js +2 -0
  157. package/chunks/validate-json-6KIMBNBJ.js +2 -0
  158. package/chunks/validate-large-files-UXP7AZCW.js +2 -0
  159. package/chunks/validate-licenses-BL6PNSBP.js +2 -0
  160. package/chunks/validate-line-endings-NYHXORRG.js +2 -0
  161. package/chunks/validate-merge-conflict-IWUP4ZMW.js +2 -0
  162. package/chunks/validate-mod-exports-VCV4VZ5F.js +2 -0
  163. package/chunks/validate-package-configs-6PGL2YGD.js +2 -0
  164. package/chunks/validate-secrets-JV4ZSOVR.js +2 -0
  165. package/chunks/validate-shebangs-YACNWUG7.js +2 -0
  166. package/chunks/validate-submodules-ZXID3VEK.js +2 -0
  167. package/chunks/validate-symlinks-QNMKPYUY.js +2 -0
  168. package/chunks/validate-toml-PV3G7EFD.js +2 -0
  169. package/chunks/validate-trailing-whitespace-5Q5SEHOD.js +2 -0
  170. package/chunks/validate-yaml-IOMFQTSQ.js +2 -0
  171. package/chunks/versions-ROLQITT5.js +2 -0
  172. package/chunks/{watch-LW6FU2EL.js → watch-4NXY7JEX.js} +1 -1
  173. package/chunks/{wontfix-YJN2MZCL.js → wontfix-YSXRDPKA.js} +1 -1
  174. package/chunks/{workerd-LOWXXQEU.js → workerd-LH2MLWIF.js} +1 -1
  175. package/eser.js +1 -1
  176. package/package.json +9 -1
  177. package/chunks/chunk-5MVJUALI.js +0 -4
  178. package/chunks/chunk-5N2QHREH.js +0 -17
  179. package/chunks/chunk-JZ7DUWYC.js +0 -2
  180. package/chunks/chunk-OYNFK77H.js +0 -2
  181. package/chunks/chunk-PIV56NIC.js +0 -7
  182. package/chunks/chunk-V6YI7YJ4.js +0 -5
  183. package/chunks/chunk-VAIRJES2.js +0 -2
  184. package/chunks/chunk-VNJJQED3.js +0 -3
  185. package/chunks/chunk-ZJMX5J6E.js +0 -4
  186. package/chunks/claude-code-VX2T4YII.js +0 -2
  187. package/chunks/invoke-hook-D5XQP7A7.js +0 -11
  188. package/chunks/kiro-JGEZGFF3.js +0 -2
  189. package/chunks/manifest-4EA74HMS.js +0 -2
  190. package/chunks/mod-KTGLCC3R.js +0 -2
  191. package/chunks/mod-LAFYLM7O.js +0 -2
  192. package/chunks/next-NBSEIKEK.js +0 -9
  193. package/chunks/ollama-LD6OENM2.js +0 -2
  194. package/chunks/opencode-ECTBCC3O.js +0 -2
  195. package/chunks/purge-GV7LXDF3.js +0 -5
  196. package/chunks/release-6I5TL34I.js +0 -9
  197. package/chunks/rule-CNBMT5LD.js +0 -3
  198. package/chunks/run-PBQGRZV3.js +0 -4
  199. package/chunks/spec-AINLSNW6.js +0 -2
  200. package/chunks/system-X4X6JD4X.js +0 -2
  201. package/chunks/validate-bom-MYISC3IT.js +0 -2
  202. package/chunks/validate-case-conflict-B737FXF2.js +0 -2
  203. package/chunks/validate-circular-deps-WME7VUO4.js +0 -2
  204. package/chunks/validate-commit-msg-HJ5MXYNE.js +0 -2
  205. package/chunks/validate-docs-CCYMKDXS.js +0 -2
  206. package/chunks/validate-eof-6WAM6VAY.js +0 -2
  207. package/chunks/validate-export-names-Q5FSXTV5.js +0 -2
  208. package/chunks/validate-filenames-JVBT2GXA.js +0 -2
  209. package/chunks/validate-json-UPGBABYE.js +0 -2
  210. package/chunks/validate-large-files-RJLMJSWM.js +0 -2
  211. package/chunks/validate-licenses-YW5CK3QF.js +0 -2
  212. package/chunks/validate-line-endings-3VNZ7KT6.js +0 -2
  213. package/chunks/validate-merge-conflict-SKWYYHFS.js +0 -2
  214. package/chunks/validate-mod-exports-OMUDATXK.js +0 -2
  215. package/chunks/validate-package-configs-ZO5YJE2D.js +0 -2
  216. package/chunks/validate-secrets-FV6672MD.js +0 -2
  217. package/chunks/validate-shebangs-N55SME72.js +0 -2
  218. package/chunks/validate-submodules-ADHLOUGA.js +0 -2
  219. package/chunks/validate-symlinks-4IIIP6AQ.js +0 -2
  220. package/chunks/validate-toml-OVIYGLPR.js +0 -2
  221. package/chunks/validate-trailing-whitespace-LWP5QEXS.js +0 -2
  222. package/chunks/validate-yaml-L7JCSGXY.js +0 -2
  223. package/chunks/versions-OKK45EDV.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as a,f as g}from"./chunk-VNJJQED3.js";import{b as i}from"./chunk-NBA6EFWU.js";import{i as s}from"./chunk-6VHZQNHX.js";var u=async(n=".")=>{let[t,r]=await g(n);return r.map(e=>({name:e.name,version:e.version,path:a(e.config),config:e.config,entrypoints:c(e.config)}))},c=n=>{let t=n.exports?.value;if(t==null)return[];if(typeof t=="string")return[t];if(t!==null&&typeof t=="object"){let r=[];for(let e of Object.values(t))typeof e=="string"&&r.push(e);return r}return[]},d=(n,t)=>s.path.isAbsolute(n)?n:s.path.resolve(t,n),k=async n=>{let t=[];for await(let r of s.fs.walk(n,{exts:i,includeDirs:!1,skip:[/node_modules/,/\.git/]})){let e=s.path.relative(n,r.path),o=s.path.basename(e);o.endsWith("_test.ts")||o.endsWith("_bench.ts")||o.startsWith("_")||e.includes("testdata/")||t.push(`./${e}`)}return t.sort()};export{u as a,d as b,k as c};
2
+ import{d as a,f as g}from"./chunk-3D5TBTM3.js";import{b as i}from"./chunk-NBA6EFWU.js";import{i as s}from"./chunk-6DBKPC2O.js";var u=async(n=".")=>{let[t,r]=await g(n);return r.map(e=>({name:e.name,version:e.version,path:a(e.config),config:e.config,entrypoints:c(e.config)}))},c=n=>{let t=n.exports?.value;if(t==null)return[];if(typeof t=="string")return[t];if(t!==null&&typeof t=="object"){let r=[];for(let e of Object.values(t))typeof e=="string"&&r.push(e);return r}return[]},d=(n,t)=>s.path.isAbsolute(n)?n:s.path.resolve(t,n),k=async n=>{let t=[];for await(let r of s.fs.walk(n,{exts:i,includeDirs:!1,skip:[/node_modules/,/\.git/]})){let e=s.path.relative(n,r.path),o=s.path.basename(e);o.endsWith("_test.ts")||o.endsWith("_bench.ts")||o.startsWith("_")||e.includes("testdata/")||t.push(`./${e}`)}return t.sort()};export{u as a,d as b,k as c};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{i as c}from"./chunk-6VHZQNHX.js";var f=async(n,r)=>{let e=`${n}/.eser/specs/${r}/spec.md`,t;try{t=await c.fs.readTextFile(e)}catch{return null}return d(r,t)},d=(n,r)=>{let e=[],t=[],o=[],i="";for(let l of r.split(`
2
+ import{i as c}from"./chunk-6DBKPC2O.js";var f=async(n,r)=>{let e=`${n}/.eser/specs/${r}/spec.md`,t;try{t=await c.fs.readTextFile(e)}catch{return null}return d(r,t)},d=(n,r)=>{let e=[],t=[],o=[],i="";for(let l of r.split(`
3
3
  `)){let s=l.trim();if(s.startsWith("## ")){i=s.slice(3).trim().toLowerCase();continue}if(i.startsWith("tasks")){let a=s.match(/^-\s*\[[ x]\]\s*(task-\d+):\s*(.+)$/i);a!==null&&e.push({id:a[1],title:a[2].trim()})}i.startsWith("out of scope")&&s.startsWith("- ")&&t.push(s.slice(2).trim()),i.startsWith("verification")&&s.startsWith("- ")&&o.push(s.slice(2).trim())}return{name:n,tasks:e,outOfScope:t,verification:o}},u=(n,r)=>{let e=new Set(r);for(let t of n)if(!e.has(t.id))return t;return null};export{f as a,d as b,u as c};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as l}from"./chunk-UQRZJPYH.js";var p=new Set(["con","prn","aux","nul","com1","com2","com3","com4","com5","com6","com7","com8","com9","lpt1","lpt2","lpt3","lpt4","lpt5","lpt6","lpt7","lpt8","lpt9"]),E=/^[a-z0-9_./[\]@-]+$/,u=/^[a-z0-9./[\]@-]+$/,g=[".claude/",".github/",".git/","CLAUDE.md","AGENTS.md","CHANGELOG.md","Makefile","Dockerfile","LICENSE","README.md","VERSION"],d=(o,s)=>{for(let e of s)if(e.includes("*")){let a=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^/]+");if(new RegExp(a).test(o))return!0}else if(o.includes(e)||o.endsWith(e))return!0;return!1},c=l({name:"validate-filenames",description:"Enforce filename conventions (kebab-case / snake_case)",canFix:!1,stacks:[],defaults:{},checkAll(o,s){let e=[],a=s.rules,f=s.exclude??g;for(let t of o){if(d(t.path,f))continue;let i=t.name,m=i.replace(/\.[^.]+$/,"");if(p.has(m.toLowerCase())){e.push({path:t.path,message:`Windows-reserved filename: ${i}`});continue}if(a!==void 0){let r=!1;for(let n of a)if(n.directory==="*"||t.path.includes(n.directory)){if(n.exclude!==void 0&&d(t.path,n.exclude)){r=!0;break}(n.convention==="snake_case"?E:u).test(i)||e.push({path:t.path,message:`filename must be ${n.convention}`}),r=!0;break}if(r)continue}u.test(i)||e.push({path:t.path,message:"filename must be kebab-case"})}return e}}),S=c.run,k=c.validator,v=c.main;export{c as a,S as b,k as c,v as d};
2
+ import{a as l}from"./chunk-ATYDQCCJ.js";var p=new Set(["con","prn","aux","nul","com1","com2","com3","com4","com5","com6","com7","com8","com9","lpt1","lpt2","lpt3","lpt4","lpt5","lpt6","lpt7","lpt8","lpt9"]),E=/^[a-z0-9_./[\]@-]+$/,u=/^[a-z0-9./[\]@-]+$/,g=[".claude/",".github/",".git/","CLAUDE.md","AGENTS.md","CHANGELOG.md","Makefile","Dockerfile","LICENSE","README.md","VERSION"],d=(o,s)=>{for(let e of s)if(e.includes("*")){let a=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^/]+");if(new RegExp(a).test(o))return!0}else if(o.includes(e)||o.endsWith(e))return!0;return!1},c=l({name:"validate-filenames",description:"Enforce filename conventions (kebab-case / snake_case)",canFix:!1,stacks:[],defaults:{},checkAll(o,s){let e=[],a=s.rules,f=s.exclude??g;for(let t of o){if(d(t.path,f))continue;let i=t.name,m=i.replace(/\.[^.]+$/,"");if(p.has(m.toLowerCase())){e.push({path:t.path,message:`Windows-reserved filename: ${i}`});continue}if(a!==void 0){let r=!1;for(let n of a)if(n.directory==="*"||t.path.includes(n.directory)){if(n.exclude!==void 0&&d(t.path,n.exclude)){r=!0;break}(n.convention==="snake_case"?E:u).test(i)||e.push({path:t.path,message:`filename must be ${n.convention}`}),r=!0;break}if(r)continue}u.test(i)||e.push({path:t.path,message:"filename must be kebab-case"})}return e}}),S=c.run,k=c.validator,v=c.main;export{c as a,S as b,k as c,v as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as o}from"./chunk-UQRZJPYH.js";var a=1024,s=o({name:"validate-large-files",description:"Detect files exceeding size limit",canFix:!1,stacks:[],defaults:{maxKb:a},checkAll(n,r){let e=r.maxKb??a,l=e*1024,t=[];for(let i of n)if(i.size>l){let c=Math.round(i.size/1024);t.push({path:i.path,message:`file is ${c}KB (max: ${e}KB)`})}return t}}),d=s.run,f=s.validator,x=s.main;export{s as a,d as b,f as c,x as d};
2
+ import{a as o}from"./chunk-ATYDQCCJ.js";var a=1024,s=o({name:"validate-large-files",description:"Detect files exceeding size limit",canFix:!1,stacks:[],defaults:{maxKb:a},checkAll(n,r){let e=r.maxKb??a,l=e*1024,t=[];for(let i of n)if(i.size>l){let c=Math.round(i.size/1024);t.push({path:i.path,message:`file is ${c}KB (max: ${e}KB)`})}return t}}),d=s.run,f=s.validator,x=s.main;export{s as a,d as b,f as c,x as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as i}from"./chunk-UQRZJPYH.js";import{j as a}from"./chunk-6VHZQNHX.js";var s=i({name:"validate-symlinks",description:"Detect broken symlinks",canFix:!1,stacks:[],defaults:{},async checkAll(n){let o=[];for(let t of n)if(t.isSymlink)try{await a.runtime.fs.stat(t.path)}catch{o.push({path:t.path,message:"broken symlink \u2014 target not found"})}return o}}),l=s.run,c=s.validator,m=s.main;export{s as a,l as b,c,m as d};
2
+ import{a as i}from"./chunk-ATYDQCCJ.js";import{j as a}from"./chunk-6DBKPC2O.js";var s=i({name:"validate-symlinks",description:"Detect broken symlinks",canFix:!1,stacks:[],defaults:{},async checkAll(n){let o=[];for(let t of n)if(t.isSymlink)try{await a.runtime.fs.stat(t.path)}catch{o.push({path:t.path,message:"broken symlink \u2014 target not found"})}return o}}),l=s.run,c=s.validator,m=s.main;export{s as a,l as b,c,m as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as g}from"./chunk-NBA6EFWU.js";import{d as p}from"./chunk-5MVJUALI.js";import{i as o}from"./chunk-6VHZQNHX.js";var m=[/node_modules/,/\.git\//,/\/dist\//,/etc\/coverage/,/etc\/temp/,/\.output\//],x=async t=>{try{let n=await p`git ls-files --cached --others --exclude-standard`.cwd(t).noThrow().lines();return n.length>0?n:null}catch{return null}},k=async(t={})=>{let{root:n=".",extensions:e,exclude:s=[]}=t,l=[...m,...s.map(r=>typeof r=="string"?new RegExp(r):r)],u=[],d=await x(n);if(d!==null)for(let r of d){let i=o.path.join(n,r),c=o.path.basename(r);if(e!==void 0&&e.length>0&&!g(r,e)||l.some(a=>a.test(i)||a.test(r)))continue;let y=0,f=!1;try{let a=await o.fs.lstat(i);if(y=a.size,f=a.isSymlink,a.isDirectory&&!(t.includeDirs??!1))continue}catch{continue}u.push({path:i,name:c,size:y,isSymlink:f})}else for await(let r of o.fs.walk(n,{includeDirs:t.includeDirs??!1,includeFiles:!0,exts:e,skip:l})){if(!r.isFile&&!r.isSymlink)continue;let i=0;try{i=(await o.fs.stat(r.path)).size}catch{continue}u.push({path:r.path,name:r.name,size:i,isSymlink:r.isSymlink})}if(t.includeOnly!==void 0&&t.includeOnly.length>0){let r=t.includeOnly;return u.filter(i=>r.some(c=>i.path.endsWith(c)||i.path.includes(c)))}return u},B=async t=>{if(t.textContent!==void 0)return t.textContent;try{let n=await h(t);if(w(n))return;let e=new TextDecoder().decode(n);return t.textContent=e,e}catch{return}},h=async t=>{if(t.rawBytes!==void 0)return t.rawBytes;let n=await o.fs.readFile(t.path);return t.rawBytes=n,n},w=t=>{let n=Math.min(t.length,8192);for(let e=0;e<n;e++)if(t[e]===0)return!0;return!1},M=(t,n)=>{for(let e of n)if(typeof e=="string"){if(t.includes(e)||t.endsWith(e))return!0}else if(e.test(t))return!0;return!1},b=(t,n)=>{let e=new Map;for(let s of n)e.set(s.path,s);for(let s of t){let l=e.get(s.path);l!==void 0&&(s.textContent=l.newContent,s.rawBytes=void 0)}},D=async t=>{let n=0;for(let e of t)e.oldContent!==e.newContent&&(await o.fs.writeTextFile(e.path,e.newContent),n++);return n};export{m as a,k as b,B as c,h as d,w as e,M as f,b as g,D as h};
2
+ import{d as g}from"./chunk-NBA6EFWU.js";import{d as p}from"./chunk-GVTM4EOU.js";import{i as o}from"./chunk-6DBKPC2O.js";var m=[/node_modules/,/\.git\//,/\/dist\//,/etc\/coverage/,/etc\/temp/,/\.output\//],x=async t=>{try{let n=await p`git ls-files --cached --others --exclude-standard`.cwd(t).noThrow().lines();return n.length>0?n:null}catch{return null}},k=async(t={})=>{let{root:n=".",extensions:e,exclude:s=[]}=t,l=[...m,...s.map(r=>typeof r=="string"?new RegExp(r):r)],u=[],d=await x(n);if(d!==null)for(let r of d){let i=o.path.join(n,r),c=o.path.basename(r);if(e!==void 0&&e.length>0&&!g(r,e)||l.some(a=>a.test(i)||a.test(r)))continue;let y=0,f=!1;try{let a=await o.fs.lstat(i);if(y=a.size,f=a.isSymlink,a.isDirectory&&!(t.includeDirs??!1))continue}catch{continue}u.push({path:i,name:c,size:y,isSymlink:f})}else for await(let r of o.fs.walk(n,{includeDirs:t.includeDirs??!1,includeFiles:!0,exts:e,skip:l})){if(!r.isFile&&!r.isSymlink)continue;let i=0;try{i=(await o.fs.stat(r.path)).size}catch{continue}u.push({path:r.path,name:r.name,size:i,isSymlink:r.isSymlink})}if(t.includeOnly!==void 0&&t.includeOnly.length>0){let r=t.includeOnly;return u.filter(i=>r.some(c=>i.path.endsWith(c)||i.path.includes(c)))}return u},B=async t=>{if(t.textContent!==void 0)return t.textContent;try{let n=await h(t);if(w(n))return;let e=new TextDecoder().decode(n);return t.textContent=e,e}catch{return}},h=async t=>{if(t.rawBytes!==void 0)return t.rawBytes;let n=await o.fs.readFile(t.path);return t.rawBytes=n,n},w=t=>{let n=Math.min(t.length,8192);for(let e=0;e<n;e++)if(t[e]===0)return!0;return!1},M=(t,n)=>{for(let e of n)if(typeof e=="string"){if(t.includes(e)||t.endsWith(e))return!0}else if(e.test(t))return!0;return!1},b=(t,n)=>{let e=new Map;for(let s of n)e.set(s.path,s);for(let s of t){let l=e.get(s.path);l!==void 0&&(s.textContent=l.newContent,s.rawBytes=void 0)}},D=async t=>{let n=0;for(let e of t)e.oldContent!==e.newContent&&(await o.fs.writeTextFile(e.path,e.newContent),n++);return n};export{m as a,k as b,B as c,h as d,w as e,M as f,b as g,D as h};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{i as o}from"./chunk-6VHZQNHX.js";var r=()=>o.env.get("HOME")??"",l=()=>{let e=o.env.get("SHELL")??"";return e.includes("zsh")?"zsh":e.includes("fish")?"fish":"bash"},s=e=>{let t=r();switch(e){case"zsh":return o.path.join(t,".zshrc");case"bash":return o.path.join(t,".bashrc");case"fish":return o.path.join(t,".config","fish","config.fish")}},c=(e,t)=>{let n=r();switch(e){case"zsh":return o.path.join(n,".zshrc");case"bash":return o.path.join(n,".bashrc");case"fish":return o.path.join(n,".config","fish","completions",`${t}.fish`)}},g=(e,t)=>`eval "$(${t} system completions --shell ${e})"`,a=e=>e==="fish"?"file":"eval",p=(e,t="eser")=>{let n=e??l(),i=a(n);return{shell:n,rcFile:s(n),completionType:i,completionsFile:i==="file"?c(n,t):void 0}},f=[{envVars:["CLAUDE_CODE","CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_SESSION_ID"],tool:"claude-code"},{envVars:["CURSOR_SESSION","CURSOR"],tool:"cursor"},{envVars:["KIRO_SESSION","KIRO"],tool:"kiro"},{envVars:["WINDSURF_SESSION"],tool:"windsurf"},{envVars:["GITHUB_COPILOT"],tool:"copilot"}],h=()=>{for(let e of f)for(let t of e.envVars){let n=o.env.get(t);if(n!==void 0&&n!=="")return e.tool}return null},u=()=>h()!==null?"agent":"human";export{l as a,g as b,p as c,h as d,u as e};
2
+ import{i as o}from"./chunk-6DBKPC2O.js";var r=()=>o.env.get("HOME")??"",l=()=>{let e=o.env.get("SHELL")??"";return e.includes("zsh")?"zsh":e.includes("fish")?"fish":"bash"},s=e=>{let t=r();switch(e){case"zsh":return o.path.join(t,".zshrc");case"bash":return o.path.join(t,".bashrc");case"fish":return o.path.join(t,".config","fish","config.fish")}},c=(e,t)=>{let n=r();switch(e){case"zsh":return o.path.join(n,".zshrc");case"bash":return o.path.join(n,".bashrc");case"fish":return o.path.join(n,".config","fish","completions",`${t}.fish`)}},g=(e,t)=>`eval "$(${t} system completions --shell ${e})"`,a=e=>e==="fish"?"file":"eval",p=(e,t="eser")=>{let n=e??l(),i=a(n);return{shell:n,rcFile:s(n),completionType:i,completionsFile:i==="file"?c(n,t):void 0}},f=[{envVars:["CLAUDE_CODE","CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_SESSION_ID"],tool:"claude-code"},{envVars:["CURSOR_SESSION","CURSOR"],tool:"cursor"},{envVars:["KIRO_SESSION","KIRO"],tool:"kiro"},{envVars:["WINDSURF_SESSION"],tool:"windsurf"},{envVars:["GITHUB_COPILOT"],tool:"copilot"}],h=()=>{for(let e of f)for(let t of e.envVars){let n=o.env.get(t);if(n!==void 0&&n!=="")return e.tool}return null},u=()=>h()!==null?"agent":"human";export{l as a,g as b,p as c,h as d,u as e};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as h,b as u,c as S,d as k,e as g,f as m,g as f}from"./chunk-YURNTYEP.js";import{a as c}from"./chunk-J7YTWK67.js";var y=class{capabilities=["text_generation","streaming"];provider="opencode";modelId;binary;config;constructor(e,r){this.binary=e,this.config=r,this.modelId=r.model}async generateText(e,r){let o=w(this.config,e,"json"),i=f(e.messages,e.system);o.push("-p",i);let s=u(this.binary,o,{signal:r}),l=g(s.stderr),t=await k(s.stdout,this.modelId),p=await s.waitForExit(),a=await l,d=m("opencode",p.code,a);if(d!==null)throw d;return t}async*streamText(e,r){let o=w(this.config,e,"stream-json"),i=f(e.messages,e.system);o.push("-p",i);let s=u(this.binary,o,{signal:r}),l=g(s.stderr);try{for await(let d of S(s.stdout)){let x=v(d);x!==null&&(yield x)}let t=await s.waitForExit(),p=await l,a=m("opencode",t.code,p);a!==null&&(yield{kind:"error",error:a})}catch(t){t instanceof c?yield{kind:"error",error:t}:yield{kind:"error",error:new c(t instanceof Error?t.message:String(t),{provider:"opencode",cause:t instanceof Error?t:void 0})}}}close(){return Promise.resolve()}getRawClient(){return null}},b={provider:"opencode",async createModel(n){let e=await h("opencode",n);return new y(e,n)}},w=(n,e,r)=>{let o=["--output-format",r];o.push("--model",n.model),e.maxTokens!==void 0&&o.push("--max-tokens",String(e.maxTokens));let i=n.properties?.args;return i!==void 0&&o.push(...i),o},v=n=>{if(n===null||typeof n!="object")return null;let e=n;if(e.type==="content_block_delta"||e.type==="assistant"){let r=e.delta?.text??e.message?.content?.[0]?.text;return r!==void 0?{kind:"content_delta",textDelta:r}:null}return e.type==="result"||e.done===!0?{kind:"message_done",stopReason:"end_turn",usage:{inputTokens:e.usage?.input_tokens??0,outputTokens:e.usage?.output_tokens??0,totalTokens:(e.usage?.input_tokens??0)+(e.usage?.output_tokens??0)}}:e.type==="error"?{kind:"error",error:new c(e.error?.message??"Unknown OpenCode error",{provider:"opencode"})}:e.content!==void 0&&typeof e.content=="string"?{kind:"content_delta",textDelta:e.content}:null};export{y as a,b};
2
+ import{a as h,b as u,c as S,d as k,e as g,f as m,g as f}from"./chunk-2TANTKYS.js";import{a as c}from"./chunk-J7YTWK67.js";var y=class{capabilities=["text_generation","streaming"];provider="opencode";modelId;binary;config;constructor(e,r){this.binary=e,this.config=r,this.modelId=r.model}async generateText(e,r){let o=w(this.config,e,"json"),i=f(e.messages,e.system);o.push("-p",i);let s=u(this.binary,o,{signal:r}),l=g(s.stderr),t=await k(s.stdout,this.modelId),p=await s.waitForExit(),a=await l,d=m("opencode",p.code,a);if(d!==null)throw d;return t}async*streamText(e,r){let o=w(this.config,e,"stream-json"),i=f(e.messages,e.system);o.push("-p",i);let s=u(this.binary,o,{signal:r}),l=g(s.stderr);try{for await(let d of S(s.stdout)){let x=v(d);x!==null&&(yield x)}let t=await s.waitForExit(),p=await l,a=m("opencode",t.code,p);a!==null&&(yield{kind:"error",error:a})}catch(t){t instanceof c?yield{kind:"error",error:t}:yield{kind:"error",error:new c(t instanceof Error?t.message:String(t),{provider:"opencode",cause:t instanceof Error?t:void 0})}}}close(){return Promise.resolve()}getRawClient(){return null}},b={provider:"opencode",async createModel(n){let e=await h("opencode",n);return new y(e,n)}},w=(n,e,r)=>{let o=["--output-format",r];o.push("--model",n.model),e.maxTokens!==void 0&&o.push("--max-tokens",String(e.maxTokens));let i=n.properties?.args;return i!==void 0&&o.push(...i),o},v=n=>{if(n===null||typeof n!="object")return null;let e=n;if(e.type==="content_block_delta"||e.type==="assistant"){let r=e.delta?.text??e.message?.content?.[0]?.text;return r!==void 0?{kind:"content_delta",textDelta:r}:null}return e.type==="result"||e.done===!0?{kind:"message_done",stopReason:"end_turn",usage:{inputTokens:e.usage?.input_tokens??0,outputTokens:e.usage?.output_tokens??0,totalTokens:(e.usage?.input_tokens??0)+(e.usage?.output_tokens??0)}}:e.type==="error"?{kind:"error",error:new c(e.error?.message??"Unknown OpenCode error",{provider:"opencode"})}:e.content!==void 0&&typeof e.content=="string"?{kind:"content_delta",textDelta:e.content}:null};export{y as a,b};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as g}from"./chunk-GTHXGAMQ.js";import{e as l}from"./chunk-5DWJ7WEE.js";import{a as n}from"./chunk-N7DXBY3O.js";import{i as s}from"./chunk-6VHZQNHX.js";var a={port:8e3,host:"localhost",hmr:!0,open:!1},f=["@eser/laroux","@eser/laroux-server"],d={minify:!0,sourcemap:!0,target:["es2022"],external:[],serverExternals:f},p={mode:"always",streamMode:"streaming-optimal"},c={webp:80,avif:75,jpeg:85,png:90},C={formats:["webp","original"],widths:[640,768,1024,1280,1920],quality:c,placeholder:"blur"},R={width:1300,height:900},u={enabled:!0,viewport:R,forceInclude:[],forceExclude:[]},m={runtimeBundleEndpoint:"/__runtime_bundle.js",runtimeModuleMapEndpoint:"/__runtime_module_map.json",staticAssetsPrefix:"/dist"},v={isDev:!1,isBuild:!1,isServe:!1,isWatch:!1},S={jsr:{"@eser/logging":`
2
+ import{a as g}from"./chunk-GTHXGAMQ.js";import{e as l}from"./chunk-5DWJ7WEE.js";import{a as n}from"./chunk-N7DXBY3O.js";import{i as s}from"./chunk-6DBKPC2O.js";var a={port:8e3,host:"localhost",hmr:!0,open:!1},f=["@eser/laroux","@eser/laroux-server"],d={minify:!0,sourcemap:!0,target:["es2022"],external:[],serverExternals:f},p={mode:"always",streamMode:"streaming-optimal"},c={webp:80,avif:75,jpeg:85,png:90},C={formats:["webp","original"],widths:[640,768,1024,1280,1920],quality:c,placeholder:"blur"},R={width:1300,height:900},u={enabled:!0,viewport:R,forceInclude:[],forceExclude:[]},m={runtimeBundleEndpoint:"/__runtime_bundle.js",runtimeModuleMapEndpoint:"/__runtime_module_map.json",staticAssetsPrefix:"/dist"},v={isDev:!1,isBuild:!1,isServe:!1,isWatch:!1},S={jsr:{"@eser/logging":`
3
3
  // Browser shim for @eser/logging
4
4
  const noop = () => {};
5
5
  const noopLogger = { debug: noop, info: noop, warn: noop, error: noop };
@@ -0,0 +1,5 @@
1
+ import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
+ import{b as k}from"./chunk-NBA6EFWU.js";import{d as F,f as T,h as C,j as d,k as L,n as u}from"./chunk-7ATUODBM.js";import{a as g}from"./chunk-AP72BKVG.js";import{i as D}from"./chunk-6DBKPC2O.js";var R={USE_CLIENT:"use client",USE_SERVER:"use server",USE_STRICT:"use strict"},M=[/node_modules/,/\.test\./,/\.spec\./],G=(t,e)=>{let r=t.split(`
3
+ `),i=e.toLowerCase(),o=!1;for(let s=0;s<Math.min(50,r.length);s++){let n=r[s]?.trim()??"";if(o){n.includes("*/")&&(o=!1);continue}if(n===""||n.startsWith("//"))continue;if(n.startsWith("/*")){n.includes("*/")||(o=!0);continue}let f=`"${i}";`,a=`'${i}';`,l=n.toLowerCase();if(l===f||l===a)return!0;if(n.startsWith("import")||n.startsWith("export")||n.startsWith("const")||n.startsWith("let")||n.startsWith("var")||n.startsWith("function")||n.startsWith("class"))break}return!1},W=t=>{let e=new Set,r=t.matchAll(/export\s{1,20}(?:async\s{1,20})?function\s{1,20}(\w+)/g);for(let n of r)n[1]!==void 0&&e.add(n[1]);let i=t.matchAll(/export\s{1,20}(?:const|let)\s{1,20}(\w+)\s{0,20}=/g);for(let n of i)n[1]!==void 0&&e.add(n[1]);let o=t.matchAll(/export\s{1,20}class\s{1,20}(\w+)/g);for(let n of o)n[1]!==void 0&&e.add(n[1]);/export\s{1,20}default\s{1,20}/.test(t)&&e.add("default");let s=t.matchAll(/export\s*\{([\w\s,]+)\}/g);for(let n of s)if(n[1]!==void 0){let f=n[1].split(",").map(a=>{let l=a.trim().split(/ {1,10}as {1,10}/);return(l[1]??l[0])?.trim()});for(let a of f)a!==void 0&&a!==""&&e.add(a)}return[...e]},O=async t=>{try{return await D.fs.readTextFile(t)}catch{return null}},Q=async(t,e,r={})=>{let i=r.extensions??k,o=r.skip??M,s=r.projectRoot??t,n=[];for await(let f of D.fs.walk(t,{exts:[...i],skip:[...o]})){if(!f.isFile)continue;let a=await O(f.path);if(a!==null&&G(a,e)){let l=D.path.relative(s,f.path),m=W(a);n.push({filePath:f.path,relativePath:l,directive:e,exports:m})}}return n},Y=(t,e={})=>Q(t,R.USE_CLIENT,e),X=(t,e)=>{let r=`"${e}"`,i=`'${e}'`;return t.includes(r)||t.includes(i)},Z=async(t,e={})=>{let r=e.extensions??k,i=e.skip??M,o=e.projectRoot??t,s=[];for await(let n of D.fs.walk(t,{exts:[...r],skip:[...i]})){if(!n.isFile)continue;let f=await O(n.path);if(f!==null&&X(f,R.USE_SERVER)){let a=D.path.relative(o,n.path),l=W(f);s.push({filePath:n.path,relativePath:a,directive:R.USE_SERVER,exports:l})}}return s};function w(t){return t.isFile?"file":t.isDirectory?"dir":t.isSymlink?"symlink":void 0}async function x(t){try{let e=await Deno.stat(t);_(e);return}catch(e){if(!(e instanceof Deno.errors.NotFound))throw e}try{await Deno.mkdir(t,{recursive:!0})}catch(e){if(!(e instanceof Deno.errors.AlreadyExists))throw e;let r=await Deno.stat(t);_(r)}}function _(t){if(!t.isDirectory)throw new Error(`Failed to ensure directory exists: expected 'dir', got '${w(t)}'`)}function c(t){return t instanceof URL?C(t):t}function P(t,e,r=T){if(t=c(t),e=c(e),u(t)===u(e))return!1;let i=t.split(r),o=e.split(r);return i.every((s,n)=>o[n]===s)}function S(t,e){if(t===null)throw new Error(`${e} is unavailable`)}async function I(t,e,r){let i;try{i=await Deno.lstat(e)}catch(o){if(o instanceof Deno.errors.NotFound)return;throw o}if(r.isFolder&&!i.isDirectory)throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'`);if(!r.overwrite)throw new Deno.errors.AlreadyExists(`'${e}' already exists.`);return i}async function N(t,e,r){if(await I(t,e,r),await Deno.copyFile(t,e),r.preserveTimestamps){let i=await Deno.stat(t);S(i.atime,"statInfo.atime"),S(i.mtime,"statInfo.mtime"),await Deno.utime(e,i.atime,i.mtime)}}async function U(t,e,r){await I(t,e,r);let i=await Deno.readLink(t),o=w(await Deno.lstat(t));if(g?await Deno.symlink(i,e,{type:o==="dir"?"dir":"file"}):await Deno.symlink(i,e),r.preserveTimestamps){let s=await Deno.lstat(t);S(s.atime,"statInfo.atime"),S(s.mtime,"statInfo.mtime"),await Deno.utime(e,s.atime,s.mtime)}}async function j(t,e,r){if(await I(t,e,{...r,isFolder:!0})||await x(e),r.preserveTimestamps){let s=await Deno.stat(t);S(s.atime,"statInfo.atime"),S(s.mtime,"statInfo.mtime"),await Deno.utime(e,s.atime,s.mtime)}t=c(t),e=c(e);let o=[];for await(let s of Deno.readDir(t)){let n=d(t,s.name),f=d(e,F(n));s.isSymlink?o.push(U(n,f,r)):s.isDirectory?o.push(j(n,f,r)):s.isFile&&o.push(N(n,f,r))}await Promise.all(o)}async function wt(t,e,r={}){if(t=u(c(t)),e=u(c(e)),t===e)throw new Error("Source and destination cannot be the same");let i=await Deno.lstat(t);if(i.isDirectory&&P(t,e))throw new Error(`Cannot copy '${t}' to a subdirectory of itself: '${e}'`);i.isSymlink?await U(t,e,r):i.isDirectory?await j(t,e,r):i.isFile&&await N(t,e,r)}async function Ft(t){try{let e=await Array.fromAsync(Deno.readDir(t));await Promise.all(e.map(r=>{if(r&&r.name){let i=d(c(t),r.name);return Deno.remove(i,{recursive:!0})}}))}catch(e){if(!(e instanceof Deno.errors.NotFound))throw e;await Deno.mkdir(t,{recursive:!0})}}async function A(t){t=c(t),t=L(t);let e=F(t),r=await Deno.stat(t);return{path:t,name:e,isFile:r.isFile,isDirectory:r.isDirectory,isSymlink:r.isSymlink}}function E(t,e,r,i){return!(e&&!e.some(o=>t.endsWith(o))||r&&!r.some(o=>!!t.match(o))||i&&i.some(o=>!!t.match(o)))}async function*V(t,e){let{maxDepth:r=1/0,includeFiles:i=!0,includeDirs:o=!0,includeSymlinks:s=!0,followSymlinks:n=!1,canonicalize:f=!0,exts:a=void 0,match:l=void 0,skip:m=void 0}=e??{};if(!(r<0)&&(t=c(t),a&&(a=a.map(y=>y.startsWith(".")?y:`.${y}`)),o&&E(t,a,l,m)&&(yield await A(t)),!(r<1||!E(t,void 0,void 0,m))))for await(let y of Deno.readDir(t)){let p=d(t,y.name),{isSymlink:v,isDirectory:$}=y;if(v){if(!n){s&&E(p,a,l,m)&&(yield{path:p,...y});continue}let h=await Deno.realPath(p);f&&(p=h),{isSymlink:v,isDirectory:$}=await Deno.lstat(h)}if(v||$){let h={maxDepth:r-1,includeFiles:i,includeDirs:o,includeSymlinks:s,followSymlinks:n};a!==void 0&&(h.exts=a),l!==void 0&&(h.match=l),m!==void 0&&(h.skip=m),yield*V(p,h)}else i&&E(p,a,l,m)&&(yield{path:p,...y})}}var ue=globalThis.Deno?.build.os==="windows"?"`":"\\";var B=`
4
+ `,J=`\r
5
+ `,xe=globalThis.Deno?.build.os==="windows"?J:B;export{G as a,W as b,Y as c,Z as d,Ft as e,x as f,V as g,wt as h};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as r}from"./chunk-P7WCO724.js";import{a as i}from"./chunk-UQRZJPYH.js";var t=i({name:"validate-toml",description:"Validate TOML syntax",canFix:!1,stacks:[],defaults:{},extensions:["toml"],checkFile(e,o){if(o===void 0)return[];try{return r(o),[]}catch(a){let s=a instanceof Error?a.message:"invalid TOML";return[{path:e.path,message:s}]}}}),p=t.run,d=t.validator,u=t.main;export{t as a,p as b,d as c,u as d};
2
+ import{a as r}from"./chunk-P7WCO724.js";import{a as i}from"./chunk-ATYDQCCJ.js";var t=i({name:"validate-toml",description:"Validate TOML syntax",canFix:!1,stacks:[],defaults:{},extensions:["toml"],checkFile(e,o){if(o===void 0)return[];try{return r(o),[]}catch(a){let s=a instanceof Error?a.message:"invalid TOML";return[{path:e.path,message:s}]}}}),p=t.run,d=t.validator,u=t.main;export{t as a,p as b,d as c,u as d};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as i}from"./chunk-5MVJUALI.js";var n="#%$".repeat(35),g=s=>{let e=s.split(n).map(t=>{let c=t.slice(0,40);t=t.slice(40);let r=t.indexOf(`
2
+ import{d as i}from"./chunk-GVTM4EOU.js";var n="#%$".repeat(35),g=s=>{let e=s.split(n).map(t=>{let c=t.slice(0,40);t=t.slice(40);let r=t.indexOf(`
3
3
  `);if(r<0)return{hash:c,subject:t.trim(),body:""};let o=t.slice(0,r).trim(),a=t.slice(r+1).trim();return{hash:c,subject:o,body:a}});return e.shift(),e},m=async()=>await i`git describe --tags --abbrev=0`.text();var l=async(s,e)=>{let t=`--pretty=format:${n}%H%B`,c=`${s}..${e}`,r=await i`git --no-pager log ${t} ${c}`.text();return g(r)};var p=async(s,e)=>{await i`git tag -a ${s} -m ${e}`.spawn()},h=async(s,e)=>{await i`git push ${s} ${e}`.spawn()};export{m as a,l as b,p as c,h as d};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as t}from"./chunk-UQRZJPYH.js";var n=t({name:"validate-line-endings",description:"Normalize line endings to LF",canFix:!0,stacks:[],defaults:{},checkFile(i,e){return e===void 0?[]:e.includes("\r")?[{path:i.path,message:"file contains CRLF or CR line endings"}]:[]},fixFile(i,e){let r=e.replace(/\r\n/g,`
2
+ import{a as t}from"./chunk-ATYDQCCJ.js";var n=t({name:"validate-line-endings",description:"Normalize line endings to LF",canFix:!0,stacks:[],defaults:{},checkFile(i,e){return e===void 0?[]:e.includes("\r")?[{path:i.path,message:"file contains CRLF or CR line endings"}]:[]},fixFile(i,e){let r=e.replace(/\r\n/g,`
3
3
  `).replace(/\r/g,`
4
4
  `);if(r!==e)return{path:i.path,oldContent:e,newContent:r}}}),s=n.run,d=n.validator,p=n.main;export{n as a,s as b,d as c,p as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as r}from"./chunk-5MVJUALI.js";import{i}from"./chunk-6VHZQNHX.js";var t=async e=>{try{return await r`which ${e}`.noThrow().code()===0}catch{return!1}},s=async()=>{try{return(await fetch("http://localhost:11434/api/version",{signal:AbortSignal.timeout(1e3)})).ok}catch{return!1}},a=e=>i.env.has(e),d=async()=>{let[e,o,l,n]=await Promise.all([t("claude"),s(),t("opencode"),t("kiro")]);return[{name:"claude-code",alias:"cc",type:"CLI",available:e,detail:e?"claude binary found":"claude not on PATH"},{name:"ollama",alias:"ol",type:"HTTP",available:o,detail:o?"localhost:11434 reachable":"localhost:11434 not reachable"},{name:"opencode",alias:"oc",type:"CLI",available:l,detail:l?"opencode binary found":"opencode not on PATH"},{name:"kiro",alias:"kr",type:"CLI",available:n,detail:n?"kiro binary found":"kiro not on PATH"},{name:"anthropic",alias:"ant",type:"API",available:a("ANTHROPIC_API_KEY"),detail:a("ANTHROPIC_API_KEY")?"ANTHROPIC_API_KEY set":"ANTHROPIC_API_KEY not set"},{name:"openai",alias:"oai",type:"API",available:a("OPENAI_API_KEY"),detail:a("OPENAI_API_KEY")?"OPENAI_API_KEY set":"OPENAI_API_KEY not set"},{name:"gemini",alias:"gem",type:"API",available:a("GEMINI_API_KEY")||a("GOOGLE_API_KEY"),detail:a("GEMINI_API_KEY")||a("GOOGLE_API_KEY")?"API key set":"GEMINI_API_KEY not set"},{name:"vertexai",alias:"vtx",type:"API",available:a("GOOGLE_CLOUD_PROJECT"),detail:a("GOOGLE_CLOUD_PROJECT")?"GOOGLE_CLOUD_PROJECT set":"GOOGLE_CLOUD_PROJECT not set"}]};export{d as a};
2
+ import{d as r}from"./chunk-GVTM4EOU.js";import{i}from"./chunk-6DBKPC2O.js";var t=async e=>{try{return await r`which ${e}`.noThrow().code()===0}catch{return!1}},s=async()=>{try{return(await fetch("http://localhost:11434/api/version",{signal:AbortSignal.timeout(1e3)})).ok}catch{return!1}},a=e=>i.env.has(e),d=async()=>{let[e,o,l,n]=await Promise.all([t("claude"),s(),t("opencode"),t("kiro")]);return[{name:"claude-code",alias:"cc",type:"CLI",available:e,detail:e?"claude binary found":"claude not on PATH"},{name:"ollama",alias:"ol",type:"HTTP",available:o,detail:o?"localhost:11434 reachable":"localhost:11434 not reachable"},{name:"opencode",alias:"oc",type:"CLI",available:l,detail:l?"opencode binary found":"opencode not on PATH"},{name:"kiro",alias:"kr",type:"CLI",available:n,detail:n?"kiro binary found":"kiro not on PATH"},{name:"anthropic",alias:"ant",type:"API",available:a("ANTHROPIC_API_KEY"),detail:a("ANTHROPIC_API_KEY")?"ANTHROPIC_API_KEY set":"ANTHROPIC_API_KEY not set"},{name:"openai",alias:"oai",type:"API",available:a("OPENAI_API_KEY"),detail:a("OPENAI_API_KEY")?"OPENAI_API_KEY set":"OPENAI_API_KEY not set"},{name:"gemini",alias:"gem",type:"API",available:a("GEMINI_API_KEY")||a("GOOGLE_API_KEY"),detail:a("GEMINI_API_KEY")||a("GOOGLE_API_KEY")?"API key set":"GEMINI_API_KEY not set"},{name:"vertexai",alias:"vtx",type:"API",available:a("GOOGLE_CLOUD_PROJECT"),detail:a("GOOGLE_CLOUD_PROJECT")?"GOOGLE_CLOUD_PROJECT set":"GOOGLE_CLOUD_PROJECT not set"}]};export{d as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{b as r}from"./chunk-ZEFYMWGZ.js";var n=class{description;#o;#s;#e=[];constructor(o){this.description=o.description,this.#o=o.modules??{},this.#s=o.aliases??{}}addSubmodule(o,e){return this.#e.push({registration:o,module:e}),this}async addSubmoduleAsync(o,e){let s=await e;return this.#e.push({registration:o,module:s}),this}toGroupOptions(){return{description:this.description,modules:this.#o,aliases:Object.keys(this.#s).length>0?this.#s:void 0}}toCommand(o,e){let s=new r(o).description(this.description);e!==void 0&&s.version(e),Object.keys(this.#o).length>0&&s.modules(this.toGroupOptions());for(let{registration:t,module:d}of this.#e){let i=d.toGroupOptions();if(s.group(t.name,i),t.aliases!==void 0)for(let a of t.aliases)s.groupAlias(a,t.name,i)}return s}};export{n as a};
2
+ import{b as r}from"./chunk-RNFCAHVL.js";var n=class{description;#o;#s;#e=[];constructor(o){this.description=o.description,this.#o=o.modules??{},this.#s=o.aliases??{}}addSubmodule(o,e){return this.#e.push({registration:o,module:e}),this}async addSubmoduleAsync(o,e){let s=await e;return this.#e.push({registration:o,module:s}),this}toGroupOptions(){return{description:this.description,modules:this.#o,aliases:Object.keys(this.#s).length>0?this.#s:void 0}}toCommand(o,e){let s=new r(o).description(this.description);e!==void 0&&s.version(e),Object.keys(this.#o).length>0&&s.modules(this.toGroupOptions());for(let{registration:t,module:d}of this.#e){let i=d.toGroupOptions();if(s.group(t.name,i),t.aliases!==void 0)for(let a of t.aliases)s.groupAlias(a,t.name,i)}return s}};export{n as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{i as c}from"./chunk-6VHZQNHX.js";var R=["registry/v1"],$=["file","folder"],b=["local","github"],E=r=>r==="project"||r==="structure"||r==="utility",F=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(typeof e.source!="string"||typeof e.target!="string"||e.kind!==void 0&&!$.includes(e.kind)||e.provider!==void 0&&!b.includes(e.provider))},S=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(e.go!==void 0&&!Array.isArray(e.go)||e.jsr!==void 0&&!Array.isArray(e.jsr)||e.npm!==void 0&&!Array.isArray(e.npm))},k=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(typeof e.name!="string"||e.name===""||typeof e.description!="string"||e.default!==void 0&&typeof e.default!="string"||e.prompt!==void 0&&typeof e.prompt!="string")},u=r=>{if(typeof r!="object"||r===null)return!1;let e=r;if(typeof e.name!="string"||e.name===""||typeof e.description!="string"||typeof e.language!="string"||!E(e.scale)||!Array.isArray(e.files)||e.files.length===0)return!1;for(let n of e.files)if(!F(n))return!1;if(e.dependencies!==void 0&&!S(e.dependencies)||e.tags!==void 0&&!Array.isArray(e.tags))return!1;if(e.requires!==void 0){if(!Array.isArray(e.requires))return!1;for(let n of e.requires)if(typeof n!="string")return!1}if(e.variables!==void 0){if(!Array.isArray(e.variables))return!1;for(let n of e.variables)if(!k(n))return!1}if(e.postInstall!==void 0){if(!Array.isArray(e.postInstall))return!1;for(let n of e.postInstall)if(typeof n!="string")return!1}return!0},g=r=>{if(typeof r!="object"||r===null)throw new Error("Registry manifest must be a JSON object");let e=r;if(e.$schema!==void 0){let i=String(e.$schema);R.some(s=>i.includes(s))||console.warn(`Warning: Registry uses unknown schema "${i}". This CLI supports v1.`)}if(typeof e.name!="string"||e.name==="")throw new Error("Registry manifest requires a non-empty 'name' field");if(typeof e.description!="string")throw new Error("Registry manifest requires a 'description' field");if(typeof e.author!="string")throw new Error("Registry manifest requires an 'author' field");if(typeof e.registryUrl!="string"||e.registryUrl==="")throw new Error("Registry manifest requires a non-empty 'registryUrl' field");if(!Array.isArray(e.recipes))throw new Error("Registry manifest requires a 'recipes' array");for(let i of e.recipes)if(!u(i)){let o=typeof i=="object"&&i!==null?i.name??"<unknown>":"<invalid>";throw new Error(`Invalid recipe definition: '${o}'`)}let n=e.recipes,t=new Set;for(let i of n){if(t.has(i.name))throw new Error(`Duplicate recipe name '${i.name}' in registry`);t.add(i.name)}return r},y=r=>{if(!u(r))throw new Error("Invalid recipe definition");return r},h=(r,e)=>{let n=r.replace(/\/{1,20}$/,""),t=e.replace(/^\/{1,20}/,"");return`${n}/${t}`};var P=3e4,T="eser",v="stack",m="main",p=".eser/recipes.json",j=`https://raw.githubusercontent.com/${T}/${v}/${m}/.eser/recipes.json`,D=p,x=r=>{let e=r.replace(/^gh:/,""),n=e.indexOf("#"),t=n===-1?e:e.slice(0,n),i=n===-1?void 0:e.slice(n+1);if(t.includes("/")){let o=t.indexOf("/"),s=t.slice(0,o),f=t.slice(o+1);return s===""||f===""?{kind:"name",name:t,ref:i}:{kind:"repo",owner:s,repo:f,ref:i??m}}return{kind:"name",name:t,ref:i}},l=async r=>await globalThis.fetch(r,{signal:AbortSignal.timeout(P)}),I=async()=>{let r=c.process.cwd();for(let e=0;e<10;e++){let n=`${r}/${p}`;try{return await c.fs.stat(n),n}catch{let t=r.replace(/\/[^/]+$/,"");if(t===r)break;r=t}}},_=async(r,e)=>{let n=r??j;if(e?.local===!0&&r===void 0){let s=await I();s!==void 0&&(n=s,e?.verbose===!0&&console.log(`Using local registry: ${s}`))}let t=n.startsWith("http://")||n.startsWith("https://");e?.verbose===!0&&console.log(`Fetching registry from: ${n}`);let i;if(t){let s=await l(n);if(!s.ok)throw new Error(`Could not reach registry at ${n}. HTTP ${s.status}`);i=await s.text()}else try{i=await c.fs.readTextFile(n)}catch{throw new Error(`Could not read registry file at ${n}`)}let o;try{o=JSON.parse(i)}catch{throw new Error(`Registry at ${n} is not valid JSON`)}return g(o)},C=async(r,e,n,t)=>{let i=`https://raw.githubusercontent.com/${r}/${e}/${n}/${p}`;return await _(i,t)},M=async(r,e)=>{let n=h(r,e),t=await l(n);if(!t.ok)throw new Error(`Could not fetch recipe file at ${n}. HTTP ${t.status}`);return await t.text()},U=r=>{let e=r.match(/^https:\/\/raw\.githubusercontent\.com\/([^/]+)\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(e!==null)return{owner:e[1],repo:e[2],ref:e[3],basePath:e[4]??""}},q=async(r,e)=>{let n=U(r);if(n===void 0)throw new Error(`Cannot fetch folder: registry URL '${r}' is not a GitHub raw URL`);let t=n.basePath?`${n.basePath}/${e}`.replace(/\/+/g,"/"):e,i=`https://api.github.com/repos/${n.owner}/${n.repo}/contents/${t}?ref=${n.ref}`,o=await l(i);if(!o.ok)throw new Error(`Could not list folder '${t}' from ${n.owner}/${n.repo}. HTTP ${o.status}`);let s=await o.json();if(!Array.isArray(s))throw new Error(`Expected directory listing for '${t}', got a file instead`);let w=s.filter(a=>a.type==="file").map(async a=>{if(a.download_url===null)throw new Error(`File '${a.path}' has no download URL (may be too large)`);let d=await l(a.download_url);if(!d.ok)throw new Error(`Could not fetch file '${a.path}'. HTTP ${d.status}`);return{path:a.path.startsWith(t)?a.path.slice(t.length).replace(/^\//,""):a.path,content:await d.text()}});return await Promise.all(w)},H=async(r,e,n="main",t="recipe.json")=>{let i=`https://raw.githubusercontent.com/${r}/${e}/${n}/${t}`,o=await l(i);if(!o.ok)throw new Error(`Could not fetch recipe from ${r}/${e}@${n}/${t}. HTTP ${o.status}`);let s;try{s=JSON.parse(await o.text())}catch{throw new Error(`Recipe file at ${r}/${e}@${n}/${t} is not valid JSON`)}return y(s)};export{P as a,T as b,v as c,m as d,p as e,j as f,D as g,x as h,l as i,I as j,_ as k,C as l,M as m,U as n,q as o,H as p};
2
+ import{i as c}from"./chunk-6DBKPC2O.js";var R=["registry/v1"],$=["file","folder"],b=["local","github"],E=r=>r==="project"||r==="structure"||r==="utility",F=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(typeof e.source!="string"||typeof e.target!="string"||e.kind!==void 0&&!$.includes(e.kind)||e.provider!==void 0&&!b.includes(e.provider))},S=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(e.go!==void 0&&!Array.isArray(e.go)||e.jsr!==void 0&&!Array.isArray(e.jsr)||e.npm!==void 0&&!Array.isArray(e.npm))},k=r=>{if(typeof r!="object"||r===null)return!1;let e=r;return!(typeof e.name!="string"||e.name===""||typeof e.description!="string"||e.default!==void 0&&typeof e.default!="string"||e.prompt!==void 0&&typeof e.prompt!="string")},u=r=>{if(typeof r!="object"||r===null)return!1;let e=r;if(typeof e.name!="string"||e.name===""||typeof e.description!="string"||typeof e.language!="string"||!E(e.scale)||!Array.isArray(e.files)||e.files.length===0)return!1;for(let n of e.files)if(!F(n))return!1;if(e.dependencies!==void 0&&!S(e.dependencies)||e.tags!==void 0&&!Array.isArray(e.tags))return!1;if(e.requires!==void 0){if(!Array.isArray(e.requires))return!1;for(let n of e.requires)if(typeof n!="string")return!1}if(e.variables!==void 0){if(!Array.isArray(e.variables))return!1;for(let n of e.variables)if(!k(n))return!1}if(e.postInstall!==void 0){if(!Array.isArray(e.postInstall))return!1;for(let n of e.postInstall)if(typeof n!="string")return!1}return!0},g=r=>{if(typeof r!="object"||r===null)throw new Error("Registry manifest must be a JSON object");let e=r;if(e.$schema!==void 0){let i=String(e.$schema);R.some(s=>i.includes(s))||console.warn(`Warning: Registry uses unknown schema "${i}". This CLI supports v1.`)}if(typeof e.name!="string"||e.name==="")throw new Error("Registry manifest requires a non-empty 'name' field");if(typeof e.description!="string")throw new Error("Registry manifest requires a 'description' field");if(typeof e.author!="string")throw new Error("Registry manifest requires an 'author' field");if(typeof e.registryUrl!="string"||e.registryUrl==="")throw new Error("Registry manifest requires a non-empty 'registryUrl' field");if(!Array.isArray(e.recipes))throw new Error("Registry manifest requires a 'recipes' array");for(let i of e.recipes)if(!u(i)){let o=typeof i=="object"&&i!==null?i.name??"<unknown>":"<invalid>";throw new Error(`Invalid recipe definition: '${o}'`)}let n=e.recipes,t=new Set;for(let i of n){if(t.has(i.name))throw new Error(`Duplicate recipe name '${i.name}' in registry`);t.add(i.name)}return r},y=r=>{if(!u(r))throw new Error("Invalid recipe definition");return r},h=(r,e)=>{let n=r.replace(/\/{1,20}$/,""),t=e.replace(/^\/{1,20}/,"");return`${n}/${t}`};var P=3e4,T="eser",v="stack",m="main",p=".eser/recipes.json",j=`https://raw.githubusercontent.com/${T}/${v}/${m}/.eser/recipes.json`,D=p,x=r=>{let e=r.replace(/^gh:/,""),n=e.indexOf("#"),t=n===-1?e:e.slice(0,n),i=n===-1?void 0:e.slice(n+1);if(t.includes("/")){let o=t.indexOf("/"),s=t.slice(0,o),f=t.slice(o+1);return s===""||f===""?{kind:"name",name:t,ref:i}:{kind:"repo",owner:s,repo:f,ref:i??m}}return{kind:"name",name:t,ref:i}},l=async r=>await globalThis.fetch(r,{signal:AbortSignal.timeout(P)}),I=async()=>{let r=c.process.cwd();for(let e=0;e<10;e++){let n=`${r}/${p}`;try{return await c.fs.stat(n),n}catch{let t=r.replace(/\/[^/]+$/,"");if(t===r)break;r=t}}},_=async(r,e)=>{let n=r??j;if(e?.local===!0&&r===void 0){let s=await I();s!==void 0&&(n=s,e?.verbose===!0&&console.log(`Using local registry: ${s}`))}let t=n.startsWith("http://")||n.startsWith("https://");e?.verbose===!0&&console.log(`Fetching registry from: ${n}`);let i;if(t){let s=await l(n);if(!s.ok)throw new Error(`Could not reach registry at ${n}. HTTP ${s.status}`);i=await s.text()}else try{i=await c.fs.readTextFile(n)}catch{throw new Error(`Could not read registry file at ${n}`)}let o;try{o=JSON.parse(i)}catch{throw new Error(`Registry at ${n} is not valid JSON`)}return g(o)},C=async(r,e,n,t)=>{let i=`https://raw.githubusercontent.com/${r}/${e}/${n}/${p}`;return await _(i,t)},M=async(r,e)=>{let n=h(r,e),t=await l(n);if(!t.ok)throw new Error(`Could not fetch recipe file at ${n}. HTTP ${t.status}`);return await t.text()},U=r=>{let e=r.match(/^https:\/\/raw\.githubusercontent\.com\/([^/]+)\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(e!==null)return{owner:e[1],repo:e[2],ref:e[3],basePath:e[4]??""}},q=async(r,e)=>{let n=U(r);if(n===void 0)throw new Error(`Cannot fetch folder: registry URL '${r}' is not a GitHub raw URL`);let t=n.basePath?`${n.basePath}/${e}`.replace(/\/+/g,"/"):e,i=`https://api.github.com/repos/${n.owner}/${n.repo}/contents/${t}?ref=${n.ref}`,o=await l(i);if(!o.ok)throw new Error(`Could not list folder '${t}' from ${n.owner}/${n.repo}. HTTP ${o.status}`);let s=await o.json();if(!Array.isArray(s))throw new Error(`Expected directory listing for '${t}', got a file instead`);let w=s.filter(a=>a.type==="file").map(async a=>{if(a.download_url===null)throw new Error(`File '${a.path}' has no download URL (may be too large)`);let d=await l(a.download_url);if(!d.ok)throw new Error(`Could not fetch file '${a.path}'. HTTP ${d.status}`);return{path:a.path.startsWith(t)?a.path.slice(t.length).replace(/^\//,""):a.path,content:await d.text()}});return await Promise.all(w)},H=async(r,e,n="main",t="recipe.json")=>{let i=`https://raw.githubusercontent.com/${r}/${e}/${n}/${t}`,o=await l(i);if(!o.ok)throw new Error(`Could not fetch recipe from ${r}/${e}@${n}/${t}. HTTP ${o.status}`);let s;try{s=JSON.parse(await o.text())}catch{throw new Error(`Recipe file at ${r}/${e}@${n}/${t} is not valid JSON`)}return y(s)};export{P as a,T as b,v as c,m as d,p as e,j as f,D as g,x as h,l as i,I as j,_ as k,C as l,M as m,U as n,q as o,H as p};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{e as o}from"./chunk-EXP2TZZC.js";var d=(e,n)=>{if(e!==void 0)for(let r of e){if(r==="--agent")return"agent";if(r==="--human")return"human"}let t=n?.agentMode;return t===!0?"agent":t===!1?"human":o()};var u=e=>e===void 0?[]:e.filter(n=>n!=="--agent"&&n!=="--human"&&n!=="--non-interactive");export{d as a,u as b};
2
+ import{e as o}from"./chunk-L5OC7F24.js";var d=(e,n)=>{if(e!==void 0)for(let r of e){if(r==="--agent")return"agent";if(r==="--human")return"human"}let t=n?.agentMode;return t===!0?"agent":t===!1?"human":o()};var u=e=>e===void 0?[]:e.filter(n=>n!=="--agent"&&n!=="--human"&&n!=="--non-interactive");export{d as a,u as b};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as $}from"./chunk-LSET5TD3.js";import{e as x}from"./chunk-5DWJ7WEE.js";import{i as c}from"./chunk-6VHZQNHX.js";import{Scanner as ie}from"@tailwindcss/oxide";import{compile as j}from"tailwindcss";async function L(e,s){if(e.startsWith(".")||e.startsWith("/")){let r=c.path.resolve(s,e),n=await c.fs.readTextFile(r);return{path:r,content:n,base:c.path.dirname(r)}}let t=s;for(;t!=="/"&&t!=="";){let r=c.path.resolve(t,"node_modules",e);try{let n=await c.fs.readTextFile(r);return{path:r,content:n,base:c.path.dirname(r)}}catch{if(!e.endsWith(".css")){let a=`${r}.css`;try{let o=await c.fs.readTextFile(a);return{path:a,content:o,base:c.path.dirname(a)}}catch{}}let n=c.path.resolve(t,"node_modules",e,"index.css");try{let a=await c.fs.readTextFile(n);return{path:n,content:a,base:c.path.dirname(n)}}catch{t=c.path.dirname(t)}}}let l=c.path.resolve(s,e),i=await c.fs.readTextFile(l);return{path:l,content:i,base:c.path.dirname(l)}}async function w(e,s){let t=await j(e,{base:s.base,loadStylesheet:L}),l=s.candidates??[];return t.build(l)}function v(e,s){return w(e,{base:s,candidates:[]})}var R=["theme","base","properties"],P=[/^\.(flex|grid|block|inline|hidden)/,/^\.(items-|justify-|gap-|space-)/,/^\.(w-|h-|min-h-|max-w-)/,/^\.(p-|px-|py-|pt-|pb-|pl-|pr-)/,/^\.(m-|mx-|my-|mt-|mb-|ml-|mr-)/,/^\.(text-|font-|leading-)/,/^\.(bg-|border-)/,/^\.(from-|via-|to-)/,/^\.(container|wrapper)/,/^\.(rounded|shadow)/,/^\.(overflow-)/,/^\.(sm:|md:|lg:|xl:)/],B=[/--tw-gradient/,/--tw-rotate/,/--tw-scale/,/--tw-skew/,/--tw-translate/,/--tw-shadow/,/--tw-ring/,/--tw-blur/,/--tw-brightness/];function N(){return{criticalLayers:R,aboveFoldPatterns:P,forceInclude:[],forceExclude:[]}}var b=x.getLogger(["laroux-bundler","critical-page-css"]);function W(e,s){let t=s;for(;t<e.length&&e[t]!=="{";)t++;if(t>=e.length)return null;let l=t+1,i=1;for(t++;t<e.length&&i>0;)e[t]==="{"?i++:e[t]==="}"&&i--,t++;return{innerContent:e.slice(l,t-1).trim(),end:t}}function V(e){let s=[],t="@keyframes",l=0;for(;l<e.length;){let i=e.indexOf(t,l);if(i===-1)break;let r=i+t.length;for(;r<e.length&&/\s/.test(e[r]??"");)r++;let n=r;for(;n<e.length&&e[n]!=="{"&&!/\s/.test(e[n]??"");)n++;let a=e.slice(r,n),o=n;for(;o<e.length&&e[o]!=="{";)o++;if(o>=e.length){l=e.length;break}let g=1,u=o+1;for(;u<e.length&&g>0;)e[u]==="{"?g++:e[u]==="}"&&g--,u++;let d=e.slice(i,u);s.push({name:a,block:d}),l=u}return s}function Z(e){let s=new Map,t=new Map,l=new Map,i=/@layer\s+([a-zA-Z_-][a-zA-Z0-9_-]*)\s*[{;]/g,r;for(;(r=i.exec(e))!==null;){let n=r[1];if(n===void 0||r[0].endsWith(";"))continue;let a=W(e,r.index+r[0].length-1);a&&(t.has(n)||(t.set(n,[]),l.set(n,{start:r.index,end:a.end})),t.get(n).push(a.innerContent),l.get(n).end=a.end)}for(let[n,a]of t){let o=a.join(`
2
+ import{a as $}from"./chunk-3OG2MEF2.js";import{e as x}from"./chunk-5DWJ7WEE.js";import{i as c}from"./chunk-6DBKPC2O.js";import{Scanner as ie}from"@tailwindcss/oxide";import{compile as j}from"tailwindcss";async function L(e,s){if(e.startsWith(".")||e.startsWith("/")){let r=c.path.resolve(s,e),n=await c.fs.readTextFile(r);return{path:r,content:n,base:c.path.dirname(r)}}let t=s;for(;t!=="/"&&t!=="";){let r=c.path.resolve(t,"node_modules",e);try{let n=await c.fs.readTextFile(r);return{path:r,content:n,base:c.path.dirname(r)}}catch{if(!e.endsWith(".css")){let a=`${r}.css`;try{let o=await c.fs.readTextFile(a);return{path:a,content:o,base:c.path.dirname(a)}}catch{}}let n=c.path.resolve(t,"node_modules",e,"index.css");try{let a=await c.fs.readTextFile(n);return{path:n,content:a,base:c.path.dirname(n)}}catch{t=c.path.dirname(t)}}}let l=c.path.resolve(s,e),i=await c.fs.readTextFile(l);return{path:l,content:i,base:c.path.dirname(l)}}async function w(e,s){let t=await j(e,{base:s.base,loadStylesheet:L}),l=s.candidates??[];return t.build(l)}function v(e,s){return w(e,{base:s,candidates:[]})}var R=["theme","base","properties"],P=[/^\.(flex|grid|block|inline|hidden)/,/^\.(items-|justify-|gap-|space-)/,/^\.(w-|h-|min-h-|max-w-)/,/^\.(p-|px-|py-|pt-|pb-|pl-|pr-)/,/^\.(m-|mx-|my-|mt-|mb-|ml-|mr-)/,/^\.(text-|font-|leading-)/,/^\.(bg-|border-)/,/^\.(from-|via-|to-)/,/^\.(container|wrapper)/,/^\.(rounded|shadow)/,/^\.(overflow-)/,/^\.(sm:|md:|lg:|xl:)/],B=[/--tw-gradient/,/--tw-rotate/,/--tw-scale/,/--tw-skew/,/--tw-translate/,/--tw-shadow/,/--tw-ring/,/--tw-blur/,/--tw-brightness/];function N(){return{criticalLayers:R,aboveFoldPatterns:P,forceInclude:[],forceExclude:[]}}var b=x.getLogger(["laroux-bundler","critical-page-css"]);function W(e,s){let t=s;for(;t<e.length&&e[t]!=="{";)t++;if(t>=e.length)return null;let l=t+1,i=1;for(t++;t<e.length&&i>0;)e[t]==="{"?i++:e[t]==="}"&&i--,t++;return{innerContent:e.slice(l,t-1).trim(),end:t}}function V(e){let s=[],t="@keyframes",l=0;for(;l<e.length;){let i=e.indexOf(t,l);if(i===-1)break;let r=i+t.length;for(;r<e.length&&/\s/.test(e[r]??"");)r++;let n=r;for(;n<e.length&&e[n]!=="{"&&!/\s/.test(e[n]??"");)n++;let a=e.slice(r,n),o=n;for(;o<e.length&&e[o]!=="{";)o++;if(o>=e.length){l=e.length;break}let g=1,u=o+1;for(;u<e.length&&g>0;)e[u]==="{"?g++:e[u]==="}"&&g--,u++;let d=e.slice(i,u);s.push({name:a,block:d}),l=u}return s}function Z(e){let s=new Map,t=new Map,l=new Map,i=/@layer\s+([a-zA-Z_-][a-zA-Z0-9_-]*)\s*[{;]/g,r;for(;(r=i.exec(e))!==null;){let n=r[1];if(n===void 0||r[0].endsWith(";"))continue;let a=W(e,r.index+r[0].length-1);a&&(t.has(n)||(t.set(n,[]),l.set(n,{start:r.index,end:a.end})),t.get(n).push(a.innerContent),l.get(n).end=a.end)}for(let[n,a]of t){let o=a.join(`
3
3
  `),g=l.get(n);s.set(n,{block:`@layer ${n} {
4
4
  ${o}
5
5
  }`,start:g.start,end:g.end})}return s}function Y(e){let s=[],t=0;for(;t<e.length;){for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)break;let l=t;for(;t<e.length&&e[t]!=="{";)t++;if(t>=e.length)break;let i=e.slice(l,t).trim();if(!i){t++;continue}let r=1;for(t++;t<e.length&&r>0;)e[t]==="{"?r++:e[t]==="}"&&r--,t++;let n=e.slice(l,t);i.startsWith("@media")||i.startsWith("@supports")?s.push({selector:"@media",full:n}):i&&!i.startsWith("@")&&s.push({selector:i,full:n})}return s}function H(e,s){let t=e.match(/\.([a-zA-Z_-][a-zA-Z0-9_\-\\:/.[\]]*)/g);if(t)for(let r of t){let n=r.substring(1);if(n=n.replace(/\\/g,""),n=n.split(":")[0]??"",n&&new RegExp(`class=["'][^"']*\\b${q(n)}\\b`,"i").test(s))return!0}let l=e.match(/^([a-zA-Z][a-zA-Z0-9-]*)/);if(l&&l[1]){let r=l[1].toLowerCase();if(new RegExp(`<${r}[\\s>]`,"i").test(s))return!0}let i=e.match(/#([a-zA-Z_-][a-zA-Z0-9_-]*)/g);if(i)for(let r of i){let n=r.substring(1);if(new RegExp(`id=["']${n}["']`,"i").test(s))return!0}return!1}function q(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function z(e,s){return s.some(t=>typeof t=="string"?e.includes(t):t.test(e))}function K(e){return P.some(s=>s.test(e))}function k(e){let{html:s,css:t,forceInclude:l=[],forceExclude:i=[]}=e;b.debug("Extracting critical page CSS (Tailwind v4 aware)...");let r=[],n=[],a=0,o=0,g=t.match(/^\/\*![\s\S]*?\*\//);g&&r.push(g[0]);let u=t.match(/@layer\s+[\w,-]{1,200}(?:\s+[\w,-]{1,50})*\s*;/);u&&r.push(u[0]);let d=/@property\s+--[\w-]+\s*\{[^}]{0,5000}\}/g,f=t.match(d)??[];f.length>0&&(r.push(f.join(`
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{b as a}from"./chunk-JZ7DUWYC.js";import{f as i,h as o,k as n}from"./chunk-MBG7SPPO.js";import{i as r}from"./chunk-6VHZQNHX.js";var C=()=>{let t=r.process.isTerminal("stdout")?"interactive":"non-interactive",e=a({interaction:t});return{ctx:e,output:e.output}},d=()=>i({renderer:n.ansi(),sink:o.stdout()}),x=(s,t)=>({command:s,args:t._??[],flags:Object.fromEntries(Object.entries(t).filter(([e])=>e!=="_"))});export{C as a,d as b,x as c};
2
+ import{b as a}from"./chunk-YACXTCWF.js";import{f as i,h as o,k as n}from"./chunk-SHN5MT56.js";import{i as r}from"./chunk-6DBKPC2O.js";var C=()=>{let t=r.process.isTerminal("stdout")?"interactive":"non-interactive",e=a({interaction:t});return{ctx:e,output:e.output}},d=()=>i({renderer:n.ansi(),sink:o.stdout()}),x=(s,t)=>({command:s,args:t._??[],flags:Object.fromEntries(Object.entries(t).filter(([e])=>e!=="_"))});export{C as a,d as b,x as c};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as E,b as A,c as I}from"./chunk-IQQEVKBP.js";import{a as w}from"./chunk-LFNUSULJ.js";import{b as v}from"./chunk-L7RS6MQ5.js";import{f as D}from"./chunk-P2MUEKFT.js";import{b as l,f as g,g as k,h as C,i as h}from"./chunk-YVN2NZL4.js";import{g as a}from"./chunk-FFWPJP7A.js";import{j as b}from"./chunk-6VHZQNHX.js";var u=v(),O=/\/\*\*\s*([\s\S]*?)\s*\*\//g,R=/export\s+(const|function|class|type|interface)\s+(\w+)/g,$=/@example/,S=s=>{let n=[],i;for(R.lastIndex=0;(i=R.exec(s))!==null;){let e=i.index,t=i[2];if(t===void 0)continue;let c=s.substring(0,e).split(`
2
+ import{a as E,b as A,c as I}from"./chunk-IIFFSCDJ.js";import{a as w}from"./chunk-LFNUSULJ.js";import{b as v}from"./chunk-O325ZU5M.js";import{f as D}from"./chunk-P2MUEKFT.js";import{b as l,f as g,g as k,h as C,i as h}from"./chunk-YVN2NZL4.js";import{g as a}from"./chunk-FFWPJP7A.js";import{j as b}from"./chunk-6DBKPC2O.js";var u=v(),O=/\/\*\*\s*([\s\S]*?)\s*\*\//g,R=/export\s+(const|function|class|type|interface)\s+(\w+)/g,$=/@example/,S=s=>{let n=[],i;for(R.lastIndex=0;(i=R.exec(s))!==null;){let e=i.index,t=i[2];if(t===void 0)continue;let c=s.substring(0,e).split(`
3
3
  `).length,p=null,m=[...s.substring(0,e).matchAll(O)];if(m.length>0){let r=m[m.length-1];if(r!==void 0){let d=(r.index??0)+r[0].length,f=s.substring(d,e);/^\s*$/.test(f)&&(p=r[1]??null)}}n.push({jsdoc:p,symbolName:t,line:c})}return n},_=(s,n,i)=>{let e=[];if(s===null)return e.push("missing-description"),e;let t=s.split(`
4
4
  `)[0]?.trim();return(!t||t.startsWith("@"))&&e.push("empty-description"),i&&!$.test(s)&&e.push("missing-example"),e},F=async(s={})=>{let{root:n=".",requireExamples:i=!1}=s,e=await E(n),t=[],o=0,c=0;for(let p of e){let y=await I(p.path);for(let m of y){let r=A(m,p.path),d;try{d=await b.runtime.fs.readTextFile(r)}catch{continue}o++;let f=S(d);for(let{jsdoc:T,symbolName:x,line:P}of f){c++;let M=_(T,x,i);for(let N of M)t.push({file:r,symbol:x,issue:N,line:P})}}}return{isValid:t.length===0,issues:t,filesChecked:o,symbolsChecked:c}},J=s=>{switch(s){case"missing-description":return"Missing JSDoc documentation";case"missing-param":return"Missing @param documentation";case"missing-returns":return"Missing @returns documentation";case"missing-example":return"Missing @example";case"empty-description":return"Empty description"}},j=s=>D.fromPromise(()=>F(s)),V=s=>a.ok({root:"."}),q=s=>{if(a.isFail(s))return u.writeln(g("\u2717"),l(" "+String(s.error))),a.fail({exitCode:1});let{value:n}=s;if(u.writeln(h("\u2139"),l(` Checked ${n.filesChecked} files, ${n.symbolsChecked} symbols.`)),!n.isValid){u.writeln(g("\u2717"),l(` Found ${n.issues.length} documentation issues:`));let i=new Map;for(let e of n.issues){let t=i.get(e.file)??[];t.push(e),i.set(e.file,t)}for(let[e,t]of i){u.writeln(C("\u26A0"),l(" "+e));for(let o of t){let c=o.line!==void 0?`:${o.line}`:"";u.writeln(h("\u2139"),l(` ${o.symbol}${c}: ${J(o.issue)}`))}}return a.fail({exitCode:1})}return u.writeln(k("\u2713"),l(" All documentation is valid.")),a.ok(void 0)},B=w.createTrigger({handler:j,adaptInput:V,adaptOutput:q}),Q=async s=>await B({command:"validate-docs",args:[],flags:{}});export{F as a,j as b,B as c,Q as d};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
+ var c=class{stdinData;stdinOffset=0;stdoutChunks=[];stderrChunks=[];instance=null;exitCode=null;constructor(e={}){this.stdinData=e.stdin??new Uint8Array(0)}getStdout(){let e=this.stdoutChunks.reduce((r,s)=>r+s.length,0),n=new Uint8Array(e),t=0;for(let r of this.stdoutChunks)n.set(r,t),t+=r.length;return new TextDecoder().decode(n)}getExitCode(){return this.exitCode}getMemory(){if(this.instance===null)throw new Error("WASI shim: instance not set");let e=this.instance.exports.memory;return new DataView(e.buffer)}getMemoryBytes(){if(this.instance===null)throw new Error("WASI shim: instance not set");let e=this.instance.exports.memory;return new Uint8Array(e.buffer)}setInstance(e){this.instance=e}start(e){this.setInstance(e);let n=e.exports._start;if(typeof n!="function")throw new Error("WASI shim: no _start export found");try{n()}catch(t){if(t instanceof b){if(this.exitCode=t.code,t.code!==0)throw t;return}throw t}}initialize(e){this.setInstance(e);let n=e.exports._initialize;if(typeof n=="function"){n();return}let t=e.exports._start;if(typeof t=="function")try{t()}catch(r){if(r instanceof b&&r.code===0)return;throw r}}get wasiImport(){return{fd_write:(e,n,t,r)=>{let s=this.getMemory(),u=this.getMemoryBytes(),o=0;for(let i=0;i<t;i++){let m=n+i*8,S=s.getUint32(m,!0),_=s.getUint32(m+4,!0),R=u.slice(S,S+_);if(e===1)this.stdoutChunks.push(R);else if(e===2)this.stderrChunks.push(R);else return 8;o+=_}return s.setUint32(r,o,!0),0},fd_read:(e,n,t,r)=>{if(e!==0)return 8;let s=this.getMemory(),u=this.getMemoryBytes(),o=0;for(let i=0;i<t;i++){let m=n+i*8,S=s.getUint32(m,!0),_=s.getUint32(m+4,!0),R=this.stdinData.length-this.stdinOffset,a=Math.min(_,R);if(a>0&&(u.set(this.stdinData.subarray(this.stdinOffset,this.stdinOffset+a),S),this.stdinOffset+=a,o+=a),a<_)break}return s.setUint32(r,o,!0),0},fd_close:e=>0,fd_seek:(e,n,t,r,s)=>52,fd_fdstat_get:(e,n)=>{let t=this.getMemory();return t.setUint8(n,2),t.setUint16(n+2,0,!0),t.setBigUint64(n+8,BigInt(0),!0),t.setBigUint64(n+16,BigInt(0),!0),e<=2?0:8},fd_fdstat_set_flags:(e,n)=>0,fd_prestat_get:(e,n)=>8,fd_prestat_dir_name:(e,n,t)=>8,proc_exit:e=>{throw this.exitCode=e,new b(e)},clock_time_get:(e,n,t)=>{let r=this.getMemory(),s=BigInt(Date.now())*BigInt(1e6);return r.setBigUint64(t,s,!0),0},environ_sizes_get:(e,n)=>{let t=this.getMemory();return t.setUint32(e,0,!0),t.setUint32(n,0,!0),0},environ_get:(e,n)=>0,args_sizes_get:(e,n)=>{let t=this.getMemory();return t.setUint32(e,0,!0),t.setUint32(n,0,!0),0},args_get:(e,n)=>0,path_open:()=>52,path_filestat_get:()=>52,path_create_directory:()=>52,path_remove_directory:()=>52,path_unlink_file:()=>52,path_rename:()=>52,path_readlink:()=>52,path_symlink:()=>52,fd_readdir:()=>52,fd_filestat_get:()=>52,fd_filestat_set_size:()=>52,fd_filestat_set_times:()=>52,fd_advise:()=>52,fd_allocate:()=>52,fd_datasync:()=>52,fd_sync:()=>52,fd_pread:()=>52,fd_pwrite:()=>52,fd_renumber:()=>52,fd_tell:()=>52,poll_oneoff:(e,n,t,r)=>{let s=this.getMemory();for(let u=0;u<t;u++){let o=e+u*48,i=n+u*32,m=s.getBigUint64(o,!0);s.setBigUint64(i,m,!0),s.setUint16(i+8,0,!0),s.setUint8(i+10,s.getUint8(o+8))}return s.setUint32(r,t,!0),0},random_get:(e,n)=>{let t=this.getMemoryBytes(),r=new Uint8Array(n);return crypto.getRandomValues(r),t.set(r,e),0},sched_yield:()=>0,sock_accept:()=>52,sock_recv:()=>52,sock_send:()=>52,sock_shutdown:()=>52}}},b=class extends Error{code;constructor(e){super(`WASI proc_exit(${e})`),this.name="WasiExitError",this.code=e}};export{c as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as o}from"./chunk-UQRZJPYH.js";import{a as l}from"./chunk-2XNFZXHY.js";import{e as n}from"./chunk-5WJ6AUNY.js";var i=n(l(),1);var a=o({name:"validate-yaml",description:"Validate YAML syntax",canFix:!1,stacks:[],defaults:{},extensions:["yml","yaml"],checkFile(e,r){if(r===void 0)return[];try{return i.parse(r),[]}catch(t){let s=t instanceof Error?t.message:"invalid YAML";return[{path:e.path,message:s}]}}}),d=a.run,u=a.validator,f=a.main;export{a,d as b,u as c,f as d};
2
+ import{a as o}from"./chunk-ATYDQCCJ.js";import{a as l}from"./chunk-2XNFZXHY.js";import{e as n}from"./chunk-5WJ6AUNY.js";var i=n(l(),1);var a=o({name:"validate-yaml",description:"Validate YAML syntax",canFix:!1,stacks:[],defaults:{},extensions:["yml","yaml"],checkFile(e,r){if(r===void 0)return[];try{return i.parse(r),[]}catch(t){let s=t instanceof Error?t.message:"invalid YAML";return[{path:e.path,message:s}]}}}),d=a.run,u=a.validator,f=a.main;export{a,d as b,u as c,f as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as n}from"./chunk-UQRZJPYH.js";var e=n({name:"validate-case-conflict",description:"Detect filenames that differ only by case",canFix:!1,stacks:[],defaults:{},checkAll(r){let o=new Map,s=[];for(let t of r){let a=t.path.toLowerCase(),i=o.get(a);i!==void 0?s.push({path:t.path,message:`case conflict with "${i}"`}):o.set(a,t.path)}return s}}),f=e.run,m=e.validator,d=e.main;export{e as a,f as b,m as c,d};
2
+ import{a as n}from"./chunk-ATYDQCCJ.js";var e=n({name:"validate-case-conflict",description:"Detect filenames that differ only by case",canFix:!1,stacks:[],defaults:{},checkAll(r){let o=new Map,s=[];for(let t of r){let a=t.path.toLowerCase(),i=o.get(a);i!==void 0?s.push({path:t.path,message:`case conflict with "${i}"`}):o.set(a,t.path)}return s}}),f=e.run,m=e.validator,d=e.main;export{e as a,f as b,m as c,d};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as s}from"./chunk-UQRZJPYH.js";var l=[/^<{7}\s/,/^={7}$/,/^>{7}\s/],i=s({name:"validate-merge-conflict",description:"Detect merge conflict markers",canFix:!1,stacks:[],defaults:{},checkFile(a,o){if(o===void 0)return[];let r=[],e=o.split(`
2
+ import{a as s}from"./chunk-ATYDQCCJ.js";var l=[/^<{7}\s/,/^={7}$/,/^>{7}\s/],i=s({name:"validate-merge-conflict",description:"Detect merge conflict markers",canFix:!1,stacks:[],defaults:{},checkFile(a,o){if(o===void 0)return[];let r=[],e=o.split(`
3
3
  `);for(let t=0;t<e.length;t++)for(let n of l)if(n.test(e[t])){r.push({path:a.path,line:t+1,message:`merge conflict marker: ${e[t].slice(0,20)}`});break}return r}}),f=i.run,u=i.validator,d=i.main;export{i as a,f as b,u as c,d};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as u}from"./chunk-MG65QJY6.js";import{a as p,b as f}from"./chunk-FFWPJP7A.js";import{i as x}from"./chunk-6VHZQNHX.js";var h=t=>{let e=[],n=[],i={},s={};for(let r of t)r.type==="boolean"?e.push(r.name):n.push(r.name),r.short!==void 0&&(i[r.short]=r.name),r.default!==void 0&&(s[r.name]=r.default);return{boolean:e,string:n,alias:i,default:s}},T=t=>t!=null&&t.constructor===String,V={boolean:t=>!!t,number:t=>T(t)?Number(t):t,string:t=>String(t),"string[]":t=>Array.isArray(t)?t.map(String):[String(t)]},v=(t,e)=>{if(t!==void 0)return V[e]?.(t)??t},$=(t,e)=>{let n={};for(let i of e){let s=t[i.name];n[i.name]=v(s,i.type)}return n},ie=(t,e)=>{let n=h(e),i=u(t,n);return{positional:i._,flags:$(i,e)}},_=(t,e)=>{let n=[];for(let i of e)if(i.required===!0){let s=t[i.name];(s===void 0||s===""||s===!1)&&n.push(`Required flag --${i.name} is missing`)}return n};var O=(t,e)=>t+" ".repeat(Math.max(0,e-t.length)),U=t=>{let e=t.short!==void 0?`-${t.short}, `:"",n=t.type!=="boolean"?` <${t.type}>`:"";return`${e}--${t.name}${n}`},q=(t,e)=>[t.description!==void 0?`${e} - ${t.description}`:e,""],B=(t,e)=>{if(t.usage!==void 0)return["Usage:",` ${t.usage}`,""];let n=t.children.length>0?" <command>":"",i=t.flags.length>0?" [options]":"";return["Usage:",` ${e}${n}${i}`,""]},I=t=>{if(t.length===0)return[];let e=s=>s.aliases!==void 0&&s.aliases.length>0?`${s.name}, ${s.aliases.join(", ")}`:s.name,n=Math.max(...t.map(s=>e(s).length));return["Commands:",...t.map(s=>` ${O(e(s),n+2)}${s.description??""}`),""]},Y=t=>{if(t.length===0)return[];let e=t.map(s=>({flag:U(s),desc:s.description})),n=Math.max(...e.map(s=>s.flag.length));return["Options:",...e.map(({flag:s,desc:r})=>` ${O(s,n+2)}${r}`),""]},Z=t=>t?.length?["Examples:",...t.map(e=>` ${e}`),""]:[],M=(t,e)=>{let n=e.join(" "),i=[...q(t,n),...B(t,n),...I(t.children),...Y(t.flags),...Z(t.examples)];return t.children.length>0&&i.push(`Run '${n} <command> --help' for more information on a command.`),i.join(`
2
+ import{a as u}from"./chunk-MG65QJY6.js";import{a as p,b as f}from"./chunk-FFWPJP7A.js";import{i as x}from"./chunk-6DBKPC2O.js";var h=t=>{let e=[],n=[],i={},s={};for(let r of t)r.type==="boolean"?e.push(r.name):n.push(r.name),r.short!==void 0&&(i[r.short]=r.name),r.default!==void 0&&(s[r.name]=r.default);return{boolean:e,string:n,alias:i,default:s}},T=t=>t!=null&&t.constructor===String,V={boolean:t=>!!t,number:t=>T(t)?Number(t):t,string:t=>String(t),"string[]":t=>Array.isArray(t)?t.map(String):[String(t)]},v=(t,e)=>{if(t!==void 0)return V[e]?.(t)??t},$=(t,e)=>{let n={};for(let i of e){let s=t[i.name];n[i.name]=v(s,i.type)}return n},ie=(t,e)=>{let n=h(e),i=u(t,n);return{positional:i._,flags:$(i,e)}},_=(t,e)=>{let n=[];for(let i of e)if(i.required===!0){let s=t[i.name];(s===void 0||s===""||s===!1)&&n.push(`Required flag --${i.name} is missing`)}return n};var O=(t,e)=>t+" ".repeat(Math.max(0,e-t.length)),U=t=>{let e=t.short!==void 0?`-${t.short}, `:"",n=t.type!=="boolean"?` <${t.type}>`:"";return`${e}--${t.name}${n}`},q=(t,e)=>[t.description!==void 0?`${e} - ${t.description}`:e,""],B=(t,e)=>{if(t.usage!==void 0)return["Usage:",` ${t.usage}`,""];let n=t.children.length>0?" <command>":"",i=t.flags.length>0?" [options]":"";return["Usage:",` ${e}${n}${i}`,""]},I=t=>{if(t.length===0)return[];let e=s=>s.aliases!==void 0&&s.aliases.length>0?`${s.name}, ${s.aliases.join(", ")}`:s.name,n=Math.max(...t.map(s=>e(s).length));return["Commands:",...t.map(s=>` ${O(e(s),n+2)}${s.description??""}`),""]},Y=t=>{if(t.length===0)return[];let e=t.map(s=>({flag:U(s),desc:s.description})),n=Math.max(...e.map(s=>s.flag.length));return["Options:",...e.map(({flag:s,desc:r})=>` ${O(s,n+2)}${r}`),""]},Z=t=>t?.length?["Examples:",...t.map(e=>` ${e}`),""]:[],M=(t,e)=>{let n=e.join(" "),i=[...q(t,n),...B(t,n),...I(t.children),...Y(t.flags),...Z(t.examples)];return t.children.length>0&&i.push(`Run '${n} <command> --help' for more information on a command.`),i.join(`
3
3
  `)};var w=t=>{let e=[];for(let n of t)e.push(`--${n.name}`),n.short!==void 0&&e.push(`-${n.short}`);return e.join(" ")},k=(t,e)=>{if(t.children===void 0||t.children.length===0)return"";let n=t.children.map(o=>o.name).join(" "),i=t.flags!==void 0?w(t.flags):"",s=[n,i].filter(o=>o.length>0).join(" "),r=` ${e})
4
4
  `;r+=` COMPREPLY=( $(compgen -W "${s}" -- "\${cur}") )
5
5
  `,r+=` return 0
@@ -77,7 +77,7 @@ complete -F _${t}_completions ${t}
77
77
  `;return n+=`# ${t} zsh completion
78
78
  `,n+=`# Generated by @eser/shell/completions
79
79
 
80
- `,n+=P(t,e,[]),n};var S=t=>t.replace(/[\\'\$`()]/g,"\\$&"),ee=(t,e,n)=>{let i="";for(let s of e){let r=S(s.description??`${s.name} flag`),o=`complete -c ${t} ${n}`;o+=` -l ${s.name}`,s.short!==void 0&&(o+=` -s ${s.short}`),s.takesValue===!0&&(o+=" -r"),o+=` -d '${r}'`,i+=o+`
80
+ `,n+=P(t,e,[]),n};var S=t=>t.replace(/[\\'"$`(){}|&;<>#~*?!\^]/g,"\\$&"),ee=(t,e,n)=>{let i="";for(let s of e){let r=S(s.description??`${s.name} flag`),o=`complete -c ${t} ${n}`;o+=` -l ${s.name}`,s.short!==void 0&&(o+=` -s ${s.short}`),s.takesValue===!0&&(o+=" -r"),o+=` -d '${r}'`,i+=o+`
81
81
  `}return i},A=(t,e,n)=>{let i="",s;if(n.length===0?s="-n __fish_use_subcommand":s=`-n "${n.map(o=>`__fish_seen_subcommand_from ${o}`).join("; and ")}"`,e.children!==void 0&&e.children.length>0){for(let r of e.children){let o=S(r.description??r.name);if(n.length===0)i+=`complete -c ${t} -f ${s} `,i+=`-a "${r.name}" -d '${o}'
82
82
  `;else{let a=`-n "__fish_seen_subcommand_from ${n[n.length-1]}"`;i+=`complete -c ${t} -f ${a} `,i+=`-a "${r.name}" -d '${o}'
83
83
  `}}for(let r of e.children)i+=A(t,r,[...n,r.name])}return e.flags!==void 0&&e.flags.length>0&&(i+=ee(t,e.flags,s)),i},j=(t,e)=>{let n=`# ${t} fish completion
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as D,p as w}from"./chunk-YVN2NZL4.js";import{i as g}from"./chunk-6VHZQNHX.js";import{d as j}from"./chunk-5WJ6AUNY.js";var v=class extends Error{constructor(r){super(r),this.name="StreamError"}},b=class extends v{cause;constructor(r,n){super(r),this.name="PipelineError",this.cause=n}},x=class extends v{constructor(r){super(`Pipeline timed out after ${r}ms`),this.name="TimeoutError"}};var f=(e,r)=>{let n=typeof e=="string"?"text":e instanceof Uint8Array?"bytes":"structured";return{data:e,meta:{timestamp:Date.now(),kind:n,channel:"stdout",...r}}};var T=e=>({name:e.name,transform:()=>{let r=e.create();return new TransformStream({start:r.start?n=>r.start(n):void 0,transform:(n,t)=>r.transform(n,t),flush:r.flush?n=>r.flush(n):void 0})}});var L=e=>{switch(e.kind){case"text":return e.value;case"newline":return`
2
+ import{a as D,p as w}from"./chunk-YVN2NZL4.js";import{i as g}from"./chunk-6DBKPC2O.js";import{d as j}from"./chunk-5WJ6AUNY.js";var v=class extends Error{constructor(r){super(r),this.name="StreamError"}},b=class extends v{cause;constructor(r,n){super(r),this.name="PipelineError",this.cause=n}},x=class extends v{constructor(r){super(`Pipeline timed out after ${r}ms`),this.name="TimeoutError"}};var f=(e,r)=>{let n=typeof e=="string"?"text":e instanceof Uint8Array?"bytes":"structured";return{data:e,meta:{timestamp:Date.now(),kind:n,channel:"stdout",...r}}};var T=e=>({name:e.name,transform:()=>{let r=e.create();return new TransformStream({start:r.start?n=>r.start(n):void 0,transform:(n,t)=>r.transform(n,t),flush:r.flush?n=>r.flush(n):void 0})}});var L=e=>{switch(e.kind){case"text":return e.value;case"newline":return`
3
3
  `;case"bold":case"dim":case"italic":case"underline":case"strikethrough":case"color":case"group":return e.children.map(L).join("");case"code-block":return e.value.split(`
4
4
  `).map(r=>` ${r}`).join(`
5
5
  `)+`
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as C,c as E}from"./chunk-IQQEVKBP.js";import{a as k}from"./chunk-LFNUSULJ.js";import{b as x}from"./chunk-L7RS6MQ5.js";import{f as h}from"./chunk-P2MUEKFT.js";import{b as i,f as d,g as f,h as u,i as g}from"./chunk-YVN2NZL4.js";import{g as n}from"./chunk-FFWPJP7A.js";import{j as c}from"./chunk-6VHZQNHX.js";var l=x(),b=t=>{let e=new Set,r=/export\s+\*\s+from\s+["']([^"']+)["']/g,a=/export\s+\{[^}]*\}\s+from\s+["']([^"']+)["']/g,o=/export\s+type\s+\{[^}]*\}\s+from\s+["']([^"']+)["']/g;for(let s of t.matchAll(r))s[1]!==void 0&&e.add(s[1]);for(let s of t.matchAll(a))s[1]!==void 0&&e.add(s[1]);for(let s of t.matchAll(o))s[1]!==void 0&&e.add(s[1]);return e},y=t=>{let e=t.startsWith("./")?t.slice(2):t;return e.endsWith(".ts")&&(e=e.slice(0,-3)),e},O=t=>!(t==="mod.ts"||t.endsWith("_test.ts")||t.endsWith("_bench.ts")||t.startsWith("_")||t.includes("/")),P=async(t={})=>{let{root:e=".",failFast:r=!1}=t,a=await C(e),o=[];for(let s of a){let v=c.runtime.path.join(s.path,"mod.ts"),m;try{m=await c.runtime.fs.readTextFile(v)}catch{continue}let M=b(m),w=new Set([...M].map(p=>y(p))),A=await E(s.path);for(let p of A){let R=c.runtime.path.basename(p);if(!O(R))continue;let F=y(p);if(!w.has(F)&&(o.push({packageName:s.name,file:p}),r))return{isComplete:!1,missingExports:o,packagesChecked:a.length}}}return{isComplete:o.length===0,missingExports:o,packagesChecked:a.length}},W=t=>h.fromPromise(()=>P(t)),_=t=>n.ok({root:"."}),z=t=>{if(n.isFail(t))return l.writeln(d("\u2717"),i(" "+String(t.error))),n.fail({exitCode:1});let{value:e}=t;if(l.writeln(g("\u2139"),i(` Checked ${e.packagesChecked} packages.`)),!e.isComplete){l.writeln(d("\u2717"),i(` Found ${e.missingExports.length} missing exports:`));for(let r of e.missingExports)l.writeln(u("\u26A0"),i(` ${r.packageName}: ${r.file}`));return n.fail({exitCode:1})}return l.writeln(f("\u2713"),i(" All mod.ts exports are complete.")),n.ok(void 0)},S=k.createTrigger({handler:W,adaptInput:_,adaptOutput:z}),N=async t=>await S({command:"validate-mod-exports",args:[],flags:{}});export{P as a,W as b,S as c,N as d};
2
+ import{a as C,c as E}from"./chunk-IIFFSCDJ.js";import{a as k}from"./chunk-LFNUSULJ.js";import{b as x}from"./chunk-O325ZU5M.js";import{f as h}from"./chunk-P2MUEKFT.js";import{b as i,f as d,g as f,h as u,i as g}from"./chunk-YVN2NZL4.js";import{g as n}from"./chunk-FFWPJP7A.js";import{j as c}from"./chunk-6DBKPC2O.js";var l=x(),b=t=>{let e=new Set,r=/export\s+\*\s+from\s+["']([^"']+)["']/g,a=/export\s+\{[^}]*\}\s+from\s+["']([^"']+)["']/g,o=/export\s+type\s+\{[^}]*\}\s+from\s+["']([^"']+)["']/g;for(let s of t.matchAll(r))s[1]!==void 0&&e.add(s[1]);for(let s of t.matchAll(a))s[1]!==void 0&&e.add(s[1]);for(let s of t.matchAll(o))s[1]!==void 0&&e.add(s[1]);return e},y=t=>{let e=t.startsWith("./")?t.slice(2):t;return e.endsWith(".ts")&&(e=e.slice(0,-3)),e},O=t=>!(t==="mod.ts"||t.endsWith("_test.ts")||t.endsWith("_bench.ts")||t.startsWith("_")||t.includes("/")),P=async(t={})=>{let{root:e=".",failFast:r=!1}=t,a=await C(e),o=[];for(let s of a){let v=c.runtime.path.join(s.path,"mod.ts"),m;try{m=await c.runtime.fs.readTextFile(v)}catch{continue}let M=b(m),w=new Set([...M].map(p=>y(p))),A=await E(s.path);for(let p of A){let R=c.runtime.path.basename(p);if(!O(R))continue;let F=y(p);if(!w.has(F)&&(o.push({packageName:s.name,file:p}),r))return{isComplete:!1,missingExports:o,packagesChecked:a.length}}}return{isComplete:o.length===0,missingExports:o,packagesChecked:a.length}},W=t=>h.fromPromise(()=>P(t)),_=t=>n.ok({root:"."}),z=t=>{if(n.isFail(t))return l.writeln(d("\u2717"),i(" "+String(t.error))),n.fail({exitCode:1});let{value:e}=t;if(l.writeln(g("\u2139"),i(` Checked ${e.packagesChecked} packages.`)),!e.isComplete){l.writeln(d("\u2717"),i(` Found ${e.missingExports.length} missing exports:`));for(let r of e.missingExports)l.writeln(u("\u26A0"),i(` ${r.packageName}: ${r.file}`));return n.fail({exitCode:1})}return l.writeln(f("\u2713"),i(" All mod.ts exports are complete.")),n.ok(void 0)},S=k.createTrigger({handler:W,adaptInput:_,adaptOutput:z}),N=async t=>await S({command:"validate-mod-exports",args:[],flags:{}});export{P as a,W as b,S as c,N as d};
@@ -0,0 +1,10 @@
1
+ import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
+ import{a as F}from"./chunk-2XNFZXHY.js";import{i as s}from"./chunk-6DBKPC2O.js";import{e as D}from"./chunk-5WJ6AUNY.js";var f=()=>({version:"0.1.0",phase:"IDLE",spec:null,specDescription:null,branch:null,discovery:{answers:[],completed:!1,currentQuestion:0,audience:"human",approved:!1},specState:{path:null,status:"none"},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]},decisions:[],lastCalledAt:null,classification:null,completionReason:null,completedAt:null,completionNote:null,reopenedFrom:null,revisitHistory:[]}),k=(e,t,r,n)=>({concerns:e,tools:t,providers:r,project:n,maxIterationsBeforeRestart:15,verifyCommand:null,allowGit:!1,command:"npx eser@latest noskills"});var l=D(F(),1);var i=".eser",c=`${i}/.state`,S=`${c}/state.json`,m=`${i}/manifest.yml`,y=`${i}/concerns`,h=`${i}/rules`,u=`${i}/specs`,w=`${i}/workflows`,p=`${c}/specs`,P=`${c}/active.json`,a=`${i}/.sessions`,d={eserDir:i,stateDir:c,stateFile:S,manifestFile:m,concernsDir:y,rulesDir:h,specsDir:u,workflowsDir:w,specStatesDir:p,activeFile:P,specDir:e=>`${u}/${e}`,specFile:e=>`${u}/${e}/spec.md`,specStateFile:e=>`${p}/${e}.json`,concernFile:e=>`${y}/${e}.json`,sessionsDir:a,sessionFile:e=>`${a}/${e}.json`,eserGitignore:`${i}/.gitignore`},x=async e=>{let t=`${e}/${S}`;try{let r=await s.fs.readTextFile(t);return JSON.parse(r)}catch{return f()}},O=async(e,t)=>{if(t==null)return x(e);let r=`${e}/${d.specDir(t)}`;try{await s.fs.stat(r)}catch{throw new Error(`Spec '${t}' not found. Run \`noskills spec list\` to see available specs.`)}let n=await E(e,t);if(n.spec===t)return n;let o=await x(e);return o.spec===t?o:{...n,spec:t}};var I=e=>{if(e===void 0)return null;for(let t of e)if(t.startsWith("--spec="))return t.slice(7);return null},_=e=>{let t=I(e);return t===null||t.length===0?{ok:!1,error:"Error: spec name is required. Use `noskills spec <name> <command>` format."}:{ok:!0,spec:t}},T=async(e,t)=>{let r=`${e}/${c}`,n=`${e}/${S}`;await s.fs.mkdir(r,{recursive:!0}),await s.fs.writeTextFile(n,JSON.stringify(t,null,2)+`
3
+ `)};var E=async(e,t)=>{let r=`${e}/${d.specStateFile(t)}`;try{let n=await s.fs.readTextFile(r);return JSON.parse(n)}catch{return f()}},b=async(e,t,r)=>{let n=`${e}/${p}`,o=`${e}/${d.specStateFile(t)}`;await s.fs.mkdir(n,{recursive:!0}),await s.fs.writeTextFile(o,JSON.stringify(r,null,2)+`
4
+ `)},j=async e=>{let t=`${e}/${p}`,r=[];try{for await(let n of s.fs.readDir(t))if(n.isFile&&n.name.endsWith(".json")){let o=n.name.replace(/\.json$/,""),g=await s.fs.readTextFile(`${t}/${n.name}`);r.push({name:o,state:JSON.parse(g)})}}catch{}return r},L=async e=>{let t=`${e}/${m}`;try{let r=await s.fs.readTextFile(t),n=l.parse(r);return n?.noskills===void 0?null:n.noskills}catch{return null}},J=async(e,t)=>{let r=`${e}/${m}`,n;try{let g=await s.fs.readTextFile(r);n=l.parseDocument(g)}catch{n=new l.Document({})}let o=n.createNode(t);o.commentBefore=" noskills orchestrator \u2014 inline comments in this section won't be preserved on next write",n.set("noskills",o),await s.fs.writeTextFile(r,n.toString())},M=async(e,t)=>{let r=`${e}/${d.concernFile(t)}`;try{let n=await s.fs.readTextFile(r);return JSON.parse(n)}catch{return null}},V=async(e,t)=>{let r=`${e}/${y}`,n=`${e}/${d.concernFile(t.id)}`;await s.fs.mkdir(r,{recursive:!0}),await s.fs.writeTextFile(n,JSON.stringify(t,null,2)+`
5
+ `)},W=async e=>{let t=`${e}/${y}`,r=[];try{for await(let n of s.fs.readDir(t))if(n.isFile&&n.name.endsWith(".json")){let o=await s.fs.readTextFile(`${t}/${n.name}`);r.push(JSON.parse(o))}}catch{}return r},G=async e=>{let t=[i,c,p,y,h,u,w];for(let n of t)await s.fs.mkdir(`${e}/${n}`,{recursive:!0});let r=`${e}/${d.eserGitignore}`;try{await s.fs.stat(r)}catch{await s.fs.writeTextFile(r,`# eser toolchain runtime state \u2014 not tracked by git
6
+ .state/
7
+ .sessions/
8
+ `)}},U=async(e,t)=>{await T(e,t),t.spec!==null&&await b(e,t.spec,t)},$=2*60*60*1e3,q=async(e,t)=>{let r=`${e}/${a}`;await s.fs.mkdir(r,{recursive:!0}),await s.fs.writeTextFile(`${r}/${t.id}.json`,JSON.stringify(t,null,2)+`
9
+ `)},C=async(e,t)=>{try{let r=await s.fs.readTextFile(`${e}/${a}/${t}.json`);return JSON.parse(r)}catch{return null}},R=async e=>{let t=`${e}/${a}`,r=[];try{for await(let n of s.fs.readDir(t))if(n.isFile&&n.name.endsWith(".json"))try{let o=await s.fs.readTextFile(`${t}/${n.name}`);r.push(JSON.parse(o))}catch{}}catch{}return r},A=async(e,t)=>{try{return await s.fs.remove(`${e}/${a}/${t}.json`),!0}catch{return!1}},H=async(e,t,r)=>{let n=await C(e,t);if(n===null)return;let o={...n,phase:r,lastActiveAt:new Date().toISOString()};await s.fs.writeTextFile(`${e}/${a}/${t}.json`,JSON.stringify(o,null,2)+`
10
+ `)},B=async e=>{let t=await R(e),r=Date.now(),n=[];for(let o of t)r-new Date(o.lastActiveAt).getTime()>$&&(await A(e,o.id),n.push(o.id));return n},K=e=>Date.now()-new Date(e.lastActiveAt).getTime()>$,Q=()=>{let e=new Uint8Array(4);return crypto.getRandomValues(e),Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")},Y=async e=>{try{let t=await s.fs.readTextFile(`${e}/${m}`);return l.parse(t)?.noskills!==void 0}catch{return!1}};export{f as a,k as b,d as c,x as d,O as e,I as f,_ as g,T as h,b as i,j,L as k,J as l,M as m,V as n,W as o,G as p,U as q,q as r,C as s,R as t,A as u,H as v,B as w,K as x,Q as y,Y as z};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{b as v}from"./chunk-BQT5RJZB.js";import*as t from"node:fs/promises";import*as w from"node:fs";import*as i from"node:path";import*as F from"node:os";import n from"node:process";import{Readable as b,Writable as g}from"node:stream";var p=e=>({isFile:e.isFile(),isDirectory:e.isDirectory(),isSymlink:e.isSymbolicLink(),size:e.size,mtime:e.mtime,atime:e.atime,birthtime:e.birthtime}),l=(e,r)=>{throw e instanceof Error&&"code"in e&&e.code==="ENOENT"?new v(r):e},x=()=>({async readFile(e,r){try{let s=await t.readFile(e,{signal:r?.signal});return new Uint8Array(s)}catch(s){return l(s,e)}},async readTextFile(e,r){try{return await t.readFile(e,{encoding:"utf-8",signal:r?.signal})}catch(s){return l(s,e)}},async writeFile(e,r,s){let a=s?.append?"a":"w";await t.writeFile(e,r,{signal:s?.signal,mode:s?.mode,flag:a})},async writeTextFile(e,r,s){let a=s?.append?"a":"w";await t.writeFile(e,r,{encoding:"utf-8",signal:s?.signal,mode:s?.mode,flag:a})},async exists(e){try{return await t.access(e),!0}catch{return!1}},async stat(e){try{let r=await t.stat(e);return p(r)}catch(r){return l(r,e)}},async lstat(e){try{let r=await t.lstat(e);return p(r)}catch(r){return l(r,e)}},async mkdir(e,r){await t.mkdir(e,{recursive:r?.recursive??!1,mode:r?.mode})},async ensureDir(e){await t.mkdir(e,{recursive:!0})},async remove(e,r){try{await t.rm(e,{recursive:r?.recursive??!1,force:!1})}catch(s){l(s,e)}},async*readDir(e){try{let r=await t.readdir(e,{withFileTypes:!0});for(let s of r)yield{name:s.name,isFile:s.isFile(),isDirectory:s.isDirectory(),isSymlink:s.isSymbolicLink()}}catch(r){l(r,e)}},async copyFile(e,r){await t.copyFile(e,r)},async rename(e,r){await t.rename(e,r)},async makeTempDir(e){let r=e?.dir??F.tmpdir(),s=e?.prefix??"",a=e?.suffix??"",c=await t.mkdtemp(i.join(r,s));if(a){let m=c+a;return await t.rename(c,m),m}return c},async realPath(e){try{return await t.realpath(e)}catch(r){return l(r,e)}},watch(e,r){let s=r?.recursive??!0,a=[],c=[],m=[],u=!1,f=o=>{u||(m.length>0?m.shift()({value:o,done:!1}):c.push(o))};for(let o of e)try{let d=w.watch(o,{recursive:s},(y,P)=>{P!==null&&f({kind:y==="rename"?"create":"modify",paths:[i.join(o,P)]})});a.push(d)}catch{}return{close:()=>{u=!0;for(let o of a)o.close();for(let o of m)o({value:void 0,done:!0});m=[]},[Symbol.asyncIterator]:()=>({next:()=>u?Promise.resolve({value:void 0,done:!0}):c.length>0?Promise.resolve({value:c.shift(),done:!1}):new Promise(o=>{m.push(o)})})}},async chmod(e,r){await t.chmod(e,r)},async*walk(e,r){let s=r?.includeDirs??!0,a=r?.includeFiles??!0,c=r?.exts,m=r?.skip,u=async function*(f){let o=await t.readdir(f,{withFileTypes:!0});for(let d of o){let y=i.join(f,d.name);if(m?.some(h=>h.test(y)))continue;let P=d.isSymbolicLink();if(d.isDirectory())s&&(yield{path:y,name:d.name,isFile:!1,isDirectory:!0,isSymlink:P}),yield*u(y);else if(d.isFile()||P){if(!a||c&&!c.some(h=>d.name.endsWith(h.startsWith(".")?h:`.${h}`)))continue;yield{path:y,name:d.name,isFile:d.isFile(),isDirectory:!1,isSymlink:P}}}};yield*u(e)}}),W=()=>({join:i.join,resolve:i.resolve,dirname:i.dirname,basename:i.basename,extname:i.extname,normalize:i.normalize,isAbsolute:i.isAbsolute,relative:i.relative,parse:i.parse,format:i.format,sep:i.sep,delimiter:i.delimiter}),R=()=>({get(e){return n.env[e]},set(e,r){n.env[e]=r},delete(e){delete n.env[e]},has(e){return e in n.env},toObject(){let e={};for(let[r,s]of Object.entries(n.env))s!==void 0&&(e[r]=s);return e}}),T=()=>({exit(e){n.exit(e)},setExitCode(e){n.exitCode=e},cwd(){return n.cwd()},chdir(e){n.chdir(e)},hostname(){return F.hostname()},execPath(){return n.execPath},argv:n.argv,argv0:n.argv0,args:n.argv.slice(2),pid:n.pid,stdin:b.toWeb(n.stdin),stdout:g.toWeb(n.stdout),stderr:g.toWeb(n.stderr),isTerminal(e){switch(e){case"stdin":return n.stdin.isTTY===!0;case"stdout":return n.stdout.isTTY===!0;case"stderr":return n.stderr.isTTY===!0}},setStdinRaw(e){n.stdin.setRawMode(e)}});export{x as a,W as b,R as c,T as d};
2
+ import{b as v}from"./chunk-6G6UVWJN.js";import*as t from"node:fs/promises";import*as w from"node:fs";import*as i from"node:path";import*as F from"node:os";import n from"node:process";import{Readable as b,Writable as g}from"node:stream";var p=e=>({isFile:e.isFile(),isDirectory:e.isDirectory(),isSymlink:e.isSymbolicLink(),size:e.size,mtime:e.mtime,atime:e.atime,birthtime:e.birthtime}),l=(e,r)=>{throw e instanceof Error&&"code"in e&&e.code==="ENOENT"?new v(r):e},x=()=>({async readFile(e,r){try{let s=await t.readFile(e,{signal:r?.signal});return new Uint8Array(s)}catch(s){return l(s,e)}},async readTextFile(e,r){try{return await t.readFile(e,{encoding:"utf-8",signal:r?.signal})}catch(s){return l(s,e)}},async writeFile(e,r,s){let a=s?.append?"a":"w";await t.writeFile(e,r,{signal:s?.signal,mode:s?.mode,flag:a})},async writeTextFile(e,r,s){let a=s?.append?"a":"w";await t.writeFile(e,r,{encoding:"utf-8",signal:s?.signal,mode:s?.mode,flag:a})},async exists(e){try{return await t.access(e),!0}catch{return!1}},async stat(e){try{let r=await t.stat(e);return p(r)}catch(r){return l(r,e)}},async lstat(e){try{let r=await t.lstat(e);return p(r)}catch(r){return l(r,e)}},async mkdir(e,r){await t.mkdir(e,{recursive:r?.recursive??!1,mode:r?.mode})},async ensureDir(e){await t.mkdir(e,{recursive:!0})},async remove(e,r){try{await t.rm(e,{recursive:r?.recursive??!1,force:!1})}catch(s){l(s,e)}},async*readDir(e){try{let r=await t.readdir(e,{withFileTypes:!0});for(let s of r)yield{name:s.name,isFile:s.isFile(),isDirectory:s.isDirectory(),isSymlink:s.isSymbolicLink()}}catch(r){l(r,e)}},async copyFile(e,r){await t.copyFile(e,r)},async rename(e,r){await t.rename(e,r)},async makeTempDir(e){let r=e?.dir??F.tmpdir(),s=e?.prefix??"",a=e?.suffix??"",c=await t.mkdtemp(i.join(r,s));if(a){let m=c+a;return await t.rename(c,m),m}return c},async realPath(e){try{return await t.realpath(e)}catch(r){return l(r,e)}},watch(e,r){let s=r?.recursive??!0,a=[],c=[],m=[],u=!1,f=o=>{u||(m.length>0?m.shift()({value:o,done:!1}):c.push(o))};for(let o of e)try{let d=w.watch(o,{recursive:s},(y,P)=>{P!==null&&f({kind:y==="rename"?"create":"modify",paths:[i.join(o,P)]})});a.push(d)}catch{}return{close:()=>{u=!0;for(let o of a)o.close();for(let o of m)o({value:void 0,done:!0});m=[]},[Symbol.asyncIterator]:()=>({next:()=>u?Promise.resolve({value:void 0,done:!0}):c.length>0?Promise.resolve({value:c.shift(),done:!1}):new Promise(o=>{m.push(o)})})}},async chmod(e,r){await t.chmod(e,r)},async*walk(e,r){let s=r?.includeDirs??!0,a=r?.includeFiles??!0,c=r?.exts,m=r?.skip,u=async function*(f){let o=await t.readdir(f,{withFileTypes:!0});for(let d of o){let y=i.join(f,d.name);if(m?.some(h=>h.test(y)))continue;let P=d.isSymbolicLink();if(d.isDirectory())s&&(yield{path:y,name:d.name,isFile:!1,isDirectory:!0,isSymlink:P}),yield*u(y);else if(d.isFile()||P){if(!a||c&&!c.some(h=>d.name.endsWith(h.startsWith(".")?h:`.${h}`)))continue;yield{path:y,name:d.name,isFile:d.isFile(),isDirectory:!1,isSymlink:P}}}};yield*u(e)}}),W=()=>({join:i.join,resolve:i.resolve,dirname:i.dirname,basename:i.basename,extname:i.extname,normalize:i.normalize,isAbsolute:i.isAbsolute,relative:i.relative,parse:i.parse,format:i.format,sep:i.sep,delimiter:i.delimiter}),R=()=>({get(e){return n.env[e]},set(e,r){n.env[e]=r},delete(e){delete n.env[e]},has(e){return e in n.env},toObject(){let e={};for(let[r,s]of Object.entries(n.env))s!==void 0&&(e[r]=s);return e}}),T=()=>({exit(e){n.exit(e)},setExitCode(e){n.exitCode=e},cwd(){return n.cwd()},chdir(e){n.chdir(e)},hostname(){return F.hostname()},execPath(){return n.execPath},argv:n.argv,argv0:n.argv0,args:n.argv.slice(2),pid:n.pid,stdin:b.toWeb(n.stdin),stdout:g.toWeb(n.stdout),stderr:g.toWeb(n.stderr),isTerminal(e){switch(e){case"stdin":return n.stdin.isTTY===!0;case"stdout":return n.stdout.isTTY===!0;case"stderr":return n.stderr.isTTY===!0}},setStdinRaw(e){n.stdin.setRawMode(e)},writeToStdout(e){n.stdout.write(e)},consoleSize(){return{columns:n.stdout.columns??80,rows:n.stdout.rows??24}}});export{x as a,W as b,R as c,T as d};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as b,b as G,c as R}from"./chunk-EXP2TZZC.js";import{e as ee}from"./chunk-J2Z7NG2X.js";import{f as p,h as u,k as d}from"./chunk-MBG7SPPO.js";import{b as r,d as i,f as w,g as C,h as Z,k as l}from"./chunk-YVN2NZL4.js";import{d as y}from"./chunk-5MVJUALI.js";import{a as k}from"./chunk-QBQAOXEV.js";import{a as f,b as g}from"./chunk-FFWPJP7A.js";import{g as T,i as m}from"./chunk-6VHZQNHX.js";import{g as ie,m as O,n as J,o as I,p as le}from"./chunk-BQT5RJZB.js";var de="# eser CLI completions",B="eser",te=async e=>{try{return await m.fs.readTextFile(e)}catch{return""}},me=async e=>{try{return await m.fs.stat(e),!0}catch{return!1}},se=async e=>{let t=R(e,B);if(t.completionType==="file")return await me(t.completionsFile);let s=await te(t.rcFile),n=G(e,B);return s.includes(n)},ne=async e=>{let t=R(e,B),s=p({renderer:d.ansi(),sink:u.stdout()});try{if(t.completionType==="file"){let n=t.completionsFile,o=m.path.dirname(n);try{await m.fs.mkdir(o,{recursive:!0})}catch{}await m.fs.writeTextFile(n,`# eser CLI completions
2
+ import{a as S,b as G,c as R}from"./chunk-L5OC7F24.js";import{e as ee}from"./chunk-J2Z7NG2X.js";import{f as p,h as u,k as d}from"./chunk-SHN5MT56.js";import{b as r,d as i,f as w,g as y,h as Z,k as l}from"./chunk-YVN2NZL4.js";import{d as v}from"./chunk-GVTM4EOU.js";import{a as k}from"./chunk-DM6U63HP.js";import{a as f,b as g}from"./chunk-FFWPJP7A.js";import{g as T,i as m}from"./chunk-6DBKPC2O.js";import{g as ie,m as O,n as K,o as I,p as le}from"./chunk-6G6UVWJN.js";var de="# eser CLI completions",B="eser",te=async e=>{try{return await m.fs.readTextFile(e)}catch{return""}},me=async e=>{try{return await m.fs.stat(e),!0}catch{return!1}},se=async e=>{let t=R(e,B);if(t.completionType==="file")return await me(t.completionsFile);let s=await te(t.rcFile),n=G(e,B);return s.includes(n)},ne=async e=>{let t=R(e,B),s=p({renderer:d.ansi(),sink:u.stdout()});try{if(t.completionType==="file"){let n=t.completionsFile,o=m.path.dirname(n);try{await m.fs.mkdir(o,{recursive:!0})}catch{}await m.fs.writeTextFile(n,`# eser CLI completions
3
3
  # This file is auto-generated. Run 'eser system completions --shell fish' to regenerate.
4
4
  complete -c eser -f
5
5
  complete -c eser -n "__fish_use_subcommand" -a "codebase" -d "Codebase management tools"
@@ -17,37 +17,37 @@ ${o}
17
17
  `).filter(a=>!a.includes("eser system completions")).filter(a=>a!==de).join(`
18
18
  `).replace(/\n{3,}/g,`
19
19
 
20
- `);await m.fs.writeTextFile(t.rcFile,c),s.writeln(r(" "),i("Removed completions from"),r(" "),l(t.rcFile))}}catch(n){s.writeln(Z(` Warning: Could not remove shell completions: ${n instanceof Error?n.message:String(n)}`))}await s.close()};var M=m,ye={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},ue={deno:{cmd:"deno",args:["install","-r","-g","-A","--name","eser","jsr:@eser/cli"]},node:{cmd:"npm",args:["install","-g","-f","eser"]},bun:{cmd:"bun",args:["install","-g","-f","eser"]}},ve=async()=>{let e=I(),t=M.path.join(e,".local","bin");try{return await M.fs.stat(t),t}catch{}return"/usr/local/bin"},ke=async()=>{let e=M.process.execPath(),t=await ve(),s=M.path.join(t,"eser"),n=p({renderer:d.ansi(),sink:u.stdout()});n.writeln(r("Install method: "),l("compiled binary")),n.writeln(i(`Copying to ${s}...`));try{await M.fs.copyFile(e,s),await M.fs.chmod(s,493)}catch(a){if(a instanceof Deno.errors.PermissionDenied)return n.writeln(w(`
20
+ `);await m.fs.writeTextFile(t.rcFile,c),s.writeln(r(" "),i("Removed completions from"),r(" "),l(t.rcFile))}}catch(n){s.writeln(Z(` Warning: Could not remove shell completions: ${n instanceof Error?n.message:String(n)}`))}await s.close()};var M=m,ye={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},ue={deno:{cmd:"deno",args:["install","-r","-g","-A","--name","eser","jsr:@eser/cli"]},node:{cmd:"npm",args:["install","-g","-f","eser"]},bun:{cmd:"bun",args:["install","-g","-f","eser"]}},ve=async()=>{let e=I(),t=M.path.join(e,".local","bin");try{return await M.fs.stat(t),t}catch{}return"/usr/local/bin"},Ee=async()=>{let e=M.process.execPath(),t=await ve(),s=M.path.join(t,"eser"),n=p({renderer:d.ansi(),sink:u.stdout()});n.writeln(r("Install method: "),l("compiled binary")),n.writeln(i(`Copying to ${s}...`));try{await M.fs.copyFile(e,s),await M.fs.chmod(s,493)}catch(a){if(a instanceof Error&&"code"in a&&a.code==="EACCES"||typeof Deno<"u"&&a instanceof Deno.errors.PermissionDenied)return n.writeln(w(`
21
21
  Permission denied writing to ${t}.
22
- Try: sudo eser install`)),await n.close(),g({exitCode:1});throw await n.close(),a}n.writeln(C(`
23
- Installation complete!`)),n.writeln(r("You can now use "),l("eser"),r(" from anywhere in your terminal."));let o=b();if(!await se(o)){n.writeln(r(`
24
- Setting up `),l(o),r(" completions...")),await ne(o);let a=R(o);a.completionType==="eval"&&n.writeln(i(` Restart your shell or run 'source ${a.rcFile}' to enable completions.`))}return await n.close(),f(void 0)},Ee=async e=>{let t=await T(ye);if(t.invoker==="binary")return await ke();let s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t.runtime));let n=ue[t.runtime]??ue.node,{cmd:o,args:c}=n;s.writeln(i(`Running: ${o} ${c.join(" ")}`)),s.writeln();let a=await y`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();if(!a.success)return s.writeln(w(`
25
- Installation failed.`)),await s.close(),g({exitCode:a.code});s.writeln(C(`
26
- Installation complete!`)),s.writeln(r("You can now use "),l("eser"),r(" from anywhere in your terminal."));let x=b();if(!await se(x)){s.writeln(r(`
27
- Setting up `),l(x),r(" completions...")),await ne(x);let K=R(x);K.completionType==="eval"&&s.writeln(i(` Restart your shell or run 'source ${K.rcFile}' to enable completions.`))}return await s.close(),f(void 0)};var Pe={deno:{cmd:"deno",args:["uninstall","-g","eser"]},node:{cmd:"npm",args:["uninstall","-g","eser"]},bun:{cmd:"bun",args:["remove","-g","eser"]}},$e=async e=>{let t=ie(),s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t));let n=Pe[t];if(n===void 0){let H=d.ansi();return await s.close(),g({message:`${H.render([w(`
22
+ Try: sudo eser install`)),await n.close(),g({exitCode:1});throw await n.close(),a}n.writeln(y(`
23
+ Installation complete!`)),n.writeln(r("You can now use "),l("eser"),r(" from anywhere in your terminal."));let o=S();if(!await se(o)){n.writeln(r(`
24
+ Setting up `),l(o),r(" completions...")),await ne(o);let a=R(o);a.completionType==="eval"&&n.writeln(i(` Restart your shell or run 'source ${a.rcFile}' to enable completions.`))}return await n.close(),f(void 0)},ke=async e=>{let t=await T(ye);if(t.invoker==="binary")return await Ee();let s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t.runtime));let n=ue[t.runtime]??ue.node,{cmd:o,args:c}=n;s.writeln(i(`Running: ${o} ${c.join(" ")}`)),s.writeln();let a=await v`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();if(!a.success)return s.writeln(w(`
25
+ Installation failed.`)),await s.close(),g({exitCode:a.code});s.writeln(y(`
26
+ Installation complete!`)),s.writeln(r("You can now use "),l("eser"),r(" from anywhere in your terminal."));let x=S();if(!await se(x)){s.writeln(r(`
27
+ Setting up `),l(x),r(" completions...")),await ne(x);let q=R(x);q.completionType==="eval"&&s.writeln(i(` Restart your shell or run 'source ${q.rcFile}' to enable completions.`))}return await s.close(),f(void 0)};var Pe={deno:{cmd:"deno",args:["uninstall","-g","eser"]},node:{cmd:"npm",args:["uninstall","-g","eser"]},bun:{cmd:"bun",args:["remove","-g","eser"]}},$e=async e=>{let t=ie(),s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t));let n=Pe[t];if(n===void 0){let H=d.ansi();return await s.close(),g({message:`${H.render([w(`
28
28
  Unsupported runtime: ${t}`)])}
29
- Global uninstallation is only supported for Deno, Node.js, and Bun.`,exitCode:1})}let{cmd:o,args:c}=n,a=b();s.writeln(r(`
29
+ Global uninstallation is only supported for Deno, Node.js, and Bun.`,exitCode:1})}let{cmd:o,args:c}=n,a=S();s.writeln(r(`
30
30
  Removing `),l(a),r(" completions...")),await pe(a),s.writeln(i(`
31
- Running: ${o} ${c.join(" ")}`)),s.writeln();let x=await y`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();return x.success?(s.writeln(C(`
31
+ Running: ${o} ${c.join(" ")}`)),s.writeln();let x=await v`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();return x.success?(s.writeln(y(`
32
32
  Uninstallation complete!`)),s.writeln(r("The "),l("eser"),r(" command has been removed from your system.")),await s.close(),f(void 0)):(s.writeln(w(`
33
- Uninstallation failed.`)),await s.close(),g({exitCode:x.code}))};var z=m,fe=".cache/eser",Re="latest-version.json",_e=24*60*60*1e3,Ae="https://api.github.com/repos/eser/stack/releases/latest",he=()=>{let e=I();return z.path.join(e,fe,Re)},Te=()=>{let e=I();return z.path.join(e,fe)},be=async()=>{try{let e=he();if(!await z.fs.exists(e))return;let s=await z.fs.readTextFile(e),n=JSON.parse(s);return typeof n.latestVersion!="string"||typeof n.checkedAt!="number"?void 0:n}catch{return}},Se=async e=>{try{let t=Te();await z.fs.ensureDir(t);let s=he(),n={latestVersion:e,checkedAt:Date.now()};await z.fs.writeTextFile(s,JSON.stringify(n))}catch{}},He=async()=>{try{let e=await fetch(Ae,{headers:{Accept:"application/vnd.github.v3+json"}});if(!e.ok)return;let s=(await e.json()).tag_name;return typeof s!="string"?void 0:s.startsWith("v")?s.slice(1):s}catch{return}},q=async()=>{try{let e=k.version,t=await be();if(t!==void 0&&Date.now()-t.checkedAt<_e)return{latestVersion:t.latestVersion,currentVersion:e,updateAvailable:ee(e,t.latestVersion)};let s=await He();return s===void 0?void 0:(await Se(s),{latestVersion:s,currentVersion:e,updateAvailable:ee(e,s)})}catch{return}};var v=m,Ie={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},we={deno:{cmd:"deno",args:["install","-r","-g","-A","-f","--name","eser","jsr:@eser/cli"]},node:{cmd:"npm",args:["update","-g","-f","eser"]},bun:{cmd:"bun",args:["update","-g","-f","eser"]}},De={"linux-amd64":"x86_64-unknown-linux-gnu","linux-arm64":"aarch64-unknown-linux-gnu","darwin-amd64":"x86_64-apple-darwin","darwin-arm64":"aarch64-apple-darwin","windows-amd64":"x86_64-pc-windows-msvc"},Fe=()=>{let e=O(),t=J(),s=`${e}-${t}`;return De[s]},Ue=async()=>{let e=p({renderer:d.ansi(),sink:u.stdout()});e.writeln(r("Install method: "),l("compiled binary")),e.writeln(r("Current version: "),l(k.version),r(`
34
- `)),e.writeln(r("Checking for updates..."));let t=await q();if(t===void 0)return e.writeln(w("Could not check for updates.")),await e.close(),g({exitCode:1});if(!t.updateAvailable)return e.writeln(C(`
33
+ Uninstallation failed.`)),await s.close(),g({exitCode:x.code}))};var z=m,fe=".cache/eser",Re="latest-version.json",Ae=24*60*60*1e3,_e="https://api.github.com/repos/eser/stack/releases/latest",he=()=>{let e=I();return z.path.join(e,fe,Re)},Te=()=>{let e=I();return z.path.join(e,fe)},Se=async()=>{try{let e=he();if(!await z.fs.exists(e))return;let s=await z.fs.readTextFile(e),n=JSON.parse(s);return typeof n.latestVersion!="string"||typeof n.checkedAt!="number"?void 0:n}catch{return}},be=async e=>{try{let t=Te();await z.fs.ensureDir(t);let s=he(),n={latestVersion:e,checkedAt:Date.now()};await z.fs.writeTextFile(s,JSON.stringify(n))}catch{}},He=async()=>{try{let e=await fetch(_e,{headers:{Accept:"application/vnd.github.v3+json"}});if(!e.ok)return;let s=(await e.json()).tag_name;return typeof s!="string"?void 0:s.startsWith("v")?s.slice(1):s}catch{return}},J=async()=>{try{let e=k.version,t=await Se();if(t!==void 0&&Date.now()-t.checkedAt<Ae)return{latestVersion:t.latestVersion,currentVersion:e,updateAvailable:ee(e,t.latestVersion)};let s=await He();return s===void 0?void 0:(await be(s),{latestVersion:s,currentVersion:e,updateAvailable:ee(e,s)})}catch{return}};var E=m,Ie={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},we={deno:{cmd:"deno",args:["install","-r","-g","-A","-f","--name","eser","jsr:@eser/cli"]},node:{cmd:"npm",args:["update","-g","-f","eser"]},bun:{cmd:"bun",args:["update","-g","-f","eser"]}},De={"linux-amd64":"x86_64-unknown-linux-gnu","linux-arm64":"aarch64-unknown-linux-gnu","darwin-amd64":"x86_64-apple-darwin","darwin-arm64":"aarch64-apple-darwin","windows-amd64":"x86_64-pc-windows-msvc"},Fe=()=>{let e=O(),t=K(),s=`${e}-${t}`;return De[s]},Ue=async()=>{let e=p({renderer:d.ansi(),sink:u.stdout()});e.writeln(r("Install method: "),l("compiled binary")),e.writeln(r("Current version: "),l(k.version),r(`
34
+ `)),e.writeln(r("Checking for updates..."));let t=await J();if(t===void 0)return e.writeln(w("Could not check for updates.")),await e.close(),g({exitCode:1});if(!t.updateAvailable)return e.writeln(y(`
35
35
  Already up to date (v${k.version}).`)),await e.close(),f(void 0);e.writeln(r(`
36
- New version available: `),l(`v${t.latestVersion}`));let s=Fe();if(s===void 0){let $=O(),N=J();return e.writeln(w(`
37
- Unsupported platform: ${$}-${N}`)),await e.close(),g({exitCode:1})}let n=`v${t.latestVersion}`,o=O()==="windows",a=`eser-${n}-${s}.${o?"zip":"tar.gz"}`,x=`https://github.com/eser/stack/releases/download/${n}`;e.writeln(i(`Downloading ${a}...`));let H=await fetch(`${x}/${a}`);if(!H.ok)return e.writeln(w(`
38
- Failed to download: HTTP ${H.status}`)),await e.close(),g({exitCode:1});let K=await fetch(`${x}/SHA256SUMS.txt`);if(K.ok){let N=(await K.text()).split(`
39
- `).find(j=>j.includes(a));if(N!==void 0){let j=N.split(/\s+/)[0],V=new Uint8Array(await H.clone().arrayBuffer()),A=await crypto.subtle.digest("SHA-256",V);if(Array.from(new Uint8Array(A)).map(Ce=>Ce.toString(16).padStart(2,"0")).join("")!==j)return e.writeln(w(`
40
- SHA256 checksum verification failed.`)),await e.close(),g({exitCode:1});e.writeln(i("Checksum verified."))}}let L=await v.fs.makeTempDir({prefix:"eser-update-"});try{let $=v.path.join(L,a),N=new Uint8Array(await H.arrayBuffer());await v.fs.writeFile($,N),o?await y`powershell -Command "Expand-Archive -Path ${$} -DestinationPath ${L}"`.spawn():await y`tar -xzf ${$} -C ${L}`.spawn();let j=o?v.path.join(L,"eser.exe"):v.path.join(L,"eser"),V=v.process.execPath();if(o){let A=V.replace(/\.exe$/i,".new.exe");await v.fs.copyFile(j,A),e.writeln(C(`
36
+ New version available: `),l(`v${t.latestVersion}`));let s=Fe();if(s===void 0){let C=O(),L=K();return e.writeln(w(`
37
+ Unsupported platform: ${C}-${L}`)),await e.close(),g({exitCode:1})}let n=`v${t.latestVersion}`,o=O()==="windows",a=`eser-${n}-${s}.${o?"zip":"tar.gz"}`,x=`https://github.com/eser/stack/releases/download/${n}`;e.writeln(i(`Downloading ${a}...`));let H=await fetch(`${x}/${a}`);if(!H.ok)return e.writeln(w(`
38
+ Failed to download: HTTP ${H.status}`)),await e.close(),g({exitCode:1});let q=await fetch(`${x}/SHA256SUMS.txt`);if(q.ok){let L=(await q.text()).split(`
39
+ `).find(j=>j.includes(a));if(L!==void 0){let j=L.split(/\s+/)[0],V=new Uint8Array(await H.clone().arrayBuffer()),_=await crypto.subtle.digest("SHA-256",V);if(Array.from(new Uint8Array(_)).map(Ce=>Ce.toString(16).padStart(2,"0")).join("")!==j)return e.writeln(w(`
40
+ SHA256 checksum verification failed.`)),await e.close(),g({exitCode:1});e.writeln(i("Checksum verified."))}}let N=await E.fs.makeTempDir({prefix:"eser-update-"});try{let C=E.path.join(N,a),L=new Uint8Array(await H.arrayBuffer());await E.fs.writeFile(C,L),o?await v`powershell -Command "Expand-Archive -Path ${C} -DestinationPath ${N}"`.spawn():await v`tar -xzf ${C} -C ${N}`.spawn();let j=o?E.path.join(N,"eser.exe"):E.path.join(N,"eser"),V=E.process.execPath();if(o){let _=V.replace(/\.exe$/i,".new.exe");await E.fs.copyFile(j,_),e.writeln(y(`
41
41
  Downloaded v${t.latestVersion}!`)),e.writeln(r(`
42
42
  To complete the update, close this terminal and rename:
43
- `),l(A),r(`
43
+ `),l(_),r(`
44
44
  to:
45
- `),l(V))}else{let A=`${V}.new`;await v.fs.copyFile(j,A),await v.fs.chmod(A,493),await v.fs.rename(A,V),e.writeln(C(`
46
- Updated to v${t.latestVersion}!`))}}catch($){if($ instanceof Deno.errors.PermissionDenied)return e.writeln(w(`
45
+ `),l(V))}else{let _=`${V}.new`;await E.fs.copyFile(j,_),await E.fs.chmod(_,493),await E.fs.rename(_,V),e.writeln(y(`
46
+ Updated to v${t.latestVersion}!`))}}catch(C){if(C instanceof Error&&"code"in C&&C.code==="EACCES"||typeof Deno<"u"&&C instanceof Deno.errors.PermissionDenied)return e.writeln(w(`
47
47
  Permission denied. Try running with sudo:
48
- sudo eser update`)),await e.close(),g({exitCode:1});throw await e.close(),$}finally{try{await v.fs.remove(L,{recursive:!0})}catch{}}return await e.close(),f(void 0)},Le=async e=>{let t=await T(Ie);if(t.invoker==="binary")return await Ue();let s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t.runtime));let n=we[t.runtime]??we.node,{cmd:o,args:c}=n;s.writeln(i(`Running: ${o} ${c.join(" ")}`)),s.writeln();let a=await y`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();return a.success?(s.writeln(C(`
48
+ sudo eser update`)),await e.close(),g({exitCode:1});throw await e.close(),C}finally{try{await E.fs.remove(N,{recursive:!0})}catch{}}return await e.close(),f(void 0)},Ne=async e=>{let t=await T(Ie);if(t.invoker==="binary")return await Ue();let s=p({renderer:d.ansi(),sink:u.stdout()});s.writeln(r("Detected runtime: "),l(t.runtime));let n=we[t.runtime]??we.node,{cmd:o,args:c}=n;s.writeln(i(`Running: ${o} ${c.join(" ")}`)),s.writeln();let a=await v`${o} ${c}`.stdout("inherit").stderr("inherit").noThrow().spawn();return a.success?(s.writeln(y(`
49
49
  Update complete!`)),s.writeln(r("The "),l("eser"),r(" command has been updated to the latest version.")),await s.close(),f(void 0)):(s.writeln(w(`
50
- Update failed.`)),await s.close(),g({exitCode:a.code}))};var Ne=e=>{let t=R(e,"eser"),s=d.ansi();if(t.completionType==="file")return`
50
+ Update failed.`)),await s.close(),g({exitCode:a.code}))};var Le=e=>{let t=R(e,"eser"),s=d.ansi();if(t.completionType==="file")return`
51
51
  To install, run:
52
52
 
53
53
  ${s.render([i(`eser system completions --shell fish > ${t.completionsFile}`)])}
@@ -56,11 +56,11 @@ To install, add the following to your ${s.render([l(t.rcFile)])}:
56
56
 
57
57
  ${s.render([i(n)])}
58
58
  `},je=e=>{let t=e.flags.shell,s=d.ansi(),n=p({renderer:s,sink:u.stdout()}),o;if(t!==void 0){if(!["bash","zsh","fish"].includes(t))return g({message:`${s.render([w(`Invalid shell: ${t}`)])}
59
- Supported shells: bash, zsh, fish`,exitCode:1});o=t}else o=b();let a=e.root.completions(o);return t===void 0&&(n.writeln(r("Generating "),l(o),r(" completions...")),console.log(Ne(o)),n.writeln(i(`--- Completion script ---
60
- `))),console.log(a),f(void 0)};var Ve=200,Oe=async e=>{let t=p({renderer:d.ansi(),sink:u.stdout()});if(e.flags.bare===!0)return t.writeln(r(k.version)),await t.close(),f(void 0);t.writeln(r(`eser ${k.version}`));try{let s=new Promise(o=>{setTimeout(()=>o(void 0),Ve)}),n=await Promise.race([q(),s]);n!==void 0&&n.updateAvailable&&t.writeln(i(` Update available: v${n.latestVersion} \u2014 run 'eser update'`))}catch{}return await t.close(),f(void 0)};var Q=m,Ge={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},X=17,S=p({renderer:d.ansi(),sink:u.stdout()}),U=(e,t)=>{let s=`${e}:`.padEnd(X);S.writeln(r(` ${s}`),C("\u2713"),r(` ${t}`))},E=(e,t)=>{let s=`${e}:`.padEnd(X);S.writeln(r(` ${s}`),w("\u2717"),r(` ${t}`))},ge=(e,t)=>{let s=`${e}:`.padEnd(X);S.writeln(r(` ${s}${t}`))},Be=(e,t)=>{let s=`${e}:`.padEnd(X);S.writeln(r(` ${s}`),i("-"),r(` ${t}`))},ae=async e=>{try{return await Q.fs.stat(e),!0}catch{return!1}},Me=async e=>{try{return await Q.fs.readTextFile(e)}catch{return""}},xe=(e,t)=>e.match(t)?.[1],We=async()=>{let e=Q.path.join(".",".git","hooks","pre-commit");if(!await ae(e)){E("Git hooks","Not installed");return}(await Me(e)).includes("eser")?U("Git hooks","Installed"):E("Git hooks","Not installed")},ze=async()=>{let e=Q.path.join(".",".eser","manifest.yml"),t=Q.path.join(".",".manifest.yml");if(await ae(e)){U("Manifest",".eser/manifest.yml found");return}if(await ae(t)){U("Manifest",".manifest.yml found (legacy path)");return}E("Manifest",".eser/manifest.yml not found")},qe=async()=>{try{let e=await y`deno --version`.noThrow().quiet().text(),t=xe(e,/deno\s+(\S+)/);t!==void 0?U("Deno",t):E("Deno","Not found")}catch{E("Deno","Not found")}},Ke=async()=>{try{let e=await y`go version`.noThrow().quiet().text(),t=xe(e,/go(\d+\.\d+(?:\.\d+)?)/);t!==void 0?U("Go",t):E("Go","Not found")}catch{E("Go","Not found")}},Je=async()=>{try{let t=(await y`node --version`.noThrow().quiet().text()).trim();t.length>0?U("Node",t):E("Node","Not found")}catch{E("Node","Not found")}},Ye=async e=>{S.writeln(r(`eser doctor
61
- `));let t=await T(Ge);ge("Install method",`${t.invoker} (${t.mode})`),ge("Version",k.version);let s=await q();return s===void 0?Be("Update","Could not check for updates"):s.updateAvailable?E("Update",`Update available: v${s.latestVersion}`):U("Update","Up to date"),S.writeln(),await We(),await ze(),S.writeln(),await qe(),await Ke(),await Je(),await S.close(),f(void 0)};var P=m,Qe={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},Xe=20,_=p({renderer:d.ansi(),sink:u.stdout()}),h=(e,t)=>{let s=`${e}:`.padEnd(Xe);_.writeln(r(` ${s}${t}`))},Ze=async e=>{_.writeln(r("eser system info")),_.writeln(i(`
62
- Runtime`)),h("Name",P.name),h("Version",P.version),h("Platform",O()),h("Arch",J());let t=P.capabilities,s=Object.entries(t).map(([c,a])=>`${c}=${a?"yes":"no"}`).join(", ");h("Capabilities",s),_.writeln(i(`
63
- Locations`)),h("Homedir",I()),h("Tmpdir",le()),h("CWD",P.process.cwd()),h("PID",String(P.process.pid)),h("Exec path",P.process.execPath()),_.writeln(i(`
64
- Process`)),h("argv0",P.process.argv0),h("argv",P.process.argv.join(" ")),h("args",P.process.args.join(" ")),_.writeln(i(`
65
- Execution Context`));let n=await T(Qe);h("Runtime",n.runtime),h("Invoker",`${n.invoker} (${n.mode})`),h("Command",n.command),h("In PATH",n.isInPath?"yes":"no"),_.writeln(i(`
66
- Environment`));let o=["PATH","HOME","SHELL","TERM","DENO_DIR","BUN_INSTALL","NODE_ENV"];for(let c of o){let a=P.env.get(c);if(a!==void 0){let x=c==="PATH"?`(${a.split(":").length} entries)`:a;h(c,x)}}return _.writeln(),await _.close(),f(void 0)};export{Ee as a,$e as b,Le as c,je as d,Oe as e,Ye as f,Ze as g};
59
+ Supported shells: bash, zsh, fish`,exitCode:1});o=t}else o=S();let a=e.root.completions(o);return t===void 0&&(n.writeln(r("Generating "),l(o),r(" completions...")),console.log(Le(o)),n.writeln(i(`--- Completion script ---
60
+ `))),console.log(a),f(void 0)};var Ve=200,Oe=async e=>{let t=p({renderer:d.ansi(),sink:u.stdout()});if(e.flags.bare===!0)return t.writeln(r(k.version)),await t.close(),f(void 0);t.writeln(r(`eser ${k.version}`));try{let s=new Promise(o=>{setTimeout(()=>o(void 0),Ve)}),n=await Promise.race([J(),s]);n!==void 0&&n.updateAvailable&&t.writeln(i(` Update available: v${n.latestVersion} \u2014 run 'eser update'`))}catch{}return await t.close(),f(void 0)};var Q=m,Ge={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},X=17,b=p({renderer:d.ansi(),sink:u.stdout()}),U=(e,t)=>{let s=`${e}:`.padEnd(X);b.writeln(r(` ${s}`),y("\u2713"),r(` ${t}`))},P=(e,t)=>{let s=`${e}:`.padEnd(X);b.writeln(r(` ${s}`),w("\u2717"),r(` ${t}`))},ge=(e,t)=>{let s=`${e}:`.padEnd(X);b.writeln(r(` ${s}${t}`))},Be=(e,t)=>{let s=`${e}:`.padEnd(X);b.writeln(r(` ${s}`),i("-"),r(` ${t}`))},ae=async e=>{try{return await Q.fs.stat(e),!0}catch{return!1}},Me=async e=>{try{return await Q.fs.readTextFile(e)}catch{return""}},xe=(e,t)=>e.match(t)?.[1],We=async()=>{let e=Q.path.join(".",".git","hooks","pre-commit");if(!await ae(e)){P("Git hooks","Not installed");return}(await Me(e)).includes("eser")?U("Git hooks","Installed"):P("Git hooks","Not installed")},ze=async()=>{let e=Q.path.join(".",".eser","manifest.yml"),t=Q.path.join(".",".manifest.yml");if(await ae(e)){U("Manifest",".eser/manifest.yml found");return}if(await ae(t)){U("Manifest",".manifest.yml found (legacy path)");return}P("Manifest",".eser/manifest.yml not found")},Je=async()=>{try{let e=await v`deno --version`.noThrow().quiet().text(),t=xe(e,/deno\s+(\S+)/);t!==void 0?U("Deno",t):P("Deno","Not found")}catch{P("Deno","Not found")}},qe=async()=>{try{let e=await v`go version`.noThrow().quiet().text(),t=xe(e,/go(\d+\.\d+(?:\.\d+)?)/);t!==void 0?U("Go",t):P("Go","Not found")}catch{P("Go","Not found")}},Ke=async()=>{try{let t=(await v`node --version`.noThrow().quiet().text()).trim();t.length>0?U("Node",t):P("Node","Not found")}catch{P("Node","Not found")}},Ye=async e=>{b.writeln(r(`eser doctor
61
+ `));let t=await T(Ge);ge("Install method",`${t.invoker} (${t.mode})`),ge("Version",k.version);let s=await J();return s===void 0?Be("Update","Could not check for updates"):s.updateAvailable?P("Update",`Update available: v${s.latestVersion}`):U("Update","Up to date"),b.writeln(),await We(),await ze(),b.writeln(),await Je(),await qe(),await Ke(),await b.close(),f(void 0)};var $=m,Qe={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},Xe=20,A=p({renderer:d.ansi(),sink:u.stdout()}),h=(e,t)=>{let s=`${e}:`.padEnd(Xe);A.writeln(r(` ${s}${t}`))},Ze=async e=>{A.writeln(r("eser system info")),A.writeln(i(`
62
+ Runtime`)),h("Name",$.name),h("Version",$.version),h("Platform",O()),h("Arch",K());let t=$.capabilities,s=Object.entries(t).map(([c,a])=>`${c}=${a?"yes":"no"}`).join(", ");h("Capabilities",s),A.writeln(i(`
63
+ Locations`)),h("Homedir",I()),h("Tmpdir",le()),h("CWD",$.process.cwd()),h("PID",String($.process.pid)),h("Exec path",$.process.execPath()),A.writeln(i(`
64
+ Process`)),h("argv0",$.process.argv0),h("argv",$.process.argv.join(" ")),h("args",$.process.args.join(" ")),A.writeln(i(`
65
+ Execution Context`));let n=await T(Qe);h("Runtime",n.runtime),h("Invoker",`${n.invoker} (${n.mode})`),h("Command",n.command),h("In PATH",n.isInPath?"yes":"no"),A.writeln(i(`
66
+ Environment`));let o=["PATH","HOME","SHELL","TERM","DENO_DIR","BUN_INSTALL","NODE_ENV"];for(let c of o){let a=$.env.get(c);if(a!==void 0){let x=c==="PATH"?`(${a.split(":").length} entries)`:a;h(c,x)}}return A.writeln(),await A.close(),f(void 0)};export{ke as a,$e as b,Ne as c,je as d,Oe as e,Ye as f,Ze as g};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{f as e}from"./chunk-6VHZQNHX.js";var n={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},r="npx eser@latest noskills",t=r,i=s=>{t=s},m=()=>t,a=s=>`${t} ${s}`,c=async()=>await e(n,["noskills","nos"])??r;export{i as a,m as b,a as c,c as d};
2
+ import{f as e}from"./chunk-6DBKPC2O.js";var n={command:"eser",devCommand:"deno task cli",npmPackage:"eser",jsrPackage:"@eser/cli"},r="npx eser@latest noskills",t=r,i=s=>{t=s},m=()=>t,a=s=>`${t} ${s}`,c=async()=>await e(n,["noskills","nos"])??r;export{i as a,m as b,a as c,c as d};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as o}from"./chunk-UQRZJPYH.js";var n=o({name:"validate-trailing-whitespace",description:"Remove trailing whitespace from lines",canFix:!0,stacks:[],defaults:{},checkFile(a,i){if(i===void 0)return[];let t=[],r=i.split(`
2
+ import{a as o}from"./chunk-ATYDQCCJ.js";var n=o({name:"validate-trailing-whitespace",description:"Remove trailing whitespace from lines",canFix:!0,stacks:[],defaults:{},checkFile(a,i){if(i===void 0)return[];let t=[],r=i.split(`
3
3
  `);for(let e=0;e<r.length;e++)/[ \t]+$/.test(r[e])&&t.push({path:a.path,line:e+1,message:"trailing whitespace"});return t},fixFile(a,i){let t=i.replace(/[ \t]+$/gm,"");if(t!==i)return{path:a.path,oldContent:i,newContent:t}}}),c=n.run,u=n.validator,d=n.main;export{n as a,c as b,u as c,d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as i}from"./chunk-UQRZJPYH.js";import{i as t}from"./chunk-6VHZQNHX.js";var s=i({name:"validate-submodules",description:"Detect new git submodules",canFix:!1,stacks:[],defaults:{},async checkAll(n,a){let o=t.path.join(a.root,".gitmodules");if(!await t.fs.exists(o))return[];let e=((await t.fs.readTextFile(o)).match(/\[submodule\s/g)??[]).length;return e>0?[{path:o,message:`found ${e} submodule(s) \u2014 submodules are not allowed`}]:[]}}),p=s.run,f=s.validator,x=s.main;export{s as a,p as b,f as c,x as d};
2
+ import{a as i}from"./chunk-ATYDQCCJ.js";import{i as t}from"./chunk-6DBKPC2O.js";var s=i({name:"validate-submodules",description:"Detect new git submodules",canFix:!1,stacks:[],defaults:{},async checkAll(n,a){let o=t.path.join(a.root,".gitmodules");if(!await t.fs.exists(o))return[];let e=((await t.fs.readTextFile(o)).match(/\[submodule\s/g)??[]).length;return e>0?[{path:o,message:`found ${e} submodule(s) \u2014 submodules are not allowed`}]:[]}}),p=s.run,f=s.validator,x=s.main;export{s as a,p as b,f as c,x as d};