eser 4.1.47 → 4.1.49

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 (219) hide show
  1. package/chunks/{add-V7YYHLFH.js → add-HBUORTI5.js} +1 -1
  2. package/chunks/{ajan-JKACPKCP.js → ajan-CL22MZYV.js} +1 -1
  3. package/chunks/approve-HF44PKLL.js +2 -0
  4. package/chunks/{ask-UCPMMIAF.js → ask-M3VS3GIJ.js} +1 -1
  5. package/chunks/block-F7S7PYMQ.js +2 -0
  6. package/chunks/{browser-JGBNWUEQ.js → browser-D536WJU3.js} +1 -1
  7. package/chunks/{build-BUB6OJCI.js → build-Y4OQZN3X.js} +2 -2
  8. package/chunks/{bun-HIMXX54I.js → bun-7XJSUU6Z.js} +1 -1
  9. package/chunks/cancel-Q6LMMZBV.js +2 -0
  10. package/chunks/{changelog-gen-TEI4IBNO.js → changelog-gen-LMXK5T7J.js} +1 -1
  11. package/chunks/{chunk-F2YHX6DL.js → chunk-2DAFGT4S.js} +1 -1
  12. package/chunks/{chunk-BJLUDX4R.js → chunk-2TANTKYS.js} +1 -1
  13. package/chunks/{chunk-3AA3RXKD.js → chunk-2ZYCRMUT.js} +1 -1
  14. package/chunks/{chunk-26ZFSXSK.js → chunk-3D5TBTM3.js} +1 -1
  15. package/chunks/{chunk-4ZVFKZ5S.js → chunk-3MMV2UHT.js} +1 -1
  16. package/chunks/{chunk-3IZX4OZ7.js → chunk-3OG2MEF2.js} +1 -1
  17. package/chunks/{chunk-ZCQ5CISX.js → chunk-3PZVRB75.js} +1 -1
  18. package/chunks/{chunk-RHEYIO4O.js → chunk-3SBAWBWS.js} +1 -1
  19. package/chunks/{chunk-AP7A6Y5Z.js → chunk-3TS5IRPD.js} +1 -1
  20. package/chunks/{chunk-HCYIL6IJ.js → chunk-3VZXRI4F.js} +1 -1
  21. package/chunks/{chunk-PLMZ3FYS.js → chunk-43E7ZXUB.js} +1 -1
  22. package/chunks/chunk-4NNSMDFH.js +2 -0
  23. package/chunks/chunk-4TTJVJEI.js +2 -0
  24. package/chunks/{chunk-L2E2H7YT.js → chunk-4X4NHXFE.js} +1 -1
  25. package/chunks/{chunk-MCWDLVWU.js → chunk-6BILFSH2.js} +1 -1
  26. package/chunks/{chunk-WJKE6XHF.js → chunk-6DBKPC2O.js} +1 -1
  27. package/chunks/{chunk-BQT5RJZB.js → chunk-6G6UVWJN.js} +1 -1
  28. package/chunks/{chunk-6E6JUBFH.js → chunk-ALFFE37K.js} +1 -1
  29. package/chunks/{chunk-5QRJ7OJK.js → chunk-AWMLF355.js} +1 -1
  30. package/chunks/{chunk-A2IW6BXT.js → chunk-C2IORZTF.js} +1 -1
  31. package/chunks/{chunk-NFZWSVJM.js → chunk-C6URCXQM.js} +1 -1
  32. package/chunks/{chunk-7XVIW7H6.js → chunk-D43XK3L2.js} +1 -1
  33. package/chunks/{chunk-3PCHQM4S.js → chunk-DYMKE4R3.js} +1 -1
  34. package/chunks/{chunk-GWZUQPFD.js → chunk-EQUPVWVY.js} +1 -1
  35. package/chunks/{chunk-TYUSWY27.js → chunk-FFEFO7MA.js} +1 -1
  36. package/chunks/{chunk-JUOSGSVB.js → chunk-FNPBHLLZ.js} +1 -1
  37. package/chunks/{chunk-F4G6QSSJ.js → chunk-FQY3JLY2.js} +1 -1
  38. package/chunks/chunk-FXDWRGGR.js +2 -0
  39. package/chunks/{chunk-HVTJ5LVU.js → chunk-FZ5WFU6R.js} +1 -1
  40. package/chunks/{chunk-BLXGL5MA.js → chunk-GVTM4EOU.js} +1 -1
  41. package/chunks/{chunk-JLRVMMMH.js → chunk-HVQK35SO.js} +1 -1
  42. package/chunks/{chunk-EGEJQP7D.js → chunk-IIFFSCDJ.js} +1 -1
  43. package/chunks/{chunk-4QDEJUAF.js → chunk-IZUADMIU.js} +1 -1
  44. package/chunks/{chunk-37GFWQQ3.js → chunk-JMGANJGV.js} +1 -1
  45. package/chunks/{chunk-LGNGLAV3.js → chunk-JTSRGXS4.js} +1 -1
  46. package/chunks/{chunk-CNHUVWV5.js → chunk-K7TY7247.js} +1 -1
  47. package/chunks/{chunk-5PH7JRXR.js → chunk-KHBIOZJE.js} +1 -1
  48. package/chunks/chunk-L32KHQVT.js +3 -0
  49. package/chunks/{chunk-MBCPGD5L.js → chunk-L5OC7F24.js} +1 -1
  50. package/chunks/{chunk-W7OYXLGD.js → chunk-L7ROACZC.js} +8 -8
  51. package/chunks/{chunk-EKUJSZIR.js → chunk-LJ7A5HYR.js} +1 -1
  52. package/chunks/{chunk-OWV223WQ.js → chunk-LLA75EMV.js} +1 -1
  53. package/chunks/{chunk-6PRIUPN4.js → chunk-LWQPFCWC.js} +1 -1
  54. package/chunks/{chunk-W724KQYO.js → chunk-LYM57LLM.js} +1 -1
  55. package/chunks/{chunk-ENTSZDR6.js → chunk-MTCPFQ5I.js} +1 -1
  56. package/chunks/{chunk-JHEL4OFF.js → chunk-N4NDBIQS.js} +1 -1
  57. package/chunks/{chunk-G5VGZMKA.js → chunk-NMEPQK3T.js} +1 -1
  58. package/chunks/{chunk-TEOMM3RD.js → chunk-NMSD4ZXJ.js} +1 -1
  59. package/chunks/{chunk-RVJZFWN7.js → chunk-NTY267SI.js} +1 -1
  60. package/chunks/{chunk-3QF3I2RD.js → chunk-NVPQJFAI.js} +1 -1
  61. package/chunks/{chunk-4HXAC4WN.js → chunk-PHOYLFXC.js} +1 -1
  62. package/chunks/{chunk-CXTOTN4Z.js → chunk-Q56M5KDF.js} +1 -1
  63. package/chunks/{chunk-LWWZT2AB.js → chunk-Q66KA572.js} +1 -1
  64. package/chunks/chunk-RBQ2FOSL.js +17 -0
  65. package/chunks/chunk-RBU3HF66.js +10 -0
  66. package/chunks/{chunk-MJ2IPSAE.js → chunk-RNFCAHVL.js} +1 -1
  67. package/chunks/{chunk-Z5P6PXQV.js → chunk-RSYERFWM.js} +1 -1
  68. package/chunks/{chunk-ZC4F4MYU.js → chunk-SHN5MT56.js} +1 -1
  69. package/chunks/{chunk-F44CX3KC.js → chunk-SNWQNMGD.js} +2 -2
  70. package/chunks/{chunk-YA4IPF62.js → chunk-TDIR6AUJ.js} +1 -1
  71. package/chunks/{chunk-VWQLQJVX.js → chunk-TW23CULJ.js} +1 -1
  72. package/chunks/{chunk-SRWZLNT6.js → chunk-U25GY4AZ.js} +1 -1
  73. package/chunks/chunk-U34MRDPH.js +4 -0
  74. package/chunks/{chunk-OAT2D23A.js → chunk-UEMWZOIU.js} +1 -1
  75. package/chunks/{chunk-Y3XXSUFP.js → chunk-WTMV5GTZ.js} +1 -1
  76. package/chunks/{chunk-F35K7YVH.js → chunk-X3L6GBUX.js} +1 -1
  77. package/chunks/{chunk-YBCZC5KZ.js → chunk-XBCL25QR.js} +1 -1
  78. package/chunks/{chunk-3QH27NOC.js → chunk-XFCBVUI7.js} +1 -1
  79. package/chunks/{chunk-VSTGSR3G.js → chunk-XVH5L5HY.js} +1 -1
  80. package/chunks/{chunk-R7FADWXC.js → chunk-YVKPHSJX.js} +1 -1
  81. package/chunks/{chunk-HP5W5XT6.js → chunk-ZNP3NXAD.js} +1 -1
  82. package/chunks/claude-code-UJYCO6CN.js +2 -0
  83. package/chunks/{clone-YEBQK7CG.js → clone-455UAECS.js} +1 -1
  84. package/chunks/{cmd-2DAVTVOF.js → cmd-QE4P4DS4.js} +1 -1
  85. package/chunks/{commitmsg-3NLTGBA7.js → commitmsg-57EMHAFY.js} +2 -2
  86. package/chunks/{concern-RNNRCADI.js → concern-7ZK3KY54.js} +1 -1
  87. package/chunks/config-O3OOS5BQ.js +2 -0
  88. package/chunks/{deno-XQHOVHKR.js → deno-JAQWMICD.js} +1 -1
  89. package/chunks/{dev-GHSKFRDU.js → dev-XHMBUBQE.js} +2 -2
  90. package/chunks/done-FQQYM27R.js +2 -0
  91. package/chunks/{file-tools-shared-BGQUI7QP.js → file-tools-shared-YKDNDDHR.js} +1 -1
  92. package/chunks/{free-L4KB3WSS.js → free-XOGOSVEQ.js} +1 -1
  93. package/chunks/{gh-L3FPMN5H.js → gh-AWX6I7FO.js} +2 -2
  94. package/chunks/{gh-contributors-NT5WW72V.js → gh-contributors-EDZTKR5E.js} +1 -1
  95. package/chunks/{init-II65LYMV.js → init-3HE3P3N3.js} +1 -1
  96. package/chunks/{init-EL6YCHIE.js → init-GBMYF3YG.js} +3 -3
  97. package/chunks/{install-YVHT6UAG.js → install-USGLFPAU.js} +1 -1
  98. package/chunks/invoke-hook-EIOZ5WSA.js +12 -0
  99. package/chunks/kiro-V6SMU4OL.js +2 -0
  100. package/chunks/{list-BOLPKAEY.js → list-M5DGQG46.js} +1 -1
  101. package/chunks/{list-VEGVTAKQ.js → list-NX7RRO6R.js} +1 -1
  102. package/chunks/{list-AKS7CUO3.js → list-ZVCGDRUH.js} +1 -1
  103. package/chunks/{load-config-G4DHKB5K.js → load-config-JZNJVJXH.js} +1 -1
  104. package/chunks/{main-PTEEAWXX.js → main-NCAKIBQC.js} +2 -2
  105. package/chunks/manager-GC34GK44.js +7 -0
  106. package/chunks/manifest-3GT2RMQL.js +2 -0
  107. package/chunks/{mod-DXA25A4J.js → mod-4XKQZL6W.js} +1 -1
  108. package/chunks/mod-52TIS344.js +2 -0
  109. package/chunks/{mod-MVH3RFS3.js → mod-5NDTGNVM.js} +1 -1
  110. package/chunks/{mod-ICWGLZBQ.js → mod-7ICCX4OY.js} +1 -1
  111. package/chunks/{mod-RF5F5WS2.js → mod-DFDEWFDA.js} +2 -2
  112. package/chunks/{mod-AD5UWQSM.js → mod-KPIOBBDD.js} +1 -1
  113. package/chunks/{mod-RMDGRCBK.js → mod-NSL6IJRQ.js} +1 -1
  114. package/chunks/{mod-QWYXFGRG.js → mod-OG7BBJP4.js} +1 -1
  115. package/chunks/{mod-YH5Z6G4Q.js → mod-TRSW5SEU.js} +1 -1
  116. package/chunks/{mod-BKHQAEVL.js → mod-VZT7JWPZ.js} +1 -1
  117. package/chunks/{mod-PZSJGUM7.js → mod-W225AUFE.js} +1 -1
  118. package/chunks/{new-VGL3IRFP.js → new-SS67ZKMK.js} +1 -1
  119. package/chunks/next-2LOPGEJO.js +9 -0
  120. package/chunks/{node-ZGM6SXXI.js → node-WWA6BHRC.js} +1 -1
  121. package/chunks/ollama-DFG5G467.js +2 -0
  122. package/chunks/opencode-UA45VV3W.js +2 -0
  123. package/chunks/pack-B5VXZEW7.js +6 -0
  124. package/chunks/{purge-6IOKNHG6.js → purge-Q3FI3S5M.js} +1 -1
  125. package/chunks/{recipe-applier-TTZEZGSC.js → recipe-applier-I2VBGHZU.js} +1 -1
  126. package/chunks/{registry-fetcher-SPENFEOH.js → registry-fetcher-TGWYJ5GN.js} +1 -1
  127. package/chunks/{release-6GDD5THZ.js → release-4VI2Y2ZT.js} +2 -2
  128. package/chunks/{release-notes-MZFILXWE.js → release-notes-2ZYPZ6TK.js} +1 -1
  129. package/chunks/{release-tag-LGZEFMKJ.js → release-tag-SG4WPYDZ.js} +1 -1
  130. package/chunks/reopen-6FB7DVV2.js +2 -0
  131. package/chunks/{reset-TDBHFTWW.js → reset-T4YMGQPV.js} +1 -1
  132. package/chunks/{rule-DUOZIDNM.js → rule-EJKPIOLE.js} +1 -1
  133. package/chunks/run-BV6BHCCQ.js +4 -0
  134. package/chunks/{run-OCYNXRVD.js → run-DAKF5SJN.js} +1 -1
  135. package/chunks/{scripts-7VDHDKFK.js → scripts-VRQQ24O3.js} +1 -1
  136. package/chunks/{serve-5V65OPB2.js → serve-5MTJLRIN.js} +2 -2
  137. package/chunks/{server-R347ON4B.js → server-VCPSLFZ2.js} +1 -1
  138. package/chunks/{session-SOIP6NHS.js → session-3HOLYHOY.js} +1 -1
  139. package/chunks/spec-3P3HJT27.js +2 -0
  140. package/chunks/status-6XVLXNA5.js +2 -0
  141. package/chunks/{sync-5XW5FTWS.js → sync-EEH6563X.js} +1 -1
  142. package/chunks/{system-HNZLRJLH.js → system-JBGO2IFD.js} +1 -1
  143. package/chunks/system-QDBQLRO6.js +2 -0
  144. package/chunks/{update-522VXIKX.js → update-VLYRDEH4.js} +1 -1
  145. package/chunks/validate-bom-XTZYCKGP.js +2 -0
  146. package/chunks/validate-case-conflict-CQIPKKHY.js +2 -0
  147. package/chunks/validate-circular-deps-Y6X6GZCG.js +2 -0
  148. package/chunks/validate-commit-msg-MXTBUPTC.js +2 -0
  149. package/chunks/validate-docs-ZOHUOW3I.js +2 -0
  150. package/chunks/validate-eof-4I2QAFTC.js +2 -0
  151. package/chunks/validate-export-names-7V3647EU.js +2 -0
  152. package/chunks/validate-filenames-6E634ZHO.js +2 -0
  153. package/chunks/validate-json-LRWPQ4JX.js +2 -0
  154. package/chunks/validate-large-files-RV7O7ZUR.js +2 -0
  155. package/chunks/validate-licenses-KHDUSBXM.js +2 -0
  156. package/chunks/validate-line-endings-XOCAE22U.js +2 -0
  157. package/chunks/validate-merge-conflict-PDJRAIKU.js +2 -0
  158. package/chunks/validate-mod-exports-Y6W74PAB.js +2 -0
  159. package/chunks/validate-package-configs-VVCKJELU.js +2 -0
  160. package/chunks/validate-secrets-UI5XKJ6B.js +2 -0
  161. package/chunks/validate-shebangs-GE23Z6NU.js +2 -0
  162. package/chunks/validate-submodules-R5JKX3Z6.js +2 -0
  163. package/chunks/validate-symlinks-WBF6VHHT.js +2 -0
  164. package/chunks/validate-toml-FNXGITZJ.js +2 -0
  165. package/chunks/validate-trailing-whitespace-UCMQTQ3B.js +2 -0
  166. package/chunks/validate-yaml-YRAD4HU3.js +2 -0
  167. package/chunks/{versions-MFY62V25.js → versions-LJSQVW77.js} +1 -1
  168. package/chunks/{watch-DBB4W5AE.js → watch-N3KV2ONB.js} +1 -1
  169. package/chunks/wontfix-MJJ2LK6J.js +2 -0
  170. package/chunks/{workerd-LOWXXQEU.js → workerd-LH2MLWIF.js} +1 -1
  171. package/eser.js +1 -1
  172. package/package.json +7 -8
  173. package/chunks/approve-URMQ77UE.js +0 -2
  174. package/chunks/block-5NWZBEXW.js +0 -2
  175. package/chunks/cancel-V6OK6U73.js +0 -2
  176. package/chunks/chunk-2HSGE3TL.js +0 -2
  177. package/chunks/chunk-FW3ETRQ5.js +0 -17
  178. package/chunks/chunk-ORAOSL2W.js +0 -2
  179. package/chunks/chunk-RGT7SMKJ.js +0 -4
  180. package/chunks/chunk-YW377352.js +0 -10
  181. package/chunks/chunk-ZER2RYWJ.js +0 -2
  182. package/chunks/claude-code-S2SGKOBE.js +0 -2
  183. package/chunks/done-VSVUSYIS.js +0 -2
  184. package/chunks/invoke-hook-QEE3PJBH.js +0 -12
  185. package/chunks/kiro-LNQTCWQU.js +0 -2
  186. package/chunks/manager-ARXVYR4H.js +0 -7
  187. package/chunks/manifest-3VJ4O6HR.js +0 -2
  188. package/chunks/mod-GXNNOTTG.js +0 -2
  189. package/chunks/next-RYENG2XC.js +0 -9
  190. package/chunks/ollama-IRQSLTDB.js +0 -2
  191. package/chunks/opencode-74XXXUQ2.js +0 -2
  192. package/chunks/reopen-XDNX2XRX.js +0 -2
  193. package/chunks/run-YK7DTHKW.js +0 -4
  194. package/chunks/spec-Y6K7CSBK.js +0 -2
  195. package/chunks/status-SXWEDQTL.js +0 -2
  196. package/chunks/system-WX4PNZSQ.js +0 -2
  197. package/chunks/validate-bom-XA7KZWTH.js +0 -2
  198. package/chunks/validate-case-conflict-QWOT7276.js +0 -2
  199. package/chunks/validate-circular-deps-IAC3BSYO.js +0 -2
  200. package/chunks/validate-commit-msg-M42NIQLD.js +0 -2
  201. package/chunks/validate-docs-DXY4C23P.js +0 -2
  202. package/chunks/validate-eof-M3LGJL64.js +0 -2
  203. package/chunks/validate-export-names-BQAH7J4F.js +0 -2
  204. package/chunks/validate-filenames-WYIWPR5V.js +0 -2
  205. package/chunks/validate-json-S2J5SSZS.js +0 -2
  206. package/chunks/validate-large-files-X4D3CL42.js +0 -2
  207. package/chunks/validate-licenses-6LB6MLQU.js +0 -2
  208. package/chunks/validate-line-endings-NX2XXGTH.js +0 -2
  209. package/chunks/validate-merge-conflict-3ZNS7HS2.js +0 -2
  210. package/chunks/validate-mod-exports-72EWWWMT.js +0 -2
  211. package/chunks/validate-package-configs-55XAXICZ.js +0 -2
  212. package/chunks/validate-secrets-5V7V65JA.js +0 -2
  213. package/chunks/validate-shebangs-XVHLZJKY.js +0 -2
  214. package/chunks/validate-submodules-Z6WRSMS5.js +0 -2
  215. package/chunks/validate-symlinks-FWV2RFCM.js +0 -2
  216. package/chunks/validate-toml-DTGDAUSH.js +0 -2
  217. package/chunks/validate-trailing-whitespace-5QSYKA6L.js +0 -2
  218. package/chunks/validate-yaml-SKE7CDCP.js +0 -2
  219. package/chunks/wontfix-D2ZHBGNH.js +0 -2
