eser 4.1.34 → 4.1.35

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 (64) hide show
  1. package/chunks/{build-6DCIDFY7.js → build-EJLFNB4I.js} +2 -2
  2. package/chunks/{changelog-gen-7V37P7PE.js → changelog-gen-MX6L2Z24.js} +1 -1
  3. package/chunks/{chunk-NTHP6SND.js → chunk-2HBVIH7V.js} +1 -1
  4. package/chunks/{chunk-CEYKWASA.js → chunk-4MVO4LD5.js} +1 -1
  5. package/chunks/{chunk-COKZ6MLN.js → chunk-B6EATLKL.js} +3 -3
  6. package/chunks/{chunk-4SYC4WJV.js → chunk-DYRTLYTU.js} +2 -2
  7. package/chunks/{chunk-5BZG26SF.js → chunk-FKITIXO2.js} +1 -1
  8. package/chunks/{chunk-VC6ERZSI.js → chunk-GJ4LCA6D.js} +1 -1
  9. package/chunks/{chunk-CLL3YG4W.js → chunk-IIIMOOFE.js} +1 -1
  10. package/chunks/{chunk-5PNGVDLV.js → chunk-IZONBJSX.js} +1 -1
  11. package/chunks/{chunk-AGRTWPDI.js → chunk-KBFKBL6A.js} +1 -1
  12. package/chunks/{chunk-KKBIUT5L.js → chunk-KVTG56GS.js} +1 -1
  13. package/chunks/{chunk-64PIAW3Y.js → chunk-LOLA6ZSE.js} +1 -1
  14. package/chunks/{chunk-SQINSLNL.js → chunk-PZNCE6QK.js} +19 -19
  15. package/chunks/{chunk-3KCPUYLZ.js → chunk-QZ44TAIY.js} +1 -1
  16. package/chunks/{chunk-K7MYEXOS.js → chunk-T2DRBZ4X.js} +1 -1
  17. package/chunks/chunk-UJPVEQX7.js +5 -0
  18. package/chunks/chunk-VAIRJES2.js +2 -0
  19. package/chunks/{commitmsg-UK2ABB7D.js → commitmsg-7XZGGERO.js} +1 -1
  20. package/chunks/{dev-XBH6C6DH.js → dev-PTMXZEVC.js} +2 -2
  21. package/chunks/{gh-RKKHKA3B.js → gh-L25JQWOY.js} +2 -2
  22. package/chunks/{gh-contributors-X7BW57DD.js → gh-contributors-E7IZ2LFS.js} +1 -1
  23. package/chunks/init-2FLT3GXG.js +2 -0
  24. package/chunks/{init-32DVDSNZ.js → init-J4IHOVZL.js} +2 -2
  25. package/chunks/{install-LM44N3DB.js → install-KNZDCGIB.js} +1 -1
  26. package/chunks/{main-JTYNMHNL.js → main-HJQEBLLN.js} +1 -1
  27. package/chunks/{mod-SA3J2VR5.js → mod-OS3BCM2G.js} +1 -1
  28. package/chunks/{mod-5WXRQGLS.js → mod-PFWQZF3T.js} +5 -5
  29. package/chunks/{mod-JN7WI5P6.js → mod-SDQ3QKKS.js} +1 -1
  30. package/chunks/{mod-Y4UHOKMZ.js → mod-W3DBWTCY.js} +1 -1
  31. package/chunks/{release-WKMSWXDS.js → release-J3PVDROM.js} +2 -2
  32. package/chunks/{release-notes-GOUHBQ2F.js → release-notes-AARDYXYA.js} +1 -1
  33. package/chunks/{release-tag-5WNEA4HM.js → release-tag-H2YWUXRU.js} +1 -1
  34. package/chunks/{serve-DEYVWV2K.js → serve-XVAIQ37L.js} +2 -2
  35. package/chunks/{system-LTVAILSL.js → system-5HS7XXTF.js} +1 -1
  36. package/chunks/{system-BJCQKFCP.js → system-WTPEDJU6.js} +1 -1
  37. package/chunks/{validate-bom-KEC4IOKO.js → validate-bom-QVE5HNBO.js} +1 -1
  38. package/chunks/{validate-case-conflict-ZZKZQQX4.js → validate-case-conflict-XFS3URQN.js} +1 -1
  39. package/chunks/{validate-circular-deps-QCJYK5K5.js → validate-circular-deps-BMPAT3PF.js} +1 -1
  40. package/chunks/{validate-commit-msg-PZZ4T4QF.js → validate-commit-msg-BPESCI7P.js} +1 -1
  41. package/chunks/{validate-docs-M55HAXPX.js → validate-docs-ITL4L6KY.js} +1 -1
  42. package/chunks/{validate-eof-MX52AUUT.js → validate-eof-DTFV74VL.js} +1 -1
  43. package/chunks/{validate-export-names-UFXPIDFW.js → validate-export-names-HLOH7D73.js} +1 -1
  44. package/chunks/{validate-filenames-LXIMPWRW.js → validate-filenames-J4RTDEBD.js} +1 -1
  45. package/chunks/{validate-json-TABLVKEH.js → validate-json-KMODGNSU.js} +1 -1
  46. package/chunks/{validate-large-files-CMCMEGYA.js → validate-large-files-X5YF7D7T.js} +1 -1
  47. package/chunks/{validate-licenses-MDGIDYNC.js → validate-licenses-OZ7DXQTY.js} +1 -1
  48. package/chunks/{validate-line-endings-K36HS73S.js → validate-line-endings-PFF6QJ3W.js} +1 -1
  49. package/chunks/{validate-merge-conflict-PMGZYM3B.js → validate-merge-conflict-KB2X6QLW.js} +1 -1
  50. package/chunks/{validate-mod-exports-M3UYNBK7.js → validate-mod-exports-VHK2NVKI.js} +1 -1
  51. package/chunks/{validate-package-configs-V5LR7K5C.js → validate-package-configs-ZNCAIYRO.js} +1 -1
  52. package/chunks/{validate-secrets-IAMY5DB5.js → validate-secrets-RM6DMZVG.js} +1 -1
  53. package/chunks/{validate-shebangs-GUBDNU2N.js → validate-shebangs-WC66D7RK.js} +1 -1
  54. package/chunks/{validate-submodules-ZA2FAF3W.js → validate-submodules-SPAXASAG.js} +1 -1
  55. package/chunks/{validate-symlinks-LSEEVFTR.js → validate-symlinks-4LOWK2MQ.js} +1 -1
  56. package/chunks/{validate-toml-JLQ3BY73.js → validate-toml-SG4IITMN.js} +1 -1
  57. package/chunks/{validate-trailing-whitespace-3UUUKE22.js → validate-trailing-whitespace-GRE2PJ6T.js} +1 -1
  58. package/chunks/{validate-yaml-2BG7G35N.js → validate-yaml-RA22QNW6.js} +1 -1
  59. package/chunks/{versions-IVXYMSAZ.js → versions-ODYWYT7U.js} +1 -1
  60. package/eser.js +1 -1
  61. package/package.json +1 -1
  62. package/chunks/chunk-VG72SSDI.js +0 -5
  63. package/chunks/chunk-YTF3BAQS.js +0 -2
  64. package/chunks/init-ULJBWJFH.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-K6H7JTIH.js";import"./chunk-RGUETQSC.js";import"./chunk-HVLKXRPA.js";import"./chunk-JYNHFD6B.js";import"./chunk-4DOMGQOO.js";import"./chunk-WF6JNPZS.js";import"./chunk-J2Z7NG2X.js";import"./chunk-YTF3BAQS.js";import"./chunk-S7S2I2K5.js";import"./chunk-NBA6EFWU.js";import"./chunk-GBM3TZFD.js";import"./chunk-7DPLGQHN.js";import"./chunk-3SXTMY75.js";import"./chunk-PVPMHMKP.js";import"./chunk-MG65QJY6.js";import"./chunk-A6RDYP6R.js";import"./chunk-MRCBHVSB.js";import"./chunk-Y4ARZGGL.js";import"./chunk-STI6DX7K.js";import"./chunk-DTO2YJWZ.js";import"./chunk-G6NAG2EK.js";export{d as main,b as run,a as tool,c as validator};