@@ -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-EGEJQP7D.js";import{a as w}from"./chunk-LFNUSULJ.js";import{b as v}from"./chunk-LGNGLAV3.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-WJKE6XHF.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-JTSRGXS4.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};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as k,b as p,c as h,e as m,f as u,g as f}from"./chunk-BJLUDX4R.js";import{a as c}from"./chunk-J7YTWK67.js";var y=class{capabilities=["text_generation","streaming","tool_calling"];provider="claude-code";modelId;binary;config;constructor(e,n){this.binary=e,this.config=n,this.modelId=n.model}async generateText(e,n){let r=w(this.config,e,"json"),s=f(e.messages,e.system);r.push("-p",s);let o=p(this.binary,r,{signal:n}),l=m(o.stderr),i=o.stdout.getReader(),a=[],d=new TextDecoder,g=await i.read();for(;g.done!==!0;)a.push(d.decode(g.value,{stream:!0})),g=await i.read();i.releaseLock();let T=await o.waitForExit(),_=await l,x=u("claude-code",T.code,_);if(x!==null)throw x;let S=a.join("");return v(S,this.modelId)}async*streamText(e,n){let r=this.config.properties?.streamFormat??"text",s=w(this.config,e,r),o=f(e.messages,e.system);s.push("-p",o);let l=p(this.binary,s,{signal:n}),i=m(l.stderr);try{r==="stream-json"?yield*this.#t(l,i):yield*this.#e(l,i)}catch(a){a instanceof c?yield{kind:"error",error:a}:yield{kind:"error",error:new c(a instanceof Error?a.message:String(a),{provider:"claude-code",cause:a instanceof Error?a:void 0})}}}async*#e(e,n){let r=new TextDecoder,s=e.stdout.getReader(),o=await s.read();for(;o.done!==!0;){let d=r.decode(o.value,{stream:!0});d.length>0&&(yield{kind:"content_delta",textDelta:d}),o=await s.read()}s.releaseLock();let l=await e.waitForExit(),i=await n,a=u("claude-code",l.code,i);a!==null?yield{kind:"error",error:a}:yield{kind:"message_done",stopReason:"end_turn",usage:{inputTokens:0,outputTokens:0,totalTokens:0}}}async*#t(e,n){for await(let l of h(e.stdout)){let i=E(l);i!==null&&(yield i)}let r=await e.waitForExit(),s=await n,o=u("claude-code",r.code,s);o!==null&&(yield{kind:"error",error:o})}close(){return Promise.resolve()}getRawClient(){return null}},P={provider:"claude-code",async createModel(t){let e=await k("claude",t);return new y(e,t)}},w=(t,e,n)=>{let r=[];n!=="text"&&r.push("--output-format",n),n==="stream-json"&&r.push("--verbose"),r.push("--model",t.model);let s=t.properties?.maxTurns;s!==void 0&&r.push("--max-turns",String(s));let o=t.properties?.allowedTools;if(o!==void 0)for(let i of o)r.push("--allowedTools",i);let l=t.properties?.args;return l!==void 0&&r.push(...l),r},v=(t,e)=>{try{let n=JSON.parse(t);return b(n,e)}catch{return{content:[{kind:"text",text:t.trim()}],stopReason:"end_turn",usage:{inputTokens:0,outputTokens:0,totalTokens:0},modelId:e}}},b=(t,e)=>{let n=[];if(t.result!==void 0)n.push({kind:"text",text:String(t.result)});else if(t.message?.content!==void 0)for(let r of t.message.content)r.type==="text"?n.push({kind:"text",text:r.text}):r.type==="tool_use"&&n.push({kind:"tool_call",toolCall:{id:r.id??r.name,name:r.name,arguments:r.input??{}}});else typeof t=="string"&&n.push({kind:"text",text:t});return n.length===0&&n.push({kind:"text",text:JSON.stringify(t)}),{content:n,stopReason:t.stop_reason==="tool_use"?"tool_use":"end_turn",usage:{inputTokens:t.usage?.input_tokens??0,outputTokens:t.usage?.output_tokens??0,totalTokens:(t.usage?.input_tokens??0)+(t.usage?.output_tokens??0)},modelId:e,rawResponse:t}},E=t=>{if(t===null||typeof t!="object")return null;let e=t;if(e.type==="assistant"){if(e.message?.content!==void 0){for(let n of e.message.content)if(n.type==="text")return{kind:"content_delta",textDelta:n.text}}return null}return e.type==="content_block_delta"?e.delta?.type==="text_delta"?{kind:"content_delta",textDelta:e.delta.text}:null:e.type==="result"?{kind:"message_done",stopReason:e.subtype==="tool_use"?"tool_use":"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 Claude Code error",{provider:"claude-code"})}:e.content!==void 0&&typeof e.content=="string"?{kind:"content_delta",textDelta:e.content}:null};export{y as a,P as b};
2
+ import{a as k,b as p,c as h,e as m,f as u,g as f}from"./chunk-2TANTKYS.js";import{a as c}from"./chunk-J7YTWK67.js";var y=class{capabilities=["text_generation","streaming","tool_calling"];provider="claude-code";modelId;binary;config;constructor(e,n){this.binary=e,this.config=n,this.modelId=n.model}async generateText(e,n){let r=w(this.config,e,"json"),s=f(e.messages,e.system);r.push("-p",s);let o=p(this.binary,r,{signal:n}),l=m(o.stderr),i=o.stdout.getReader(),a=[],d=new TextDecoder,g=await i.read();for(;g.done!==!0;)a.push(d.decode(g.value,{stream:!0})),g=await i.read();i.releaseLock();let T=await o.waitForExit(),_=await l,x=u("claude-code",T.code,_);if(x!==null)throw x;let S=a.join("");return v(S,this.modelId)}async*streamText(e,n){let r=this.config.properties?.streamFormat??"text",s=w(this.config,e,r),o=f(e.messages,e.system);s.push("-p",o);let l=p(this.binary,s,{signal:n}),i=m(l.stderr);try{r==="stream-json"?yield*this.#t(l,i):yield*this.#e(l,i)}catch(a){a instanceof c?yield{kind:"error",error:a}:yield{kind:"error",error:new c(a instanceof Error?a.message:String(a),{provider:"claude-code",cause:a instanceof Error?a:void 0})}}}async*#e(e,n){let r=new TextDecoder,s=e.stdout.getReader(),o=await s.read();for(;o.done!==!0;){let d=r.decode(o.value,{stream:!0});d.length>0&&(yield{kind:"content_delta",textDelta:d}),o=await s.read()}s.releaseLock();let l=await e.waitForExit(),i=await n,a=u("claude-code",l.code,i);a!==null?yield{kind:"error",error:a}:yield{kind:"message_done",stopReason:"end_turn",usage:{inputTokens:0,outputTokens:0,totalTokens:0}}}async*#t(e,n){for await(let l of h(e.stdout)){let i=E(l);i!==null&&(yield i)}let r=await e.waitForExit(),s=await n,o=u("claude-code",r.code,s);o!==null&&(yield{kind:"error",error:o})}close(){return Promise.resolve()}getRawClient(){return null}},P={provider:"claude-code",async createModel(t){let e=await k("claude",t);return new y(e,t)}},w=(t,e,n)=>{let r=[];n!=="text"&&r.push("--output-format",n),n==="stream-json"&&r.push("--verbose"),r.push("--model",t.model);let s=t.properties?.maxTurns;s!==void 0&&r.push("--max-turns",String(s));let o=t.properties?.allowedTools;if(o!==void 0)for(let i of o)r.push("--allowedTools",i);let l=t.properties?.args;return l!==void 0&&r.push(...l),r},v=(t,e)=>{try{let n=JSON.parse(t);return b(n,e)}catch{return{content:[{kind:"text",text:t.trim()}],stopReason:"end_turn",usage:{inputTokens:0,outputTokens:0,totalTokens:0},modelId:e}}},b=(t,e)=>{let n=[];if(t.result!==void 0)n.push({kind:"text",text:String(t.result)});else if(t.message?.content!==void 0)for(let r of t.message.content)r.type==="text"?n.push({kind:"text",text:r.text}):r.type==="tool_use"&&n.push({kind:"tool_call",toolCall:{id:r.id??r.name,name:r.name,arguments:r.input??{}}});else typeof t=="string"&&n.push({kind:"text",text:t});return n.length===0&&n.push({kind:"text",text:JSON.stringify(t)}),{content:n,stopReason:t.stop_reason==="tool_use"?"tool_use":"end_turn",usage:{inputTokens:t.usage?.input_tokens??0,outputTokens:t.usage?.output_tokens??0,totalTokens:(t.usage?.input_tokens??0)+(t.usage?.output_tokens??0)},modelId:e,rawResponse:t}},E=t=>{if(t===null||typeof t!="object")return null;let e=t;if(e.type==="assistant"){if(e.message?.content!==void 0){for(let n of e.message.content)if(n.type==="text")return{kind:"content_delta",textDelta:n.text}}return null}return e.type==="content_block_delta"?e.delta?.type==="text_delta"?{kind:"content_delta",textDelta:e.delta.text}:null:e.type==="result"?{kind:"message_done",stopReason:e.subtype==="tool_use"?"tool_use":"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 Claude Code error",{provider:"claude-code"})}:e.content!==void 0&&typeof e.content=="string"?{kind:"content_delta",textDelta:e.content}:null};export{y as a,P as b};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as o}from"./chunk-JLRVMMMH.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-HVQK35SO.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,4 +1,4 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{c as u}from"./chunk-BJLUDX4R.js";import{a as i,e as m}from"./chunk-J7YTWK67.js";var p="http://localhost:11434",d=class{capabilities=["text_generation","streaming","vision"];provider="ollama";modelId;baseUrl;config;constructor(e,o){this.baseUrl=e,this.config=o,this.modelId=o.model}async generateText(e,o){let s=g(this.config,e,!1);try{let t=await fetch(`${this.baseUrl}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),signal:o});if(!t.ok)throw await f(t);let r=await t.json();return h(r,this.modelId)}catch(t){throw t instanceof i?t:new i(t instanceof Error?t.message:String(t),{provider:"ollama",cause:t instanceof Error?t:void 0})}}async*streamText(e,o){let s=g(this.config,e,!0);try{let t=await fetch(`${this.baseUrl}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),signal:o});if(!t.ok){yield{kind:"error",error:await f(t)};return}if(t.body===null){yield{kind:"error",error:new i("No response body",{provider:"ollama"})};return}for await(let r of u(t.body)){let l=k(r);l!==null&&(yield l)}}catch(t){t instanceof i?yield{kind:"error",error:t}:yield{kind:"error",error:new i(t instanceof Error?t.message:String(t),{provider:"ollama",cause:t instanceof Error?t:void 0})}}}close(){return Promise.resolve()}getRawClient(){return null}},v={provider:"ollama",createModel(n){let e=n.properties?.baseUrl??p;return Promise.resolve(new d(e,n))}},g=(n,e,o)=>{let s=y(e.messages,e.system),t={model:n.model,messages:s,stream:o},r={};return e.temperature!==void 0&&(r.temperature=e.temperature),e.maxTokens!==void 0&&(r.num_predict=e.maxTokens),e.topP!==void 0&&(r.top_p=e.topP),e.stopWords!==void 0&&(r.stop=e.stopWords),Object.keys(r).length>0&&(t.options=r),e.responseFormat!==void 0&&(e.responseFormat.type==="json_schema"?t.format=e.responseFormat.jsonSchema:e.responseFormat.type==="json_object"&&(t.format="json")),t},y=(n,e)=>{let o=[];e!==void 0&&o.push({role:"system",content:e});for(let s of n){if(s.role==="system"){let a=[];for(let c of s.content)c.kind==="text"&&a.push(c.text);o.push({role:"system",content:a.join(`
2
+ import{c as u}from"./chunk-2TANTKYS.js";import{a as i,e as m}from"./chunk-J7YTWK67.js";var p="http://localhost:11434",d=class{capabilities=["text_generation","streaming","vision"];provider="ollama";modelId;baseUrl;config;constructor(e,o){this.baseUrl=e,this.config=o,this.modelId=o.model}async generateText(e,o){let s=g(this.config,e,!1);try{let t=await fetch(`${this.baseUrl}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),signal:o});if(!t.ok)throw await f(t);let r=await t.json();return h(r,this.modelId)}catch(t){throw t instanceof i?t:new i(t instanceof Error?t.message:String(t),{provider:"ollama",cause:t instanceof Error?t:void 0})}}async*streamText(e,o){let s=g(this.config,e,!0);try{let t=await fetch(`${this.baseUrl}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),signal:o});if(!t.ok){yield{kind:"error",error:await f(t)};return}if(t.body===null){yield{kind:"error",error:new i("No response body",{provider:"ollama"})};return}for await(let r of u(t.body)){let l=k(r);l!==null&&(yield l)}}catch(t){t instanceof i?yield{kind:"error",error:t}:yield{kind:"error",error:new i(t instanceof Error?t.message:String(t),{provider:"ollama",cause:t instanceof Error?t:void 0})}}}close(){return Promise.resolve()}getRawClient(){return null}},v={provider:"ollama",createModel(n){let e=n.properties?.baseUrl??p;return Promise.resolve(new d(e,n))}},g=(n,e,o)=>{let s=y(e.messages,e.system),t={model:n.model,messages:s,stream:o},r={};return e.temperature!==void 0&&(r.temperature=e.temperature),e.maxTokens!==void 0&&(r.num_predict=e.maxTokens),e.topP!==void 0&&(r.top_p=e.topP),e.stopWords!==void 0&&(r.stop=e.stopWords),Object.keys(r).length>0&&(t.options=r),e.responseFormat!==void 0&&(e.responseFormat.type==="json_schema"?t.format=e.responseFormat.jsonSchema:e.responseFormat.type==="json_object"&&(t.format="json")),t},y=(n,e)=>{let o=[];e!==void 0&&o.push({role:"system",content:e});for(let s of n){if(s.role==="system"){let a=[];for(let c of s.content)c.kind==="text"&&a.push(c.text);o.push({role:"system",content:a.join(`
3
3
  `)});continue}let t=[],r=[];for(let a of s.content)a.kind==="text"?t.push(a.text):a.kind==="image"&&a.image.url!==void 0&&r.push(a.image.url);let l={role:s.role==="tool"?"user":s.role,content:t.join(`
4
4
  `)};r.length>0&&(l.images=r),o.push(l)}return o},h=(n,e)=>{let o=[];return n.message?.content!==void 0&&o.push({kind:"text",text:n.message.content}),{content:o,stopReason:n.done_reason==="length"?"max_tokens":"end_turn",usage:{inputTokens:n.prompt_eval_count??0,outputTokens:n.eval_count??0,totalTokens:(n.prompt_eval_count??0)+(n.eval_count??0)},modelId:e,rawResponse:n}},k=n=>{if(n===null||typeof n!="object")return null;let e=n;return e.done===!0?{kind:"message_done",stopReason:e.done_reason==="length"?"max_tokens":"end_turn",usage:{inputTokens:e.prompt_eval_count??0,outputTokens:e.eval_count??0,totalTokens:(e.prompt_eval_count??0)+(e.eval_count??0)}}:e.message?.content!==void 0&&e.message.content.length>0?{kind:"content_delta",textDelta:e.message.content}:e.response!==void 0&&e.response.length>0?{kind:"content_delta",textDelta:e.response}:null},f=async n=>{let e;try{e=(await n.json()).error??`Ollama HTTP ${n.status}`}catch{e=`Ollama HTTP ${n.status}: ${n.statusText}`}return m("ollama",n.status,new Error(e))};export{d as a,v as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as b,b as w,d as F,f as D}from"./chunk-26ZFSXSK.js";import{a as C}from"./chunk-LFNUSULJ.js";import{b as h}from"./chunk-LGNGLAV3.js";import{f as R}from"./chunk-P2MUEKFT.js";import{b as l,f as m,g as k,h as A,i as g}from"./chunk-YVN2NZL4.js";import{g as d}from"./chunk-FFWPJP7A.js";var x=(e,r)=>{let o={},t=e.length;for(let s=0;s<t;s++){let n=e[s],a=r(n);o[a]===void 0?o[a]=[n]:o[a].push(n)}return o};var u=h(),P=(e,r)=>e===r?!0:typeof e!=typeof r||typeof e!="object"||e===null||r===null?!1:JSON.stringify(e)===JSON.stringify(r),O=(e,r)=>e[r],j=e=>e.startsWith("npm:@jsr/"),B=e=>{let r=e.slice(9),o=r.indexOf("__");if(o===-1)throw new Error(`Invalid npm JSR format: ${e}`);let t=r.slice(0,o),s=r.slice(o+2),n=s.indexOf("@"),a,p;return n===-1?(a=s,p=""):(a=s.slice(0,n),p=s.slice(n)),`jsr:@${t}/${a}${p}`},_=(e,r)=>j(r)?B(r):r.startsWith("npm:")?r:`npm:${e}@${r}`,S=e=>e==="workspace:*"||e.startsWith("workspace:"),M=(e,r,o)=>{let t=[],s=r.dependencies??{},n=r.devDependencies??{},a={...s,...n},p=o.imports??{};for(let[y,c]of Object.entries(a)){if(S(c))continue;let f=_(y,c),i=p[y];i===void 0?t.push({packageName:e,dependencyName:y,issue:"missing_in_deno",expected:f}):i!==f&&t.push({packageName:e,dependencyName:y,issue:"version_mismatch",expected:f,actual:i})}for(let[y,c]of Object.entries(p))a[y]===void 0&&t.push({packageName:e,dependencyName:y,issue:"missing_in_package",actual:p[y]});return t},G=async(e,r)=>{let o=[],t=[],s=await w({baseDir:e,includeFiles:[b.DenoJson,b.PackageJson]}),n=s._loadedFiles.find(c=>c.fileType===b.DenoJson),a=s._loadedFiles.find(c=>c.fileType===b.PackageJson);if(n===void 0||a===void 0)return{inconsistencies:[],dependencyInconsistencies:[]};let p=["name","version","exports"];for(let c of p){let f=O(n.content,c),i=O(a.content,c);f===void 0||i===void 0||P(f,i)||o.push({packageName:r,field:c,denoValue:f,packageValue:i})}let y=M(r,a.content,n.content);return t.push(...y),{inconsistencies:o,dependencyInconsistencies:t}},K=async(e={})=>{let{root:r=".",failFast:o=!1}=e,[t,s]=await D(r),n=[],a=[],p=0;for(let c of s){let f=F(c.config);try{let i=await G(f,c.name);if(p++,i.inconsistencies.length>0&&n.push(...i.inconsistencies),i.dependencyInconsistencies.length>0&&a.push(...i.dependencyInconsistencies),o&&(i.inconsistencies.length>0||i.dependencyInconsistencies.length>0))return{isConsistent:!1,inconsistencies:n,dependencyInconsistencies:a,packagesChecked:p}}catch{continue}}return{isConsistent:!(n.length>0||a.length>0),inconsistencies:n,dependencyInconsistencies:a,packagesChecked:p}},v=e=>typeof e=="string"?`"${e}"`:JSON.stringify(e,null,2),H=e=>{switch(e.issue){case"missing_in_deno":return`Missing in deno.json imports. Expected: ${e.expected}`;case"missing_in_package":return`Extra in deno.json imports (not in package.json): ${e.actual}`;case"version_mismatch":return`Version mismatch. Expected: ${e.expected}, Actual: ${e.actual}`}},L=e=>R.fromPromise(()=>K(e)),$=e=>d.ok({root:"."}),N=e=>{if(d.isFail(e))return u.writeln(m("\u2717"),l(" "+String(e.error))),d.fail({exitCode:1});let{value:r}=e;if(u.writeln(g("\u2139"),l(` Checked ${r.packagesChecked} packages.`)),!r.isConsistent){if(r.inconsistencies.length>0){u.writeln(m("\u2717"),l(` Found ${r.inconsistencies.length} field inconsistencies:`));let o=x(r.inconsistencies,t=>t.packageName);for(let[t,s]of Object.entries(o)){u.writeln(A("\u26A0"),l(" "+t));for(let n of s)u.writeln(m("\u2717"),l(` ${n.field} mismatch:`)),u.writeln(g("\u2139"),l(` deno.json: ${v(n.denoValue)}`)),u.writeln(g("\u2139"),l(` package.json: ${v(n.packageValue)}`))}}if(r.dependencyInconsistencies.length>0){u.writeln(m("\u2717"),l(` Found ${r.dependencyInconsistencies.length} dependency inconsistencies:`));let o=x(r.dependencyInconsistencies,t=>t.packageName);for(let[t,s]of Object.entries(o)){u.writeln(A("\u26A0"),l(" "+t));for(let n of s)u.writeln(m("\u2717"),l(` ${n.dependencyName}:`)),u.writeln(g("\u2139"),l(` ${H(n)}`))}}return d.fail({exitCode:1})}return u.writeln(k("\u2713"),l(" All package configs are consistent.")),d.ok(void 0)},J=C.createTrigger({handler:L,adaptInput:$,adaptOutput:N}),qn=async e=>await J({command:"validate-package-configs",args:[],flags:{}});export{K as a,L as b,J as c,qn as d};
2
+ import{a as b,b as w,d as F,f as D}from"./chunk-3D5TBTM3.js";import{a as C}from"./chunk-LFNUSULJ.js";import{b as h}from"./chunk-JTSRGXS4.js";import{f as R}from"./chunk-P2MUEKFT.js";import{b as l,f as m,g as k,h as A,i as g}from"./chunk-YVN2NZL4.js";import{g as d}from"./chunk-FFWPJP7A.js";var x=(e,r)=>{let o={},t=e.length;for(let s=0;s<t;s++){let n=e[s],a=r(n);o[a]===void 0?o[a]=[n]:o[a].push(n)}return o};var u=h(),P=(e,r)=>e===r?!0:typeof e!=typeof r||typeof e!="object"||e===null||r===null?!1:JSON.stringify(e)===JSON.stringify(r),O=(e,r)=>e[r],j=e=>e.startsWith("npm:@jsr/"),B=e=>{let r=e.slice(9),o=r.indexOf("__");if(o===-1)throw new Error(`Invalid npm JSR format: ${e}`);let t=r.slice(0,o),s=r.slice(o+2),n=s.indexOf("@"),a,p;return n===-1?(a=s,p=""):(a=s.slice(0,n),p=s.slice(n)),`jsr:@${t}/${a}${p}`},_=(e,r)=>j(r)?B(r):r.startsWith("npm:")?r:`npm:${e}@${r}`,S=e=>e==="workspace:*"||e.startsWith("workspace:"),M=(e,r,o)=>{let t=[],s=r.dependencies??{},n=r.devDependencies??{},a={...s,...n},p=o.imports??{};for(let[y,c]of Object.entries(a)){if(S(c))continue;let f=_(y,c),i=p[y];i===void 0?t.push({packageName:e,dependencyName:y,issue:"missing_in_deno",expected:f}):i!==f&&t.push({packageName:e,dependencyName:y,issue:"version_mismatch",expected:f,actual:i})}for(let[y,c]of Object.entries(p))a[y]===void 0&&t.push({packageName:e,dependencyName:y,issue:"missing_in_package",actual:p[y]});return t},G=async(e,r)=>{let o=[],t=[],s=await w({baseDir:e,includeFiles:[b.DenoJson,b.PackageJson]}),n=s._loadedFiles.find(c=>c.fileType===b.DenoJson),a=s._loadedFiles.find(c=>c.fileType===b.PackageJson);if(n===void 0||a===void 0)return{inconsistencies:[],dependencyInconsistencies:[]};let p=["name","version","exports"];for(let c of p){let f=O(n.content,c),i=O(a.content,c);f===void 0||i===void 0||P(f,i)||o.push({packageName:r,field:c,denoValue:f,packageValue:i})}let y=M(r,a.content,n.content);return t.push(...y),{inconsistencies:o,dependencyInconsistencies:t}},K=async(e={})=>{let{root:r=".",failFast:o=!1}=e,[t,s]=await D(r),n=[],a=[],p=0;for(let c of s){let f=F(c.config);try{let i=await G(f,c.name);if(p++,i.inconsistencies.length>0&&n.push(...i.inconsistencies),i.dependencyInconsistencies.length>0&&a.push(...i.dependencyInconsistencies),o&&(i.inconsistencies.length>0||i.dependencyInconsistencies.length>0))return{isConsistent:!1,inconsistencies:n,dependencyInconsistencies:a,packagesChecked:p}}catch{continue}}return{isConsistent:!(n.length>0||a.length>0),inconsistencies:n,dependencyInconsistencies:a,packagesChecked:p}},v=e=>typeof e=="string"?`"${e}"`:JSON.stringify(e,null,2),H=e=>{switch(e.issue){case"missing_in_deno":return`Missing in deno.json imports. Expected: ${e.expected}`;case"missing_in_package":return`Extra in deno.json imports (not in package.json): ${e.actual}`;case"version_mismatch":return`Version mismatch. Expected: ${e.expected}, Actual: ${e.actual}`}},L=e=>R.fromPromise(()=>K(e)),$=e=>d.ok({root:"."}),N=e=>{if(d.isFail(e))return u.writeln(m("\u2717"),l(" "+String(e.error))),d.fail({exitCode:1});let{value:r}=e;if(u.writeln(g("\u2139"),l(` Checked ${r.packagesChecked} packages.`)),!r.isConsistent){if(r.inconsistencies.length>0){u.writeln(m("\u2717"),l(` Found ${r.inconsistencies.length} field inconsistencies:`));let o=x(r.inconsistencies,t=>t.packageName);for(let[t,s]of Object.entries(o)){u.writeln(A("\u26A0"),l(" "+t));for(let n of s)u.writeln(m("\u2717"),l(` ${n.field} mismatch:`)),u.writeln(g("\u2139"),l(` deno.json: ${v(n.denoValue)}`)),u.writeln(g("\u2139"),l(` package.json: ${v(n.packageValue)}`))}}if(r.dependencyInconsistencies.length>0){u.writeln(m("\u2717"),l(` Found ${r.dependencyInconsistencies.length} dependency inconsistencies:`));let o=x(r.dependencyInconsistencies,t=>t.packageName);for(let[t,s]of Object.entries(o)){u.writeln(A("\u26A0"),l(" "+t));for(let n of s)u.writeln(m("\u2717"),l(` ${n.dependencyName}:`)),u.writeln(g("\u2139"),l(` ${H(n)}`))}}return d.fail({exitCode:1})}return u.writeln(k("\u2713"),l(" All package configs are consistent.")),d.ok(void 0)},J=C.createTrigger({handler:L,adaptInput:$,adaptOutput:N}),qn=async e=>await J({command:"validate-package-configs",args:[],flags:{}});export{K as a,L as b,J as c,qn as d};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
+ import{c}from"./chunk-RBU3HF66.js";var l={UNINITIALIZED:["IDLE"],IDLE:["DISCOVERY","COMPLETED","FREE"],FREE:["IDLE"],DISCOVERY:["DISCOVERY_REVIEW","COMPLETED"],DISCOVERY_REVIEW:["DISCOVERY_REVIEW","SPEC_DRAFT","COMPLETED"],SPEC_DRAFT:["SPEC_DRAFT","SPEC_APPROVED","COMPLETED"],SPEC_APPROVED:["EXECUTING","COMPLETED"],EXECUTING:["COMPLETED","BLOCKED"],BLOCKED:["EXECUTING","COMPLETED"],COMPLETED:["IDLE","DISCOVERY"]},p=(e,s)=>l[e].includes(s),r=(e,s)=>{if(!p(e,s))throw new Error(`Invalid phase transition: ${e} \u2192 ${s}. Allowed: ${l[e].join(", ")}`)},m=(e,s)=>(r(e.phase,s),{...e,phase:s}),d=(e,s,t,n)=>(r(e.phase,"DISCOVERY"),{...e,phase:"DISCOVERY",spec:s,specDescription:n??null,branch:t,discovery:{answers:[],completed:!1,currentQuestion:0,audience:"human",approved:!1,planPath:null},specState:{path:null,status:"none"},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]},decisions:[]}),E=e=>(r(e.phase,"FREE"),{...e,phase:"FREE"}),u=e=>(r(e.phase,"IDLE"),{...e,phase:"IDLE"}),S=(e,s)=>{if(e.phase!=="DISCOVERY")throw new Error(`Cannot set discovery mode in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,mode:s}}},C=(e,s)=>{if(e.phase!=="DISCOVERY")throw new Error(`Cannot complete premises in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,premises:s,premisesCompleted:!0}}},D=(e,s)=>{if(e.phase!=="DISCOVERY_REVIEW")throw new Error(`Cannot select approach in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,selectedApproach:s,alternativesPresented:!0}}},v=e=>{if(e.phase!=="DISCOVERY_REVIEW")throw new Error(`Cannot skip alternatives in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,alternativesPresented:!0}}},F=(e,s,t,n)=>{if(e.phase!=="DISCOVERY"&&e.phase!=="DISCOVERY_REVIEW")throw new Error(`Cannot add discovery answer in phase: ${e.phase}`);let a=e.discovery.answers.filter(o=>o.questionId!==s),i={questionId:s,answer:t,user:n?.name??"Unknown User",email:n?.email??"",timestamp:new Date().toISOString(),type:"original"};return{...e,discovery:{...e.discovery,answers:[...a,i]}}};var I=e=>{if(e.phase!=="DISCOVERY")throw new Error(`Cannot complete discovery in phase: ${e.phase}`);return{...e,phase:"DISCOVERY_REVIEW",discovery:{...e.discovery,completed:!0},specState:{path:c.specFile(e.spec),status:"draft"}}},w=e=>(r(e.phase,"SPEC_DRAFT"),{...e,phase:"SPEC_DRAFT"}),y=e=>{if(e.phase!=="DISCOVERY_REVIEW")throw new Error(`Cannot approve discovery answers in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,approved:!0}}},R=e=>{if(e.phase!=="DISCOVERY")throw new Error(`Cannot advance discovery question in phase: ${e.phase}`);return{...e,discovery:{...e.discovery,currentQuestion:e.discovery.currentQuestion+1}}},O=e=>(r(e.phase,"SPEC_APPROVED"),{...e,phase:"SPEC_APPROVED",specState:{...e.specState,status:"approved"}}),P=e=>(r(e.phase,"EXECUTING"),{...e,phase:"EXECUTING",discovery:{...e.discovery,completed:!0,approved:!1},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]}});var g=(e,s)=>(r(e.phase,"BLOCKED"),{...e,phase:"BLOCKED",execution:{...e.execution,lastProgress:`BLOCKED: ${s}`}}),x=(e,s)=>({...e,decisions:[...e.decisions,s]}),f=(e,s,t)=>(r(e.phase,"COMPLETED"),{...e,phase:"COMPLETED",completionReason:s,completedAt:new Date().toISOString(),completionNote:t??null}),V=e=>{if(e.phase!=="COMPLETED")throw new Error(`Cannot reopen in phase: ${e.phase}`);return{...e,phase:"DISCOVERY",reopenedFrom:e.completionReason,completionReason:null,completedAt:null,completionNote:null,discovery:{...e.discovery,completed:!1,currentQuestion:0},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]},classification:null}},T=(e,s)=>{if(e.phase!=="EXECUTING"&&e.phase!=="BLOCKED")throw new Error(`Cannot revisit in phase: ${e.phase}. Only EXECUTING or BLOCKED can revisit.`);let t={from:e.phase,reason:s,completedTasks:[...e.execution.completedTasks],timestamp:new Date().toISOString()};return{...e,phase:"DISCOVERY",discovery:{...e.discovery,completed:!1,currentQuestion:0,approved:!1},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]},classification:null,revisitHistory:[...e.revisitHistory??[],t]}},A=(e,s,t,n,a)=>{let i={from:s,to:t,user:n?.name??"Unknown User",email:n?.email??"",timestamp:new Date().toISOString(),reason:a},o=e.transitionHistory??[];return{...e,transitionHistory:[...o,i]}},L=(e,s,t)=>{let n=e.customACs??[],i={id:`custom-ac-${n.length+1}`,text:s,user:t?.name??"Unknown User",email:t?.email??"",timestamp:new Date().toISOString(),addedInPhase:e.phase};return{...e,customACs:[...n,i]}},Y=(e,s,t)=>{let n=e.specNotes??[],i={id:`note-${n.length+1}`,text:s,user:t?.name??"Unknown User",email:t?.email??"",timestamp:new Date().toISOString(),phase:e.phase};return{...e,specNotes:[...n,i]}},N=e=>({...e,phase:"IDLE",spec:null,branch:null,discovery:{answers:[],completed:!1,currentQuestion:0,audience:"human",approved:!1,planPath:null},specState:{path:null,status:"none"},execution:{iteration:0,lastProgress:null,modifiedFiles:[],lastVerification:null,awaitingStatusReport:!1,debt:null,completedTasks:[],debtCounter:0,naItems:[]},decisions:[],classification:null,completionReason:null,completedAt:null,completionNote:null,reopenedFrom:null});export{m as a,d as b,E as c,u as d,S as e,C as f,D as g,v as h,F as i,I as j,w as k,y as l,R as m,O as n,P as o,g as p,x as q,f as r,V as s,T as t,A as u,L as v,Y as w,N as x};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{e as Ja}from"./chunk-5DWJ7WEE.js";import{i as Hv}from"./chunk-WJKE6XHF.js";import{b as Hb}from"./chunk-BQT5RJZB.js";import{a as Ko,c as Ra,e as Dv}from"./chunk-5WJ6AUNY.js";var Qb=Ra(Pe=>{"use strict";var zv=Symbol.for("react.transitional.element"),ip=Symbol.for("react.portal"),ap=Symbol.for("react.fragment"),op=Symbol.for("react.strict_mode"),cp=Symbol.for("react.profiler"),up=Symbol.for("react.consumer"),sp=Symbol.for("react.context"),fp=Symbol.for("react.forward_ref"),hp=Symbol.for("react.suspense"),dp=Symbol.for("react.memo"),Wb=Symbol.for("react.lazy"),gp=Symbol.for("react.activity"),Nb=Symbol.iterator;function vp(e){return e===null||typeof e!="object"?null:(e=Nb&&e[Nb]||e["@@iterator"],typeof e=="function"?e:null)}var Yb={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Gb=Object.assign,Xb={};function us(e,n,t){this.props=e,this.context=n,this.refs=Xb,this.updater=t||Yb}us.prototype.isReactComponent={};us.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};us.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Zb(){}Zb.prototype=us.prototype;function Uv(e,n,t){this.props=e,this.context=n,this.refs=Xb,this.updater=t||Yb}var Wv=Uv.prototype=new Zb;Wv.constructor=Uv;Gb(Wv,us.prototype);Wv.isPureReactComponent=!0;var Bb=Array.isArray;function Bv(){}var rt={H:null,A:null,T:null,S:null},Jb=Object.prototype.hasOwnProperty;function Yv(e,n,t){var a=t.ref;return{$$typeof:zv,type:e,key:n,ref:a!==void 0?a:null,props:t}}function yp(e,n){return Yv(e.type,n,e.props)}function Gv(e){return typeof e=="object"&&e!==null&&e.$$typeof===zv}function bp(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(t){return n[t]})}var zb=/\/+/g;function Nv(e,n){return typeof e=="object"&&e!==null&&e.key!=null?bp(""+e.key):n.toString(36)}function wp(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Bv,Bv):(e.status="pending",e.then(function(n){e.status==="pending"&&(e.status="fulfilled",e.value=n)},function(n){e.status==="pending"&&(e.status="rejected",e.reason=n)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function cs(e,n,t,a,c){var f=typeof e;(f==="undefined"||f==="boolean")&&(e=null);var d=!1;if(e===null)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(e.$$typeof){case zv:case ip:d=!0;break;case Wb:return d=e._init,cs(d(e._payload),n,t,a,c)}}if(d)return c=c(e),d=a===""?"."+Nv(e,0):a,Bb(c)?(t="",d!=null&&(t=d.replace(zb,"$&/")+"/"),cs(c,n,t,"",function(w){return w})):c!=null&&(Gv(c)&&(c=yp(c,t+(c.key==null||e&&e.key===c.key?"":(""+c.key).replace(zb,"$&/")+"/")+d)),n.push(c)),1;d=0;var T=a===""?".":a+":";if(Bb(e))for(var b=0;b<e.length;b++)a=e[b],f=T+Nv(a,b),d+=cs(a,n,t,f,c);else if(b=vp(e),typeof b=="function")for(e=b.call(e),b=0;!(a=e.next()).done;)a=a.value,f=T+Nv(a,b++),d+=cs(a,n,t,f,c);else if(f==="object"){if(typeof e.then=="function")return cs(wp(e),n,t,a,c);throw n=String(e),Error("Objects are not valid as a React child (found: "+(n==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.")}return d}function kd(e,n,t){if(e==null)return e;var a=[],c=0;return cs(e,a,"","",function(f){return n.call(t,f,c++)}),a}function Tp(e){if(e._status===-1){var n=e._result;n=n(),n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var Ub=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},pp={map:kd,forEach:function(e,n,t){kd(e,function(){n.apply(this,arguments)},t)},count:function(e){var n=0;return kd(e,function(){n++}),n},toArray:function(e){return kd(e,function(n){return n})||[]},only:function(e){if(!Gv(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Pe.Activity=gp;Pe.Children=pp;Pe.Component=us;Pe.Fragment=ap;Pe.Profiler=cp;Pe.PureComponent=Uv;Pe.StrictMode=op;Pe.Suspense=hp;Pe.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=rt;Pe.__COMPILER_RUNTIME={__proto__:null,c:function(e){return rt.H.useMemoCache(e)}};Pe.cache=function(e){return function(){return e.apply(null,arguments)}};Pe.cacheSignal=function(){return null};Pe.cloneElement=function(e,n,t){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=Gb({},e.props),c=e.key;if(n!=null)for(f in n.key!==void 0&&(c=""+n.key),n)!Jb.call(n,f)||f==="key"||f==="__self"||f==="__source"||f==="ref"&&n.ref===void 0||(a[f]=n[f]);var f=arguments.length-2;if(f===1)a.children=t;else if(1<f){for(var d=Array(f),T=0;T<f;T++)d[T]=arguments[T+2];a.children=d}return Yv(e.type,c,a)};Pe.createContext=function(e){return e={$$typeof:sp,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:up,_context:e},e};Pe.createElement=function(e,n,t){var a,c={},f=null;if(n!=null)for(a in n.key!==void 0&&(f=""+n.key),n)Jb.call(n,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(c[a]=n[a]);var d=arguments.length-2;if(d===1)c.children=t;else if(1<d){for(var T=Array(d),b=0;b<d;b++)T[b]=arguments[b+2];c.children=T}if(e&&e.defaultProps)for(a in d=e.defaultProps,d)c[a]===void 0&&(c[a]=d[a]);return Yv(e,f,c)};Pe.createRef=function(){return{current:null}};Pe.forwardRef=function(e){return{$$typeof:fp,render:e}};Pe.isValidElement=Gv;Pe.lazy=function(e){return{$$typeof:Wb,_payload:{_status:-1,_result:e},_init:Tp}};Pe.memo=function(e,n){return{$$typeof:dp,type:e,compare:n===void 0?null:n}};Pe.startTransition=function(e){var n=rt.T,t={};rt.T=t;try{var a=e(),c=rt.S;c!==null&&c(t,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Bv,Ub)}catch(f){Ub(f)}finally{n!==null&&t.types!==null&&(n.types=t.types),rt.T=n}};Pe.unstable_useCacheRefresh=function(){return rt.H.useCacheRefresh()};Pe.use=function(e){return rt.H.use(e)};Pe.useActionState=function(e,n,t){return rt.H.useActionState(e,n,t)};Pe.useCallback=function(e,n){return rt.H.useCallback(e,n)};Pe.useContext=function(e){return rt.H.useContext(e)};Pe.useDebugValue=function(){};Pe.useDeferredValue=function(e,n){return rt.H.useDeferredValue(e,n)};Pe.useEffect=function(e,n){return rt.H.useEffect(e,n)};Pe.useEffectEvent=function(e){return rt.H.useEffectEvent(e)};Pe.useId=function(){return rt.H.useId()};Pe.useImperativeHandle=function(e,n,t){return rt.H.useImperativeHandle(e,n,t)};Pe.useInsertionEffect=function(e,n){return rt.H.useInsertionEffect(e,n)};Pe.useLayoutEffect=function(e,n){return rt.H.useLayoutEffect(e,n)};Pe.useMemo=function(e,n){return rt.H.useMemo(e,n)};Pe.useOptimistic=function(e,n){return rt.H.useOptimistic(e,n)};Pe.useReducer=function(e,n,t){return rt.H.useReducer(e,n,t)};Pe.useRef=function(e){return rt.H.useRef(e)};Pe.useState=function(e){return rt.H.useState(e)};Pe.useSyncExternalStore=function(e,n,t){return rt.H.useSyncExternalStore(e,n,t)};Pe.useTransition=function(){return rt.H.useTransition()};Pe.version="19.2.4"});var Vb=Ra((ke,Sd)=>{"use strict";process.env.NODE_ENV!=="production"&&function(){function e(C,O){Object.defineProperty(a.prototype,C,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",O[0],O[1])}})}function n(C){return C===null||typeof C!="object"?null:(C=Zl&&C[Zl]||C["@@iterator"],typeof C=="function"?C:null)}function t(C,O){C=(C=C.constructor)&&(C.displayName||C.name)||"ReactClass";var Z=C+"."+O;ll[Z]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",O,C),ll[Z]=!0)}function a(C,O,Z){this.props=C,this.context=O,this.refs=rn,this.updater=Z||me}function c(){}function f(C,O,Z){this.props=C,this.context=O,this.refs=rn,this.updater=Z||me}function d(){}function T(C){return""+C}function b(C){try{T(C);var O=!1}catch{O=!0}if(O){O=console;var Z=O.error,$=typeof Symbol=="function"&&Symbol.toStringTag&&C[Symbol.toStringTag]||C.constructor.name||"Object";return Z.call(O,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",$),T(C)}}function w(C){if(C==null)return null;if(typeof C=="function")return C.$$typeof===_n?null:C.displayName||C.name||null;if(typeof C=="string")return C;switch(C){case lt:return"Fragment";case bn:return"Profiler";case Mn:return"StrictMode";case mt:return"Suspense";case _e:return"SuspenseList";case br:return"Activity"}if(typeof C=="object")switch(typeof C.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),C.$$typeof){case Me:return"Portal";case Ge:return C.displayName||"Context";case ae:return(C._context.displayName||"Context")+".Consumer";case Bt:var O=C.render;return C=C.displayName,C||(C=O.displayName||O.name||"",C=C!==""?"ForwardRef("+C+")":"ForwardRef"),C;case Ee:return O=C.displayName||null,O!==null?O:w(C.type)||"Memo";case it:O=C._payload,C=C._init;try{return w(C(O))}catch{}}return null}function S(C){if(C===lt)return"<>";if(typeof C=="object"&&C!==null&&C.$$typeof===it)return"<...>";try{var O=w(C);return O?"<"+O+">":"<...>"}catch{return"<...>"}}function E(){var C=we.A;return C===null?null:C.getOwner()}function x(){return Error("react-stack-top-frame")}function k(C){if(Ln.call(C,"key")){var O=Object.getOwnPropertyDescriptor(C,"key").get;if(O&&O.isReactWarning)return!1}return C.key!==void 0}function Q(C,O){function Z(){Vn||(Vn=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",O))}Z.isReactWarning=!0,Object.defineProperty(C,"key",{get:Z,configurable:!0})}function X(){var C=w(this.type);return Kn[C]||(Kn[C]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),C=this.props.ref,C!==void 0?C:null}function V(C,O,Z,$,re,ye){var be=Z.ref;return C={$$typeof:Fe,type:C,key:O,props:Z,_owner:$},(be!==void 0?be:null)!==null?Object.defineProperty(C,"ref",{enumerable:!1,get:X}):Object.defineProperty(C,"ref",{enumerable:!1,value:null}),C._store={},Object.defineProperty(C._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(C,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(C,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:re}),Object.defineProperty(C,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ye}),Object.freeze&&(Object.freeze(C.props),Object.freeze(C)),C}function ee(C,O){return O=V(C.type,O,C.props,C._owner,C._debugStack,C._debugTask),C._store&&(O._store.validated=C._store.validated),O}function j(C){ue(C)?C._store&&(C._store.validated=1):typeof C=="object"&&C!==null&&C.$$typeof===it&&(C._payload.status==="fulfilled"?ue(C._payload.value)&&C._payload.value._store&&(C._payload.value._store.validated=1):C._store&&(C._store.validated=1))}function ue(C){return typeof C=="object"&&C!==null&&C.$$typeof===Fe}function Re(C){var O={"=":"=0",":":"=2"};return"$"+C.replace(/[=:]/g,function(Z){return O[Z]})}function se(C,O){return typeof C=="object"&&C!==null&&C.key!=null?(b(C.key),Re(""+C.key)):O.toString(36)}function U(C){switch(C.status){case"fulfilled":return C.value;case"rejected":throw C.reason;default:switch(typeof C.status=="string"?C.then(d,d):(C.status="pending",C.then(function(O){C.status==="pending"&&(C.status="fulfilled",C.value=O)},function(O){C.status==="pending"&&(C.status="rejected",C.reason=O)})),C.status){case"fulfilled":return C.value;case"rejected":throw C.reason}}throw C}function Ye(C,O,Z,$,re){var ye=typeof C;(ye==="undefined"||ye==="boolean")&&(C=null);var be=!1;if(C===null)be=!0;else switch(ye){case"bigint":case"string":case"number":be=!0;break;case"object":switch(C.$$typeof){case Fe:case Me:be=!0;break;case it:return be=C._init,Ye(be(C._payload),O,Z,$,re)}}if(be){be=C,re=re(be);var Ke=$===""?"."+se(be,0):$;return nn(re)?(Z="",Ke!=null&&(Z=Ke.replace(qn,"$&/")+"/"),Ye(re,O,Z,"",function(Ne){return Ne})):re!=null&&(ue(re)&&(re.key!=null&&(be&&be.key===re.key||b(re.key)),Z=ee(re,Z+(re.key==null||be&&be.key===re.key?"":(""+re.key).replace(qn,"$&/")+"/")+Ke),$!==""&&be!=null&&ue(be)&&be.key==null&&be._store&&!be._store.validated&&(Z._store.validated=2),re=Z),O.push(re)),1}if(be=0,Ke=$===""?".":$+":",nn(C))for(var xe=0;xe<C.length;xe++)$=C[xe],ye=Ke+se($,xe),be+=Ye($,O,Z,ye,re);else if(xe=n(C),typeof xe=="function")for(xe===C.entries&&(cn||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),cn=!0),C=xe.call(C),xe=0;!($=C.next()).done;)$=$.value,ye=Ke+se($,xe++),be+=Ye($,O,Z,ye,re);else if(ye==="object"){if(typeof C.then=="function")return Ye(U(C),O,Z,$,re);throw O=String(C),Error("Objects are not valid as a React child (found: "+(O==="[object Object]"?"object with keys {"+Object.keys(C).join(", ")+"}":O)+"). If you meant to render a collection of children, use an array instead.")}return be}function en(C,O,Z){if(C==null)return C;var $=[],re=0;return Ye(C,$,"","",function(ye){return O.call(Z,ye,re++)}),$}function ve(C){if(C._status===-1){var O=C._ioInfo;O!=null&&(O.start=O.end=performance.now()),O=C._result;var Z=O();if(Z.then(function(re){if(C._status===0||C._status===-1){C._status=1,C._result=re;var ye=C._ioInfo;ye!=null&&(ye.end=performance.now()),Z.status===void 0&&(Z.status="fulfilled",Z.value=re)}},function(re){if(C._status===0||C._status===-1){C._status=2,C._result=re;var ye=C._ioInfo;ye!=null&&(ye.end=performance.now()),Z.status===void 0&&(Z.status="rejected",Z.reason=re)}}),O=C._ioInfo,O!=null){O.value=Z;var $=Z.displayName;typeof $=="string"&&(O.name=$)}C._status===-1&&(C._status=0,C._result=Z)}if(C._status===1)return O=C._result,O===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
2
+ import{e as Ja}from"./chunk-5DWJ7WEE.js";import{i as Hv}from"./chunk-6DBKPC2O.js";import{b as Hb}from"./chunk-6G6UVWJN.js";import{a as Ko,c as Ra,e as Dv}from"./chunk-5WJ6AUNY.js";var Qb=Ra(Pe=>{"use strict";var zv=Symbol.for("react.transitional.element"),ip=Symbol.for("react.portal"),ap=Symbol.for("react.fragment"),op=Symbol.for("react.strict_mode"),cp=Symbol.for("react.profiler"),up=Symbol.for("react.consumer"),sp=Symbol.for("react.context"),fp=Symbol.for("react.forward_ref"),hp=Symbol.for("react.suspense"),dp=Symbol.for("react.memo"),Wb=Symbol.for("react.lazy"),gp=Symbol.for("react.activity"),Nb=Symbol.iterator;function vp(e){return e===null||typeof e!="object"?null:(e=Nb&&e[Nb]||e["@@iterator"],typeof e=="function"?e:null)}var Yb={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Gb=Object.assign,Xb={};function us(e,n,t){this.props=e,this.context=n,this.refs=Xb,this.updater=t||Yb}us.prototype.isReactComponent={};us.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};us.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Zb(){}Zb.prototype=us.prototype;function Uv(e,n,t){this.props=e,this.context=n,this.refs=Xb,this.updater=t||Yb}var Wv=Uv.prototype=new Zb;Wv.constructor=Uv;Gb(Wv,us.prototype);Wv.isPureReactComponent=!0;var Bb=Array.isArray;function Bv(){}var rt={H:null,A:null,T:null,S:null},Jb=Object.prototype.hasOwnProperty;function Yv(e,n,t){var a=t.ref;return{$$typeof:zv,type:e,key:n,ref:a!==void 0?a:null,props:t}}function yp(e,n){return Yv(e.type,n,e.props)}function Gv(e){return typeof e=="object"&&e!==null&&e.$$typeof===zv}function bp(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(t){return n[t]})}var zb=/\/+/g;function Nv(e,n){return typeof e=="object"&&e!==null&&e.key!=null?bp(""+e.key):n.toString(36)}function wp(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Bv,Bv):(e.status="pending",e.then(function(n){e.status==="pending"&&(e.status="fulfilled",e.value=n)},function(n){e.status==="pending"&&(e.status="rejected",e.reason=n)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function cs(e,n,t,a,c){var f=typeof e;(f==="undefined"||f==="boolean")&&(e=null);var d=!1;if(e===null)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(e.$$typeof){case zv:case ip:d=!0;break;case Wb:return d=e._init,cs(d(e._payload),n,t,a,c)}}if(d)return c=c(e),d=a===""?"."+Nv(e,0):a,Bb(c)?(t="",d!=null&&(t=d.replace(zb,"$&/")+"/"),cs(c,n,t,"",function(w){return w})):c!=null&&(Gv(c)&&(c=yp(c,t+(c.key==null||e&&e.key===c.key?"":(""+c.key).replace(zb,"$&/")+"/")+d)),n.push(c)),1;d=0;var T=a===""?".":a+":";if(Bb(e))for(var b=0;b<e.length;b++)a=e[b],f=T+Nv(a,b),d+=cs(a,n,t,f,c);else if(b=vp(e),typeof b=="function")for(e=b.call(e),b=0;!(a=e.next()).done;)a=a.value,f=T+Nv(a,b++),d+=cs(a,n,t,f,c);else if(f==="object"){if(typeof e.then=="function")return cs(wp(e),n,t,a,c);throw n=String(e),Error("Objects are not valid as a React child (found: "+(n==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.")}return d}function kd(e,n,t){if(e==null)return e;var a=[],c=0;return cs(e,a,"","",function(f){return n.call(t,f,c++)}),a}function Tp(e){if(e._status===-1){var n=e._result;n=n(),n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var Ub=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},pp={map:kd,forEach:function(e,n,t){kd(e,function(){n.apply(this,arguments)},t)},count:function(e){var n=0;return kd(e,function(){n++}),n},toArray:function(e){return kd(e,function(n){return n})||[]},only:function(e){if(!Gv(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Pe.Activity=gp;Pe.Children=pp;Pe.Component=us;Pe.Fragment=ap;Pe.Profiler=cp;Pe.PureComponent=Uv;Pe.StrictMode=op;Pe.Suspense=hp;Pe.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=rt;Pe.__COMPILER_RUNTIME={__proto__:null,c:function(e){return rt.H.useMemoCache(e)}};Pe.cache=function(e){return function(){return e.apply(null,arguments)}};Pe.cacheSignal=function(){return null};Pe.cloneElement=function(e,n,t){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=Gb({},e.props),c=e.key;if(n!=null)for(f in n.key!==void 0&&(c=""+n.key),n)!Jb.call(n,f)||f==="key"||f==="__self"||f==="__source"||f==="ref"&&n.ref===void 0||(a[f]=n[f]);var f=arguments.length-2;if(f===1)a.children=t;else if(1<f){for(var d=Array(f),T=0;T<f;T++)d[T]=arguments[T+2];a.children=d}return Yv(e.type,c,a)};Pe.createContext=function(e){return e={$$typeof:sp,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:up,_context:e},e};Pe.createElement=function(e,n,t){var a,c={},f=null;if(n!=null)for(a in n.key!==void 0&&(f=""+n.key),n)Jb.call(n,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(c[a]=n[a]);var d=arguments.length-2;if(d===1)c.children=t;else if(1<d){for(var T=Array(d),b=0;b<d;b++)T[b]=arguments[b+2];c.children=T}if(e&&e.defaultProps)for(a in d=e.defaultProps,d)c[a]===void 0&&(c[a]=d[a]);return Yv(e,f,c)};Pe.createRef=function(){return{current:null}};Pe.forwardRef=function(e){return{$$typeof:fp,render:e}};Pe.isValidElement=Gv;Pe.lazy=function(e){return{$$typeof:Wb,_payload:{_status:-1,_result:e},_init:Tp}};Pe.memo=function(e,n){return{$$typeof:dp,type:e,compare:n===void 0?null:n}};Pe.startTransition=function(e){var n=rt.T,t={};rt.T=t;try{var a=e(),c=rt.S;c!==null&&c(t,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Bv,Ub)}catch(f){Ub(f)}finally{n!==null&&t.types!==null&&(n.types=t.types),rt.T=n}};Pe.unstable_useCacheRefresh=function(){return rt.H.useCacheRefresh()};Pe.use=function(e){return rt.H.use(e)};Pe.useActionState=function(e,n,t){return rt.H.useActionState(e,n,t)};Pe.useCallback=function(e,n){return rt.H.useCallback(e,n)};Pe.useContext=function(e){return rt.H.useContext(e)};Pe.useDebugValue=function(){};Pe.useDeferredValue=function(e,n){return rt.H.useDeferredValue(e,n)};Pe.useEffect=function(e,n){return rt.H.useEffect(e,n)};Pe.useEffectEvent=function(e){return rt.H.useEffectEvent(e)};Pe.useId=function(){return rt.H.useId()};Pe.useImperativeHandle=function(e,n,t){return rt.H.useImperativeHandle(e,n,t)};Pe.useInsertionEffect=function(e,n){return rt.H.useInsertionEffect(e,n)};Pe.useLayoutEffect=function(e,n){return rt.H.useLayoutEffect(e,n)};Pe.useMemo=function(e,n){return rt.H.useMemo(e,n)};Pe.useOptimistic=function(e,n){return rt.H.useOptimistic(e,n)};Pe.useReducer=function(e,n,t){return rt.H.useReducer(e,n,t)};Pe.useRef=function(e){return rt.H.useRef(e)};Pe.useState=function(e){return rt.H.useState(e)};Pe.useSyncExternalStore=function(e,n,t){return rt.H.useSyncExternalStore(e,n,t)};Pe.useTransition=function(){return rt.H.useTransition()};Pe.version="19.2.4"});var Vb=Ra((ke,Sd)=>{"use strict";process.env.NODE_ENV!=="production"&&function(){function e(C,O){Object.defineProperty(a.prototype,C,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",O[0],O[1])}})}function n(C){return C===null||typeof C!="object"?null:(C=Zl&&C[Zl]||C["@@iterator"],typeof C=="function"?C:null)}function t(C,O){C=(C=C.constructor)&&(C.displayName||C.name)||"ReactClass";var Z=C+"."+O;ll[Z]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",O,C),ll[Z]=!0)}function a(C,O,Z){this.props=C,this.context=O,this.refs=rn,this.updater=Z||me}function c(){}function f(C,O,Z){this.props=C,this.context=O,this.refs=rn,this.updater=Z||me}function d(){}function T(C){return""+C}function b(C){try{T(C);var O=!1}catch{O=!0}if(O){O=console;var Z=O.error,$=typeof Symbol=="function"&&Symbol.toStringTag&&C[Symbol.toStringTag]||C.constructor.name||"Object";return Z.call(O,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",$),T(C)}}function w(C){if(C==null)return null;if(typeof C=="function")return C.$$typeof===_n?null:C.displayName||C.name||null;if(typeof C=="string")return C;switch(C){case lt:return"Fragment";case bn:return"Profiler";case Mn:return"StrictMode";case mt:return"Suspense";case _e:return"SuspenseList";case br:return"Activity"}if(typeof C=="object")switch(typeof C.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),C.$$typeof){case Me:return"Portal";case Ge:return C.displayName||"Context";case ae:return(C._context.displayName||"Context")+".Consumer";case Bt:var O=C.render;return C=C.displayName,C||(C=O.displayName||O.name||"",C=C!==""?"ForwardRef("+C+")":"ForwardRef"),C;case Ee:return O=C.displayName||null,O!==null?O:w(C.type)||"Memo";case it:O=C._payload,C=C._init;try{return w(C(O))}catch{}}return null}function S(C){if(C===lt)return"<>";if(typeof C=="object"&&C!==null&&C.$$typeof===it)return"<...>";try{var O=w(C);return O?"<"+O+">":"<...>"}catch{return"<...>"}}function E(){var C=we.A;return C===null?null:C.getOwner()}function x(){return Error("react-stack-top-frame")}function k(C){if(Ln.call(C,"key")){var O=Object.getOwnPropertyDescriptor(C,"key").get;if(O&&O.isReactWarning)return!1}return C.key!==void 0}function Q(C,O){function Z(){Vn||(Vn=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",O))}Z.isReactWarning=!0,Object.defineProperty(C,"key",{get:Z,configurable:!0})}function X(){var C=w(this.type);return Kn[C]||(Kn[C]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),C=this.props.ref,C!==void 0?C:null}function V(C,O,Z,$,re,ye){var be=Z.ref;return C={$$typeof:Fe,type:C,key:O,props:Z,_owner:$},(be!==void 0?be:null)!==null?Object.defineProperty(C,"ref",{enumerable:!1,get:X}):Object.defineProperty(C,"ref",{enumerable:!1,value:null}),C._store={},Object.defineProperty(C._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(C,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(C,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:re}),Object.defineProperty(C,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ye}),Object.freeze&&(Object.freeze(C.props),Object.freeze(C)),C}function ee(C,O){return O=V(C.type,O,C.props,C._owner,C._debugStack,C._debugTask),C._store&&(O._store.validated=C._store.validated),O}function j(C){ue(C)?C._store&&(C._store.validated=1):typeof C=="object"&&C!==null&&C.$$typeof===it&&(C._payload.status==="fulfilled"?ue(C._payload.value)&&C._payload.value._store&&(C._payload.value._store.validated=1):C._store&&(C._store.validated=1))}function ue(C){return typeof C=="object"&&C!==null&&C.$$typeof===Fe}function Re(C){var O={"=":"=0",":":"=2"};return"$"+C.replace(/[=:]/g,function(Z){return O[Z]})}function se(C,O){return typeof C=="object"&&C!==null&&C.key!=null?(b(C.key),Re(""+C.key)):O.toString(36)}function U(C){switch(C.status){case"fulfilled":return C.value;case"rejected":throw C.reason;default:switch(typeof C.status=="string"?C.then(d,d):(C.status="pending",C.then(function(O){C.status==="pending"&&(C.status="fulfilled",C.value=O)},function(O){C.status==="pending"&&(C.status="rejected",C.reason=O)})),C.status){case"fulfilled":return C.value;case"rejected":throw C.reason}}throw C}function Ye(C,O,Z,$,re){var ye=typeof C;(ye==="undefined"||ye==="boolean")&&(C=null);var be=!1;if(C===null)be=!0;else switch(ye){case"bigint":case"string":case"number":be=!0;break;case"object":switch(C.$$typeof){case Fe:case Me:be=!0;break;case it:return be=C._init,Ye(be(C._payload),O,Z,$,re)}}if(be){be=C,re=re(be);var Ke=$===""?"."+se(be,0):$;return nn(re)?(Z="",Ke!=null&&(Z=Ke.replace(qn,"$&/")+"/"),Ye(re,O,Z,"",function(Ne){return Ne})):re!=null&&(ue(re)&&(re.key!=null&&(be&&be.key===re.key||b(re.key)),Z=ee(re,Z+(re.key==null||be&&be.key===re.key?"":(""+re.key).replace(qn,"$&/")+"/")+Ke),$!==""&&be!=null&&ue(be)&&be.key==null&&be._store&&!be._store.validated&&(Z._store.validated=2),re=Z),O.push(re)),1}if(be=0,Ke=$===""?".":$+":",nn(C))for(var xe=0;xe<C.length;xe++)$=C[xe],ye=Ke+se($,xe),be+=Ye($,O,Z,ye,re);else if(xe=n(C),typeof xe=="function")for(xe===C.entries&&(cn||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),cn=!0),C=xe.call(C),xe=0;!($=C.next()).done;)$=$.value,ye=Ke+se($,xe++),be+=Ye($,O,Z,ye,re);else if(ye==="object"){if(typeof C.then=="function")return Ye(U(C),O,Z,$,re);throw O=String(C),Error("Objects are not valid as a React child (found: "+(O==="[object Object]"?"object with keys {"+Object.keys(C).join(", ")+"}":O)+"). If you meant to render a collection of children, use an array instead.")}return be}function en(C,O,Z){if(C==null)return C;var $=[],re=0;return Ye(C,$,"","",function(ye){return O.call(Z,ye,re++)}),$}function ve(C){if(C._status===-1){var O=C._ioInfo;O!=null&&(O.start=O.end=performance.now()),O=C._result;var Z=O();if(Z.then(function(re){if(C._status===0||C._status===-1){C._status=1,C._result=re;var ye=C._ioInfo;ye!=null&&(ye.end=performance.now()),Z.status===void 0&&(Z.status="fulfilled",Z.value=re)}},function(re){if(C._status===0||C._status===-1){C._status=2,C._result=re;var ye=C._ioInfo;ye!=null&&(ye.end=performance.now()),Z.status===void 0&&(Z.status="rejected",Z.reason=re)}}),O=C._ioInfo,O!=null){O.value=Z;var $=Z.displayName;typeof $=="string"&&(O.name=$)}C._status===-1&&(C._status=0,C._result=Z)}if(C._status===1)return O=C._result,O===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
3
3
 
4
4
  Your code should look like:
5
5
  const MyComponent = lazy(() => import('./MyComponent'))
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{j as h}from"./chunk-WJKE6XHF.js";import{m as v}from"./chunk-BQT5RJZB.js";import{d as B}from"./chunk-5WJ6AUNY.js";var $={};B($,{CommandBuilder:()=>p,CommandError:()=>l,ProcessGroup:()=>f,exec:()=>b,parseCommand:()=>g,spawnPty:()=>R});var l=class extends Error{constructor(e,n,s,i){super(e);this.command=n;this.code=s;this.stderr=i;this.name="CommandError"}};var m=new TextDecoder,p=class r{#t;#r;#e;constructor(t,e=[],n={}){this.#t=t,this.#r=e,this.#e={throwOnError:!0,stdout:"piped",stderr:"piped",...n}}cwd(t){return new r(this.#t,this.#r,{...this.#e,cwd:t})}env(t,e){let n=this.#e.env??{},s;return typeof t=="string"&&e!==void 0?s={...n,[t]:e}:t!==null&&typeof t=="object"?s={...n,...t}:s=n,new r(this.#t,this.#r,{...this.#e,env:s})}stdin(t){return new r(this.#t,this.#r,{...this.#e,stdin:t})}stdout(t){return new r(this.#t,this.#r,{...this.#e,stdout:t})}stderr(t){return new r(this.#t,this.#r,{...this.#e,stderr:t})}timeout(t){return new r(this.#t,this.#r,{...this.#e,timeout:t})}noThrow(){return new r(this.#t,this.#r,{...this.#e,throwOnError:!1})}quiet(){return new r(this.#t,this.#r,{...this.#e,stdout:"null",stderr:"null"})}printCommand(){let t=[this.#t,...this.#r].join(" ");return console.log(`$ ${t}`),this}async spawn(){let{runtime:t}=h,e=await t.exec.spawn(this.#t,this.#r,{cwd:this.#e.cwd,env:this.#e.env,stdin:this.#e.stdin,stdout:this.#e.stdout,stderr:this.#e.stderr});if(!e.success&&this.#e.throwOnError===!0){let n=m.decode(e.stderr);throw new l(`Command failed with exit code ${e.code}: ${this.#t}`,this.#t,e.code,n)}return e}async text(t="stdout"){let e=await this.spawn();switch(t){case"stdout":return m.decode(e.stdout).trim();case"stderr":return m.decode(e.stderr).trim();case"combined":return(m.decode(e.stdout)+m.decode(e.stderr)).trim()}}async json(){let t=await this.text();return JSON.parse(t)}async lines(){let t=await this.text();return t===""?[]:t.split(`
2
+ import{j as h}from"./chunk-6DBKPC2O.js";import{m as v}from"./chunk-6G6UVWJN.js";import{d as B}from"./chunk-5WJ6AUNY.js";var $={};B($,{CommandBuilder:()=>p,CommandError:()=>l,ProcessGroup:()=>f,exec:()=>b,parseCommand:()=>g,spawnPty:()=>R});var l=class extends Error{constructor(e,n,s,i){super(e);this.command=n;this.code=s;this.stderr=i;this.name="CommandError"}};var m=new TextDecoder,p=class r{#t;#r;#e;constructor(t,e=[],n={}){this.#t=t,this.#r=e,this.#e={throwOnError:!0,stdout:"piped",stderr:"piped",...n}}cwd(t){return new r(this.#t,this.#r,{...this.#e,cwd:t})}env(t,e){let n=this.#e.env??{},s;return typeof t=="string"&&e!==void 0?s={...n,[t]:e}:t!==null&&typeof t=="object"?s={...n,...t}:s=n,new r(this.#t,this.#r,{...this.#e,env:s})}stdin(t){return new r(this.#t,this.#r,{...this.#e,stdin:t})}stdout(t){return new r(this.#t,this.#r,{...this.#e,stdout:t})}stderr(t){return new r(this.#t,this.#r,{...this.#e,stderr:t})}timeout(t){return new r(this.#t,this.#r,{...this.#e,timeout:t})}noThrow(){return new r(this.#t,this.#r,{...this.#e,throwOnError:!1})}quiet(){return new r(this.#t,this.#r,{...this.#e,stdout:"null",stderr:"null"})}printCommand(){let t=[this.#t,...this.#r].join(" ");return console.log(`$ ${t}`),this}async spawn(){let{runtime:t}=h,e=await t.exec.spawn(this.#t,this.#r,{cwd:this.#e.cwd,env:this.#e.env,stdin:this.#e.stdin,stdout:this.#e.stdout,stderr:this.#e.stderr});if(!e.success&&this.#e.throwOnError===!0){let n=m.decode(e.stderr);throw new l(`Command failed with exit code ${e.code}: ${this.#t}`,this.#t,e.code,n)}return e}async text(t="stdout"){let e=await this.spawn();switch(t){case"stdout":return m.decode(e.stdout).trim();case"stderr":return m.decode(e.stderr).trim();case"combined":return(m.decode(e.stdout)+m.decode(e.stderr)).trim()}}async json(){let t=await this.text();return JSON.parse(t)}async lines(){let t=await this.text();return t===""?[]:t.split(`
3
3
  `)}async bytes(){return(await this.spawn()).stdout}async code(){return(await this.noThrow().spawn()).code}pipe(t){return new w([this,t])}child(){let{runtime:t}=h;return t.exec.spawnChild(this.#t,this.#r,{cwd:this.#e.cwd,env:this.#e.env,stdin:this.#e.stdin??"piped",stdout:this.#e.stdout??"piped",stderr:this.#e.stderr??"piped"})}},w=class r{#t;constructor(t){this.#t=t}pipe(t){return new r([...this.#t,t])}async text(){let t="";for(let e of this.#t){let n=await e.spawn();t=m.decode(n.stdout)}return t.trim()}async lines(){let t=await this.text();return t===""?[]:t.split(`
4
4
  `)}};var g=(r,t)=>{let e=[];for(let s=0;s<r.length;s++){let i=r[s];if(i!==void 0&&e.push(i),s<t.length){let d=t[s];Array.isArray(d)?e.push(d.map(c=>S(String(c))).join(" ")):d!=null&&e.push(S(String(d)))}}let n=e.join("").trim();return A(n)},S=r=>/[\s"'\\$`]/.test(r)?`'${r.replace(/'/g,"'\\''")}'`:r,A=r=>{let t=[],e="",n=!1,s=!1,i=!1;for(let c=0;c<r.length;c++){let a=r[c];if(i){e+=a,i=!1;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!s){n=!n;continue}if(a==='"'&&!n){s=!s;continue}if(a===" "&&!n&&!s){e.length>0&&(t.push(e),e="");continue}e+=a}e.length>0&&t.push(e);let d=t[0];return d===void 0?["",[]]:[d,t.slice(1)]};var b=(r,...t)=>{let[e,n]=g(r,t);return new p(e,n)};var M=/\x04/g,k=/^Script (started|done),? ?(output file is )?[^\n]*\n?/gm,I=r=>r.replace(M,"").replace(k,""),L=(r,t)=>{let e=v();return e==="darwin"?{cmd:"script",args:["-q","/dev/null",r,...t],usesScript:!0}:e==="linux"?{cmd:"script",args:["-qc",t.length>0?`${r} ${t.map(s=>`'${s.replace(/'/g,"'\\''")}'`).join(" ")}`:r,"/dev/null"],usesScript:!0}:{cmd:r,args:t,usesScript:!1}},R=async r=>{let{runtime:t}=h,e=r.args!==void 0?[...r.args]:[],n=L(r.command,e),s={...r.env,TERM:"xterm-256color",COLUMNS:String(r.cols??80),LINES:String(r.rows??24)},i=t.exec.spawnChild(n.cmd,[...n.args],{cwd:r.cwd,env:s,stdin:"piped",stdout:"piped",stderr:"piped"}),d=new TextDecoder,c=new TextEncoder,a=[],C=!1,T=o=>{let u=n.usesScript?I(o):o;if(u.length!==0)for(let y of a)y(u)},x=async o=>{let u=o.getReader();try{for(;;){let{done:y,value:E}=await u.read();if(y)break;T(d.decode(E))}}catch{}finally{u.releaseLock()}},O=()=>{C||(C=!0,i.stdout&&x(i.stdout),i.stderr&&x(i.stderr))},P=null;return i.stdin&&(P=i.stdin.getWriter()),{onData(o){a.push(o),O()},write(o){P?.write(c.encode(o)).catch(()=>{})},resize(o,u){},kill(o){try{i.kill(o==="SIGKILL"?"SIGKILL":"SIGTERM")}catch{}},get pid(){return i.pid},get exitCode(){return i.status.then(o=>o.code)}}};var f=class{#t=new Map;get size(){return this.#t.size}add(t,e){let n={id:t,process:e,active:!0};return this.#t.set(t,n),e.exitCode.then(()=>{n.active=!1}).catch(()=>{n.active=!1}),n}get(t){return this.#t.get(t)}remove(t){let e=this.#t.get(t);return e===void 0?!1:(e.active&&e.process.kill(),this.#t.delete(t),!0)}list(){return[...this.#t.values()]}async killAll(t="SIGTERM"){for(let s of this.#t.values())s.active&&s.process.kill(t);let e=3e3,n=Date.now();for(let s of this.#t.values())if(s.active){let i=e-(Date.now()-n);i>0&&await Promise.race([s.process.exitCode,new Promise(d=>setTimeout(d,i))])}}forceKillAll(){for(let t of this.#t.values())t.active&&(t.process.kill("SIGKILL"),t.active=!1);this.#t.clear()}};export{l as a,p as b,g as c,b as d,R as e,f,$ as g};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{b as F,c as p}from"./chunk-5PH7JRXR.js";import{a as g,c as h}from"./chunk-LGNGLAV3.js";import{o as c}from"./chunk-ZER2RYWJ.js";import{a as x}from"./chunk-MG65QJY6.js";import{g as d}from"./chunk-FFWPJP7A.js";var{ctx:m,output:E}=g(),b=e=>{let y=async s=>{let i={root:s?.root??".",fix:s?.fix??!1,exclude:s?.exclude??[],...e.defaults,...s},r=s?._changedFiles,t={root:i.root,extensions:e.extensions,exclude:i.exclude,includeOnly:r!==void 0&&r.length>0?r:void 0},l=await F(t),n=[],u=[];if(e.checkAll!==void 0){let o=await e.checkAll(l,i);n.push(...o)}else if(e.checkFile!==void 0)for(let o of l){let a=await p(o),f=e.checkFile(o,a,i);n.push(...f)}if(i.fix&&e.canFix&&e.fixFile!==void 0)for(let o of l){let a=await p(o);if(a===void 0)continue;let f=e.fixFile(o,a,i);f!==void 0&&u.push(f)}return{name:e.name,issues:n,mutations:u,filesChecked:l.length}},k={name:e.name,description:e.description,requiredStacks:e.stacks,async validate(s){let i=s.options?.fix,r=s.options??{},t=await y({root:s.root,fix:i??!1,exclude:[],...r});return{name:e.name,passed:t.issues.length===0,issues:t.issues.map(l=>({severity:"error",message:`${l.message}${l.fixed?" (fixed)":""}`,file:l.path,line:l.line})),stats:{filesChecked:t.filesChecked,issuesFound:t.issues.length,fixedCount:t.mutations.length}}}},T=async s=>{let i=e.canFix&&s.flags.fix===!0,r=s.flags.root??".",t=s.flags.exclude,l=t!==void 0?Array.isArray(t)?t:[t]:[];try{let n=await y({root:r,fix:i,exclude:l});if(n.mutations.length>0){let{writeMutations:o}=await import("./file-tools-shared-BGQUI7QP.js"),a=await o(n.mutations);c.success(m,`Fixed ${a} file(s) for ${e.name}.`)}if(n.issues.length===0&&n.mutations.length===0)return c.success(m,`${e.name}: ${n.filesChecked} files checked, no issues.`),d.ok(void 0);let u=n.issues.filter(o=>!o.fixed);if(u.length>0){for(let o of u){let a=o.line!==void 0?`${o.path}:${o.line}`:o.path;c.error(m,`${a}: ${o.message}`)}return d.fail({exitCode:1})}return d.ok(void 0)}catch(n){return c.error(m,n instanceof Error?n.message:String(n)),d.fail({exitCode:1})}};return{config:e,run:y,validator:k,main:async s=>{let i=e.canFix?["fix"]:[],r=x(s??[],{boolean:[...i,"help"],string:["root","exclude"],alias:{h:"help"}});if(r.help)return console.log(`eser codebase ${e.name} \u2014 ${e.description}
2
+ import{b as F,c as p}from"./chunk-KHBIOZJE.js";import{a as g,c as h}from"./chunk-JTSRGXS4.js";import{o as c}from"./chunk-4TTJVJEI.js";import{a as x}from"./chunk-MG65QJY6.js";import{g as d}from"./chunk-FFWPJP7A.js";var{ctx:m,output:E}=g(),b=e=>{let y=async s=>{let i={root:s?.root??".",fix:s?.fix??!1,exclude:s?.exclude??[],...e.defaults,...s},r=s?._changedFiles,t={root:i.root,extensions:e.extensions,exclude:i.exclude,includeOnly:r!==void 0&&r.length>0?r:void 0},l=await F(t),n=[],u=[];if(e.checkAll!==void 0){let o=await e.checkAll(l,i);n.push(...o)}else if(e.checkFile!==void 0)for(let o of l){let a=await p(o),f=e.checkFile(o,a,i);n.push(...f)}if(i.fix&&e.canFix&&e.fixFile!==void 0)for(let o of l){let a=await p(o);if(a===void 0)continue;let f=e.fixFile(o,a,i);f!==void 0&&u.push(f)}return{name:e.name,issues:n,mutations:u,filesChecked:l.length}},k={name:e.name,description:e.description,requiredStacks:e.stacks,async validate(s){let i=s.options?.fix,r=s.options??{},t=await y({root:s.root,fix:i??!1,exclude:[],...r});return{name:e.name,passed:t.issues.length===0,issues:t.issues.map(l=>({severity:"error",message:`${l.message}${l.fixed?" (fixed)":""}`,file:l.path,line:l.line})),stats:{filesChecked:t.filesChecked,issuesFound:t.issues.length,fixedCount:t.mutations.length}}}},T=async s=>{let i=e.canFix&&s.flags.fix===!0,r=s.flags.root??".",t=s.flags.exclude,l=t!==void 0?Array.isArray(t)?t:[t]:[];try{let n=await y({root:r,fix:i,exclude:l});if(n.mutations.length>0){let{writeMutations:o}=await import("./file-tools-shared-YKDNDDHR.js"),a=await o(n.mutations);c.success(m,`Fixed ${a} file(s) for ${e.name}.`)}if(n.issues.length===0&&n.mutations.length===0)return c.success(m,`${e.name}: ${n.filesChecked} files checked, no issues.`),d.ok(void 0);let u=n.issues.filter(o=>!o.fixed);if(u.length>0){for(let o of u){let a=o.line!==void 0?`${o.path}:${o.line}`:o.path;c.error(m,`${a}: ${o.message}`)}return d.fail({exitCode:1})}return d.ok(void 0)}catch(n){return c.error(m,n instanceof Error?n.message:String(n)),d.fail({exitCode:1})}};return{config:e,run:y,validator:k,main:async s=>{let i=e.canFix?["fix"]:[],r=x(s??[],{boolean:[...i,"help"],string:["root","exclude"],alias:{h:"help"}});if(r.help)return console.log(`eser codebase ${e.name} \u2014 ${e.description}
3
3
  `),console.log(`Usage: eser codebase ${e.name} [options]
4
4
  `),console.log("Options:"),e.canFix&&console.log(" --fix Auto-fix issues"),console.log(" --root <dir> Root directory (default: .)"),console.log(" --exclude <p> Exclude pattern"),console.log(" -h, --help Show this help"),d.ok(void 0);let t=h(e.name,r);return await T(t)}}};export{b as a};
@@ -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-26ZFSXSK.js";import{b as i}from"./chunk-NBA6EFWU.js";import{i as s}from"./chunk-WJKE6XHF.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-WJKE6XHF.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 r}from"./chunk-JLRVMMMH.js";var a="\uFEFF",i=r({name:"validate-bom",description:"Remove UTF-8 byte order markers",canFix:!0,stacks:[],defaults:{},checkFile(e,t){return t===void 0?[]:t.startsWith(a)?[{path:e.path,message:"file has UTF-8 BOM"}]:[]},fixFile(e,t){if(!t.startsWith(a))return;let o=t.slice(1);return{path:e.path,oldContent:t,newContent:o}}}),u=i.run,d=i.validator,m=i.main;export{i as a,u as b,d as c,m as d};
2
+ import{a as r}from"./chunk-HVQK35SO.js";var a="\uFEFF",i=r({name:"validate-bom",description:"Remove UTF-8 byte order markers",canFix:!0,stacks:[],defaults:{},checkFile(e,t){return t===void 0?[]:t.startsWith(a)?[{path:e.path,message:"file has UTF-8 BOM"}]:[]},fixFile(e,t){if(!t.startsWith(a))return;let o=t.slice(1);return{path:e.path,oldContent:t,newContent:o}}}),u=i.run,d=i.validator,m=i.main;export{i as a,u as b,d as c,m as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{b as a}from"./chunk-ZER2RYWJ.js";import{f as i,h as o,k as n}from"./chunk-ZC4F4MYU.js";import{i as r}from"./chunk-WJKE6XHF.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-4TTJVJEI.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,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as s}from"./chunk-JLRVMMMH.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-HVQK35SO.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,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-BLXGL5MA.js";import{i as o}from"./chunk-WJKE6XHF.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};
@@ -0,0 +1,3 @@
1
+ import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
+ import{i as r}from"./chunk-6DBKPC2O.js";var o=()=>{let e=r.env.get("XDG_CONFIG_HOME");return e!==void 0&&e.length>0?`${e}/eser/noskills`:`${r.env.get("HOME")??r.env.get("USERPROFILE")??"~"}/.config/eser/noskills`},i=()=>`${o()}/user.json`,a=async e=>{let t=i();try{let n=await r.fs.readTextFile(t),s=JSON.parse(n);return typeof s.name!="string"||s.name.length===0?null:{name:s.name,email:s.email??""}}catch{return null}},u=async e=>{let t=o();await r.fs.mkdir(t,{recursive:!0}),await r.fs.writeTextFile(i(),JSON.stringify({name:e.name,email:e.email},null,2)+`
3
+ `)},g=async()=>{try{return await r.fs.remove(i()),!0}catch{return!1}},l=async()=>{try{let e=(await r.exec.exec("git",["config","user.name"])).trim(),t=(await r.exec.exec("git",["config","user.email"])).trim();return e.length===0?null:{name:e,email:t}}catch{return null}},f=e=>e.email.length>0?`${e.name} <${e.email}>`:e.name,U=e=>e.name,c=()=>({name:"Unknown User",email:""}),x=async e=>{let t=await a();if(t!==null)return t;let n=await l();return n!==null?n:c()};export{i as a,a as b,u as c,g as d,l as e,f,U as g,x 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-WJKE6XHF.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,11 +1,11 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{c as y}from"./chunk-YW377352.js";import{a as b}from"./chunk-OAT2D23A.js";import{i as n}from"./chunk-WJKE6XHF.js";var S="<!-- noskills:start -->",g="<!-- noskills:end -->",Y=(e,t,s="npx eser noskills")=>{let o=[S,"## noskills orchestrator","","This project uses noskills for state-driven orchestration.","Do NOT read `.eser/rules/`, `.eser/specs/`, or concern files directly.","noskills gives you exactly what you need via JSON output.","","### Protocol","",` ${s} spec <name> next # get current instruction`,` ${s} spec <name> next --answer="your response" # submit result and advance`,"","Every noskills command that operates on a spec MUST include `spec <name>`.","Never omit it. Use `"+s+" spec list` to see available specs.","","### Why noskills calls matter","","noskills is not a form to fill out. It is a live state machine that the user","watches in real-time. Every `"+s+" spec <name> next --answer` call:","","- Updates the spec file on disk (the user sees it change)","- Updates the terminal dashboard if `noskills watch` is running","- Advances the state machine to the next phase","- Records the decision permanently in the project history","","When you batch-submit answers or backfill discovery responses yourself,","the user sees nothing happening \u2014 then suddenly everything jumps forward.","This defeats the purpose.","","Call noskills ONCE per interaction. Ask the user ONE question. Wait for","their answer. Submit it. Ask the next. The user is watching every step.","Do NOT pre-fill answers. Do NOT batch multiple answers. Do NOT answer","discovery questions yourself \u2014 the user's input is the data.","","### When to call noskills next","",`You MUST call \`${s} next\` in these situations:`,"","1. At the **START** of every conversation (first thing you do)","2. **BEFORE** creating or modifying any file (to verify you have an active task)","3. **AFTER** completing a logical unit of work (to report progress)","4. When you encounter a **DECISION** that affects architecture or scope","5. When you are **UNSURE** what to do next","","NEVER proceed with implementation without checking noskills first.","NEVER make architectural decisions independently \u2014 noskills routes them to the user."];if((t?.allowGit??!1)||o.push("","### Git is read-only","","You MUST NOT run git write commands: commit, add, push, checkout, stash,","reset, merge, rebase, cherry-pick. The user controls git. You control files.","You MAY read from git: log, diff, status, show, blame."),o.push("","### Interactive choices","","When noskills output contains `interactiveOptions`, you MUST present them","using the AskUserQuestion tool. NEVER present options in prose.","","This is not optional. If you ask a question without AskUserQuestion when","interactiveOptions are present, you are violating protocol.","","Pass interactiveOptions as the `options` array in AskUserQuestion.","Use the `commandMap` to resolve the user's selection to a CLI command.","","### Convention discovery","","When you discover a pattern, receive a correction, or identify a recurring",'preference from the user, ask: "Should this be a permanent rule for this',`project, or just for this task?" If permanent, run: \`${s} rule add`,'"<description>"`. If just this task, note it and move on.',"Never write to `.eser/rules/` directly.","","### Pre-discovery research","","When starting a new spec, noskills may flag technologies that need","research. Before asking discovery questions, search for current versions","and API status of flagged technologies. Report findings to the user.","Your training data may be outdated \u2014 always verify.","","### Spec splitting","","When noskills suggests splitting a spec, present the options and wait for the","user's decision. Never split a spec without explicit user approval.","","### Decision principle: Explicit > Clever","","You NEVER skip steps, bypass questions, or make assumptions on behalf of the user.","- Discovery questions \u2192 ask the user, don't answer yourself","- Classification \u2192 ask the user, don't infer","- Spec approval \u2192 ask the user, don't auto-approve","- Task refinement \u2192 ask the user, don't self-assign","- Rule promotion \u2192 ask the user, don't decide",`If you think something can be skipped, ASK "would you like to skip this?" \u2014 don't skip it.`,"","### Command execution","","When told to run a noskills command, execute it IMMEDIATELY. Do not explore,","research, read source code, or plan first. The command output contains all the","context you need. Exploring noskills internals wastes tokens and delays the user.","","### JSON output","","noskills returns JSON with a `phase` field and phase-specific instructions.","The `meta` block contains resume context - use it to orient yourself,","especially after compaction or at the start of a new session.","Follow the `instruction` field. Use `transition` commands to advance state.","","### Phase progress","","Every noskills output includes a roadmap showing the current phase.","Display it to the user. At critical transitions (approve, start execution),","noskills shows a gate with an explicit action. Present these prominently.","","### Code quality rules","","These rules apply during spec execution:","- After every file edit, run type-check and lint before reporting success","- Files over 500 LOC: read in chunks, never assume single read = full file","- If search returns few results, re-run narrower \u2014 assume truncation","- Re-read every file before and after editing","- Before refactoring large files, clean dead code first (separate commit)","","### Execution commitment","","Once a spec enters EXECUTING, complete it. Do not suggest mid-execution",'checkpoints, pauses, or "should we stop here?" questions.',"","noskills encourages small, meaningful specs defined during discovery.","If a spec is well-scoped, there is no reason to stop halfway \u2014 half-done","delivers nothing. If it feels too large mid-execution, that means","discovery should have split it. Finish this one, improve the next."),e.length>0){o.push("","### Active Rules","");for(let i of e)o.push(`- ${i}`)}return o.push(g),o.join(`
2
+ import{c as y}from"./chunk-RBU3HF66.js";import{a as b}from"./chunk-UEMWZOIU.js";import{i as n}from"./chunk-6DBKPC2O.js";var S="<!-- noskills:start -->",g="<!-- noskills:end -->",Y=(e,t,s="npx eser noskills")=>{let o=[S,"## noskills orchestrator","","This project uses noskills for state-driven orchestration.","Do NOT read `.eser/rules/`, `.eser/specs/`, or concern files directly.","noskills gives you exactly what you need via JSON output.","","### Protocol","",` ${s} spec <name> next # get current instruction`,` ${s} spec <name> next --answer="your response" # submit result and advance`,"","Every noskills command that operates on a spec MUST include `spec <name>`.","Never omit it. Use `"+s+" spec list` to see available specs.","","### Why noskills calls matter","","noskills is not a form to fill out. It is a live state machine that the user","watches in real-time. Every `"+s+" spec <name> next --answer` call:","","- Updates the spec file on disk (the user sees it change)","- Updates the terminal dashboard if `noskills watch` is running","- Advances the state machine to the next phase","- Records the decision permanently in the project history","","When you batch-submit answers or backfill discovery responses yourself,","the user sees nothing happening \u2014 then suddenly everything jumps forward.","This defeats the purpose.","","Call noskills ONCE per interaction. Ask the user ONE question. Wait for","their answer. Submit it. Ask the next. The user is watching every step.","Do NOT pre-fill answers. Do NOT batch multiple answers. Do NOT answer","discovery questions yourself \u2014 the user's input is the data.","","### When to call noskills next","",`You MUST call \`${s} next\` in these situations:`,"","1. At the **START** of every conversation (first thing you do)","2. **BEFORE** creating or modifying any file (to verify you have an active task)","3. **AFTER** completing a logical unit of work (to report progress)","4. When you encounter a **DECISION** that affects architecture or scope","5. When you are **UNSURE** what to do next","","NEVER proceed with implementation without checking noskills first.","NEVER make architectural decisions independently \u2014 noskills routes them to the user."];if((t?.allowGit??!1)||o.push("","### Git is read-only","","You MUST NOT run git write commands: commit, add, push, checkout, stash,","reset, merge, rebase, cherry-pick. The user controls git. You control files.","You MAY read from git: log, diff, status, show, blame."),o.push("","### Interactive choices","","When noskills output contains `interactiveOptions`, you MUST present them","using the AskUserQuestion tool. NEVER present options in prose.","","This is not optional. If you ask a question without AskUserQuestion when","interactiveOptions are present, you are violating protocol.","","Pass interactiveOptions as the `options` array in AskUserQuestion.","Use the `commandMap` to resolve the user's selection to a CLI command.","","### Convention discovery","","When you notice a recurring pattern, receive a correction, or discover","a project quirk during any phase:","",'1. Ask: "Should this be a permanent rule?"',`2. If yes: \`${s} rule add "description" --phases=EXECUTING\``,"3. If just this spec: note it and move on","","Corrections are learnings. Capture them as rules so they compound.","Every session should leave the project's rule set slightly better.","Never write to `.eser/rules/` directly.","","### Pre-discovery research","","When starting a new spec, noskills may flag technologies that need","research. Before asking discovery questions, search for current versions","and API status of flagged technologies. Report findings to the user.","Your training data may be outdated \u2014 always verify.","","### Plan-based discovery","","When a spec is created with --from-plan, the first discovery output includes","the plan content. Read it, extract answers for all 6 questions, present them","for user confirmation. The plan is a starting point, not the final answer.","","### Discovery modes","","noskills offers 5 discovery modes selected at the start of each spec:","- full: Standard 6 questions (default)","- validate: Challenge the user's existing plan","- technical-depth: Focus on architecture and integration","- ship-fast: Minimum viable scope","- explore: Think bigger, find opportunities","","### Premise challenge","","After mode selection, challenge 2-4 premises from the spec description.","Present each premise for the user to agree/disagree. Submit as JSON.","","### Alternatives generation","","Before spec draft, propose 2-3 implementation approaches.","User picks one or skips. The selected approach shapes the spec.","","### AI slop prevention","","When implementing UI, avoid these generic AI-generated patterns:","- 3-column grids with icon circles (the most recognizable AI layout)","- Purple gradients, decorative blobs, wavy dividers","- Everything centered, uniform border-radius everywhere",'- Generic hero copy ("Welcome to...", "Unlock the power of...")',"- Cookie-cutter section rhythm","","Every UI element must feel intentional, not generated. If it looks like","every other AI-built site, iterate until it doesn't.","","### Spec splitting","","When noskills suggests splitting a spec, present the options and wait for the","user's decision. Never split a spec without explicit user approval.","","### Decision principle: Explicit > Clever","","You NEVER skip steps, bypass questions, or make assumptions on behalf of the user.","- Discovery questions \u2192 ask the user, don't answer yourself","- Classification \u2192 ask the user, don't infer","- Spec approval \u2192 ask the user, don't auto-approve","- Task refinement \u2192 ask the user, don't self-assign","- Rule promotion \u2192 ask the user, don't decide",`If you think something can be skipped, ASK "would you like to skip this?" \u2014 don't skip it.`,"","### Command execution","","When told to run a noskills command, execute it IMMEDIATELY. Do not explore,","research, read source code, or plan first. The command output contains all the","context you need. Exploring noskills internals wastes tokens and delays the user.","","### JSON output","","noskills returns JSON with a `phase` field and phase-specific instructions.","The `meta` block contains resume context - use it to orient yourself,","especially after compaction or at the start of a new session.","Follow the `instruction` field. Use `transition` commands to advance state.","","### Phase progress","","Every noskills output includes a roadmap showing the current phase.","Display it to the user. At critical transitions (approve, start execution),","noskills shows a gate with an explicit action. Present these prominently.","","### Code quality rules","","These rules apply during spec execution:","- After every file edit, run type-check and lint before reporting success","- Files over 500 LOC: read in chunks, never assume single read = full file","- If search returns few results, re-run narrower \u2014 assume truncation","- Re-read every file before and after editing","- Before refactoring large files, clean dead code first (separate commit)","","### Execution commitment","","Once a spec enters EXECUTING, complete it. Do not suggest mid-execution",'checkpoints, pauses, or "should we stop here?" questions.',"","noskills encourages small, meaningful specs defined during discovery.","If a spec is well-scoped, there is no reason to stop halfway \u2014 half-done","delivers nothing. If it feels too large mid-execution, that means","discovery should have split it. Finish this one, improve the next."),e.length>0){o.push("","### Active Rules","");for(let i of e)o.push(`- ${i}`)}return o.push(g),o.join(`
3
3
  `)},x=async(e,t,s,o="npx eser noskills")=>{let i=`${e}/CLAUDE.md`,r=Y(t,s,o),a;try{a=await n.fs.readTextFile(i);let c=a.indexOf(S),l=a.indexOf(g);c!==-1&&l!==-1?a=a.slice(0,c)+r+a.slice(l+g.length):a=a.trimEnd()+`
4
4
 
5
5
  `+r+`
6
6
  `}catch{a=r+`
7
7
  `}await n.fs.writeTextFile(i,a)};var J=e=>({hooks:{PreToolUse:[{matcher:"Write|Edit|MultiEdit|Bash",hooks:[{type:"command",command:`${e} invoke-hook pre-tool-use`,timeout:5}]}],PostToolUse:[{matcher:"Write|Edit|MultiEdit",hooks:[{type:"command",command:`${e} invoke-hook post-file-write`,timeout:3}]},{matcher:"Bash",hooks:[{type:"command",command:`${e} invoke-hook post-bash`,timeout:3}]}],Stop:[{hooks:[{type:"command",command:`${e} invoke-hook stop`,timeout:10}]}],SessionStart:[{hooks:[{type:"command",command:`${e} invoke-hook session-start`,timeout:5}]}]}}),R=async(e,t="npx eser@latest noskills")=>{let s=`${e}/.claude/settings.json`,o={};try{let a=await n.fs.readTextFile(s);o=JSON.parse(a)}catch{}let i=J(t),r={...o,...i};await n.fs.mkdir(`${e}/.claude`,{recursive:!0}),await n.fs.writeTextFile(s,JSON.stringify(r,null,2)+`
8
- `)};var q=async(e,t)=>{let s=`${e}/.claude/agents`;await n.fs.mkdir(s,{recursive:!0});let o=`---
8
+ `)};var V=async(e,t)=>{let s=`${e}/.claude/agents`;await n.fs.mkdir(s,{recursive:!0});let o=`---
9
9
  name: noskills-executor
10
10
  description: "Executes a single noskills task."
11
11
  tools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS
@@ -60,7 +60,7 @@ When finished, provide a structured JSON summary:
60
60
  \\\`\\\`\\\`
61
61
 
62
62
  The orchestrator will use this report for the noskills status report.
63
- `)},A={id:"claude-code",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!1,interaction:{hasAskUserTool:!0,optionPresentation:"tool",hasSubAgentDelegation:!0,subAgentMethod:"task"}},async syncRules(e,t){await x(e.root,e.rules,t,e.commandPrefix)},async syncHooks(e,t){await R(e.root,e.commandPrefix)},async syncAgents(e,t){await q(e.root,e.commandPrefix),await K(e.root,e.commandPrefix)}};var T=async(e,t,s="npx eser noskills")=>{let o=["# Generated by noskills \u2014 do not edit manually","","## noskills orchestrator","","This project uses noskills for state-driven orchestration.","Do NOT read `.eser/specs/` or `.eser/rules/` directly. noskills gives you what you need.","",`Run \`${s} next\` to get your current instruction.`,`Submit results with \`${s} next --answer="..."\``,"","## Why noskills calls matter","","noskills is not a form to fill out. It is a live state machine that the user","watches in real-time. Every `"+s+" next --answer` call:","","- Updates the spec file on disk (the user sees it change)","- Updates the terminal dashboard if `noskills watch` is running","- Advances the state machine to the next phase","- Records the decision permanently in the project history","","When you batch-submit answers or backfill discovery responses yourself,","the user sees nothing happening \u2014 then suddenly everything jumps forward.","This defeats the purpose.","","Call noskills ONCE per interaction. Ask the user ONE question. Wait for","their answer. Submit it. Ask the next. The user is watching every step.","Do NOT pre-fill answers. Do NOT batch multiple answers. Do NOT answer","discovery questions yourself \u2014 the user's input is the data.","","## When to call noskills next","","1. At the START of every conversation","2. BEFORE creating or modifying any file","3. AFTER completing a logical unit of work","4. When you encounter a DECISION that affects architecture","5. When you are UNSURE what to do next","","NEVER proceed with implementation without checking noskills first.","","## Interactive choices","","Present choices as numbered lists. Users select by number.","When interactiveOptions are present in noskills output, present each as a","numbered item with its label and description. Ask the user to pick a number.","","## Execution model","","Execute tasks sequentially in this context. Do not attempt to spawn sub-agents.",""];if(t.length>0){o.push("## Rules","");for(let i of t)o.push(`- ${i}`);o.push("")}await n.fs.writeTextFile(`${e}/.cursorrules`,o.join(`
63
+ `)},A={id:"claude-code",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!1,interaction:{hasAskUserTool:!0,optionPresentation:"tool",hasSubAgentDelegation:!0,subAgentMethod:"task"}},async syncRules(e,t){await x(e.root,e.rules,t,e.commandPrefix)},async syncHooks(e,t){await R(e.root,e.commandPrefix)},async syncAgents(e,t){await V(e.root,e.commandPrefix),await K(e.root,e.commandPrefix)}};var T=async(e,t,s="npx eser noskills")=>{let o=["# Generated by noskills \u2014 do not edit manually","","## noskills orchestrator","","This project uses noskills for state-driven orchestration.","Do NOT read `.eser/specs/` or `.eser/rules/` directly. noskills gives you what you need.","",`Run \`${s} next\` to get your current instruction.`,`Submit results with \`${s} next --answer="..."\``,"","## Why noskills calls matter","","noskills is not a form to fill out. It is a live state machine that the user","watches in real-time. Every `"+s+" next --answer` call:","","- Updates the spec file on disk (the user sees it change)","- Updates the terminal dashboard if `noskills watch` is running","- Advances the state machine to the next phase","- Records the decision permanently in the project history","","When you batch-submit answers or backfill discovery responses yourself,","the user sees nothing happening \u2014 then suddenly everything jumps forward.","This defeats the purpose.","","Call noskills ONCE per interaction. Ask the user ONE question. Wait for","their answer. Submit it. Ask the next. The user is watching every step.","Do NOT pre-fill answers. Do NOT batch multiple answers. Do NOT answer","discovery questions yourself \u2014 the user's input is the data.","","## When to call noskills next","","1. At the START of every conversation","2. BEFORE creating or modifying any file","3. AFTER completing a logical unit of work","4. When you encounter a DECISION that affects architecture","5. When you are UNSURE what to do next","","NEVER proceed with implementation without checking noskills first.","","## Interactive choices","","Present choices as numbered lists. Users select by number.","When interactiveOptions are present in noskills output, present each as a","numbered item with its label and description. Ask the user to pick a number.","","## Execution model","","Execute tasks sequentially in this context. Do not attempt to spawn sub-agents.",""];if(t.length>0){o.push("## Rules","");for(let i of t)o.push(`- ${i}`);o.push("")}await n.fs.writeTextFile(`${e}/.cursorrules`,o.join(`
64
64
  `))};var C={id:"cursor",capabilities:{rules:!0,hooks:!1,agents:!1,specs:!1,mcp:!1,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!1,subAgentMethod:"none"}},async syncRules(e){await T(e.root,e.rules,e.commandPrefix)}};var X=".kiro/steering",O=".kiro/settings",Z=".kiro/agents",ee=".kiro/specs",te="hooks.json",se="mcp.json",oe="noskills-protocol.md",ne="noskills-coaching.md",k="noskills-rules.md",N="conventions.md",ie="noskills-executor.json",re="noskills-verifier.json",ae=(e,t)=>{let s=["---","inclusion: always","---","","# noskills Protocol","","# Generated by noskills \u2014 do not edit manually","","## What is noskills","","This project uses noskills for state-driven orchestration.","Do NOT read `.eser/rules/`, `.eser/specs/`, or concern files directly.","noskills gives you exactly what you need via JSON output.","","## Protocol","",` ${e} spec <name> next # get current instruction`,` ${e} spec <name> next --answer="your response" # submit result and advance`,"","Every noskills command that operates on a spec MUST include `spec <name>`.",`Never omit it. Use \`${e} spec list\` to see available specs.`,"","## Why noskills calls matter","","noskills is not a form to fill out. It is a live state machine that the user","watches in real-time. Every `"+e+" next --answer` call:","","- Updates the spec file on disk (the user sees it change)","- Updates the terminal dashboard if `noskills watch` is running","- Advances the state machine to the next phase","- Records the decision permanently in the project history","","When you batch-submit answers or backfill discovery responses yourself,","the user sees nothing happening \u2014 then suddenly everything jumps forward.","This defeats the purpose.","","Call noskills ONCE per interaction. Ask the user ONE question. Wait for","their answer. Submit it. Ask the next. The user is watching every step.","Do NOT pre-fill answers. Do NOT batch multiple answers. Do NOT answer","discovery questions yourself \u2014 the user's input is the data.","","## When to call noskills next","",`You MUST call \`${e} next\` in these situations:`,"","1. At the **START** of every conversation (first thing you do)","2. **BEFORE** creating or modifying any file (to verify you have an active task)","3. **AFTER** completing a logical unit of work (to report progress)","4. When you encounter a **DECISION** that affects architecture or scope","5. When you are **UNSURE** what to do next","","NEVER proceed with implementation without checking noskills first.","NEVER make architectural decisions independently \u2014 noskills routes them to the user."];return(t?.allowGit??!1)||s.push("","## Git is read-only","","You MUST NOT run git write commands: commit, add, push, checkout, stash,","reset, merge, rebase, cherry-pick. The user controls git. You control files.","You MAY read from git: log, diff, status, show, blame."),s.push("","## Interactive choices","","Present choices as numbered lists. Users select by number.","When interactiveOptions are present in noskills output, present each as a","numbered item with its label and description. Ask the user to pick a number.","Use the `commandMap` to resolve the user's selection to a CLI command.","","## Decision principle: Explicit > Clever","","You NEVER skip steps, bypass questions, or make assumptions on behalf of the user.","- Discovery questions \u2192 ask the user, don't answer yourself","- Classification \u2192 ask the user, don't infer","- Spec approval \u2192 ask the user, don't auto-approve","- Task refinement \u2192 ask the user, don't self-assign","- Rule promotion \u2192 ask the user, don't decide",`If you think something can be skipped, ASK "would you like to skip this?" \u2014 don't skip it.`,"","## Command execution","","When told to run a noskills command, execute it IMMEDIATELY. Do not explore,","research, read source code, or plan first. The command output contains all the","context you need. Exploring noskills internals wastes tokens and delays the user.","","## JSON output","","noskills returns JSON with a `phase` field and phase-specific instructions.","The `meta` block contains resume context - use it to orient yourself,","especially after compaction or at the start of a new session.","Follow the `instruction` field. Use `transition` commands to advance state.",""),s.join(`
65
65
  `)},ce=e=>["---","inclusion: auto","name: noskills-coaching",'description: "Guidance for noskills spec-driven development workflow, including convention discovery and rule promotion"',"---","","# noskills Coaching","","# Generated by noskills \u2014 do not edit manually","","## Convention discovery","","When you discover a pattern, receive a correction, or identify a recurring",'preference from the user, ask: "Should this be a permanent rule for this',`project, or just for this task?" If permanent, run: \`${e} rule add`,'"<description>"`. If just this task, note it and move on.',"Never write to `.eser/rules/` directly.","","## How to promote rules","","When a convention should be permanent, use the noskills CLI to register it:","",` ${e} rule add "<description of the rule>"`,"","This stores the rule in `.eser/rules/` and ensures it is synced to all","coding tools on the next `noskills sync`. Never edit `.eser/rules/` directly.",""].join(`
66
66
  `),le=e=>{let t=["---","inclusion: always","---","","# noskills Rules","","# Generated by noskills \u2014 do not edit manually","","## Active Rules",""];for(let s of e)t.push(`- ${s}`);return t.push(""),t.join(`
@@ -92,20 +92,20 @@ The orchestrator will use this report for the noskills status report.
92
92
  `),Me=e=>{let s=e.match(/^# Spec:\s*(.+)$/m)?.[1]?.trim()??"Untitled",o=new Map,i=e.split(/^## /m);for(let a of i){let c=a.indexOf(`
93
93
  `);if(c===-1)continue;let l=a.slice(0,c).trim().toLowerCase(),u=a.slice(c+1).trim();o.set(l,u)}let r=a=>{for(let[c,l]of o)if(c.startsWith(a.toLowerCase()))return l;return""};return{title:s,concerns:r("concerns"),discoveryAnswers:r("discovery answers"),contributorGuide:r("contributor guide"),publicApi:r("public api"),outOfScope:r("out of scope"),tasks:r("tasks"),verification:r("verification")}},Fe=e=>{let t=["---",`name: ${e.title}`,`description: "noskills spec: ${e.title}"`,"---","",`# ${e.title}`,""];return e.discoveryAnswers&&t.push("## Overview","",e.discoveryAnswers,""),e.concerns&&t.push("## Concerns","",e.concerns,""),e.contributorGuide&&t.push("## Contributor Guide","",e.contributorGuide,""),e.publicApi&&t.push("## Public API","",e.publicApi,""),e.outOfScope&&t.push("## Out of Scope","",e.outOfScope,""),e.tasks&&t.push("## Tasks","",e.tasks,""),e.verification&&t.push("## Verification","",e.verification,""),t.join(`
94
94
  `)},Pe=async e=>{try{return await n.fs.stat(e),!0}catch{return!1}},U={id:"opencode",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!0,mcp:!0,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!0,subAgentMethod:"delegation"}},async syncRules(e,t){await m(e,t)},async syncHooks(e,t){let s=`${e.root}/${Ce}`;await n.fs.mkdir(s,{recursive:!0}),await n.fs.writeTextFile(`${s}/noskills.ts`,$e(e.commandPrefix))},async syncAgents(e,t){let s=`${e.root}/${Oe}`;await n.fs.mkdir(s,{recursive:!0}),await n.fs.writeTextFile(`${s}/noskills-executor.md`,Ie(e.commandPrefix)),await n.fs.writeTextFile(`${s}/noskills-verifier.md`,De())},async syncSpecs(e,t){let s;try{s=await n.fs.readTextFile(t)}catch{return}if(s.trim()==="")return;let o=t.split("/"),i=o[o.length-2]??"unknown",r=Me(s),a=`${e.root}/${Ne}`;await n.fs.mkdir(a,{recursive:!0}),await n.fs.writeTextFile(`${a}/${i}.md`,Fe(r))},async syncMcp(e){let t=`${e.root}/${Ee}`,s={};if(await Pe(t))try{let c=await n.fs.readTextFile(t);s=JSON.parse(c)}catch{}let o=e.commandPrefix.split(/\s+/),i=o[0]??"npx",r=[...o.slice(1),"mcp-serve"],a={...s,mcp:{...s.mcp,noskills:{type:"local",command:i,args:r}}};await n.fs.writeTextFile(t,JSON.stringify(a,null,2)+`
95
- `)}};var je=".codex",We="hooks.json",_e=".codex/agents",He=".codex/config.toml",Le=e=>({hooks:[{_noskills:!0,event:"SessionStart",command:`${e} invoke-hook session-start`,timeout:5e3},{_noskills:!0,event:"PreToolUse",command:`${e} invoke-hook pre-tool-use`,timeout:5e3},{_noskills:!0,event:"PostToolUse",command:`${e} invoke-hook post-file-write`,timeout:3e3},{_noskills:!0,event:"Stop",command:`${e} invoke-hook stop`,timeout:1e4}]}),Ye=e=>['name = "noskills-executor"','description = "Executes a single noskills task. Follows spec behavioral rules and reports structured results."','developer_instructions = """',["You are executing a single task from a noskills spec.","Your ONLY job is to complete the task described in the prompt.","Follow all behavioral rules provided in the prompt.","Do NOT start new tasks, explore unrelated code, or make architectural decisions.","If the task is too vague to execute, say so immediately.","","## Self-Verification","After completing the task, you MUST verify your own work before reporting:","1. Run type check: `deno check` on all modified files","2. Run test suite: `deno test` on the relevant test files","3. If type check or tests fail, fix the issues before reporting","","## Reporting","When finished, provide a structured JSON summary:",'{"completed": ["<item IDs done>"], "remaining": ["<item IDs not done>"],',' "blocked": ["<item IDs needing decisions>"], "filesModified": ["<paths>"],',' "verification": {"typeCheck": "pass|fail", "tests": "pass|fail"}}',"","Do NOT return raw test output \u2014 summarize it in the verification field.",`The orchestrator will submit this to \`${e} next --answer\` on your behalf.`].join(`
95
+ `)}};var We=".codex",je="hooks.json",_e=".codex/agents",He=".codex/config.toml",Le=e=>({hooks:[{_noskills:!0,event:"SessionStart",command:`${e} invoke-hook session-start`,timeout:5e3},{_noskills:!0,event:"PreToolUse",command:`${e} invoke-hook pre-tool-use`,timeout:5e3},{_noskills:!0,event:"PostToolUse",command:`${e} invoke-hook post-file-write`,timeout:3e3},{_noskills:!0,event:"Stop",command:`${e} invoke-hook stop`,timeout:1e4}]}),Ye=e=>['name = "noskills-executor"','description = "Executes a single noskills task. Follows spec behavioral rules and reports structured results."','developer_instructions = """',["You are executing a single task from a noskills spec.","Your ONLY job is to complete the task described in the prompt.","Follow all behavioral rules provided in the prompt.","Do NOT start new tasks, explore unrelated code, or make architectural decisions.","If the task is too vague to execute, say so immediately.","","## Self-Verification","After completing the task, you MUST verify your own work before reporting:","1. Run type check: `deno check` on all modified files","2. Run test suite: `deno test` on the relevant test files","3. If type check or tests fail, fix the issues before reporting","","## Reporting","When finished, provide a structured JSON summary:",'{"completed": ["<item IDs done>"], "remaining": ["<item IDs not done>"],',' "blocked": ["<item IDs needing decisions>"], "filesModified": ["<paths>"],',' "verification": {"typeCheck": "pass|fail", "tests": "pass|fail"}}',"","Do NOT return raw test output \u2014 summarize it in the verification field.",`The orchestrator will submit this to \`${e} next --answer\` on your behalf.`].join(`
96
96
  `),'"""',""].join(`
97
97
  `),Ge=()=>['name = "noskills-verifier"',`description = "Independently verifies completed task work. Read-only. Never sees the executor's context."`,'developer_instructions = """',["You are verifying another agent's work. You have NO context about how it was done.","Read the changed files. Run the test suite. Check each acceptance criterion independently.","","For each acceptance criterion:","- PASS: with evidence \u2014 show the grep result, the test output, or the file content that proves it","- FAIL: with specific reason \u2014 what's missing, what's wrong, what doesn't match","","Be skeptical. Don't assume anything works \u2014 verify it yourself.","You CANNOT edit files. Read-only access only.","","## Verification Steps","1. Read each modified file and verify the changes are correct","2. Run type check: `deno check` on modified files","3. Run tests: `deno test` on relevant test files","4. Check each acceptance criterion against actual file contents","","## Report Format","When finished, provide a structured JSON summary:",'{"results": [{"id": "ac-1", "status": "PASS", "evidence": "..."},',' {"id": "ac-2", "status": "FAIL", "reason": "..."}]}',"","The orchestrator will use this report for the noskills status report."].join(`
98
98
  `),'"""',""].join(`
99
99
  `),Je=e=>{let t=e.split(/\s+/),s=t[0]??"npx",o=[...t.slice(1),"mcp-serve"].map(i=>`"${i}"`).join(", ");return`[mcp_servers.noskills]
100
100
  command = "${s}"
101
101
  args = [${o}]
102
- `},Ve=async e=>{try{return await n.fs.stat(e),!0}catch{return!1}},j={id:"codex",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!0,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!0,subAgentMethod:"spawn"}},async syncRules(e,t){await m(e,t)},async syncHooks(e,t){let s=`${e.root}/${je}`,o=`${s}/${We}`;await n.fs.mkdir(s,{recursive:!0});let i=[];try{let l=await n.fs.readTextFile(o),u=JSON.parse(l);Array.isArray(u.hooks)&&(i=u.hooks)}catch{}let r=i.filter(l=>!l._noskills),a=Le(e.commandPrefix),c={hooks:[...r,...a.hooks]};await n.fs.writeTextFile(o,JSON.stringify(c,null,2)+`
103
- `)},async syncAgents(e,t){let s=`${e.root}/${_e}`;await n.fs.mkdir(s,{recursive:!0}),await n.fs.writeTextFile(`${s}/noskills-executor.toml`,Ye(e.commandPrefix)),await n.fs.writeTextFile(`${s}/noskills-verifier.toml`,Ge())},async syncMcp(e){let t=`${e.root}/${He}`;await n.fs.mkdir(`${e.root}/.codex`,{recursive:!0});let s="";if(await Ve(t))try{s=await n.fs.readTextFile(t)}catch{}let o=s.replace(/\[mcp_servers\.noskills\][\s\S]*?(?=\[|$)/,"").trimEnd(),i=Je(e.commandPrefix),r=o+(o.length>0?`
102
+ `},qe=async e=>{try{return await n.fs.stat(e),!0}catch{return!1}},W={id:"codex",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!0,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!0,subAgentMethod:"spawn"}},async syncRules(e,t){await m(e,t)},async syncHooks(e,t){let s=`${e.root}/${We}`,o=`${s}/${je}`;await n.fs.mkdir(s,{recursive:!0});let i=[];try{let l=await n.fs.readTextFile(o),u=JSON.parse(l);Array.isArray(u.hooks)&&(i=u.hooks)}catch{}let r=i.filter(l=>!l._noskills),a=Le(e.commandPrefix),c={hooks:[...r,...a.hooks]};await n.fs.writeTextFile(o,JSON.stringify(c,null,2)+`
103
+ `)},async syncAgents(e,t){let s=`${e.root}/${_e}`;await n.fs.mkdir(s,{recursive:!0}),await n.fs.writeTextFile(`${s}/noskills-executor.toml`,Ye(e.commandPrefix)),await n.fs.writeTextFile(`${s}/noskills-verifier.toml`,Ge())},async syncMcp(e){let t=`${e.root}/${He}`;await n.fs.mkdir(`${e.root}/.codex`,{recursive:!0});let s="";if(await qe(t))try{s=await n.fs.readTextFile(t)}catch{}let o=s.replace(/\[mcp_servers\.noskills\][\s\S]*?(?=\[|$)/,"").trimEnd(),i=Je(e.commandPrefix),r=o+(o.length>0?`
104
104
 
105
105
  `:"")+i;await n.fs.writeTextFile(t,r)}};var Ke=".github/hooks",Be="noskills.json",ze=".github/agents",Qe=".copilot",Xe="mcp.json",Ze=e=>({version:1,hooks:{"noskills:sessionStart":{_noskills:!0,command:["bash","-c",`${e} invoke-hook session-start`],timeoutSec:5},"noskills:preToolUse":{_noskills:!0,command:["bash","-c",`${e} invoke-hook pre-tool-use`],timeoutSec:5},"noskills:postToolUse":{_noskills:!0,command:["bash","-c",`${e} invoke-hook post-file-write`],timeoutSec:3},"noskills:agentStop":{_noskills:!0,command:["bash","-c",`${e} invoke-hook stop`],timeoutSec:10}}}),et=e=>["---","name: noskills-executor",'description: "Executes a single noskills task. Follows spec behavioral rules and reports structured results."',"tools:"," - read"," - write"," - glob"," - grep"," - shell","---","","You are executing a single task from a noskills spec.","Your ONLY job is to complete the task described in the prompt.","Follow all behavioral rules provided in the prompt.","Do NOT start new tasks, explore unrelated code, or make architectural decisions.","If the task is too vague to execute, say so immediately.","","## Self-Verification","After completing the task, you MUST verify your own work before reporting:","1. Run type check: `deno check` on all modified files","2. Run test suite: `deno test` on the relevant test files","3. If type check or tests fail, fix the issues before reporting","","## Reporting","When finished, provide a structured JSON summary:","```json",'{"completed": ["<item IDs done>"], "remaining": ["<item IDs not done>"], "blocked": ["<item IDs needing decisions>"], "filesModified": ["<paths>"], "verification": {"typeCheck": "pass|fail", "tests": "pass|fail (N passed, M failed)"}}',"```","","Do NOT return raw test output \u2014 summarize it in the verification field.",`The orchestrator will submit this to \`${e} next --answer\` on your behalf.`,""].join(`
106
106
  `),tt=()=>["---","name: noskills-verifier",`description: "Independently verifies completed task work. Read-only. Never sees the executor's context."`,"tools:"," - read"," - glob"," - grep"," - shell","---","","You are verifying another agent's work. You have NO context about how it was done.","Read the changed files. Run the test suite. Check each acceptance criterion independently.","","For each acceptance criterion:","- PASS: with evidence \u2014 show the grep result, the test output, or the file content that proves it","- FAIL: with specific reason \u2014 what's missing, what's wrong, what doesn't match","","Be skeptical. Don't assume anything works \u2014 verify it yourself.","You CANNOT edit files. Read-only access only.","","## Verification Steps","1. Read each modified file and verify the changes are correct","2. Run type check: `deno check` on modified files","3. Run tests: `deno test` on relevant test files","4. Check each acceptance criterion against actual file contents","","## Report Format","When finished, provide a structured JSON summary:","```json",'{"results": [{"id": "ac-1", "status": "PASS", "evidence": "..."}, {"id": "ac-2", "status": "FAIL", "reason": "..."}]}',"```","","The orchestrator will use this report for the noskills status report.",""].join(`
107
- `),st=e=>{let t=e.split(/\s+/),s=t[0]??"npx",o=[...t.slice(1),"mcp-serve"];return{mcpServers:{noskills:{type:"local",command:s,args:o,tools:["*"]}}}},ot=async e=>{try{return await n.fs.stat(e),!0}catch{return!1}},W={id:"copilot-cli",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!0,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!0,subAgentMethod:"fleet"}},async syncRules(e,t){await m(e,t),await f(e.root,e.rules,e.commandPrefix)},async syncHooks(e,t){let s=`${e.root}/${Ke}`,o=`${s}/${Be}`;await n.fs.mkdir(s,{recursive:!0});let i={};try{let l=await n.fs.readTextFile(o),u=JSON.parse(l);u.hooks!==void 0&&u.hooks!==null&&(i=u.hooks)}catch{}let r={};for(let[l,u]of Object.entries(i))u._noskills||(r[l]=u);let a=Ze(e.commandPrefix),c={version:1,hooks:{...r,...a.hooks}};await n.fs.writeTextFile(o,JSON.stringify(c,null,2)+`
107
+ `),st=e=>{let t=e.split(/\s+/),s=t[0]??"npx",o=[...t.slice(1),"mcp-serve"];return{mcpServers:{noskills:{type:"local",command:s,args:o,tools:["*"]}}}},ot=async e=>{try{return await n.fs.stat(e),!0}catch{return!1}},j={id:"copilot-cli",capabilities:{rules:!0,hooks:!0,agents:!0,specs:!1,mcp:!0,interaction:{hasAskUserTool:!1,optionPresentation:"prose",hasSubAgentDelegation:!0,subAgentMethod:"fleet"}},async syncRules(e,t){await m(e,t),await f(e.root,e.rules,e.commandPrefix)},async syncHooks(e,t){let s=`${e.root}/${Ke}`,o=`${s}/${Be}`;await n.fs.mkdir(s,{recursive:!0});let i={};try{let l=await n.fs.readTextFile(o),u=JSON.parse(l);u.hooks!==void 0&&u.hooks!==null&&(i=u.hooks)}catch{}let r={};for(let[l,u]of Object.entries(i))u._noskills||(r[l]=u);let a=Ze(e.commandPrefix),c={version:1,hooks:{...r,...a.hooks}};await n.fs.writeTextFile(o,JSON.stringify(c,null,2)+`
108
108
  `)},async syncAgents(e,t){let s=`${e.root}/${ze}`;await n.fs.mkdir(s,{recursive:!0}),await n.fs.writeTextFile(`${s}/noskills-executor.agent.md`,et(e.commandPrefix)),await n.fs.writeTextFile(`${s}/noskills-verifier.agent.md`,tt())},async syncMcp(e){let t=`${e.root}/${Qe}`,s=`${t}/${Xe}`;await n.fs.mkdir(t,{recursive:!0});let o={mcpServers:{}};if(await ot(s))try{let a=await n.fs.readTextFile(s),c=JSON.parse(a);c.mcpServers!==void 0&&c.mcpServers!==null&&(o=c)}catch{}let i=st(e.commandPrefix),r={...o,mcpServers:{...o.mcpServers,...i.mcpServers}};await n.fs.writeTextFile(s,JSON.stringify(r,null,2)+`
109
109
  `)}};var it=e=>{let t=e.trim();if(!t.startsWith("---"))return{meta:{},body:t};let s=t.indexOf("---",3);if(s===-1)return{meta:{},body:t};let o=t.slice(3,s).trim(),i=t.slice(s+3).trim(),r={};for(let a of o.split(`
110
110
  `)){let c=a.indexOf(":");if(c===-1)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim();if(u.startsWith("[")&&u.endsWith("]")){let d=u.slice(1,-1).split(",").map(p=>p.trim().replace(/^["']|["']$/g,"")).filter(p=>p.length>0);r[l]=d}else r[l]=u.replace(/^["']|["']$/g,"")}return{meta:r,body:i}},rt=async e=>{let t=`${e}/${y.rulesDir}`,s=[];try{for await(let o of n.fs.readDir(t))if(o.isFile&&(o.name.endsWith(".md")||o.name.endsWith(".txt"))){let i=await n.fs.readTextFile(`${t}/${o.name}`),{meta:r,body:a}=it(i),c=a.split(`
111
- `)[0]??a;s.push({text:c,phases:Array.isArray(r.phases)?r.phases:void 0,appliesTo:Array.isArray(r.applies_to)?r.applies_to:void 0})}}catch{}return s},ft=(e,t,s)=>e.filter(o=>!(o.phases!==void 0&&o.phases.length>0&&!o.phases.includes(t)||o.appliesTo!==void 0&&o.appliesTo.length>0&&s!==void 0&&s.length>0&&!o.appliesTo.some(r=>{let a=r.startsWith("*.")?r.slice(1):null;return a!==null?s.some(c=>c.endsWith(a)):s.some(c=>c.includes(r.replace(/\*/g,"")))}))).map(o=>o.text),at=async e=>(await rt(e)).map(s=>s.text),H=[A,C,$,D,F,U,j,W],_={hasAskUserTool:!0,optionPresentation:"tool",hasSubAgentDelegation:!0,subAgentMethod:"task"},yt=e=>{let t=e[0];return t===void 0?_:H.find(o=>o.id===t)?.capabilities.interaction??_},gt=async(e,t,s)=>{let o=await at(e),i=[],r={allowGit:s?.allowGit??!1},a=s?.command??"npx eser@latest noskills";b(a);for(let c of t){let l=H.find(d=>d.id===c);if(l===void 0)continue;let u={root:e,rules:o,commandPrefix:a};if(await l.syncRules(u,r),l.capabilities.hooks&&l.syncHooks!==void 0&&await l.syncHooks(u,r),l.capabilities.agents&&l.syncAgents!==void 0&&await l.syncAgents(u,r),l.capabilities.specs&&l.syncSpecs!==void 0){let d=`${e}/${y.specsDir}`;try{for await(let p of n.fs.readDir(d))if(p.isDirectory){let L=`${d}/${p.name}/spec.md`;await l.syncSpecs(u,L)}}catch{}}l.capabilities.mcp&&l.syncMcp!==void 0&&await l.syncMcp(u),i.push(c)}return t.includes("claude-code")&&i.push("hooks"),i};export{rt as a,ft as b,at as c,yt as d,gt as e};
111
+ `)[0]??a;s.push({text:c,phases:Array.isArray(r.phases)?r.phases:void 0,appliesTo:Array.isArray(r.applies_to)?r.applies_to:void 0})}}catch{}return s},ft=(e,t,s)=>e.filter(o=>!(o.phases!==void 0&&o.phases.length>0&&!o.phases.includes(t)||o.appliesTo!==void 0&&o.appliesTo.length>0&&s!==void 0&&s.length>0&&!o.appliesTo.some(r=>{let a=r.startsWith("*.")?r.slice(1):null;return a!==null?s.some(c=>c.endsWith(a)):s.some(c=>c.includes(r.replace(/\*/g,"")))}))).map(o=>o.text),at=async e=>(await rt(e)).map(s=>s.text),H=[A,C,$,D,F,U,W,j],_={hasAskUserTool:!0,optionPresentation:"tool",hasSubAgentDelegation:!0,subAgentMethod:"task"},yt=e=>{let t=e[0];return t===void 0?_:H.find(o=>o.id===t)?.capabilities.interaction??_},gt=async(e,t,s)=>{let o=await at(e),i=[],r={allowGit:s?.allowGit??!1},a=s?.command??"npx eser@latest noskills";b(a);for(let c of t){let l=H.find(d=>d.id===c);if(l===void 0)continue;let u={root:e,rules:o,commandPrefix:a};if(await l.syncRules(u,r),l.capabilities.hooks&&l.syncHooks!==void 0&&await l.syncHooks(u,r),l.capabilities.agents&&l.syncAgents!==void 0&&await l.syncAgents(u,r),l.capabilities.specs&&l.syncSpecs!==void 0){let d=`${e}/${y.specsDir}`;try{for await(let p of n.fs.readDir(d))if(p.isDirectory){let L=`${d}/${p.name}/spec.md`;await l.syncSpecs(u,L)}}catch{}}l.capabilities.mcp&&l.syncMcp!==void 0&&await l.syncMcp(u),i.push(c)}return t.includes("claude-code")&&i.push("hooks"),i};export{rt as a,ft as b,at as c,yt as d,gt 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-BJLUDX4R.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-WJKE6XHF.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 };
@@ -1,5 +1,5 @@
1
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-WJKE6XHF.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(`
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
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
4
  `,J=`\r
5
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,5 +1,5 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as d}from"./chunk-JLRVMMMH.js";import{b as p}from"./chunk-NBA6EFWU.js";var c="2023",u=new RegExp(`// Copyright ([0-9]{4})-present Eser Ozvataf and other contributors\\. All rights reserved\\. ([0-9A-Za-z-.]+) license\\.
2
+ import{a as d}from"./chunk-HVQK35SO.js";import{b as p}from"./chunk-NBA6EFWU.js";var c="2023",u=new RegExp(`// Copyright ([0-9]{4})-present Eser Ozvataf and other contributors\\. All rights reserved\\. ([0-9A-Za-z-.]+) license\\.
3
3
  `),l=`// Copyright ${c}-present Eser Ozvataf and other contributors. All rights reserved. Apache-2.0 license.`,T=[/docs\//,/etc\/templates\//,/manifest\.gen\.ts$/],g=t=>T.some(e=>e.test(t)),x=(t,e,r)=>{if(e===void 0||g(t.path))return[];let s=e.startsWith("#!")?e.indexOf(`
4
4
  `)+1:0,n=e.slice(s).match(u);return n!==null?n[1]===c?[]:[{path:t.path,message:"incorrect copyright year",fixed:r.fix}]:[{path:t.path,message:"missing copyright header",fixed:r.fix}]},E=(t,e,r)=>{if(g(t.path))return;let a=e.startsWith("#!"),s=a?e.indexOf(`
5
5
  `)+1:0,i=e.slice(s),n=i.match(u);if(n!==null&&n[1]===c)return;let o;if(n!==null){let f=e.slice(0,s),m=i.replace(n[0],"");o=`${f}${l}
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as i}from"./chunk-BLXGL5MA.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,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{d as r}from"./chunk-BLXGL5MA.js";import{i}from"./chunk-WJKE6XHF.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-MJ2IPSAE.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};