2
+ import{a,b,c,d}from"./chunk-K6H7JTIH.js";import"./chunk-RGUETQSC.js";import"./chunk-HVLKXRPA.js";import"./chunk-JYNHFD6B.js";import"./chunk-4DOMGQOO.js";import"./chunk-WF6JNPZS.js";import"./chunk-J2Z7NG2X.js";import"./chunk-VAIRJES2.js";import"./chunk-S7S2I2K5.js";import"./chunk-NBA6EFWU.js";import"./chunk-GBM3TZFD.js";import"./chunk-7DPLGQHN.js";import"./chunk-3SXTMY75.js";import"./chunk-PVPMHMKP.js";import"./chunk-MG65QJY6.js";import"./chunk-A6RDYP6R.js";import"./chunk-MRCBHVSB.js";import"./chunk-Y4ARZGGL.js";import"./chunk-STI6DX7K.js";import"./chunk-DTO2YJWZ.js";import"./chunk-G6NAG2EK.js";export{d as main,b as run,a as tool,c as validator};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f}from"./chunk-NTHP6SND.js";import"./chunk-4SYC4WJV.js";import"./chunk-GTHXGAMQ.js";import"./chunk-3XJLLDR5.js";import"./chunk-P7WCO724.js";import"./chunk-JYNHFD6B.js";import"./chunk-2VEVVX6U.js";import"./chunk-4DOMGQOO.js";import"./chunk-WF6JNPZS.js";import"./chunk-J2Z7NG2X.js";import"./chunk-YTF3BAQS.js";import"./chunk-S7S2I2K5.js";import"./chunk-NBA6EFWU.js";import"./chunk-3BEX5FYF.js";import"./chunk-GBM3TZFD.js";import"./chunk-7DPLGQHN.js";import"./chunk-3SXTMY75.js";import"./chunk-MG65QJY6.js";import"./chunk-A6RDYP6R.js";import"./chunk-2BOCLC67.js";import"./chunk-N7DXBY3O.js";import"./chunk-7ATUODBM.js";import"./chunk-AP72BKVG.js";import"./chunk-MRCBHVSB.js";import"./chunk-Y4ARZGGL.js";import"./chunk-STI6DX7K.js";import"./chunk-DTO2YJWZ.js";import"./chunk-G6NAG2EK.js";export{e as handleCli,f as main,a as readVersionFile,b as showVersions,c as versions,d as versionsHandler};
2
+ import{a,b,c,d,e,f}from"./chunk-2HBVIH7V.js";import"./chunk-DYRTLYTU.js";import"./chunk-GTHXGAMQ.js";import"./chunk-3XJLLDR5.js";import"./chunk-P7WCO724.js";import"./chunk-JYNHFD6B.js";import"./chunk-2VEVVX6U.js";import"./chunk-4DOMGQOO.js";import"./chunk-WF6JNPZS.js";import"./chunk-J2Z7NG2X.js";import"./chunk-VAIRJES2.js";import"./chunk-S7S2I2K5.js";import"./chunk-NBA6EFWU.js";import"./chunk-3BEX5FYF.js";import"./chunk-GBM3TZFD.js";import"./chunk-7DPLGQHN.js";import"./chunk-3SXTMY75.js";import"./chunk-MG65QJY6.js";import"./chunk-A6RDYP6R.js";import"./chunk-2BOCLC67.js";import"./chunk-N7DXBY3O.js";import"./chunk-7ATUODBM.js";import"./chunk-AP72BKVG.js";import"./chunk-MRCBHVSB.js";import"./chunk-Y4ARZGGL.js";import"./chunk-STI6DX7K.js";import"./chunk-DTO2YJWZ.js";import"./chunk-G6NAG2EK.js";export{e as handleCli,f as main,a as readVersionFile,b as showVersions,c as versions,d as versionsHandler};
package/eser.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
3
- import{a as u}from"./chunks/chunk-5BZG26SF.js";import{a as m}from"./chunks/chunk-CEYKWASA.js";import"./chunks/chunk-PWLF3WXM.js";import{a as o}from"./chunks/chunk-KKBIUT5L.js";import{b as a}from"./chunks/chunk-SQINSLNL.js";import"./chunks/chunk-MG65QJY6.js";import{b as d,e as c}from"./chunks/chunk-A6RDYP6R.js";import{t as p}from"./chunks/chunk-MRCBHVSB.js";import"./chunks/chunk-Y4ARZGGL.js";import"./chunks/chunk-STI6DX7K.js";import"./chunks/chunk-DTO2YJWZ.js";import"./chunks/chunk-G6NAG2EK.js";var g=new o({description:"Kit \u2014 recipes, templates, project creation",modules:{add:{description:"Add a recipe to your project",category:"Distribution",load:()=>import("./chunks/add-5SDE43IH.js")},list:{description:"Browse available recipes and templates",category:"Distribution",load:()=>import("./chunks/list-PY3A762R.js")},new:{description:"Create a new project from a template",category:"Distribution",load:()=>import("./chunks/new-BOGCXTIY.js")},clone:{description:"Clone a recipe from any GitHub repo",category:"Distribution",load:()=>import("./chunks/clone-H3UAEVVP.js")},update:{description:"Re-fetch and update an applied recipe",category:"Distribution",load:()=>import("./chunks/update-4C4WNXCE.js")}},aliases:{create:"new"}});var f=new o({description:"Codebase management tools",modules:{scaffolding:{description:"Initialize project from template",category:"Setup",load:()=>import("./chunks/mod-5WXRQGLS.js")},install:{description:"Install git hooks from .eser/manifest.yml",category:"Setup",load:()=>import("./chunks/install-LM44N3DB.js")},uninstall:{description:"Remove managed git hooks",category:"Setup",load:async()=>({main:(await import("./chunks/install-LM44N3DB.js")).uninstallMain})},status:{description:"Show git hook installation status",category:"Setup",load:async()=>({main:(await import("./chunks/install-LM44N3DB.js")).statusMain})},commitmsg:{description:"Generate commit message from git diff",category:"AI",load:()=>import("./chunks/commitmsg-UK2ABB7D.js")},gh:{description:"GitHub operations (contributors, releases, tags)",category:"GitHub",load:()=>import("./chunks/gh-RKKHKA3B.js")},versions:{description:"Manage workspace package versions",category:"Release",load:()=>import("./chunks/versions-IVXYMSAZ.js")},"changelog-gen":{description:"Generate CHANGELOG from commits",category:"Release",load:()=>import("./chunks/changelog-gen-7V37P7PE.js")},release:{description:"Create a release (bump, changelog, commit, push)",category:"Release",load:()=>import("./chunks/release-WKMSWXDS.js")},rerelease:{description:"Delete and recreate the current version tag",category:"Release",load:async()=>({main:(await import("./chunks/release-WKMSWXDS.js")).rereleaseMain})},unrelease:{description:"Delete the current version tag",category:"Release",load:async()=>({main:(await import("./chunks/release-WKMSWXDS.js")).unreleaseMain})},"validate-eof":{description:"Ensure files end with newline",category:"Validation",load:()=>import("./chunks/validate-eof-MX52AUUT.js")},"validate-trailing-whitespace":{description:"Remove trailing whitespace",category:"Validation",load:()=>import("./chunks/validate-trailing-whitespace-3UUUKE22.js")},"validate-bom":{description:"Remove UTF-8 byte order markers",category:"Validation",load:()=>import("./chunks/validate-bom-KEC4IOKO.js")},"validate-line-endings":{description:"Normalize line endings to LF",category:"Validation",load:()=>import("./chunks/validate-line-endings-K36HS73S.js")},"validate-large-files":{description:"Detect files exceeding size limit",category:"Validation",load:()=>import("./chunks/validate-large-files-CMCMEGYA.js")},"validate-case-conflict":{description:"Detect case-conflicting filenames",category:"Validation",load:()=>import("./chunks/validate-case-conflict-ZZKZQQX4.js")},"validate-merge-conflict":{description:"Detect merge conflict markers",category:"Validation",load:()=>import("./chunks/validate-merge-conflict-PMGZYM3B.js")},"validate-json":{description:"Validate JSON syntax",category:"Validation",load:()=>import("./chunks/validate-json-TABLVKEH.js")},"validate-toml":{description:"Validate TOML syntax",category:"Validation",load:()=>import("./chunks/validate-toml-JLQ3BY73.js")},"validate-yaml":{description:"Validate YAML syntax",category:"Validation",load:()=>import("./chunks/validate-yaml-2BG7G35N.js")},"validate-symlinks":{description:"Detect broken symlinks",category:"Validation",load:()=>import("./chunks/validate-symlinks-LSEEVFTR.js")},"validate-shebangs":{description:"Validate shebang consistency",category:"Validation",load:()=>import("./chunks/validate-shebangs-GUBDNU2N.js")},"validate-secrets":{description:"Detect credentials and private keys",category:"Validation",load:()=>import("./chunks/validate-secrets-IAMY5DB5.js")},"validate-filenames":{description:"Enforce filename conventions",category:"Validation",load:()=>import("./chunks/validate-filenames-LXIMPWRW.js")},"validate-submodules":{description:"Detect git submodules",category:"Validation",load:()=>import("./chunks/validate-submodules-ZA2FAF3W.js")},"validate-commit-msg":{description:"Validate conventional commit format",category:"Validation",load:()=>import("./chunks/validate-commit-msg-PZZ4T4QF.js")},"validate-docs":{description:"Validate JSDoc documentation",category:"Validation",load:()=>import("./chunks/validate-docs-M55HAXPX.js")},"validate-circular-deps":{description:"Detect circular dependencies",category:"Validation",load:()=>import("./chunks/validate-circular-deps-QCJYK5K5.js")},"validate-export-names":{description:"Validate export naming conventions",category:"Validation",load:()=>import("./chunks/validate-export-names-UFXPIDFW.js")},"validate-licenses":{description:"Validate license headers",category:"Validation",load:()=>import("./chunks/validate-licenses-MDGIDYNC.js")},"validate-mod-exports":{description:"Validate mod.ts export coverage",category:"Validation",load:()=>import("./chunks/validate-mod-exports-M3UYNBK7.js")},"validate-package-configs":{description:"Validate package configurations",category:"Validation",load:()=>import("./chunks/validate-package-configs-V5LR7K5C.js")}},aliases:{init:"scaffolding"}});var l=e=>new o({description:"Workflow engine \u2014 run tool pipelines",modules:{run:{description:"Run workflows by event or id",load:async()=>{let t=await import("./chunks/run-RGEZUAPM.js");return{main:r=>t.main(r,{tools:e??[]})}}},list:{description:"List available workflows and tools",load:async()=>{let t=await import("./chunks/list-N4ZKDFW7.js");return{main:r=>t.main(r,{tools:e??[]})}}}}}),R=l();var y=new o({description:"noskills \u2014 state-machine orchestrator for AI agents",modules:{init:{description:"Initialize noskills in project",load:()=>import("./chunks/init-ULJBWJFH.js")},status:{description:"Show current state",load:()=>import("./chunks/status-RCEYJVRQ.js")},spec:{description:"Manage specs (new, list)",load:()=>import("./chunks/spec-3UGU4UBE.js")},next:{description:"Get next instruction for agent",load:()=>import("./chunks/next-ARUY5FHZ.js")},approve:{description:"Approve phase transition",load:()=>import("./chunks/approve-XNUZYGYJ.js")},block:{description:"Mark spec as blocked",load:()=>import("./chunks/block-NWIP4USQ.js")},reset:{description:"Reset current spec state",load:()=>import("./chunks/reset-EYLAZVKO.js")},done:{description:"Mark spec execution as complete",load:()=>import("./chunks/done-DIN56LXZ.js")},concern:{description:"Manage concerns (add, remove, list)",load:()=>import("./chunks/concern-UCYEAXJ4.js")},run:{description:"Autonomous execution loop (Ralph loop)",load:()=>import("./chunks/run-TL4KPOGO.js")},watch:{description:"Live dashboard for monitoring agent progress",load:()=>import("./chunks/watch-YKYNWTZF.js")},sync:{description:"Regenerate tool-specific files",load:()=>import("./chunks/sync-M7MKXMYN.js")},purge:{description:"Remove all noskills content (specs, rules, concerns, hooks)",load:()=>import("./chunks/purge-XYNNHOEN.js")},"invoke-hook":{description:"Internal hook handlers (called by agents)",load:()=>import("./chunks/invoke-hook-PADL4W3J.js")},rule:{description:"Manage rules (add, list, promote)",load:()=>import("./chunks/rule-JMNIMEH3.js")}}});var w=new o({description:"laroux.js framework commands",modules:{init:{description:"Create a new laroux.js project",load:()=>import("./chunks/init-32DVDSNZ.js"),flags:[{name:"template",short:"t",type:"string",description:"Project template (minimal, blog, dashboard, docs)",default:"minimal"},{name:"force",short:"f",type:"boolean",description:"Overwrite existing files"},{name:"no-git",type:"boolean",description:"Skip git initialization"},{name:"no-install",type:"boolean",description:"Skip dependency installation"}]},dev:{description:"Start development server with hot reload",load:()=>import("./chunks/dev-XBH6C6DH.js"),flags:[{name:"port",short:"p",type:"number",description:"Server port",default:8e3},{name:"no-hmr",type:"boolean",description:"Disable hot module replacement"},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"},{name:"open",short:"o",type:"boolean",description:"Open browser automatically"}]},build:{description:"Build for production",load:()=>import("./chunks/build-6DCIDFY7.js"),flags:[{name:"out-dir",type:"string",description:"Output directory",default:"dist"},{name:"clean",type:"boolean",description:"Clean output directory first"},{name:"no-minify",type:"boolean",description:"Disable minification"},{name:"analyze",type:"boolean",description:"Analyze bundle size"},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"}]},serve:{description:"Serve production build locally",load:()=>import("./chunks/serve-DEYVWV2K.js"),flags:[{name:"port",short:"p",type:"number",description:"Server port",default:8e3},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"}]}}});var i=new o({description:"Terminal client for Eser's work"});i.addSubmodule({name:"ai"},m);i.addSubmodule({name:"kit"},g);i.addSubmodule({name:"codebase",aliases:["cb","."]},f);await i.addSubmoduleAsync({name:"workflows",aliases:["wf"]},(async()=>{let{getWorkflowTools:e}=await import("./chunks/mod-Y4UHOKMZ.js");return l(e())})());i.addSubmodule({name:"noskills",aliases:["nos"]},y);i.addSubmodule({name:"laroux"},w);var k=i.toCommand("eser",u.version).lazyCommand("system",{description:"Commands related with this CLI",load:async()=>(await import("./chunks/system-LTVAILSL.js")).systemCommand}).lazyCommand("install",{description:"Install eser CLI globally (alias for system install)",load:async()=>{let e=await import("./chunks/mod-JN7WI5P6.js");return new a("install").run(e.installHandler)}}).lazyCommand("update",{description:"Update eser CLI to latest version (alias for system update)",load:async()=>{let e=await import("./chunks/mod-JN7WI5P6.js");return new a("update").run(e.updateHandler)}}).lazyCommand("version",{description:"Show version number",load:async()=>{let e=await import("./chunks/mod-JN7WI5P6.js");return new a("version").flag({name:"bare",type:"boolean",description:"Print raw version only"}).run(e.versionHandler)}}).lazyCommand("doctor",{description:"Run diagnostic checks",load:async()=>{let e=await import("./chunks/mod-JN7WI5P6.js");return new a("doctor").run(e.doctorHandler)}}).fallback(async(e,t)=>{let n=(await(await import("./chunks/manifest-NF2EK757.js")).loadManifest("."))?.scripts;if(n!=null&&typeof n=="object"){let s=n;if(e in s){let v=s[e],{runScript:b}=await import("./chunks/scripts-JK6W2MCO.js");return await b(e,v,s,t)}}return console.error(`Unknown subcommand "${e}"`),d({exitCode:1})}),h=async()=>await k.parse();if(import.meta.main){let e=await h();c(e,{ok:()=>{},fail:t=>{t.message!==void 0&&console.error(t.message),p.process.setExitCode(t.exitCode)}})}export{h as main};
3
+ import{a as u}from"./chunks/chunk-FKITIXO2.js";import{a as m}from"./chunks/chunk-4MVO4LD5.js";import"./chunks/chunk-PWLF3WXM.js";import{a as o}from"./chunks/chunk-KVTG56GS.js";import{b as a}from"./chunks/chunk-PZNCE6QK.js";import"./chunks/chunk-MG65QJY6.js";import{b as d,e as c}from"./chunks/chunk-A6RDYP6R.js";import{t as p}from"./chunks/chunk-MRCBHVSB.js";import"./chunks/chunk-Y4ARZGGL.js";import"./chunks/chunk-STI6DX7K.js";import"./chunks/chunk-DTO2YJWZ.js";import"./chunks/chunk-G6NAG2EK.js";var g=new o({description:"Kit \u2014 recipes, templates, project creation",modules:{add:{description:"Add a recipe to your project",category:"Distribution",load:()=>import("./chunks/add-5SDE43IH.js")},list:{description:"Browse available recipes and templates",category:"Distribution",load:()=>import("./chunks/list-PY3A762R.js")},new:{description:"Create a new project from a template",category:"Distribution",load:()=>import("./chunks/new-BOGCXTIY.js")},clone:{description:"Clone a recipe from any GitHub repo",category:"Distribution",load:()=>import("./chunks/clone-H3UAEVVP.js")},update:{description:"Re-fetch and update an applied recipe",category:"Distribution",load:()=>import("./chunks/update-4C4WNXCE.js")}},aliases:{create:"new"}});var f=new o({description:"Codebase management tools",modules:{scaffolding:{description:"Initialize project from template",category:"Setup",load:()=>import("./chunks/mod-PFWQZF3T.js")},install:{description:"Install git hooks from .eser/manifest.yml",category:"Setup",load:()=>import("./chunks/install-KNZDCGIB.js")},uninstall:{description:"Remove managed git hooks",category:"Setup",load:async()=>({main:(await import("./chunks/install-KNZDCGIB.js")).uninstallMain})},status:{description:"Show git hook installation status",category:"Setup",load:async()=>({main:(await import("./chunks/install-KNZDCGIB.js")).statusMain})},commitmsg:{description:"Generate commit message from git diff",category:"AI",load:()=>import("./chunks/commitmsg-7XZGGERO.js")},gh:{description:"GitHub operations (contributors, releases, tags)",category:"GitHub",load:()=>import("./chunks/gh-L25JQWOY.js")},versions:{description:"Manage workspace package versions",category:"Release",load:()=>import("./chunks/versions-ODYWYT7U.js")},"changelog-gen":{description:"Generate CHANGELOG from commits",category:"Release",load:()=>import("./chunks/changelog-gen-MX6L2Z24.js")},release:{description:"Create a release (bump, changelog, commit, push)",category:"Release",load:()=>import("./chunks/release-J3PVDROM.js")},rerelease:{description:"Delete and recreate the current version tag",category:"Release",load:async()=>({main:(await import("./chunks/release-J3PVDROM.js")).rereleaseMain})},unrelease:{description:"Delete the current version tag",category:"Release",load:async()=>({main:(await import("./chunks/release-J3PVDROM.js")).unreleaseMain})},"validate-eof":{description:"Ensure files end with newline",category:"Validation",load:()=>import("./chunks/validate-eof-DTFV74VL.js")},"validate-trailing-whitespace":{description:"Remove trailing whitespace",category:"Validation",load:()=>import("./chunks/validate-trailing-whitespace-GRE2PJ6T.js")},"validate-bom":{description:"Remove UTF-8 byte order markers",category:"Validation",load:()=>import("./chunks/validate-bom-QVE5HNBO.js")},"validate-line-endings":{description:"Normalize line endings to LF",category:"Validation",load:()=>import("./chunks/validate-line-endings-PFF6QJ3W.js")},"validate-large-files":{description:"Detect files exceeding size limit",category:"Validation",load:()=>import("./chunks/validate-large-files-X5YF7D7T.js")},"validate-case-conflict":{description:"Detect case-conflicting filenames",category:"Validation",load:()=>import("./chunks/validate-case-conflict-XFS3URQN.js")},"validate-merge-conflict":{description:"Detect merge conflict markers",category:"Validation",load:()=>import("./chunks/validate-merge-conflict-KB2X6QLW.js")},"validate-json":{description:"Validate JSON syntax",category:"Validation",load:()=>import("./chunks/validate-json-KMODGNSU.js")},"validate-toml":{description:"Validate TOML syntax",category:"Validation",load:()=>import("./chunks/validate-toml-SG4IITMN.js")},"validate-yaml":{description:"Validate YAML syntax",category:"Validation",load:()=>import("./chunks/validate-yaml-RA22QNW6.js")},"validate-symlinks":{description:"Detect broken symlinks",category:"Validation",load:()=>import("./chunks/validate-symlinks-4LOWK2MQ.js")},"validate-shebangs":{description:"Validate shebang consistency",category:"Validation",load:()=>import("./chunks/validate-shebangs-WC66D7RK.js")},"validate-secrets":{description:"Detect credentials and private keys",category:"Validation",load:()=>import("./chunks/validate-secrets-RM6DMZVG.js")},"validate-filenames":{description:"Enforce filename conventions",category:"Validation",load:()=>import("./chunks/validate-filenames-J4RTDEBD.js")},"validate-submodules":{description:"Detect git submodules",category:"Validation",load:()=>import("./chunks/validate-submodules-SPAXASAG.js")},"validate-commit-msg":{description:"Validate conventional commit format",category:"Validation",load:()=>import("./chunks/validate-commit-msg-BPESCI7P.js")},"validate-docs":{description:"Validate JSDoc documentation",category:"Validation",load:()=>import("./chunks/validate-docs-ITL4L6KY.js")},"validate-circular-deps":{description:"Detect circular dependencies",category:"Validation",load:()=>import("./chunks/validate-circular-deps-BMPAT3PF.js")},"validate-export-names":{description:"Validate export naming conventions",category:"Validation",load:()=>import("./chunks/validate-export-names-HLOH7D73.js")},"validate-licenses":{description:"Validate license headers",category:"Validation",load:()=>import("./chunks/validate-licenses-OZ7DXQTY.js")},"validate-mod-exports":{description:"Validate mod.ts export coverage",category:"Validation",load:()=>import("./chunks/validate-mod-exports-VHK2NVKI.js")},"validate-package-configs":{description:"Validate package configurations",category:"Validation",load:()=>import("./chunks/validate-package-configs-ZNCAIYRO.js")}},aliases:{init:"scaffolding"}});var l=e=>new o({description:"Workflow engine \u2014 run tool pipelines",modules:{run:{description:"Run workflows by event or id",load:async()=>{let t=await import("./chunks/run-RGEZUAPM.js");return{main:r=>t.main(r,{tools:e??[]})}}},list:{description:"List available workflows and tools",load:async()=>{let t=await import("./chunks/list-N4ZKDFW7.js");return{main:r=>t.main(r,{tools:e??[]})}}}}}),R=l();var y=new o({description:"noskills \u2014 state-machine orchestrator for AI agents",modules:{init:{description:"Initialize noskills in project",load:()=>import("./chunks/init-2FLT3GXG.js")},status:{description:"Show current state",load:()=>import("./chunks/status-RCEYJVRQ.js")},spec:{description:"Manage specs (new, list)",load:()=>import("./chunks/spec-3UGU4UBE.js")},next:{description:"Get next instruction for agent",load:()=>import("./chunks/next-ARUY5FHZ.js")},approve:{description:"Approve phase transition",load:()=>import("./chunks/approve-XNUZYGYJ.js")},block:{description:"Mark spec as blocked",load:()=>import("./chunks/block-NWIP4USQ.js")},reset:{description:"Reset current spec state",load:()=>import("./chunks/reset-EYLAZVKO.js")},done:{description:"Mark spec execution as complete",load:()=>import("./chunks/done-DIN56LXZ.js")},concern:{description:"Manage concerns (add, remove, list)",load:()=>import("./chunks/concern-UCYEAXJ4.js")},run:{description:"Autonomous execution loop (Ralph loop)",load:()=>import("./chunks/run-TL4KPOGO.js")},watch:{description:"Live dashboard for monitoring agent progress",load:()=>import("./chunks/watch-YKYNWTZF.js")},sync:{description:"Regenerate tool-specific files",load:()=>import("./chunks/sync-M7MKXMYN.js")},purge:{description:"Remove all noskills content (specs, rules, concerns, hooks)",load:()=>import("./chunks/purge-XYNNHOEN.js")},"invoke-hook":{description:"Internal hook handlers (called by agents)",load:()=>import("./chunks/invoke-hook-PADL4W3J.js")},rule:{description:"Manage rules (add, list, promote)",load:()=>import("./chunks/rule-JMNIMEH3.js")}}});var w=new o({description:"laroux.js framework commands",modules:{init:{description:"Create a new laroux.js project",load:()=>import("./chunks/init-J4IHOVZL.js"),flags:[{name:"template",short:"t",type:"string",description:"Project template (minimal, blog, dashboard, docs)",default:"minimal"},{name:"force",short:"f",type:"boolean",description:"Overwrite existing files"},{name:"no-git",type:"boolean",description:"Skip git initialization"},{name:"no-install",type:"boolean",description:"Skip dependency installation"}]},dev:{description:"Start development server with hot reload",load:()=>import("./chunks/dev-PTMXZEVC.js"),flags:[{name:"port",short:"p",type:"number",description:"Server port",default:8e3},{name:"no-hmr",type:"boolean",description:"Disable hot module replacement"},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"},{name:"open",short:"o",type:"boolean",description:"Open browser automatically"}]},build:{description:"Build for production",load:()=>import("./chunks/build-EJLFNB4I.js"),flags:[{name:"out-dir",type:"string",description:"Output directory",default:"dist"},{name:"clean",type:"boolean",description:"Clean output directory first"},{name:"no-minify",type:"boolean",description:"Disable minification"},{name:"analyze",type:"boolean",description:"Analyze bundle size"},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"}]},serve:{description:"Serve production build locally",load:()=>import("./chunks/serve-XVAIQ37L.js"),flags:[{name:"port",short:"p",type:"number",description:"Server port",default:8e3},{name:"log-level",type:"string",description:"Log level (debug, info, warn, error)",default:"info"}]}}});var i=new o({description:"Terminal client for Eser's work"});i.addSubmodule({name:"ai"},m);i.addSubmodule({name:"kit"},g);i.addSubmodule({name:"codebase",aliases:["cb","."]},f);await i.addSubmoduleAsync({name:"workflows",aliases:["wf"]},(async()=>{let{getWorkflowTools:e}=await import("./chunks/mod-W3DBWTCY.js");return l(e())})());i.addSubmodule({name:"noskills",aliases:["nos"]},y);i.addSubmodule({name:"laroux"},w);var k=i.toCommand("eser",u.version).lazyCommand("system",{description:"Commands related with this CLI",load:async()=>(await import("./chunks/system-5HS7XXTF.js")).systemCommand}).lazyCommand("install",{description:"Install eser CLI globally (alias for system install)",load:async()=>{let e=await import("./chunks/mod-SDQ3QKKS.js");return new a("install").run(e.installHandler)}}).lazyCommand("update",{description:"Update eser CLI to latest version (alias for system update)",load:async()=>{let e=await import("./chunks/mod-SDQ3QKKS.js");return new a("update").run(e.updateHandler)}}).lazyCommand("version",{description:"Show version number",load:async()=>{let e=await import("./chunks/mod-SDQ3QKKS.js");return new a("version").flag({name:"bare",type:"boolean",description:"Print raw version only"}).run(e.versionHandler)}}).lazyCommand("doctor",{description:"Run diagnostic checks",load:async()=>{let e=await import("./chunks/mod-SDQ3QKKS.js");return new a("doctor").run(e.doctorHandler)}}).fallback(async(e,t)=>{let n=(await(await import("./chunks/manifest-NF2EK757.js")).loadManifest("."))?.scripts;if(n!=null&&typeof n=="object"){let s=n;if(e in s){let v=s[e],{runScript:b}=await import("./chunks/scripts-JK6W2MCO.js");return await b(e,v,s,t)}}return console.error(`Unknown subcommand "${e}"`),d({exitCode:1})}),h=async()=>await k.parse();if(import.meta.main){let e=await h();c(e,{ok:()=>{},fail:t=>{t.message!==void 0&&console.error(t.message),p.process.setExitCode(t.exitCode)}})}export{h as main};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eser",
3
- "version": "4.1.34",
3
+ "version": "4.1.35",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "eser": "./eser.js"
@@ -1,5 +0,0 @@
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{t as D}from"./chunk-MRCBHVSB.js";var R={USE_CLIENT:"use client",USE_SERVER:"use server",USE_STRICT:"use strict"},M=[/node_modules/,/\.test\./,/\.spec\./],G=(t,e)=>{let r=t.split(`
3
- `),i=e.toLowerCase(),o=!1;for(let s=0;s<Math.min(50,r.length);s++){let n=r[s]?.trim()??"";if(o){n.includes("*/")&&(o=!1);continue}if(n===""||n.startsWith("//"))continue;if(n.startsWith("/*")){n.includes("*/")||(o=!0);continue}let f=`"${i}";`,a=`'${i}';`,l=n.toLowerCase();if(l===f||l===a)return!0;if(n.startsWith("import")||n.startsWith("export")||n.startsWith("const")||n.startsWith("let")||n.startsWith("var")||n.startsWith("function")||n.startsWith("class"))break}return!1},W=t=>{let e=new Set,r=t.matchAll(/export\s+(?:async\s+)?function\s+(\w+)/g);for(let n of r)n[1]!==void 0&&e.add(n[1]);let i=t.matchAll(/export\s{1,100}(?:const|let)\s{1,100}(\w+)\s{0,100}=/g);for(let n of i)n[1]!==void 0&&e.add(n[1]);let o=t.matchAll(/export\s{1,100}class\s{1,100}(\w+)/g);for(let n of o)n[1]!==void 0&&e.add(n[1]);/export\s+default\s+/.test(t)&&e.add("default");let s=t.matchAll(/export\s*\{([\w\s,]+)\}/g);for(let n of s)if(n[1]!==void 0){let f=n[1].split(",").map(a=>{let l=a.trim().split(/ {1,10}as {1,10}/);return(l[1]??l[0])?.trim()});for(let a of f)a!==void 0&&a!==""&&e.add(a)}return[...e]},O=async t=>{try{return await D.fs.readTextFile(t)}catch{return null}},Q=async(t,e,r={})=>{let i=r.extensions??k,o=r.skip??M,s=r.projectRoot??t,n=[];for await(let f of D.fs.walk(t,{exts:[...i],skip:[...o]})){if(!f.isFile)continue;let a=await O(f.path);if(a!==null&&G(a,e)){let l=D.path.relative(s,f.path),m=W(a);n.push({filePath:f.path,relativePath:l,directive:e,exports:m})}}return n},Y=(t,e={})=>Q(t,R.USE_CLIENT,e),X=(t,e)=>{let r=`"${e}"`,i=`'${e}'`;return t.includes(r)||t.includes(i)},Z=async(t,e={})=>{let r=e.extensions??k,i=e.skip??M,o=e.projectRoot??t,s=[];for await(let n of D.fs.walk(t,{exts:[...r],skip:[...i]})){if(!n.isFile)continue;let f=await O(n.path);if(f!==null&&X(f,R.USE_SERVER)){let a=D.path.relative(o,n.path),l=W(f);s.push({filePath:n.path,relativePath:a,directive:R.USE_SERVER,exports:l})}}return s};function w(t){return t.isFile?"file":t.isDirectory?"dir":t.isSymlink?"symlink":void 0}async function x(t){try{let e=await Deno.stat(t);_(e);return}catch(e){if(!(e instanceof Deno.errors.NotFound))throw e}try{await Deno.mkdir(t,{recursive:!0})}catch(e){if(!(e instanceof Deno.errors.AlreadyExists))throw e;let r=await Deno.stat(t);_(r)}}function _(t){if(!t.isDirectory)throw new Error(`Failed to ensure directory exists: expected 'dir', got '${w(t)}'`)}function c(t){return t instanceof URL?C(t):t}function P(t,e,r=T){if(t=c(t),e=c(e),u(t)===u(e))return!1;let i=t.split(r),o=e.split(r);return i.every((s,n)=>o[n]===s)}function S(t,e){if(t===null)throw new Error(`${e} is unavailable`)}async function I(t,e,r){let i;try{i=await Deno.lstat(e)}catch(o){if(o instanceof Deno.errors.NotFound)return;throw o}if(r.isFolder&&!i.isDirectory)throw new Error(`Cannot overwrite non-directory '${e}' with directory '${t}'`);if(!r.overwrite)throw new Deno.errors.AlreadyExists(`'${e}' already exists.`);return i}async function N(t,e,r){if(await I(t,e,r),await Deno.copyFile(t,e),r.preserveTimestamps){let i=await Deno.stat(t);S(i.atime,"statInfo.atime"),S(i.mtime,"statInfo.mtime"),await Deno.utime(e,i.atime,i.mtime)}}async function U(t,e,r){await I(t,e,r);let i=await Deno.readLink(t),o=w(await Deno.lstat(t));if(g?await Deno.symlink(i,e,{type:o==="dir"?"dir":"file"}):await Deno.symlink(i,e),r.preserveTimestamps){let s=await Deno.lstat(t);S(s.atime,"statInfo.atime"),S(s.mtime,"statInfo.mtime"),await Deno.utime(e,s.atime,s.mtime)}}async function j(t,e,r){if(await I(t,e,{...r,isFolder:!0})||await x(e),r.preserveTimestamps){let s=await Deno.stat(t);S(s.atime,"statInfo.atime"),S(s.mtime,"statInfo.mtime"),await Deno.utime(e,s.atime,s.mtime)}t=c(t),e=c(e);let o=[];for await(let s of Deno.readDir(t)){let n=d(t,s.name),f=d(e,F(n));s.isSymlink?o.push(U(n,f,r)):s.isDirectory?o.push(j(n,f,r)):s.isFile&&o.push(N(n,f,r))}await Promise.all(o)}async function wt(t,e,r={}){if(t=u(c(t)),e=u(c(e)),t===e)throw new Error("Source and destination cannot be the same");let i=await Deno.lstat(t);if(i.isDirectory&&P(t,e))throw new Error(`Cannot copy '${t}' to a subdirectory of itself: '${e}'`);i.isSymlink?await U(t,e,r):i.isDirectory?await j(t,e,r):i.isFile&&await N(t,e,r)}async function Ft(t){try{let e=await Array.fromAsync(Deno.readDir(t));await Promise.all(e.map(r=>{if(r&&r.name){let i=d(c(t),r.name);return Deno.remove(i,{recursive:!0})}}))}catch(e){if(!(e instanceof Deno.errors.NotFound))throw e;await Deno.mkdir(t,{recursive:!0})}}async function A(t){t=c(t),t=L(t);let e=F(t),r=await Deno.stat(t);return{path:t,name:e,isFile:r.isFile,isDirectory:r.isDirectory,isSymlink:r.isSymlink}}function E(t,e,r,i){return!(e&&!e.some(o=>t.endsWith(o))||r&&!r.some(o=>!!t.match(o))||i&&i.some(o=>!!t.match(o)))}async function*V(t,e){let{maxDepth:r=1/0,includeFiles:i=!0,includeDirs:o=!0,includeSymlinks:s=!0,followSymlinks:n=!1,canonicalize:f=!0,exts:a=void 0,match:l=void 0,skip:m=void 0}=e??{};if(!(r<0)&&(t=c(t),a&&(a=a.map(y=>y.startsWith(".")?y:`.${y}`)),o&&E(t,a,l,m)&&(yield await A(t)),!(r<1||!E(t,void 0,void 0,m))))for await(let y of Deno.readDir(t)){let p=d(t,y.name),{isSymlink:v,isDirectory:$}=y;if(v){if(!n){s&&E(p,a,l,m)&&(yield{path:p,...y});continue}let h=await Deno.realPath(p);f&&(p=h),{isSymlink:v,isDirectory:$}=await Deno.lstat(h)}if(v||$){let h={maxDepth:r-1,includeFiles:i,includeDirs:o,includeSymlinks:s,followSymlinks:n};a!==void 0&&(h.exts=a),l!==void 0&&(h.match=l),m!==void 0&&(h.skip=m),yield*V(p,h)}else i&&E(p,a,l,m)&&(yield{path:p,...y})}}var ue=globalThis.Deno?.build.os==="windows"?"`":"\\";var B=`
4
- `,J=`\r
5
- `,xe=globalThis.Deno?.build.os==="windows"?J:B;export{G as a,W as b,Y as c,Z as d,Ft as e,x as f,V as g,wt as h};
@@ -1,2 +0,0 @@
1
- import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- var l=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c=a=>{let n=[],i=new Set,r="",e=a,o=/\[(\.\.\.)?(\w+)\]/;for(;e.length>0;){let t=o.exec(e);if(t===null){r+=l(e);break}t.index>0&&(r+=l(e.slice(0,t.index)));let m=t[1]==="...",s=t[2];s!==void 0&&(n.push(s),m?(i.add(s),r+="(.*)"):r+="([^/]+)"),e=e.slice(t.index+t[0].length)}return{regex:new RegExp(`^${r}$`),paramNames:n,catchAllParams:i}},u=(a,n)=>{let i=a.match(n.regex);if(i===null)return null;let r={};for(let e=0;e<n.paramNames.length;e++){let o=n.paramNames[e],t=i[e+1];o!==void 0&&(n.catchAllParams.has(o)?r[o]=t!==void 0&&t!==""?t.split("/").filter(Boolean):[]:r[o]=t??"")}return r},g=(a,n)=>{let i=c(n);return u(a,i)};export{g as a};
@@ -1,2 +0,0 @@
1
- import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
2
- import{a as Z,b as ee}from"./chunk-SP43S32B.js";import{d as Y}from"./chunk-5GGGQJ4P.js";import{a as U}from"./chunk-E5QQGGNF.js";import{a as V,b as Q}from"./chunk-JAQN64PH.js";import"./chunk-4GQY3STW.js";import{a as j}from"./chunk-N4HITOTN.js";import{a as b}from"./chunk-LNNNLUZT.js";import{d as X}from"./chunk-2EVWKUN6.js";import{a as z,b as J,e as G,j as _,k as q,m as B,o as H,q as K}from"./chunk-WG6J7DFO.js";import"./chunk-7ZYDAZBD.js";import{a as S,b as F,e as I,f as M,g as W,h as r,i as h}from"./chunk-JOTAKQMZ.js";import"./chunk-JYNHFD6B.js";import{a as E}from"./chunk-46ZWBKIW.js";import"./chunk-GE3LJ6QM.js";import"./chunk-BNQAZLIQ.js";import"./chunk-GBM3TZFD.js";import"./chunk-3SXTMY75.js";import"./chunk-J7YTWK67.js";import"./chunk-PVPMHMKP.js";import"./chunk-CEYKWASA.js";import"./chunk-KKBIUT5L.js";import"./chunk-SQINSLNL.js";import"./chunk-MG65QJY6.js";import{a as T}from"./chunk-A6RDYP6R.js";import{t as d}from"./chunk-MRCBHVSB.js";import"./chunk-Y4ARZGGL.js";import"./chunk-STI6DX7K.js";import"./chunk-DTO2YJWZ.js";import"./chunk-G6NAG2EK.js";var te=E;var le=async t=>{try{return await d.fs.stat(t),!0}catch{return!1}},de=[{id:"claude-code",paths:["CLAUDE.md",".claude"]},{id:"cursor",paths:[".cursorrules",".cursor"]},{id:"kiro",paths:[".kiro"]},{id:"copilot",paths:[".github/copilot-instructions.md"]},{id:"windsurf",paths:[".windsurfrules"]}],se=async t=>{let e=[];for(let i of de)for(let s of i.paths)if(await le(`${t}/${s}`)){e.push(i.id);break}return e};var a=async t=>{try{return await d.fs.stat(t),!0}catch{return!1}},ne=async(t,e)=>{try{let i=await d.fs.readTextFile(t);return JSON.parse(i)[e]??null}catch{return null}},pe=async t=>{let e=[];return(await a(`${t}/package.json`)||await a(`${t}/deno.json`))&&e.push("typescript"),await a(`${t}/go.mod`)&&e.push("go"),await a(`${t}/Cargo.toml`)&&e.push("rust"),(await a(`${t}/pyproject.toml`)||await a(`${t}/setup.py`))&&e.push("python"),e},fe=async t=>{let e=[],i=await ne(`${t}/package.json`,"dependencies");return i!==null&&("react"in i&&e.push("react"),"vue"in i&&e.push("vue"),"svelte"in i&&e.push("svelte"),"next"in i&&e.push("nextjs"),"express"in i&&e.push("express"),"hono"in i&&e.push("hono")),e},ge=async t=>{let e=[];return await a(`${t}/.github/workflows`)&&e.push("github-actions"),await a(`${t}/.gitlab-ci.yml`)&&e.push("gitlab-ci"),await a(`${t}/Jenkinsfile`)&&e.push("jenkins"),await a(`${t}/.circleci`)&&e.push("circleci"),e},me=async t=>{if(await a(`${t}/deno.json`))return"deno";let e=await ne(`${t}/package.json`,"devDependencies");if(e!==null){if("vitest"in e)return"vitest";if("jest"in e)return"jest";if("playwright"in e)return"playwright"}return null},ie=async t=>{let[e,i,s,u]=await Promise.all([pe(t),fe(t),ge(t),me(t)]);return{languages:e,frameworks:i,ci:s,testRunner:u}};var Fe=async t=>{let e=d.process.cwd(),i=Z(t),s=F({target:i==="agent"?"non-interactive":"interactive"}),u=ee(t),w=oe(u,"--concerns"),g=oe(u,"--tools"),p=u.includes("--non-interactive")||i==="agent";if(await K(e)){let n=await _(e);return r.warn(s,"noskills is already initialized in this project."),r.info(s,`Run \`${b("sync",n)}\` to regenerate tool files.`),T(void 0)}M(s,"noskills init");let P=h(s,"Scanning project...");P.start();let m=await ie(e);P.succeed("Project scanned");for(let n of m.languages)r.step(s,` ${n}`);for(let n of m.frameworks)r.step(s,` ${n}`);for(let n of m.ci)r.step(s,` ${n}`);m.testRunner!==null&&r.step(s,` test runner: ${m.testRunner}`);let x=h(s,"Detecting coding tools...");x.start();let D=await se(e),y=Y(),A=y!==null&&!D.includes(y)?[y]:[],C=[...new Set([...A,...D])];x.succeed(`${C.length} coding tool(s) detected`);for(let n of C){let o=n===y?" (current)":"";r.step(s,` ${n}${o}`)}let f;if(g!==null){let n=["claude-code","cursor","kiro","copilot","windsurf"],o=g.filter(l=>n.includes(l));f=[...new Set([...A,...o])]}else p?f=[...C]:f=await ye(s,C,y);let L=h(s,"Detecting AI providers...");L.start();let k=(await te()).filter(n=>n.available).map(n=>n.name);L.succeed(`${k.length} provider(s) detected`);let $=await j(),c;if(w!==null){let n=$.map(o=>o.id);c=w.filter(o=>n.includes(o)).sort((o,l)=>n.indexOf(o)-n.indexOf(l))}else if(p)c=[];else{let n=$.map(l=>({value:l.id,label:l.name,hint:l.description.slice(0,60)})),o=await I(s,{message:"What kind of project is this? (space to toggle, enter to confirm)",options:n});c=S(o)?[]:[...o]}c.length>0?r.success(s,`Concerns: ${c.join(", ")}`):r.info(s,"No concerns selected. Add later with `concern add <id>`.");let N=Ce(),O=h(s,"Initializing...");O.start(),await H(e);let re=$.filter(n=>c.includes(n.id));for(let n of re)await B(e,n);let v={...J(c,f,k,m),command:N};await q(e,v);let R=z();if(await G(e,R),O.succeed("Scaffolded `.eser/`"),f.length>0){let n=h(s,"Syncing tool files...");n.start();let o=await Q(e,f,v);n.succeed(`Synced ${o.length} tool(s)`)}else r.warn(s,"No tools selected. noskills will work in agentless CLI mode only."),r.info(s,"Add tools later with `noskills sync`.");if(r.success(s,`Done. ${f.length} tool(s), ${k.length} provider(s), ${c.length} concern(s).`),r.info(s,`Command prefix: ${N}`),i==="agent"){let o=(await j()).filter(ce=>c.includes(ce.id)),l=await V(e),ae=U(R,o,l,v);await X(ae,"json")}else W(s,`Start a spec with: ${b('spec new "..."',v)}`);return T(void 0)},we=[{value:"claude-code",label:"Claude Code"},{value:"cursor",label:"Cursor"},{value:"kiro",label:"Kiro"},{value:"copilot",label:"GitHub Copilot"},{value:"windsurf",label:"Windsurf"}],ye=async(t,e,i)=>{let s=e.length===0?"No coding tools detected. Which tools do you use? (space to toggle)":"Any additional tools? (space to toggle, enter to skip)",u=new Set(e),w=await I(t,{message:s,options:we.map(p=>({...p,hint:p.value===i?"you're running inside it":u.has(p.value)?"detected":void 0,disabled:p.value===i})),initialValues:[...e],required:!1});if(S(w))return[...e];let g=[...w];return i!==null&&!g.includes(i)&&g.unshift(i),g},oe=(t,e)=>{if(t===void 0)return null;for(let i of t)if(i.startsWith(`${e}=`))return i.slice(e.length+1).split(",").map(s=>s.trim()).filter(Boolean);return null},Ce=()=>{try{let e=d.process.args.join(" ");if(e.includes("jsr:@eser/noskills"))return"deno run jsr:@eser/noskills";if(e.includes("noskills/main.ts"))return"deno run --allow-all ./pkg/@eser/noskills/main.ts";if(e.includes("eser")&&e.includes("nos")&&!e.includes("noskills"))return"eser nos";if(e.includes("eser")&&e.includes("noskills"))return"eser noskills"}catch{}return"npx eser noskills"};export{Fe as main};